我承认标题可能有点晦涩难懂,所以让我给什么,我想要做的,什么行不通的例子。 我有一个调用子程序这是一个模块中的主要程序:
Program Test_program
Use module_A
Implicit none
Integer :: i
i = 1
call subroutine_A(i)
End program Test_program
这subroutine_A是在模块A中,并在匝调用function_B这是在module_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
程序和模块在不同的文件。 不幸的是,这并不能编译,因为我得到一个错误信息:
ERROR Subroutine_A:该参考子程序function_B不是CALL语句。
看来该计划认为,function_B是一个子程序,所以我不知道该怎么做。 顺便说一句,我想用我的子程序和使用模块功能的适当封装,因为我被告知,但如果这不是我愿意接受建议的正确方法(我被告知不要使用接口,但模块,而不是因此这测试)。
谢谢