FORTRAN90を使って、複数行あるテキストファイルを50行ずつ分割して別々のテキストに保存する、ということをしたいのですが、うまくいきません。
以下のようにmodで出力ファイルを0001-0050.txtのように生成して、そこにmasterのテキストを一行ずつ入力するという方法を取っているのですが、modの余り値を0にする(出力ファイル名が0001-0050.txt,0051-0100.txtのようになる)と意図通りに動作してくれて、余り値を25に設定する(出力ファイルが0026-0075.txt,0076-0125.txt)とエラーになってしまいます。
この原因が分からないので教えていただきたいです。
変数fnameはうまく生成されていることは確認済みです。
環境はMacでターミナルはbashを用いています。
よろしくお願いいたします。
FORTRAN90
1 character*80 line 2 character*24 fname 3 4 open(11,file = 'test_master.txt')!入力ファイル名を設定 5 do i = 1, 123 !入力ファイルのデータ数を設定 6 if(mod(i-1,50) == 25) then !ここを25にするとうまく動かない 7 write(fname,'(a11,i4.4,a1,i4.4,a4)') "test", i, "-", i+49, ".txt"!出力ファイル名を設定 8 open(12,file = fname) 9 end if 10 read(11,'(a80)') 11 write(12,*) line 12 if(mod(i,50) == 25) then 13 close(12) 14 end if 15 16 end do 17 18 close(11) 19 20 end
ターミナル実行結果 At line 10 of file cutter50.f90 (unit = 11, file = 'test_master.txt') Fortran runtime error: End of file Error termination. Backtrace: Could not print backtrace: libbacktrace could not find executable to open #0 0xffffffff #1 0xffffffff #2 0xffffffff #3 0xffffffff #4 0xffffffff #5 0xffffffff #6 0xffffffff #7 0xffffffff #8 0xffffffff #9 0xffffffff #10 0xffffffff #11 0xffffffff #12 0xffffffff #13 0xffffffff #14 0xffffffff
test_master.txtの中身 37.751667 138.458000 19.990000 1.500000 2011 3 1 20 51 36.580000 36.939167 138.714333 7.750000 0.400000 2011 3 2 6 39 10.170000 37.122167 138.800833 7.860000 1.900000 2011 3 2 7 16 25.700000 36.998167 138.876500 7.710000 1.300000 2011 3 2 14 40 18.940000 36.958833 138.157667 19.470000 1.100000 2011 3 3 4 35 42.970000 以下、計123行分同じ形式のデータ
teratailでの質問の経験が浅いため、質問方法が粗末で申し訳ありません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。