2017-06-21 37 views
0

我對如何找到pgm的堆棧有疑問嗎?如何檢查AS/400 RPG中的Pgm堆棧?

EX: 我們有三個鉑族金屬PGM 1,PGM 2,PGM 3

然而PGM 2由PGM1和PGM 3呼籲通過PGM 2

叫我們如何檢查PGM 3呼籲通過PGM 2,因爲我們只知道PGM 3.我們不關於其他PGM。

是否有命令檢查PGM的堆棧。哪個PGM由哪個PGM調用而不檢查源代碼。

謝謝! Mohd Wasim

回答

0

當程序(PGM3)處於活動狀態時,您可以顯示它的調用堆棧。從WRKACTJOB屏幕中,在條目旁邊放置「5 =工作單位」,然後從下一個菜單選項「11 =顯示調用棧」中選擇。活動程序應該位於列表的末尾(或接近)。

當然,這並不能保證是程序可以調用的唯一途徑(在掃描源代碼或使用變更管理實用程序時似乎不可能知道)。

+0

你好理查德,謝謝..你的指導。 –

0

如果您想以編程方式進行檢查,可以將程序消息發送到程序調用堆棧條目。

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

如果您收到CPF2469或CPF2479消息,該程序不在調用堆棧中。

如果您沒有收到錯誤,那麼程序在調用堆棧上。

您可以使用& KEYVAR變量來刪除您剛剛從消息隊列中發送的消息。

2

檢查QWVRCSTK API:qwvrcstk API,這就是11 =顯示調用堆棧

例這裏作業信息選項等效:RPGLE find Calling program name

+0

只適用於當前正在運行的程序當然......如果你想要整個堆棧,你可以使用'DSPPGMREF PGM(OBJLIB/* ALL)OUTPUT(* OUTFILE)OBJTYPE(* PGM * SRVPGM * MODULE)OUTFILE(YOURBIB/PGMREF)',並且可能在YOURLIB/PGMREF上使用遞歸SQL查詢來獲取所有的調用者/調用者程序 – Dam