FORTRANストリーミングI/Oを使用して、テキストファイルの行数を通知するプログラムを作成したいと思います。アイデアは次のようなものを作ることです:
OPEN(UNIT=10,ACCESS='STREAM',FILE='testfile.txt')
nLines=0
bContinue=.TRUE.
DO WHILE (bContinue)
READ(UNIT=10) cCharacter
IF (cCharacter.EQ.{EOL-char}) nLines=nLines+1
IF (cCharacter.EQ.{EOF-char}) bContinue=.FALSE.
ENDDO
(私は変数宣言を含めませんでしたが、それらが何であるかを理解できると思います。唯一の重要な説明は、cCharacterがLEN = 1であるということです)
私の問題は、ファイルから読み取った文字が行末なのかファイルの終わり(コードの「if」)なのかを確認する方法がわからないことです。このように文字を読んで印刷すると、最終的には元のテキストと同じ場所に改行が入るので、どういうわけか「文字」として読み取って認識していると思います。おそらく、文字を整数に変換し、適切な数と比較しますか?それとももっと直接的な方法がありますか?
(レジスタ読み取り(編集:レコード読み取りを意味します)を使用して、行をより簡単に読み取り、IOステータスを追加してeofをチェックするプログラムを実行できることは知っていますが、「行カウンター」は単なる便利な例です。テキストファイルをより制御された方法で移動する方法を学ぶことです)