愛しの Fortran・3改

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

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

POS 指定子

書式付き流れ探査入出力では、一度通ったところに戻れます。 つまり

      INTEGER :: POS

      WRITE(UNIT,"(G0)") "A"
      INQUIRE(UNIT,POS=POS)
      WRITE(UNIT,"(G0)") "B"
      WRITE(UNIT,"(G0)") "C"
      WRITE(UNIT,"(G0)",POS=POS) "D"

この例では A と書いた直後の位置を整数変数 POS にとってあります。その後、B、C と 2 行書きますが、次に POS の位置に D と書きます。すると、先に書いた B、C は削除されて、A の次の行に D とあるファイルになります。

なお、C 言語のテキストストリームでは一度書いたデータを上書きした場合に、その先が削除されるかどうかは処理系によりますが、Fortran の書式付き流れ探査出力では書いたらそこがファイルの終端になって、その先は削除されることになっています。

上の例では何がしたいのか意味不明ですが、書いた場所を覚えておいて、後で戻ってそこから読む、といった用途に使えます。

ファイルの先頭位置は 1 です。基本的には予め INQUIRE 文で POS をとっておいた位置にしか 戻れませんが、1 だけは聞かなくても戻れます。

順番探査ファイルには REWIND 文、BACKSPACE 文というのがありましたが、書式付き流れ探査入出力ではより柔軟に位置付けができます。

(つづく)