如何检查AS / 400 RPG中的Pgm堆栈?

时间:2017-06-21 20:07:28

标签: ibm-midrange rpgle rpg cl

我对如何找到pgm的堆栈有疑问?

EX:  我们有三个pgms PGM 1,PGM 2,PGM 3。

然而,由PGM1和PGM 3调用的PGM 2由PGM 2调用。

我们如何检查由PGM 2调用的PGM 3,因为我们只知道PGM 3.我们不关心其他pgms。

是否有命令检查PGM的堆栈。 PGM在没有检查源代码的情况下调用哪个PGM。

谢谢! Mohd Wasim

3 个答案:

答案 0 :(得分:2)

检查QWVRCSTK API:qwvrcstk API,这相当于JOB信息选项11 =显示调用堆栈

此处示例:RPGLE find Calling program name

答案 1 :(得分:0)

当程序(PGM3)处于活动状态时,您可以显示它的调用堆栈。从WRKACTJOB屏幕开始," 5 =使用"在条目旁边,然后从下一个菜单选项" 11 =显示调用堆栈"。活动程序应该在列表的末尾(或附近)。

当然,这并不能保证这是程序可以被调用的唯一途径(如果不扫描源或使用变更管理实用程序,似乎无法知道)。

答案 2 :(得分:0)

如果要以编程方式检查此项,可以将程序消息发送到程序调用堆栈条目。

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

如果您收到CPF2469或CPF2479消息,则该程序不在调用堆栈中。

如果您没有收到错误,那么程序就在调用堆栈中。

您可以使用& KEYVAR变量删除刚从邮件队列发送的邮件。