Fortran IV,编译名为常量的错误

Fortran IV,编译名为常量的错误,fortran,gfortran,legacy,Fortran,Gfortran,Legacy,我正在尝试使用gcc Fortran编译器(gfortran 4.8.1-4)编译旧的Fortran IV代码。我以如下方式运行编译器:gfortran nrlxrf_a.for-std=legacy。以下是错误消息: C:\MinGW\bin>gfortran nrlxrf_a.for-std=legacy NRLXRF_.适用于:5525.72: IF ( NFILL.EQ. 0)

我正在尝试使用gcc Fortran编译器(gfortran 4.8.1-4)编译旧的Fortran IV代码。我以如下方式运行编译器:gfortran nrlxrf_a.for-std=legacy。以下是错误消息:

C:\MinGW\bin>gfortran nrlxrf_a.for-std=legacy

NRLXRF_.适用于:5525.72:

  IF ( NFILL.EQ. 0)
                                                                    1
错误:无法在(1)处指定命名常量

我已经检查了这一行,语句结尾后没有空格

NRLXRF_.适用于:5531.7:

 1 ( HFILL( I), I= 1, NFILL), ( H( IU, I), I= I1, I2)
   1
错误:无法在(1)处指定命名常量

如有任何建议,将不胜感激。 托马斯

这是使用HFILL和NFILL的代码部分。这是为编译器选择正确选项的问题还是语法错误

C:DOC IS THE DATUM NUMERIC?  IF SO, GO TO 44; ELSE GO TO 50.
       NFILL= 0
       HTEST= H( IU, I1)
      IF ( HTEST.NE. HSIGN( 1)) GO TO 41
      GO TO 45
C:-------
 41   IF ( HTEST.NE. HSIGN( 2)) GO TO 42
 45    NFILL= 1
       HTEST= H( IU, I1+ 1)
 42   DO 43 J= 1, 11
      IF ( HTEST.EQ. HDIG( J)) GO TO 44
   43 CONTINUE
       NFILL= 0
      GO TO 50
C:-------
C:DOC DATUM IS NUMERIC.  CALCULATE NO. OF BLANKS TO RIGHT-JUSTIFY.
 44    NFILL= NC- NII
      IF ( I2P.NE. I2) WRITE( KW, 111) ( H( IU, J), J= I1, I2P)
      IF ( I2P.NE. I2) WRITE( KW, 112) ( H( IU, J), J= I1, I2)
C:DOC WRITE ANY FILL BLANKS AND DATUM TO SCRATCH FILE.
 50   CONTINUE
      IF ( NFILL.EQ. 0) WRITE( KS, 102) ( H( IU, I), I= I1, I2)
      IF ( NFILL.EQ. 0)                                             line 5525
C:     1 ENCODE( NC, 102, HIN( 4* NR- 3)) ( H( IU, I), I= I1, I2)
      IF ( NFILL.NE. 0) WRITE( KS, 102)
     1 ( HFILL( I), I= 1, NFILL), ( H( IU, I), I= I1, I2)
      IF ( NFILL.NE. 0)
C:     1 ENCODE( NC, 102, HIN( 4* NR- 3))
     1 ( HFILL( I), I= 1, NFILL), ( H( IU, I), I= I1, I2)           line 5531
       I1= I3+ 1

如果假设代码基于此,那么问题在于gfortran不是Fortran IV编译器,它不支持其他编译器所支持的扩展

第一个错误的完整“行”(考虑到延续性):

      IF ( NFILL.EQ. 0)
     1 ENCODE( NC, 102, HIN( 4* NR- 3)) ( H( IU, I), I= I1, I2)
根据
的说明,不支持编码

我猜在您提供的代码中,您(或某人)试图删除这些麻烦的行。但是错误的是:删除了行,但没有删除整个语句,这些语句可能包含许多行


忽略删除编码会从根本上改变代码的含义这一事实,您需要删除出现
ENCODE
s的整个语句。删除所有后续连续行和前一个非连续行。在这种情况下,第5525、5529和5520行。

请您在给出错误的代码行周围提供一些额外的代码行,特别注意缩进?我已经注释掉了所有编码和解码行。代码提供了使用临时文件的选项。thxENCODE和DECODE可替换为“内部读写”。