我从以前的研究人员那里继承了一个旧的 f77/g77 程序,但对 Fortran 的经验很少。我已经完成了文件中的大部分语法转换,但我遇到了一个问题,即旧文件调用了一个名为libstr的(已弃用?)库。我似乎在任何当前的 gfortran 文档中都找不到对此的参考(尽管我也不确定我是否在寻找正确的地方)。我想知道的是是否有办法避免调用Union
and 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
回到绘图板。