Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单Fortran 77程序的编译错误_Fortran_Gfortran_Fortran77 - Fatal编程技术网

简单Fortran 77程序的编译错误

简单Fortran 77程序的编译错误,fortran,gfortran,fortran77,Fortran,Gfortran,Fortran77,我从Fortran 77复制并粘贴了以下程序: 我将其保存为circle.f,并从终端(macOS Sierra)编译: 它返回了错误消息: 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) 我怎样才能修好它?(对于另一个类

我从Fortran 77复制并粘贴了以下程序:

我将其保存为
circle.f
,并从终端(macOS Sierra)编译:

它返回了错误消息:

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)

我怎样才能修好它?(对于另一个类似的问题,这并不能解决问题。)

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具有固定格式的源代码。语句只能使用第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
(将整行声明为注释)或一个数字作为数字标签的开头。

尝试在
程序循环之前添加6个空格。
@apocapse:这解决了问题,非常感谢!(我要删除我的问题吗?)教程中说“在Fortran 77中忽略空格。因此,如果删除Fortran 77程序中的所有空格,编译器仍然可以接受该程序,但人类几乎无法阅读。”我不清楚为什么添加空格会使它起作用。使用“Fortran必须有空格”快速搜索(当我发布这个问题时,我不知道该搜索什么)在Google上返回“Fortran 77语法要求在任何命令之前提供6个空格。这6个空格源于Fortran的穿孔卡版本。在前6个空格之后,如果你愿意,你可以为缩进添加额外的空格。”这不是特别的“fortran 77"语法,它是固定格式的fortran,目前的fortran标准仍然支持它。学习它很好,因为您无疑会遇到旧代码,但对于新的工作,您可以使用自由格式,如果您愿意的话。@agentp:谢谢您提供的有用信息。请尝试在
程序循环
@apocapse:之前添加6个空格,这样就解决了问题,而不是ks很多!(我要删除我的问题吗?)教程中说“在Fortran 77中忽略空格。因此,如果删除Fortran 77程序中的所有空格,编译器仍然可以接受该程序,但人类几乎无法读取。”我不清楚为什么添加空格会使其工作。使用Google上的“fortran必须有空格”(我在发布此问题时不知道搜索什么)返回“fortran 77语法要求在任何命令之前提供6个空格。这6个空格源自fortran的穿孔卡版本。在前6个空格之后,如果您愿意,可以为缩进添加额外的空格。特别是,这不是“fortran 77”语法,它是固定格式的fortran,目前的fortran标准仍然支持它。学习它很好,因为您无疑会遇到旧代码,但对于新的工作,如果您愿意,您可以使用自由格式。@agentp:感谢您提供的有用信息。简要说明:我不确定是否启用了
c
c
注释可能有很多标记。但显然,
p
不是;)在标准f77中,“C”或星号可以在第1列中用于注释。较新版本允许
也是固定格式的,因为它可以在任何地方(除了作为延续标记的地方)启动注释。快速注意:我不确定
c
c
是注释唯一可能的标记。但显然
p
不是;)在标准f77中,可在第1列中使用“C”或星号进行注释。较新版本允许
也是固定格式的,因为它可以在任何地方启动注释(作为延续标记的地方除外)
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)