【问题标题】:Old FORTRAN Namelist Compiler (gfortran) Flag?旧的 FORTRAN 名称列表编译器 (gfortran) 标志?
【发布时间】:2015-03-18 19:59:31
【问题描述】:

我目前正在升级一个用 FORTRAN 编写的旧程序,我正在尝试使用 gfortran 编译它。我可以构建它,但是程序现在卡在它正在读取的名单上。

程序附带的名单示例如下所示。由于变量名和括号之间有空格,它无法正确读取该文件。由于这些文件非常大,无论如何我可以告诉gfortran 期待旧的名单格式吗?

&<NAME>
 <VARNAME> (1) = 0,
 <VARNAME> (2) = -1e-13,
 <VARNAME> (3) = 0.2983
&End

如果没有,我可以进行搜索/替换,但我不想弄乱数据,而是让代码成功读入。

【问题讨论】:

  • 我会用 sed 删除所有空格。
  • sed -i -e 's/ (/(/g' test.nml

标签: fortran gfortran


【解决方案1】:

namelist 相当复杂,从 gfortran 测试套件中有 92 个 namelist 测试用例可以看出。

gfortran 无法按照您的要求进行操作。您可能必须像 Vladimir F 建议的那样手动或通过 sed 删除空白。

我可能会补充一点,在 F2003 标准 10.10.1.1 中明确禁止子对象指示符(varname(i) 部分)中的空白:

“在输入记录中,每个对象名称或子对象指示符可以前后有一个或多个可选空格,但不得包含嵌入空格。”

所以这不太可能在未来版本的 gfortran 中更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2021-04-15
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多