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 の後ろへ実行がジャンプして
エラー・メッセージを出力することができる。
エンド・ユーザーにプログラムをリリースするときに
「監視されていない」という選択を必要とするエラー・メッセージが
出るのはエンド・ユーザーに品質に対して信頼を失わせてしまう。
特にソフトウェア製品であればなおのことでエラー・モニターは
しっかりしておきたい。
_
