ファイルを開いて読み取る方法を学ぶために、いくつかのダミーコードを作成しました。次のtest.datがあるとしましょう
1
2
3
4
5
6
7
8
9
10
データファイルを開いて読み取るために次のコードを書きました
subroutine readdata
implicit none
integer :: j
double precision :: test
open(unit = 100, file = 'test.dat', status = 'old', action = 'read')
do j = 1, 10
read(100,*) test
print *, 'N1=', test
end do
end subroutine
予想どおり、出力は以下に示されています
gfortran -g -I/usr/include -o main main.o subroutines.o -L/usr/lib64/liblapack -L/usr/lib64/libblas
test= 1.0000000000000000
test= 2.0000000000000000
test= 3.0000000000000000
test= 4.0000000000000000
test= 5.0000000000000000
test= 6.0000000000000000
test= 7.0000000000000000
test= 8.0000000000000000
test= 9.0000000000000000
test= 10.000000000000000
Main finished.
ただし、次のようにデータが単一の行に格納されている場合
1 2 3 4 5 6 7 8 9 10
その場合、上記のコードは期待どおりに機能しません。行の最初の要素のみを読み取り、エラーを表示します
sharwani@linux-h6qd:~/PHD_research/myCodes/data> ./runcase.sh
rm -f *.o *.mod *.MOD *.exe *.stackdump main
gfortran -g -I/usr/include -c main.f90
gfortran -g -I/usr/include -c subroutines.f90
gfortran -g -I/usr/include -o main main.o subroutines.o -L/usr/lib64/liblapack -L/usr/lib64/libblas
test= 1.0000000000000000
At line 9 of file subroutines.f90 (unit = 100, file = 'test.dat')
Fortran runtime error: End of file
私の質問は、1 行に 2879 (1 x 2879) の数値が格納されているデータ ファイルがあるということです。データ ファイル内のすべての数値を開いて読み取るにはどうすればよいでしょうか。