MONITOR (監視グループの始め)
自由形式構文 | MONITOR |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
MONITOR |
MONITOR ステートメントの後は、制御は次のステートメントに渡されます。 MONITOR ブロックは、MONITOR ステートメントから最初の ON-ERROR ステートメントまでのすべてのステートメントで構成されます。MONITOR ブロックの処理の際にエラーが発生すると、適切な ON-ERROR グループに制御が渡ります。
MONITOR ブロックのすべてのステートメントがエラーなしに処理された場合は、 ENDMON ステートメントの次のステートメントへ制御が渡されます。
MONITOR グループは演算の中の任意の場所に指定することができます。 IF、DO、SELECT、または他の MONITOR グループの中でネストすることもできます。 IF、DO、および SELECT グループは、MONITOR グループの中でネストすることができます。
MONITOR グループが別の MONITOR グループの中でネストされている場合、エラーが起こると、最も深いグループが最初に考慮されます。 その MONITOR グループがそのエラー条件を処理しない場合は、次のグループが考慮されます。
MONITOR 命令ではレベル標識が使用され、MONITOR グループが合計演算の一部であることを示します。文書化を目的としてレベル標識を ON-ERROR または ENDMON 命令に指定することもできますが、このレベル標識は無視されることになります。
MONITOR ステートメントでは、条件付け標識を使用することができます。 条件付け標識が満たされない場合には、MONITOR グループの ENDMON 命令の後のステートメントに即時に制御が渡されます。ON-ERROR 命令に単独で条件付け標識を使用することはできません。
MONITOR ブロックがサブプロシージャーの呼び出しを含んでおり、かつそのサブプロシージャーにエラーがある場合は、そのサブプロシージャーのエラー処理が優先順位を有します。 例えば、サブプロシージャーに *PSSR サブルーチンがあれば呼び出されます。呼び出しを含む MONITOR グループは、サブプロシージャーがエラー処理に失敗し、00202 の「呼び出し中のエラー」 状況で呼び出しが失敗した場合にのみ、考慮されることになります。
MONITOR グループはサブルーチンで発生したエラーを処理します。サブルーチンが自分自身の MONITOR グループを持っている場合は、それらが最初に考慮されます。
MONITOR ブロックの中での分岐命令は許されませんが、ON-ERROR ブロックの中であれば許されます。
MONITOR ブロックの中での LEAVE 命令または ITER 命令は、その MONITOR ブロックを含んでいるすべての活動状態の DO グループに対して適用されます。MONITOR ブロックの中での LEAVESR 命令または RETURN 命令は、その MONITOR ブロックを含んでいるすべてのサブルーチン、サブプロシージャー、またはプロシージャーに対して適用されます。
詳細については、エラー処理命令を参照してください。
* MONITOR ブロックは、READ ステートメントと IF グループで
* 構成されています。
* - 最初の ON-ERROR ブロックは、ファイルがオープンされていない
* 場合に READ 命令に対して出される状況 1211 を処理します。
* - 2 番目の ON-ERROR ブロックは、その他のすべてのファイル・エラーを処理します。
* - 3 番目の ON-ERROR ブロックは、ストリング命令状況コード 00100
* および配列指標状況コード 00121 を処理します。
* - 4 番目の ON-ERROR ブロック (演算項目 2 が *ALL) は、
* 指定された ON-ERROR 命令では処理されないエラーを
*
*
* MONITOR ブロックでエラーが発生しない場合は、制御は
* ENDIF から ENDMON に渡されます。
C MONITOR
C READ FILE1
C IF NOT %EOF
C EVAL Line = %SUBST(Line(i) :
C %SCAN('***': Line(i)) + 1)
C ENDIF
C ON-ERROR 1211
C ... file-not-open の処理
C ON-ERROR *FILE
C ... その他のファイル・エラーの処理
C ON-ERROR 00100 : 00121
C ... ストリング・エラーおよび配列指標エラーの処理
C ON-ERROR
C ... その他のすべてのエラーの処理
C ENDMON