Fortran 数据语句中的语法错误

Fortran 数据语句中的语法错误,fortran,gfortran,fortran77,g77,Fortran,Gfortran,Fortran77,G77,我在Fortran项目中有以下代码: ITEGER IV, IY DIMENSION IV(NTAB,IDEPTH) DIMENSION IY(IDEPTH) DATA IV,IY /(IDEPTH*NTAB)*0,IDEPTH*0)/ 尝试编译项目会生成以下错误: DATA IV,IY /(IDEPTH*NTAB)*0,IDEPTH*0)/ 1 Syntax error in DATA statement at (1). 这在f77/g77(GCC

我在Fortran项目中有以下代码:

ITEGER IV, IY
DIMENSION IV(NTAB,IDEPTH)
DIMENSION IY(IDEPTH)
DATA IV,IY /(IDEPTH*NTAB)*0,IDEPTH*0)/
尝试编译项目会生成以下错误:

    DATA IV,IY /(IDEPTH*NTAB)*0,IDEPTH*0)/
                1

Syntax error in DATA statement at (1).

这在f77/g77(GCC4.1)下工作,但最近的升级将我们转移到GCC4.4和gfortran。现在,这段代码导致了错误,但我看不出问题所在。

我的猜测是,这是对标准的扩展,不再受支持。说明重复值应为a

非零、无符号、整型常量或此类变量的符号名 不变的

因此,
IDEPTH*NTAB
不允许作为重复值

您可以通过使用构成乘积的另一个常数来规避此问题:

      PROGRAM test
        INTEGER IV, IY
        INTEGER,PARAMETER :: NTAB=1,IDEPTH=1
        INTEGER,PARAMETER :: PROD=NTAB*IDEPTH

        DIMENSION IV(NTAB,IDEPTH)
        DIMENSION IY(IDEPTH)

        DATA IV,IY /PROD*0,IDEPTH*0/
      END
或者,要使其严格符合FORTRAN 77,请执行以下操作:

      PROGRAM test
        INTEGER IV, IY
        INTEGER NTAB,IDEPTH
        INTEGER PROD

        PARAMETER (NTAB=1,IDEPTH=1)
        PARAMETER (PROD=NTAB*IDEPTH)

        DIMENSION IV(NTAB,IDEPTH)
        DIMENSION IY(IDEPTH)

        DATA IV,IY /PROD*0,IDEPTH*0/
      END

您的代码中有多个输入错误。。。请把它们修好!