如何将数组传递给子程序,然后在Fortran77中调用它?

时间:2016-04-13 01:31:25

标签: arrays fortran call subroutine fortran77

我想操纵一个大代码。我想计算主程序中计算结果的rmse。我添加了以下子程序来计算rmse

subroutine rmse(A,B,nmax,rmseans)
      Integer nmax
      Double Precision A(nmax),B(nmax),C(nmax),d(nmax)
      Real e,f,rmseans
      COMMON /PAR7/ XTIME,STAGE,RECH,OBS 
      e = 0
      do 103 i=1,nmax
          c(i)= (a(i)-b(i))
          d(i)= (c(i))**2
          e = e+d(i)
103  enddo
      rmseans = sqrt(e/nmax)
      End`

它需要两个数组A和B,并将rmse设为rmseans,而nmax为术语总数。 然后我在主程序结束时调用这个子程序为

Call rmse(OBS,H,NT,rmseans)
Write(*,*) rmseans

但这给了我一个非常错误的答案。我已经确保在调用子例程之前通过在文件中写入这两个值来计算值OBS和H.

0 个答案:

没有答案