Fortran语法(子例程声明)

时间:2014-02-19 15:25:06

标签: syntax fortran

我尝试阅读fortran(我认为是)程序并且不能理解子程序的开始。它看起来像: fortran1 我无法理解第二块(红色) - 这是什么?参数/参数,全局变量或类似的东西?

黄色看起来像常数数组,但语言声明在我的手册中有所不同。

此外,我无法找到IF的声明:

enter image description here

它的IF(条件)然后转到更少,eq,更大或其他什么?

1 个答案:

答案 0 :(得分:4)

你正在寻找相当古老的固定源格式FORTRAN,其中行上字符的位置很重要。特别是第6列中的任何字符(0或空白除外)都表示该行是前一行的延续。第1列中的C表示评论。

首先发出奇怪的IF声明

IF( HP(IM) - 70. ) 105,105,110

是算术if语句。如果HP(IM)-70为负数,请转到标有105的行,如果为零,则转到标有105的行,如果为正,则标记为110。您的发布不显示这些行,标签位于一行的第1-5列。

现在红了

COMMON

引入了一个公共块,其名称(如果有的话)随后包含在/ /中。然后是公共块中的变量列表。在您的代码中,公共块CONTRLALPHADON的声明跨行。

您的代码建议使用公共块将变量传入/传出子例程,而不使用其参数列表。可能有一个程序范围声明了相同的公共块,相同的公共块也可能出现在其他子程序中。如果其他作用域具有相同名称但内容明显不同的公共块,请不要感到惊讶,常见块的恶意用法之一是使用变量名称。更有趣的是,一个范围内的4字节整数变量可以被视为另一个范围内的4字节实数。

现在是绿色

DATA TME / ... /

使用TME/之间的值初始化数组/