Fortran77中(1)的不可分类声明和(1)的意外数据声明声明?

时间:2014-04-16 15:47:48

标签: file count fortran gfortran fortran77

我正在尝试计算Fortran 77中文件中的行数 (我的文件有两列,都有数字)

我收到了无法分类的声明和意外的数据声明,我不知道为什么。这是我的代码:( fortran 77新手):

    PROGRAM Exercise

C
C John Smith
C

C
C PARAMETERS
C
      REAL PRECISION UNUM
      PARAMETER (UNUM=15)
C
C LOCAL VARIABLES
C

C
C FUNCTION DECLARATIONS
C

      INTEGER*8 PRECISION NUMLIN

C
C COMMON VARIABLES
C

C
C DATA STATEMENTS
C
      DATA FILEN /'linecounttester.txt'/
C
C MAIN PROGRAM MODULE
C

      OPEN(UNIT=UNUM, FILE = FILEN, STATUS='OLD')

C
C function counts the lines in the file

C

      FUNCTION NUMLIN
      INTEGER*8 PRECISION NUMLIN
      CHARACTER*256 LINE
      100 READ(UNUM,*,END=200) LINE
      NUMLIN=NUMLIN+1
      GOTO 100
      200 CONTINUE

      RETURN
      END

      REWIND(UNUM)

      CLOSE(UNUM)

这是我的数据文件:(只是一个测试人员,所以我可以将行数计算为8): 1 100 2 200 3 300 4 400 5 500 6 600 7 700 8 800

这些是我的错误:

Exercise.for:58.6:

  FUNCTION NUMLIN                                                   
  1

错误:(1)处的不可分类陈述 Exercise.for:59.32:

  INTEGER*8 PRECISION NUMLIN                                        
                            1

错误:符号' precisionnumlin'在(1)已经有基本类型的INTEGER Exercise.for:60.72:

  CHARACTER*256 LINE                                                
                                                                    1

错误:(1)处的意外数据声明语句 Exercise.for:61.7:

  100 READ(UNUM,*,END=200)                                          
   1

错误:名称中的字符无效(1) Exercise.for:62.6:

  LINE                                                              
  1

错误:(1)处的不可分类陈述 Exercise.for:65.7:

  200 CONTINUE                                                      
   1

错误:名称中的字符无效(1) Exercise.for:41.10:

  DATA FILEN /'linecounttester.txt'/                                
      1

错误:(1)中DATA语句中的类型不兼容;尝试将CHARACTER(1)转换为REAL(4) Exercise.for:46.16:

  OPEN(UNIT=UNUM, FILE = FILEN, STATUS='OLD')                       
            1

错误:(1)处的UNIT标记必须是INTEGER类型 Exercise.for:64.72:

  GOTO 100                                                          
                                                                    1

错误:从未定义在(1)处引用的标签100 Exercise.for:1.72:

  PROGRAM EXERCISE                                    
                                                                    1

Exercise.for:70.72:

  REWIND(UNUM)                                                      
                                                                    2

错误:(1)和(2)中的两个主要程序

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您正在混合名称空间。

你有一个

PROGRAM

语句,需要相应的

END
在开始声明你的功能之前的

声明。

应修复您看到的编译错误。但是,我没有看到你实际调用你创建的函数的位置。换句话说,您似乎在没有实际使用它的情况下定义函数。我建议您首先编写没有该函数的代码,只是为了确保它有效。然后把它分开,直到你掌握了这个:)

编辑:我还在你的问题下提出了关于你正在使用的奇怪语法的评论。虽然我不会劝阻你使用FORTRAN77,但我希望你有充分的理由这样做;)