While moving decimal value to Comp-5, just you need to consider these since it stores only integer portion, and ignores decimal portion.
Suppose, you have defined a field with PIC 9(07)v99 and you moved value from this data type to comp-5.
COBOL Example: How to use COMP-5.
01 My-data PIC 9(07)v99 value 1234567.10.
01 Out-data comp-5 or S9(07)v99 Comp-5.
MOVE My-data to Out-data.
The result will be: 1234567
Resolution
The key point I want to share is Comp-5 stores only integer part and truncates decimal part.
Note: So, you cannot use comp-5 as S9(07)v99, but you can use as S9(09).
More details of COMP-5
- Comp-5 stores the data in the form of Binary ( because of binary it doesn’t support decimals)
- It has boundaries. It stores as 2/4/8 bytes internally
- S9(1) to S9(4) => 2 bytes(half)
- S9(5) to S9(9) ==> 4 bytes(full)
- S9(10) to S9(18) ==> 8 bytes(double)
- With or without ‘S’ you can define the Comp-5 data types
References
- The complete Information of COMPUTATIONAL-5 or COMP-5 Phrase (Binary)