サブルーチンを呼び出す際に問題が発生しています。まず、IF文の中でサブルーチンを呼び出せますか?別のサブルーチン内でサブルーチンを呼び出す
IF (...) THEN
...
ELSE
CALL sub1(...)
END IF
2番目の質問です。 Sub1はその中のsub2を呼び出します。次に、sub2にはメインプログラムからの入力があり、xと言うことができます。
MODULE mod1
...
CONTAINS
SUBROUTINE sub1(w)
IMPLICIT NONE
INTENT(OUT) :: w
REAL :: x, z
CALL sub2(x, z)
w = z + 1
END SUBROUTINE sub1
SUBROUTINE sub2(x, z)
IMPLICIT NONE
INTENT(IN) :: x
INTENT(OUT) :: z
z = x + 1
END SUBROUTINE sub2
END MODULE mod1
PROGRAM prog
USE mod1
IMPLICIT NONE
IF (...) THEN
...
ELSE
x = y
CALL sub1(w)
x = w + y
END IF
END PROGRAM prog
注:変数間の追加が行わ
を取って、正確な数学的な操作ではありません基本的にすべての変数は、お互いに依存しますが、X = Yは、私が唯一の方法だと思うの初期状態でありますこれはうまくいくかもしれない。 sub2が最初のx = yでピックアップされていないようで、sub1から呼び出されたときにその値をsub1に与えているようです。だから、私は変数がどのように渡されているのか分かりません。私が得ているエラーは、コンパイル時ではなく、私がsub1内のsub2と呼ぶ行につながる実行時エラーです。どんな助けも大歓迎です。
既存の回答をナンセンスに変更しないでください。新しいコードで新しい質問がある場合は、新しい質問をしてください。または、彼の答えがわからない場合は、最初に誰かに尋ねてください。 –
あなたの変更が実際のコードであると言えば、元に戻しましたが、次のようにします。 2.あなたが持っている答えと私がリンクした質問に対する答えを読んでください。サブルーチンの 'x'と' y'はローカル変数です。暗黙的に宣言されているか、 'real x、y'で宣言しても問題ありません。それらはまだサブルーチンのローカル変数です。 –
混乱を招くわけではありません。私は今理解しています、ありがとう。 – Dtaai