Как проверить стек Pgm в AS/400 RPG?

У меня есть сомнения, как найти стек pgm?

ПРИМЕР: У нас есть три PGM: PGM 1, PGM 2, PGM 3.

Однако PGM 2 вызывается PGM1, а PGM 3 вызывается PGM 2.

как мы проверяем, что PGM 3 вызывается PGM 2, так как мы знаем только о PGM 3. мы не знаем о других PGM.

Есть ли команда для проверки стека PGM. Какой PGM вызывается каким PGM без проверки исходного кода.

Спасибо! Мохд Васим


person Mohd wasim    schedule 21.06.2017    source источник


Ответы (3)



Пока программа (PGM3) активна, вы можете отображать ее стек вызовов. На экране WRKACTJOB поместите «5=Работать с» рядом с записью, затем в следующем меню выберите «11=Отображать стек вызовов». Активная программа должна быть в конце списка (или рядом с ним).

Конечно, это не гарантирует, что это единственный путь, по которому может быть вызвана программа (кажется, это невозможно узнать без сканирования источника или использования утилиты управления изменениями).

person Richard Evans    schedule 21.06.2017
comment
Привет Ричард, Спасибо .. за ваше руководство. - person Mohd wasim; 21.06.2017

Если вы хотите проверить это программно, вы можете отправить программное сообщение в запись стека вызовов программ.

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

Если вы получаете сообщение CPF2469 или CPF2479, программа НЕ находится в стеке вызовов.

Если вы не получили ошибку, значит, программа находится в стеке вызовов.

Вы можете использовать переменную &KEYVAR, чтобы удалить сообщение, которое вы только что отправили, из очереди сообщений.

person David G    schedule 21.06.2017