2013-02-20 70 views
0

我使用gfortran,并出现以下错误编译FORTRAN 77码分支警告:奇怪的输出和编译时

10开(23,文件= outfile中,状态=“老”,获得=“追加”,ERR = 10)
警告:(1)处的分支可能导致无限循环

这会发生多次。

一个输出文件的如下所示:

^L6a10È< 90>)& < 9B>LÓLÓLÕ< 91> < 90> < 90> < 90>È< 8E> < 9B>LÓLÓLÕ< 93> 2 !MERCURY¢¤õ/ O!< 8A> < 8A> < 90>ÿ< 90>ÿ< 90>ÿÌÖÏ©ü} M < 91> “VENUS«}>±{©±< 8B> < 90 >ÿ< 90>ÿ< 90>ºÊº93¿< 8d> d < 91>

但是,它应该看起来像一张文字表。

任何想法?

回答

1

open语句中的err=参数指定一个语句标签,以便在出于某种原因导致open失败时分支到该语句标签。你的代码指定一个分支标记10线正好是包含open语句行。这可能不是一个好主意;一个更好的主意是分支到一条优雅地处理open声明中的错误的行。

从gfortran警告是即期。

至于在输出文件中的明显的垃圾,不能看见你用写的垃圾代码(或你的想法是珍珠也许)这是非常难以诊断和解决这个问题。

2

你的代码

10 open (23,file=outfile,status='old',access='append',err=10) 

行指定open语句应该在控制移交给自己(标签10)遇到错误,所以任何错误可能引发无限循环。它也会抑制错误消息的输出。如果你想只检查一个错误状态,我会建议使用iostat和/或iomsg(Fortran 2003的)参数:

open (23, file=outfile, status='old', access='append', iostat=ios, iomsg=str) 

这里ios是一个整数,如果出现非零值没有错误,否则这将是零,并且str是一个字符变量,它将记录相应的错误消息。