我对Fortran非常陌生,并尝试运行(授权)Fortran77代码。但是,此代码在.src文件中提供。
在记事本中打开此文件时,代码看起来像Fortran,但添加了看似随机的数字和换行符。
该代码无法在Visual Studio / Intel Visual Fortran中编译。
有没有人见过这个并且可以帮助我?
代码段:
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编译器也不起作用。
答案 0 :(得分:2)
这些“随机数和换行符”是Fortran源采用固定形式的症状。这与可追溯到Fortran 77的代码一致。
您需要告诉编译器使用适当的文件扩展名(例如.f
)或使用编译器选项将源视为这种形式。编译器are的选项:
/fixed
作为命令行选项; Language > Source File Format (/free, /fixed)
下总而言之,固定格式源的前几个数字作为行标签,而第六列的数字(此处可能是其他字符)用作语句继续标记。因此,当下一行的第六列中有1
时,那些奇怪的换行符并不表示语句的结尾。