[我经常看到人们在没有明确指定OPEN
的情况下使用STATUS
语句。在Fortran 90和2008标准中,有关STATUS
的说法是这样的:
如果指定了UNKNOWN,则状态取决于处理器。如果省略此说明符,则默认值为UNKNOWN。
我的解释是,如果省略STATUS
,则可能发生任何事情,具体取决于您所使用的计算机。
但是,通过进行一些测试,似乎默认行为(当省略STATUS
时)为REPLACE
。但是我找不到gfortran编译器手册(来自https://gcc.gnu.org/onlinedocs/)中记录的此行为。
问题:REPLACE
是否确实是流行编译器(如gfortran和ifort)中的默认行为?如果是这样,这是否实际记录在案(但我只是偶然找不到)?
在普通编译器中,UNKNOWN
在所有编译器中的行为都非常相似。但这绝对不等于REPLACE
!该选择将覆盖您要读取的数据!
IBM XL Fortran手册对此进行了指定:
未知,以连接现有文件,或创建并连接新文件文件。如果文件存在,则以OLD形式连接。如果文件没有存在,它以NEW形式连接。
UNKNOWN表示如果尚不存在,请创建该文件,然后将其打开。