Conversions and precision
In some numeric conversions, a loss of precision is possible; other conversions preserve precision or result in rounding.
Because both fixed-point and external floating-point items have decimal characteristics, references to fixed-point items in the following examples include external floating-point items unless stated otherwise.
When the compiler converts from fixed-point to internal floating-point format, fixed-point numbers in base 10 are converted to the numbering system used internally.
When the compiler converts short form to long form for comparisons, zeros are used for padding the shorter number.
Conversions that lose precision
When a USAGE COMP-1
data item is
moved to a fixed-point data item
that has more than nine digits, the fixed-point data item will
receive only nine significant digits, and the remaining digits will
be zero.
When a USAGE COMP-2
data item is
moved to a fixed-point data item
that has more than 18 digits, the fixed-point data item will
receive only 18 significant digits, and the remaining digits will
be zero.
Conversions that preserve precision
If a fixed-point data item that has six or
fewer digits is moved to a USAGE COMP-1
data item
and then returned to the
fixed-point data item, the original value is recovered.
If a USAGE COMP-1
data item is
moved to a fixed-point data item
of nine or more digits and then returned to the USAGE COMP-1
data
item, the original value is
recovered.
If a fixed-point data item that has 15 or fewer digits is moved
to a USAGE COMP-2
data item and then returned to
the
fixed-point data item, the original value is recovered.
If a USAGE COMP-2
data item is moved to a fixed-point
(not
external floating-point) data item of 18 or more digits and then
returned to the USAGE COMP-2
data item, the original
value is
recovered.
Conversions that result in rounding
If a USAGE COMP-1
data item, a USAGE COMP-2
data
item, an external floating-point data
item, or a floating-point literal is moved to a fixed-point data
item, rounding occurs in the low-order position of the target data
item.
If a USAGE COMP-2
data item is moved to a USAGE
COMP-1
data item, rounding occurs in the low-order
position of the target data item.
If a fixed-point data item is moved to an external
floating-point data item and the PICTURE
of the fixed-point
data item contains more digit
positions than the PICTURE
of the external floating-point
data item, rounding
occurs in the low-order position of the target data item.