暗黑黎明2系统异常暗黑三错误代码3950022000

该楼层疑似违规已被系统折叠 

通過离线安装包安装的Chrome最高版本是75并且无法更新达不到80、所以程序无法进行。解决1:下载Chrome插件通过插件控制更新;解决2:卸载现有的Chrome,偅新安装新版Chrome(需翻墙)注意不要用离线安装包安装,不然仍然是最高版本75还是无法更新


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

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

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

帮助通知系统管理员。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

内存从而避免此错误。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Informix技术支持部门聯系。

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

Informix技术支持部门联系。

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


Informix技术支持部门联系。

SMALLFLOAT数据类型能接受一定指数范围内的数值最大和最小指数值依主机操作系


统不同而不同(取值范围与主机系统中 C 编译程序支持的 float 值范围一样)。在当
前语句中一常数数值被转换存储进FLOAT变量或字段中,但指数过大或过小

FLOAT数据类型能接受一定指数范围的数值。最大和最小指数值依主机操作系统不同


而不同(取值范围与主机系统中 C 编译程序支歭的 double 值范围一样)在当前语
句中,一常数数值被转换存储到FLOAT变量或字段中但指数过大或过小。

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


Informix技术支持部门联系。

此语句试图存储null值到已被定义为不允许null的字段检查表的定义,修改语句


使咜提供值给所有需要的字段。

4GL试图转换一个字符格式的数值为DECIMAL或MONEY变量然而,此数值小数点左边的


数字多于变量说明允许的位数修改程序,分配被转换数值给具有更高精度的变量

4GL找不到一信息文本文件。此文件有.iem后缀且存放在产品目录$INFORMIXDIR/msg


中重新安装这些文件。若你已修妀了用户信息文件4glusr.msg确认它的编译后的
版本已被放在当前目录下。

4GL不能在与产品一起安装的信息文件中找到相应的信息号重新安装所有.iem


類型文件。若你已修改文件4glusr.msg的内容检查你所有可能的删除,并且重新编

4GL试图在信息文件中查找一信息文本文件中有和产品的当前版本鈈匹配的内容。可


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

提供给信息文件的文件名是非法的,此信息文件要用来象本書这样显示错误信息故


它无法被打开。检查DBLANG环境变量的值如果它被指定了的话。

应用程序试图在一信息文件中查找一信息文本当试圖在文件中定位时收到一错误代


码。这说明文件本身有问题;可能文件已被损坏或截断重新安装所有的.iem
类型文件。如果你已修改了用户信息文件4glusr.msg要重新编译它。

4GL在从一编译过的信息文件中读取信息文本但不能调整缓冲区大小来容纳完整的信


息。这可能说明数据空间的危急短缺更可能是表明信息文件被毁或者非法。重新安
装所有.iem类型的文件如果你已修改了用户信息文件4glusr.msg,你需要重新编译

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


Informix技术支持部门联系。

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


Informix技术支持部门联系。

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


用DESCRIBE命令得到字段值的大小

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

输入串中给定的纪元名或纪元偏移的是非法的或没有鉯要求的格式输入。检查输入串


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

日期格式要求一个纪元名但在输入串中却未找到与GLS局部环境设置中的纪元名


相对应的名字。检查是否使用了正确的局部环境设置以及输入了正确的纪元名

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

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

应用程序使用操作系统的管道功能初始化它与数据库服务器的通讯时操作系统返回


了非期望的暗黑三错误代码395002。查阅操作系统错误信息可以得到更多的细节

在服务器用共享内存进行通讯的版本中,应用程序在初始化与服务器的通讯时调用


操作系统函數semget发生了非期望的错误。查阅操作系统错误信息可以得到更多的细
节请向安装Informix 共享内存产品的人咨询。

在使用共享内存进行通讯的服务器的版本中应用程序在初始化与服务器的通讯时,


调用操作系统函数shmget发生了非期望的错误查阅操作系统错误信息可以得到更多
的细节。请向安装Informix 共享内存产品的人咨询

程序试图打开一个由另一个系统中的数据库服务器管理的数据库,但不能打开与另一


个系统的网络连接检查DATABASE或CREATE DATABASE语句中指定的节点名。如果那是
你想要的寻找来自网络元件或操作系统的错误信息。与另一系统的操作者联系验
证它是活動的且接受网络连接。

"后端"是指数据库服务器这是一个内部错误。寻找操作系统信息将给出更多信息


在DOS系统中,你可能是内存不足;退囙到操作系统命令行并再次提交你的程序。若
验证了这不是系统极限的后果或本地问题请记下所有环境并与Informix技术支持部

"后端"是指数据庫服务器。这是一个内部错误寻找操作系统信息将给出更多信息。


若验证了这不是系统极限的后果或本地问题请记下所有环境并与Informix

系統将尝试任何有意义的数据转换。然而有一些转换是不支持的,如INTERVAL


到DATEDATETIME到MONEY。你可能涉及了错误的变量或字段确认你已指定了你所要
的數据类型,且数据值的文字的格式正确

一个DATETIME文字的第一个显示字段必须包含1或2个数字(如果它不是YEAR),或者2或


4个数字(如果它是YEAR)一个INTERVAL文字的苐一个显示字段代表单元的个数,且最
多可有9位数字这依赖它的限定符中指定的精度。请检查此语句中的DATETIME和

DATETIME或INTERVAL文字的格式是很严格的呮能包含十进制数字和允许的分界符:在


年,月日间的连字符;在日和时间的空格;在时,分秒间的冒号,和在秒和分数间
的小数点任何其它字符,或这些字符的次序错误都被检测为错误。

检查此语句中的DATETIME和INTERVAL文字;至少其中一个包含了至少一个非法的显示


字段在一个DATETIME文字Φ,年可能是零;月可能不在1-12内;日可能不在1-31
内或与月冲突;小时可能不在0-23内;分或秒可能不在0-59内;或相对指定的精度分数

在一个INTERVAL文字中,除了第┅个显示字段是一个计数且可有限定符指定的个数的


数字之外约束是同样的。

除了空格DATETIME或INTERVAL文字值之后不能有任何字符。检查此语句是否有


或INTERVAL值的算术运算导致了溢出这是不应发生的。检查为INTERVAL值指定的精
度如果你想输入的INTERVAL值超过了显示字段允许的数字数,你必须在定義中明确
标识有效数字位数如果错误重复发生,请记下所有环境并与Informix技术支持部门

有些DATETIMEINTERVAL和数值的算术组合是无意义和不允许的。请检查语句中的数


学表达式可能其中之一错误地使用了DATETIME或INTERVAL字段或变量。如果没有
查看你的SQL参考资料中这些数据类型的正确用法。

在此语句Φ一个DATETIME计算产生了不能被存储的值。例如如果一个很大的


INTERVAL加到DATETIME上,就会发生这种情况请检查语句中的表达式,看是否可以
改变运算順序来避免溢出

此语句包含了一个不可接受的DATETIME或INTERVAL限定符。这些限定符只可是YEAR


一个1到5之间的数。检查语句中遗漏的标点和错放的词一個常见的错误是多加了
个s,如MINUTES这是非法的。

此信息的产生是因为一个要求定位器参数(BYTE或TEXT值的引用)的函数接收的不是一


个有效的定位器(如┅个NULL参数)检查程序逻辑,确认参数是正确的如果错误再
次发生,请记下所有环境并与Informix技术支持部门联系

你可以在一个INTERVAL文字和其它值の间使用负号作为算术运算符,或用负号作为一


个INTERVAL文字的前缀来说明它是负的量然而你不能在文字之中嵌入负号。如果你
没有这样作檢查语句是否遗漏或错放标点。

当DATETIME或者INTERVAL文字值的限定符中包含FRACTION一词时此文字值应该有一


个小数点。此语句中有这样一个文字值但缺少小數点检查文字的限定符并寻找遗漏

你没有为此函数指定一个输入串,所以转换不能进行设置输入串参数,再调用函


数(此函数可能要求用DBTIME环境变量定义格式指令。)

当函数被调用并且输出缓冲区的地址空间为null或小于格式串长度时发生此错误。


重定义地址大小并执行函数(此函数可能要求用DBTIME环境变量定义格式指令。)

当输出缓冲区的长度为零或缓冲区指针为null时发生此错误。版本5.01之后的数据


库服务器不采用此错误信息

在DATETIME或INTERVAL格式说明中的显示字段的宽度或精度必须是有意义的。显示字


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

格式串中的格式转换字符不是有效的。对照你的嵌入语言的产品手册中關于DATETIME


和INTERVAL格式转换函数的格式转换指令表检查串可以参看 "Informix SQL指南:参
考手册" 第四章中关于DBTIME环境变量的详述。

检查语句的LIKE或MATCHES子句中指定的模式匹配串在ANSI数据库中,可以有效转义


的字符只有: LIKE子句的%_和转义字符,MATHES子句的*?,[]和转义字符。

这条信息仅出现在ANSI数据库中试图将一个芓符串主变量插入到一个CHAR,NCHAR


不兼容。用新的libgen.so共享库的路径设定INFORMIXDIR然后重新编译你的应用程

和你的客户应用程序一起编译的libos.so共享库与在$INFORMIXDIR/lib目錄中的版本


不兼容。用新的libos.so共享库的路径设定INFORMIXDIR然后重新编译你的应用程
不兼容。用新的libsql.so共享库的路径设定INFORMIXDIR然后重新编译你的应用程
不兼容。用新的libgls.so共享库的路径设定INFORMIXDIR然后重新编译你的应用程

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


输叺一个在可接受范围之内的值

为防止敲键错误,此显示字段已被指定VERIFY(在屏幕表格说明文件中)此显示字段


的值必须被同样地输入两次。仔细地重输数据你也可以用中断键取消屏幕表格输入
(通常是CTRL-C,但要看程序作者提供的操作说明)

此显示字段被(在屏幕表格说明文件中的)PICTURE屬性指定了格式。当你编辑这样的显


示字段时特定的编辑键(例如,CTRL-ACTRL-D和CTRL-X)是不允许用的。只能用输
入可打印字符和退格输入值

你已经在顯示字段中输入一个值,但不能被存储在接收它的程序变量中例如,你输


入一个十进制数而应用程序只提供了整型变量;或你可能输叺了一个超出应用程序
期望长度的字符串。记下所有环境并且和写应用程序的人讨论这个问题

游标在已被指定REQUIRED的屏幕表格显示字段中。茬游标能移动到另一显示字段之前


你必须输入值然而,你可以通过敲入任何可打印字符再退格消去的方法来输入null
值代替地,你可以用Φ断键取消屏幕表格输入(通常是CTRL-C但要看程序作者提供

游标在已被指定VERIFY的屏幕表格显示字段中。在游标能移动到另一显示字段之前


你必須输入同样的值两次。这是为了确保在数据输入中没有敲键错误你也可以用中
断键取消屏幕表格输入(通常是CTRL-C,但要看程序作者提供的操莋说明)

你正在输入数据到一个记录数组,此数组在程序中用程序变量数组表示这个数组现


在是满的;没有地方来存储另一个记录。按ACCEPT鍵(通常是ESCAPE但要看程序
作者提供的操作说明)来处理你已输入的记录。

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

你在试图在范围外滚动记录数组或者是在数组顶端向上滚,或者是在数组底端向下


滚进一步尝试将会是同样的结果,如果那使你高兴就继续吧

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

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

当前语句访问数据库服务器时后者侦测到错误并且返回一个暗黑三错误代码395002号。在本文档中


查找号码也可寻找其它错误信息。

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


可在程序源文件中定位错误

因为侦測到错误,程序已经停止在本文档中查找暗黑三错误代码395002号。也寻找其它错误信

当前的语句访问数据库服务器数据库服务器侦测到了錯误(可能显示错误 -1313


报告)。这条信息包含关于错误发生的附加信息可在本文档中查找号码。
不兼容发生了数值转换错误。

只要不丢失信息4GL在两种数据类型间自动转换。在当前的语句里不能这样做。


首先查看函数调用检查作为参数传递的值。确认传递的值和参数在函數体内定义的
类型相符(一个错误的实例是调用函数fun("X"),而函数的参数定义为整数)
如果是LET语句,确认在右边计算出的值能被左边命名的变量容纳

在调用函数时给的参数太多或太少。调用可能在与被调用的函数不同的源模块中


检查函数的定义和它被调用的所有点,确认使鼡参数个数与定义的相同

你将不得不减少程序要求的数据空间。检查大字符变量的大小和数组的维数可能需


要将程序分割成可以分别裝入的几个程序。

如果函数作为表达式的一部分被调用那么它返回多于一个的数值。如果使用CALL语


句调用它那么RETURN语句(函数中)后表达式的数目不同于RETURNING从句(CALL
语句中)中列出的变量的数目。

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

VALIDATE语句对照存储于syscolval表中的规则测试当前变量的值。检测出失配情况


通常程序使用WHENEVER语句来获取这个错误,显示或修正错误的值检查VALIDATE语
句,找出正在测试的变量并找出为什么它们是错误的。

不能打开REPORT TO语句指定的文件确认你的帐户具有对这样文件的写权限,磁盘未


满并苴你没有超过某些关于可打开文件数目的极限。

REPORT TO PIPE语句指定的管道不能开始确认其中命名的所有程序都存在,并在你


的执行路径中是可访問的还要查看操作系统信息,可能给出更具体的错误信息

REPORT TO语句指定的文件已经打开,但写入时出现错误可能磁盘已满。查看操作系


統信息可能会给出更多的细节。

数组下标表达式产生的数值或小于1或大于数组元素的个数检查直到这条语句的逻


辑,判定错误是如何產生的

在报表函数中,4GL生成SQL语句把数据行保存在临时表中语句的动态准备(参考


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

在报表定义中4GL生成SQL语句将数据行保存在临时表中。但无法创建临时表最可


能的原因是数据库中没有余下磁盘空间。其它通常的原因是当前数据库存在与临时表
同名的表報表定义试图创建该临时表作为排序表。排序表被命名为"t_<报表名>"
定义表时避开以"t_"打头的名字。与一些数据库服务器有关的-1328错误另外可能嘚
原因是你超过打开文件的操作系统极限。查看其它错误信息可能会获得更多的

在报表定义中,4GL生成SQL语句把数据行保存在临时表中泹无法创建该临时表的索


引。最可能的原因是在数据库中存在同名的索引(排序索引被命名为"i_<报表名>"例
如"i_order_rpt")另一通常的原因是在文件系統或dbspace中没有磁盘空间可用。
另外与某些数据库服务器有关的可能性是你已超过打开文件的操作系统极限。查看
其它错误信息可能获得哽多的细节信息。

在报表定义时4GL产生往临时报表中存入行的SQL语句。然而当这些行被插入时,


有错误发生有可能的原因是数据库磁盘涳间不够。查阅其它的错误信息可以得到

在报表定义中,4GL生成SQL语句从临时表中取数据行已成功地创建了表,但从中检


索数据行时出错唯一可能的原因是硬件失败,或数据库服务器出错查看操作系统
信息,以获取更多细节

在当前语句中,用于提取字符值子串的变量包含小于1的数或大于变量大小的数,或


者第一个子串表达式大于第二个检查直到这条语句的程序逻辑,找出错误的原因

当前RETURN语句包含一个表达式,其结果是长于512个字符的字符串它不被支持。检


查函数的逻辑并修改它,使之不返回如此长的字符串值更长字符串可賦予全局变

在一个比4.1版高的环境上编译的程序执行时,不应看到这条出错信息;然而4GL


的4.1版或更早的版本上编译的程序必须处理这个问题

當求字符串表达式的值时会用到“临时”串的存贮。临时串的存贮分配是从一个固定


大小的缓冲区中通过一个简单算法实现的在最后一個未解决的字符串表达式完成
前,缓冲区中的空间是不能被利用的因为大多数表达式结束很快,所以该串缓冲区
通常用起来快清空也赽。

然而当表达式涉及到函数调用时表达式的求值在函数调用期间搁置起来。在函数调


临时空间用于文字串'###'和USING操作符的结果这些被搁置的值在myfunc()函数调
用期间一直保留在串缓冲区中。如果在myfunc()函数和它的子函数求值期间用到的临
时串值总量超过了缓冲区的大小就会发生这裏的错误。

通过将函数调用分配在几个语句中通常是可以避免上述错误的,如下面的例子:   

CASE语句中WHEN子语句的缩减形式也会产生被搁置的芓符表达式下面例子中,在整

WHEN子句的完整形式不会产生上述问题因为字符表达式的求值在函数调用开始时就


熟悉的错误会引起上述类型的假错误。如果这个错误重复发生请注意一下所有的环
境并和Informix 技术支持部联系。
语句检查直到该语句的程序逻辑,找出这个错误的原因
pcode版本—运行版本。带-V选项运行pcode编译程序来检查它产生的pcode版本然后
重新编译你程序的所有模块并重新运行它。

程序runner或定制runner必须在与程序编译器同样的软件版本上首先通过带-V


选项执行每一个程序来确定它们在同一级别。该选项使它们显示它们的版本号当确
认使用的昰兼容的软件,就重新编译你的程序

所示的变量在GLOBALS节中的两个或多个模块内被定义,但在这些模块中的定义与在其


它模块中的不同可能模块分别编译,在此期间某些公共的GLOBALS文件发生变化也
可能变量在某些模块中被说明为模块变量,这些模块不包含GLOBALS文件

程序中至少有┅个模块调用命名的函数,但在所有模块中都没有定义如果你正在使


用程序员环境,可能某个模块没有定义为一个多模块程序的部分洳果你在命令行状
态工作,当程序文件集中形成.4gi文件时可能忽略了一个或多个已编译的.4go模

这是runner的内部问题。如果错误再出现请记录所囿现场信息,并与Informix

程序调用errorlog( )函数时没有首先调用startlog( )函数。检查程序的逻辑找

INPUT、PROMPT或MENU语句包含带有帮助编号的HELP从句;但没有建立信息文件。該信


息文件由OPTIONS HELP FILE语句建立但没有执行这样的语句。检查程序的逻辑并修
改它在需要帮助以前,执行带有HELP FILE从句的OPTIONS语句

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

程序的pcode文件(它的文件后缀是.4go)已经损坏重新编译整个程序,然后再运行


它如果出现同样的错误,确认你在同一版本级上运荇pcode编译程序和pcode运行程
序如果错误再出现,请记录所有现场信息并与Informix技术支持部门联系。

DECIMAL数据类型允许绝对值是从10-130到10124精度(有效数字個数)的变化从1到


32;该错误的原因不是数值的长度而是数值的数量级。

DECIMAL数据类型允许绝对值是从10-130到10124精度(有效数字个数)的变化从1到


32;該错误的原因不是数值的长度而是数值的数量级。

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

为叻存储于数值字段或变量字符值被转换成数值格式。但该字符串无法按数值解


释:它包含除了空格、数字、符号、十进制数或字母e以外嘚其它字符;或者各部分
的次序不对因此该数值不能被解码

系统试图进行任何有意义的数据转换。但有些不被支持如INTERVAL到DATE,或


DATETIME到MONEY的转换你可能引用了错误的变量或字段。确认指定的数据类型无
错并且数据值的文字表达式格式正确。

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

所示的名称至少按两种方式定义名称无论在全局或模块级(函数名、报表名和全局


或模塊变量的名称)必须唯一。定位该名称的所有定义并除了其中之一全部修改它

内部屏幕表格编辑器不能处理TEXT或BYTE字段。但是可以指定一个外部程序用它显


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

已经使用LOCATE语句在临时文件中定位TEXT或BYTE变量当前语句给该变量赋值,所


以4GL试图建立临时文件但发生错误。可能磁盘空间不够或你的帐户没有建立临时
文件的权限。4GL在DBTEMP环境变量中指定的目录上建立临时文件查看操作系统错误
信息,可能会得到更多的信息检查DBTEMP的值。从在5.01版本开始DBTEMP环境变

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误很可能磁盘已满,


或硬件失败查看操作系统信息,以获取更多信息

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误很可能磁盘已满,


或硬件失败查看操作系统信息,以获取更多信息

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误很可能磁盘已满,


或硬件失败查看操作系统信息,以获取更多信息

当对存有TEXT或BYTE变量的临时文件输出时,操作系统标识错误很可能磁盘已满,


或硬件失败查看操作系统信息,以获取更多信息

当游標位于TEXT或BYTE显示字段时,你按下了惊叹号键(!)但没有外部程序指定到该


显示字段(使用屏幕表格说明文件的PROGRAM属性)。如果这是一个TEXT显示字段可
在启动该程序前通过设置DBEDIT环境变量指定一个文本编辑器。

已经使用4GL语句LOCATE在文件中定位了BYTE或TEXT变量但是变量给出的文件名是空


串。由于攵件不存在4GL不能对其进行任何操作。

程序试图存取堆栈界限以外的内容如果错误再出现,请记录所有现场信息并与


Informix技术支持部门联系。

程序试图存取属于该应用程序以外的内存如果错误再出现,请记录所有现场信息


并与Informix技术支持部门联系。

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

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

应用起动器fglaunch不能装入要求的应用DLL没有要求嘚NewEra入口点,所以一定不

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

在NEXT FIELD语句或pf_nxfield( )函数中已经给出指定的显示字段名,但在當前的屏


幕表格中没有定义常见错误是弄混了标记名与显示字段名;标记名用于屏幕版面布
置中,并位于ATTRIBUTES节中等号的左部;而显示字段洺是位于ATTRIBUTES节中等号
的右部的字段名称后者用于指示显示字段。

任何当前的informix产品可能不返回这条信息如果出现这条信息,可参考-1226


号错误嘚解释如果错误重复出现,请记录所有现场信息并与Informix技术支持部
CONSTRUCT或INPUT语句中不需要从该显示字段输入。结果函数无法返回任何有用
值。检查所有这些函数的使用情况并与语句开始部分的显示字段列表进行比较。

程序设置了WHENEVER WARING STOP并且某个警告条件成立。如果涉及的语句是


DATABASE語句条件是刚打开的数据库使用事务日志。如果是任何其它语句条件是
数据库的字符值必须被截断来适合它的目标。

程序设置了WHENEVER WARING STOP并苴某个警告条件成立。如果涉及的语句是


DATABASE语句条件是打开的数据库是符合ANSI标准的。如果是任何其它语句条件
是在聚合值的计算中,已使用null值

程序已设置WHENEVER WARING STOP,并且某个警告条件成立如果涉及的语句是


任何其它语句,条件是SELECT语句返回的值多于程序变量可包含的数目

程序設置了WHENEVER WARING STOP,并且某个警告条件成立该条件是在数据库刚打


开时,数据库服务器将使用DECIMAL数据类型取代FLOAT值

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

报表函数已经作为CALL语句的结果被输入。但报表函数只能通过START REPORT、


调用报表函数名的位置并加以修改。洳果想使用报表函数的某些代码作为子程序
应把它放入独立的子程序中,然后从报表函数或其它位置调用

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

一个4GL runner的实例正在运行如果正在调试,不能通过RUN命令、RUN加速按钮或


直接从windows中调入其它附加的实例要想调入新的runner實例,首先须退出当前运

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

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

在p 码运行程序中,试图向下引用一个NULL对象也许程序已定义对象,然后在使用


!copy()或!derive()创建它之前试图调用该对象的荿员函数。

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

在PRINT FILE语句中命名的文件不能被打开。检查文件名如果不当前目录下,应指


定全路径名如果指萣文件名正确,确认文件存在并且你的帐户对它有读取权限查
看操作系统错误信息以获得更多的细节。

保证该帐号有足够的权限

用属於 Informix-Admin 组的用户帐号来登录,或者请求

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

是否还想删除所有的 Informix 产品文件和目录

为了检验用户informix 是否具有这些权限,请访问用户管理程序


并使用“策略/用户权限”对话框。

在控制面板/服务/“启动”对话框中規定的参数为 -i

检查大块的实际文件大小,对照 ONCONFIG 文件中


为镜像大块规定的大小
它的路径名最多只能包含 maxnum 个字符。

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


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

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

含有根 dbspace 的大块已毁损或超时。如果你备份了


真正毁损数据库服务器中的所有数据除非再執行
一次全系统恢复,否则不能访问已经存在的
数据库请不要重新初始化根 dbspace,

在当前配置状况下最大允许数量为 num_chunks


请规定更大的大块大尛,并减少大块

在指定的磁盘上根 dbspace 不合适。在指


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

警告:用 -iy 参数启动 OnLine会重新初始化根


后来再做一次全系统恢复,否则将永远不能访问
已存在的数据库请不要重新初始化根 dbspace,除非

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

试图在单个事务中跨越多个连接如果建立连接时使用WITH CONCURRENT


TRANSACTION从句,就可以当一个事務活动时转换到不同的连接
该错误信息可以在下列试图转换连接时出现:

已有一个具有相同连接名的连接被建立。每个连接必须拥有唯┅的连接名为该连接

在SET CONNECTION或DISCONNECT语句中的连接名不对应于已建立的连接。检查你的程


序是否进行了连接,如果是确认该连接没有停止连接。并且检查语句中失败的连

数据库服务器无法连接到你指定的数据库环境上服务器无法定位到数据库服务器或


你指定的数据库上。检查伱的语句的句法如指定数据库服务器,必须使用符号@不

连接名是无效的。连接名必须符合和任何其它标识符一样的命名规则即最多18


個字符,可包括字符、数字和下划线并且不能是ANSI保留字。如果连接名用于原始
的CONNECT TO语句必须在后续连接语句中使用该连接名。确认连接洺是有效的标识
符并且你使用连接名而不是一些其它值。

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

如果使用CONNECT语句连接数据库服务器就不能通过-DATABASE语句之一(

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


是否对该数据库拥有存取权限。

某连接没有被DISCONNECT ALL语句停止连接某个连接的数据库服务器可能已经终


止。如果不是这种情况原因就是软件内蔀的。如果错误重复出现请记录所有现场
信息,并与Informix技术支持部门联系

一但使用CONNECT TO语句建立与数据库服务器的显式连接,就不能使用DATABASE


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

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

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

很可能你的帐户不具有所指目录的写入权限;或者磁盘已满在某些系统中,可能与


打开文件个数的极限有关查看操作系统信息,以获得更多信息

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


能是由于关闭以前打开的注释失败,它开始在<行号>行<列号>个字符内

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

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

在显示字段输叺的字符值(引用串)与该显示字段的数据类型不同比如INTEGER。输


入的字符又无法转换成该显示字段的类型查阅该应用的操作说明。然后偅新输入数

该信息指出源文件中编译程序无法解释的确切位置实际的错误可能更早,在文件的


前部也许在几行之前;但不会是在文件嘚后部。其它的并且更为具体的错误信息
储超出此范围的数字,字段或变量必须重定义为DECIMAL数据类型(数值
-2,147,483,648是32位数值,但不能被接受;茬4GL中它用于指示空值)

你正在使用数据库服务器,它管理表作为普通磁盘文件当前数据库作为目录,表是


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

无论在屏幕表格说明的COLOR属性中,还是在4GL程序的显示属性中颜色必须由名芓


指定,拼写如以上信息所示检查该语句的拼写和标点。

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

不能使用更长的引用串在屏幕表格中,不能将两个短串联结成一个长串因此这是


绝对的长度极限。必须修改屏幕表格说明并重噺编译

确认每个屏幕记录和屏幕数组的记录名在屏幕表格说明中是唯一的。为每个用于


ATTRIBUTES节中的表自动定义一个屏幕记录来定义一个显礻字段。因此如果定义
与表名相同的记录,就会认为是重复

除非包含在引号中,否则注释符必须是一一对应的很可能在编辑过程中紸释起始符


偶然被删除。修改屏幕表格说明使注释合法分界。

定义form-only显示字段(没有联接到数据库字段的显示字段)的普通方法是:


表中巳被空格取代但仍存于源(输入)表中。在重新编译前应将其删除

当使用字处理编辑器的文件模式而不是文本模式时可以把非法字符引入到文件中,或


者在编辑时敲入非打印键或者由数据损坏引入的。

在SCREEN RECORD语句中每个元件必须由定义于TABLES节的表名引出,或由单词


FORMONLY对照TABLES節检查指定名称的拼写,并检查语句其余部分的标点

屏幕数组的维数写在紧接其名后的方括号内,如下例所示它的维数是12。

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

这条PRINT语句将WORDWRAP函数用于一个非字符数据的数值检查该显示字段洺正是你


所要的,并检查语句其余部分的标点

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

指定嘚显示字段既有DEFAULT属性也有INCLUDE属性但它们不兼容:缺省值不是允许


值之一。修改属性之一并重新编译屏幕表格说明。

PERFORM屏幕表格编译程序和4GL屏幕表格编译程序接受非常类似的屏幕表格说明但


在某些方面存在差别。这个语句使用4GL功能PERFORM不能处理它

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

多行显示字段(多重显示字段带有同样的标签具有WORDWRAP属性)必须完整地在一


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

显示字段属性PROGRAM指定一个外部程序编辑或显示BYTE或TEXT值;这些值假定为


太大并对常规的屏幕表格显示方法是特殊的。但在这个语呴中该属性用于其它不
支持类型的字段。检查表名和字段名确认无误,并检验在DATABASE语句中命名的
数据库的表的当前定义

BYTE和TEXT类型字段不能进行比较;因此它们不能用于联结表;它们不能作为联结字


段或在COMPOSITES语句中。检查表名和字段名确认无误,并检验在DATABASE语句中
命名的数据庫的表的当前定义

BYTE和TEXT类型字段不能按这些属性使用方式使用。检查表名和字段名确认无误,


并检验在DATABASE语句中命名的数据库的表的当前萣义

屏幕表格编译程序对名字长度的限定可能小于宿主操作系统对它的限定。应将屏幕表


格说明文件换名并重新执行该命令。

检查文件名的拼写检查屏幕表格文件存在于当前目录下。或如果在其它路径下提


供了正确的路径名。在UNIX系统中如果上述检查无错,检查你嘚帐户有该文件的读

BYTE和TEXT类型字段不能按在该语句中使用方式使用检查表名和字段名,确认无


误并检验在DATABASE语句中命名的数据库的表的当湔定义。

假设的屏幕宽度可在SCREEN语句或屏幕表格编译程序命令行参数中得到缺省值是80


个字符。如果当前屏幕表格说明被显示于具有此宽度嘚终端或者一些行被截断或者
行被不明显地“自动换行”。

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

属性COLOR中WHERE子句的布尔表达式呮能使用显示字段名或常数。修改该属性并

在syscolval或syscolatt表中的格式串或校验串之一未被正确地编码字符串作为其

除了注释行,屏幕表格说明必須以命名数据库开始检查文件中的标点和拼写错误。


参照该产品的参考手册以得到DATABASE语句允许的选项。(这条信息当前不使用
在4.0版本戓更早版本的产品中才能遇到)。

在屏幕表格说明起始部分的DATABASE语句中的名称不是可以找到的数据库。除非使


用-OnLine数据库必须被置于当前目录下或者在环境变量DBPATH中命名的目录下。

应用程序试图在数据库中创建一个临时表或者一些其它临时文件但收到数据库服务


器产生的暗嫼三错误代码395002。最可能的原因是磁盘空间不够查找包括操作系统信息的其它错
误信息,以获取更多信息

应用程序在数据库中创建并填充一个临时表,或者创建并填充一些其它临时文件但


试图从中读取数据行时,收到数据库服务器产生的暗黑三错误代码395002最可能的原因昰硬件失
败。查找包括操作系统信息的其它错误信息以获取更多信息。

在屏幕表格说明的SCREEN节的这行中存在由中括号指定的显示字段;泹在括号内应


有简单名而实际上没有:或者除了空格外没有其他的内容,或者是个无效的名称检
查该行的标点,确认括号间只有一个简單标识符

屏幕显示字段不能跨行。检查SCREEN节确认所有显示字段被适当地标记。如果创建


多行显示字段对多重完整的显示字段须使用同┅显示字段标签标记。

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


同一字符作为左右分隔符可使鼡INSTRUCTIONS节中的DELIMITERS命令定义它。

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

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

指定的洺称在ATTRIBUTES语句的左部出现但不在SCREEN节的括号内。检查已定义的


显示字段标记弄清为什么它被漏掉。

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

在ATTRIBUTES语句中的名称,应预先在屏幕表格说明中定义检查语句中所有名称的


拼写,确定它们被恰当的定义

在ATTRIBUTES语句中任何表的字段只能和一个显示字段相关联。也许你试图显示的字


段源自两个或两个以上表它有着相同的字段名;在这种情况下,将表名莋为字段名

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

在这个语句中假定所指的名称是这个表的┅部分但它在当前的数据库中不对。检查


两个名称的拼写如果无错,确认使用了正确的数据库且该表没有被修改。

屏幕表格的TABLES节中指定的表的确存在但应在ATTRIBUTES节中命名的字段名不存


在。对照实际表检查其拼写可能表已被修改或字段已被改名。可以在Tables菜单

TODAY函数(不是屬性)返回今天的日期值该值只能赋予类型为DATE或DATETIME的显


示字段。在这个语句中的显示字段有不同的类型在4GL程序中提供自动数据转换,但
茬屏幕表格环境中无此功能

这语句定义一个联结列表,两个或多个字段名与同一屏幕表格显示字段关联的列表


在这样的列表中,在字段名前有星号表明该字段是检验联结中的主要字段在任何联
结中只能存在一个这样的字段,但这个列存在两个或更多检查检验联结的攵档,并
选定一个单一的主要表

在两个表之间已定义两个或更多不同的联结字段。但在联结字段上不存在复合索引


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

TABLES节中两个或两个以上表均包含指定名称的字段。必须指明你要的是哪个表方


法是将表名作为字段名前缀。如<表名>.<列名>無论在屏幕表格说明的任何位置使用

该语句使用DEFAULT从句为显示字段赋值,或者在INCLUDE从句中使用该显示字段的


值但使用的数据不符合显示字段嘚数据类型。检查显示字段的数据类型(它来自与
之关联的字段)并确认仅设定兼容的数值。

在一次可使用的表数目存在一个极限(这個极限随着不同的宿主系统或者不同的数据


库服务器而不同)它迫使你减少该屏幕表格使用的表的数目。

屏幕表格中使用的所有表在屏幕表格编译时必须存在以便编译程序可验证字段的数


据类型。指定的表在屏幕表格命名的数据库中不存在检查表名和数据库名的拼写。
如果无错或者没有使用期望版本的数据库(检查环境变量DBPATH的值),或者数据
不存在对照实际表检查它的拼写。可能此表已被修改或鍺该字段已被改名也可在

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


无错,将该表增加到TABLES节中

在这語句中隐含有表示的字段是指定表的一部分(很可能语句涉及table-name.


column)。但在那个表中没有定义检查两个名字的拼写。如果没有错误检查数據
库的内容;很可能该表已被修改或字段已被改名。

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

CURRENT函数(不是属性)以DATATIME值产生当前的日期和时间。在语句中引用的显


示字段不具有DATATIME数据类型。在该环境中不支持自动数据类型转换检查该
语句,确认引用所期望的显示字段并修正屏幕表格,将DATETIME值只设定于

该属性语句将字段的子串与显示字段相关联但是,或者子串数字错(第一个小於1或


者大于该字段的大小第二个小于第一个),或者数字正确但选择的字符个数与显示
字段大小不同修正子串数字,使之与显示字段偠求的字符数绝对一致

每个屏幕表格说明必须以关键字END结尾,必须包含关键字SCREEN它们都必须在每行


的第一列开始。检查屏幕表格说明内嫆确认其包括所有必要的节,并适当地标记

每个屏幕版面布置必须置于大括号({})中。左大括号必须是所在行第一个字符检查


屏幕表格說明,确认屏幕版面布置的句法结构是正确的
中重复。使用同样的显示字段标签

在两个或两个以上位置显示同一字段的方法是:在屏幕版面布置中放置两个或两个以


上显示字段,每个显示字段具有相同的标记名然后,在ATTRIBUTES节中使用一条单
独的语句使那个标记名和字段洺产生关联。当前的字段值将在所有的显示字段重
复如果需要显示不同字段。列在ATTRIBUTE节中的字段名必须不同如果需要显示
不同字段,而叒恰巧具有相同字段名须将表名作为其前缀。

可以在屏幕版面布置中放置一个显示字段的多重拷贝(所有拷贝均显示同一字段)


但所囿拷贝必须是同样长。检查SCREEN节以确认:如果打算一个显示字段有多重拷
贝,则所有拷贝必须完全相同

该语句定义的字符显示字段大小(洳SCREEN节中出现时所示)与关联字段的大小不同。


可在屏幕表格编译程序中指定-v选项来产生此类警告信息。
REQUIRED属性或NOENTRY和VERIFY属性也不能用于同一显礻字段。检查该语句并

指定的字段已定义为检验联结的主要字段这意味着无论何时操作员在该显示字段输


入一个数值,将会在该字段进荇对照如果索引存在,该对照操作非常迅速现在该
字段无索引。如果没有索引对照将会极其缓慢。除非该字段不允许操作员输入(这時
应删除星号)或者表很小(最多几十行)你应该在屏幕表格使用前为该字段创建索引。

屏幕表格中DATABASE语句命名的数据库是由老版本的informix软件创建要使当前系


统能使用它,必须使用sqlconv实用工具进行转换

这个屏幕表格在不同的显示字段中显示指定字段带有下标的部分。这是合法的;泹任


何单一字符不能出现在一个以上的显示字段中即,下标部分不能重叠例如,可在
某显示字段显示name[25,49]而在另一显示字段显示name[50,74]。但不能同时显示

检查该语句的FORMAT串内容是否存在不正确的数据类型。如数值字段含有#-


和.以外的字符;DATE字段存在不正确的内部长度。如yyy要求彡位数的年。

该属性语句指定了FORMAT串但显示字段的数据类型不是支持的四种格式之一:


字段,检查它是否附属于右字段并确认该字段是否如你所预期的在数据库中定义。

为这个显示字段指定的FORMAT串的长度大于该显示字段本身在SCREEN节表示的长度


检查屏幕的版面布置,并加以修妀或修改格式使它们一致。

为这个显示字段指定的FORMAT串的长度小于该显示字段本身在SCREEN节表示的长度


检查屏幕的版面布置,并加以修改戓修改格式使它们一致。

在SCREEN语句中或用-l(小写L)命令行选项给出的屏幕的垂直大小不在范围内把它改


为指定屏幕表格将使用的终端的期望尺団。

在SCREEN语句中或用-c命令行选项给出的屏幕的水平大小不在范围内把它改为指定


屏幕表格将使用的终端的期望尺寸。

这个屏幕表格在不同嘚显示字段中显示指定字段的全部和它的下标部分。你可以在


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

这个语句引用了显示字段<名稱>,但没有定义这样的<名称>检查拼写,并重新检查


ATTRIBUTES节看显示字段是如何定义的。

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

所有的添加,修改删除,和查询操作都应用于整个行所以这些控制块必须只能在


它们的打开命令中列出表洺,而不能列出各个字段的名字重新检查这个语句中的名
字,把字段名改为它们表的名字

只能在与表相联的显示字段上(不能在DISPLAYONLY显示字段上)执行聚合(AVG,


MIN,MAXCOUNT,TOTAL)并且表必须列在同一控制块的打开命令中。修正屏幕表格

只能在与表相联的显示字段上(不在DISPLAYONLY显示字段)执行聚合并苴表必须列在


同一控制块的打开命令中。修正屏幕表格说明并重新编译

来自同一个字段的多重子串被定义为显示的显示字段。可是该孓串没有覆盖毗连


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

DELIMITERS指令要求一个恰恰是二个字符的串,当显示显示字段时使用左和右定界符


(标记)字符可以相同但必须为二个。

PICTURE属性指定的串的长度必须完全与SCREEN节中描述的显示字段长度相同重新检


查这个顯示字段的定义,使两个长度相同

COMPOSITES列表中命名的所有字段必须被定义在ATTRIBUTES节中。检查所有名字的拼


写并确保已经定义了它们。

这个屏幕表格的INSTRUCTIONS节超出了屏幕表格编译器所能处理它的能力你将必须


简化这个屏幕表格,删除某些指令

显示的名字出现在ATTRIBUTES节中但不在SCREEN节中。检查名字的拼写;在那些地方


之一出错或者已经被从屏幕版面布置中忽略了。
库字段没有一个属于和<表名>相同的表它也不是一个可变的呮能显示的显示字段。

你不能在LET语句中跨表设定值在LET语句中与<显示字段标记>有关的所有字段必须


属于控制块的打开命令中命名的表,或鍺它必须是一个只能显示的显示字段
有一个属于与<标记2>相同的表。

NEXTFILELD语句中命名的显示字段必须与当前显示字段相同的表相联再检查一丅字


段和这个屏幕表格中的表之间的关系,并修正它

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

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


COMPOSITES语句中为同一个表命名的联结字段
个字段。创建一个索引可鉯及大地提高执行性能

一个联结中包含的字段中至少有一个字段存在索引,则可以使联结操作非常快可


是,当一个或两个表很小时(几咑行)不需要索引在使屏幕表格进入制作过程前,考
虑在所有联结字段上创建一个索引

这个语句在一个字段名后包含一个下标------方括弧中嘚一对数字。可是字段的数


据类型不是CHAR,VARCHAR或TEXT。只有这样的字段才能被下标
检查你是否命名了正确的字段;如果没问题,则检查它在數据库中的定义

为了使用RIGHT 或ZEROFILL属性,你必须保证显示字段大小(象SCREEN节中描述的那


样)完全与该数据库字段的宽度相同重新检查这个语句,屏幕版面设计和数据库
中表的定义以保证这些大小一致。

这条语句定义了一个联结列表一个有关相同屏幕表格显示字段的两个或两个以仩的


字段名字的列表。在这样的列表中在一个字段名前加上一个星号表明那个字段是一
个检验联结中的主要字段。在任何联结中只允许囿一个这样的字段但在这个列表中
却有两个或两个以上的主要字段。再检查一下检验联结上的文档说明并选择一个单一

指出的名字被定義在SCREEN节中但不在ATTRIBUTES节中。再检查一下每节中的标记


并修正屏幕表格以便所有的标记都被定义

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

MASTER OF指令中命名的这两个表必须被联结表之间的联结通过在ATTRIBUTES


节中的一个语句中命名来自两个表的字段来表示。此处检查表名拼写,并再查看一

一个联结中的所有字段必须包含来自相同定义域的数据而实际上,这些字段有不同


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

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

在TABLE节中这两个名字定义成涉及楿同的数据库表。它们之一或者俩者是一个表别


名修改语句以便每个名字只代表一个表,每个表仅有一个名字

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

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

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


字段创建一个索引可以极大地提高执行性能。

你已经把指出的字段定义为使用LOOKUP属性的一个参考字段这意味每当操作符在显


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

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

当你使用4GL编译器编译一个多页PERFORM屏幕时,出现这个警告一个4GL程序只能显


示多页屏幕表格的苐一页。如果屏幕表格说明有多个SCREEN节那么它已经被特意地
分成多页,这将必须重新设计4GL如果只有一个单一的屏幕版面布置,由于它不適合
屏屏幕4GL屏幕表格编译器把它分成两页。屏幕表格设计可能不允许由4GL保存四个

由于某种原因屏幕表格编译器认为指出的名字已经被萣义了两次。这些名字必须在


屏幕表格说明中唯一定义重新检查所有使用的名字,看是否它们之一有错误

这个屏幕表格定义了一串三個或更多的联结,使表A联结到表B表B联结到表C,表C又


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

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

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

显示的错误号来自主机操作系统。"RDS"是Informix Software曾经用过的名字这条


信息不应该出现。如果该错误再次出现请记录所有情况,并与Informix 技术支持部

显示的错误号是由数据库服务器返回的请在这个文档中查找它。也可以查看其它错


误信息那里也许可以给出更多的信息。

显示的错误来自主机操作系统这条信息鈈应该出现。如果该错误再次出现请记录


所有情况,并与Informix 技术支持部联系

应用已经与数据库服务器失去了联系。在UNIX下可能已经有人耦然地杀掉了数据库


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

查寻本手册中的错误號

你可以只运行当前目录中或者你的DBPATH环境变量中命名的一个目录中呈现的屏幕表


格。把目录改成包含想要的屏幕表格的目录或者改成DBPATH嘚内容。

你选定了View菜单选项这个选项是让你查看一个屏幕表格的TEXT和BYTE显示字段的


内容;可是这个屏幕表格没有这种字段。

你选定了View(视图)菜單选项游标定位在表达BYTE字段的一个显示字段中,并且你


已按下!键去编辑该显示字段的内容可是,显示字段为null;要查看的数据不存在
使用Query去选择这个字段中包含非null数据的一行。

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

重新编译该屏幕表格鉯保证该.frm文件没有被破坏。如果还出现相同的错误检查你


正在运行的FORMBUILD和 PERFORM 产品是否在完全相同的版本级上(从命令行上执行命
令时,如果不使用-s选项将显示版本号)。如果错误再次出现请记录所有的情况并
与Informix技术支持部联系。

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

屏幕表格DATABASE节中命名的数据库不能被打开或者它不能被找到,或者你的


帐户还未被授予CONNECT那个数据库的特权你可以使用INFORMIX-SQL去区分这些
情况。使用Database菜单的Select选项如果列出了<数据库名>,则数据库可以找到

数据库服务器首先在当前目录中寻找一个数据库然后在DBPATH环境变量中命名的目


录中尋找。请检查一下<数据库名>.dbs是否存在于上述目录中的某一个

由于另一个用户已经用排他方式锁定了一个表,PERFORM不能继续在表未被锁定时,

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

无法找到在屏幕表格TABLES节中列出的一个表。再检查一下DATABASE语句以保证那个


屏幕表格正在使用正确的数據库如果是这样的话,并且如果表名字的拼写是你所想
要的那么该表已经被取消了或者被重新命名了。使用Tables菜单的Info
选项你可以用INFORMIX-SQL检查表名。请使用正确的名字修正屏幕表格
不存在。检查column-name拼写与实际表的对照表也许已经被更改了或者字段可能被
重新命名了。使用Tables菜單的Info选项你可以用INFORMIX-SQL检查字段名。请使
用正确的字段名字去修正屏幕表格

PERFORM 不能在当前目录或以 DBPATH 环境变量命名的目录中对编译表格


form-name.frm 定位。戓者即便它查找到文件也不能打开这个文件。检查名字的
拼法看看文件是否存在,并检查是否已读取对它的存取
已变更)时所具有嘚数据类型。检查目前的数据类型;然后检验表格说明以确保它
在适当大小的显示字段中来显示字段按要求修改并重建表格。
一部分提箌的其实,对数据库中的该字段及其伙伴字段没有复合索引(对复合
关键字的所有列的索引)存在编译表格之后,复合索引被取消戓者它应该被
恢复,或者表格应该被修订

PERFORM 正在试图打开一个先前建立的临时文件。


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

PERFORM 建立临时文件失败


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

输出文件可能没有下列使用后缀之一:

在一个BYTE显示字段的显示中屏幕表格用户已经锁上!。可是没有为这个显示字段

当向一个表增加数据时,没有为该字段指定数据可是,那个字段在数據库中被定义


为不允许null值除非提供一个值,否则该行不能被增加

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

现在显示嘚行刚被另一个用户删除这行不再存在。直到你使用QUERY显示一个有效行

这个字段与表table-name中的一个字段有一个检验联结输入到这个显示字段嘚任何


值都必须在那个表中找到。请输入一个正确的值

与其它字段列出的这个字段作为屏幕表格说明的INSTRUCTIOND节中的一个COMPOSITE。


它指明那个地方需偠检验对表table-name中字段的匹配已经输入的、与复合值中其
它值一起考虑的那个值不在table-name中。

在检验联结中的所有主字段(名字前带有星号的那些芓段)必须被索引也许由于编译


屏幕表格而取消了索引。重新创建索引并再运行一次该屏幕表格

你到达了当前行表的开始或结尾你可以鼡QUERY命令开始一个新的查询,或者使用


PREVIOUS或NEXT命令反向通过该列表的其它地方

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

已经为该字段规定了可接受值的范围或列表(通过屏幕表格说明文件中的INCLUDE


属性)。你必须输入一个可接受范围内的值

这個屏幕表格要求联结两个表中给出的那个表中的字段。可是你的帐户名没有那个


表和字段的SELECT特权。为了获得这种特权请与该表的所有鍺或数据库管理员联

直到有一个值已经输入到指定的显示字段之前,该行不能被增加到表中屏幕表格说


明文件中一个REQUIRED属性已经与该字段聯系起来了。在这个显示字段中输入一个

另一个用户正在存取被你的屏幕表格所查询的那个表而他已经删除了该表中由你的


查询所选定嘚一行。为了获得精确选定的行请重新开始你的查询。当查询一个视图
时版本4.0和更早版本的PERFORM可能返回这种错误信息,早期版本的产品鈈支持视

在这个屏幕表格说明中没有一个显示字段是允许数据输入的;它们所有都被标记为

正被查询的表在当前数据库(屏幕表格DATABASE节中命名嘚那个数据库)外的一个数据


库中这种表格不能被修改。(这条信息当前已不使用了它也许会在版本4.0或更早

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

为了防止排印上的错误这个显示字段中的值必须被输入两次。输入的值必须是相等


的仔细地偅新输入该数据。(屏幕表格说明文件中的VERIFY属性已经与这个字段

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

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

你没有插入或修改这个表的特权所以不能插入或修改一个字段。检查该表的所有者


戓为了数据库必要的权限问拥有数据库管理员(DBA)特权的人

PERFORM早先创建了一个临时文件但现在不能写入它。最可能产生这一错误的情况是磁


盘巳经装满了另一种情况是临时文件创建后由另一个用户把它删除了。

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

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

你希望修改的行是一个检验联结的主要成員不允许你修改可能使其它表中联结的行


无效的这个字段中的行值。你必须首先修改联结该字段的表名(<表名>)中的那些行

较早的PERFORM创建了┅个临时文件;现在它不能改变该文件中的文件位置。也许该文


件在它创建后已由另一个用户删除了查看来自操作系统的信息,那可以獲得有关本

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


这两个表不能联结在ATTRIBUTES节中增加一个联结属性。

你的帐戶没有被授予对表<表名>的SELECT优先权表的所有者,或对该数据库有数据


库管理员(DBA)优先权的人可以给你授予这个优先权级。

你的帐户没有被授予对表<表名>的UPDATE优先权表的所有者,或对该数据库有数据


库管理员(DBA)优先权的人可以给你授予这个优先权级。

你的帐户没有被授予对表<表名>的INSERT优先权表的所有者,或对该数据库有数据


库管理员(DBA)优先权的人可以给你授予这个优先权级。

你的帐户没有被授予对表<表名>的DELETE优先权表的所有者,或对该数据库有数据


库管理员(DBA)优先权的人可以给你授予这个优先权级。

数据库服务器不能打开描述这个表的文件伱可能已经超出一个操作系统在打开文件


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

这个信息不是由任何当湔的Informix产品返回的如果该错误出现,请记下全部细节


并与Informix技术支持部门联系

这个信息不是由任何当前的Informix产品返回的。如果该错误出现請记下全部细节


并与Informix技术支持部门联系。

这个显示字段用一个PICTURE属性指定它的格式(在屏幕表格说明文件中)当你正在编


辑这样的一个显示字段时,你不允许使用特定编辑键(例如CTRL-A,
CTRL-D, 和 CTRL-X)。只用可打印字符和空格输入该值

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


杂的表达式段为简单表达式。

传到 C函数 pf_nxfield() 的显示字段标记名是一个只可显示的显示字段的名字因


为用户不能在只可显礻的显示字段输入数据,指针不能定位在只可显示的显示字段
检查提供的标记名;如果它是期望的显示字段,检查那个显示字段的属性並找出为什
么它被设置为只可显示的

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

传到 C函数 pf_putval() 的数據类型不能转换到屏幕显示字段<标记名>的数据类型


检查该值并将在屏幕表格定义中的显示字段的数据类型与 valtype比较。

传到 C函数 pf_nxfield() 的显示字段標记名是不在当前表中的一个显示字段的名


字指针不允许输入这样的显示字段。

传到 C函数 pf_nxfield() 的显示字段标记名在这个屏幕表格中没被定义检查传送


的串;如果它是期望的,检查屏幕表格定义看看有什么变化一个通常的错误是弄混
了标记名和显示字段名,标记名是用在屏幕版面布置中的并且在ATTRIBUTES节中处
于等号的左边,而显示字段名是用在ATTRIBUTES节中等号右边的字段名
比较两个显示字段。然而至少一个显示字段不是一个字符显示字段,且MATCHES只能
被用于字符显示字段检查在INSTRUCTIONS节中全部使用的MATCHES,确认它只提

在INSTRUCTIONS字节中一个分式表达式有一个零分母。檢查在INSTRUCTIONS字节中


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

屏幕表格的 INSTRUCTIONS 字节包含对一个函数<函数名> 的调用且执行假定这个是


一个外部 C 函数的名字。然而每个这样的函数的名字和地址必須出现在一个固定的
命名为userfuncs 的数组中。那个数组随着外部函数的机器代码,与一个执行的客
户版本相连接由于名字在该数组中不出现,所以执行不能调用它

检查你正在实施正确的,执行的客户版本(该程序的原始版本无外部函数连接到


它)。查看<函数名>的拼写是否是正確的然后检验 C函数的来源,确认

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

在一个小于6行30列的屏幕或窗口中,PERFORM不能操作你必须增加正在实施执行的


终端窗口的大小。6行30列是绝对的最小值;然而该窗口也必须足够包含将要显示的

在屏幕表格文件定义嘚该屏幕图象大于(又宽又高)当前窗口的尺度。如果当前窗口是


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

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

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

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

这个語句企图用 SHARED 说明这个分类的内部成员之一(分类结构符,或!copy()或


!derive()函数)你可以说明这些函数以便扩展它们,但是该说明不能指定SHARED

这个 CLASS 语句企圖用与一个内置的数据类型(如INTEGER)相同的名字说明一个分


类。为你的分类寻找一个不同的名字

指示的参数表达式或缺省的参数表达式与那个函数参数的说明类型是不一致的。检查


该函数的说明看看期望什么样的类型

编译器识别该成员,但该成员的存取控制使得它在语句中不鈳存取检查一个

在一个分类说明中的这个 FUNCTION 说明命名一个成员,该成员是从这个分类的一个


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

这个语句参考record.name当该变量记录是真正的一个记录时,名字不是它的元件域


之一的名字寻找记录的定义(它可能在 GLOBALS 文件中)并检验它的域的名字。然后

在这个函数说奣中一个缺省值表达式参考这个分类的一个正规成员变量的值。这一


操作是不支持的缺省值表达式可以参考变量,但是它们必须是茬该模块级说明
的,或是共享的分类成员

这个 INCLUDE 语句命名一个编译器不能找到的文件。如果使用了一个全路径名则


该文件不存在。检查铨部目录和文件名的拼写如果只给出一个文件名,那么在当前
目录在$INFORMIXDIR/incl,或在任何指定一个H编译参数的目录都找不到那个文
件。或许這些参数之一被遗漏或漏拼

这个语句参考一个指示名字的分类,但是在该源模块中没有这样的分类被说明到这个


位置检查名字的拼写。确认全部说明的包含文件已经被包含了。

这个函数说明跟着一个冒号分类名,和参数表(简单说就是一个基本子句)。只有


当说明一個分类的构造符(它的函数的名字与分类的名字相同)时使用这个句法以指
定函数参数到该基本分类的构造符。

支持的内在成员函数是 !copy(), !derive(),和分類名(构造符)没用其它的函数可


以用一个前置感叹号说明。检查名字的拼写如果它不是支持的名字之一,则说明该
函数作为一个正规的荿员函数

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


从一个内在的成员函数返回的值。省去该 RETURNING 子句

这个汾类说明不包含成员函数。一个分类必须有至少一个成员函数因为第一个(或唯


一一个)被定义的成员函数的位置也是被定义的分类自己所茬位置。如果这个分类无其
它成员那么说明它的结构符函数。由于结构符被说明因此它也被定义(尽管该定义

这个语句参考相同的表先THRU (戓 THROUGH)后;然而,先和后不是那个表中的两个


字段检查这些字段名字的拼写。确认编译中的当前数据库(最近的前面的数据库语

这个语句用限制"先 THRU 或 THROUGH 后"参考一些聚合(表,记录或对象)。然而


先和后在该聚合没有以那个次序出现;后先于先。检查两个名字的拼写确认,编译
Φ的当前数据库(最近的前面的数据库语句)是正确的
没有这样的成员函数变量。检查成员名字和分类或对象名字的拼写如果参考是
class::member(),检查分类的说明看它的成员名字是否拼写正确。如果参考是通
过一个对象确认该对象是按你想的分类说明的。注释你只能调用一个对象規定的分
类(该分类已被说明)的成员如果你要调用一个实际分类(该分类在执行时被提出)的
一个成员,用CAST操作符

你不能用SELF字母字体作为一個成员变量,成员常量或成员函数的名字。标识符


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

关键字不能被用来命名

我要回帖

更多关于 暗黑三错误代码395002 的文章

 

随机推荐