我想使用 SYNCSORT 将所有 Packed Decimal 字段强制为负号值。关键要求是第二个半字节必须是十六进制“D”。我有一个可行的方法,但它似乎太复杂了。按照 KISS 原则,我希望有人有更好的方法。也许在最后 4 位上使用位掩码?这是我想出的代码。有没有更好的办法?
*
* 此排序逻辑旨在强制所有 Packed Decimal 数量为
* 有一个带有 B'....1101' 值(十六进制'xD')的负号。
*
排序字段=复制
外文件=1,
INCLUDE=(8,1,BI,NE,B'....1..1',OR, * 正压缩十进制
8,1,BI,EQ,B'....1111'), * 无符号压缩十进制
OUTREC=(1:1,7, * 包括 +0
8:(-1,MUL,8,1,PD),PD,LENGTH=1,
9:9,72)
外文件=2,
INCLUDE=(8,1,BI,EQ,B'....1..1',AND, * 负压缩十进制
8,1,BI,NE,B'....1111'), * 非无符号压缩十进制
OUTREC=(1:1,7, * 包括 -0
8:(+1,MUL,8,1,PD),PD,LENGTH=1,
9:9,72)