タイトルが少しわかりにくいかもしれませんが、私がやりたいこととうまくいかないことの例を挙げましょう。モジュール内にあるサブルーチンを呼び出すメインプログラムがあります。
Program Test_program
Use module_A
Implicit none
Integer :: i
i = 1
call subroutine_A(i)
End program Test_program
この subroutine_A はモジュール A にあり、module_B にある function_B を呼び出します。
module module_A
use module_B
implicit none
contains
subroutine subroutine_A(i)
implicit none
integer, intent(in) :: i
double precision :: j
j = function_B(i)
end subroutine subroutine_A
end module module_A
最後に、module_B は次のようになります。
module module_B
Implicit none
Contains
double precision function function_B(i)
implicit none
integer,intent(in) :: i
function_B = 5.d0*i
end function function_B
end module module_B
プログラムとモジュールは別のファイルにあります。残念ながら、エラー メッセージが表示されるため、これはコンパイルされません。
エラー Subroutine_A: サブルーチン function_B へのこの参照は、CALL ステートメントにありません。
プログラムは function_B がサブルーチンであると認識しているようで、どうすればよいかわかりません。ところで、モジュールを使用してサブルーチンと関数の適切なカプセル化を使用しようとしていますが、これが適切な方法でない場合は、提案を受け付けています (インターフェイスではなくモジュールを使用するように言われたので、これを使用します)。テスト)。
ありがとう