例外エラーの処理操作(モニター)

処理構成

[自由形式構文]

MONITOR

MONITOR 監視グループの開始を意味します。
MONITOR グループは下記の要素から構成され、状況コードに基づいて条件付きエラー処理を実行します。
 ・MONITOR ステートメント
 ・1つ以上の ON-ERROR グループ
 ・1つの ENDMON ステートメント

ON-ERROR {例外識別コード{:例外識別コード}}

WHEN 命令と同様の構文で、ON-ERRORで指定した例外コードを処理します。また、*PROGRAM *FILE を指定することもできます。

ENDMON

MONITOR 監視グループの終わりを意味します。

処理構成

MONITOR から ON-ERROR までの処理をモニターしエラー発生で該当の ON-ERROR が処理され、ON-ERROR のブロックが終了すると制御は ENDMON に渡されます。
MONIOTR から ON-ERROR までの間にエラーが発生しない場合は、ENDMON に制御が渡ります。
MONITOR グループ内で別プロシージャを呼び出しても監視されますが、呼び出し先に MONITOR グループがある場合はそちらを優先します。
命令に(E)拡張またはエラー標識がある場合、エラーはその(E)拡張またはエラー標識によって処理されます。
ON-ERROR 内で発生したエラーは処理されません。

 

使用例

              
_*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....8.
CL0N01FACTOR1+++++++OPCODE&EXTFACTOR2+++++++RESULT++++++++LEN++D+HILOEQ....
C          MONITOR
C*
C          CHAIN   MSBCF                96
C*
C          ON-ERROR 1211
C*          ... FILE-NOT-OPEN
C*
C          ON-ERROR *FILE
C*          ... その他FILEのエラー
C*
C          ON-ERROR 00100 : 00121
C*          ... ストリングエラーおよび配列指標エラー
C*
C          ON-ERROR
C*          ... その他のエラー
C*
C          ENDMON
              
            

 

例外・エラーコード

コード 装置 条件
01011 W/D/SQ 定義されていないレコードタイプ
01021 W/D/SQ 既に存在しているレコードを書き出そうとした
01022 D ファイルメンバーで参照制約エラーが検出された
01023 D/SQ ファイルが操作される前のトリガープログラムのエラー
01024 D/SQ ファイルが操作された後のトリガープログラムのエラー
01031 W/D/SQ 突き合わせフィールドの順序の誤り
01041 配列/テーブルのロード順序エラー
01042 配列/テーブルのロード順序エラー・代替照合順序が使用されます
01051 配列/テーブル・ファイルの項目が多すぎる
01061 ファイル・パラメーターに関連付けされている変数のエラー処理
01071 W/D/SQ 数値順序エラー
01121 W 印刷キーのDDSキーワードに標識が無い
01122 W 前ページ・キーのDDSキーワードに標識が無い
01123 W 後ページ・キーのDDSキーワードに標識が無い
01124 W CLEARキーのDDSキーワードに標識が無い
01125 W HELPキーのDDSキーワードに標識が無い
01126 W HOMEキーのDDSキーワードに標識が無い
01201 W 入力でレコードの不一致が検出された
01211 すべて クローズされているファイルへの入出力操作
01215 すべて すでにオープン済みのファイルへの入出力操作
01216 すべて 暗黙のOPEN/CLOSE命令でのエラー
01217 すべて 暗黙のOPEN/CLOSE命令でのエラー
01218 D/SQ レコードが既にロックされている
01221 D/SQ 前に読み取りを行わないで更新操作を行おうとした
01222 D/SQ 参照制約エラーの為にレコードを割り振ることができない
01231 SP SPECIALファイルでのエラー
01235 P PRTCTLのスペース又はスキップ記入項目にエラー
01241 D/SQ レコード番号が見つからない
01251 W 永続的な入出力エラーが起こった
01255 W セッション又は装置エラーが起こった・回復手順が使用できる
01261 W 入手できる装置の最大数を超えようとした
01271 W 使用できない装置を入手しようとした
01281 W 入手されていない装置への操作
01282 W 制御付きオプションによるジョブの終了
01284 W 単一装置ファイルの2番目の装置を入手できない
01285 W すでに入手済みの装置を入手しようとした
01286 W 共有ファイルをSAVDSまたはINDオプションによりオープンしようとした
01287 W 応答標識がIND標識と上書きをしている
01299 W/D/SQ その他の入出力エラーが検出された
01331 W ワークステーション・ファイルからのREADで待ち時間を超過した
注意

『装置』とは、 条件が適用される装置のことです。 次の略語が使用されます。
P = PRINTER; D = DISK; W = WORKSTN; SP = SPECIAL; SQ = 順次。

オープンまたはクローズ操作の時点で発生したエラーは、メジャー/マイナーの 戻りコード値に関係なく、1216 または 1217 の *STATUS 値になります。