インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
I/O 文は、すべてのデータをレコードとして転送します。1 つのレコードに含めることができるデータ量は、次の条件によって異なります。
書式付き I/O (固定長レコードを除く) の場合、I/O 文の項目数および I/O 文に関連した形式指定子の組み合わせによって、転送されるデータ量が決定されます。
ネームリストおよびリスト指定出力の場合、(NAMELIST またはリストによって指定された形式規則とともに) NAMELIST 文または I/O 文のリストで指定された項目を使用し、転送されるデータ量が決定されます。
書式なし I/O (固定長レコードを除く) の場合、転送されるデータ量は I/O 文だけで指定されます。
固定長レコード (RECORDTYPE='FIXED') を指定すると、すべてのレコードが同じサイズになります。書き込まれる I/O レコードのサイズがレコード長 (RECL) よりも小さい場合は、余分なバイトが追加されます (パディング)。
通常、I/O 文によって転送されるデータは、単一レコードから読み出されたり、単一レコードに書き込まれます。ただし、使用される I/O 形式によっては、単一の I/O 文でも、複数のレコードへのデータ転送が行えます。
アドバンシング I/O を使用するときに、入力文でレコードに含まれるデータ量よりも小さいデータフィールド (データ量) を指定すると、残りのデータフィールドは無視されます。
入力文でレコードに含まれるデータ量よりも大きいデータフィールドを指定すると、次のいずれかが発生します。
アドバンシング I/O を使用する書式付き入力では、PAD='YES' を使用してファイルが開かれると、余分なフィールドはスペースとして読み出されます。PAD='NO' を使用してファイルが開かれると、エラーが発生します (入力文では、レコードに含まれるデータ量を超えるデータフィールドを指定してはなりません)。
ノンアドバンシング I/O (ADVANCE='NO') を使用する書式付き入力では、レコードの終了 (EOR) が返されます。PAD='YES' を使用してファイルが開かれると、余分なフィールドがスペースとして読み出されます。
リスト指定入力では、別のレコードが読み出されます。
ネームリスト入力では、別のレコードが読み出されます。
書式なし入力では、エラーが発生します。
出力文で、レコードに含まれるデータ量よりも小さいデータフィールド (レコードを埋めるために必要なデータ量よりも少ないデータ量) が指定されると、次のように動作します。
固定長レコード (RECORDTYPE='FIXED') では、すべてのレコードのサイズが同一になります。書き込まれる I/O レコードのサイズがレコード長 (RECL) よりも小さい場合、スペース (書式付きレコードの場合) またはゼロ (書式なしレコードの場合) を使って余分なバイトが追加されます (パディング)。
その他の種類のレコードの場合、フィールドへの書き込みは行われますが、省略された部分には書き込まれません (結果として、レコードが短くなる場合があります)。
出力文で、レコードに含めることができる最大データ量を超えるデータが指定されると、次のようなエラーが発生します。
固定長レコードを使用する書式付きまたは書式なし出力の場合、出力文の項目とそれに関連した形式指定子によってバイト数が最大レコード長 (RECL) を超えると、エラーが発生します。
固定長レコードを使用しない書式付きまたは書式なし出力の場合、出力文の項目とそれに関連した形式指定子によってバイト数が最大レコード長 (RECL) を超えると、インテル® Fortran RTL は、RECL の値を増やし、より大きなレコードを書き込みます。RECL の値を取得するには、INQUIRE 文を使用します。
リスト指定出力およびネームリスト出力では、指定されたデータが最大レコード長 (RECL) を超えると、別のレコードが書き込まれます。