我正在尝试更新一段基于IDL例程输入进行计算的fortran代码。当IDL例程调用fortran时,它将传递每个变量(IDL CALL_EXTERNAL documentation)的引用。当前,fortran代码尝试将输入数组中的每个引用与%VAL()标记一起传递到不同的子例程。
subroutine full_calc(argc, argv)
implicit none
integer*8 :: argc
integer*8, dimension(24) :: argv
call map_gen(%VAL(argv(1)), %VAL(argv(2)), ...)
end subroutine full_calc
这与先前的代码配合得很好,因为它以有用的方式进行了编译;但是,新的编译器发出警告,我正在传递INTEGER(8)而不是正确的变量类型。另外,根据this,使用%VAL有点可疑。
如果这可能会导致问题,那么我该如何使用这些值来获取不会在任何地方发出警告的值,不需要我仅具有传递引用的例程,或者至少可以在任何编译器上工作?
此外,如果任何人都可以澄清这里真正发生的事情或原因,我也将不胜感激。