这个语法在fortran中是什么意思?

Tim*_*ler 1 fortran gfortran

我正在做一个项目,因为我以前没有用 Fortran 编码,所以我很挣扎。我的教授给了我一个代码文件,我需要修复它,但我不明白语法。

所以,在他的文件中

         g = some formula,
     1        some formula
     2        * some formula
     3        / some formula.
Run Code Online (Sandbox Code Playgroud)

1, 2, 3, * 和 / 有什么作用?

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

谢谢大家的回复。

kva*_*our 10

您最有可能看到的是Fixed source-form statement continuation ,它是Fixed source form 的一部分

固定格式格式化是一种旧的代码格式化方式,它仍然源于旧的穿孔卡片。行的长度只能为 72 个字符,但有时您需要更多。因此,语句继续字符:

除了在评论中,字符位置6用于表示继续。如果字符 position6包含空白或零,则该行是新语句的首行,该语句从字符 position 开始7。如果字符位置6包含除空白或零以外的任何字符7–72,则该行的字符位置构成前一个非注释行的延续。

来源:Fortran 2018 标准,第 6.3.3.3 节

哪个字符用作语句继续标记,取决于程序员和他的风格。通常,您会看到 <&>-字符 ( &)、<dollar>-字符( $) 或 <星号>-字符 ( ),*如下所示:

c23456789012345678901234567890123456789012345678901234567890123456789012
      g = something long
     &    + something_longer
     &    + something_even_longer
Run Code Online (Sandbox Code Playgroud)

然而,在真正的旧时代,人们经常对他们的台词进行编号。

c23456789012345678901234567890123456789012345678901234567890123456789012
     0g = something long
     1    + something_longer
     2    + something_even_longer
Run Code Online (Sandbox Code Playgroud)

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

c23456789012345678901234567890123456789012345678901234567890123456789012
     0g=1.2345+
     10.35697-
     22.5789
Run Code Online (Sandbox Code Playgroud)

这不是加 10.35697 减 22.5789,而是加 0.35697 减 2.5789

数字作为语句继续标记的使用再次继承自穿孔卡片。一张打孔卡代表一个 Fortran 语句。卡片上印有行号和列号(感谢High Performance Mark提供此信息)

在此处输入图片说明


注意: OP中的星号和斜线无非是正常的乘除法。

  • *在过去*数字印在打孔卡的顶部! (2认同)