【发布时间】:2019-08-05 18:10:25
【问题描述】:
我有一个需要读取 ASCII 文件的 Fortran 程序,但是文件列表有时会包含一个大小为 0 的文件。然后程序在尝试读取此文件时崩溃。到目前为止,我还没有找到任何方法可以让我标记这样的文件。
我的代码中有以下 READ 语句
read(10,220,END=320,ERR=195)parm(1:)
虽然我希望代码转到语句 195 或语句 320,但不会崩溃,但它会崩溃
这是文件大小为零时代码崩溃的地方,并显示以下消息
...
fmt: end of file
apparent state: unit 10 named junko.con
last format: (A)
lately reading sequential formatted external IO
我尝试使用 INQUIRE 语句
inquire (unit=10,SIZE=nsize),但是程序无法编译OPEN语句在打开零大小文件时没有报错,
IOSTAT的值是一样的,与文件大小无关
【问题讨论】:
-
请创建一个minimal reproducible example 供我们查看。例如,在这里,我们如何确定程序在您所说的那一刻崩溃?它可能在其他地方。
-
打开一个大小为零的文件不会出错,所以如果你需要以某种方式测试文件的大小,那么请告诉我们查询语句是如何编译失败的。跨度>
-
请注意 Inquire( ..., Size = ... ) 在超过 25 年的时间里不属于过时的 Fortran 77 标准。相反,它是 Fortran 2003 的一部分,这很好,因为这是您应该使用的。
标签: fortran