/EOF

/EOF コンパイラー指示は、現行ソース・ファイル の「ファイルの終わり」に達していることをコンパイラーが考慮する 必要があることを示すために使用します。

変更の始まり指示に使用できる桁については、コンパイラー指示を参照してください。変更の終わり

変更の始まり/EOF が含まれている行の残りの部分はブランクでなければなりません。変更の終わり

/EOF は、現行ソース・メンバーの読み取り中に活動状態になった 活動 /IF グループをすべて終了します。 /EOF が /COPY ファイル内に ある場合、/COPY 指示が読み取られた ときに活動状態だった条件は、そのまま活動状態となります。
注: 除外された行がリスト上に印刷されている場合、/EOF の後でも ソース行の読み取りおよびリストは引き続き行われますが、 それらの行の内容は、コンパイラーによって完全に無視されます。 /EOF の 後には、診断メッセージが出されることはありません。
ヒント:

/EOF 指示を使用すると、/COPY メンバー全体が 1 度しか使用 されないで、複数回コピーされる可能性がある場合、コンパイル時パフォーマンスが向上します。 (これは、除外された行が印刷されている場合には該当しません。)

以下は、/EOF 指示の例です。

図 1. /EOF 指示
      *-----------------------------------------------------------------
      * Main source file
      *-----------------------------------------------------------------
      ....
      /IF DEFINED(READ_XYZ)                        1 
      /COPY XYZ
      /ENDIF                                       2 
      ....
      *-----------------------------------------------------------------
      * /COPY file XYZ
      *-----------------------------------------------------------------
      /IF DEFINED(XYZ_COPIED)                      3 
      /EOF
      /ELSE
      /DEFINE XYZ_COPIED
       D .....
      /ENDIF

最初にこの /COPY メンバーが読み取られるとき は、XYZ_COPIED は定義されないので、/EOF は考慮されません。

2 回目にこのメンバーが読み取られるときには、XYZ_COPIED は 定義され、/EOF は処理されます。 /IF DEFINED(XYZ_COPIED) ( 3 ) は終了したと見なされ、そのファイルはクローズされます。ただし、メイン・ソース・メンバーの /IF DEFINED(READ_XYZ) ( 1 ) は、それ自身の /ENDIF ( 2 ) に達するまでは、活動状態のままです。