DATA 语句中的语法错误
Syntax error in DATA statement
我在 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 4.1) 下工作,但最近的升级已将我们转移到 gcc 4.4 和 gfortran。现在这段代码导致了错误,但我看不出问题所在。
我猜这是对标准的扩展,不再受支持。 FORTRAN 77 Standard, ch. 9.1 声明重复值应为
nonzero, unsigned, integer constant or the symbolic name of such a
constant.
因此,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
我在 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 4.1) 下工作,但最近的升级已将我们转移到 gcc 4.4 和 gfortran。现在这段代码导致了错误,但我看不出问题所在。
我猜这是对标准的扩展,不再受支持。 FORTRAN 77 Standard, ch. 9.1 声明重复值应为
nonzero, unsigned, integer constant or the symbolic name of such a constant.
因此,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