我对如何找到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
答案 0 :(得分:2)
检查QWVRCSTK API:qwvrcstk API,这相当于JOB信息选项11 =显示调用堆栈
答案 1 :(得分:0)
当程序(PGM3)处于活动状态时,您可以显示它的调用堆栈。从WRKACTJOB屏幕开始," 5 =使用"在条目旁边,然后从下一个菜单选项" 11 =显示调用堆栈"。活动程序应该在列表的末尾(或附近)。
当然,这并不能保证这是程序可以被调用的唯一途径(如果不扫描源或使用变更管理实用程序,似乎无法知道)。
答案 2 :(得分:0)
如果要以编程方式检查此项,可以将程序消息发送到程序调用堆栈条目。
SNDPGMMSG MSG(' ') TOPGMQ(*SAME &PGMNAME) KEYVAR(&KEYVAR)
如果您收到CPF2469或CPF2479消息,则该程序不在调用堆栈中。
如果您没有收到错误,那么程序就在调用堆栈中。
您可以使用& KEYVAR变量删除刚从邮件队列发送的邮件。