Fortran90で可変長ファイルを読む
Fortran90初心者です。
実験でたとえば
時刻 温度 流速
t1 T1 v1 (CR/LF)
... ... ...
tn Tn vn (CR/LF)
のような ascii data file (FILE.dat)を得ています。
実験ごとに n の値、つまり、行数が違っており、このファイル内のデータを
次のようなFortran.90のプログラムで読み取って、その後処理を行っています。
integer :: Nl ! number of lines
integer :: i
character(180) :: dummy_line ! for void reading
real(8), allocatable :: time(:), temp(:), velocity(:)
open (5,file='FILE.dat', status='unknown',form='formatted')
Nl = 0
do
read(5,*, end = 99) dummy_line ! void read is absurd !!
Nl = Nl + 1
end do
99 write(*,*)"eof encountered at Nl = ", Nl ! total lines in the file
allocate(time(Nl), temp(Nl), velocity(Nl)) ! allocation of variables
rewind(5) ! read pointer is set to the beginning of the file
do i=1, Nl
read(5,*) time(i), temp(i), velocity(i)
end do
この方法だと、元のファイルを2度読み込むことになりますので、あまり
賢い方法ではないと怒られています。実験データを出力する機器の方でファイルの
先頭にデータ数 n を吐き出させることもできません。
Fortran90だけでデータを読みながら動的配列を増やしてゆく方法があったら
ご教示のほどお願いします。
Cならリスト処理やreallocで可能かとも思いますし、Linux上なら wc -lと
Cのpopenとでも可能かとは思うのですが、プラットフォームはwindows7
で、intel fortranを使用しています。
(最終手段は入力部はCで、処理部はFortranで、linkするのでしょうか。)
よろしくお願いします。
補足
正規版のはずなのですが… 試用版なのかもしれません正規版の場合,上限が設定されていることは ないはずですもんね? いろいろ試してみたいと思います