Fortran 编译时出现奇怪的输出和分支警告

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由于某种原因失败时分支到的语句标签

我使用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
由于某种原因失败时分支到的语句标签。您的代码指定了标记为
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
是一个字符变量,将记录相应的错误消息