こんにちは私が得ている1つのエラーメッセージを強調するために、以下の最小、完全で検証可能なサンプルサンプルコードを作成しようとしました。エラーは "(1)で引数 'func0'に型の不一致があり、COMPLEX(4)に渡されたREAL(4)が返されます。サブルーチン内でサブルーチンを呼び出すときにエラーが発生する
エラーメッセージが(1)別のサブルーチン内のサブルーチンを呼び出すようにしてみてください。
私はもともとSUB2に暗黙のどれを追加しないようにしようとした、しかし、私はfunc0、func1のが暗黙の型を持っていないというエラーメッセージが表示されます。
私はロジックに従ってみましたこの投稿のHow to call and use a subroutine inside another subroutine in fortran?
Module Sample
integer :: n,m
contains
subroutine Sub1(func0,func1)
implicit none
complex, dimension(-10:10, -10:10), intent(inout) :: func0,func1
complex, dimension(-10:10, -10:10) :: Deriv0,Deriv1
do while (100 > 0.000001)
Deriv0 = Deriv(func0)
Deriv1 = Deriv(func1)
end do
end subroutine Sub1
subroutine Sub2(func3)
!implicit none : if this line is not commented out, I still get error messages saying func0,func1 do not have implicit types
real,dimension(0:20), intent(inout) :: Func3
call Sub1(func0,func1) !error message from here, this is line (1)
end subroutine Sub2
function Deriv(func)
implicit none
complex, dimension(-10:10, -10:10) :: func, Deriv
do n=-9,9
do m=-9,9
Deriv(n,m) = func(n+1,m)-2*func(n,m)
end do
end do
end function Deriv
End Module Sample
このエラーを修正するにはどうすればよいですか?ありがとう。
これは私にとって非常に役に立ちます。私はあなたが示唆したように、sub2でfunc0、func1を宣言することによってエラーを修正することができました。私は暗黙のnoneもモジュールに追加しました。その他の説明もありがとうございました。私はあなたに知らせることができますが、私は今のように何も質問がない場合、これはすべて非常に明確です。ありがとう! –