一个简单的 Fortran 77 程序的编译错误
Compile error for a simple Fortran 77 program
我从 Fortran 77 tutorial 中复制并粘贴了以下程序到 Sublime Text 中:
program circle
real r, area
c This program reads a real number r and prints
c the area of a circle with radius r.
write (*,*) 'Give radius r:'
read (*,*) r
area = 3.14159*r*r
write (*,*) 'Area = ', area
stop
end
我将其保存为 circle.f
并从终端 (macOS Sierra) 编译:
gfortran circle.f
返回错误信息:
circle.f:1:1:
program circle
1
Error: Non-numeric character in statement label at (1)
circle.f:1:1:
program circle
1
Error: Unclassifiable statement at (1)
我该如何解决? (The answer 另一个类似的问题没有解决问题。)
Fortran 77 具有固定的格式源。只有第 7 到第 73 列之间的字符才能用于语句。 (前 6 个字符用于将整行声明为注释,作为数字标签,或表示此行是前一行的延续。)第 74 个及以后的字符将被忽略。
在此范围内,空格将被忽略。所以下面几行是相同的:
column 1 1 2 2 3 3 4 4
1 5 0 5 0 5 0 5 0 5
-----------------------------------------------
if (i .le. 10) call my_sub(i)
if(i.le.10)callmy_sub(i)
i f ( i. le .10) cal lmy_ sub(i)
由您决定哪一个最容易阅读。
但是如果您从第一个字符开始,即使是 "program" 语句,编译器也会报错。它期望 c
、C
、!
(将整行声明为注释)或数字作为数字标签的开头。
我从 Fortran 77 tutorial 中复制并粘贴了以下程序到 Sublime Text 中:
program circle
real r, area
c This program reads a real number r and prints
c the area of a circle with radius r.
write (*,*) 'Give radius r:'
read (*,*) r
area = 3.14159*r*r
write (*,*) 'Area = ', area
stop
end
我将其保存为 circle.f
并从终端 (macOS Sierra) 编译:
gfortran circle.f
返回错误信息:
circle.f:1:1:
program circle
1
Error: Non-numeric character in statement label at (1)
circle.f:1:1:
program circle
1
Error: Unclassifiable statement at (1)
我该如何解决? (The answer 另一个类似的问题没有解决问题。)
Fortran 77 具有固定的格式源。只有第 7 到第 73 列之间的字符才能用于语句。 (前 6 个字符用于将整行声明为注释,作为数字标签,或表示此行是前一行的延续。)第 74 个及以后的字符将被忽略。
在此范围内,空格将被忽略。所以下面几行是相同的:
column 1 1 2 2 3 3 4 4
1 5 0 5 0 5 0 5 0 5
-----------------------------------------------
if (i .le. 10) call my_sub(i)
if(i.le.10)callmy_sub(i)
i f ( i. le .10) cal lmy_ sub(i)
由您决定哪一个最容易阅读。
但是如果您从第一个字符开始,即使是 "program" 语句,编译器也会报错。它期望 c
、C
、!
(将整行声明为注释)或数字作为数字标签的开头。