我正在尝试通过使用 gfortran 从源代码构建旧的 FORTRAN 代码来工作。我终于能够成功构建它,但是现在它运行时出现了越界错误。我使用 gdb 并将错误跟踪到使用 loc() 内部函数的函数。当我尝试打印 的值时loc(ae)
,其中 ae 是我传递的整数值,我收到错误“当前上下文中没有符号“loc”。” 我尝试使用 ifort 11.x 进行编译并使用 DDT 进行调试并得到相同的错误。对我来说,这意味着编译器对内在函数一无所知。
一点阅读表明 loc 内在函数不是 F77 标准的一部分,所以也许这就是问题的一部分。我在下面发布了内在函数的定义,但我不知道如何将其实现到我的代码中,以便可以使用 loc() 。
有什么建议还是我误解了我的问题?因为 gfortran 和 ifort 由于越界错误而在同一个地方崩溃,但是使用 loc() 的函数在两个编译器之间返回相同的大数字。如果两个编译器都返回相同的 loc 值,loc() 将不起作用,这似乎有点奇怪。
用法:
iaddr = loc(obj)
在哪里:
obj 是需要其地址的变量、数组、函数或子程序。iaddr 是地址为“obj”的整数。地址的格式与 LARn 指令存储的格式相同。
描述:
LOC 用于获取某物的地址。返回的值在 Fortran 中并不是真正有用,但可能需要 GMAP 子例程或非常特殊的调试。