こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

最新の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のカテゴリですみません。ここしか思い当たらないので。

投稿日時 - 2020-06-22 08:04:10

QNo.9763731

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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

投稿日時 - 2020-06-23 13:22:03

お礼

回答ありがとうございます。abcとするとあいかわらずコンパイラエラーが出ます。リネームはエディタに付属の機能でやりました。module abcを受け付けないという事態は変わりがありません。abc以外だと全く問題ありません。ただし、コンパイラエラーにはなりますが、abc.modは出力されるようです。

Linuxのgfortranでやってみるとmodule abcでも問題ありません。Windowsで実行するgfortranの最新バージョンの問題なのではないかと思うのですが。abc.modがどこかにないか検索しましたが、見当たりません。

また、このabc.modとかzzz.modのようなmodファイルですが、どのようなものなのでしょうか。中間的なもので実行形式ができたら削除してもいいのでしょうか。Linuxの場合は削除しても./a.outで動作しますので実行形式ができたら不必要のようですが。

投稿日時 - 2020-06-27 02:46:02

ANo.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

投稿日時 - 2020-06-22 15:30:25

お礼

回答ありがとうございます。1つ奇怪な現象を確認しました。module abc で始まるところをmodule zzzとしました。あのソースではabcをzzzにするところが全部で4か所あります。

module abc
end module abc
use abcが2カ所です。

一気にリネームします。それでコンパイル、実行ができるようになりました。abcという名前がいかん、というわけです。
結局は実行できたわけですが、解決したうちに入りませんね。
コンパイラが常識的な範囲でも変数名を嫌うというのが本当だとしたらプログラマ殺しということになりそうです。abcって予約語でしょうか。

投稿日時 - 2020-06-23 00:46:42

ANo.1

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

投稿日時 - 2020-06-22 09:15:17

あなたにオススメの質問