• 締切済み

最新のgfortranでのコンパイルエラー

GNU Fortran (Rev1, Built by MSYS2 project) 9.3.0ですが、現時点での最新バージョンと思われます。以下のソースファイルをコンパイルしてみました。 module abc real x,y end module abc program test use abc x=3.14 y=5.55 print *, x,y call xxx print *, x,y end program test subroutine xxx use abc x=5.55 y=3.14 end subroutine xxx その結果、 f951.exe: Fatal Error: Reading module 'abc' at line 1 column 46: Unexpected EOF というエラーになります。 10年以上前のintel fortranだと問題なくコンパイルでき結果もOKです。 できれば新しいコンパイラを使いたいのですが、ソースをどのように改変していけばいいでしょうか。また、最新版のコンパイラをやめた方がいいのでしょうか。コンパイラを新しくして他にもトラブルが出ているのですが。 Cのカテゴリですみません。ここしか思い当たらないので。

みんなの回答

  • f272
  • ベストアンサー率46% (8653/18507)
回答No.3

fortranに予約語はありません。 どういう手段でリネームをしたのか書いていませんが,もう一度zzzをabcに戻してもうまくいく気がします。つまりリネームしてファイルを更新したのでOKになったという解釈です。どうでしょうか?

skmsk1941093
質問者

お礼

回答ありがとうございます。abcとするとあいかわらずコンパイラエラーが出ます。リネームはエディタに付属の機能でやりました。module abcを受け付けないという事態は変わりがありません。abc以外だと全く問題ありません。ただし、コンパイラエラーにはなりますが、abc.modは出力されるようです。 Linuxのgfortranでやってみるとmodule abcでも問題ありません。Windowsで実行するgfortranの最新バージョンの問題なのではないかと思うのですが。abc.modがどこかにないか検索しましたが、見当たりません。 また、このabc.modとかzzz.modのようなmodファイルですが、どのようなものなのでしょうか。中間的なもので実行形式ができたら削除してもいいのでしょうか。Linuxの場合は削除しても./a.outで動作しますので実行形式ができたら不必要のようですが。

すると、全ての回答が全文表示されます。
  • f272
  • ベストアンサー率46% (8653/18507)
回答No.2

ここに書かれているソースコード自体は問題ありません。 気になるのはエラーメッセージのat line 1 column 46:です。見た目では1行目に46カラムはありませんので,何らかの間違いがあるのでしょう。ソースコード中の改行コードはどうなっていますか? $ gfortran --version GNU Fortran (GCC) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ gfortran xxx.f90 $ ./a 3.14000010 5.55000019 5.55000019 3.14000010

skmsk1941093
質問者

お礼

回答ありがとうございます。1つ奇怪な現象を確認しました。module abc で始まるところをmodule zzzとしました。あのソースではabcをzzzにするところが全部で4か所あります。 module abc end module abc use abcが2カ所です。 一気にリネームします。それでコンパイル、実行ができるようになりました。abcという名前がいかん、というわけです。 結局は実行できたわけですが、解決したうちに入りませんね。 コンパイラが常識的な範囲でも変数名を嫌うというのが本当だとしたらプログラマ殺しということになりそうです。abcって予約語でしょうか。

すると、全ての回答が全文表示されます。
  • maiko04
  • ベストアンサー率17% (345/1956)
回答No.1

implicit none がいるのでは? https://www.nag-j.co.jp/fortran/FI_16.html

すると、全ての回答が全文表示されます。

関連するQ&A