我正在定制一个商业代码,它深度使用公共块来定义全局变量。
我想做的是只将其中一个变量传递给子例程,但不包含,因为我不需要其他几个定义为通用的变量。
我发现这样做的唯一方法是先前定义一个新的局部变量,为其分配全局变量的值,然后将新变量传递给子例程,但我不喜欢这种继续方式。
是否有解决方案告诉 Fortran 在将变量传递给子例程时将其转换为本地变量?
这里有一个例子:
主程序:
INTEGER :: A
REAL :: Y(20)
COMMON /VARS/ Y, A
INTEGER :: res, transfer_var
transfer_var = A
call sub_test(transfer_var, res)
...
子程序:
subroutine sub_test(var1, var2)
INTEGER, intent(in) :: var1
INTEGER, intent(out) :: var2
var2 = 1 + var1
return
end