バイナリで格納されている pic S9 (9)V99 comp-3 フィールドを変換しようとしています。6/PS X'000000002000' のような表示です。
この金額は 20.00 のように表示されます。それを pic -9 (9)V99 フィールドに変換する適切な方法を見つけようとしています。
ありがとう
基本的には、2 進化 10 進数のデコードと同じです。
10 進数を 1 つ増やして comp-3 を作成し、「pic x」の動きを行います。
01 WS-AMT-IN PIC S9(009)V99 COMP-3.
01 WS-AMT-IN-X REDEFINES
WS-AMT-IN PIC X(006).
01 WS-AMT-OUT1 PIC S9(009)V999 COMP-3.
01 REDEFINES WS-AMT-OUT1
03 WS-AMT-OUT1-X PIC X(006).
03 PIC s9 comp-3 value zero.
01 WS-AMT-OUT-2 PIC S9(009)V99 COMP-3.
Move X'000000002000' to WS-AMT-IN-X
Move WS-AMT-IN-X to WS-AMT-OUT1-x
Move WS-AMT-OUT1 to WS-AMT-OUT-2
これが私がそれを解決する方法です:
01 WS-ZONENUM11.
05 WS-ZONE9NUM PIC 9(009).
05 WS-ZONE2NUM PIC 9(002).
01 WS-ZONENUM11-RED REDEFINES WS-ZONENUM11
PIC 9(09)V99.
01 WS-AMT-OUT PIC -9(009).99.
01 WS0900-AMT-IN COMP-3 PIC S9(009)V99.
01 WS0900-AMT-IN-RED REDEFINES
WS0900-AMT-IN PIC X(006).
MOVE WS0900-AMT-IN-RED TO WS-WS0900-AMT-IN.
MOVE WS-ZONEX5NM TO WS-ZONE9NUM.
MOVE WS-ZONEX1NM TO WS-ZONE2NUM.
MOVE WS-ZONENUM11-RED TO WS-AMT-OUT.
WS-AMT-OUT は現在、_00000020.00 として表示されます。ここで、_ は記号です (ここの記号は、バイナリ金額フィールドにないため、常に空白になります。