USE ステートメント - 形式 1 - EXCEPTION/ERROR

EXCEPTION と ERROR は同義であり、相互に交換して使用できます。

構文図を読む構文図をスキップする
USE ステートメント - 形式

>>-USE--+--------+--AFTER--+----------+--+-EXCEPTION-+---------->
        '-GLOBAL-'         '-STANDARD-'  '-ERROR-----'   

                        .---------.     
                        V         |     
>--PROCEDURE--+----+--+---ファイル名-1-+-+--------------------------><
              '-ON-'  +-INPUT-------+   
                      +-OUTPUT------+   
                      +-I-O---------+   
                      '-EXTEND------'   

ファイル名-1
すべてのファイルに対して有効です。 このオプションを指定すると、指定したファイルに対してだけプロシージャーが実行されます。 ファイル名としてソート・ファイルまたはマージ・ファイルを参照することはできません。 1 つのファイルについては、1 つの EXCEPTION/ERROR プロシージャーしか指定できません。 したがって、ファイル名の指定によって、 複数の EXCEPTION/ERROR プロシージャーの実行要求が同時に起こってはなりません。 ファイル名を指定した USE AFTER EXCEPTION/ERROR 宣言ステートメントは、 ファイルのオープン・モードを指定した宣言ステートメントよりも優先されます。
IBM Extension

IBM Extension ファイル名句は TRANSACTION ファイルに対しても有効です。 End of IBM Extension

End of IBM Extension
INPUT
すべてのファイルに対して有効です。 このオプションを指定すると、INPUT モードでオープンされ、エラーが生じたすべてのファイルに対してプロシージャーが実行されます。
OUTPUT
すべてのファイルに対して有効です。 このオプションを指定すると、OUTPUT モードでオープンされ、エラーが生じたすべてのファイルに対してプロシージャーが実行されます。
I-O
すべての直接アクセス・ファイルに対して有効です。 このオプションを指定すると、I-O モードでオープンされ、エラーが生じたすべてのファイルに対してプロシージャーが実行されます。
IBM Extension

IBM Extension I-O 句は TRANSACTION ファイルに対しても有効です。 End of IBM Extension

End of IBM Extension
EXTEND
このオプションを指定すると、EXTEND モードでオープンされ、エラーが生じたすべてのファイルに対してプロシージャーが実行されます。
EXCEPTION/ERROR プロシージャーが実行されるのは、次のいずれかのときです。
  • システム定義の入出力エラー・ルーチンの完了後。
  • INVALID KEY または AT END 句が入出力ステートメントの中で指定されていない場合に INVALID KEY または AT END 条件が検出されたとき。
  • 状況キー 1 が 9 に設定されるような IBM 定義の条件が検出されたとき。 (状況キーを参照。)

READ、WRITE、REWRITE、START、ACQUIRE、DROP、OPEN、または CLOSE ステートメントの実行中に入出力エラーが発生した場合には、EXCEPTION/ERROR プロシージャーが活動化されます。 どの条件がエラーであるかを判別するには、共通の処理機能を参照してください。

EXCEPTION/ERROR 宣言プロシージャーの実行後は、エラーの原因となった入出力ステートメントの直後のステートメントに制御が戻されます。

宣言プロシージャーの中には、非宣言プロシージャーに対する参照があってはなりません。 プログラムの非宣言部分には、EXCEPTION/ERROR 宣言プロシージャーの中で指定されているプロシージャー名に対する参照があってはなりません。 ただし、例外として、PERFORM ステートメントでは、EXCEPTION/ERROR プロシージャーまたはそれに関連付けられているプロシージャーを参照できます。

EXCEPTION/ERROR 宣言プロシージャーの中には、以前に呼び出され、 呼び出し側のルーチンへまだ制御を戻していない USE プロシージャーを実行させるステートメントを組み込むことはできません。