*copyc MLT$ERROR
*copyc MLT$FLOATING_LENGTH
*copyc MLT$OUTPUT_FORMAT
*copyc MLT$STRING_LENGTH
  ?? SKIP := 2 ??
  ?? PUSH (LIST := ON) ??
  { MLD$OFN - Declare mlp$output_floating_number }
  ?? POP ??

  PROCEDURE [XREF] mlp$output_floating_number (source: ^cell;
        source_length: mlt$floating_length;
        target: ^cell;
        format: mlt$output_format;
    VAR actual_target_length: mlt$string_length;
    VAR status: mlt$error);

  { FUNCTION: Convert a floating point number into an ASCII
  {representation.
  {
  { FORMAT describes the format of the result string. The names of the
  {ordinals for the FORMAT field (of the same-named parameter) are
  {derived from FORTRAN-style format descriptors.
  { When the FORMAT field contains MLC$LIST_DIRECTED, the number is
  {output in either a modified E or modified F format. If the absolute
  {value of the number is greater than or equal to 10**-6 and less
  {than 10**9, the modified F format is used; otherwise the modified E
  {format is used. The DIGITS field gives the number of digits to
  {which the number is rounded. Trailing zeroes after the decimal
  {point are always removed. The SCALE_FACTOR field is ignored;
  {rather, a scale_factor of 0 is used for the modified F style, and 1
  {is used for the modified E format. The EXPONENT_STYLE field is also
  {ignored. No exponent occurs for F style, and, for E style, the
  {width of the field will be the minimum needed. If the WIDTH field
  {is insufficient to hold the representation with all DIGITS
  {significant digits, then digits will be truncated from the right of
  {the mantissa in order to fit the representation into WIDTH
  {characters.
  { When the FORMAT field does not contain MLC$LIST_DIRECTED, the
  {EXPONENT_STYLE field contains either 0 or the number of digits in
  {the exponent. When 0 is provided, the normal FORTRAN style of four
  {characters for the exponent is used. When the JUSTIFICATION field
  {indicates right justification, blank fill will occur on the left.
  {Otherwise there is no fill.
  {
  { ACTUAL_TARGET_LENGTH will contain the number of characters written
  {to the target area, excluding any padding.
  {
  { STATUS MLE$BAD_PARAMETERS is returned when FORMAT.WIDTH is
  {inconsistent with the other fields of FORMAT OR when there is a
  {negative # of digits specified in the output format
  {(independent of the value of the floating point number).
  { STATUS MLE$INFINITE is returned whenever the source floating point
  {number is infinite.
  { STATUS MLE$INDEFINITE is returned whenever the source floating
  {point number is indefinite.
  { STATUS MLE$LOSS_OF_SIGNIFICANCE is returned whenever the
  {particular value of the floating point number is not representable
  {in the format specified.
