The RM/COBOL system represents COMP-3 data in packed decimal format with the least significant half-byte holding the sign.
This sign half-byte contains the following values:
Field | RM Sign half-byte value (Hexadecimal) |
---|---|
Unsigned | F |
Signed, Positive | B or F |
Signed, Negative | D |
Consider the following examples:
Value | Picture Clause | RM Representation (Hexadecimal) |
---|---|---|
1234 | PIC 9(5) COMP-3 | 00 23 4F |
1234 | PIC S9(5) COMP-3 | 00 23 4F |
-1234 | PIC S9(5) COMP-3 | 00 23 4D |
The only requirement for conversion is that the sign half-byte has to be changed for signed positive fields to hexadecimal value C. The examples above are represented as follows:
Value | Picture Clause | This COBOL's Representation (Hexadecimal) |
---|---|---|
1234 | PIC 9(5) COMP-3 | 00 23 4F |
1234 | PIC S9(5) COMP-3 | 00 23 4C |
-1234 | PIC S9(5) COMP-3 | 00 23 4D |