質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

解決済

【Fortran】readでエラーEnd of Fileが出てしまう原因が分からない

beachone1155
beachone1155

総合スコア16

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

2回答

0リアクション

0クリップ

4610閲覧

投稿2021/07/04 02:04

編集2021/07/04 02:50

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

character*80 line character*24 fname open(11,file = 'test_master.txt')!入力ファイル名を設定 do i = 1, 123 !入力ファイルのデータ数を設定 if(mod(i-1,50) == 25) then !ここを25にするとうまく動かない write(fname,'(a11,i4.4,a1,i4.4,a4)') "test", i, "-", i+49, ".txt"!出力ファイル名を設定 open(12,file = fname) end if read(11,'(a80)') write(12,*) line if(mod(i,50) == 25) then close(12) end if end do close(11) 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での質問の経験が浅いため、質問方法が粗末で申し訳ありません。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。