我经常看到人们在没有明确指定OPEN
的情况下使用STATUS
语句。在Fortran 90和2008标准中,关于STATUS
:
如果指定了UNKNOWN,则状态取决于处理器。如果省略此说明符,则默认值为UNKNOWN。
我将此解释为,如果省略STATUS
,则可能会发生任何事情,具体取决于您正在使用的机器。
然而,通过做一些测试,似乎默认行为(省略STATUS
时)是REPLACE
。但是我无法在gfortran编译器手册中找到这种行为(来自https://gcc.gnu.org/onlinedocs/)。
问题:这个REPLACE
确实是gfortran和ifort等热门编译器中的默认行为吗?如果是这样,这是否真的记录了(但我碰巧找不到它)?
答案 0 :(得分:3)
在常见的编译器中,UNKNOWN
在所有编译器中表现得非常相似。但它肯定不等同于REPLACE
!该选择会覆盖您想要阅读的数据!
IBM XL Fortran手册指定了:
UNKNOWN,用于连接现有文件,或创建和连接新文件 文件。如果文件存在,则将其连接为OLD。如果文件没有 存在,它连接为新的。
答案 1 :(得分:0)
UNKNOWN表示创建文件(如果尚不存在),然后将其打开。