在隐含的DO循环中围绕多个值的括号 - "错误:期望表达式中的右括号"

时间:2016-07-21 08:09:14

标签: fortran gfortran fortran77

从GNU FORTRAN编译器4.3.2迁移到4.8.5时,用户收到错误

p.for:227.25:

      write(3,446) ((r(i),ERC(i),EIC(i),ERp(i),EIp(i)),i=1,I1)
                         1
Error: Expected a right parenthesis in expression at (1)

这里输出列表是使用隐含的DO循环结构构建的。即使使用--std=legacy进行编译,错误仍然存​​在。

问题很容易解决。当我删除数组元素列表周围的括号时,代码编译并且似乎按预期工作。

      write(3,446) (r(i),ERC(i),EIC(i),ERp(i),EIp(i),i=1,I1)

我会满意这个修复,但是我们的用户经常在不同的系统上存储多个代码副本,并且在它们之间交换代码似乎是随机的。另一方面,makefile和构建脚本通常特定于我们的集群。

很高兴发现有一个命令行选项可以让这些代码通过语法检查。我在可用的GNU Fortran编译器语言选项列表中找不到类似-ffixed-parenthesized-values-in-implied-loop的内容。

问:是否可以调整构建脚本以便在不修改源代码的情况下编译此类语句?

0 个答案:

没有答案