Oracle Solaris Studio 12.2:Fortran 用户指南

附录 A 运行时错误消息

本附录介绍由 Fortran 运行时 I/O 库和操作系统生成的错误消息。

A.1 操作系统错误消息

操作系统错误消息包括系统调用失败、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

A.2 f95 运行时 I/O 错误消息

f95 I/O 库在运行时检测到错误的时候发出诊断消息。下面是一个使用 f95 编译和运行的示例:


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 列表项与任何数据编辑描述符不匹配

1217

非法 CORR_ACCTION 值

1218

由于启用 I/O 处理程序而发生死循环

1220

所请求的字节数大于目标平台上所支持的字节数

1221

UNION 中的数据无法从不兼容的文件类型读取,也不能写入不兼容的文件类型

2001

无效的常量、结构或组件名

2002

未创建句柄

2003

字符参数太短

2004

数组参数太长或太短

2005

文件、记录或目录流结束

2021

锁定未初始化 (OpenMP)

2022

使用锁定变量时死锁 (OpenMP)

2023

未设置锁定 (OpenMP)