Code opération RPG III / RPG/400 · IBM i (AS/400) · Lecture de fichiers
FORCE
Imposer le fichier lu au prochain cycle
Dans le cycle RPG, impose le fichier d'où viendra l'enregistrement du prochain cycle, au lieu de laisser le programme choisir.
Syntaxe
C FORCEfichier
- Facteur 2 (33-42)
- Un fichier d'entrée primaire (
Pen colonne 16) ou secondaire (S), décrit en spécification F. - Effet
- Au prochain cycle de lecture, c'est un enregistrement de ce fichier qui est lu. Le cycle revient ensuite au choix habituel.
À quoi ça sert
Un programme avec fichier primaire est mené par le cycle RPG : le programme lit seul l'enregistrement suivant, exécute les calculs, puis recommence. Avec plusieurs fichiers (primaire et secondaires), il choisit le fichier à lire. FORCE contourne ce choix : le calcul qui reconnaît un enregistrement particulier demande que le cycle suivant lise tel fichier.
C'est une opération de programmes anciens, écrits autour du cycle. Les programmes récents lisent leurs fichiers eux-mêmes.
Exemple 1 : Primaire et secondaire
H* FORCE : fichier primaire et secondaire dans le cycle RPG
FCLIENT3 IP E DISK
FCLIENT3VIS E DISK
ICLI3R 01
ICLI3VR 02
C* Sur Leroy (300), le cycle suivant lit le fichier secondaire
C 01 NOM DSPLY
C 02 'Second.' DSPLY
C 02 NOM DSPLY
C 01 NUMCLI IFEQ 300
C FORCECLIENT3V
C END
Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 :
Dupont SA
Martin et fils
Leroy SARL
Second.
Dupont SA
Bernard Transports
Petit Atelier
Second.
Martin et fils
Second.
Leroy SARL
Second.
Bernard Transports
Second.
Petit Atelier
CLIENT3 est le fichier primaire (IP), CLIENT3V le secondaire (IS) ; les indicateurs 01 et 02 en colonnes 19-20 des spécifications I disent de quel fichier vient l'enregistrement. Le programme lit d'abord les clients 100, 200 et 300. Sur Leroy SARL, le FORCE fait lire le secondaire au cycle suivant (« Second. », Dupont SA, premier enregistrement de CLIENT3V) ; le cycle revient ensuite au primaire pour les clients 400 et 500, puis le secondaire est lu à la suite.
Le piège
Le fichier doit être primaire ou secondaire. Avec FORCE CLIENT3V alors que CLIENT3V est déclaré en traitement par programme (F en colonne 16), le compilateur répond QRG5021 : « L'opération FORCE est incorrecte. ».
Ce programme n'a pas de SETON LR : avec des fichiers primaire et secondaire, c'est le cycle qui termine le programme quand les fichiers sont épuisés.
En RPG ILE full free
Le cycle RPG existe encore en RPG IV en colonnes, mais pas en full free : on y lit les fichiers soi-même, dans la boucle voulue. FORCE n'a donc pas d'équivalent en full free.