Fortran Coder

标题: Fortran子程序中虚参为*代表什么意思 [打印本页]

作者: mwh-heu    时间: 2022-11-8 10:07
标题: 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
本帖最后由 布衣龙共 于 2022-11-8 13:55 编辑

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

你可以参考彭国伦的《Fortran95程序设计》第8章,第8-8-2,特别的Return




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2