サポートチーム便り2019.06.13
オンライン処理で発生したエラーを簡単に確認したい
Question
現在、オンライン処理でのエラーハンドリングで、発生することが分かっているメッセージについては個別にMONMSG MSGID(XXX9999)で対応しています。 その他想定していないメッセージが発生した際はMONMSG MSGID(CPF0000)を組み込み途中で終了するようにしていますが、毎回原因を特定するのにジョブログを確認するのが手間です。
想定していないメッセージが出た際に、そのメッセージだけを表示させて終了させる方法は無いでしょうか?
Answer
CPF0000でモニターされた場合にRCVMSGで直前に発生したメッセージを取得し、SNDBRKMSGで自分自身にメッセージを送ることで実現できます。
/*変数定義 */
DCL VAR(&MSG) TYPE(*CHAR) LEN(512)
DCL VAR(&JOB) TYPE(*CHAR) LEN(10)
/*事前定義 */
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(MSG))
RTVJOBA JOB(&JOB)
~
処理内容
GOTO CMDLBL(END)
~
/*異常終了*/
MSG: RCVMSG MSGQ(*PGMQ) MSG(&MSG)
SNDBRKMSG MSG(&MSG) TOMSGQ(&JOB)
/*終了処理*/
END: ENDPGM
by なんちゃってエンジニア