旧的 FORTRAN 名单编译器 (gfortran) 标志?
Old FORTRAN Namelist Compiler (gfortran) Flag?
我目前正在升级一个用 FORTRAN 编写的旧程序,我正在尝试使用 gfortran
对其进行编译。我可以构建它,但是程序现在在它正在读取的名单上阻塞。
程序附带的名单示例如下所示。由于变量名和括号之间的 space,它无法正确读取此文件。由于这些文件非常大,无论如何我可以告诉 gfortran
期待较旧的名单格式吗?
&<NAME>
<VARNAME> (1) = 0,
<VARNAME> (2) = -1e-13,
<VARNAME> (3) = 0.2983
&End
如果没有,我可以求助于 search/replace,但我不想弄乱数据,只是让代码成功读入。
Namelist 相当复杂,从 gfortran 测试套件中有 92 个 namelist 测试用例可以看出。
gfortran 无法按照您的要求进行操作。您可能必须手动或通过 sed 删除空白,就像 Vladimir F 所建议的那样。
我可能会补充一点,在 F2003 标准 10.10.1.1 中明确禁止子对象指示符(varname(i) 部分)中的空格:
"In the input record, each object name or subobject designator may be preceded and followed by one or more optional blanks but shall not contain embedded blanks."
所以这在 gfortran 的未来版本中不太可能改变。
我目前正在升级一个用 FORTRAN 编写的旧程序,我正在尝试使用 gfortran
对其进行编译。我可以构建它,但是程序现在在它正在读取的名单上阻塞。
程序附带的名单示例如下所示。由于变量名和括号之间的 space,它无法正确读取此文件。由于这些文件非常大,无论如何我可以告诉 gfortran
期待较旧的名单格式吗?
&<NAME>
<VARNAME> (1) = 0,
<VARNAME> (2) = -1e-13,
<VARNAME> (3) = 0.2983
&End
如果没有,我可以求助于 search/replace,但我不想弄乱数据,只是让代码成功读入。
Namelist 相当复杂,从 gfortran 测试套件中有 92 个 namelist 测试用例可以看出。
gfortran 无法按照您的要求进行操作。您可能必须手动或通过 sed 删除空白,就像 Vladimir F 所建议的那样。
我可能会补充一点,在 F2003 标准 10.10.1.1 中明确禁止子对象指示符(varname(i) 部分)中的空格:
"In the input record, each object name or subobject designator may be preceded and followed by one or more optional blanks but shall not contain embedded blanks."
所以这在 gfortran 的未来版本中不太可能改变。