Aller au contenu

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.