%EOF (ファイルの終わりまたは先頭条件の戻し)
%EOF{(file_name)}
%EOF は、サブファイルに対して実行された最後の読み取り操作または書き出しが、 ファイルの終わり条件またはファイルの先頭条件で終了した場合に '1' を戻します。 他の場合には '0' を戻します。
%EOF を設定する命令を以下に示します。
次の命令は、成功した場合は %EOF(ファイル名)
をオフに設定します。命令が成功しなかった場合は、%EOF(ファイル名) は変更されません。パラメーターなしの
%EOF は、これらの命令によって変更されることはありません。
全手順ファイルを指定した場合、指定のファイルに対する上記のリストに示した 直前の命令の結果が、ファイルの終わり条件またはファイルの先頭条件であれば、 この関数は '1' を戻します。 1 次ファイルおよび 2 次ファイル の場合、%EOF は、ファイル名を指定した場合のみ使用することができます。 この関数は、*GETIN 処理中に実行された最後の入力操作の結果が、ファイルの終わり条件 またはファイルの先頭条件である場合には、'1' に設定されます。 他の場合には、'0' を戻します。
この関数は、入力ファイル、更新ファイル、レコード・アドレス・ファイルに使用 することができ、表示装置ファイルの場合にはサブファイル・レコードへの WRITE に使用することができます。
詳細については、ファイル命令または 組み込み関数を参照してください。
図 1. ファイル名パラメーターを指定しない %EOF
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
F*Filename+IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++++++++
* File INFILE has record format INREC
FINFILE IF E DISK
/FREE
READ INREC; // read a record
IF %EOF;
// handle end of file
ENDIF;
/END-FREE
図 2. ファイル名パラメーターを指定した %EOF
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
* This program is comparing two files
F*Filename+IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++++++++
FFILE1 IF E DISK
FFILE2 IF E DISK
* Loop until either FILE1 or FILE2 has reached end-of-file
/FREE
DOU %EOF(FILE1) OR %EOF(FILE2);
// Read a record from each file and compare the records
READ REC1;
READ REC2;
IF %EOF(FILE1) AND %EOF(FILE2);
// Both files have reached end-of-file
EXSR EndCompare;
ELSEIF %EOF(FILE1);
// FILE1 is shorter than FILE2
EXSR F1Short;
ELSEIF %EOF(FILE2);
// FILE2 is shorter than FILE1
EXSR F2Short;
ELSE;
// Both files still have records to be compared
EXSR CompareRecs;
ENDIF;
ENDDO;
// ...
/END-FREE