我正在修改一些旧的 Fortran 代码(我想是 F77),用 Intel 编译器编译。我遇到了一些这种形式的 SLATEC 例程:
subroutine cffti (n,wsave)
dimension wsave(1)
iw1 = n+n+1
iw2 = iw1+n+n
call cffti1 (n,wsave(iw1),wsave(iw2))
return
end subroutine cffti
subroutine cffti1 (n,wa,ifac)
....
....
end subroutine cffti
Wsave 是一个数组,它的第一部分应该存储浮点数,而第二部分(来自 iw2)存储整数。
所有变量都是隐式的,因此当 wsave(iw2) 传递给 ifac 时,会被解释为整数,而 ifac 中的值没有意义。
我很困惑:所有这些东西怎么能正常工作?我该如何克服这个问题?