我正在从事一个项目,由于我以前没有使用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列之后接受代码?
感谢您的所有答复。
您最有可能看到的是固定源代码形式的语句继续,它是固定源形式的一部分。
固定格式格式化是一种仍旧源自旧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获得此信息)
note:
OP中的星号和斜杠只不过是普通的乘法和除法。