用于复制文件的转换规则

以下是复制文件时系统遵循的转换规则。

表 1 显示了在源文件和目标文件记录格式中的映射字段之间所允许的字段转换。 如果同名字段在源文件格式和目标文件格式之间具有不兼容的属性,那么只能使用 FMTOPT(*NOCHK) 来执行复制。X 表示转换有效,空白表示无效的字段映射。

当映射字符字段时,如果正在复制的字段长于作为复制目标的字段,那么正在复制的字段在右边被截断。例如,当将长度为 10 的字符字段复制到长度为 6 的字符字段中时,ABCDEFGHIJ 变成 ABCDEF。如果正在复制的字段比作为复制目标的字段要短,那么在要复制的字段的右边填充空白。 例如,当将长度为 10 的字符字段复制到长度为 12 的字符字段中时,ABCDEFGHIJ 变成 ABCDEFGHIJxx(x = 空白)。

当映射数字字段,且正在复制的字段长于作为复制目标的字段时,在正在复制的字段的左边和小数点右边进行截断。例如,当将长度为 9 且带有 4 个小数位的分区十进制字段复制到长度为 6 且带有 3 个小数位的分区十进制字段时,00115.1109 变成 115.110。

如果必须在小数点左边截断有效数字,那么不复制该值,并将该字段设置为其缺省值(如果指定了 DFT 关键字,那么是该关键字的参数值,如果未指定,那么是零)。并且,如果因为浮点数值指数太大而丢失有效数字,那么将目标文件字段设置为其缺省值。

如果正在映射数字字段,而其正在复制的字段短于作为复制目标的字段时,那么在正在复制的字段的左边和小数点右边填充零。例如,当将长度为 7 且带有 5 个小数位的压缩十进制字段复制至长度为 10 且带有 6 个小数位的压缩十进制字段时,99.99998 变成 0099.999980。

表 1. 字段转换. (此表不适用于源文件数据由目标文件定义的 FMTOPT(*CVTFLOAT) 或 FMTOPT(*NULLFLAGS)。)
源字段 目标字符、二进制字符或十六进制字段 目标压缩十进制字段 目标分区十进制字段 目标二进制(不带小数位)字段 目标浮点字段 目标二进制字段(带小数位)
字符、二进制字符或十六进制 X          
压缩   X X X X  
分区   X X X X  
二进制(不带小数位)   X X X X  
浮点   X X X X  
二进制(带小数位)           X1
注:
1
只能将带有一个或多个小数位的二进制数字字段复制至带有相同小数位数的二进制字段。