2017-06-21 4 views
0

J'ai un doute sur la façon de trouver la pile du pgm?Comment vérifier la pile du Pgm dans AS/400 RPG?

EX: Nous avons trois MGP PGM 1, PGM 2, PGM 3.

Cependant PGM 2 appelé par PGM1 et PGM 3 appelé par PGM 2.

comment nous vérifions que PGM 3 appelé par PGM 2 comme nous le savons seulement sur le PGM 3. nous ne parlons pas des autres pgms.

Y at-il une commande pour vérifier la pile de la sortie PGM? Quel PGM est appelé par lequel PGM sans vérifier le code source.

Merci! Mohd Wasim

Répondre

0

Lorsque le programme (PGM3) est actif, vous pouvez afficher sa pile d'appels. A partir de l'écran WRKACTJOB, placez un "5 = Travailler avec" à côté de l'entrée, puis à partir de l'option de menu suivante "11 = Afficher la pile d'appel". Le programme actif doit être à (ou proche) de la fin de la liste.

Bien sûr, cela ne garantit pas que c'est la seule voie que le programme peut être appelé (qui semble impossible à connaître sans scanner la source, ou un utilitaire de gestion des changements).

+0

Salut Richard, Merci .. pour vos conseils. –

0

Si vous voulez vérifier cela par programmation, vous pouvez envoyer un message de programme à l'entrée de la pile d'appels de programmes.

SNDPGMMSG MSG(' ') TOPGMQ(*SAME &PGMNAME) KEYVAR(&KEYVAR) 

Si vous recevez un message CPF2469 ou CPF2479, le programme n'est PAS sur la pile d'appels.

Si vous n'obtenez pas d'erreur, le programme se trouve sur la pile des appels.

Vous pouvez utiliser la variable KEYVAR & pour supprimer le message que vous venez d'envoyer de la file d'attente de messages.

2

Vérifiez l'API QWVRCSTK: qwvrcstk API, soit l'équivalent de l'option d'information JOB 11 = Affichage des appels Stack

Exemple ici: RPGLE find Calling program name

+0

Fonctionne uniquement sur le programme en cours d'exécution bien sûr ... si vous voulez la pile entière, vous pouvez utiliser 'DSPPGMREF PGM (OBJLIB/* ALL) SORTIE (* OUTFILE) OBJTYPE (* PGM * SRVPGM * MODULE) OUTFILE (YOURBIB/PGMREF) ', et peut-être utiliser une requête SQL récursive sur le YOURLIB/PGMREF pour obtenir tous les programmes appelants/appelants – Dam