使用文件结束条件 (AT END)

根据程序设计,对 READ 语句的 AT END 短语进行编码以处理错误或正常情况。 在文件结束时,将执行 AT END 短语。 如果未对 AT END 短语进行编码,那么将执行关联的 ERROR 声明式。

关于此任务

在许多设计中,按顺序读取到文件末尾是有意完成的,并且需要 AT END 条件。 例如,假设您正在处理包含事务的文件,以便更新 main 文件:


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

仅当 READ 语句成功完成时,才会执行任何 NOT AT END 短语。 如果 READ 操作由于文件结束之外的条件而失败,那么不会执行 AT ENDNOT AT END 短语。 而是在执行任何关联的声明式过程之后,控制传递到 READ 语句的末尾。

您可以选择不对 AT END 短语或 EXCEPTION 声明式过程进行编码,而改为对文件的状态键子句进行编码。 在这种情况下,控制将传递到检测到文件结束条件的输入或输出语句之后的下一个顺序指令。 在那个地方,有一些采取适当行动的代码。

相关参考
AT END 短语 (COBOL for Linux® on x86 Language Reference)