【发布时间】:2013-06-07 03:06:51
【问题描述】:
在 Fortran 77 代码中,有共同块和等价语句的组合使用。 例如,
common /X/ a,b,c,d
dimension arr(4)
equivalent(arr(1),a)
谁能提供一个可行的解决方案,将这种 Fortran 77 代码转换为 Fortran 90 代码?
【问题讨论】:
-
最简单的方法就是什么都不做,因为这种F77编程在F90、F2003、F2008中还是可以的……
-
假设公共变量在内存中是连续的真的安全吗?这让我觉得它的风格很糟糕,即使它可能大部分时间都有效。
-
@george 安全。等价语句指定通用语句建立的存储顺序与数组元素的存储顺序之间的存储关联。内存中的布局是一个实现细节,但可观察的行为必须就像使用了一块连续的内存一样。
-
@IanH 谢谢 - 我看到标准中清楚地说明了这一点。
-
如果您想用数组元素替换标量,这可能很有用:您可以(一次一个程序单元)将数组放入公共和等价(a,arr(1) ) (b,arr(2)) 等。然后开始小心地将标量替换为显式数组元素。
标签: fortran block equivalence fortran-common-block