本附录介绍由 Fortran 95 运行时 I/O 库和操作系统生成的错误消息。
操作系统错误消息包括系统调用失败、C 库错误和 shell 诊断。系统调用错误消息可在 intro(2) 中找到。通过 Fortran 库进行的系统调用并不直接生成错误消息。Fortran 库中的以下系统例程将调用 C 库例程,而这些库例程可生成错误消息:
        integer system, status
        status = system("cp  afile bfile")
        print*, "status = ", status
        end
 | 
显示以下消息:
cp: cannot access afile status = 512  | 
f95 I/O 库在运行时检测到错误的时候发出诊断消息。下面是一个使用 Fortran 95 编译和运行的示例:
demo% cat wf.f
      WRITE( 6 ) 1
      END
demo% f95 -o wf wf.f
demo% wf
 ******  FORTRAN RUN-TIME SYSTEM  ******
 Error 1003:  unformatted I/O on formatted unit
 Location:  the WRITE statement at line 1 of "wf.f"
 Unit:  6
 File:  standard output
Abort
 | 
因为 f95 消息包含对原始源代码文件名和行号的引用,所以应用程序开发者应该考虑在 I/O 语句中使用 ERR= 子句以软件方式捕获运行时 I/O 错误。
表 A–1 列出了由 f95 发出的运行时 I/O 消息。
表 A–1 f95 运行时 I/O 消息| 
 错误  | 
 消息  | 
|---|---|
| 
 1000  | 
 格式错误  | 
| 
 1001  | 
 非法单元编号  | 
| 
 1002  | 
 未格式化单元上的格式化 I/O  | 
| 
 1003  | 
 格式化单元上的未格式化 I/O  | 
| 
 1004  | 
 顺序访问单元上的直接存取 I/O  | 
| 
 1005  | 
 直接访问单元上的顺序存取 I/O  | 
| 
 1006  | 
 设备不支持 BACKSPACE  | 
| 
 1007  | 
 偏离记录开始  | 
| 
 1008  | 
 无法对文件执行 stat  | 
| 
 1009  | 
 重复计数后没有 *  | 
| 
 1010  | 
 记录过长  | 
| 
 1011  | 
 截断失败  | 
| 
 1012  | 
 无法理解的列表输入  | 
| 
 1013  | 
 可用空间不足  | 
| 
 1014  | 
 单元未连接  | 
| 
 1015  | 
 读取意外的字符  | 
| 
 1016  | 
 非法逻辑输入字段  | 
| 
 1017  | 
 “新”文件存在  | 
| 
 1018  | 
 无法找到“旧”文件  | 
| 
 1019  | 
 未知系统错误  | 
| 
 1020  | 
 需要查找能力  | 
| 
 1021  | 
 非法参数  | 
| 
 1022  | 
 负重复计数  | 
| 
 1023  | 
 通道或设备非法操作  | 
| 
 1024  | 
 可重入 I/O  | 
| 
 1025  | 
 不兼容的说明符处于打开状态  | 
| 
 1026  | 
 名称列表非法输入  | 
| 
 1027  | 
 FILEOPT 参数中有错误  | 
| 
 1028  | 
 不允许写入  | 
| 
 1029  | 
 不允许读取  | 
| 
 1030  | 
 输入时整数溢出  | 
| 
 1031  | 
 输入时浮点溢出  | 
| 
 1032  | 
 输入时浮点下溢  | 
| 
 1051  | 
 缺省的输入单元已关闭  | 
| 
 1052  | 
 缺省的输出单元已关闭  | 
| 
 1053  | 
 来自未连接单元的直接访问 READ  | 
| 
 1054  | 
 来自未连接单元的直接访问 WRITE  | 
| 
 1055  | 
 无联系的内部单元  | 
| 
 1056  | 
 对内部单元的空引用  | 
| 
 1057  | 
 空内部文件  | 
| 
 1058  | 
 未格式化单元上的列表式 I/O  | 
| 
 1059  | 
 未格式化单元上的名称列表 I/O  | 
| 
 1060  | 
 试图在内部文件的结束之后写入  | 
| 
 1061  | 
 无联系的 ADVANCE 说明符  | 
| 
 1062  | 
 ADVANCE 说明符不是 'YES' 或 'NO'  | 
| 
 1063  | 
 前进式输入中存在 EOR 说明符  | 
| 
 1064  | 
 前进式输入中存在 SIZE 说明符  | 
| 
 1065  | 
 记录编号为负数或零  | 
| 
 1066  | 
 记录不在文件中  | 
| 
 1067  | 
 被破坏的格式  | 
| 
 1068  | 
 无联系的输入变量  | 
| 
 1069  | 
 I/O 列表项多于数据编辑描述符  | 
| 
 1070  | 
 在下标三元组中有零跨距  | 
| 
 1071  | 
 在隐含 DO 循环中有零步长  | 
| 
 1072  | 
 负的字段宽度  | 
| 
 1073  | 
 零宽度字段  | 
| 
 1074  | 
 输入时遇到了字符串编辑描述符  | 
| 
 1075  | 
 输入时遇到了霍尔瑞斯编辑描述符  | 
| 
 1076  | 
 在数字串中未发现数字  | 
| 
 1077  | 
 在指数中未发现数字  | 
| 
 1078  | 
 比例因子超出范围  | 
| 
 1079  | 
 数字等于或超出基数  | 
| 
 1080  | 
 在整数字段中有意外的字符  | 
| 
 1081  | 
 在实数字段中有意外的字符  | 
| 
 1082  | 
 在逻辑字段中有意外的字符  | 
| 
 1083  | 
 在整数值中有意外的字符  | 
| 
 1084  | 
 在实数值中有意外的字符  | 
| 
 1085  | 
 在复数值中有意外的字符  | 
| 
 1086  | 
 在逻辑值中有意外的字符  | 
| 
 1087  | 
 在字符值中有意外的字符  | 
| 
 1088  | 
 在 NAMELIST 组名前有意外的字符  | 
| 
 1089  | 
 NAMELIST 组名与程序中的名称不匹配  | 
| 
 1090  | 
 在 NAMELIST 项中有意外的字符  | 
| 
 1091  | 
 在 NAMELIST 项名中有不配对的括号  | 
| 
 1092  | 
 变量不在 NAMELIST 组中  | 
| 
 1093  | 
 NAMELIST 对象名中的下标过多  | 
| 
 1094  | 
 NAMELIST 对象名中的下标不够  | 
| 
 1095  | 
 NAMELIST 对象名中有零跨距  | 
| 
 1096  | 
 NAMELIST 对象名中有空段下标  | 
| 
 1097  | 
 NAMELIST 对象名中的下标超出界限  | 
| 
 1098  | 
 NAMELIST 对象名中有空子串  | 
| 
 1099  | 
 NAMELIST 对象名中的子串超出范围  | 
| 
 1100  | 
 NAMELIST 对象名中有意外的组件名  | 
| 
 1111  | 
 无联系的 ACCESS 说明符  | 
| 
 1112  | 
 无联系的 ACTION 说明符  | 
| 
 1113  | 
 无联系的 BINARY 说明符  | 
| 
 1114  | 
 无联系的 BLANK 说明符  | 
| 
 1115  | 
 无联系的 DELIM 说明符  | 
| 
 1116  | 
 无联系的 DIRECT 说明符  | 
| 
 1117  | 
 无联系的 FILE 说明符  | 
| 
 1118  | 
 无联系的 FMT 说明符  | 
| 
 1119  | 
 无联系的 FORM 说明符  | 
| 
 1120  | 
 无联系的 FORMATTED 说明符  | 
| 
 1121  | 
 无联系的 NAME 说明符  | 
| 
 1122  | 
 无联系的 PAD 说明符  | 
| 
 1123  | 
 无联系的 POSITION 说明符  | 
| 
 1124  | 
 无联系的 READ 说明符  | 
| 
 1125  | 
 无联系的 READWRITE 说明符  | 
| 
 1126  | 
 无联系的 SEQUENTIAL 说明符  | 
| 
 1127  | 
 无联系的 STATUS 说明符  | 
| 
 1128  | 
 无联系的 UNFORMATTED 说明符  | 
| 
 1129  | 
 无联系的 WRITE 说明符  | 
| 
 1130  | 
 零长度的文件名  | 
| 
 1131  | 
 ACCESS 说明符不是 'SEQUENTIAL' 或 'DIRECT'  | 
| 
 1132  | 
 ACTION 说明符不是 'READ'、'WRITE' 或 'READWRITE'  | 
| 
 1133  | 
 BLANK 说明符不是 'ZERO' 或 'NULL'  | 
| 
 1134  | 
 DELIM 说明符不是 'APOSTROPHE'、'QUOTE' 或 'NONE'  | 
| 
 1135  | 
 意外的 FORM 说明符  | 
| 
 1136  | 
 PAD 说明符不是 'YES' 或 'NO'  | 
| 
 1137  | 
 POSITION 说明符不是 'APPEND'、'ASIS' 或 'REWIND'  | 
| 
 1138  | 
 RECL 说明符为零或负数  | 
| 
 1139  | 
 直接访问文件未指定记录长度  | 
| 
 1140  | 
 意外的 STATUS 说明符  | 
| 
 1141  | 
 连接的单元指定了状态且不是 'OLD'  | 
| 
 1142  | 
 STATUS 说明符不是 'KEEP' 或 'DELETE'  | 
| 
 1143  | 
 为临时文件指定了状态 'KEEP'  | 
| 
 1144  | 
 状态值不可能  | 
| 
 1145  | 
 为临时文件指定了文件名  | 
| 
 1146  | 
 正在试图打开正被读取或写入的单元  | 
| 
 1147  | 
 正在试图关闭正被读取或写入的单元  | 
| 
 1148  | 
 正在试图打开目录  | 
| 
 1149  | 
 状态为 'OLD' 且文件为悬空符号链接  | 
| 
 1150  | 
 状态为 'NEW' 且文件为符号链接  | 
| 
 1151  | 
 没有可用的临时文件名  | 
| 
 1152  | 
 缺省单元的说明符 ACCESS='STREAM'  | 
| 
 1153  | 
 对缺省单元的流访问  | 
| 
 1161  | 
 设备不支持 REWIND  | 
| 
 1162  | 
 BACKSPACE 需要读取权限  | 
| 
 1163  | 
 直接访问单元上的 BACKSPACE  | 
| 
 1164  | 
 二进制单元上的 BACKSPACE  | 
| 
 1165  | 
 退格时遇到了文件结束  | 
| 
 1166  | 
 ENDFILE 需要写入权限  | 
| 
 1167  | 
 直接访问单元上的 ENDFILE  | 
| 
 1168  | 
 对顺序或直接访问单元的流访问  | 
| 
 1169  | 
 对未连接单元的流访问  | 
| 
 1170  | 
 对流访问单元的直接访问  | 
| 
 1171  | 
 POS 说明符的值不正确  | 
| 
 1172  | 
 无联系的 ASYNCHRONOUS 说明符  | 
| 
 1173  | 
 无联系的 DECIMAL 说明符  | 
| 
 1174  | 
 无联系的 IOMSG 说明符  | 
| 
 1175  | 
 无联系的 ROUND 说明符  | 
| 
 1176  | 
 无联系的 STREAM 说明符  | 
| 
 1177  | 
 ASYNCHRONOUS 说明符不是 'YES' 或 'NO'  | 
| 
 1178  | 
 ROUND 说明符不是 'UP'、'DOWN'、'ZERO'、'NEAREST'、'COMPATIBLE' 或 'PROCESSOR-DEFINED'  | 
| 
 1179  | 
 DECIMAL 说明符不是 'POINT' 或 'COMMA'  | 
| 
 1180  | 
 流访问单元的 OPEN 语句中不允许 RECL 说明符  | 
| 
 1181  | 
 正在试图分配一个已分配的数组  | 
| 
 1182  | 
 正在对一个无联系的指针解除分配  | 
| 
 1183  | 
 正在对一个未分配的可分配数组解除分配  | 
| 
 1184  | 
 正在通过指针对一个可分配数组解除分配  | 
| 
 1185  | 
 正在对一个未由 ALLOCATE 语句分配的对象解除分配  | 
| 
 1186  | 
 正在对一个对象的一部分解除分配  | 
| 
 1187  | 
 正在解除分配的对象比分配的大  | 
| 
 1191  | 
 未分配的数组被传递给数组内函数  | 
| 
 1192  | 
 非法等级  | 
| 
 1193  | 
 源大小较小  | 
| 
 1194  | 
 数组大小为零  | 
| 
 1195  | 
 形状中有负元素  | 
| 
 1196  | 
 非法种类  | 
| 
 1197  | 
 非整合的数组  | 
| 
 1213  | 
 未连接单元上的异步 I/O  | 
| 
 1214  | 
 同步单元上的异步 I/O  | 
| 
 1215  | 
 数据编辑描述符与 I/O 列表项类型不兼容  | 
| 
 1216  | 
 当前 I/O 列表项与任何数据编辑描述符不匹配  | 
| 
 2001  | 
 无效的常量、结构或组件名  | 
| 
 2002  | 
 未创建句柄  | 
| 
 2003  | 
 字符参数太短  | 
| 
 2004  | 
 数组参数太长或太短  | 
| 
 2005  | 
 文件、记录或目录流结束  | 
| 
 2021  | 
 锁定未初始化 (OpenMP)  | 
| 
 2122  | 
 使用锁定变量时死锁 (OpenMP)  | 
| 
 2123  | 
 未设置锁定 (OpenMP)  |