Fortran的OPEN语句中IOSTAT错误代码的便携式解释?



fortranOPEN语句将系统相关错误代码放在作为其可选IOSTAT说明符给定的整数中。对于"英特尔Fortran",我在software.Intel.com上找到了错误代码的文档。从这里开始,我可以编写一个函数/子例程,将iostat值转换为可读值。英特尔还提供了一个文件for_iosdef.for,用于定义值的符号名称。

原则上,我可以对所有支持的编译器重复同样的操作,但是否有一些可移植的方法来解释代码,或者至少是其中的一个子集?此外,对于gfortran,似乎没有官方名单,只有非官方名单,比如在hep.manchester.ac.uk上。

如果您想保持它的可移植性,请遵守标准的规定:Fortran 2008最终草案第242页第9.11.5节"IOSTAT=说明符":

简而言之,IOSTAT是"依赖于处理器的"。但是,有一些定义的值,在ISO_FORTRAN_ENV:中指定

  • IOSTAT_EOR(记录结束(。。。负整数
  • IOSTAT_END(文件结尾(。。。负整数
  • IOSTAT_INQUIRE_INTERNAL_UNIT(已查询内部文件(。。。正整数
  • 0未发生错误、EOF或EOR

所有其他错误都是与IOSTAT_INQUIRE_INTERNAL_UNIT不同的正整数。但未指定其值。

INQUIRE语句可以查询一些属性,例如:如果允许您读取或写入文件。

从Fortran 2003开始,IOMSG说明符是可用的,它允许获得人类可读的错误消息。

遗憾的是,没有可靠的方法可以获得完整的错误消息,因为它只使用一个CHARACTER(LEN=...)参数,并在变量中填充尽可能多的字符,其中可能包括文件的完整路径。在我的实际用例中,我必须至少使用一个CHARACTER(LEN=256)变量。

它也不允许在运行时可靠地对特定的错误条件做出反应。

最新更新