0

我试图查看一些非常古老的 FORTRAN 代码并遇到以下语句:

IF (XKJ.GT.ACCY) THEN

我查看了整个代码,没有找到“ ACCY ”的声明。我假设它是一个内置变量/常量/函数,但无法找到定义。我“用谷歌搜索”它并遇到了其他具有类似表达式的 FORTRAN 示例(但没有 ACCY 的定义)。

自从我查看 FORTRAN 代码以来已经 20 年了。有人知道' ACCY '是什么吗?

4

2 回答 2

7

毫无疑问,它是一个变量,具有用于测量浮点计算的“准确性”——由于某些浮点数的不精确表示,它可能会漂移。在 Fortran 中,除非您使用编译器选项(或 IMPLICIT 语句)来打开此功能,否则不必声明变量。以 AH 和 OZ 开头的变量自动被视为 REAL 变量(IN 是整数)。有问题的编译器可能会将变量的内存清零,也可能不会清零,所以除非它被分配到某个地方——通常是一个 COMMON 块——它可能是零或某个任意值。

于 2009-05-01T14:24:05.027 回答
3

从技术上讲,Fortran 中没有保留/关键字。尽管将关键字定义为标识符会使事情变得非常混乱。在我看来,这听起来/看起来像是被隐含地定义了,这是它的第一次使用,其中 ACCY 为 0。

定义此代码片段的子例程是否定义了IMPLICIT NONE?如果没有,打开它并查看编译器是否将 ACCY 标记为未定义。如果它被标记,你就会知道为什么在其他地方找不到它:)

于 2009-05-01T14:21:50.853 回答