CL

7. 予測不可能なエラーに対処するには?

CLP で発生するエラーに対しては MONMSG でエラーをモニターしてその後の処置も指定できる。
また、MONMSG MSGID(CPF1201 CPF1202 CPF1203 CPF1204)の代わりにメッセージIDの頭2桁で代表して、MONMSG MSGID(CPF1200) と記述できる。
また CLP の最初に MONMSG CPF0000 を記述することによって指定した MONMSG 以外の予測外のメッセージの処理を指定することができる。
更に、実行コマンドを記述しない MONMSG 例えば CRTPRTF MYLIB/MYPRTF
MONMSG CPF3500 のような記述はエラーを無視することを意味する。存在を確認せずに実行することも可能になるのだ。
すべてのエラーをモニターできるわけではない。
「プログラミング便覧」 にはエラーをモニターできるコマンドと対応するエラーメッセージの一覧表が記載されている。

0001.00              PGM     
0002.00 /*---------------------------------------------------------*/   
0003.00 /*   MONMSG   :   メッセージ・モニター                       */   
0004.00 /*---------------------------------------------------------*/   
0005.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(80)       
0006.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) 
0007.00                                                                 
0008.00              CHKOBJ     OBJ(MYLIB/MYFIL) OBJTYPE(*FILE)   
0009.00              MONMSG     MSGID(CPF9800) EXEC(RETURN)      
0010.00                                                        
0011.00  ERROR:      RCVMSG     RMV(*NO) MSG(&MSG)         
0012.00              IF         COND(&MSG *NE ' ') THEN(DO)     
0013.00              SNDPGMMSG  MSG(&MSG) MSGTYPE(*DIAG)      
0014.00              ENDDO                               
0015.00              ENDPGM