0

バイナリで格納されている pic S9 (9)V99 comp-3 フィールドを変換しようとしています。6/PS X'000000002000' のような表示です。

この金額は 20.00 のように表示されます。それを pic -9 (9)V99 フィールドに変換する適切な方法を見つけようとしています。

ありがとう

4

3 に答える 3

1

基本的には、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 
于 2016-05-09T23:17:04.217 に答える
1

これが私がそれを解決する方法です:

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 として表示されます。ここで、_ は記号です (ここの記号は、バイナリ金額フィールドにないため、常に空白になります。

于 2016-05-09T18:10:42.163 に答える