Mar*_*lex 4 fortran gfortran fortran77 intel-fortran
我正在修改一个用Fortran 77编写的模型中的代码,但我遇到了一件奇怪的事情.在某些文件中,行的第一列中有一个标签"d",如下例所示:
d real*8 co2rootfix,co2rootloss,co2shootfix
d character komma*1
d open(unit=87,file='crop_CO2.csv',status='unknown')
d write(87,*) 'date,co2rootfix,co2rootloss,co2shootfix'
d open(unit=88,file='crop_dm.csv',status='unknown')
d write(88,*) 'date,wrtpot,wrt,wstpot,wst,rdpot,rd,laipot,lai,
d &gwrt,gwst,drrt,drlv,drst'
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它是由英特尔的ifort编译器成功编译的.但是,gfortran逻辑上返回以下错误:
错误:语句标签中的非数字字符(1)
我想知道:
从ifort文档中有选项-d-lines和-nod-lines:
此选项编译调试语句.它指定在第1列(调试语句)中包含D的固定格式文件中的行应被视为源代码.
因此,如果代码是在没有-d-lines(或-nod-lines默认为默认值)的情况下编译的,那么d第一列中的那些行被视为注释并被忽略.
在gfortran -fd-lines-as-code和-fd-lines-as-comments具有相同的效果.这里的区别在于ifort作为扩展,无论标志如何都接受代码(如上所述,它具有隐式-nod-lines).gfortran只需要指定一个标志来接受代码.