HELP SYS_SYSPR                              Jonathan Laventhol, 20 March 1985

    sys_syspr(<object>)

SYS_SYSPR is the system's standard printing procedure. It prints objects in
the standard format; examples shown below.

Normally, you use the procedure *PR to print things.  You can change this
procedure to do any kind of printing you want.  The default value for PR is
*SYSPR.  This uses the CLASS_PRINT field of the key of the object to decide how
to print it.  The default for this field is SYS_SYSPR.  So, unless you change
something, objects will get printed with SYS_SYSPR, like this:

    Type of Object              Printed Representation
    ---- -- ------              ------- --------------
    Procedures:                 <procedure foo>
    Vectors:                    {hello there}
    Lists:                      [hello there]
    Nil:                        []
    Strings:                    hello
    Words:                      hello
    Booleans:                   <true> or <false>
    Integers:                   123
    Decimals and Ddecimals:     123.0

All other objects print the dataword of the object, and then any "contents" of
the object, all inside angle brackets.  So, for example, a REF (which is an
object with a single field):

    sys_syspr(consref(8));
    <ref 8>

If you make your own data structures, they will print with the angle bracket
notation.  See HELP *VECTORCLASS, *RECORDCLASS, *CLASSES

--- Notes ------------------------------------------------------------------

    The format for printing procedures is <procedure X> where X will be the
*RECURSIVE_FRONT of the *PDPROPS of the procedure.  This procedure:

    define foo(); ... enddefine

has the word "foo" as its PDPROPS.  Sometimes other information is kept there.

Floating point numbers normally print at least one fractional digit. Beyond
this, trailing zeroes are dropped. ('Normally' means when *POP_PR_PLACES is
bigger than zero.  See below)

--- Control Variables ------------------------------------------------------

Sometimes you might want slightly different printing of certain objects.
There are three variables which control how numbers are printed, and one for
strings.

For numbers, you can change the number of fractional digits printed, the base
of the numbers, and choose between two formats: floating point (123.023)
mantissa and exponent (1.23023e+2, ie 1.23023 * 10**2).

For strings, it is sometimes useful to have them printed with single quote
marks around them.  Then you can tell that they aren't words, and whether
there are any spaces at the end of them.  An example of this is the
"INVOLVING" line of a mishap message.

All of these variables have help files:

*POP_PR_RADIX       Controls the number base which numbers are printed in.
                    (Includes exponent for manitissa and exponent printing)

*POP_PR_EXPONENT    Controls whether floating point numbers are printing in
                    mantissa and exponent form.

*POP_PR_PLACES      Controls the number of places printed after the decimal
                    point in floating point numbers.  If zero, then no decimal
                    point.

*POP_PR_QUOTES      Controls whether single quotes are printed around strings.

See also
HELP *PR         - holds as its value a printing procedure
HELP *SYSPR      - prints its argument: default value of PR


--- C.all/help/sys_syspr
--- Copyright University of Sussex 1992. All rights reserved. ----------
