The scale factor can be used to introduce a scaling by any power of 10 between internal and external values when E, F, or G descriptors are used. In principle this could be useful when dealing with data which are too large, or too small, for the exponent range of the floating-point data types of the machine, but in other difficulties usually make this impracticable. The scale factor can result in particularly insidious errors when used with F descriptors and should be avoided by all sensible programmers. The rules are as follows.
The initial scale factor in each formatted transfer is zero. It the
descriptor kP is used, where k is a small (optionally signed)
integer, then it is set to k. It affects all subsequent floating
point
values transferred by the statement. On input there is no effect if
the input field contains an explicit exponent, otherwise
On output the effect depends on the descriptor used. With E
descriptors the decimal point is moved k places to the right and
the exponent reduced by k so the effective value is unaltered.
With F descriptors there is always a scaling:
With G descriptors the scale-factor is ignored if the value is in
the
range for F-type output, otherwise it has the same effects as with
E descriptors.