インテル® Fortran コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
ファイルを開いた後に、READ 文または WRITE 文で ADVANCE 指定子を省略すると (または ADVANCE= 'YES' を指定すると)、アドバンシング I/O (通常の FORTRAN I/O) がレコードアクセスに使用されます。アドバンシング I/O を使用すると次の事柄が行われます。
レコード I/O 文は、レコード全体 (または複数のレコード) を転送します。
レコード I/O 文は、現在のレコード位置を、次のレコードの位置まで進めます。
READ 文および WRITE 文で ADVANCE= 'NO' 指定子を指定することで、特定のファイルに対してノンアドバンシング I/O を要求できます。ノンアドバンシング I/O は、(リスト指定 I/O およびネームリスト I/O ではない) 書式なし I/O を使用した外部ファイルへのシーケンシャル・アクセスでのみ使用可能です。
ノンアドバンシング I/O を使用しても、現在のレコード位置は変更されません。また、常にレコード全体を転送するアドバンシング I/O とは違って、レコードの一部分を転送することができます。
READ および WRITE レコード I/O 文の ADVANCE 指定子に異なる値 ('YES' および 'NO') を指定することで、アドバンシング I/O とノンアドバンシング I/O のどちらを使うかを選択できます。
アドバンシング I/O またはノンアドバンシング I/O のいずれかを使用してレコードを読み取る際に、END 指定子を指定しておくことで、ファイルが終わりまで読み取られたときに、特定のラベルへ分岐することができます。
ノンアドバンシング I/O はレコード全体を読み取らない場合があるので、レコードが終わりまで読まれたときに特定のラベルへ分岐するさせるための、EOR 指定子もサポートされています。ノンアドバンシング I/O を使用する際に EOR および IOSTAT 指定子を省略すると、レコードの終わり (end-of-record) が読み取られたときにエラーが発生します。
ノンアドバンシング入力時に SIZE 指定子を指定することで、読み取られた文字数を返すことができます。例えば、次の READ 文では、SIZE=X (変数 X は整数) が、読み取られた文字数を X に返します。また、レコードが終わりまで読まれた場合は、レコード終了条件に従って、ラベル 700 へ分岐されます。
150 FORMAT (F10.2, F10.2, I6)
READ (UNIT=20, FMT=150, SIZE=X, ADVANCE='NO', EOR=700) A, F, I