How to Move Decimals to Comp-5 in COBOL

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

LATEST POSTS

How to Use Filter() on List in Python

Helpful python filter() examples that show you the usage of it on lists to filter out the True values.

Loading…

Something went wrong. Please refresh the page and/or try again.

Author: Srini

Experienced software developer. Skills in Development, Coding, Testing and Debugging. Good Data analytic skills (Data Warehousing and BI). Also skills in Mainframe.