, , Traiter les membres d’un fichier

Vous avez parfois besoin de traiter tous les membres d’un fichier, par exemple pour analyser des sources ou des logs

Vous avez principalement 3 manières de le faire :

1) La manière historique par les fichiers modèles

C’est des fichiers qui sont dans qsys qu’on duplique et remplie le plus souvent avec le paramètre OUTFILE() de différentes commandes

dans un programme CLLE

DCLF FILE(QSYS/QAFDMBRL)

DSPFD FILE(LIB/file) TYPE(MBRLIST) OUTPUT(OUTFILE) OUTFILE(QTEMP/WAFDMBRL)
OUTMBR(*FIRST *ADD)

OVRDBF FILE(QAFDMBRL) TOFILE(QTEMP/WAFDMBRL)

RCVF

Votre traitement ici
DLTOVR FILE(QAFDMBRL)

2) En utilisant les services SQL

QSYS2.SYSPARTITIONSTAT

En sélectionnant la bibliothèque et le fichier, vous pouvez soit utiliser le résultat dans un programme CLLE.
Ou directement dans un select avec la fonctions SQL QCMDEXC

3) Sans générer de fichier

Cette méthode est moins connue, mais elle permet de traiter tous les membres d’un fichier sans générer de fichier intermédiaire

Vous allez avoir un programme CLLE, qui aura cette logique

Vous allez récupérer le premier membre
RTVMBRD FILE(LIB/FIL) MBR(*FIRSTMBR) RTNMBR(&MBR)
MONMSG MSGID(CPF0000) EXEC(do)
ENDDO

Vous allez ensuite boucler sur les suivants
RTVMBRD FILE(LIB/&FIL) MBR(&MBR *NEXT) RTNMBR(&MBR)
MONMSG MSGID(CPF3049) EXEC(leave)

Vous allez ainsi lire tous vos membres de votre fichier.

Vous pouvez également utiliser cette méthode pour traiter des membres de transfert qui arriveraient dans votre fichier.

Conclusion :

Vous avez 3 solutions pour les traiter les membres d’un fichier, à vous de choisir la méthode la plus adapter à votre traitement