Aller au contenu

Code opération RPG III / RPG/400 · IBM i (AS/400) · Écriture et contrôle des fichiers

FEOD

Forcer la fin de données d'un fichier

Signale la fin de données pour le fichier : la lecture suivante rencontre la fin de fichier ; le fichier reste ouvert.

Syntaxe

     C                     FEOD fichier                ER
Facteur 2 (33-42)
Le nom du fichier.
Indicateurs (56-57)
Facultatif : s'allume si l'opération échoue.
Effet
Sur un fichier en lecture, le READ suivant allume l'indicateur de fin de fichier, même s'il restait des enregistrements. Un SETLL suivi d'un READ redonne ensuite des enregistrements.

À quoi ça sert

FEOD sert à arrêter une lecture sans fermer le fichier : un programme qui a trouvé ce qu'il cherchait ou qui doit s'arrêter sur une erreur de données coupe la lecture, puis repositionne le fichier s'il en a encore besoin.

Exemple 1 : Couper la lecture

     H*  FEOD : fin de donnees forcee sur un fichier en lecture
     FCLIENT3 IF  E                    DISK
     C*
     C                     READ CLIENT3                  90
     C           NOM       DSPLY
     C                     FEOD CLIENT3                56
     C   56                MOVE '1'       ERR     1
     C  N56                MOVE '0'       ERR
     C           ERR       DSPLY
     C                     READ CLIENT3                  90
     C           *IN90     DSPLY
     C                     SETON                     LR

Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 :

Dupont SA
0
1

Un READ donne Dupont SA (il reste quatre clients). Après FEOD, l'indicateur 56 reste éteint (« 0 ») et le READ suivant allume 90 (« 1 ») : fin de fichier.

Exemple 2 : Se repositionner ensuite

     H*  FEOD : apres la fin de donnees forcee, repositionnement
     FCLIENT3 IF  E           K        DISK
     C*
     C                     READ CLIENT3                  90
     C                     FEOD CLIENT3
     C                     READ CLIENT3                  90
     C           *IN90     DSPLY
     C                     READ CLIENT3                  90
     C           *IN90     DSPLY
     C           *LOVAL    SETLLCLIENT3
     C                     READ CLIENT3                  90
     C           *IN90     DSPLY
     C           NOM       DSPLY
     C                     SETON                     LR

Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 :

1
1
0
Dupont SA

Après FEOD, deux READ donnent la fin de fichier (« 1 », « 1 »). Un SETLL *LOVAL repositionne : le READ redonne Dupont SA (« 0 »).

Le piège

FEOD ne ferme pas le fichier et n'efface rien : la fin de fichier ne dure que jusqu'à la prochaine opération de positionnement (SETLL). Pour libérer le fichier, utilisez CLOSE.

En RPG ILE full free

L'instruction FEOD existe aussi en RPG IV et en format libre.

read client3;
feod client3;