Data format conversions
When the code in your program involves the interaction
of items that have different data formats, the compiler converts those
items either temporarily, for comparisons and arithmetic operations,
or permanently, for assignment to the receiver
in a MOVE
or COMPUTE
statement.
A conversion is actually a move of a value from
one data item to another. The compiler performs any conversions that
are required during the execution of arithmetic or comparisons by
using the same rules that are used for MOVE
and COMPUTE
statements.
When possible, the compiler performs a move to preserve numeric value instead of a direct digit-for-digit move.
Conversion generally requires additional storage and processing time because data is moved to an internal work area and converted before the operation is performed. The results might also have to be moved back into a work area and converted again.
Conversions between fixed-point data formats (external decimal, packed decimal, or binary) are without loss of precision provided that the target field can contain all the digits of the source operand.
A loss of precision is possible in conversions between fixed-point data formats and floating-point data formats (short floating point, long floating point, or external floating point). These conversions happen during arithmetic evaluations that have a mixture of both fixed-point and floating-point operands.