Recette SQL IBM i (AS/400) · Base de données
Les programmes d'une bibliothèque, leur langage et leur source
Les programmes d'une bibliothèque avec leur langage (RPG, CL, ILE ou OPM) et le membre source qui a servi à les compiler.
Le besoin
Où est le source de ce programme ? Est-il en OPM ou en ILE ? Avant une migration ou un audit de code, c'est la première carte à dresser.
La requête
SELECT PROGRAM_NAME, OBJECT_TYPE, PROGRAM_TYPE, PROGRAM_ATTRIBUTE, SOURCE_FILE_LIBRARY,
SOURCE_FILE, SOURCE_FILE_MEMBER, CREATE_TIMESTAMP, RELEASE_CREATED_ON
FROM QSYS2.PROGRAM_INFO
WHERE PROGRAM_LIBRARY = 'QGPL'
ORDER BY CREATE_TIMESTAMP DESC
FETCH FIRST 10 ROWS ONLY
QSYS2.PROGRAM_INFO donne une ligne par programme : type (OPM ou ILE), attribut (RPG, RPGLE, CLP, CLLE…), et pour les programmes OPM le fichier et le membre source. Pour un programme ILE, le source est noté dans ses modules.
Le résultat sur un IBM i 7.5
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| PROGRAM_NAME Nom du programme | OBJECT_TYPE Type de l'objet | PROGRAM_TYPE Type de programme | PROGRAM_ATTRIBUTE Attribut du programme | SOURCE_FILE_LIBRARY Bibliothèque du fichier source | SOURCE_FILE Fichier source | SOURCE_FILE_MEMBER Membre du fichier source | CREATE_TIMESTAMP Horodatage de création | RELEASE_CREATED_ON Release de création |
|---|---|---|---|---|---|---|---|---|
| PURGE00001 | *PGM | ILE | CLE | NULL | NULL | NULL | 2026-09-28 21:18:21 | V7R5M0 |
| LEPREMCLP | *PGM | OPM | CLP | QGPL | DIXSEPT | LEPREMCLP | 2026-09-21 09:59:01 | NULL |
| PRF38 | *PGM | OPM | RPG | QGPL | QRPGSRC | PROOF38 | 2026-09-15 16:41:48 | NULL |
| TSTORDET | *SRVPGM | ILE | RPGLE | NULL | NULL | NULL | 2026-09-02 17:01:56 | V7R5M0 |
| TSTORLIST | *SRVPGM | ILE | RPGLE | NULL | NULL | NULL | 2026-09-02 16:34:55 | V7R5M0 |
Dans QGPL, on trouve des programmes RPG et CL en OPM avec leur source, et un programme ILE dont le source n'est pas noté au niveau du programme.
Données anonymisées : les noms de système, de profils, de bibliothèques, de postes et les adresses IP ont été remplacés.
L'adapter à votre système
Pour un programme ILE, joignez QSYS2.BOUND_MODULE_INFO pour retrouver le source de chaque module. Comptez par PROGRAM_ATTRIBUTE pour la répartition des langages.