title: Fortran77: what does the asterisk (*) means in subroutine argument?
body: <p>I have some problem with <code>scipy.interpolate.splrep</code>, so I have no choice by to dig into some very old Fortran77 code.</p>
  
  <p>And one thing I can not understand is here:
  <a href="https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/curfit.f#L257" rel="nofollow noreferrer">https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/curfit.f#L257</a></p>
  
  <p>it calls a subroutine <code>fpcurf</code></p>
  
  <pre><code>      call fpcurf(iopt,x,y,w,m,xb,xe,k,s,nest,tol,maxit,k1,k2,n,t,c,fp,
       * wrk(ifp),wrk(iz),wrk(ia),wrk(ib),wrk(ig),wrk(iq),iwrk,ier)
  
  </code></pre>
  
  <p>where the <code>wrk</code> is one dimension array</p>
  
  <p>and the signature of <code>fpcurf</code> is </p>
  
  <pre><code>      subroutine fpcurf(iopt,x,y,w,m,xb,xe,k,s,nest,tol,maxit,k1,k2,
       * n,t,c,fp,fpint,z,a,b,g,q,nrdata,ier)
  c  ..
  c  ..scalar arguments..
        real*8 xb,xe,s,tol,fp
        integer iopt,m,k,nest,maxit,k1,k2,n,ier
  c  ..array arguments..
        real*8 x(m),y(m),w(m),t(nest),c(nest),fpint(nest),
       * z(nest),a(nest,k1),b(nest,k2),g(nest,k2),q(m,k1)
        integer nrdata(nest)
  </code></pre>
  
  <p>you can find it at <a href="https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/fpcurf.f" rel="nofollow noreferrer">https://github.com/scipy/scipy/blob/master/scipy/interpolate/fitpack/fpcurf.f</a></p>
  
  <p>And obviously the signature doesn't match (since <code>wrk</code> is array, and <code>wrk[xxx]</code> is a scalar). Can anyone explain why? I noticed that there is a asterisk (*) here, does it mean anything special?</p>
  
  <p>Maybe anyone familiar with Fortran could please take a look at this function and figure out why the call doesn't match the subroutine signature?</p>