subsubはプログラムの一部ではないため、mod からルーチンを呼び出したり、変数を使用したりできないため、サブルーチン sub のスコープにはありませんmain。それらには共通点はなく、別個のコンパイル単位であり、相互にのみ呼び出すことができます (呼び出し可能な場合)。
このことを考慮:
program main
external sub
call sub
end program main
subroutine sub
use mod
! code here calls subroutines in mod
end subroutine sub
modここでは、 が明示的に を使用しているsubため、の変数とルーチンを使用できます。submod
別の例でsubは、 は次の内部プロシージャですmain。
program main
use mod
call sub
contains
subroutine sub
! code here calls subroutines in mod
end subroutine sub
end program main
また、この場合mod、からのsubすべてmainが のスコープ内にあるため、 からのものを使用できますsub。
最後に、このケースmodは対象外であり、元のケースと同様です。
program main
use mod
use mod2
call sub
end program main
module mod2
contains
subroutine sub
! code here calls subroutines in mod
end subroutine sub
end module mod2
もう 1 つの問題は、モジュール変数がスコープ外に出たときに未定義になることです。Fortran 2008 では、すべてのモジュール変数を暗黙的に作成することでこれを解決しましたsave。