我想使用 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)