Fortran Coder

查看: 425|回复: 1

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

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
13 元
贡献
4 点
发表于 2022-11-8 10:07:19 | 显示全部楼层 |阅读模式
主程序调用了一个子程序,某个实参为*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





42

帖子

0

主题

0

精华

实习版主

F 币
607 元
贡献
193 点

元老勋章新人勋章

QQ
发表于 2022-11-8 13:15:15 | 显示全部楼层
本帖最后由 布衣龙共 于 2022-11-8 13:55 编辑

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

你可以参考彭国伦的《Fortran95程序设计》第8章,第8-8-2,特别的Return
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2022-12-9 03:10

Powered by Tencent X3.4

© 2013-2022 Tencent

快速回复 返回顶部 返回列表