Fortran 编译时出现奇怪的输出和分支警告
我使用gfortran编译fortran 77代码,并得到以下错误: 10打开(23,file=outfile,status='old',access='append',err=10)Fortran 编译时出现奇怪的输出和分支警告,fortran,gfortran,fortran77,Fortran,Gfortran,Fortran77,我使用gfortran编译fortran 77代码,并得到以下错误: 10打开(23,file=outfile,status='old',access='append',err=10) 1. 警告:(1)处的分支可能导致无限循环 这种情况发生了好几次 其中一个输出文件如下所示: ^L6a10È)和LÓLÕLÕLÕLÕ2 !水银!ÿÿÌÏÏüM “金星«}>93度?” 但是,它应该看起来像一个文本表 有什么想法吗?open语句中的err=参数指定了一个要在open由于某种原因失败时分支到的语句标签
1. 警告:(1)处的分支可能导致无限循环 这种情况发生了好几次 其中一个输出文件如下所示: ^L6a10È)和LÓLÕLÕLÕLÕ2 !水银!ÿÿÌÏÏüM “金星«}>93度?” 但是,它应该看起来像一个文本表
有什么想法吗?
open
语句中的err=
参数指定了一个要在open
由于某种原因失败时分支到的语句标签。您的代码指定了标记为10
的行的分支,该行恰好包含open
语句。这可能不是一个好的i一个更好的办法是分支到一行,该行优雅地处理open
语句中的错误
格弗特兰的警告是正确的
至于输出文件中明显的垃圾,没有看到用于编写垃圾的代码(或者您认为是珍珠的代码)诊断和修复该问题非常困难。您的
open
语句中的err=
参数指定了一个语句标签,以便在open
由于某种原因失败时进行分支。您的代码指定了标记为10
的行的分支,该行恰好包含open
这可能不是一个好主意;更好的办法是分支到一行,该行优雅地处理open
语句中的错误
格弗特兰的警告是正确的
至于输出文件中明显的垃圾,如果看不到用于编写垃圾的代码(或者您认为是珍珠的代码),则很难诊断和修复该问题。您的代码行
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
是一个字符变量,它将记录相应的错误消息。您的代码行
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
是一个字符变量,将记录相应的错误消息