CLP 内で予測できないエラーの発生に対して
MONMSG CPF0000 GOTO ERROR : ERROR: RCVMSG
のようにエラー・モニター(監視)できるのはご存知だろう。
_
よく MSGIDxxxx は監視されていないというメッセージが出来るが
監視されていないというのはそのエラーが発生したときの
処置がプログラムに記述されていないという意味である。
ILE-RPGでも MONMSG CPF000 のような一般エラーをすべて
監視する機能がある。
特にプロシージャーの中でプロシージャー個別に
エラー・モニターしておけばどのプロシージャーで
エラーが発生したのかを直ちに特定することができる。
2136.00 *---( WRITE PROCEDURE ここから )------------------------* 2137.00 P WRITE B EXPORT 2138.00 D PI 4B 0 2139.00 D FILE 10A Value 2140.00 : 2165.00 C MONITOR : 2233.00 C RETURN TRUE 2234.00 C ON-ERROR *PROGRAM 2235.00 /FREE 2236.00 MSG = 'WRITE で入出力エラーが発生しました。 '; 2237.00 SNDPGMMSG('CPF9897':'QCPFMSG':'QSYS':MSG:'* ':'*DIAG '); 2238.00 bERROR = *ON; 2239.00 LRRTN(); 2240.00 /END-FREE 2241.00 C ENDMON 2242.00 P E 2243.00 *---( WRITE PROCEDURE ここまで )------------------------*
[解説]
MONITORから始まって ON-ERROR *PROGRAM までのあいだが
エラーが監視される。
エラーが発生すれば ON-ERROR *PROGRAM の後ろへ実行がジャンプして
エラー・メッセージを出力することができる。
エンド・ユーザーにプログラムをリリースするときに
「監視されていない」という選択を必要とするエラー・メッセージが
出るのはエンド・ユーザーに品質に対して信頼を失わせてしまう。
特にソフトウェア製品であればなおのことでエラー・モニターは
しっかりしておきたい。
_