我正在编译在 Linux 中开发的 G77/GNU FORTRAN 代码,以便在 Windows 中与 Intel Fortran 一起使用。我在代码中得到了一个奇怪的分配来修改 DO 循环索引,例如 I+1=M 或 I-1=N,其中 I 在 DO 循环的索引中。英特尔 Fortran 编译器不接受这一点。英特尔 Fortran 编译器也不允许修改循环索引。英特尔 Fortran 中这些分配的等效代码是什么?
代码如下:
DO L=2,LA
I=IL(L)
J=JL(L)
IF(IJCT(I-1,J).EQ.9)THEN
L-1=LC
ELSE
L-1=LIJ(I-1,J)
L-1=MAX(L-1,1)
ENDIF
IF(IJCT(I+1,J).EQ.9)THEN
L+1=LC
ELSE
L+1=LIJ(I+1,J)
L+1=MAX(L+1,1)
ENDIF
ENDDO