Fortran Coder

查看: 2603|回复: 1
打印 上一主题 下一主题

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

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
14 元
贡献
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





分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

54

帖子

0

主题

0

精华

实习版主

F 币
653 元
贡献
214 点

元老勋章新人勋章

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, 2024-11-23 09:47

Powered by Tencent X3.4

© 2013-2024 Tencent

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