SYNCSORTを使用して、すべてのPackedDecimalフィールドを負の符号値に強制したいと思います。重要な要件は、2番目のニブルが16進数の「D」でなければならないことです。私にはうまくいく方法がありますが、それはあまりにも複雑に思えます。KISSの原則に沿って、誰かがより良い方法を持っていることを望んでいます。おそらく最後の4ビットにビットマスクを使用していますか?これが私が思いついたコードです。もっと良い方法はありますか?
*
*このソートロジックは、すべてのPackedDecimalの金額を強制することを目的としています。
* B'.... 1101'値(16進数'xD')の負の符号があります。
*
SORT FIELDS = COPY
OUTFIL FILES = 1、
INCLUDE =(8,1、BI、NE、B'.... 1..1'、OR、* POSITIVE PACKED DECIMAL
8,1、BI、EQ、B'.... 1111')、* UNSIGNED PACKED DECIMAL
OUTREC =(1:1,7、*+0を含む
8:(-1、MUL、8,1、PD)、PD、LENGTH = 1、
9:9,72)
OUTFIL FILES = 2、
INCLUDE =(8,1、BI、EQ、B'.... 1..1'、AND、* NEGATIVE PACKED DECIMAL
8,1、BI、NE、B'.... 1111')、*符号なしパック10進数ではありません
OUTREC =(1:1,7、*-0を含む
8:(+ 1、MUL、8,1、PD)、PD、LENGTH = 1、
9:9,72)