共通ブロックを深く使用してグローバル変数を定義する商用コードをカスタマイズしています。
私がやりたいのは、これらの変数の 1 つだけをサブルーチンに渡し、インクルードを作成しないことです。なぜなら、共通として定義された他のいくつかの変数は必要ないからです。
これを行う唯一の方法は、以前に新しいローカル変数を定義し、それにグローバル変数の値を割り当ててから、新しい変数をサブルーチンに渡すことでしたが、その方法は好きではありません..
サブルーチンに変数を渡すときに変数をローカルに変換するよう 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