我正在尝试计算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)中的两个主要程序
任何人都可以帮助我吗?
答案 0 :(得分:1)
您正在混合名称空间。
你有一个
PROGRAM
语句,需要相应的
END
在开始声明你的功能之前的声明。
应修复您看到的编译错误。但是,我没有看到你实际调用你创建的函数的位置。换句话说,您似乎在没有实际使用它的情况下定义函数。我建议您首先编写没有该函数的代码,只是为了确保它有效。然后把它分开,直到你掌握了这个:)
编辑:我还在你的问题下提出了关于你正在使用的奇怪语法的评论。虽然我不会劝阻你使用FORTRAN77,但我希望你有充分的理由这样做;)