mwh-heu 发表于 2022-11-8 10:07:19

Fortran子程序中虚参为*代表什么意思

主程序调用了一个子程序,某个实参为*13。而子程序对应的虚参为*。这代表什么意思?如下面代码所示,bisec虚参*和func的虚参*代表什么意思?

      call bisec(k,0.83333*k,0.99999*k,k/10000,*13)


      subroutine bisec(x,a,b,eps,*)
      call func(a,*131,*132,q)
      call func(b,*131,*132,r)
      if (q*r.gt.0.0) return 1
      q= (b-a)*sign(1.0,q)*0.5
      x= (a+b)*0.5
      e= eps*0.5
   10 q= q*0.5
      call func(x,*131,*132,r)
      x= q*sign(1.0,r)+x
      if (abs(q).gt.e) goto 10
      return
131 return 1
132 return 1
      end


      subroutine func(k,*,*,x)
      real lam,k
      common /one/ h,t,d,g,pi,lam
   :       /two/ b33,b35,b55,c1,c2
      call abc1(k*d)
      a= c2
      b= c1
      c= 1-2*pi/((g*t*t*0.5/pi)*k*tanh(k*d))
      dis= b*b-4*a*c
      if (dis.lt.0.0) return 1
      q= (-b+sqrt(dis))/(2*a)
      if (q.lt.0.0) return 2
      lam= sqrt(q)
      x= 2*(lam+lam**3*b33+lam**5*(b35+b55))/k-h
      return
      end





布衣龙共 发表于 2022-11-8 13:15:15

本帖最后由 布衣龙共 于 2022-11-8 13:55 编辑

这是一种不常用的,甚至已被废止的写法,叫 alternate return。

你可以参考彭国伦的《Fortran95程序设计》第8章,第8-8-2,特别的Return
页: [1]
查看完整版本: Fortran子程序中虚参为*代表什么意思