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