SyncSort中S9(8)V99格式PD转ZD的正确语法咨询
解决SyncSort中S9(8)V99 PD转ZD的语法问题
嘿,我帮你搞定这个SyncSort的编辑语法问题!你之前的语句有两个小问题导致报错,咱们一步步来修正:
首先,先明确S9(8)V99压缩十进制(PD)的存储长度:这个类型是8位整数加2位小数,总共10位有效数字,每个PD字节能存两位数字,所以整个字段占5字节——你之前写的1,4只取了4字节,数据不完整肯定会出问题。
然后是EDIT短语的格式,要和数字位数严格对应。给你直接上正确的语句:
OUTREC FIELDS=(1,5,PD,ZDF,EDIT=(IIIIIIII.TT))
拆解开解释下:
1,5:准确定位PD字段的起始位置和长度(5字节对应S9(8)V99)PD:告诉SyncSort这个输入字段是压缩十进制类型ZDF:指定要转换为区位十进制(ZD)格式EDIT=(IIIIIIII.TT):编辑模板,IIIIIIII对应8位整数部分(I会自动去掉前导零,只保留有效数字),.TT对应固定的2位小数部分,中间的.就是你要的小数点分隔符
举个实际例子:如果你的PD字段存的是对应12345678.78的压缩值,用上面的语句转换后,输出的ZD格式就是12345678.78,完全符合你的需求。
要是你需要固定长度的输出(比如保留前导零,变成00123456.78这种格式),把模板里的I换成9就行,也就是EDIT=(99999999.TT),根据你的业务需求选就好。
内容的提问来源于stack exchange,提问作者user3274100
相关产品推荐
相关产品推荐

