例外処理命令コードには次のものがあります。
これらの命令コードは、従来型の構文と自由形式構文の両方で使用可能です。
MONITOR、ON-ERROR および ENDMON は、監視グループをコーディングするために使用されます。 監視グループは、監視ブロックに 1 つまたは複数の ON-ERROR ブロックが続き、さらに ENDMON が続いて構成されています。
監視ブロックには、エラーを発生させる可能性があると思われるコーディングを入れます。 ON-ERROR ブロックには、監視ブロック内で発生するエラーを処理するコーディングを入れます。
監視ブロックは、MONITOR 命令と、それに続く監視の対象となる命令で構成されます。ON-ERROR ブロックは、状況コードのリストと、それに続けて、リストされている状況コードが監視ブロックの中でのエラーによって生成された場合に実行されるべき命令で構成されます。
監視ブロック内でエラーが発生し、命令に (E) 拡張またはエラー標識がある場合、エラーはその (E) 拡張またはエラー標識によって処理されます。 エラーを処理できる標識または拡張がない場合、制御は、そのエラーに対応する状況コードを含んでいる ON-ERROR ブロックに渡されます。 ON-ERROR ブロックが終了すると、制御は ENDMON に渡されます。 エラーを処理する ON-ERROR ブロックがない場合は、制御は例外処理の次のレベル (*PSSR または INFSR サブルーチン、またはデフォルトのエラー処理プログラム) に渡されます。
/free MONITOR; _ OPEN FILE; | DOW getNextRecord (); | X = X + 1; +-- これが監視ブロックです nameList(X) = name; | ENDDO; | CLOSE FILE; _| ON-ERROR 1216; _ DSPMSG | ('Error opening file FILE' | : %status); +-- 第 1 の ON-ERROR ブロック RETURN; _| ON-ERROR 121; _ DSPMSG | ('Array NAME is too small' +-- 第 2 の ON-ERROR ブロック : %status); | RETURN; _| ON-ERROR *ALL; _ DSPMSG | ('Unexpected error' +-- 最終の、あらゆる場合を処理する : %status); | RETURN; _| ENDMON; --- MONITOR グループの終わり /end-free
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.