READ ステートメントの AT END 句をコーディングすると、エラーまたは正常な条件をプログラムの設計に従って処理することができます。 ファイルの終わりで、AT END 句が実行されます。AT END 句をコーディングしないと、対応する ERROR 宣言が実行されます。
多くの設計では、ファイルの終わりまでの順次読み取りが意図的に行われており、AT END 条件が予期されます。例えば、 マスター・ファイルを更新するために、トランザクションが入っているファイルを処理していると想定します。
PERFORM UNTIL TRANSACTION-EOF = "TRUE"
READ UPDATE-TRANSACTION-FILE INTO WS-TRANSACTION-RECORD
AT END
DISPLAY "END OF TRANSACTION UPDATE FILE REACHED"
MOVE "TRUE" TO TRANSACTION-EOF
END READ
. . .
END-PERFORM
NOT AT END 句が実行されるのは、READ ステートメントが正常に完了した場合だけです。ファイルの終わり以外の何らかの条件のために READ 操作が失敗すると、AT END 句も NOT AT END 句も実行されません。 その代わりに、関連する宣言型プロシージャーを実行した後で、READ ステートメントの終わりに制御が渡されます。
AT END 句または EXCEPTION 宣言型プロシージャーのいずれもコーディングせずに、ファイルの状況キー節をコーディングすることもできます。 その場合は、ファイルの終わり条件を検出した入力ステートメントまたは出力ステートメントの後の次の順次命令に、制御が渡されます。その場所に、適切な操作を実行するコードを記述する必要があります。
関連参照
AT END 句 (Enterprise COBOL 言語解説書)