Fortran 新手,我被要求使用 Salford/Silverfrost 编译器使用 Fortran 77 编写的旧 Fortran 代码库(最初的开发人员已去世)。
最初的开发人员COMMON
广泛使用命名块(模拟全局变量,AFAIU),并且他EQUIVALENCE
在需要时使用(重新)初始化块,如下面的代码片段:
IMPLICIT REAL*8 (A-H,O-Z)
COMMON/COMMF2D/
* ASCN(0:99,0:20,0:4)
*,FEMPTY2(8700)
DIMENSION KLCKF2D(38400)
EQUIVALENCE (KLCKF2D,ASCN)
DO I= 1,38400
KLCKF2D(I)= 0
END DO
这是一种可接受的编程实践还是只是一种黑客行为?另外,由于我正在尝试将代码移植到 GFortran,它是否可移植?(我知道像这样REAL*8
的声明只是对编译器的提示,并不能保证)