此语法在fortran中是什么意思?

问题描述 投票:1回答:1

我正在从事一个项目,由于我以前没有使用Fortran进行编码,所以我很努力。我的教授给了我一个我需要修复的代码文件,但我不理解其语法。

所以,在他的文件中

         g = some formula,
     1        some formula
     2        * some formula
     3        / some formula.

1、2、3,*和/做什么?

[我问我的教授,他说这是Fortran 77代码,在第6列中使用了1,2,3作为索引,在第7列中使用了g,因为这就是编写Fortran代码的方式。但是我很困惑,为什么Fortran 77仅在第7列之后接受代码?

感谢您的所有答复。

fortran gfortran
1个回答
9
投票

您最有可能看到的是固定源代码形式的语句继续,它是固定源形式的一部分。

固定格式格式化是一种仍旧源自旧punched-cards的格式化代码的旧方法。行只能是72个字符,但是有时您需要更多。因此,语句继续字符:

[除了注释内,字符位置6用于指示继续。如果字符位置6包含空格或零,则字符line是新语句的起始行,从字符位置7开始。如果字符位置6包含其他任何字符与空白或零相比,该行的字符位置7–72构成前一个非注释行的延续。

来源:Fortran 2018 Standard, Section 6.3.3.3] >>

哪个字符用作语句继续标记,取决于程序员及其风格。通常,您会看到(&)或字符(

$)或字符( *),如下所示:
c23456789012345678901234567890123456789012345678901234567890123456789012
      g = something long
     &    + something_longer
     &    + something_even_longer

但是,在过去,人们经常给行编号。

c23456789012345678901234567890123456789012345678901234567890123456789012
     0g = something long
     1    + something_longer
     2    + something_even_longer

并且由于空间有限,他们删除了所有空格,当您的行中有数字时,有时会变得很混乱:

c23456789012345678901234567890123456789012345678901234567890123456789012
     0g=1.2345+
     10.35697-
     22.5789

[这不会增加10.35697并减去22.5789,但会增加0.35697并减去2.5789

数字作为语句继续标记的用法再次从打孔卡继承。一张打孔卡代表一个Fortran语句。并在卡上打印了行号和列号(感谢High Performance Mark获得此信息)

enter image description here


note:

OP中的星号和斜杠只不过是普通的乘法和除法。
© www.soinside.com 2019 - 2024. All rights reserved.