愛しの Fortran・3改

Fortran について気の向くままに綴ります

書式付き流れ探査入出力 (その2)

用語の確認

Fortran 用語は独特なので、まずは用語を整理しておきましょう(まぁどのプログラミング言語の用語も独自のものですが、Fortran はかなり少数派なので)。

「プログラムの外部の媒体中に存在するファイル」を「外部ファイル (external file)」と呼びます。(Fortranでは「内部ファイル」という語を「入出力文の対象とする文字変数」という意味で使います。)

外部ファイルは一連の「ファイル記憶単位 (file storage unit) 」で構成されます。C 言語で言う「バイト」のことですね。事実上 8 ビットですが、規格上は処理系依存です。

外部ファイルを、データの列という以上の構造はないと扱う場合、(書式なし)流れファイル ((unformatted) stream file) と呼びます。C で言うバイナリストリームに対応する概念です。

一方で、記録 (record) の列でもあるファイルを書式付き流れファイル (formatted stream file) と呼びます(この語は規格中に現れますが、明確には定義されていないので意図せず使われたのかもしれません。でも便利なのでここでは使います)。C で言うテキストストリームに対応する概念です。Fortranで言う「記録」は実質的にはテキストファイルの行のことです。

記録は文字列とそれに続く記録マーカ (record marker)。ただし、ファイルの最後の記録は記録マーカを持たないことがあり、この場合最後の記録は不完全 (incomplete) と言う。このあたりも「記録マーカ」を「改行文字」と読み替えると C のテキストストリームの定義をなぞっています。そもそも Fortran の流れ (stream) 入出力は C が扱うファイルとの互換性を意図しているわけですから。

1 つの記録マーカのファイル記憶単位数は処理系依存です。事実上は 1 文字(UNIXApple 系)と 2 文字(MS 系)が流通しています。