编译一个简单的Fortran 77程序的错误

时间:2017-09-06 17:03:55

标签: fortran gfortran fortran77

我在Sublime Text中复制并粘贴了以下程序,来自Fortran 77 tutorial

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对于另一个类似的问题并没有解决问题。)

1 个答案:

答案 0 :(得分:2)

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)

我可以决定哪一个最容易阅读。

但是如果你从第一个角色开始,即使是起始"程序"声明,编译器会抱怨。它期望cC!(声明整行评论)或数字作为数字标签的开头。