Trouver le programme appelant dans un RPG

Permet dans un RPG d’identifier son programme appelant. Cela peut servir par exemple pour conditionner certaines actions ou laisser une trace dans un fichier log.

en SQLRPGLE :
dcl-ds N PSDS;
nom_du_pgm CHAR(10) POS(1);
end-ds;
dcl-s appelant char(10);


EXEC SQL

SELECT program_name INTO :appelant
FROM TABLE(stack_info('*'))
WHERE program_name not in (' ' , :nom_du_pgm)
AND ordinal_position <
( SELECT ordinal_position FROM TABLE(stack_info('*')) WHERE
program_name=:nom_du_pgm LIMIT 1)
LIMIT 1;

Explications :
stack_info permet de récupérer la pile de programme en cours. Le SQL proposé identifie dans la pile le programme au dessus du programme en cours.

Laisser un commentaire