首页 » 技术分享 » Informix 动态服务器错误代码中文详解(二)

Informix 动态服务器错误代码中文详解(二)

 

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1162        并发打开的屏幕表格数目超出了FMP的限制。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1163        FMP版本号与4GL程序不兼容。重新连接4GL程序并且再运行。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1164        在当前的输入语句中,屏幕表格指令部分指定的NEXT FIELD没有被使用。

当前屏幕表格显示字段有NEXT FIELD的说明(在屏幕表格的INSTRUCTION部分中指

定)。然而,指定的下一个显示字段没有在当前的INPUT语句中指明,故游标不能移

到那一个显示字段。

-1165        FMP不允许用这个语句。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1166        FMP 收到一段非法代码。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1167        FMP收到一个未知的屏幕表格名称。

“FMP”是指 INFORMIX-4GL/RF。详见系统安装手册。

-1168        菜单中没有这一命令。

SHOW OPTION,HIDE OPTION或NEXT OPTION 语句不能引用不存在的选项(命令)。

检查选项名的拼写。

-1170        你的终端类型系统不支持。

检查你的TERM环境变量以及TERMCAP或TERMINFO环境变量的设置。如果你需要这方面的

帮助,通知系统管理员。

-1171        FMP遇到一个不被允许的数据类型。

"FMP"意思是指 INFORMIX-4GL/RF。详见你的系统安装手册。

-1176        同样的COMMAND KEY 值在当前菜单的另一处出现。

在指定的MENU语句中,定义了一个在多个COMMAND KEY键表中出现的键值;或该键值既

在COMMAND KEY键表中出现,同时又是一个或几个非隐藏COMMAND

子句的缺省激活键(例如,这个键值也是一个或几个菜单选项字串的首字符)。这种

情况是非法的,因为给定的键敲入后,菜单没办法知道该做哪件事。

因为在得到唯一的字串前,程序将提示用户输入后续字符,所以某个特定的键可以作

为多个COMMAND(没有KEY子句)的缺省激活键。但这在COMMAND KEY中却不

可以,因为只比较一个敲入的键。

如果一个COMMAND当前是隐藏的(使用HIDE OPTION关键字),那么它的激活键被忽

略,从而不会触发这个错误条件。

-1200        对于DECIMAL数据类型,数值太大了。

DECIMAL 数据类型数值的绝对值范围在 10-130 到 10124 之间。精度(有效位数)在

1到32之间变化;但是这个错误的原因不在于数值的长度而是它的量级。

-1201        对于DECIMAL数据类型,值太小了。

DECIMAL 数据类型数值的绝对值范围在 10-130 到 10124 之间。精度(有效位数)在

1到32之间变化;但是这个错误的原因不在于数值的长度而是它的量级。

-1202        试图作除以0的运算。

一个除数不能为0。在一些情况下,出现这个错误是因为除数是一个字符值而没有恰当

地转换为数值。

-1203        用于MATCH的值必须都是CHARACTER类型。

MATCHES 关系仅能应用于字符数据;它的操作项必须是CHAR或VARCHAR类型的字段或变

量,或文字字符串。如果你需要进行正规模式与一个数字值的匹配,那么你可以在4GL

中通过把数字值赋值给一个CHAR变量从而进行比较。

-1204        日期中的无效年份。

DATE值或文字中的年份必须由二或四位数字给出;即从 00 到 99 或 0001到 9999。数

0000 和其它数字值是都不被接受的。

-1205        日期中的无效月份。

DATE值或文字中的月份必须是 1 到 12之 间的一位或二位数字。

-1206        日期中的无效日值。

DATE值或文字中的日值必须是从 1 到 28,30或31之间(取决于所给的月份)的,并且

以一位或两位数的形式给出。

-1207        被转换值不能放入分配的空间。

一个非字符值在转换成字符串后过长以致不能放进提供的缓冲区。若转换是自动的,

修改程序以提供更大的主机变量来接受串。若是显式调用转换函数,传递更大的缓冲

区。

-1208        没有从非字符值到字符值的转换。

如果你在用版本4.0以前的数据库服务器,在 INSERT 和UPDATE等SQL语句中,没有从

数值到字符的自动转换。确认指定给每一字段的值符合该字段的数据类型。若使用版

本4.0或更高的数据库服务器,不会出现此信息。

-1209        没有定界符,日期必须恰好包含 6 或 8 个数字。

当一个文字日期值被用数值形式输入,而不是包含在引号中作为字符串时,必须准确

地用 6 位数字(代表mmddyy)或 8 位数字(代表mmddyyyy)输入。由于没有标点,任何

含其它数量数字的日期是二义的;它不能被确凿地分成月,日,年。

-1210        日期不能被转换为  月/日/年  格式。

DATE类型和INTEGER类型是兼容的,但不是所有整数都是有效的日期。当试图将数值小

于 -693,594 或大于 2,958,464的日期转换为字符时,将产生此错误。超出此范围的

数值不表示日期。

-1211        内存不足。

4GL不能分配一块小的,临时的内存以处理一个表达式。尽量简化程序来释放足够多的

内存,从而避免此错误。

-1212        数据转换格式必须包含月,日,年元件。

当一数值在内部二进制格式和显示或输入格式间被转换时,转换由模式指引。当转换

自动进行时,模式来自DBDATE环境变量。当转换是通过显式调用rfmtdate(),

rdefmtdate(),或USING函数进行时,模式串作为参数被传递。在任何情况中,模式串(

信息的"格式")必须包括指示日期的三部分的字母:2或3个字母d; 2或3个字母m;2或4个

字母y。

-1213        字符到数值的转换失败。

一个字符被转换为数值形式来存储进数值字段或变量中。然而,字符串不能被解释为

数值:它包含了除空格,数字,符号,小数点,字母e之外的字符; 或有顺序错误,因

此不能被解释。

如果你使用NLS,那么十进制字符或千分符可能在本地环境下出错。

-1214        值过大,不能放进一个SMALLINT。

SMALLINT数据类型能接受绝对值从 0 到 32,767 (±215-1)的数值。若要存储超过此

范围的数,字段或变量必须重定义为INTEGER或DECIMAL类型。(-32,767是16

位的值,但不被接受;在4GL中,它被用来指示一个null值。)

-1215        值过大,不能放进一个INTEGER。

INTEGER数据类型能接受绝对值从 0 到 2,147,483,647 (±231-1)的数值。若要存储

超过此范围的数,字段或变量必须重定义为DECIMAL类型。(-2,147,483,648

是32位的值,但不被接受;在4GL中,它被用来指示一个null值。)

-1216        不合法的指数。

一个数值文字的指数不能超越 32,767。事实上,可供使用的数据类型中,都不能接纳

这么大的指数的;然而,在检查数值的目的之前,指数本身触发了此信息。检查语句是

否遗漏或错放了标点,那将导致两个数被连在一起。

-1217        格式串过大。

被用来格式化一个日期(或是DBDATE环境变量,或是传递到rfmtdate()或USING功能的

模式)的模式串过长。限制是80字节。

-1218        串到日期转换错误。

函数 rstrdate() 的输入未正确表示一个日期:或者在应是数字处有非数字,或有非期

望的定界符,或者数值过大或不一致。

-1219        来自数据库的数值对COBOL数据项来说过大。

在当前的任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境并与

Informix技术支持部门联系。

-1220        来自数据库的数值对COBOL数据项来说过小。

在当前的任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境并与

Informix技术支持部门联系。

-1221        不能转换null数据类型。

在当前的任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境并与
Informix技术支持部门联系。

-1222        值不能用SMALLFLOAT表达。

SMALLFLOAT数据类型能接受一定指数范围内的数值。最大和最小指数值依主机操作系
统不同而不同(取值范围与主机系统中 C 编译程序支持的 float 值范围一样)。在当
前语句中,一常数数值被转换存储进FLOAT变量或字段中,但指数过大或过小。

-1223        值不能用FLOAT表达。

FLOAT数据类型能接受一定指数范围的数值。最大和最小指数值依主机操作系统不同
而不同(取值范围与主机系统中 C 编译程序支持的 double 值范围一样)。在当前语
句中,一常数数值被转换存储到FLOAT变量或字段中,但指数过大或过小。

-1224        非法的十进制数。

在当前的任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境与
Informix技术支持部门联系。

-1225        字段不接受NULL值。

此语句试图存储null值到已被定义为不允许null的字段。检查表的定义,修改语句,
使它提供值给所有需要的字段。

-1226        十进制或money值超出了最大精度。

4GL试图转换一个字符格式的数值为DECIMAL或MONEY变量。然而,此数值小数点左边的
数字多于变量说明允许的位数。修改程序,分配被转换数值给具有更高精度的变量。

-1227        没找到信息文件。

4GL找不到一信息文本文件。此文件有.iem后缀且存放在产品目录$INFORMIXDIR/msg
中。重新安装这些文件。若你已修改了用户信息文件4glusr.msg,确认它的编译后的
版本已被放在当前目录下。

-1228        在信息文件中没有找到信息号。

4GL不能在与产品一起安装的信息文件中找到相应的信息号。重新安装所有.iem
类型文件。若你已修改文件4glusr.msg的内容,检查你所有可能的删除,并且重新编
译此文件。

-1229        不兼容的信息文件。

4GL试图在信息文件中查找一信息文本,文件中有和产品的当前版本不匹配的内容。可
能文件是损坏的;可能找到的是以前的版本信息文件。文件有后缀.iem且存放在
INFORMIXDIR环境变量指定的路径的 etc 子目录中。重新安装这些文件。如果你已修
改用户信息文件4glusr.msg,一定要用当前版本的mkmessage 工具重新编译它。

-1230        错误的信息文件名格式。

提供给信息文件的文件名是非法的,此信息文件要用来象本书这样显示错误信息,故
它无法被打开。检查DBLANG环境变量的值,如果它被指定了的话。

-1231        不能在信息文件中查找。

应用程序试图在一信息文件中查找一信息文本,当试图在文件中定位时收到一错误代
码。这说明文件本身有问题;可能文件已被损坏或截断。重新安装所有的.iem
类型文件。如果你已修改了用户信息文件4glusr.msg,要重新编译它。

-1232        信息缓冲区太小。

4GL在从一编译过的信息文件中读取信息文本,但不能调整缓冲区大小来容纳完整的信
息。这可能说明数据空间的危急短缺,更可能是表明信息文件被毁或者非法。重新安
装所有.iem类型的文件。如果你已修改了用户信息文件4glusr.msg,你需要重新编译
它。

-1233        无效的时,分,秒。

在当前任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境与
Informix技术支持部门联系。

-1234        函数只可用于datetime数据类型。

在当前任何产品中,此信息不被采用。若此错误再次发生,请记下所有环境与
Informix技术支持部门联系。

-1235        字符主机变量相对数据太短。

在一个 ESQL/C 程序中,程序试图取得一个字段值放进一个不够大的主机变量中。可
用DESCRIBE命令得到字段值的大小。

如果这个错误出现在4GL程序中,请记下所有环境后与Informix技术支持部门联系。

-1236        错误的日期纪元

输入串中给定的纪元名或纪元偏移的是非法的或没有以要求的格式输入。检查输入串
中的纪元名和偏移是否合法,次序是否适当。检查输入串格式对于DBTIME型值,
DBDATE型值或传递到SQL API函数的格式化串是否合适。

-1237        错误的纪元名

日期格式要求一个纪元名,但在输入串中却未找到与GLS局部环境设置中的纪元名
相对应的名字。检查是否使用了正确的局部环境设置以及输入了正确的纪元名。

-1238        错误的纪元初始化

这是一个内部错误,请通知Informix技术支持部门。

-1239        纪元年号溢出

给出的纪元偏移不在纪元所指定的范围。检查纪元偏移是否在纪元指定的合法范围
中。

-1250        不能建立管道。

应用程序使用操作系统的管道功能初始化它与数据库服务器的通讯时,操作系统返回
了非期望的错误代码。查阅操作系统错误信息可以得到更多的细节。

-1251        不能建立共享内存。semget失败。

在服务器用共享内存进行通讯的版本中,应用程序在初始化与服务器的通讯时,调用
操作系统函数semget发生了非期望的错误。查阅操作系统错误信息可以得到更多的细
节。请向安装Informix 共享内存产品的人咨询。

-1252        不能建立共享内存。shmget失败。

在使用共享内存进行通讯的服务器的版本中,应用程序在初始化与服务器的通讯时,
调用操作系统函数shmget发生了非期望的错误。查阅操作系统错误信息可以得到更多
的细节。请向安装Informix 共享内存产品的人咨询。

-1254        不能与远程主机连接。

程序试图打开一个由另一个系统中的数据库服务器管理的数据库,但不能打开与另一
个系统的网络连接。检查DATABASE或CREATE DATABASE语句中指定的节点名。如果那是
你想要的,寻找来自网络元件或操作系统的错误信息。与另一系统的操作者联系,验
证它是活动的且接受网络连接。

-1257        操作系统不能为后端产生分支进程。

"后端"是指数据库服务器。这是一个内部错误。寻找操作系统信息将给出更多信息。
在DOS系统中,你可能是内存不足;退回到操作系统命令行,并再次提交你的程序。若
验证了这不是系统极限的后果或本地问题,请记下所有环境并与Informix技术支持部
门联系。

-1258        不能连上用来与后端通信的共享内存。

"后端"是指数据库服务器。这是一个内部错误。寻找操作系统信息将给出更多信息。
若验证了这不是系统极限的后果或本地问题,请记下所有环境并与Informix
技术支持部门联系。

-1260        在指定的类型间转换是不可能的。

系统将尝试任何有意义的数据转换。然而,有一些转换是不支持的,如INTERVAL
到DATE,DATETIME到MONEY。你可能涉及了错误的变量或字段。确认你已指定了你所要
的数据类型,且数据值的文字的格式正确。

-1261        datetime或INTERVAL的第一个显示字段中数字太多。

一个DATETIME文字的第一个显示字段必须包含1或2个数字(如果它不是YEAR),或者2或
4个数字(如果它是YEAR)。一个INTERVAL文字的第一个显示字段代表单元的个数,且最
多可有9位数字,这依赖它的限定符中指定的精度。请检查此语句中的DATETIME和
INTERVAL文字并且改正。

-1262        非数值字符出现在datetime或INTERVAL中。

DATETIME或INTERVAL文字的格式是很严格的。只能包含十进制数字和允许的分界符:在
年,月,日间的连字符;在日和时间的空格;在时,分,秒间的冒号,和在秒和分数间
的小数点。任何其它字符,或这些字符的次序错误,都被检测为错误。

-1263        datetime或INTERVAL中的显示字段超出了范围或是非法的。

检查此语句中的DATETIME和INTERVAL文字;至少其中一个包含了至少一个非法的显示
字段。在一个DATETIME文字中,年可能是零;月可能不在1-12内;日可能不在1-31
内或与月冲突;小时可能不在0-23内;分或秒可能不在0-59内;或相对指定的精度,分数
的数字太多。

在一个INTERVAL文字中,除了第一个显示字段是一个计数且可有限定符指定的个数的
数字之外,约束是同样的。

-1264        在datetime或INTERVAL尾部的额外字符。

除了空格,DATETIME或INTERVAL文字值之后不能有任何字符。检查此语句是否有
遗漏或非法的标点。

-1265        datetime或INTERVAL运算溢出。

DATETIME和INTERVAL值在内部都存储为DECIMAL值。在此语句中,一个使用DATETIME
或INTERVAL值的算术运算导致了溢出。这是不应发生的。检查为INTERVAL值指定的精
度。如果你想输入的INTERVAL值超过了显示字段允许的数字数,你必须在定义中明确
标识有效数字位数。如果错误重复发生,请记下所有环境并与Informix技术支持部门
联系。

-1266        INTERVAL或datetime对运算不兼容。

有些DATETIME,INTERVAL和数值的算术组合是无意义和不允许的。请检查语句中的数
学表达式。可能其中之一错误地使用了DATETIME或INTERVAL字段或变量。如果没有,
查看你的SQL参考资料中这些数据类型的正确用法。

-1267        一个datetime的计算结果越界。

在此语句中,一个DATETIME计算产生了不能被存储的值。例如,如果一个很大的
INTERVAL加到DATETIME上,就会发生这种情况。请检查语句中的表达式,看是否可以
改变运算顺序来避免溢出。

-1268        无效的datetime或INTERVAL限定符。

此语句包含了一个不可接受的DATETIME或INTERVAL限定符。这些限定符只可是YEAR,
MONTH,DAY,HOUR,MINUTE,SECOND,FRACTION和TO。FRACTION后的圆括号中可以是
一个1到5之间的数。检查语句中遗漏的标点和错放的词。一个常见的错误是多加了
个s,如MINUTES,这是非法的。

-1269        定位器转换错误。

此信息的产生是因为一个要求定位器参数(BYTE或TEXT值的引用)的函数接收的不是一
个有效的定位器(如一个NULL参数)。检查程序逻辑,确认参数是正确的。如果错误再
次发生,请记下所有环境并与Informix技术支持部门联系。

-1270        INTERVAL文字值不能有嵌入的负号。

你可以在一个INTERVAL文字和其它值之间使用负号作为算术运算符,或用负号作为一
个INTERVAL文字的前缀来说明它是负的量。然而你不能在文字之中嵌入负号。如果你
没有这样作,检查语句是否遗漏或错放标点。

-1271        在datetime或INTERVAL分数中遗漏了小数点。

当DATETIME或者INTERVAL文字值的限定符中包含FRACTION一词时,此文字值应该有一
个小数点。此语句中有这样一个文字值但缺少小数点。检查文字的限定符并寻找遗漏
或错放的标点。

-1272        没指定输入缓冲区。

你没有为此函数指定一个输入串,所以转换不能进行。设置输入串参数,再调用函
数。(此函数可能要求用DBTIME环境变量定义格式指令。)

-1273        输出缓冲区为NULL或太小不能保持结果。

当函数被调用并且输出缓冲区的地址空间为null或小于格式串长度时,发生此错误。
重定义地址大小并执行函数。(此函数可能要求用DBTIME环境变量定义格式指令。)

-1274        没指定输出缓冲区。

当输出缓冲区的长度为零或缓冲区指针为null时,发生此错误。版本5.01之后的数据
库服务器不采用此错误信息。

-1275        在DATETIME或INTERVAL格式串中显示字段的宽度或精度无效。

在DATETIME或INTERVAL格式说明中的显示字段的宽度或精度必须是有意义的。显示字
段宽度必须是一个十进制数,带前导零或负号(-)。如果有精度说明,也必须是十进制
数,且用点(.)与显示字段的宽度说明分开。

-1276        格式转换字符不被支持。

格式串中的格式转换字符不是有效的。对照你的嵌入语言的产品手册中关于DATETIME
和INTERVAL格式转换函数的格式转换指令表检查串。可以参看 "Informix SQL指南:参
考手册" 第四章中关于DBTIME环境变量的详述。

-1277        输入与格式说明不匹配。

确认包含DATETIME或INTERVAL值的ASCII串与格式串一致。例如,在DATETIME或
INTERVAL  ASCII串中的一个百分号字符(),在格式串中必须有一个匹配序列"%%"。可
以参看 "Informix SQL指南:参考手册" 第四章中关于DBTIME环境变量的详述。

-1278        无效的转义顺序。

检查语句的LIKE或MATCHES子句中指定的模式匹配串。在ANSI数据库中,可以有效转义
的字符只有: LIKE子句的%,_和转义字符,MATHES子句的*,?,[,]和转义字符。

-1279        值超过了字符串字段的长度

这条信息仅出现在ANSI数据库中。试图将一个字符串主变量插入到一个CHAR,NCHAR,
VARCHAR,或NVARCHAR字段中,但字符串太长了。

-1280        libgen.so与Library API不兼容。

和你的客户应用程序一起编译的libgen.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libgen.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1281        libos.so与Library API不兼容。

和你的客户应用程序一起编译的libos.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libos.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1282        libsql.so与Library API不兼容。

和你的客户应用程序一起编译的libsql.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libsql.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1283        libgls.so与Library API不兼容。

和你的客户应用程序一起编译的libgls.so共享库与在$INFORMIXDIR/lib目录中的版本
不兼容。用新的libgls.so共享库的路径设定INFORMIXDIR,然后重新编译你的应用程
序。

-1301        这个值不在有效的可能范围之中。

本字段可接受的值的列表或范围已被建立(由屏幕表格说明中的INCLUDE属性)。你必须
输入一个在可接受范围之内的值。

-1302        两次输入是不同的--请再试一次。

为防止敲键错误,此显示字段已被指定VERIFY(在屏幕表格说明文件中)。此显示字段
的值必须被同样地输入两次。仔细地重输数据。你也可以用中断键取消屏幕表格输入
(通常是CTRL-C,但要看程序作者提供的操作说明)。

-1303        由于存在图片你不能使用这个编辑特性。

此显示字段被(在屏幕表格说明文件中的)PICTURE属性指定了格式。当你编辑这样的显
示字段时,特定的编辑键(例如,CTRL-A,CTRL-D和CTRL-X)是不允许用的。只能用输
入可打印字符和退格输入值。

-1304        显示字段中的错误。

你已经在显示字段中输入一个值,但不能被存储在接收它的程序变量中。例如,你输
入一个十进制数,而应用程序只提供了整型变量;或你可能输入了一个超出应用程序
期望长度的字符串。记下所有环境并且和写应用程序的人讨论这个问题。

-1305        这个显示字段要求一个输入值。

游标在已被指定REQUIRED的屏幕表格显示字段中。在游标能移动到另一显示字段之前
你必须输入值。然而,你可以通过敲入任何可打印字符再退格消去的方法来输入null
值。代替地,你可以用中断键取消屏幕表格输入(通常是CTRL-C,但要看程序作者提供
的操作说明)。

-1306        为了校验请再敲一遍。

游标在已被指定VERIFY的屏幕表格显示字段中。在游标能移动到另一显示字段之前,
你必须输入同样的值两次。这是为了确保在数据输入中没有敲键错误。你也可以用中
断键取消屏幕表格输入(通常是CTRL-C,但要看程序作者提供的操作说明)。

-1307        不能插入另一行,输入数组已满。

你正在输入数据到一个记录数组,此数组在程序中用程序变量数组表示。这个数组现
在是满的;没有地方来存储另一个记录。按ACCEPT键(通常是ESCAPE,但要看程序
作者提供的操作说明)来处理你已输入的记录。

-1308        不能删除行 - 此行没有数据。

你在一空行上按下删除行功能健(通常是F2,但要看程序作者提供的操作说明),没有
任何东西被删除。

-1309        在你进行的方向上没有更多的行。

你在试图在范围外滚动记录数组,或者是在数组顶端向上滚,或者是在数组底端向下
滚。进一步尝试将会是同样的结果,如果那使你高兴就继续吧。

-1310        没有执行一个RETURN语句而结束了当前函数。

当前函数不是返回void类型的,但没有执行RETURN语句就准备退出。

-1312        FORMS语句错误号<号码>。

这是有关于屏幕表格的问题。在本文档中查找错误号。结合当前的语句对它进行分
析。

-1313        SQL语句错误号<号码>。

当前语句访问数据库服务器时后者侦测到错误并且返回一个错误代码号。在本文档中
查找号码。也可寻找其它错误信息。

-1314        程序在语句<行号>行处停止。

在程序的指示点侦测到错误。寻找其它给出本错误细节的错误信息。用本信息中的号
可在程序源文件中定位错误。

-1315        4GL 运行时错误号<号码>。

因为侦测到错误,程序已经停止。在本文档中查找错误代码号。也寻找其它错误信
息,以得到更多细节。

-1316        ISAM错误号<号码>。

当前的语句访问数据库服务器,数据库服务器侦测到了错误(可能显示错误 -1313
报告)。这条信息包含关于错误发生的附加信息。可在本文档中查找号码。

-1317        因为在调用程序和它的函数参数之间或变量和它的赋值表达式之间的
不兼容,发生了数值转换错误。

只要不丢失信息,4GL在两种数据类型间自动转换。在当前的语句里,不能这样做。
首先查看函数调用,检查作为参数传递的值。确认传递的值和参数在函数体内定义的
类型相符。(一个错误的实例是调用函数fun("X"),而函数的参数定义为整数。)
如果是LET语句,确认在右边计算出的值能被左边命名的变量容纳。

-1318        调用函数和被调用函数的参数个数不匹配。

在调用函数时给的参数太多或太少。调用可能在与被调用的函数不同的源模块中。
检查函数的定义和它被调用的所有点,确认使用参数个数与定义的相同。

-1319        4GL程序已经超出了运行时可用的数据空间内存。

你将不得不减少程序要求的数据空间。检查大字符变量的大小和数组的维数。可能需
要将程序分割成可以分别装入的几个程序。

-1320        函数没有返回调用函数期望的数值的数目。

如果函数作为表达式的一部分被调用,那么它返回多于一个的数值。如果使用CALL语
句调用它,那么RETURN语句(函数中)后表达式的数目不同于RETURNING从句(CALL
语句中)中列出的变量的数目。

确认调用了正确的函数。检查该函数的逻辑,特别是它的返回语句,确认总是返回期
望数目的数值。

-1321        VALIDATE命令的执行结果出现确认错误。

VALIDATE语句对照存储于syscolval表中的规则测试当前变量的值。检测出失配情况。
通常程序使用WHENEVER语句来获取这个错误,显示或修正错误的值。检查VALIDATE语
句,找出正在测试的变量,并找出为什么它们是错误的。

-1322        不能打开报表输出文件。

不能打开REPORT TO语句指定的文件。确认你的帐户具有对这样文件的写权限,磁盘未
满,并且你没有超过某些关于可打开文件数目的极限。

-1323        不能打开报表输出管道。

REPORT TO PIPE语句指定的管道不能开始。确认其中命名的所有程序都存在,并在你
的执行路径中是可访问的。还要查看操作系统信息,可能给出更具体的错误信息。

-1324        报表输出文件无法写入。

REPORT TO语句指定的文件已经打开,但写入时出现错误。可能磁盘已满。查看操作系
统信息,可能会给出更多的细节。

-1326        数组变量的引用超过指定的维数范围。

数组下标表达式产生的数值或小于1或大于数组元素的个数。检查直到这条语句的逻
辑,判定错误是如何产生的。

-1327        无法准备插入语句以将数据行插入报表使用的临时表。

在报表函数中,4GL生成SQL语句把数据行保存在临时表中。语句的动态准备(参考
PREPARE语句的参考资料)发生错误。最可能的原因是程序被编译后保持原样,直到运
行时,数据库表格还没有定义;或者数据库已改变或者程序选择了与当前编译不同的
数据库。另外的可能性是数据库管理员已回收你对报表中使用的一个或多个表的
SELECT权限。查看其它错误信息,可能给出更多细节。

-1328        在选定的数据库中,不能创建报表所需的临时表。用户在所定的数据库中必
须具有创建表的权限。

在报表定义中,4GL生成SQL语句将数据行保存在临时表中。但无法创建临时表。最可
能的原因是数据库中没有余下磁盘空间。其它通常的原因是当前数据库存在与临时表
同名的表,报表定义试图创建该临时表作为排序表。排序表被命名为"t_<报表名>"。
(例如,报表名是"order_rpt",其排序表将命名为"t_order_rpt")因此,建议用户
定义表时避开以"t_"打头的名字。与一些数据库服务器有关的-1328错误另外可能的
原因是,你超过打开文件的操作系统极限。查看其它错误信息,可能会获得更多的
细节。

-1329        无法创建报表所需的临时数据库表的数据库索引。

在报表定义中,4GL生成SQL语句把数据行保存在临时表中。但无法创建该临时表的索
引。最可能的原因是在数据库中存在同名的索引(排序索引被命名为"i_<报表名>"例
如"i_order_rpt")。另一通常的原因是在文件系统或dbspace中没有磁盘空间可用。
另外,与某些数据库服务器有关的可能性是你已超过打开文件的操作系统极限。查看
其它错误信息,可能获得更多的细节信息。

-1330        往临时报表中插入一行失败。

在报表定义时,4GL产生往临时报表中存入行的SQL语句。然而,当这些行被插入时,
有错误发生。有可能的原因是数据库磁盘空间不够。查阅其它的错误信息,可以得到
更多的细节。

-1331        无法从报表临时表中获取数据行。

在报表定义中,4GL生成SQL语句从临时表中取数据行。已成功地创建了表,但从中检
索数据行时出错。唯一可能的原因是硬件失败,或数据库服务器出错。查看操作系统
信息,以获取更多细节。

-1332        字符变量引用的下标超出范围。

在当前语句中,用于提取字符值子串的变量包含小于1的数,或大于变量大小的数,或
者第一个子串表达式大于第二个。检查直到这条语句的程序逻辑,找出错误的原因。

-1333        串的长度大于512,不能从函数调用中被返回。

当前RETURN语句包含一个表达式,其结果是长于512个字符的字符串。它不被支持。检
查函数的逻辑,并修改它,使之不返回如此长的字符串值。更长字符串可赋予全局变
量。

-1334        4GL程序不能为临时串的处理分配更多的空间。

在一个比4.1版高的环境上编译的程序执行时,不应看到这条出错信息;然而4GL
的4.1版或更早的版本上编译的程序必须处理这个问题。

当求字符串表达式的值时会用到“临时”串的存贮。临时串的存贮分配是从一个固定
大小的缓冲区中通过一个简单算法实现的。在最后一个未解决的字符串表达式完成
前,缓冲区中的空间是不能被利用的。因为大多数表达式结束很快,所以该串缓冲区
通常用起来快,清空也快。

然而当表达式涉及到函数调用时,表达式的求值在函数调用期间搁置起来。在函数调
用返回前,缓冲区不能清空。例如,在下面的语句中:        LET charvar=numvar
USING '###', myfunc()
临时空间用于文字串'###'和USING操作符的结果。这些被搁置的值在myfunc()函数调
用期间一直保留在串缓冲区中。如果在myfunc()函数和它的子函数求值期间用到的临
时串值总量超过了缓冲区的大小,就会发生这里的错误。

通过将函数调用分配在几个语句中,通常是可以避免上述错误的,如下面的例子:   
         LET charvar=myfunc()
            LET charvar=numvar USING '###', charvar clipped
在调用第一个语句的函数myfunc()期间,串缓冲区是空闲的,当第二个语句执行完
后,串缓冲区又是空闲的。

CASE语句中WHEN子语句的缩减形式也会产生被搁置的字符表达式。下面例子中,在整
个函数func_A()和func_B()调用期间,临时串存贮空间将不予使用。
CASE      charvar
                WHEN  'A' CALL   func_A()
                WHEN  'B' CALL   func_B()
                       ...

WHEN子句的完整形式不会产生上述问题,因为字符表达式的求值在函数调用开始时就
结束了。                CASE
                WHEN   charvar='A'   CALL func_A()
                WHEN   charvar='B'   CALL func_B()

当WORDWRAP子句出现在PRINT语句中时,INFORMIX-4GL的4.1版中的某些版本中的一个
熟悉的错误会引起上述类型的假错误。如果这个错误重复发生,请注意一下所有的环
境并和Informix 技术支持部联系。

-1335        在报表启动之前已进行输出或完成。

程序在执行START REPORT语句之前已执行OUTPUTTO REPORT或FINISH REPORT
语句。检查直到该语句的程序逻辑,找出这个错误的原因。

-1336        pcode文件中的模块<名称>包含pcode版本<编译版本号>。这个程序可执行
pcode版本—运行版本。带-V选项运行pcode编译程序来检查它产生的pcode版本,然后
重新编译你程序的所有模块并重新运行它。

程序runner或定制runner必须在与程序编译器同样的软件版本上。首先通过带-V
选项执行每一个程序来确定它们在同一级别。该选项使它们显示它们的版本号。当确
认使用的是兼容的软件,就重新编译你的程序。

-1337        变量<名字>已重新定义为不同的类型或长度。

所示的变量在GLOBALS节中的两个或多个模块内被定义,但在这些模块中的定义与在其
它模块中的不同。可能模块分别编译,在此期间某些公共的GLOBALS文件发生变化。也
可能变量在某些模块中被说明为模块变量,这些模块不包含GLOBALS文件。

-1338        函数<名字>没有在程序的任何模块中定义。

程序中至少有一个模块调用命名的函数,但在所有模块中都没有定义。如果你正在使
用程序员环境,可能某个模块没有定义为一个多模块程序的部分。如果你在命令行状
态工作,当程序文件集中形成.4gi文件时,可能忽略了一个或多个已编译的.4go模
块。

-1339        描述符表中没有全局变量名。

这是runner的内部问题。如果错误再出现,请记录所有现场信息,并与Informix
技术支持部门联系。

-1340        没有启动出错日志。

程序调用errorlog( )函数时,没有首先调用startlog( )函数。检查程序的逻辑,找
出这个错误的原因。

-1343        没有指定帮助文件。

INPUT、PROMPT或MENU语句包含带有帮助编号的HELP从句;但没有建立信息文件。该信
息文件由OPTIONS HELP FILE语句建立,但没有执行这样的语句。检查程序的逻辑并修
改它,在需要帮助以前,执行带有HELP FILE从句的OPTIONS语句。

-1344        -INFORMIX-4GL简易运行版.

任何当前的informix产品不显示该信息。

-1345        未定义的操作码.

程序的pcode文件(它的文件后缀是.4go)已经损坏。重新编译整个程序,然后再运行
它。如果出现同样的错误,确认你在同一版本级上运行pcode编译程序和pcode运行程
序。如果错误再出现,请记录所有现场信息,并与Informix技术支持部门联系。

-1346        数值对DECIMAL数据类型来说太大。

DECIMAL数据类型允许绝对值是从10-130到10124。精度(有效数字个数)的变化从1到
32;该错误的原因不是数值的长度而是数值的数量级。

-1347        数值对DECIMAL数据类型来说太小。

DECIMAL数据类型允许绝对值是从10-130到10124。精度(有效数字个数)的变化从1到
32;该错误的原因不是数值的长度而是数值的数量级。

-1348        试图除以零。

分母不能是零。当分母是字符值而且它没有被正确地转换成数值时,也会引起这种错
误。

-1349        字符到数值的转换出错。

为了存储于数值字段或变量,字符值被转换成数值格式。但该字符串无法按数值解
释:它包含除了空格、数字、符号、十进制数或字母e以外的其它字符;或者各部分
的次序不对因此该数值不能被解码。

-1350        不能在指定的类型之间进行转换。

系统试图进行任何有意义的数据转换。但有些不被支持,如INTERVAL到DATE,或
DATETIME到MONEY的转换。你可能引用了错误的变量或字段。确认指定的数据类型无
错,并且数据值的文字表达式格式正确。

-1351        函数(或报表)名已被定义。函数和报表不能有同样的名称。

每个函数(或报表,它与函数类似)在程序内必须拥有唯一的名字。必须修改其中之
一。

-1352        名字不能既作为函数(或报表)名又作为变量名。

所示的名称至少按两种方式定义。名称无论在全局或模块级(函数名、报表名和全局
或模块变量的名称)必须唯一。定位该名称的所有定义,并除了其中之一全部修改它
们。

-1353        使用'!'编辑TEXT和BYTE显示字段。

内部屏幕表格编辑器不能处理TEXT或BYTE字段。但是可以指定一个外部程序,用它显
示或编辑TEXT或BYTE字段的值。为任意的显示字段指定调用外部程序,须把游标放在
该显示字段上,并键入惊叹号(!)字符。如果已定义外部程序(使用屏幕表格说明的
PROGRAM属性),就会启动该程序。如果是TEXT显示字段,且屏幕表格中没有指定
外部程序,则DBEDIT环境变量命名的程序就会启动。

-1355        不能建立临时文件。

已经使用LOCATE语句在临时文件中定位TEXT或BYTE变量。当前语句给该变量赋值,所
以4GL试图建立临时文件,但发生错误。可能磁盘空间不够,或你的帐户没有建立临时
文件的权限。4GL在DBTEMP环境变量中指定的目录上建立临时文件。查看操作系统错误
信息,可能会得到更多的信息。检查DBTEMP的值。从在5.01版本开始,DBTEMP环境变
量被INFORMIX-SE数据库服务器使用,而不是被INFORMIX-
OnLine Dynamic Server使用。

-1356        在临时文件<文件名>中出现写入错误。

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误。很可能磁盘已满,
或硬件失败。查看操作系统信息,以获取更多信息。

-1357        在临时文件<文件名>中出现读取错误。

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误。很可能磁盘已满,
或硬件失败。查看操作系统信息,以获取更多信息。

-1358        blob文件<文件名>出现写入错误。

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误。很可能磁盘已满,
或硬件失败。查看操作系统信息,以获取更多信息。

-1359        blob文件文件名出现读取错误。

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误。很可能磁盘已满,
或硬件失败。查看操作系统信息,以获取更多信息。

-1360        没有这个显示字段的PROGRAM=从句。

当游标位于TEXT或BYTE显示字段时,你按下了惊叹号键(!),但没有外部程序指定到该
显示字段(使用屏幕表格说明文件的PROGRAM属性)。如果这是一个TEXT显示字段,可
在启动该程序前通过设置DBEDIT环境变量指定一个文本编辑器。

-1361        非法的blob文件名。不允许存在空名。

已经使用4GL语句LOCATE在文件中定位了BYTE或TEXT变量。但是变量给出的文件名是空
串。由于文件不存在,4GL不能对其进行任何操作。

-1362        4GL执行堆栈违例。

程序试图存取堆栈界限以外的内容。如果错误再出现,请记录所有现场信息,并与
Informix技术支持部门联系。

-1363        出现致命的内部错误—应用程序中止。

程序试图存取属于该应用程序以外的内存。如果错误再出现,请记录所有现场信息,
并与Informix技术支持部门联系。

-1364        错误恢复安装失败—应用程序中止。

运行机制允许应用程序捕获和处理内部错误,但不能完成其动作。返回DOS,重新启动
Windows。

-1365        应用<应用名称>没有找到。

应用启动器fglaunch没有找到要求的应用。

-1366        不能装入应用<应用名称>。

应用起动器fglaunch不能装入要求的应用。DLL没有要求的NewEra入口点,所以一定不
是NewEra DLL。.检查是否NewEra DLL与现存的系统DLL有相同的名字。

-1367        DLL <名称>不是DLL资源—应用程序中止。

应用起动器fglaunch的程序选项,指定DLL <名称>包含资源,但没有找到资源。

-1371        当前屏幕表格中不存在field显示字段名。

在NEXT FIELD语句或pf_nxfield( )函数中已经给出指定的显示字段名,但在当前的屏
幕表格中没有定义。常见错误是弄混了标记名与显示字段名;标记名用于屏幕版面布
置中,并位于ATTRIBUTES节中等号的左部;而显示字段名是位于ATTRIBUTES节中等号
的右部的字段名称。后者用于指示显示字段。

-1372        输入的数太大,不能放入十进制或金额变量。

任何当前的informix产品可能不返回这条信息。如果出现这条信息,可参考-1226
号错误的解释。如果错误重复出现,请记录所有现场信息,并与Informix技术支持部
门联系。

-1373        field显示字段名不在CONSTRUCT/INPUT语句的显示字段列表中。

内部函数get_fldbuf( )或field_touched( )被调用时带有指定的显示字段名。但在
CONSTRUCT或INPUT语句中不需要从该显示字段输入。结果,函数无法返回任何有用
值。检查所有这些函数的使用情况,并与语句开始部分的显示字段列表进行比较。

-1374        SQL字符截断或事务警告。

程序设置了WHENEVER WARING STOP,并且某个警告条件成立。如果涉及的语句是
DATABASE语句,条件是刚打开的数据库使用事务日志。如果是任何其它语句,条件是
数据库的字符值必须被截断来适合它的目标。

-1375        SQL NULL值在聚合或ANSI模式的数据库警告。

程序设置了WHENEVER WARING STOP,并且某个警告条件成立。如果涉及的语句是
DATABASE语句,条件是打开的数据库是符合ANSI标准的。如果是任何其它语句,条件
是在聚合值的计算中,已使用null值。

-1376        SQL -INFORMIX-OnLine或程序变量失配警告。

程序已设置WHENEVER WARING STOP,并且某个警告条件成立。如果涉及的语句是
DATABASE或CREATEDATABASE语句,条件是数据库被-OnLine数据库服务器开本。如果是
任何其它语句,条件是SELECT语句返回的值多于程序变量可包含的数目。

-1377        SQL浮点到十进制的转换警告。

程序设置了WHENEVER WARING STOP,并且某个警告条件成立。该条件是在数据库刚打
开时,数据库服务器将使用DECIMAL数据类型取代FLOAT值。

-1378        SQL是非-ANSI的扩充警告。

虽然当前数据库是符合ANSI标准的,进行的数据库操作不属于ANSI SQL。这只是提示
信息。

-1379        不能直接调用报表函数。请使用OUTPUT TOREPORT语句.

报表函数已经作为CALL语句的结果被输入。但报表函数只能通过START REPORT、
-FINISH REPORT和OUTPUT TO REPORT语句运行。检查程序,寻找象调用普通函数一样
调用报表函数名的位置,并加以修改。如果想使用报表函数的某些代码作为子程序,
应把它放入独立的子程序中,然后从报表函数或其它位置调用。

-1380        只有字元表达式可以CLIPPED

如果你正试图遮除一表达式,你不可以CLIP非字元表达式.

-1381        调试时不能执行其它runner.

一个4GL runner的实例正在运行。如果正在调试,不能通过RUN命令、RUN加速按钮或
直接从windows中调入其它附加的实例。要想调入新的runner实例,首先须退出当前运
行的4GL应用。

-1390        分类 <分类名称>在程序的任何模块中都没有定义。

命名的分类已经被说明和使用,但从未被定义过。分类必须在定义该分类的第一个成
员函数时被定义。

-1391        无效的分类指定,在AS从句中。

NEW或者COPY操作的AS从句指定的分类必须是从状态类继承的。

-1392        不能使用NULL对象。

在p 码运行程序中,试图向下引用一个NULL对象。也许程序已定义对象,然后在使用
!copy()或!derive()创建它之前,试图调用该对象的成员函数。

-1393        已经定义了分类 <分类名称>。

程序试图第二次定义某个分类。

-1394        对内部函数ixRow对象参数是无效的。

ixRow参数应作为UNPACKROW()和PACKROWINTO()内部函数的第一个参数。

-1396        报表PRINT FILE源文件不能按读取方式打开。

在PRINT FILE语句中命名的文件不能被打开。检查文件名。如果不当前目录下,应指
定全路径名。如果指定文件名正确,确认文件存在并且你的帐户对它有读取权限。查
看操作系统错误信息以获得更多的细节。

-1778        对于这条命令,安全子系统不能被初始化。

保证该帐号有足够的权限。

-1779        这条命令只能由 Informix-Admin 组的成员来执行。

用属于 Informix-Admin 组的用户帐号来登录,或者请求
INFORMIX-OnLine Dynamic Server for Windows NT管理员将你的帐号添加到
Informix-Admin 组中,然后重试这个过程。

-1780        OnLine 只能由用户 informix 启动。

必须是 Informix-Admin 组成员才能启动
INFORMIX-OnLine Dynamic Server for Windows NT。
用属于 Informix-Admin 组的用户帐号来登录,
或者请求 INFORMIX-OnLine Dynamic Server for Windows NT
管理员将你的帐号添加到 Informix-Admin 组中。

-1781        OnLine 不能检索该用户帐号的帐号信息。

这个帐号信息丢了、或者无效。运行用户管理程序来检验该帐号的有效性。

-1782        OnLine 不能确认这个用户。

该用户没有适用于运行 INFORMIX-OnLine
Dynamic Server for Windows NT 的系统的有效帐号
或密码。必须在运行 OnLine 的系统上,为
该用户建立用户帐号和密码。

-1783        UnSetup 将进行下列操作:

    *   删除 groupname 组和 username 用户帐号
    *   删除 servicename 服务
    *   从注册表中删除
        分支软件\\branchname\\keyname\\

是否还想删除所有的 Informix 产品文件和目录?
(Y,N,Q)

-1784        OnLine 不能初始化安全子系统。

INFORMIX-OnLine Dynamic Server for Windows NT以用户
informix 帐号运行,这个用户 informix 帐号必须有下列权限:

    *   作为服务登录
    *   建立标记对象
    *   属于操作系统的一部分
    *   属于 Informix-Admin 组

为了检验用户informix 是否具有这些权限,请访问用户管理程序,
并使用“策略/用户权限”对话框。

-1785        pathname\buildsmi.ext

这个信息引用了 buildsmi.bat 的输出。对于 Windows NT,
如果 "Error building sysmaster" 在 online.log 文件中出现,
则看一下文件 %INFORMIXDIR%\etc\buildsmi.out。

-1786        这个命令行选项在控制面板/服务/“启动”对话框中
规定的是 -i。

在控制面板/服务/“启动”对话框中规定的参数为 -i,
它使得 INFORMIX-OnLine Dynamic Server for Windows NT
初始化根 dbspace,而破坏了当前它所包含的所有信息。当
INFORMIX-OnLine Dynamic Server for Windows NT
作为服务运行时,它不提示用户去确认
已经规定的参数。如果一定要初始化根 dbspace,
请将参数规定为 -iy 。

-1787        OnLine 在配置文件中检测到一个失配。
Mirror chunk pathname = pathname, Offset = offset K, Size = size K。

检查大块的实际文件大小,对照 ONCONFIG 文件中
为镜像大块规定的大小。

-1788        OnLine 审计配置文件路径名太长。
它的路径名最多只能包含 maxnum 个字符。

最大字符数,或 maxnum,为 128。

-1789        OnLine不能获得用户username
的帐号信息。

检查用户帐号是否存在,以及它是否有效。

-1790        不能启动 OnLine。

请保证启动 INFORMIX-OnLine
Dynamic Server for Windows NT service 的帐号
是 Informix-Admin 组的成员。

-1791        在初始化共享内存时,OnLine
遇到了致命的错误。

在 %INFORMIXDIR%\online.log 中寻找错误原因。

-1792        OnLine 不能访问 %INFORMIXDIR%\dbssodir 或
%INFORMIXDIR%\aaodir。

检查对于 %INFORMIXDIR%\dbssodir 和 %INFORMIXDIR%\aaodir
前的路径字段的访问。如果 %INFORMIXDIR% 是在网络驱动器上,
请确保 oninit 进程权限没有改变。另外,还要确保在注册表中 AAO 和
DBSSO 组名是有效的。

-1793        OnLine 不能打开大块 chunkname。返回的系统错误值为 errno。

确保这个大块存在,并有正确的访问权限。

-1794        含有根 dbspace 的主要大块 chunkname 是无效的。
它需要重新初始化。

含有根 dbspace 的大块已毁损或超时。如果你备份了
INFORMIX-OnLine Dynamic Server for Windows NT
数据库,可以执行全系统恢复来恢复根 dbspace。
如果没有备份数据库服务器,则需要在启动
INFORMIX-OnLine Dynamic Server for Windows NT 时
用 -iy 参数重新初始化根 dbspace。

警告:用 -iy 参数启动 INFORMIX-OnLine Dynamic
Server for Windows NT,会重新初始化根 dbspace 并
真正毁损数据库服务器中的所有数据。除非再执行
一次全系统恢复,否则不能访问已经存在的
数据库。请不要重新初始化根 dbspace,
除非你肯定想这么做。

-1795        在共享内存中规定的大块数量
num_chunks 太大。

在当前配置状况下最大允许数量为 num_chunks 。
请规定更大的大块大小,并减少大块
的数量。

-1796        OnLine 在注册表子键中检测到与 MIRRORPATH 失配的数据。
对于 MIRRORPATH 检索的数据是路径名。

根 dbspace 没有被镜像。欲添加镜像,使用 onspaces 或 onmonitor。

-1797        对于指定的配置,根 dbspace 不够大。
其实际尺寸为 sizenum,而要求的尺寸为 sizenum。

在指定的磁盘上,根 dbspace 不合适。在指
定的磁盘上释放出所需要的空间量,或者改变
ROOTPATH 配置参数,指定拥有更多可用
空间的磁盘。然后重新启动 OnLine,用 -iy
参数初始化根 dbspace。

警告:用 -iy 参数启动 OnLine,会重新初始化根
dbspace,并完全破坏了 OnLine 的全部数据。除非
后来再做一次全系统恢复,否则将永远不能访问
已存在的数据库。请不要重新初始化根 dbspace,除非
你肯定要这么做。

-1800        无效的事务状态。

在停止连接之前,必须提交或滚回当前事务。

-1801        不支持多重服务器事务。

试图在单个事务中跨越多个连接。如果建立连接时使用WITH CONCURRENT
TRANSACTION从句,就可以当一个事务活动时转换到不同的连接。
该错误信息可以在下列试图转换连接时出现:

    *   如果当前的连接是对于6.0或更高版本的数据库服务器,且建立连接时没有
指定WITH CONCURRENT TRANSACTION从句,并且当前连接中有一个活动的事务。

    *   如果当前连接属5.0版本数据库服务器,且建立连接时没有指定WITH
CONCURRENT TRANSACTION从句,并且当前有一个数据库在此连接上打开。

-1802        连接名在使用。

已有一个具有相同连接名的连接被建立。每个连接必须拥有唯一的连接名。为该连接
改名,重试一遍。

-1803        连接不存在。

在SET CONNECTION或DISCONNECT语句中的连接名不对应于已建立的连接。检查你的程
序,是否进行了连接,如果是,确认该连接没有停止连接。并且检查语句中失败的连
接名的拚写。

-1804        无效的数据库环境。

数据库服务器无法连接到你指定的数据库环境上。服务器无法定位到数据库服务器或
你指定的数据库上。检查你的语句的句法。如指定数据库服务器,必须使用符号@。不
能使用//。

-1805        无效的连接名。

连接名是无效的。连接名必须符合和任何其它标识符一样的命名规则,即最多18
个字符,可包括字符、数字和下划线。并且不能是ANSI保留字。如果连接名用于原始
的CONNECT TO语句,必须在后续连接语句中使用该连接名。确认连接名是有效的标识
符,并且你使用连接名而不是一些其它值。

-1807        没有连接,不是进行停止连接。

企图中止一个当前不存在的连接。检查程序,确认你没有对该连接执行DISCONNECT语
句。

-1808        重新连接server_name服务器i来进行数据库操作。

如果使用CONNECT语句连接数据库服务器,就不能通过-DATABASE语句之一(
DATABASE、STARTDATABASE等)隐含地重新与服务器连接。必须使用SET
CONNECTION语句将连接转到它。

-1809        服务器拒绝该连接。

检查对所指服务器是否具有连接权限。如果同时指定数据库服务器和数据库,也检查
是否对该数据库拥有存取权限。

-1810        停止连接错误。

某连接没有被DISCONNECT ALL语句停止连接。某个连接的数据库服务器可能已经终
止。如果不是这种情况,原因就是软件内部的。如果错误重复出现,请记录所有现场
信息,并与Informix技术支持部门联系。

-1811        在显式连接后不允许隐含连接。

一但使用CONNECT TO语句建立与数据库服务器的显式连接,就不能使用DATABASE
语句之一隐含建立与其它数据库服务器的连接。显式连接之后,必须使用CONNECT TO
语句连接其它数据库服务器。

-1812        内部错误。

如果这个内部错误重复出现,请记录所有现场信息,并与Informix技术支持部门
联系。

-1813        只有当前连接能静止不正确地使用SET CONNETCTION DORMANT语句。

你试图让已经静止的连接进入静止状态。或者你试图让正被其它线索使用的连接
进入静止状态。

-2013        不能打开输出屏幕表格文件<文件名>。

很可能你的帐户不具有所指目录的写入权限;或者磁盘已满。在某些系统中,可能与
打开文件个数的极限有关。查看操作系统信息,以获得更多信息。

-2014        操作系统命令行中的参数个数不对。至少需要一个参数。

如果从命令行运行屏幕表格编译程序,必须指定-d选项或屏幕表格的名字。

-2015        在<行号>行<列号>个字符内,已打开的注释中又出现一个注释起始符。这可
能是由于关闭以前打开的注释失败,它开始在<行号>行<列号>个字符内。

不支持嵌套的注释。检查屏幕表格说明和所有注释,确认每个开大括号有一个对应的
关大括号。

-2016        注释被打开,但没有关闭。最后的注释开始在<行号>行<列号>个字符中。

在报表说明中的适当位置插入注释结束符。

-2017        字符数据值不能正确转换成该显示字段类型。

在显示字段输入的字符值(引用串)与该显示字段的数据类型不同,比如INTEGER。输
入的字符又无法转换成该显示字段的类型。查阅该应用的操作说明。然后重新输入数
据。

-2018        在<行号>行<列号>个字符中出现语法错。在它的环境中,该结构无法解释。

该信息指出源文件中编译程序无法解释的确切位置。实际的错误可能更早,在文件的
前部,也许在几行之前;但不会是在文件的后部。其它的,并且更为具体的错误信息
也应出现。

-2019        整数超过允许大小的最大值。

INTEGER数据类型可接受绝对值范围从0到2,147,483,647(±231-1)的数字。如果要存
储超出此范围的数字,字段或变量必须重定义为DECIMAL数据类型。(数值
-2,147,483,648是32位数值,但不能被接受;在4GL中它用于指示空值。)

-2020        表table-name不能打开。要求操作系统按写入方式打开该表。

你正在使用数据库服务器,它管理表作为普通磁盘文件。当前数据库作为目录,表是
其中的文件。参看操作系统错误信息,会得到更多的信息。定位数据库的目录(或在
当前目录或在环境变量DBPATH命名的路径上)。确认有足够盘空间。在UNIX环境,你
的个人帐户不必有对该目录及表文件的写权限。但对组-id informix它们必须是可写
入的。

-2021        指定了非法的颜色。颜色0到7依次是白色、黄色、紫红色、红色、靛色、绿
色、蓝色和黑色。

无论在屏幕表格说明的COLOR属性中,还是在4GL程序的显示属性中,颜色必须由名字
指定,拼写如以上信息所示。检查该语句的拼写和标点。

-2022        标识符超过标识符的最大长度<长度值>。

所有字段名和其它标识符名不能超过所示长度。必须修改屏幕表格说明并重新编译。

-2023        引用串超过引用串的最大长度<长度值>。

不能使用更长的引用串。在屏幕表格中,不能将两个短串联结成一个长串,因此这是
绝对的长度极限。必须修改屏幕表格说明并重新编译。

-2024        已有一个记录名被指定了。如果记录名与屏幕表格中的表名相同,则创建一
个同名的缺省记录。

确认每个屏幕记录和屏幕数组的记录名在屏幕表格说明中是唯一的。为每个用于
ATTRIBUTES节中的表自动定义一个屏幕记录,来定义一个显示字段。因此,如果定义
与表名相同的记录,就会认为是重复。

-2025        在<行号>行<列号>个字符中虽然没有打开任何注释,但却发现了注释结束符
(})。

除非包含在引号中,否则注释符必须是一一对应的。很可能在编辑过程中注释起始符
偶然被删除。修改屏幕表格说明,使注释合法分界。

-2026        FORMONLY field显示字段名没有指定类型。如果包含列表或指定缺省值,其
类型必须指定。

定义form-only显示字段(没有联接到数据库字段的显示字段)的普通方法是:
tagname = DISPLAYONLY.fieldname TYPE datatype
要求有TYPE从句。检查属性语句并重新编译屏幕表格。(关键字FORMONLY用于由4GL编
译程序编译的屏幕表格。与DISPLAYONLY意义相同)。

-2027        在<行号>行<列号>个字符中存在非法字符(不可见字符或控制字符)。在列
表中已被空格取代,但仍存于源(输入)表中。在重新编译前应将其删除。

当使用字处理编辑器的文件模式而不是文本模式时可以把非法字符引入到文件中,或
者在编辑时敲入非打印键,或者由数据损坏引入的。

-2028        符号<名称>不表示在这个屏幕表格中使用的表前缀。它不能在这里用于选择
记录元素。

在SCREEN RECORD语句中,每个元件必须由定义于TABLES节的表名引出,或由单词
FORMONLY。对照TABLES节检查指定名称的拼写,并检查语句其余部分的标点。

-2029        屏幕记录数组<名称>中元素的大小,或者与数组指定的维数不同,或者它们
自相矛盾。

屏幕数组的维数写在紧接其名后的方括号内,如下例所示,它的维数是12。
SCREEN RECORD details[12](items.item num,items.item desc,unit_price)
这时,应精确地有12个屏幕显示字段,每个与屏幕记录列出的三个字段之一相关联。
当一个或多个字段出现的次数有所不同时,本错误信息出现。

-2030        在<行号>行<列号>个字符发现排印错。

指定位置的单个字符,虽然是可打印的,但不是预期的并且不符合屏幕表格说明的语
法。

-2031        WORDWRAP属性只能指定到CHAR、-VARCHAR和TEXT显示字段。

这条PRINT语句将WORDWRAP函数用于一个非字符数据的数值。检查该显示字段名正是你
所要的,并检查语句其余部分的标点。

-2032        上面的数值无法成功转换成INTERGER或DOUBLE或LONG。

数值常数出错。很可能数字位数过多。检查该语句的标点。可能两个数值被写成一个
数。

-2033        显示字段<名称>有一缺省值,它不在其所包含的值范围内。

指定的显示字段既有DEFAULT属性也有INCLUDE属性,但它们不兼容:缺省值不是允许
值之一。修改属性之一,并重新编译屏幕表格说明。

-2034        该特性在INFORMIX-SQL中不可用。在INFORMIX-4GL中通过"form4gl"屏幕表格
产生器可用该属性。

PERFORM屏幕表格编译程序和4GL屏幕表格编译程序接受非常类似的屏幕表格说明,但
在某些方面存在差别。这个语句使用4GL功能PERFORM不能处理它。

-2035        如果指定属性WORDWRAP,应该用于联结中的所有字段。

默认本信息。它用于PERFORM(联结)的特性,而4GL不支持该特性。

-2036        多行显示字段的显示行位于不同屏幕页中。

多行显示字段(多重显示字段带有同样的标签,具有WORDWRAP属性)必须完整地在一
个屏幕页内。也许并没有把显示字段设计在两页上。但如果该页的版面布置,加上4行
保留行,高于物理屏幕(象在SCREEN语句或在命令行中行维数所指定那样),在页可
容纳的最后一行后开始新的一页,这样屏幕表格被分割;并且可能会意外地分割多行
显示字段。无论如何重新安排显示字段,使多行显示字段放在在单个页中。

-2037        只能为BYTE和TEXT类型显示字段指定属性PROGRAM。

显示字段属性PROGRAM指定一个外部程序编辑或显示BYTE或TEXT值;这些值假定为
太大,并对常规的屏幕表格显示方法是特殊的。但在这个语句中,该属性用于其它不
支持类型的字段。检查表名和字段名,确认无误,并检验在DATABASE语句中命名的
数据库的表的当前定义。

-2038        BLOB显示字段不能进行联结。

BYTE和TEXT类型字段不能进行比较;因此它们不能用于联结表;它们不能作为联结字
段或在COMPOSITES语句中。检查表名和字段名,确认无误,并检验在DATABASE语句中
命名的数据库的表的当前定义。

-2039        BLOB字段不支持以下属性:AUTONEXT、DEFAULT、INCLUDE、VERIFY、RIGHT
和ZEROFILL。

BYTE和TEXT类型字段不能按这些属性使用方式使用。检查表名和字段名,确认无误,
并检验在DATABASE语句中命名的数据库的表的当前定义。

-2040        屏幕表格名<名称>超过最大字符长度的长度。

屏幕表格编译程序对名字长度的限定可能小于宿主操作系统对它的限定。应将屏幕表
格说明文件换名,并重新执行该命令。

-2041        屏幕表格文件名无法打开。很可能不存在。或用户没有读取权限。

检查文件名的拼写。检查屏幕表格文件存在于当前目录下。或如果在其它路径下,提
供了正确的路径名。在UNIX系统中,如果上述检查无错,检查你的帐户有该文件的读
取权限。

-2042        上面语句中或附近的BLOB显示字段的用法不正确。

BYTE和TEXT类型字段不能按在该语句中使用方式使用。检查表名和字段名,确认无
误,并检验在DATABASE语句中命名的数据库的表的当前定义。

-2043        屏幕版面布置超过指定屏幕宽度。这仅是警告信息。

假设的屏幕宽度可在SCREEN语句或屏幕表格编译程序命令行参数中得到,缺省值是80
个字符。如果当前屏幕表格说明被显示于具有此宽度的终端,或者一些行被截断或者
行被不明显地“自动换行”。

-2044        最多可以为每个字段的每个条件指定一个颜色属性。

检查ATTRIBUTES语句,COLOR属性附近可能有错。找出漏掉的标点。

-2045        4GL显示字段的条件属性不能取决于其它显示字段的值。

属性COLOR中WHERE子句的布尔表达式只能使用显示字段名或常数。修改该属性并
重新编译屏幕表格。

-2100        显示字段field存在校验串错误,String =string.

在syscolval或syscolatt表中的格式串或校验串之一未被正确地编码。字符串作为其
应用的显示字段来指定。使用Windows的Column attributes Dictionary实用工具或者
DOS和UNIX的upscol实用工具修改该字符串。

-2800        说明部分的第一行必须是关键字database后接数据库名,或者关键字
FORMONLY(只限4GL)。还可接WITHOUT NULL INPUT选项.

除了注释行,屏幕表格说明必须以命名数据库开始。检查文件中的标点和拼写错误。
参照该产品的参考手册,以得到DATABASE语句允许的选项。(这条信息当前不使用,
在4.0版本或更早版本的产品中才能遇到)。

-2810        名称name不是现存的数据库名。

在屏幕表格说明起始部分的DATABASE语句中的名称,不是可以找到的数据库。除非使
用-OnLine,数据库必须被置于当前目录下或者在环境变量DBPATH中命名的目录下。

-2811        写出时无法打开临时表table-name。

应用程序试图在数据库中创建一个临时表或者一些其它临时文件,但收到数据库服务
器产生的错误代码。最可能的原因是磁盘空间不够。查找包括操作系统信息的其它错
误信息,以获取更多信息。

-2812        临时表table-name无法读取。

应用程序在数据库中创建并填充一个临时表,或者创建并填充一些其它临时文件,但
试图从中读取数据行时,收到数据库服务器产生的错误代码。最可能的原因是硬件失
败。查找包括操作系统信息的其它错误信息,以获取更多信息。

-2820        括号之间的标签名没有正确地给出或者标签丢失。

在屏幕表格说明的SCREEN节的这行中,存在由中括号指定的显示字段;但在括号内应
有简单名而实际上没有:或者除了空格外没有其他的内容,或者是个无效的名称。检
查该行的标点,确认括号间只有一个简单标识符。

-2830        在这行找到左中括号,但无右中括号与之匹配。

屏幕显示字段不能跨行。检查SCREEN节,确认所有显示字段被适当地标记。如果创建
多行显示字段,对多重完整的显示字段须使用同一显示字段标签标记。

-2831        控制块超过显示字段的最大极限。

在控制块的OF子句中列出的字段或表太多。这将使你分别写控制块,每个对应原列表
的一部分。

-2832        屏幕表格在显示字段的起始和结束位置使用“|”。因此,屏幕表格必须指定
同一字符作为左右分隔符。可使用INSTRUCTIONS节中的DELIMITERS命令定义它。

确定存在DELIMITERS语句,并且指定了同一字符作为左右分隔符。

-2834        NULL不能当作缺省值。它已经是你不指定任何值时的缺省值。

ATTRIBUTES语句包含指定NULL值的DEFAULT从句。删除该从句或指定其它值。

-2840        屏幕表格中没有定义标签标记。

指定的名称在ATTRIBUTES语句的左部出现,但不在SCREEN节的括号内。检查已定义的
显示字段标记,弄清为什么它被漏掉。

-2841        在属性节前屏幕表格必须包括一个表的说明。

检查屏幕表格说明文件,确认是否按顺序存在DATABASE语句、SCREEN节、TABLES节和
ATTRIBUTES节。

-2843        字段column-name不在屏幕表格说明中。

在ATTRIBUTES语句中的名称,应预先在屏幕表格说明中定义。检查语句中所有名称的
拼写,确定它们被恰当的定义。

-2844        在屏幕表格说明中,字段column-name与一个以上的显示字段关联。

在ATTRIBUTES语句中任何表的字段只能和一个显示字段相关联。也许你试图显示的字
段源自两个或两个以上表,它有着相同的字段名;在这种情况下,将表名作为字段名
的前缀,以区别它们。

-2845        包含字段column的表table-name的复合字段没加索引。为该字段创建索引可
极大地改善性能。

使用索引可减少多层联结表所需的时间。但索引不是必须的。尤其当表很小或者在初
始测试阶段。

-2846        显示字段field-name不是表table-name的成员。

在这个语句中假定所指的名称是这个表的一部分,但它在当前的数据库中不对。检查
两个名称的拼写。如果无错,确认使用了正确的数据库,且该表没有被修改。

-2850        名字<名称>不是这个数据库的字段名。

屏幕表格的TABLES节中指定的表的确存在。但应在ATTRIBUTES节中命名的字段名不存
在。对照实际表检查其拼写。可能表已被修改或字段已被改名。可以在Tables菜单
下,选定info,使用INFORMIX-SQL检查字段名。

-2856        TODAY属性只能赋予日期字段。

TODAY函数(不是属性)返回今天的日期值。该值只能赋予类型为DATE或DATETIME的显
示字段。在这个语句中的显示字段有不同的类型。在4GL程序中提供自动数据转换,但
在屏幕表格环境中无此功能。

-2857        在联结列表中,只能存在一个主要复合字段。

这语句定义一个联结列表,两个或多个字段名与同一屏幕表格显示字段关联的列表。
在这样的列表中,在字段名前有星号表明该字段是检验联结中的主要字段。在任何联
结中只能存在一个这样的字段,但这个列存在两个或更多。检查检验联结的文档,并
选定一个单一的主要表。

-2858        表table-1和表table-2联结。但它们的联结字段不属于复合键。

在两个表之间已定义两个或更多不同的联结字段。但在联结字段上不存在复合索引。
该索引是用以保证复合键的存在的。即,保证联结字段值的任意复合只出现一次。检
查两个或两个以上定义这两个表的联结字段的ATTRIBUTES语句。确认它们如你所望;
例如,确认是基于两个或多个字段联结两个表,而不是基于一个字段联结三个或更多
的表。如果需要复合键,可使用命令CREATE INDEX为至少表1的那些字段创建复合
唯一索引。

-2859        字段<字段名>是一个以上的表的成员,你必须指定表名。

TABLES节中两个或两个以上表均包含指定名称的字段。必须指明你要的是哪个表。方
法是将表名作为字段名前缀。如<表名>.<列名>。无论在屏幕表格说明的任何位置使用
该名称都这样做。

-2860        存在对column-name的字段/值类型失配。

该语句使用DEFAULT从句为显示字段赋值,或者在INCLUDE从句中使用该显示字段的
值,但使用的数据不符合显示字段的数据类型。检查显示字段的数据类型(它来自与
之关联的字段),并确认仅设定兼容的数值。

-2861        已超过最大的表数。

在一次可使用的表数目存在一个极限(这个极限随着不同的宿主系统或者不同的数据
库服务器而不同)。它迫使你减少该屏幕表格使用的表的数目。

-2862        在数据库中找不到表<表名>。

屏幕表格中使用的所有表在屏幕表格编译时必须存在。以便编译程序可验证字段的数
据类型。指定的表在屏幕表格命名的数据库中不存在。检查表名和数据库名的拼写。
如果无错,或者没有使用期望版本的数据库(检查环境变量DBPATH的值),或者数据
库已被修改。

-2863        在指定表中不存在字段column-name。

屏幕表格的TABLES节中指定的表确实存在。但应在ATTRIBUTES节中命名的column-name
不存在。对照实际表检查它的拼写。可能此表已被修改或者该字段已被改名。也可在
Table菜单下,选定info,也可使用INFORMIX-SQL检查字段名。

-2864        在指定表中不包含表table-name。

指定的表用于这个语句,但在屏幕表格说明的TABLES节中无定义。检查其拼写;如果
无错,将该表增加到TABLES节中。

-2865        在表table-name中不存在字段column-name。

在这语句中隐含有表示的字段是指定表的一部分(很可能语句涉及table-name.
column)。但在那个表中没有定义。检查两个名字的拼写。如果没有错误,检查数据
库的内容;很可能该表已被修改或字段已被改名。

-2866        NOW属性只能赋予datetime字段。

这个信息没有在任何当前的产品中使用。SQL不提供NOW属性或函数支持;请用CURRENT
函数。

-2867        CURRENT属性只能赋予datetime字段。

CURRENT函数(不是属性)以DATATIME值产生当前的日期和时间。在语句中引用的显
示字段,不具有DATATIME数据类型。在该环境中不支持自动数据类型转换。检查该
语句,确认引用所期望的显示字段,并修正屏幕表格,将DATETIME值只设定于
DATETIME显示字段。

-2870        下标字段大小与显示字段中分配的空间不匹配。

该属性语句将字段的子串与显示字段相关联。但是,或者子串数字错(第一个小于1或
者大于该字段的大小,第二个小于第一个),或者数字正确但选择的字符个数与显示
字段大小不同。修正子串数字,使之与显示字段要求的字符数绝对一致。

-2880        单词'screen'或者'end'丢失。

每个屏幕表格说明必须以关键字END结尾,必须包含关键字SCREEN。它们都必须在每行
的第一列开始。检查屏幕表格说明内容,确认其包括所有必要的节,并适当地标记。

-2890        屏幕定义必须由左大括号‘{’开始。

每个屏幕版面布置必须置于大括号({})中。左大括号必须是所在行第一个字符。检查
屏幕表格说明,确认屏幕版面布置的句法结构是正确的。

-2892        字段column-name名在屏幕表格中出现一次以上。如果希望某字段在屏幕表格
中重复。使用同样的显示字段标签。

在两个或两个以上位置显示同一字段的方法是:在屏幕版面布置中放置两个或两个以
上显示字段,每个显示字段具有相同的标记名。然后,在ATTRIBUTES节中使用一条单
独的语句,使那个标记名和字段名产生关联。当前的字段值将在所有的显示字段重
复。如果需要显示不同字段。列在ATTRIBUTE节中的字段名必须不同。如果需要显示
不同字段,而又恰巧具有相同字段名。须将表名作为其前缀。

-2893        显示字段标签标记名在屏幕表格中出现一次以上。但长度不同。

可以在屏幕版面布置中放置一个显示字段的多重拷贝(所有拷贝均显示同一字段),
但所有拷贝必须是同样长。检查SCREEN节,以确认:如果打算一个显示字段有多重拷
贝,则所有拷贝必须完全相同。

-2895        field-size的显示字段长度与column-size的数据库字段长度不匹配。只是警
告信息。

该语句定义的字符显示字段大小(如SCREEN节中出现时所示)与关联字段的大小不同。
可在屏幕表格编译程序中指定-v选项,来产生此类警告信息。

-2901        显示字段名包含两个冲突的属性,第一属性和第二属性。

该语句自相矛盾。UPSHIFT和DOWNSHIFT属性不能用于同一显示字段;NOENTRY和
REQUIRED属性,或NOENTRY和VERIFY属性也不能用于同一显示字段。检查该语句并
修正选定的属性。

-2920        该字段column是主要的字段但未加索引。如为该字段创建索引,性能会大有
改进。

指定的字段已定义为检验联结的主要字段。这意味着无论何时操作员在该显示字段输
入一个数值,将会在该字段进行对照。如果索引存在,该对照操作非常迅速。现在该
字段无索引。如果没有索引,对照将会极其缓慢。除非该字段不允许操作员输入(这时
应删除星号)或者表很小(最多几十行),你应该在屏幕表格使用前为该字段创建索引。

-2921        数据库的dbname与当前的-INFORMIX-SQL版本不兼容。

屏幕表格中DATABASE语句命名的数据库是由老版本的informix软件创建。要使当前系
统能使用它,必须使用sqlconv实用工具进行转换。

-2930        字段名的部分多于一次在屏幕上显示。

这个屏幕表格在不同的显示字段中显示指定字段带有下标的部分。这是合法的;但任
何单一字符不能出现在一个以上的显示字段中。即,下标部分不能重叠。例如,可在
某显示字段显示name[25,49],而在另一显示字段显示name[50,74]。但不能同时显示
name[25,49]和name[25,74],因为某些字符会显示两次。

-2931        格式说明中存在错误。

检查该语句的FORMAT串内容。是否存在不正确的数据类型。如,数值字段含有#-
和.以外的字符;DATE字段存在不正确的内部长度。如,yyy要求三位数的年。

-2932        格式的指定只限浮点、小浮点、十进制或日期字段。

该属性语句指定了FORMAT串,但显示字段的数据类型不是支持的四种格式之一:
FLOAT、SMALLFLOAT、DECIMAL(或MONEY)和DATE.如果这不是DISPLAYONLY
字段,检查它是否附属于右字段,并确认该字段是否如你所预期的在数据库中定义。

-2933        格式宽度大于预置的显示宽度。

为这个显示字段指定的FORMAT串的长度大于该显示字段本身在SCREEN节表示的长度。
检查屏幕的版面布置,并加以修改,或修改格式使它们一致。

-2934        格式宽度小于预置的显示宽度。

为这个显示字段指定的FORMAT串的长度小于该显示字段本身在SCREEN节表示的长度。
检查屏幕的版面布置,并加以修改,或修改格式使它们一致。

-2935        用'-l' 选项或在屏幕节中指定的行数必须是从6到600之间的一个正整型数。

在SCREEN语句中或用-l(小写L)命令行选项给出的屏幕的垂直大小不在范围内。把它改
为指定屏幕表格将使用的终端的期望尺寸。

-2936        用'-c' 选项或在屏幕节中指定的字段数必须是从30到600之间的一个整型数。

在SCREEN语句中或用-c命令行选项给出的屏幕的水平大小不在范围内。把它改为指定
屏幕表格将使用的终端的期望尺寸。

-2940        显示的字段名既带有下标又不带下标。

这个屏幕表格在不同的显示字段中显示指定字段的全部,和它的下标部分。你可以在
不同的显示字段中显示一个字段的不同的下标部分,但这些部分不能重叠。换句话
说,一个字段的部分不能在同一屏幕显示两次。重新检查指定字段的所有使用。也许
你不想在两个地方命名它;或也许在不同的表中有两个以上的同名字段,你需要使用
表名区别它们。否则,在字段的每个显示字段上使用不重叠的下标。

-2941        <名称>不是该屏幕表格上的一个用于显示的显示字段名。

这个语句引用了显示字段<名称>,但没有定义这样的<名称>。检查拼写,并重新检查
ATTRIBUTES节,看显示字段是如何定义的。

-2943        你已经超出了伪机器的容量。

这个语句中的表达式的处理太复杂。简化它并重新编译该屏幕表格(参见错误信息
-2988。)

-2944        你只能对表而不能对字段使用添加,修改,查询,或删除命令。

所有的添加,修改,删除,和查询操作都应用于整个行。所以这些控制块必须只能在
它们的打开命令中列出表名,而不能列出各个字段的名字。重新检查这个语句中的名
字,把字段名改为它们表的名字。

-2945        你只能对表而不能对字段使用添加,修改,查询,或删除命令。

只能在与表相联的显示字段上(不能在DISPLAYONLY显示字段上)执行聚合(AVG,
MIN,MAX,COUNT,TOTAL),并且表必须列在同一控制块的打开命令中。修正屏幕表格
说明并重新编译。

-2946        你不能在只能显示的显示字段<名称>上计算一个聚合。

只能在与表相联的显示字段上(不在DISPLAYONLY显示字段)执行聚合,并且表必须列在
同一控制块的打开命令中。修正屏幕表格说明并重新编译。

-2950        字段<名称>没有从1开始的节。记住,第一个下标是1,不是0。

来自同一个字段的多重子串被定义为显示的显示字段。可是,该子串没有覆盖毗连
的,字段的非重迭部分。或者没有第一节(从字段1开始),或者一节与另一节重迭。
重新检查指定的子串,考虑使用一个多行编辑显示字段替代一组子串;更简单的办法
是去编码并为数据输入提供更好的编辑。

-2951        左和右定界符必须用二个字符的串指定。

DELIMITERS指令要求一个恰恰是二个字符的串,当显示显示字段时使用左和右定界符
(标记)。字符可以相同但必须为二个。

-2952        为了使用一个图片,图片长度必须与显示的显示字段长度相同。

PICTURE属性指定的串的长度必须完全与SCREEN节中描述的显示字段长度相同。重新检
查这个显示字段的定义,使两个长度相同。

-2953        名字<名称>不是这个屏幕表格中的一个数据库字段。

COMPOSITES列表中命名的所有字段必须被定义在ATTRIBUTES节中。检查所有名字的拼
写,并确保已经定义了它们。

-2954        你已经超出了控制指令数的极限。

这个屏幕表格的INSTRUCTIONS节超出了屏幕表格编译器所能处理它的能力。你将必须
简化这个屏幕表格,删除某些指令。

-2955        名称<显示字段标记>不是这个屏幕表格中的一个显示的显示字段。

显示的名字出现在ATTRIBUTES节中但不在SCREEN节中。检查名字的拼写;在那些地方
之一出错,或者已经被从屏幕版面布置中忽略了。

-2956        你没能给显示的显示字段<显示字段标记>设置一个值,因为它所相联的数据
库字段没有一个属于和<表名>相同的表,它也不是一个可变的只能显示的显示字段。

你不能在LET语句中跨表设定值。在LET语句中与<显示字段标记>有关的所有字段必须
属于控制块的打开命令中命名的表,或者它必须是一个只能显示的显示字段。

-2957        你不能把下一个显示字段设置为<标记1>,这是由于它所联系的数据库字段没
有一个属于与<标记2>相同的表。

NEXTFILELD语句中命名的显示字段必须与当前显示字段相同的表相联。再检查一下字
段和这个屏幕表格中的表之间的关系,并修正它。

-2958        在一个C函数中最多可以有十个参数。

由于有太多的参数,对外部C函数的调用是不合适的。你将必须找到某种方法用更少的
参数通过相同的信息。

-2959        两个表联结时最多只能有<限定数目>个列配对,包括所有复合字段的组成部
分。

一个联结中包含的字段数目是有限制的。这包括ATTRIBUTES语句中命名的联结字段和
COMPOSITES语句中为同一个表命名的联结字段。

-2970        这个字段名与其它字段联结,但它没有被索引。建议为了跨表查询而索引那
个字段。创建一个索引可以及大地提高执行性能。

一个联结中包含的字段中至少有一个字段存在索引,则可以使联结操作非常快。可
是,当一个或两个表很小时(几打行)不需要索引。在使屏幕表格进入制作过程前,考
虑在所有联结字段上创建一个索引。

-2971        这个字段不是一个字符字段,因此不能被下标。

这个语句在一个字段名后包含一个下标------方括弧中的一对数字。可是,字段的数
据类型不是CHAR,VARCHAR,或TEXT。只有这样的字段才能被下标。
检查你是否命名了正确的字段;如果没问题,则检查它在数据库中的定义。

-2972        这个字段不能右对齐或填充零,这是因为它的显示宽度不匹配实际的字段宽
度。

为了使用RIGHT 或ZEROFILL属性,你必须保证显示字段大小(象SCREEN节中描述的那
样)完全与该数据库字段的宽度相同。重新检查这个语句,屏幕版面设计,和数据库
中表的定义以保证这些大小一致。

-2973        在一个显示显示字段描述中只可以有一个主要的字段。

这条语句定义了一个联结列表,一个有关相同屏幕表格显示字段的两个或两个以上的
字段名字的列表。在这样的列表中,在一个字段名前加上一个星号表明那个字段是一
个检验联结中的主要字段。在任何联结中只允许有一个这样的字段,但在这个列表中
却有两个或两个以上的主要字段。再检查一下检验联结上的文档说明并选择一个单一
的主要表。

-2975        用于显示的显示字段标签<标签名>还未被使用。

指出的名字被定义在SCREEN节中,但不在ATTRIBUTES节中。再检查一下每节中的标记
并修正屏幕表格以便所有的标记都被定义。

-2976        已经过早地到达屏幕表格结尾。

这个屏幕表格说明有一个SREEN节但无TABLES 或ATTRIBUTES节。完成该屏幕表格说
明。

-2977        由于它们未联结,表<表1>不能是表<表2>的主。

MASTER OF指令中命名的这两个表必须被联结。表之间的联结通过在ATTRIBUTES
节中的一个语句中命名来自两个表的字段来表示。此处,检查表名拼写,并再查看一
下属性语句。

-2978        由于它们的类型或长度不同,字段<列名1> 和 字段<列名2>不能是联结的字
段。

一个联结中的所有字段必须包含来自相同定义域的数据。而实际上,这些字段有不同
的类型或(如果它们是字符字段的话)长度从而指出它们的内容不是来自同一个定义
域。检查字段名字的拼写以确保你命名了正确的字段。再检查一下数据库的设计并保
证这些表就是这些字段上的联结。

-2984        表标识符<表名>被定义了一次以上。

改正TABLES节中的语句以便每个表只定义一次。也许你已经定义了一个与真正表名相
同的别名。

-2985        表标识符<名称1>和<名称2>表示相同的表。

在TABLE节中,这两个名字定义成涉及相同的数据库表。它们之一或者俩者是一个表别
名。修改语句以便每个名字只代表一个表,每个表仅有一个名字。

-2986        屏幕表格说明已经超出了主/明细对的最大限制数。

一个屏幕表格中可以支持的主/明细对数是有限制的。你必须找到一种方法去简化该屏
幕表格。

-2987        屏幕表格说明已经超出了限定屏幕的最大数。

一个屏幕表格中可以支持的屏幕版面布置数是有限制的。你必须找到一种方法去简化
该屏幕表格。

-2988        FORMBUILD已经用完内存。

屏幕表格编译器不能获得足够的内存去处理屏幕表格说明。你必须找到一种方法去简
化这个屏幕表格。

-2989        这个字段名是一个参考字段,但它未被索引。建议为了查寻而索引那个参考
字段。创建一个索引可以极大地提高执行性能。

你已经把指出的字段定义为使用LOOKUP属性的一个参考字段。这意味每当操作符在显
示字段中输入一个值,都在这个字段中查寻。当存在一个索引时这样一个查寻操作是
非常快的。此时该字段并没有索引。没有索引查寻可能非常慢。除非显示字段不允许
操作符input(这种情况下你应该删除星号)或者表非常小(至多几打),否则在使屏幕表
格进入使用状态之前你应该为这个字段创建一个索引。

-2990        字段<字段1> 和 <字段2>不在相同的数据库表中。

一个单一LOOKUP属性中引用的所有字段必须属于同一个表。检查名字拼写并保证它们
都是你所想要的字段。

-2991        警告: 你的多屏屏幕表格仅有第一屏将在4GL下显示。

当你使用4GL编译器编译一个多页PERFORM屏幕时,出现这个警告。一个4GL程序只能显
示多页屏幕表格的第一页。如果屏幕表格说明有多个SCREEN节,那么它已经被特意地
分成多页,这将必须重新设计4GL。如果只有一个单一的屏幕版面布置,由于它不适合
屏屏幕,4GL屏幕表格编译器把它分成两页。屏幕表格设计可能不允许由4GL保存四个
屏幕行。

-2992        显示标签<名字>已经被使用。

由于某种原因,屏幕表格编译器认为指出的名字已经被定义了两次。这些名字必须在
屏幕表格说明中唯一定义。重新检查所有使用的名字,看是否它们之一有错误。

-2993        在这个屏幕表格中指定了一个循环联结路径。

这个屏幕表格定义了一串三个或更多的联结,使表A联结到表B,表B联结到表C,表C又
联结到表A。由于使用表别名名字,这种循环也许不是明显的。再检查一下ATTRIBUTES
节中所有的语句和所有的COMPOSITES语句,并绘制一张联结关系图表。修改这个屏幕
表格以便没有创建循环联结。

-2994        屏幕表格已经超出表之间最大的联结数。

可以指定的联结数是有极限的。你必须找出一种方法去简化该屏幕表格。

-2995        屏幕表格已经超过联结中容纳的最大表数。

可以容纳在一个联结中的表的数目有一个极限。你必须找到一种方法去简化该屏幕
表格。

-2996        已经出现了未预期的错误号 os-error。请给RDS打电话。

显示的错误号来自主机操作系统。"RDS"是Informix Software曾经用过的名字。这条
信息不应该出现。如果该错误再次出现,请记录所有情况,并与Informix 技术支持部
联系。

-2997        见错误号<号码>。

显示的错误号是由数据库服务器返回的。请在这个文档中查找它。也可以查看其它错
误信息,那里也许可以给出更多的信息。

-2998        操作系统错误os-error: text。

显示的错误来自主机操作系统。这条信息不应该出现。如果该错误再次出现,请记录
所有情况,并与Informix 技术支持部联系。

-2999        SQL服务器终止。

应用已经与数据库服务器失去了联系。在UNIX下,可能已经有人偶然地杀掉了数据库
daemon进程或OnLine 线索,或者一个内部错误可能已经破坏了应用和数据库服务器之
间的管道。在本地网络系统中,文件服务器中数据库服务器进程或线索可能已经终止
或者文件服务器可能被down(关机)。寻找其它可以给出更多的细节的信息,尤其是操
作系统信息。

-3000        ISAM或系统错误号<号码>。

查寻本手册中的错误号。

-3001        当前目录中没有屏幕表格。

你可以只运行当前目录中或者你的DBPATH环境变量中命名的一个目录中呈现的屏幕表
格。把目录改成包含想要的屏幕表格的目录,或者改成DBPATH的内容。

-3002        没有BLOB显示字段可看。

你选定了View菜单选项。这个选项是让你查看一个屏幕表格的TEXT和BYTE显示字段的
内容;可是这个屏幕表格没有这种字段。

-3003        这个BLOB显示字段为空。

你选定了View(视图)菜单选项。游标定位在表达BYTE字段的一个显示字段中,并且你
已按下!键去编辑该显示字段的内容。可是,显示字段为null;要查看的数据不存在。
使用Query去选择这个字段中包含非null数据的一行。

-3005        你没有存取屏幕表格<名称>的权限。

屏幕表格文件<名称>存在;可是你的帐户没有读写该文件的操作系统权限。

-3006        在.frm文件中发现了一个未知的代码。请在再次运行它之前重新编译你的屏
幕表格。

重新编译该屏幕表格以保证该.frm文件没有被破坏。如果还出现相同的错误,检查你
正在运行的FORMBUILD和 PERFORM 产品是否在完全相同的版本级上(从命令行上执行命
令时,如果不使用-s选项,将显示版本号)。如果错误再次出现,请记录所有的情况并
与Informix技术支持部联系。

-3007        你的屏幕表格与当前版本的PERFORM不兼容。请在再次运行它之前重新编译你
的屏幕表格。

使用FORMBUILD编译这个屏幕表格,然后再运行PERFORM一次。

-3010        数据库 <数据库名> 没找到。

屏幕表格DATABASE节中命名的数据库不能被打开。或者它不能被找到,或者你的
帐户还未被授予CONNECT那个数据库的特权。你可以使用INFORMIX-SQL去区分这些
情况。使用Database菜单的Select选项。如果列出了<数据库名>,则数据库可以找到
但不能打开。

数据库服务器首先在当前目录中寻找一个数据库,然后在DBPATH环境变量中命名的目
录中寻找。请检查一下<数据库名>.dbs是否存在于上述目录中的某一个。

-3011        一个表被锁定 -- 不允许读取或写入。

由于另一个用户已经用排他方式锁定了一个表,PERFORM不能继续。在表未被锁定时,
重新运行该事务。

-3019        非预期的错误数已经发生了,请给Informix Software打电话。

请记录所有情况并与Informix 技术支持部联系。

-3020        表<表名>不在数据库中--再建一次你的屏幕表格。

无法找到在屏幕表格TABLES节中列出的一个表。再检查一下DATABASE语句以保证那个
屏幕表格正在使用正确的数据库。如果是这样的话,并且如果表名字的拼写是你所想
要的,那么该表已经被取消了或者被重新命名了。使用Tables菜单的Info
选项,你可以用INFORMIX-SQL检查表名。请使用正确的名字修正屏幕表格。

-3030        字段<字段名>不在数据库中--再建一次你的屏幕表格。

屏幕表格TABLES节中指定的表存在,但ATTRIBUTES节中命名的字段column-nameb
不存在。检查column-name拼写与实际表的对照。表也许已经被更改了或者字段可能被
重新命名了。使用Tables菜单的Info选项,你可以用INFORMIX-SQL检查字段名。请使
用正确的字段名字去修正屏幕表格。

-3031        不能查找或打开表格 form-name

PERFORM 不能在当前目录或以 DBPATH 环境变量命名的目录中对编译表格
form-name.frm 定位。或者,即便它查找到文件也不能打开这个文件。检查名字的
拼法,看看文件是否存在,并检查是否已读取对它的存取。

-3035        字段 column-name 已改变字段类型 -- 重新建立表格。

在表格的 ATTRIBUTES 节中命名的字段 column-name 不再具有它在编译表格(表
已变更)时所具有的数据类型。检查目前的数据类型;然后检验表格说明以确保它
在适当大小的显示字段中来显示字段。按要求修改并重建表格。

-3037        字段 column-name 不是复合字段 -- 重新建立表格。

字段 column-name在表格说明中的INSTRUCTIONS节中是作为COMPOSITE的
一部分提到的。其实,对数据库中的该字段及其伙伴字段没有复合索引(对复合
关键字的所有列的索引)存在。编译表格之后,复合索引被取消。或者它应该被
恢复,或者表格应该被修订。

-3050        操作系统错误。不能打开临时文件。

PERFORM 正在试图打开一个先前建立的临时文件。
寻找操作系统错误信息,它可能会有更详细的信息。
你可能已经超出了打开文件数量的限制。
如果再发生这个错误,请注意所有的环境状况,
并与 Informix 技术支持部门联系。

-3060        操作系统错误。
不能建立临时文件。

PERFORM 建立临时文件失败。
在 UNIX 操作系统中,检查你的帐号是否允许在 /tmp
目录、或者在 DBTEMP 环境变量中命名的目录中进行写操作,
并检查该目录是否满了。可能你已经超出了
操作系统关于打开文件数量的限制。在这种
情况下,必须减少用在这个屏幕表格中的表
的数量。

-3081        指定的输出文件有错误的后缀。

输出文件可能没有下列使用后缀之一:
*.dat
*.idx
*.aud
*.per
*.frm
*.ace
*.arc
*.sql
*.unl
选择一个不同的文件名。

-3082        没有指定程序用于编辑这个BYTE显示字段。

在一个BYTE显示字段的显示中,屏幕表格用户已经锁上!。可是,没有为这个显示字段
定义program=attribute(属性)。

-3101        字段<字段名>不允许 null 值。

当向一个表增加数据时,没有为该字段指定数据。可是,那个字段在数据库中被定义
为不允许null值。除非提供一个值,否则该行不能被增加。

-3120        显示字段中有错误。

输入到当前显示字段的数据不适合该显示字段的数据类型。

-3200        当前列表中无行。

在执行UPDATE,REMOVE,NEXT或PREVIOS命令之前,你必须首先查询表。

-3210        当前行位置包含一个删除的行。

现在显示的行刚被另一个用户删除。这行不再存在。直到你使用QUERY显示一个有效行
之前,你不能使用UPDATE,REMOVE,NEXT,或PREVIOUS命令。

-3260        这是一个无效值--它不在<表名>表中。

这个字段与表table-name中的一个字段有一个检验联结。输入到这个显示字段的任何
值都必须在那个表中找到。请输入一个正确的值。

-3261        无效值---<表名>表中不存在它的复合值。

与其它字段列出的这个字段作为屏幕表格说明的INSTRUCTIOND节中的一个COMPOSITE。
它指明那个地方需要检验对表table-name中字段的匹配。已经输入的、与复合值中其
它值一起考虑的那个值不在table-name中。

-3265        遗漏了<列名>上要求的索引---请恢复。

在检验联结中的所有主字段(名字前带有星号的那些字段)必须被索引。也许由于编译
屏幕表格而取消了索引。重新创建索引并再运行一次该屏幕表格

-3300        在你正在进行的方向上没有更多的行。

你到达了当前行表的开始或结尾。你可以用QUERY命令开始一个新的查询,或者使用
PREVIOUS或NEXT命令反向通过该列表的其它地方。

-3400        没有满足该条件的行。

在数据库中没有一行可以匹配该屏幕表格中输入的值。输入不同的值并再查询一遍。

-3420        这个值不是在有效的可能的值的范围内。

已经为该字段规定了可接受值的范围或列表(通过屏幕表格说明文件中的INCLUDE
属性)。你必须输入一个可接受范围内的值。

-3421        联结显示字段 table.column 不能由当前用户选定。

这个屏幕表格要求联结两个表中给出的那个表中的字段。可是,你的帐户名没有那个
表和字段的SELECT特权。为了获得这种特权,请与该表的所有者或数据库管理员联
系。

-3430        这个显示字段要求一个输入的值。

直到有一个值已经输入到指定的显示字段之前,该行不能被增加到表中。屏幕表格说
明文件中一个REQUIRED属性已经与该字段联系起来了。在这个显示字段中输入一个
值。

-3450        你表中的一行已经被其他某个人删除了。

另一个用户正在存取被你的屏幕表格所查询的那个表,而他已经删除了该表中由你的
查询所选定的一行。为了获得精确选定的行,请重新开始你的查询。当查询一个视图
时,版本4.0和更早版本的PERFORM可能返回这种错误信息,早期版本的产品不支持视
图。

-3451        这个屏幕表格没有要求数据输入的显示字段。

在这个屏幕表格说明中没有一个显示字段是允许数据输入的;它们所有都被标记为
LOOKUP或者标记为DISPLAYONLY而没有ALLOWING INPUT关键字。

-3452        不允许在一个远程表上进行增加,修改和删除操作。

正被查询的表在当前数据库(屏幕表格DATABASE节中命名的那个数据库)外的一个数据
库中。这种表格不能被修改。(这条信息当前已不使用了。它也许会在版本4.0或更早
的版本产品中遇到)。

-3460        本行已经被另一个用户锁定---请过一会儿再试一遍。

该表当前正由另一个用户使用。请等一会儿,然后重新输入你的语句。

-3500        两次输入不相同---请再试一遍。

为了防止排印上的错误,这个显示字段中的值必须被输入两次。输入的值必须是相等
的。仔细地重新输入该数据。(屏幕表格说明文件中的VERIFY属性已经与这个字段
联系起来了。)

-3600        没有为这个表指定明细表。

你必须首先规定这个表作为屏幕表格的INSTRUCTION节中的另一个表的主。

-3610        没有为这个表指定主表。

你必须首先规定这个表作为屏幕表格的INSTRUCTION节中的另一个表的细节。

-3620        你没有写入这个表的权限。

你没有插入或修改这个表的特权,所以不能插入或修改一个字段。检查该表的所有者
或为了数据库必要的权限问拥有数据库管理员(DBA)特权的人。

-3630        操作系统错误: 不能写入一个临时文件。

PERFORM早先创建了一个临时文件但现在不能写入它。最可能产生这一错误的情况是磁
盘已经装满了。另一种情况是临时文件创建后由另一个用户把它删除了。

-3650        你必须首先删除联结本行的<表名>行。

你希望删除的行是一个检验联结的主要成员。你不能没有先删除联结它的任何行就去
删除这一行。

-3651        你已经超出了你的系统所允许打开表的个数。

正在执行的语句可能要求PERFORM超出操作系统所限定的打开文件数。你将必须减少屏
幕表格说明中的表数。

-3660        你必须首先修改联结本行的<表名>行。

你希望修改的行是一个检验联结的主要成员。不允许你修改可能使其它表中联结的行
无效的这个字段中的行值。你必须首先修改联结该字段的表名(<表名>)中的那些行。

-3670        操作系统错误: 不能找到临时文件。

较早的PERFORM创建了一个临时文件;现在它不能改变该文件中的文件位置。也许该文
件在它创建后已由另一个用户删除了。查看来自操作系统的信息,那可以获得有关本
问题的更多细节。

-3680        PERFORM已用完内存。

PERFORM 不能获得它所需要的内存数据空间。你将必须降低屏幕表格的复杂性。

-3690        细节不能被执行 -- 第一个和第二个表不能联结。

一个 master-detail 与在屏幕表格的 INSTRUCTIONS 节中指定的两个表相关。然而,
这两个表不能联结。在ATTRIBUTES节中增加一个联结属性。

-3700        没有授权读取 <表名>。

你的帐户没有被授予对表<表名>的SELECT优先权。表的所有者,或对该数据库有数据
库管理员(DBA)优先权的人,可以给你授予这个优先权级。

-3710        没有授权对 <表名> 修改。

你的帐户没有被授予对表<表名>的UPDATE优先权。表的所有者,或对该数据库有数据
库管理员(DBA)优先权的人,可以给你授予这个优先权级。

-3720        没有授权对 <表名> 增加。

你的帐户没有被授予对表<表名>的INSERT优先权。表的所有者,或对该数据库有数据
库管理员(DBA)优先权的人,可以给你授予这个优先权级。

-3730        没有授权对 <表名> 行删除许可。

你的帐户没有被授予对表<表名>的DELETE优先权。表的所有者,或对该数据库有数据
库管理员(DBA)优先权的人,可以给你授予这个优先权级。

-3731        不能打开表 <表名>。

数据库服务器不能打开描述这个表的文件。你可能已经超出一个操作系统在打开文件
上的限制;如果是那种情况,你将不得不减少该屏幕表格中包含的表数。然而,首先
要确认在数据库目录 (它的名字是database-name.dbs)有这个表的文件并且帐户已经
读取该文件。表文件的名字是由<表名>,三位数字,和后缀.dat构成。

-3750        命令失败。

这个信息不是由任何当前的Informix产品返回的。如果该错误出现,请记下全部细节
并与Informix技术支持部门联系。

-3751        按回车继续。

这个信息不是由任何当前的Informix产品返回的。如果该错误出现,请记下全部细节
并与Informix技术支持部门联系。

-3752        你不能使用这个编辑功能,因为存在一个图片。

这个显示字段用一个PICTURE属性指定它的格式(在屏幕表格说明文件中)。当你正在编
辑这样的一个显示字段时,你不允许使用特定编辑键(例如,CTRL-A,
CTRL-D, 和 CTRL-X)。只用可打印字符和空格输入该值。

-3754        你已经超出伪机器堆栈空间。

减少屏幕表格的复杂性。特别是减少循环和IF语句叠加的层次,并将LET语句中非常复
杂的表达式段为简单表达式。

-3755        选择的只可显示的显示字段<标记名>不能被存取。

传到 C函数 pf_nxfield() 的显示字段标记名是一个只可显示的显示字段的名字。因
为用户不能在只可显示的显示字段输入数据,指针不能定位在只可显示的显示字段。
检查提供的标记名;如果它是期望的显示字段,检查那个显示字段的属性并找出为什
么它被设置为只可显示的。

-3756        在这个时间,选择的显示字段<标记名>不能被赋予一个值。

指定的显示字段不在当前的表中。指针不允许输入这样的显示字段且不能在其中设置
值。

-3757        显示字段<标记名>出现一个转换错误。

传到 C函数 pf_putval() 的数据类型不能转换到屏幕显示字段<标记名>的数据类型。
检查该值并将在屏幕表格定义中的显示字段的数据类型与 valtype比较。

-3758        下一个选择的显示字段<标记名>不在当前表中。

传到 C函数 pf_nxfield() 的显示字段标记名是不在当前表中的一个显示字段的名
字。指针不允许输入这样的显示字段。

-3759        在屏幕表格中,显示的显示字段<域名>不存在。

传到 C函数 pf_nxfield() 的显示字段标记名在这个屏幕表格中没被定义。检查传送
的串;如果它是期望的,检查屏幕表格定义看看有什么变化。一个通常的错误是弄混
了标记名和显示字段名,标记名是用在屏幕版面布置中的,并且在ATTRIBUTES节中处
于等号的左边,而显示字段名是用在ATTRIBUTES节中等号右边的字段名。

-3760        非字符显示字段或表达式之间不能使用匹配。

在屏幕表格的INSTRUCTIONS节中,一个IF-THEN-ELSE语句使用关键字MATCHES
比较两个显示字段。然而,至少一个显示字段不是一个字符显示字段,且MATCHES只能
被用于字符显示字段。检查在INSTRUCTIONS节中全部使用的MATCHES,确认它只提
供给字符显示字段。

-3761        错误 -- 企图被零除。

在INSTRUCTIONS字节中,一个分式表达式有一个零分母。检查在INSTRUCTIONS字节中
全部分式的使用,找寻任何可能出现的零分母(可能分母是一个显示字段,用户输入一
个零)。用IF-THEN-ELSE进行测试以确保这些表达式不出现零。

-3762        在屏幕表格中定义的用户函数<函数名>不能在C函数定义表 userfuncs 中被
找到。

屏幕表格的 INSTRUCTIONS 字节包含对一个函数<函数名> 的调用,且执行假定这个是
一个外部 C 函数的名字。然而,每个这样的函数的名字和地址必须出现在一个固定的
命名为userfuncs 的数组中。那个数组,随着外部函数的机器代码,与一个执行的客
户版本相连接。由于名字在该数组中不出现,所以执行不能调用它。

检查你正在实施正确的,执行的客户版本。(该程序的原始版本无外部函数连接到
它)。查看<函数名>的拼写是否是正确的。然后检验 C函数的来源,确认
userfuncs 数组的定义是正确的。

-3763        这个程序有一个无效的序列数。请向你的安装指导咨询。

Informix 软件产品安装不合适。检查安装过程。如果你需要帮助,与你的Informix
代表联系。

-3764        屏幕太小。必须至少有6行30列。

在一个小于6行30列的屏幕或窗口中,PERFORM不能操作。你必须增加正在实施执行的
终端窗口的大小。6行30列是绝对的最小值;然而,该窗口也必须足够包含将要显示的
屏幕表格。

-3765        屏幕表格太大无法放入屏幕窗口中。

在屏幕表格文件定义的该屏幕图象大于(又宽又高)当前窗口的尺度。如果当前窗口是
主窗口,它的大小是由使用的终端的尺度设置的。如果当前窗口是用OPEN -
WINDOW打开的,那么你应该指定更多的行或列。检查屏幕表格文件,或者减少屏幕图
象的大小,或者将它作为一个较大窗口的显示。

-3766        用法:SPERFORM [-s] [-d <数据库>] <文件名> . . .

这个信息显示执行程序的命令行选项。

-3767        在命令行发现一个未知的选项<选项名>。

确认你已经输入正确的命令行选项。

-3999        系统内部错误在文件<文件名>中。

这个错误不应该出现。如果该错误再次出现,请记下全部细节并与Informix技术支持
部门联系。

-4000        内部成员函数不能作为 SHARED 被说明。

这个语句企图用 SHARED 说明这个分类的内部成员之一(分类结构符,或!copy()或
!derive()函数)。你可以说明这些函数以便扩展它们,但是该说明不能指定SHARED。

-4001        基本类型名字"type"不能用作一个分类名字。

这个 CLASS 语句企图用与一个内置的数据类型(如INTEGER)相同的名字说明一个分
类。为你的分类寻找一个不同的名字。

-4002        函数"name"的第<n>个参数不能转换成其形式参数的类型。

指示的参数表达式或缺省的参数表达式与那个函数参数的说明类型是不一致的。检查
该函数的说明看看期望什么样的类型。

-4004        分类"class-name"的成员"name"不能在这个上下文中被存取。

编译器识别该成员,但该成员的存取控制使得它在语句中不可存取。检查一个
PUBLIC,PRIVATE,或 PROTECTED 说明。当成员常量和成员函数缺省为PUBLIC
时,将成员变量缺省注释为PROTECTED存取。

-4005        你不能再定义私有的基成员函数"name"。

在一个分类说明中的这个 FUNCTION 说明命名一个成员,该成员是从这个分类的一个
基分类继承的。然而,那个继承的名字是作为PRIVATE说明的,因此在这个分类它不
能被覆盖。检查全部基分类的说明;然后为你的函数选择一个对这个分类是唯一的名
字。

-4007        记录成员"name"是未定义的。

这个语句参考record.name。当该变量记录是真正的一个记录时,名字不是它的元件域
之一的名字。寻找记录的定义(它可能在 GLOBALS 文件中)并检验它的域的名字。然后
改正名字的拼写。

-4009        非共享的成员"name"不能被用作缺省值。

在这个函数说明中,一个缺省值表达式参考这个分类的一个正规成员变量的值。这一
操作是不支持的。缺省值表达式可以参考变量,但是,它们必须是在该模块级说明
的,或是共享的分类成员。

-4010        包含文件"pathname"没被发现。

这个 INCLUDE 语句命名一个编译器不能找到的文件。如果使用了一个全路径名,则
该文件不存在。检查全部目录和文件名的拼写。如果只给出一个文件名,那么在当前
目录,在$INFORMIXDIR/incl,或在任何指定一个H编译参数的目录,都找不到那个文
件。或许这些参数之一被遗漏或漏拼。

-4011        分类"name"没被说明。

这个语句参考一个指示名字的分类,但是在该源模块中没有这样的分类被说明到这个
位置。检查名字的拼写。确认,全部说明的包含文件已经被包含了。

-4012        你只能为分类构造符指定一个基本子句。

这个函数说明跟着一个冒号,分类名,和参数表(简单说,就是一个基本子句)。只有
当说明一个分类的构造符(它的函数的名字与分类的名字相同)时使用这个句法,以指
定函数参数到该基本分类的构造符。

-4013        无效的内在成员函数"!name"。

支持的内在成员函数是 !copy(), !derive(),和分类名(构造符)。没用其它的函数可
以用一个前置感叹号说明。检查名字的拼写。如果它不是支持的名字之一,则说明该
函数作为一个正规的成员函数。

-4014        你不能为内部成员函数指定 RETURNING 类型。

一个内在的成员函数的说明包含一个 RETURNING 子句。这是不支持的。编译器定义了
从一个内在的成员函数返回的值。省去该 RETURNING 子句。

-4016        每个分类说明必须有至少一个成员函数。

这个分类说明不包含成员函数。一个分类必须有至少一个成员函数,因为第一个(或唯
一一个)被定义的成员函数的位置也是被定义的分类自己所在位置。如果这个分类无其
它成员,那么说明它的结构符函数。由于结构符被说明,因此它也被定义(尽管该定义
不需要包函除FUNCTION和END FUNCTION以外任何语句除非你希望)。

-4018        在THRU选项中指定的字段不属于相同的表。

这个语句参考相同的表先THRU (或 THROUGH)后;然而,先和后不是那个表中的两个
字段。检查这些字段名字的拼写。确认,编译中的当前数据库(最近的前面的数据库语
句)是正确的。

-4019        在 THRU 选项中指定的字段以相反的次序出现。

这个语句用限制"先 THRU 或 THROUGH 后"参考一些聚合(表,记录,或对象)。然而,
先和后在该聚合没有以那个次序出现;后先于先。检查两个名字的拼写。确认,编译
中的当前数据库(最近的前面的数据库语句)是正确的。

-4020        函数"member"不是分类"class"的一个成员。

这个语句试图直接地或作为object.member()调用class::member()。然而,那个分类
没有这样的成员函数变量。检查成员名字和分类或对象名字的拼写。如果参考是
class::member(),检查分类的说明,看它的成员名字是否拼写正确。如果参考是通
过一个对象,确认该对象是按你想的分类说明的。注释你只能调用一个对象规定的分
类(该分类已被说明)的成员。如果你要调用一个实际分类(该分类在执行时被提出)的
一个成员,用CAST操作符。

-4021        一个分类成员不能命名为"SELF"。

你不能用SELF字母字体作为一个成员变量,成员常量,或成员函数的名字。标识符
SELF是一个由NewEra自动提供的内置的标识符。当一个成员在全局或模块范围中与一
个标识符说明有相同的名字时,你可以参考SELF使你自己的代码更可读,或者当一个
本地实体有相同的名字时存取一个成员。

-4022        保留的关键字"name"不能被用作一个4GL标识符。

关键字不能被用来命名一个函数,报表,变量,或者常量。查阅INFORMIX-4GL
语言参考手册的保留字表。

-4023        一个分类不能从它自己导出。

这个 CLASS 语句宣称该分类是 DERIVED FROM 它自己。这一操作是不支持的。或者撤
消该子句,或者命名另外的基分类。

-4024        识别符"name"用不同的类型多重说明。

在一个给出的范围中,一个给出的名字的多重说明必需是一致的(即,它们必需有相同
的类型)。给出的标识符已经用一个不同的类型说明了。

-4025        函数"name"已经在分类中说明了。

一个有该指定名字的函数已经在当前分类中被说明了。

-4026        成员"name"已经在基分类"class"中定义了。

一个导出分类继承它的基分类的全部成员。你不能增加一个与基分类的成员有相同名
字的成员。

-4029        成员"name"所在的表达式不是一个对象参考或记录类型。

这个语句引用.<名称>使得<名称>看上去象一个记录或分类的一个成员名字。然而,小
点前面的表达式既不是一个记录的名字也不是一个对象参考。如果你认为名字是一个
记录的一个成员,检查该记录的定义并确认小点前面的名字的拼写是正确的。如果你
认为名字是一个分类成员,确认小点是在一个产出一个参考正确分类的对象表达式前
面。

-4030        警告: 不能进一步扩展一个扩展的表达式。

一个表达式不能有多重.*后缀。

-4032        警告:THRU成员"name"的结构部分被忽略。

语句包含一个如下格式的THRU短语:   rec.first THRU rec.last
正确的格式应为:   rec.first THRU last
逻辑是 first THRU last 修改rec。

-4033        基成员名字"name"不能被用作分类名字。

这个语句试图说明一个分类名字,而又指定一个DERIVED FROM子句。成员之一是从被
称为名字的基分类继承的。一个分类的名字不能与它的任何一个成员名字相同,因为
结构符函数必需使用那个名字。检查这个新分类的继承,然后为其选择一个不同的名
字。

-4034        当用"nosql" 开关编译时,不允许SQL语句和two-pass报表。

用"nosql"开关调用编译器,而源代码既包含显示的SQL语句也包含two-pass报表(它调
用SQL语句)。用"nosql"编译产生不包含SQL语句的.c代码(代替.ec代码)是允许的。

-4035        函数"name"不能用不同的存取许可在一个导出分类"class"中被重新定义。

函数"name"的父分类有一个于这个说明不同的存取许可(PRIVATE, PROTECTED,
或 PUBLIC)。

-4036        函数"<名称>"不能在分类"<类名>"中重新定义,因为引用类型不同。

函数"<名称>"的基分类是作为SHARED被定义的,但"<名称>"不是,或反之。

-4037        多重函数"<名称>"说明。

虽然可以为一个用户定义的函数说明多个不同的版本,但是不允许对
INFORMIX定义的函数这样作,例如<名称>。

-4041        再次包含"file"将导致一个无限循环。

这个INCLUDE-AGAIN语句指定一个包含它自己的文件。如果你强制包含它,将导致一个
循环。确认这个文件确实是你要包含的文件。检查该文件的内容。

-4042        说明的形式只能出现于全局(模块)范围中。

对<标识符>∷<标识符>的说明只能出现在全局范围内

-4043        不合法的EXTERNAL说明。

这个语句试图说明一个EXTERNAL classname::membername。一个程序不能用一个全局
的EXTERNAL说明来说明一个共享的成员变量。解决的适当方法是包含有一个SHARED成
员的分类描述。

-4044        成员"name"在分类"class"中没有定义。

这个语句试图存取class::name。然而,没有那个分类的变量或常量定义。检查成员名
字和分类或对象名字的拼写。如果参考是class::name,对于它的成员的名字拼写正确
的分类检查分类的说明。如果参考是通过一个对象,确认该对象已按你认为的分类说
明了。

-4045        成员"name"被定义在分类"class"中,但不是作为一个变量或常量。

标识符名字被定义在分类中,但不是作为一个变量或一个常量,而象一个成员函数。
检查成员名字和分类或对象名字的拼写。

-4046        这个非正规函数定义前面出现过正规说明。正规说明失效。

在这个源模块中出现过这个函数的正规说明。这里又出现了非正规函数句法定义。

-4047        混合的非正规和正规函数说明句法。返回类型被忽略。

一个函数说明已经混合了非正规的(FUNCTION程序块)和正规的(FUNCTION原型)句法。
参数表只给出名字,随着VARIABLE语句后定义类型,除继续说明一个RETURNING子句
外,只有在FUNCTION原型说明的方式是可用的。参照INFORMIX-4GL 语言参考手册。

-4048        一个报表的驱动语句在那个报表的主体内是不允许的。

这个语句定义一个记录变量并在说明一个或多个成员时使用了初始表达式。这种情况
是不被支持的。只有在定义一个简单变量时,可以使用一个初始表达式。

-4050        这个正规说明之前函数"name"已被使用从而被非正规地说明了。

对这个函数的调用出现在它的说明之前。只是为了与4GL语言的以前版本兼容,才支持
调用未说明的函数。当编译器遇到调用该函数时,为它假设一个非正规的说明。将该
函数的说明移到源模块的顶部,以便使其先于对它的调用。

-4051        在分类"class"中定义的成员"name",不能作为一个函数。

这个语句试图直接地作为 object.member() 调用class::member()。该分类有那个名
字的一个成员,但它是一个成员变量,不是一个函数。检查该成员名字和分类或对象
名字的拼写。对于分类的成员名拼写正确的,检查该分类的说明。

-4052        标识符"name"没有在全局范围定义。

被使用的常数或变量不是局部的定义,因此编译器假定它是全局的定义,但没有在全
局定义中找到。

-4053        函数"name"已经用一个不同的原型说明了。

在这个FUNCTION语句中描述的函数已经被说明了,且前面的说明与这个说明在参数的
个数或类型上不一致的。检查包含文件中有关这个函数的说明并使那个语句一致。

-4054        函数"name"已经用一个不同的返回类型说明了。

在这个FUNCTION语句中描述的函数已经被说明了,且前面的说明与这个说明在返回值
的个数或类型上不一致。检查包含文件中有关这个函数的说明并使那个语句一致。

-4055        覆盖一个基分类的构造符是不允许的。

在一个CLASS语句中的这个FUNCTION说明指定了一个名字与这个分类名字相同的一个
函数。这一操作是不允许的。检查由这个分类继承的成员的名字并为它的成员函数
选择唯一的名字。

-4057        一个分类不能用PRIVATE内在函数从一个分类导出。

这个语句用一个DERIVED FROM子句说明一个新的分类。然而,指定的基分类有一个或
多个被说明了PRIVATE的内在函数(分类构造符,象!copy()的函数)。一个基分类的内
在函数对于从相同的导出分类函数内部调用必需是可使用的。私有成员不能被这样调
用;因此你不能用私有的内在函数从一个基分类导出一个分类。确认,你指定了正确
的基分类;并检查它的说明。

-4058        有结构符名字的符号不是一个函数。

一个分类名字后跟一个成员变量或常量的名字在这个上下文中是不允许的。

-4059        指定的参数表达式比函数名字说明的调用参数多。

这个语句调用函数名字,但它指定的参数表达式比函数名字说明的调用参数多。
检查参数表的句法。检查函数说明的参数的期望数和类型。

-4060        函数"name"的没有缺省的实际参数比规定的参数少。

这个语句调用函数名字,但它指定的参数表达式比函数名字说明的调用参数少。检查
参数表的句法。检查函数说明的参数的期望数和类型。

-4062        警告:非正式的函数"name"在不同的地方返回(或期望返回)不同的结果数。

在这个来源模块中一个以上的地方调用该函数名字,且函数名字被隐含返回不同个数
的参数。可能这个是正确的;在不同的环境中返回不同的数值写到函数是可能的。检
查是否属于这种情况,以及每种情况将被返回的期望值的数。<TR2:字体-情况-

-4063        函数"name"不返回任何结果。

该语句在指示函数应返回一个或多个值的上下文中调用函数"name"。但是,在模块中
已说明的此函数无RETURNING子句或使用RETURNING VOID。确认,调用的是你预期
的函数,然后检查其说明。

-4064        返回值的类型与函数"name"说明的返回类型不匹配。

函数"name"不是隐含说明的,但已经用一个原型调用了,且当前的调用提供一个不同
的原型。确认,你调用了你预期的函数,然后检查它的近期调用或为它建立一个隐含
的说明。

-4065        对同一个例外类"name"有多个例外处理。

在这个块中,相同的例外分类有两个或多个 ON EXCEPTION 语句。只有一个可以被调
用。检查该语句并确认,每一个都指定正确的例外类,取消或合并冲突的句柄。

-4066        RETURN语句不允许在内部函数的主体中。

这个语句是一个内部成员函数(分类构成符,!copy,等等)的定义的一部分。这些函数
没有显式的返回值;或者更确切地说,它们返回的值是由编译器自动产生的代码产生
的。删除该RETURN语句。

-4067        这个RETURN语句必须提供一个值。

这个RETURN语句没有指定一个返回值,但该函数已经用一个指定不同的VOID的
RETURNING子句说明了。如果你想在没有产生一个值之前中止一个函数,你可以在
END FUNCTION 语句上放置一个标签并使用一个GOTO,或者重新设计该函数的逻辑避免
提前退出。

-4068        函数"class::member"没有被说明成SHARED。

这个语句用双冒号句法调用一个分类成员函数。然而,指定的成员函数没有被说明成
SHARED。只有共享的成员函数可以用这种方式调用;正规成员函数必须通过参考一个
对象进行调用,因为它们需要该对象参考的SELF参考值。检查是否已经指定了你预期
的分类和成员,然后检查那个类的说明。

-4069        被调用成员函数"name"所在的表达式的类型不是一个分类。

这个语句企图既用范围分解(:操作符也用记录成员(.)操作符调用指定的函数。然
而,范围分解(:操作符左边的名字不是一个分类的名字(该名字是分类的一个成
员),或者,记录成员(.)操作符左边的名字不是一个对象的名字(对象的参考名字是
一个成员)。如果你试图通过一个参考对象调用名字,使用对象.名字语法。否则,
确认,你已经指定了你预期的分类和成员名字并检查该类的说明。

-4070        不能设定"SELF"。

这个语句将给函数的隐含名为SELF的参数设定一个新的值。由于SELF的值在任何参考
SELF对象的一个成员中是隐含引用的,因此,不允许对它进行设定。

-4071        不能对常数“<名称>”赋值。

此语句对<名称>赋一个新值,但该<名称>是使用CONSTANT来说明的。常数不占用内存
空间也不能设定新值。检查<名称>是否是需要使用的标识符。检查它的说明。可能你
想要设定一个模块级的变量名称,但它在上下文中被预先说明为局部常数或者成员常
数。

-4072        不能扩展无成员结构。

这条语句试图进行扩展,但失败。该扩展具有形式<对象>.*,但所说的对象没有任何
公共成员变量,所以此扩展设置是空的。检查你指定了正确的类和成员。

-4073        在THRU 说明中开始和结束名不是目标记录的成员。

此语句对一些带有“first THRU (或者THROUGH)last"限定的结构(表,记录或对象)
做参考。事实上first 或last不能作为聚合的元素。检查这两个名称的拼写。

-4074        不允许超过两个子串的索引表达式。

子串限定包含一对整型表达式,用逗号分隔和括号包围(例如:name[1,23])。第一个
数值不能大于第二个数,它们必须为正数并且不大于字串长度(或对接收数据类型说
明的长度)。

-4075        简单串表达式必须使用类型CHAR 或 VARCHAR。

编译程序期望一个串表达式,但该表达式既不是CHAR 也不是VARCHAR数据类型。

-4076        CAST 对象的类必须是右参数指定的类的基类。

不能将一个对象放入任意的类中;只能将它放入从它声明的类派生出来的类中。在这
个语句的CAST表达式中,左边的参考对象声明的类不是右边参数命名的类的基类。回
顾表达式以确定已经指定了想要指定的对象(可能需要使用引号将参考对象引起来)
和目标类。

-4077        这个操作对这种类型的操作数是无效的。

操作符不能接受这种类型的操作数。更正其它任何可能报告的错误,并且检验这个操
作符是否定义了这种类型的操作数。然后重新编译程序。

-4078        遗漏操作数,或是不支持的类型。

操作符被指定操作一个无效的类型。可能一个函数返回VOID,一个blob
(TEXT或BYTE),或FOREIGN结果。IS NULL和IS NOT NULL操作符能用于blob
和FOREIGN操作数,并且能从其它相同类型的操作数或NULL接收赋值。

-4079        操作不允许在索引表达式中。

一个象扩展 (.*),COPY,NEW,或THRU这样的操作试图在一个索引表达式中。

-4080        警告:对NULL的操作返回NULL

当编译器正在对表达式进行优化时,发现一个表达式由一个文字值组成,这其中至少
有一个是NULL。

-4081        警告:一个DATATIME表达式不能是负的。

一个"-"操作符作用于一个DATETIME操作数。时间点没有负值。一个间隔可以是负的,
但一个DATETIME不能。检查表达式的句法并修改使它大于或等于零。

-4082        MATCH和LIKE操作的操作数必须是CHAR或-VARCHAR类型。

这个语句使用的MATCH或LIKE操作符带有一个数字的或二进制的参数表达式。在这种情
况下,没有数据类型的自动转换。检查表达式是否写得如你所想,修改它以在与MATCH
或LIKE使用前给字符变量赋值(强制类型转换)。

-4083        警告:外部变量的初始化将被忽略。

这只是一个警告。这个语句说明一个同时具有EXTERNAL关键字和一个初始化的表达
式。初始化一个变量只能在定义它的地方(也就是为它分配内存的地方) 进行。这是
一个说明,不是一个定义,所以初始化被忽略。

-4085        不能输出这个类型的表达式。

语句试图输出一个不能被输出类型的表达式,如FOREIGN,或一个导致调用返回VOID的
函数的表达式。

-4091        不能将一个数组作为一个整体赋值或引用。使用索引指定单独的元素。

编译器试图将一个表达式的结果转换为与另一个表达式的类型相一致,并且它们之中
只有一个是数组。或者二者都必须是数组类型,或者都不能是。

-4092        CLASS和非CLASS类型失配。

编译器试图将一个表达式的结果转换为与另一个表达式的类型相一致,并且它们之中
只有一个是一个CLASS。应该二者都是CLASS类型,或者都不是。

-4093        RECORD和非RECORD类型失配。

编译器试图将一个表达式的结果转换为与另一个表达式的类型相一致,并且它们之中
只有一个是RECORD。或者二者都是RECORD类型,或者都不是。

-4094        相比较的CHAR或VARCHAR类型的长度不一致。

编译器试图在两个串类型之间进行一个比较(象比较函数标识),并且两个串有不同
的边界。

-4095        记录具有不同数目的域或不同类型的域。

在多个域的赋值中被赋的值与接收的记录或对象的域匹配不正确。检查值表达式的句
法;然后回顾接收变量的说明。

-4096        表达式类必须等于或派生于结果类。

语句试图将一个类的值赋予一个不是从原来的类派生的不同的类的对象

-4097        多重说明类"name"。

这个类已经在前面的源模块(可能在一个包含文件)中说明。只允许一次说明。找出
这个类所有的说明并减少到一个。

-4098        扩展的表达式类型必须是类或记录。

这个语句是指<名称>.*(或使用THRU标志) ;而所指的名称不是说明为一个记录或一个
什么类的对象。检查名称的拼写和它的说明。

-4099        CAST to的类型必须是一个类。

在这个语句中CAST操作符的右边的参数不是一个类的名称。回顾这个语句的句法和拼
写。确定已经包含了所有需要的头文件以说明类。

-4100        常数标识符"name"的不合法的定义。

一个已经建立为一个常数标识符的名称出现在一个新的标识符的说明中。假设,例
如,maxval已经在类x中说明为一个常数,并且后来又有VARIABLE x::maxval INT
说明产生。

-4103        编译器在文件"name"的<行号>处侦测到一个内部错误。请联系你的系统管理
员或Informix Software, Inc.以报告这个错误。

记录指定的文件名和行号。然后报告这个内部错误。

-4104        一个字段的值的类型与一个变量的类型不匹配。

INITIALIZE语句不能在这个字段值的类型和对应的变量的类型之间建立一个匹配。

-4106        期待一个DATETIME类型的表达式。

在一个EVENT语句中,一个函数定义或说明,一个EXTERNAL REPORT语句,一个HANDLER
语句,一个函数调用,或就是一个表达式,编译器发现了一个DATETIME表达式以外的
一些东西。

-4107        期待一个INTEGER或SMALLINT类型的表达式。

在一个EVENT语句中,一个函数定义或说明,一个EXTERNAL REPORT语句,一个HANDLER
语句,一个函数调用,或就是一个表达式,编译器发现了一个INTEGER或SMALLINT表达
式以外的一些东西。

-4108        期待一个DATE类型的表达式。

在一个EVENT语句中,一个函数定义或说明,一个EXTERNAL REPORT语句,一个HANDLER
语句,一个函数调用,或就是一个表达式,编译器发现了一个DATE表达式以外的一些
东西。

-4109        期待一个DATE或DATETIME类型的表达式。

在一个EVENT语句中,一个函数定义或说明,一个EXTERNAL REPORT语句,一个HANDLER
语句,一个函数调用,或就是一个表达式,编译器发现了一个DATE或DATETIME表达式
以外的一些东西。

-4110        不能使用超过一个的REPORT TO选项在一个REPROT过程的-OUTPUT节。

在这个OUTPUT节中,语句REPORT TO出现了超过一次。只允许一个这样的指定。移去一
个以外的所有。

-4117        这里期待一个常数表达式。

在这个CONSTANT语句中至少有一个常数表达式的一个值不能在编译时计算。参考
-INFORMIX-4GL Language Reference 中的"Constant -Expressions"以得到何种类型
的操作能被用于常数表达式的信息。

-4118        这种数据类型的表达式不允许在常数表达式中。

指定的表达式不能计算出一个常数。更正报告出的其它的和这个表达式冲突的错误并
重新编译。

-4119        在常数表达式中依赖于时间的函数必须和函数-CONSTANT()一起使用。

在这个CONSTANT语句中的一个常数表达式代表象CURRENT这样的函数,它的值依赖于当
前的时间。这样的函数必须写成-CONSTNAT()函数的参数,返回编译的时间做为它们的
值。(不能在一个常数值中使用运行的时间。)

-4120        对于一个模块,变量"name"可以说明是局部的也可以是外部的,但不能同为
两者。

指定的变量被说明或定义了超过一次。那些说明中至少有一个带有EXTERNAL,并且另
一个定义是一个模块变量(缺少EXTERNAL或GLOBAL)。回顾名称的说明和定义,想着它
们中的一些可能是在包含文件中。如果你期待名称象一个变量私有于这个模块,给它
一个唯一的名称。(允许声明一个变量为EXTERNAL超过一次,并且允许声明它为
EXTERNAL然后定义它为GLOBAL。这二者都能作为包含header的结果产生;并且它们有
好定义的意思。但是一个变量对模块既是外部的又是局部的是冲突的。)

-4121        不能通过一个CALL语句或在一个函数调用表达式中调用报表。

这个语句试图象调用一个函数一样调用一个报表。虽然一个报表具有一个函数定义的
一般格式,但它不能象一个函数那样使用。检查在这个语句中调用的函数名;其中一
个是报表。如果你的意思是发送一行数据到报表,使用OUTPUT TO
REPORT语句。

-4122        分析器限制被超越。尝试减小模块的复杂度或大小。

分析器返回一个NOT句法错误的错误。这可能由于一个分析器的堆栈溢出引起 (太多层
的IF,WHILE嵌套,或类似的) 或分析器运行超出分析器的堆栈空间(模块太大)。尝试
通过拆分复杂函数成多个函数或拆分模块成多个模块以降低代码的复杂度。

-4123        对函数"name"的调用必须有一个RETURNING子句。

函数名称被说明为返回一个结果,所以CALL语句必须提供一个RETURNING子句以接受
结果。

-4125        没有在类分层"name"中定义或说明为一个成员。

指定的元素没有说明,或说明而未定义,为类分层"name"的一个成员。

-4126        期待句柄。

HANDLE语句WITH子句前的标识符没有标识一个句柄。如果句柄的标识符指定一个类,
检查确定句柄被说明为属于那个类;否则,检查确定它被说明属于目标对象说明的
类。

-4127        期待事件。

HANDLE语句WITH子句前的标识符没有标识一个事件。事件必须在说明目标对象的类中
说明或从中继承。

-4128        句柄应该是与对象同一个类,或是其基类的成员。

指定的句柄在程序中说明,但不是与对象同一个类或派生出对象的基类的一个成员,

-4129        期待对象名。

在HANDLE语句中,句柄有一个"name."前缀限定符,但是那个名称是一个未知的对
象。

-4130        句柄不能直接调用。

一个句柄不能是一个显式的CALL语句的对象。调用一个句柄的唯一途径是通过调用或
posting句柄已经被一个HANDLE语句赋值的事件。

-4131        这个非共享的函数调用没有隐含对象。("SELF"在这个上下文中没有定义)。

在这个成员函数调用中没有对象参考的支持。如果这个成员函数的调用是在成员函数
的内部,"self"将是隐含的对象参考。这个调用产生于一个非成员函数体中,所以没
有隐含的对象参考。

-4132        在bass子句中非法的基类名称。

程序说明了一个基类,并且说明了一个其它的类DERIVED FROM那个基类。在派生类的
构造符的定义中,一个基构造符子句指定了一个NOT基类构造符的函数的调用。假设有
一个派生类称为"bread"和一个基类称为"food";如果loaf构造符应该有开始
FUNCTION bread::bread(args1):food(args1)的定义。如果它开始FUNCTION
bread::bread(args1):beverage(args1),这个错误信息就会出现。

-4133        只有事件可以被传递。

一个POST语句指定了事件以外的东西。成员函数,句柄,和报表不能被传递。

-4134        类限定在调用一个事件时不允许。

程序指定类了一个跟着一个作用域限定符(:的类名并且这个名称是一个事件。用恰
当的对象名替换这个类名。

-4135        只有共享的类变量能在类的说明之外定义。

一个描述为SHARED的类变量不能在类的说明之外定义。所指定的变量定义是一个在一
个类的说明中没有使用一个SHARED限制符描述的一个变量的完整的定义。

-4136        内部函数<名称>()有错误标记。

一个!copy()函数的正确标记是FUNCTION !copy(obj this_class),带有一个类型相当
于类的对象的参数。一个!derive()函数正确标记的没有参数,只有一对括号。

-4137        嵌入的C代码只允许在编译的4GL程序中。

一个BEGIN_C和END_C块只能包含于编译的-NewEra 程序中。它在一个解释的
(p-dode)-NewEra程序中是无效的。

-4138        CHAR(*)的数组是不允许的。

ARRAY [ ] OF CHAR(*)不是一个合法的类型。

-4139        常数"name"不能用于它自己的定义。

一个常数在定义之前不能使用。因此,一个常数不能用于它自己的定义。

-4140        编译程序不能继续。

这个错误在一个不可恢复的错误发生在编译程序(即:SEG VIO, BUS ERROR)中时输
出。这种情况可能发生在用户明确地终止编译时。否则,如果这个错误又发生,请记
录全部环境并与Informix 技术支持部联系。

-4141        未知的4GL编译标志"name"将被忽略。

这个错误在用户直接调用NewEra产品的元素,而不通过标准接口时产生。可运行fgle
或fglp被传递了一个不理解的编译开关。

-4142        WHENEVER语句中调用的函数不能要求参数。

程序中WHENEVER语句有WHENEVER条件CALL函数的格式,并且被调用的函数被说明为有
一个参数。在这样的条件下的函数调用甚至不能有括号,使用单独的参数。注意main
有隐含的参数,所以它不能用于这种形式的WHENEVER语句。

-4143        WHENEVER语句中调用的函数不能返回值。

程序中WHENEVER语句有WHENEVER条件CALL函数的格式,并且被调用的函数被说明为有
一个RETURNING子句。在这样的条件下的函数调用不能返回任何值。

-4144        在一个INCLUDEd文件中发现一个语法错误。这个结构在上下文中是不能理解
的。

这是一个一般性信息,它表示不能分析一个被INCLUDE语句引入的文件中的NewEra
语句。在错误产生的地方开始,并在程序中向后寻找其它的错误信息和遗漏的标点,
遗漏的END语句,和其它的错误。通常,一个遗漏的END IF是最大的可能。如果这个
错误的原因是不明显的,集中消灭其它的错误,更多数的错误信息和这个将可能也
消失。

-4145        太多错误,编译器将退出。

侦测到太多编译错误。编译器报告在这点发现这个错误并退出。

-4146        指定了太多的输入文件。

可运行的fgle和fglp只允许一个输入文件。

-4147        这个函数中要求一个RETURN语句。

函数说明为有一个指定为非VOID的RETURNING子句,但没有RETUEN语句出现在函数
体中。

-4148        CHAR(*)类型不允许在SQL语句中。

CHAR(*)类型不允许作一个SQL类型。它不能用于CREATE TABLE, ALTER TABLE等。

-4149        这种类型的表达式在SQL语句中不允许。

一个在SQL语句中提到的标识符是一个象-FOREIGN这样的类型,或它命名了一个对象(
一个类的一个成员)或一个记录。

-4150        第一个参数必须是一个ixRow 对象。

调用内置函数packrow()和unpackrow(),第一个参数必须是ixRow类型。

-4151        构造符不能直接调用。

一个构造符不能使用CALL语句直接调用或在一个函数调用中作为一个函数。构造符应
该使用NEW操作符间接调用。

-4152        THROUGH表达式的非法的开始或结束名称。

在一个SQL语句中的一个THROUGH表达式中使用了非法的表达式。

-4153        警告:带有USING子句的常数表达式在编译时基于环境变量的值被求值。

这个警告在一个CONSTANT的一个值包含一个USING子句时产生。环境变量DBFORMAT
和DBMONEY的设置能影响USING操作的结果。这个警告提醒用户在CONSTANT语句中的
USING子句将在编译时被求值并且可能和其它USING子句在运行时求的值不一致。

-4154        一个CHAR或-VARCHAR类型的常数所允许的最大值是255。

在一个CONSTANT说明或定义中,一个字符类型常数的大小不能超越255。

-4155        警告:只有静态游标允许在WHERE -CURRENT OF 子句中。游标名将被处理为
一个静态游标名。

在UPDATE和DELETE语句中,WHERE CURRENT OF cursor-name子句不能引用一个已经被
说明为动态的游标名。

-4156        警告:循环计数可能溢出。

这个警告在一个FOR循环的上限在那个类型的最大值的STEP值之内时产生。作为一个
例子,假设FOR语句试图运行IX从1到32760带有一个步长值为20,并且IX说明为
SMALLINT;编译器将产生这个警告,因为IX将溢出-没有恰当的循环终值。

-4157        语句太复杂。将其简单化。

这个错误在编译过程中侦测到一个堆栈溢出时产生。在Windows中,堆栈的大小是有限
的。试着降低代码的复杂度。复杂的表达式,如太多的串连接('||'),会消费大量的
堆栈。

-4158        -INFORMIX-4GL FORM和WINDOW语句在这个产品中不支持。对屏幕相互作用使
用Visual Class Library。

编译器遇到一个OPEN FORM或OPEN WINDOW语句。在-NewEra中,这些功能是通过
Visual Class Library处理的。咨询Graphical and Connectivity Reference
Manual。其它的语法错误可能是这个错误附加产生的。替换和VCL调用冲突的语句并重
编译可以消除这些附加的错误。

-4159        下标不支持表达式因为它不是一个字符或数组参考。

这个表达式不能被一个下标限定因为这个表达式既不是一个ARRAY类型也不是CHAR()
类型。

-4160        这个表达式不能用做赋值语句的源。

检测到一个不合法的赋值。例如,abc被说明为一个常数,但你试图赋给它一个值。一
些语句会介入赋值:LET, SELECT ... INTO, OPEN CURSOR ... INTO,
FETCH INTO, FOREACH ... INTO, FOR 重复符(被赋值的重复符), INITIALIZE,
和LOCATE。

这个错误只被NewEra返回。

-4161        这个变量没有被定义为一个记录或对象。

所示的变量和一个星号,或和THRU或THROUGH关键字共同使用。而它尚未定义为一个
记录或对象。检查名称的拼写。如果它是你所要的,定位变量定义找出为什么它没有
象期待的那样定义。这个错误只被NewEra返回。

-4162        在报表中不能返回值。

一个报表不能包含一个RETURN语句因为那将使控制返回调用报表的过程。

-4163        类"class"的内部函数"name"不能被直接调用。

classname::classname()这种格式的构造符,是通过NEW操作符调用的。
classname::!copy()是通过COPY操作符调用的。classname::!derive()是通过NEW
和COPY操作符AS的子句调用的。这个错误只被NewEra返回。

-4164        赋值语句中使用的变量类型太复杂。

这种类型的变量不能用于一个赋值。也就是说,不能对一个BYTE或TEXT变量赋一个值(
除非是无值的NULL)。不能对一个数组变量赋任何值。

-4300        语句中包含太多级的函数调用嵌套。

这个语句调用了嵌套于其它函数调用的参数列表中的函数,并超越了四级。最大级的
支持是四,如以下表达式:Afun(2-Bfun(3+Cfun(4*Dfun(5))))。
重写表达式将最内层的函数调用存储于一个变量中,并在表达式中使用这个变量。

-4309        打印不能在包含与报表headers或尾部的一个循环或CASE语句中完成。

4GL需要知道页的headers和尾部需要多少行空间;否则它无法知道一页允许多少明细
行。既然它不能预测一个循环将要执行多少次,或者一个CASE的哪个分支将被执行,
它禁止在与FIRST PAGE HEADER,PAGE HEADER,和PAGE TRAILER节有关的上下文中使
用PRINT语句。必须重整理代码将PRINT语句放在总被执行的地方。

转载自原文链接, 如需删除请联系管理员。

原文链接:Informix 动态服务器错误代码中文详解(二),转载请注明来源!

0