Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91374238
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-20 22:15:04

作者:oldbank  出处:
-4310        文件不能打印到报表的headers或trailer。

4GL需要知道页的headers和trailer需要多少行空间;否则它无法知道一页允许多少明
细行。既然它不能预测一个文件中有多少行,它禁止在一个headers或trailer打印一
个文件。可以在FIRST PAGE HEADER,PAGE HEADER,和PAGE TRAILER的控制块中书写
PRINT语句。但不能在那些控制块中书写PRINT FILE
语句。

-4312        NEED语句只能用于报表中。

NEED n LINES语句用于一个报表以产生一个有条件的跳页。这只能在与一个报表的
FORMAT节有关联的上下文中。检查是否忽略了REPORT语句。

-4313        NEED语句不能用于报表的headers或trailer。

NEED n LINES语句用于一个报表产生了一个有条件的跳页。而在一个FIRST PAGE
HEADER,PAGE HEADER,和PAGE TRAILER节的上下文中是不相关的。如果它确实产生了
一个跳页,一个未结束的循环会跟着发生。

-4314        程序不能在这一点继续或退出一个菜单因为它现在不在一个MENU语句中。

这个CONTINUE或EXIT语句使用了MENU关键字,而它并不定位于一个MENU语句的COMMAND
节中。或是这个语句错,或是一些其它的错误妨碍4GL识别MENU语句。

-4315        程序不能在这一点退出一个FOREACH语句因为它现在不在一个FOREACH语句中。

这个CONTINUE或EXIT语句使用了FOREACH关键字,而它并不定位于一个FOREACH循环
中。或是语句错,或是一些其它的错误妨碍4GL识别FOREACH语句。

-4316        程序不能在这一点退出一个WHILE语句因为它现在不在一个WHILE语句中。

这个CONTINUE或EXIT语句使用了WHILE关键字,而它并不定位于一个WHILE循环中。或
是这个语句错,或是一些其它的错误妨碍4GL识别WHILE语句。

-4317        程序不能在这一点退出一个FOR语句因为它现在不在一个FOR语句中。

这个CONTINUE或EXIT语句使用了FOR关键字,而它并不定位于一个FOR循环中。或是语
句错,或是一些其它的错误妨碍4GL识别FOR语句。

-4318        程序不能在这一点退出一个CASE语句因为它现在不在一个CASE语句中。

这个CONTINUE或EXIT语句使用了CASE关键字,而它并不定位于一个CASE语句中。或是
语句错,或是一些其它的错误妨碍4GL识别CASE语句。

-4319        该变量名符号的定义超过一次。

所示的变量在本次定义之前至少在其它一个DEFINE语句中出现过。如果这个DEFINE在
一个函数或MAIN节中,则前一个也是如此。如果这个DEFINE在任何函数之外,那么前
一个也在任何函数之外;可能存在于GLOBALS语句包含的文件中。

-4320        该表名符号不是指定数据库的表的名称。

该名称的表未在上一个DATABASE语句命名的数据库中出现。可能在程序中拼错了名
称,或在程序上次编译的时候被漏掉或改名。

-4321        数组最大只能有三维。

在数组名称之后有超过三维的下标。4GL只支持三维以下的数组。检查下标的句法;可
能错误产生于插入了多余的逗号。

-4322        字段名符号不是指定数据库的字段名称。

前面的语句表明该名称的字段是在上个DATABASE语句中命名的数据库的某个表的一部
分。该表存在,但是表中无该字段。检查字段名称的拼法,如确为所要的,那么或是
表已改变,或是不能存取所要的数据库。

-4323        该变量类型过于复杂不能用于赋值语句。

该名称的变量不是一个记录或数组。4GL不支持对整个记录或数组的赋值。在记录的情
况下,必须给单个记录元件赋值,或使用星号标记将一组元件赋给另一组元件。在数
组的情况下,必须使用下标指定一个单独的数组元素。该错误不由高于版本4.1的任何
版本的4GL产生。

-4324        该变量不是字符类型,不能用来容纳连接的结果。

该语句试图连接两个以上的字符串(使用逗号作为连接操作符)并将结果赋给该变
量。不幸的是,这不是一个字符变量。4GL在这种情况下不做自动的字符类型转换。
将连接串赋给字符变量,如果需要将结果作为数值处理,可将串整个地赋给数值
变量。

-4325        在该记录赋值语句中的来源和目的记录在类型/或长度上不匹配。

该语句使用星号标记将该记录的全部元件赋给另一个记录的对应元件。但是,元件不
对应。注意4GL严格地按位置匹配记录元件,第一个对第一个,第二个对第二个,依此
类推;并不按照名称作匹配。如果来源和目的地记录元件个数和类型不同,必须给每
个元件各写一个赋值语句。

-4326        一个NULL值不能用于子串。

NULL值是个整值,它只与完整的变量相关。可以将NULL设定给这个变量(删掉子串标
记)使整个变量包含一个null串。另一种方法,可以给子串设定一个空格使之成为空
白。删除一个串的一部分的唯一方法是写一个表达式提取作为限定的开头和结尾的子
串,然后连接它们。

-4327        该变量不是INTEGER或SMALLINT类型,不能用于循环索引。

在FOR循环中的索引变量必须是一个整型。指定另外一个变量或重新定义该名称的变
量。

-4328        该函数的类型作为一个函数返回值的目标过于复杂。

该名称的变量是一个记录或数组。函数只能返回简单变量或一个简单变量的列表。在
记录这种情况,可使用星号或THRU标号作为速记来指定一个元件列表。

-4329        该变量不是一个记录。只有记录变量可用.*或THROUGH速记扩展。

在所示的名称中使用了圆点-星号(.*)或THRU(或THROUGH)字,它们是指定记录元件
列表的速记符号。不幸的是,变量未定义为记录。确保指定了一个正确的变量并定义
为记录。

-4330        不能从主程序中返回该值。

尽管在主程序中RETURN和EXIT PROGRAM相同,但它不能包括一个返回值。该错误由 
NewEra 程序产生。

-4333        该名称已有不同个数参数的调用。

在前面的程序中已有对同一函数或事件的调用,然而其参数表中参数个数不同。这些
调用中至少有一个是错误的。检查FUNCTION或EVENT语句找到正确的参数名称。然后
检查对它的全部调用是否都正确书写。在函数顶端出现的该错误与错误-4336有关,
首先解决错误-4336,错误-4333通常就消失了。该错误由NewEra 程序产生。

-4334        用于该语句的变量名在它当前的屏幕表格中过于复杂。

4GL使用“过于复杂”的意思是“有过多的元件部分”。在该语句中只能使用简单变量
(含有单一元件的变量)。如果变量名是一个数组,必须提供下标以选择一个元素。如
果是一个记录,必须选择它的一个元件。(但是,如果该语句允许一个变量列表,如
在INITIALIZE语句中,可以使用星号或THRU标号将记录名转换成一元件列表)。

-4335        符号<域名>不是记录的一个元素。

该语句参考了record.field。记录变量确是一个记录,但<域名>不是它的成员之一。
寻找记录的定义(可能在GLOBALS文件中),并检验它的域名称。改正域的拼法。

-4336        该变量名的参数未在函数和报表中定义。

该变量名出现在该函数的FUNCTION语句的参数列表中。但是,它未在函数的DEFINE语
句中出现。全部参数在使用之前都必须在函数中定义。可能写了DEFINE
语句但变量名的拼法与使用时不一致。

-4338        该变量名已定义为参数。

所示名称出现在FUNCTION语句的参数列表中并且在函数主体中至少有两个DEFINE
语句。只允许在DEFINE语句中出现一次。

-4339        4GL运行的数据空间内存不够。

该程序过长不能编译。将它分成多个模块分别编译。

-4340        用于表达式的变量类型过于复杂。

NewEra 使用“过于复杂”的意思是“有过多的元件部分”。在表达式中只能使用简单
变量(即只有单个元件)。如果所示变量是个数组,必须提供一个下标选择一个元素。
如果是一个记录或对象,必须选择它的一个元件。该错误由NewEra 
程序产生。

-4341        聚合函数只允许在报表和SELECT语句中。

类似SUM、AVG和MAX的聚合函数只能在SQL语句和某些用于报表主体上下文中的语句中
出现。在程序语句的普通表达式中不支持它们。可以写一些专用函数在数据上形成该
聚合函数;但是必须使用SUM、AVG和MAX这些保留字之外的名称。

-4342        PAGENO 和 LINENO 只允许用于报表。

这些函数只在报表函数(在一个REPORT语句后)主体中是相关的。只在产生报表的代
码之中,当前页或行的意思才是有意义的。可以通过全局变量使它们在报表之外有
用。例如,可以将类似这样的语句放在PAGE HEADER 控制块中:

LET CURR_PAGE = PAGENO

这样就将当前页设定给一个全局变量(该例中称为CURR_PAGE),代码可以在报表函数
之外检测到它。

-4343        下标不能用于表达式,因为它不是一个字符或数组的参考。

可以在一个能计算出数组的表达式后跟一个下标表达式(包含于方括号中的两个整型
表达式,被一个逗号分开)。可以在一个字符表达式后指定一个子串(方括号中的两
个整型表达式)。但是,在该语句中,带方括号的表达式跟在一个既不是字符也不是
数组的变量后面。检查语句中的标点和变量的说明。包含这段文字的错误-4343由
4.1版的4GL产生。

-4343        下标不能应用在变量上,因为它不是一个字符或数组变量。

可以在数组变数名称的表达式后跟一个下标表达式(包括方括号中的一个或三个
数字)。你可以在数据类型CHAR或VARCHAR的变数名称之後写子串式(方括号括住二个
数字)。然而<变数名>并非这些情形。它若不是你所要的变数,即是它的定义错误。
包含这段文字的错误 -4343 由4.1版本的 4GL产生。

-4344        该变量不能使用字串操作因为它不是一个字符变量。

该语句包含一个标识符后跟一个子串表达式(在方括号内的两个数)。但是,该变量
非CHAR或VARCHAR数据类型。如果确是要得到一个子串,那么可能是变量名错或变量未
正确定义。如果要作为数组下标,那么也是如此。

-4345        该变量已使用了一个子串。

所示的名称后面跟了两个子串表达式(在方括号中的两个数)。这是无效的。可能在
编辑另一个变量名称时,偶然删掉了一些标点。或者意为一个字符项后跟一个选择元
素子串的两维数组,问题在于变量名未被定义为一个数组。

-4346        下标只能包含INTERGER或SMALLINT表达式。

数组下标是整型值,只有整型变量可用来形成它们。该语句包含了一个使用了FLOAT、
CHAR或其它类型的变量的下标。在下标表达式中无自动的数据类型转换。检查语句中
的下标表达式;可能只是简单地键入了错误的变量名。如果并非如此,必须修改程序
使数组下标只存储于整型变量中(你可能希望允许一个带有0缩放因子的DECIMAL值,
但情况不是这样的)。

-4347        该变量不是记录。它不能引用记录元素。

在该语句中变量名后跟一个圆点和另一个变量名。这种方式用于参考一个记录的元
件;但是,该变量名未被定义为一个记录。可能写错了变量名或该变量名未按要求定
义。

-4348        这种类型的聚合必须用于表达式,而不是 '*'。只有-PERCENT 和COUNT聚合
可使用 '*'

在这种语句中的聚合函数是类似于MIN和SUM的类型之一,必须用于指定的字段,或包
含指定字段的表达式。在一个SQL语句中的星号标记意思是“整行”。对于聚合函数来
说,它仅在计算整行时才是有用的。

-4349        PERCENT和COUNT报表聚合不能用在表达式中。

这些聚合简单地计算整个行而不管行的内容。COUNT返回行的计算,PERCENT返回行作
为整个表的百分比的计算。这些函数唯一允许的参数 '*' 的意思是 "一个整行"。它
们不能用于指定的字段或包含指定字段的表达式。

-4350        此时程序不能继续一个FOR循环因为它不在FOR循环中。

CONTINUE FOR语句不在FOR语句和与其匹配的END FOR语句中。也许FOR语句被偶然删掉
了,或者,改成了其它类型的循环,例如FOREACH或WHILE。
-4351        此时程序不能继续一个WHILE循环因为它不在WHILE循环中。

CONTINUE WHILE语句不在WHILE语句和与其匹配的END WHILE 语句中。也许WHILE
语句被偶然删掉了,或者,改成了其它类型的循环,例如FOREACH或FOR。

-4352        此时程序不能继续一个FOREACH循环因为它不在FOREACH循环中。

CONTINUE FOREACH语句不在FOREACH语句和与其匹配的END FOREACH语句中。也许
FOREACH语句被偶然删掉了,或者,改成了其它类型的循环,例如WHILE或FOR。

-4353        这种为报表指定的ORDER BY 或GROUP项的类型对排序无效。

数据库服务器不支持在TEXT或BYTE类型的字段上进行比较的功能。结果,这种类型
的字段不能用于行的排序或成组。使用其它字段(通常主要是表的键)用于排序或
成组。

-4354        聚合函数不能和blob变量一起使用。

该语句将一个聚合函数,例如SUM,赋给一个定义为BYTE或TEXT的变量。这种变量
不在聚合函数的定义域中。修改该语句用的函数的使用,明确是否要将其赋给所要的
变量。

-4356        在该报表中一个页header已经指定。

在一个报表中只允许一个 PAGE HEADER 控制块。用于该控制块的语句必须适合报表的
全部页(除非最前面的页,可在该页写一个FIRST PAGE HEADER块)。找到其它的
PAGE HEADER控制块,将它们的语句合并成一个块。

-4357        在该报表中一个页trailer已经指定。

在一个报表中只允许一个 PAGE TRAILER 控制块。用于该控制块的语句必须适合报表
的全部页。找到其它的PAGE TRAILER控制块,将它们的语句合并成一个块。

-4358        在该报表中第一个header已经指定。

在一个报表中只允许一个FIRST PAGE HEADER控制块。(当然,也只有一个第一页)。
找到其它的FIRST PAGE HEADER控制块,将它们的语句合并成一个块。

-4359        一个ON EVERY ROW 子句已在该表中指定。

在一个报表中只允许一个ON EVERY ROW控制块。找到其它的ON EVERY ROW 控制块,
将它们的语句合并成一个块。

-4360        一个ON LAST ROW 子句已在该表中指定。

在一个报表中只允许一个ON LAST ROW控制块。找到其它的ON LAST ROW 控制块,将它
们的语句合并成一个块。

-4361        组聚合只能在 AFTER GROUP 子句中产生。

用于行组的聚合函数(GROUP COUNT,GROUP PERCENT, GROUP SUM,GROUP AVG, GROUP
MIN, and GROUP MAX) 只能用在报表中一个完整的组处理完成之时,意即,在AFTER 
GROUP控制块中。保证AFTER GROUP语句存在且能被识别。如果需要另一时间的聚合组
的值(例如在一个PAGE TRAILER控制块中),可以在AFTER GROUP
控制块中用LET语句将其保存在一个全局变量中。

-4362        在一个header和trailer中报表不能跳到页头。

当SKIP TO TOP OF PAGE执行时,页尾子句必须跟在页header子句之后执行(为了显示
固定的页尾材料)。如果在header或页尾子句中允许该语句,可能产生死循环。

-4363        在一个header和尾部的循环中报表不能跳行。

4GL需要知道有多少空行将插入页header和页尾中(否则每页中允许多少行的细节是未
知的)。由于一个循环将执行多少次是无法预知的,因此在PAGE HEADER, 
PAGE TRAILER, 以及 FIRST PAGE HEADER 节中的循环之中SKIP语句是禁止使用的。

-4364        初始化/缺省的表达式类型与变量/参数的类型定义不匹配。

指定的变量的初始化表达式不能计算出一个数据类型与其说明的类型相匹配。重写表
达式使之与变量的说明类型相符合。

-4365        中断或退出的延缓只能在主程序中执行。

语句DEFER INTERRUPT 和 DEFER QUIT只能在程序的主要节中出现一次。它们可能在
程序中各出现一次且仅一次。

-4366        变量数与该语句中的数据库字段数不匹配。

必须给语句中声明的每一个字段提供一个变量以便从字段接收或供给数据。可能字段
名和变量名之间比较含糊。当一个程序变量与一个数据库字段重名时,可以强制4GL用
一个 @字符或用它的表名做前缀使用数据库字段。

-4367        中断已经在主程序中被延缓了一次。每个主程序只能延缓中断一次。

语句DEFER INTERRUPT 和 DEFER QUIT只能在程序的主要节中出现一次。它们只能在
程序中各出现一次。

-4368        退出已经在主程序中被延缓了一次。每个主程序只能延缓退出一次。

语句DEFER INTERRUPT 和 DEFER QUIT只能在程序的主要节中出现一次。它们只能在
程序中各出现一次。

-4369        该变量名符号不表示一个已定义的变量。

所示的名称出现之处期待为一个变量,但是它与上下文中使用的DEFINE语句中的任何
变量名称不匹配。检查该名称的拼法,如确为所需要的,则返回寻找它为何未做定
义。可能GLOBALS语句从源模块中忽略了,或它命名了一个非法的文件。也可能这段
代码从另外的函数或模块中拷贝而来,但是DEFINE语句没有随之拷来。

-4370        该变量不能用于确认。

VALIDATE语句只在单个简单变量上操作;不能接受记录或数组。如果已命名了一个记
录,可使用星号标记或THRU标记作为记录的显示字段元件列表的速记。然而,如果一
个记录元件本身是记录,则必须单独地列出每个元件。

-4371        游标在一个程序模块中必须唯一地说明。

在DECLARE cname CURSOR 语句中的标识符cname只能在源文件中的一个DECLARE 
语句中使用。甚至当该DECLARE语句只在一个函数内部出现时也是真的如此。尽管一个
与DEFINE语句一起产生的程序变量是该函数的本地变量,但是在函数内部的游标对整
个模块来说是全局的。

-4372        带该游标名称的游标在本程序模块中尚未说明。必须在使用它之前说明。

在所示的名称出现之处期待为一个已说明的游标名或一个已准备好的语句;但是在程
序此处这个名称的游标(或语句)未被说明(或准备好)。检查该名称的拼法。如确
为所要的,回顾该程序查看是否未说明它-可能所需的DECLARE语句在一个GLOBALS
文件中,而该文件未被包含。

-4373        在该行、该字符处发现一个语法错误。在它的上下文中不能理解该构造。

这是个一般信息,表示不能分析一个4GL语句。所示的行数和字符数表示分析器侦测到
错误的点。但是,这往往不是存在错误的点。从此处开始在程序中回溯,寻找其它的
错误信息和遗漏的标点、END语句及其它的错误。如果该行是END FUNCTION,END MAIN
或END REPORT,一个可能的原因是,可能在很多行以前就缺少另一个END。通常原因是
遗漏了一个ENDIF。如果错误原因不太明显,请集中注意其它更特殊的错误信息,往往
在其它错误改正之后该错误也消失了。

-4374        该语句类型只能用于一个MENU语句。

举例来说这类语句中的SHOW OPTION语句,只能在一个MENU语句的上下文中有意义。回
顾附近的程序查看是否将一个END MENU语句放置错误。如果想要在显示之前设置一个
菜单的外貌,在MENU的作用域中使用一个BEFORE MENU块。

-4375        页的长度太短不能覆盖指定页的header和尾的长度。

检查OUTPUT节中以及任何HEADER和TRAILER子句中的语句。这些语句使用的总行数
必须比指定的页长足够的小,以使可打印比较明细的行。

-4376        不能产生待写的临时文件。

检查在UNIX系统上你的帐户是否在/tmp 目录上有产生文件的许可,或如果DBTEMP
环境变量中指定的目录名与之不同,是否有产生文件的许可。查找从操作系统来的其
它更显式的错误信息。可能是磁盘已满或已达到了所能打开的文件数的最大值。

-4377        不能建立或打开该文件名的输出文件。

在UNIX上,检查你的帐户是否在文件将要产生的目录上具有建立文件的许可。查找从
操作系统来的其它更显式的错误信息。可能是磁盘已满或已达到了所能打开的文件数
的最大值。

-4378        未指定输入文件。

从命令行调用C代码或p-code编译程序,但为未指定已编辑的源文件名。重复该命令,
指定一个源文件名。

-4379        不能打开输入文件<文件名>。

输入了不存在的文件,在UNIX上,你的帐户不许可读取该文件。可能文件名有拼写错
误,或指定的文件路径有错误。

-4380        不能产生列表文件<文件名>。

检查指定的前导文件的目录路径是否正确,在UNIX系统上检查你的帐户是否许可在该
路径上建立文件。检查从操作系统上来的其它更显式的错误信息。可能磁盘已满或达到了允许打开文件数的最大值。
阅读(809) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~