【问题标题】:How to run Fortran77 code from an .src file?如何从 .src 文件运行 Fortran77 代码?
【发布时间】:2018-08-30 15:17:51
【问题描述】:

我对 Fortran 非常陌生,并试图运行(据称)Fortran77 代码。但是,此代码在 .src 文件中提供。

在记事本中打开此文件时,代码看起来像 Fortran,但添加了看似随机的数字和换行符。

代码无法在 Visual Studio/Intel Visual Fortran 中编译。

有没有人见过这个并且可以帮助我?

一个代码sn-p:

    70 FORMAT(1H1,10X,*KOUNT = *,I4,18X,*R = *,E13.5//)
      GO TO 503
  513 WRITE(6,504) KOUNT,X1
  504 FORMAT(1H1,10X,*KOUNT = *,I4,18X,*X = *,E13.5//)
  503 CONTINUE
      WRITE(6,610) ZSHIFT,XSHIFT,XTHR,ZLIFT,YMOM
  610 FORMAT(10X,*Z MOMENT AXIS = *,E11.3,5X,*X MOMENT AXIS = *,E11.3/
     1                     10X,*THRUST = *,E11.3,5X,*LIFT = *,E11.3,5X
     1,*PITCHING MOMENT = *,E11.3)
      IF(IS(3).NE.0.AND.KOUNT.NE.0.AND.ISIM.EQ.0) WRITE(6,621) XTHRC,ZLI
     1FTC,YMOMC
  621 FORMAT(* CONTACT  *     ,*THRUST = *,E11.3,5X,*LIFT = *,E11.3,5X
     1,*PITCHING MOMENT = *,E11.3)
      IF(IS(1).NE.0.AND.KOUNT.NE.0.AND.ISIM.EQ.0 ) WRITE(6,622) XTHRS,ZL
     1IFTS,YMOMS
  622 FORMAT(*   SHOCK  *     ,*THRUST = *,E11.3,5X,*LIFT = *,E11.3,5X
     1,*PITCHING MOMENT = *,E11.3)
      WRITE(6,623)
  623 FORMAT(/)
      DO 71 J=1,JMAX
      IF(J.GT.JCALC) GO TO 71
      IF(J.GT.JINT  ) GO TO 2260
      IF(XJ.NE.0..OR.XJ1.NE.0.) GO TO 505
      WRITE(6,506) J,HE(1),HE(4),TH(J),HE(5)
  506 FORMAT(//10X,*J = *,I2,24X,A5,A3     ,E13.5,/4X,*I*,6X,A1 ,10X,
     1*P*,10X,*Q*, 9X,*PHE*, 8X,*SI*,10X,*M*,10X,*H*, 9X,*PHI*
     1,8X,*RHO*,8X,*GAM*,9X,*T*)
      GO TO 510
  505 IF(XJ1.EQ.0.) GO TO 507

Screenshot of the code in Visual Studio

我的 Google-Fu 没有显示任何内容。我试过复制和粘贴代码,这会引发很多错误。删除数字和换行符似乎可以解决一些错误。使用 gFortran 编译器也不起作用。

【问题讨论】:

  • 代码太长,无法在帖子中以纯文本形式提供。不过我会添加一个sn-p。
  • 该代码 sn-p 带回了大学时 Fortran77 的一些(不太好的)记忆。 :) 像这样的东西就是他们发明结构化编程的原因;这种代码激发了著名的“Go To Considered Harmful”这封信。
  • 能否请您提供任何错误消息或告诉您编译器不接受该程序的信息?我的答案可能还有其他方面遗漏了。

标签: fortran fortran77


【解决方案1】:

那些“随机数和换行符”是 Fortran 源代码处于固定形式的症状。这与 Fortran 77 出现时的代码一致。

您需要告诉编译器将源视为这种形式,或者使用适当的文件扩展名(例如.f)或使用编译器选项。编译器选项are

  • /fixed 作为命令行选项;
  • 或以下Language > Source File Format (/free, /fixed)

总而言之,固定格式源将前几个数字作为行标签,将第六列中的数字(此处,但可以是其他字符)作为语句继续标记。因此,当下一行的第六列中有1 时,那些奇怪放置的换行符并不意味着语句的结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2017-05-16
    • 2022-01-18
    • 1970-01-01
    • 2010-10-16
    • 2023-03-13
    相关资源
    最近更新 更多