以前の研究者から古い f77/g77 プログラムを継承しましたが、Fortran の経験はほとんどありません。ファイルのほとんどの構文変換を実行しましたが、古いファイルがlibstrとして知られる (非推奨の?) ライブラリを呼び出すという問題が発生しています。現在の gfortran のドキュメントでこれへの参照を見つけることができないようです (ただし、適切な場所を探しているかどうかもわかりません)。私が知りたいのは、関数Union
と flostr
関数の呼び出しを回避し、代わりに値をファイルに直接出力する方法があるかどうかです。
コードの関連部分は次のとおりです。
if (mod(ntime,nout) .eq. 0) then
ndec = 1
call flostr(t,str1,ndec)
call Union('signal_t=',str1,str2)
call Union('lineshapeSPConD_t=',str1,str3)
open(7,file = str3,STATUS ='unknown')
ライブラリのインストール方法を理解するか (makefile を実行してみました。gfortran は検索パスで /usr/bin を調べます)、関数を置き換えることができれば問題は解決すると思います。OS X 10.8.3 に Homebrew からインストールされた gfortran 4.8 を使用しています。
ありがとう!
アップデート:
gfortran コンパイルにライブラリを含めることでコードをコンパイルすることに成功しましたが、出力プログラムを実行すると一連のエラーが発生します…</p>
出力エラーは次のとおりです。
Program received signal SIGFPE: Floating-point exception - erroneous
arithmetic operation.
Backtrace for this error:
#0 0x1470e91c2
#1 0x1470e998e
#2 0x7fff92330949
#3 0x10421642e
#4 0x104217472
[1] 18171 floating point exception ./Lineshape_thick_SP_New.x
ふりだしに戻る。