0

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 に移動しました。現在、このコードはエラーを引き起こしていますが、問題がわかりません。

4

1 に答える 1

2

私の推測では、これはもはやサポートされていない標準への拡張機能でした。FORTRAN 77 標準、ch9.1では、繰り返し値は

非ゼロ、符号なし、整数定数、またはそのような定数の記号名。

そのため、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
于 2015-03-30T20:08:29.410 に答える