如何在Fortran的子程序中使用函数?

时间:2014-10-02 21:16:43

标签: fortran

有谁能告诉我为什么这个简单的程序会给我一个分段错误?

我使用gfortran,我需要在子程序中使用一个函数。

program tst
implicit none

real z,x,y
x=10.
y=2.
call s(10.,10.,z)
print*,z

end program

real function c(x,y)
implicit none
real x, y
c = x*y
return
end

subroutine s(x,y,z)
implicit none
real x, y
real z
real c

z = c(x,y)
end

1 个答案:

答案 0 :(得分:0)

最好将您的程序放入一个模块中,以便彼此了解它们的接口以及use模块的任何过程或程序:

module MyStuff

contains

function c(x,y)
implicit none
real :: c
real :: x, y
c = x*y
return
end

subroutine s(x,y,z)
implicit none
real :: x, y, z

z = c(x,y)
end

end module MyStuff

program tst
use MyStuff
implicit none

real z,x,y
x=10.
y=2.
call s(10.,10.,z)
print*,z

end program

它有效,给出答案100。