RPG

511. プロシージャーの中でエラー・モニター

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 の後ろへ実行がジャンプして
エラー・メッセージを出力することができる。

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