主题:子程序调用过程中遇到的疑问
最近在编写程序的过程中遇到这样一个问题,在子程序中定义的程序段如下,其中含有do循环:
SUBROUTINE SSF_ZH1(LAM,PER,omg_L,OMG_ZH1,OMG_ZH2,BETA1,OMG_ZH)
……
do kk=1,10
PART=PART+PER*(1-LAM)**((omg_L/OMG_ZH)**BETA1)
end do
……
而在主程序调用时,相应程序段为:
do jj=1,mm
……
CALL SSF_ZH1(lamd(jj),PSHL(i-1,j,kk),omg(I,J,kk),omg(I,J,1),omg(I,J,LJS),BETA,OMG_ZH(i,j,jj))
……
end do
end do
其中的PSHL(i-1,j,kk)即对应子程序中的PER,最后希望从子程序中得到的结果是OMG_ZH。
调用一次子程序,子程序做kk次循环。得到OMG_ZH,将其赋给OMG_ZH(i,j,jj)。主程序中一共执行mm次子程序过程。
现在的问题是:主程序中的kk值不知道该如何处理,因为kk在子程序中已经循环完毕了,在主程序中是不用循环的。但是如果不在主程序中声明kk的值,程序又无法计算。
目前正在困惑中……望高手不吝赐教!
SUBROUTINE SSF_ZH1(LAM,PER,omg_L,OMG_ZH1,OMG_ZH2,BETA1,OMG_ZH)
……
do kk=1,10
PART=PART+PER*(1-LAM)**((omg_L/OMG_ZH)**BETA1)
end do
……
而在主程序调用时,相应程序段为:
do jj=1,mm
……
CALL SSF_ZH1(lamd(jj),PSHL(i-1,j,kk),omg(I,J,kk),omg(I,J,1),omg(I,J,LJS),BETA,OMG_ZH(i,j,jj))
……
end do
end do
其中的PSHL(i-1,j,kk)即对应子程序中的PER,最后希望从子程序中得到的结果是OMG_ZH。
调用一次子程序,子程序做kk次循环。得到OMG_ZH,将其赋给OMG_ZH(i,j,jj)。主程序中一共执行mm次子程序过程。
现在的问题是:主程序中的kk值不知道该如何处理,因为kk在子程序中已经循环完毕了,在主程序中是不用循环的。但是如果不在主程序中声明kk的值,程序又无法计算。
目前正在困惑中……望高手不吝赐教!