You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Fortran OPEN语句语法错误排查:Code::Blocks编译时错误求助

Fortran OPEN语句语法错误的原因及解决方法

先来看你的代码:

PROGRAM file
IMPLICIT NONE
INTEGER stat
OPEN(25,"file.dat",iostat=stat)
IF(stat==0) THEN
    print *, "File read complete"
ELSE
    PRINT *, "Err.."
END IF
END PROGRAM file

错误原因

你触发的Syntax error in OPEN statement错误,根源在于OPEN语句中文件名参数的写法不符合Fortran语法规范

Fortran的OPEN语句对参数的顺序和格式有严格要求:第一个位置参数是文件单元号(这里的25),但后续的参数如果不使用关键字标识,编译器会按照固定顺序解析——而文件名并不在位置参数的可选序列里。你直接把字符串"file.dat"放在第二个位置,编译器无法识别这个参数的含义,自然会抛出语法错误。

解决方法

只需要给文件名参数加上FILE=关键字,明确告诉编译器这个参数的作用即可。有两种等价的正确写法:

写法1(显式指定所有关键字,可读性更强)

OPEN(UNIT=25, FILE="file.dat", IOSTAT=stat)

写法2(省略单元号的UNIT=关键字,因为它是第一个位置参数)

OPEN(25, FILE="file.dat", IOSTAT=stat)

修改后,编译器就能正确识别各个参数:25是要操作的文件单元号,FILE="file.dat"指定目标文件,IOSTAT=stat用来捕获操作的状态码。此时在Code::Blocks中编译运行,就能正常判断文件是否成功打开了。

内容的提问来源于stack exchange,提问作者AKR

火山引擎 最新活动