ファイルの終わりに実行されるプロシージャーをコーディングする

ファイルの終わりに実行されるプロシージャーをコーディングするには、次に示したように、*EOFPROC ステートメントを使用する必要があります。

*EOFPROC
このステートメントがコーディングされる場合、後続の REXX ステートメントはすべて、関数処理の正常完了時に 1 回実行されるプロシージャー・ステートメントとして扱われます。これは、ファイルの終わりであるか、処理限界に達したか、または REXX プロシージャーから STOP 条件が発行された後である可能性があります。入力レコードおよび出力レコードは、関数によって処理された最終レコードに配置されます。このファイルの終わりのプロシージャーは、関数 DSC、DSP、DSU、および DSEB のみに対して実行されます。その他の関数では、そのプロシージャーは無視されます。以前に *FASTREXX ON ステートメントをコーディングした場合、構文エラーを回避するには、下記の例で説明するように、このプロシージャーが FASTREXX 処理に適格でなければなりません。内部 FASTREXX 処理が必要でない場合、File Manager は、ファイルの終わりのプロシージャーとして内部処理または REXX 処理のいずれかを選択します。したがって、1 つのプロシージャーを REXX で実行でき、もう 1 つのプロシージャーを FASTREXX にすることができます。使用法のシナリオについては、以下の例を参照してください。
例 1
レコード処理の REXX プロシージャーとファイルの終わりのプロシージャーを使って、コピーを実行します。
$$FILEM DSC PROC=*
SAY 'NORMAL PROCESS RECORD NUMBER' SUBSTR(INREC,5,2)
*EOFPROC
SAY 'END OF FILE PROC INREC' SUBSTR(INREC,8)
例 2.
ファイルの終わりに実行されるプロシージャー (FASTREXX) を使用してコピーを実行します。
$$FILEM DSC PROC=*
*EOFPROC
SETC(PRTVAR,' ')                                        /* CLEAR IT */
SETC(INSUB,'&ZINREC(8)')                                /* SUBSTR   */
OVLY_VAR(PRTVAR,'END OF FILE PROC INREC ',1)            /* LITERAL  */
OVLY_VAR(PRTVAR,'&INSUB',0)                             /* EOF VALUE*/
PRT_VAR(PRTVAR)                                         /* PRINT IT */
例 3.
*FASTPROC、*REXXPROC、および *EOFPROC ステートメントを使用し、コピーを実行します。
$$FILEM DSC PROC=*
*FASTPROC
OMIT    COND=(68,2,CH,EQ,C'XX')
*REXXPROC
SAY 'NORMAL PROCESS RECORD NUMBER' SUBSTR(INREC,5,2)
*EOFPROC
SAY 'END OF FILE PROC INREC' SUBSTR(INREC,8)