Fortran 77 и передача массива в подпрограмму

У меня есть следующий код :

parameter (maxprt=25)
dimension pt(maxprt)
impt  = maxprt

call rdprob(delt,denr,denw,ders,des,ecapr,ecapw,ein,erb0,erock,ext,iflim,ifmax,ifseg,ilim,ilpt,impt,iout,irlim,ismax,itstep,maxrk,pt,qexto,qfrac,qin,qnxt,qtot,rockr,rockv,t0,te0,tend,ter0,tstart,vol,xin,xs,ir1)

subroutine rdprob(delt,denr,denw,ders,des,ecapr,ecapw,ein,erb0,erock,ext,iflim,ifmax,ifseg,ilim,ilpt,impt,iout,irlim,ismox,itstep,maxrk,pt(25),qexto,qfrac,qin,qnxt,qtot,rockr,rockv,t0,te0,tend,ter0,tstart,vol,xin,xs,ir1)

когда я иду к ссылке компиляции, я получаю указание на то, что pt является проблемой

borehole.for: In program `MAIN__':
borehole.for:111: 
   call rdprob(delt,denr,denw,ders,des,ecapr,ecapw,ein,erb0,erock,ext,iflim,ifmax,ifseg,ilim,ilpt,impt,iout,irlim,ismax,itstep,maxrk,pt
                                                                                                                                     ^
Expression at (^) has incorrect data type or rank for its context

любые идеи о том, как исправить это или правильно вызвать подпрограмму при передаче массива

1 ответ

  1. Это способ объявления аргумента массива:

    parameter (maxprt=25)
    dimension pt(maxprt)
    
    call test(pt)
    

    и где-то еще

    subroutine test(a)
    dimension a(25)
    
    end subroutine