我的用途是
program main
use mod
external sub
call sub
end program main
subroutine sub
! code here calls subroutines in mod
end subroutine sub
具体而言,将module mod
是在范围subroutine sub
? 另外,我有兴趣了解更多一般当一个模块是输入/输出范围。 我使用gfortran 4.6.1,如果它很重要。
这不是在子程序子的范围,因为子不能调用例程或使用变量来自国防部,因为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
,因为sub
明确地使用mod
。
另一个实例中,其中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
另一个问题是模块变量取消定义,当他们走出去的范围。 Fortran的2008年使所有的模块变量隐含地解决了这个save
。