Aller au contenu

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 (P en 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.