固定 Fortran 连续行中无法识别的标记“&”

Unrecognized token '&' in Fixed Fortran continuation lines

我正在编辑一个旧项目,该项目使用 固定形式 Fortran 并使用 IVF 编译器 进行编译。我目前遇到的问题是 continuation lines in a list:

format(//,  10x,'*******************************************',/, &
     10x,'* DIAGONALS OF THE RESIDUAL COV. MATRIX   *',/,  &
     10x,'*******************************************',//,  &
     2x,'MEASUREMENT',7X,'  RESIDUAL COVARIANCE', /)

出于某种原因,& 符号对我不起作用,我不断收到错误消息:

unrecognized token '&' skipped

对于较小的线条,增加固定形式的线条长度并使两条线条一起工作,但有些情况下线条对于此来说太大了。代码是大约 15 年前以固定形式的 Fortran 编写的,但我不熟悉 Fortran 以及新的编译器和设置如何影响代码。

转换为自由格式会导致其他格式出现一系列错误,而且代码似乎没有损坏,所以我认为没有必要转换为自由格式。我尝试过其他缩进方法,例如行尾和行首的 ampersand星号,以及其他论坛建议使用的斜线,但它们产生了错误:

error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: <HOLLERITH_CONSTANT> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> ) ...

是否缺少某种格式,或者是否有任何我可以编辑的设置来修复这些错误?

在固定形式的 Fortran 中,您可以在下一行的第 6 列中使用任何字符继续一行,而不是第一行末尾的 &。尝试:

      format(//,  10x,'*******************************************',/,
     c  10x,'* DIAGONALS OF THE RESIDUAL COV. MATRIX   *',/,
     c  10x,'*******************************************',//,
     c  2x,'MEASUREMENT',7X,'  RESIDUAL COVARIANCE', /)

或者将编译器开关 -free 与 .for 或 .f 一起使用

或者使用带有 .F90 的编译器开关 -fixed -132。

在你的情况下,我会将 .f 和 cp 保留为 .F90,然后明确让 makefile 编译 .F90 ...

我通常将 -fixed -132 与 .F90 一起使用,因为我经常在代码中保留 -d 行,但我无法获得 -d 行。使用 -free.