COMP-1場合、
−32768≦x≦32767
となり、上1桁目のビットは負をあらわすので、
16進数を単純に10進数に戻せない場合があると言うことですね。
例えば、
02 REI1 USAGE IS COMP-1
02 REI1-ANS PIC 9(5)
IF REI1 < 0
THEN COMPUTE REI1-ANS = REI1 + 65536
ELSE MOVE REI1 TO REI1-ANS
END-IF
等の工夫が必要という事ですね。
2バイトまでしか使えないので、
4バイトの場合はCOMP-2を使いますがこれも
−2147483648≦y≦2147483647
なので
02 REI2 USAGE IS COMP-2
02 REI2-ANS PIC 9(10)
IF REI2 < 0
THEN COMPUTE REI2-ANS = REI2 + 4294967296
ELSE MOVE REI2 TO REI2-ANS
END-IF
6バイトの場合は
02 REI3.
03 REI31 USAGE IS COMP-1
03 REI32 USAGE IS COMP-2
02 REI31-ANS PIC 9(05)
02 REI32-ANS PIC 9(10)
02 REI3-ANS PIC 9(15)
IF REI31 < 0
THEN COMPUTE REI31-ANS = REI31 + 65536
ELSE MOVE REI31 TO REI31-ANS
END-IF
IF REI32 < 0
THEN COMPUTE REI32-ANS = REI32 + 4294967296
ELSE MOVE REI32 TO REI32-ANS
END-IF
COMPUTE REI3-ANS = REI31-ANS * 4294967296 + REI32-ANS
等の作業が必要と言うことでしょうか?