function se(x)
implicit none
integer n
real x,h,he,tx,se
n=1
tx=h(n)*x**(2*n)
he=tx
do while(abs(tx)>=1e-10)
n=n+1
tx=h(n)*x**(2*n)
he=he+tx
enddo
se=1+he
CONTAINS
function h(n) result(k)
implicit none
integer i,n
real pim,term1,term2,e,s,k
pim=(2/3.1415926)**(2*n+1)
term1=1
term2=1
e=term1/term2
s=1
i=1
do while(abs(e)>=1e-10)
i=i+1
term1=(-1.0)**(real(i)-1)
term2=(2*real(i)-1)**(2*n+1)
e=term1/term2
s=s+e
enddo
k=2*pim*s
end function h
end function se
program www_fcode_cn
implicit none
real se,h,x
read*,x
print*,se(x)
end program www_fcode_cn
这个程序是错的,,出错是因为:contains里面的函数h的scoping unit定义跟主函数有冲突。
real x,h,he,tx,se,这样编译器会认为h是external的,但加上contains却又认为是internal的
有两种改法:
1,去掉声明中的h;
2,将end function se 替换掉contains,,写成2个独立的函数。



