内部数据类型

内部数据类型是数据类型中的一种,主要被视表过滤器用来做数据处理。
视表输入数据的内部数据类型,根据输入视表的表格栏类型来确定。有关表格栏类型与内部数据类型之间关系的详细信息,请参照表格栏类型
例如:数值表格栏类型包含数值类型和数值字符型的值。如果输入视表的表格栏类型为数值类型,那么内部数据类型为是数值类型。同样,如果输入视表的表格栏类型为文字类型,内部数据类型为是文字类型。输出视表中的表格栏类型和内部数据类型不同。 例如:使用"二进制数"或"数值字符串"或"Pack数值型(二进制数)"或"Pack数值字符型(十进制数)",虽然类型不同,但是当这些类型在输出视表中显示的是相同的数据类型。

从输入视表来的输入的数据,通过输入视表的表格栏类型的内部类型转换来处理的。当类型转换发生了错误,被作为读取错误。该处理方法可以在错误处理 (输入) 对话框中设置。
处理后,内部数据类型转换为输出视表的表格栏类型并导入到输出视表中。
这时,如果输入表格栏数值为5位精度的相乘,得出10位数值。如果内部数据类型值有效,并且表格栏的精度值没有溢出,那么该处理可以正常进行。 然而,在转换表格栏类型过程中,当10位精度表格栏输出到5位精度表格栏时,将进行数位校验。
也就是说,小数点精度的限制和小数点位置限制是表格栏类型的固有属性。所以,在转换为内部数据类型之后,此过程基于具体(或唯一)内部数据类型参数被完成。

数据通道连接源信息临时文件连接源信息虚拟文件连接源信息情况下,接近与内部数据类型的数据将被输入和输出。因此,类似于其它的连接源信息的表格栏类型,可以在这些视表中被设置。 但是,这将只能用于指定的内部数据类型。这些设置对精度小数点位置是不要求的。

字符类型
字符类型数据是基于文字码的可变长度的字符串数据。
在字符类型中,能处理最大为4096字节。
字符类型的内部数据以内部编码格式来表达。关于内部代码的详细信息,请参照
文字码校验外部码和内部码
字符类型数据基本上表现为输入表格栏的文字码。
如果在表格栏过滤器设置 对话框中设置了"字符常量",文字码将设置为GB18030字符类型。而且,在字符常量中,可选字符串不包含控制码。空格(末尾空格等)不能被自动删除。
有关多个视表间,字符类型数据的文字码转换的详细信息,请参照混合文字码
末尾空格(字符串最后的空格),当从输入视表中读取的字符串被转换为内码时被删除。 在更改了字符类型之后,如果通过表格栏过滤器的函数空格追加的情况下,那么在输出视表中不删除空格输出。有关删除末尾空格的详细信息,请参照空格处理
当二进制连接源信息中指定的文字码与主机相关的文字码时,"汉字区域(包含没有汉字转换码的汉字字符的区域)"在表格栏属性的"汉字 非汉字 区域"上变为可选的。然而,在内码中,"汉字区域"和"非汉字区域"没有区别。
字符类型只包含"汉字转换状态"的属性。字符串的第一个字符是否是"汉字转移状态",是由"汉字 非汉字 区域"决定的。正因如此,"汉字区域"字符类型数据和"非汉字区域"字符类型数据在不知情的场合下联系在一起。
为管理表格栏输出的数据类型,默认的"汉字转移状态"被"汉字 非汉字 区域"属性追加到了数据中。
如果输出表格栏是"汉字区域"表格栏,那么"汉字外"被放置在"汉字转换状态"之后的位置。如果输出表格栏是一个"非汉字区域"表格栏,那么"汉字内"被放置在替代的位置。所以,即使一个"非汉字"数据被放在了"汉字区域"输出表格栏也不会产生错误。
数值类型
数值型数据是通过IEEE格式的浮点型表达的数值。
在数字类型中,数值型中有效数字是14,可以表达的位数是308位。
这意味着大约308位可以被表达,而且头部应该只有14 位。
为视表表格栏设置的精度表示可以表达的位数值。表示"可表达的位数"而不是"有效数字"。
然而,在"Pack数值型(二进制数)"的表格栏类型中,最高可以设置128位"精度"。即使内部数据类型中"可以表示的位数"是308位,该数位的全部数据也不能被输出。只有表格栏类型是"双精度浮点数"时,最大位308 可以被全部输出。
通过
各个表格栏过滤器计算,并按照每个统计视表过滤器来合计的情况下,当数值型超过308位(可以表示的数位)时,就会发生溢出并且作业异常终了。
同样地,在计算数值型数据过程中,当四舍五入后的结果超过有效数字14位(有效数字),被视为无效。
在表格栏转换到数值型,如果大于等于15的精度被转换成数值型,该数值被四舍五入到合理的有效数字的范围内。
而且,十进制数表示的数字值,如文本文件被转换位数值型,因为数值型(浮点值)是二进制表达的数字值,所以该二进制表达在十进制数到二进制数转换的过程中被四舍五入。
十进制数中读取小数并且四舍五入是非常重要的功能。即使当数字值精度是14 或以下时,当读取小数点位置大于或等于1的表格栏数据时,也认为小数点下面的值四舍五入。
也就是说,即使是将被转换为数值型的表格栏数据的转换,也需要执行四舍五入。
在下面情况下使用数值字符型:
当有效数字超过 14 位,或 当小数点四舍五入位置有问题时发生时,请考虑使用数值字符型

表格栏过滤器设置 对话框中指定的"数值常量"将被认为是数值型的值。数值字符型的数值常量不能被直接生成。
在数值常量中,整数可以写成 "1","-2"。实数可以写为"1.2","1.23E3","1.23E-3"。 ("1.23E3" 值代表"1.23 x 103)。
数值类型和数值字符型可以进行混合计算。
数值函数的参数说明中,"数值型"的数据类型代表内部数据类型,包括数值型和可以被给定参数的数值字符型的数据。 对于返回值的说明中所提到的"数值型"数据类型,输出结果如下。
1) 当功能参数中没有指定数值类型时,一般作为数值型被输出。
2) 当数据作为参数在执行过程中被指定为数值型时,将作为数值型被输出。
3) 当数据作为参数来指定包含数值字符型值时,将作为数值字符型被输出。
该规则也有部分例外情况,参照数值函数类型转换函数中各个功能的说明。
但是,如果数值型和数值字符型被结合在一起计算,可能会返回正确结果,所以当执行类似操作的时候请注意。
当用数值型数"0.1"乘以数值字符型(即超过 15 位)的数字值时,显而易见会发生该问题的。当数值型数据的有效数字少于十进制数值型的有效数字时,相对误差会变大。尽管数值型数据,像十进制数"0.1"那样"小数部分不能显示出2的幂",不能表现所有的有效数字。在从十进制转化为二进制时会发生错误。
有效数字中没有太大的差别,在的数值型中计算,都不存在错误的可能性。 但是,如果数值型数据和数值字符型的数据进行计算,因为数值字符型包含的有效数字大于数值型,所以在相同条件下该错误是显而易见的。
在下面的计算中,模拟了几个错误的过程: 2) 小数部分的计算(一个被"10"整除的数,不能乘以"0.1")。
数值字符型
数值字符型是带符号小数以字符串的形式来表示的数据。可以表现的数位与数值字符型的有效数位,其最大位数都为128 位。任何数值字符型和的数值型,可以像数字一样被移动和计算。总的来说,在数值字符型情况下,有效数字也能准确表达数字的小数部分,但是在数值型情况下,当使用的复杂计算的数目时十分有限,处理速度会增长。
通常情况下,当一个整数需要的有效数字小于等于14位的情况下,使用数值型。对于有效数字需要超过14位的整数使用数值型。处理小数点位置以下的值时使用十进制数字类型。
然而,当在视表间转换小数位十进制值(不用在计算像"职工人数")时,请考虑后续的描述。当文本连接源被设置,当使用十进制数值类型而不是数值型时,其连接源存在的格式接近于数值字符型,所以视表中数据将以很高的速度进行转换。
数值型和十进制数值类型使用的高处理速度是否能够改变,取决于视表过滤器的处理,视表的表格栏类型以及将要被处理的数据。 因此,需要估算的实际作业和数据协调性能。
二进制类型
二进制类型包含可变长度的二进制数据。
本产品中不处理二进制类型数据的内容。也就是说,二进制类型只能被用于简单转换,但不能被用于计算过程和字符串处理。
对应二进制类型的带表格栏类型的视表不能在
统计视表过滤器的输出视表中 (它可能在输入视表中,但相关的二进制表格栏不能在输出表格栏中)。在表格栏过滤器设置 对话框中的没有"二进制常量"。
可以用来转换图像数据等。
二进制类型可以处理最大字8192节的二进制数据。

带二进制连接源的视表有"浮点数(二进制)"的表格栏类型,但是这种类型的提供带有一个前提:处理主机的单精度浮点值(非IEEE 格式)。在本产品中,因为浮点数(非IEEE 格式)不能作为计算的数值型来使用,内部数据类型作为二进制类型来处理操作,不是简单的转换。在视表的输入输出期间,"浮点数(二进制)"的表格栏类型与普通二进制数据不同,字节长度是固定的,并且endian是有效的。
日期类型
保存日期或时间的数据。
数据的处理范围"1/1/1900 0:00:00" ~ "12/31/9999 23:59:59"。
有三种可用的表格栏类型对于日期型的命名,"日期","时间" ,"日期时间"。当表格栏类型输出日期型数据,内部数据类型忽略"时间" (时,分,秒)。同样地,当表格栏类型以时间类型来输出值,"日期"的数值 (年,月,日) 被忽略。相反的,当表格栏类型输入时间型数据,
"日期"区域("1/1/1900")会被自动追加上 (即  年,月,日)。
表格栏过滤器设置 对话框中指定的 "日期常量"为内部数据类型生成日期型数据。
在日期常量中,日期时间以"YYYYMMDDHHMMSS"格式且位数固定表达式。在这种情况下,从右侧的单元开始的数字可能被省略。 例如:"20010203",表示为"2/3/2001 0:00:00 am"。 如果给定的值是"2001",那么表现为"1/1/2001 0:00:00 am"。
由于可以从右侧开始被省略,当从表格栏中假定表格栏数据为定日期常量,补充值(1/1/1900)后为日期指定值。 例如:值"13:02:03"表现为"19000101130203"。
选定条件,划分条件,对应于"时间"表格栏类型的输入表格栏子组条件,统计视表过滤器中"时间"表格栏类型的输出表格栏为默认组名,以及"时间"类型中参照表格栏的不匹配记录的指定值,应该以类似于表格栏数据即"HHMMSSS"的格式被指定。