(FILECREATED "22-Sep-86 15:43:08" {ERIS}<LISPCORE>SOURCES>ERROR-RUNTIME.;2 26427  

      changes to:  (VARS ERROR-RUNTIMECOMS)

      previous date: " 9-Sep-86 18:55:29" {ERIS}<LISPCORE>SOURCES>ERROR-RUNTIME.;1)


(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT ERROR-RUNTIMECOMS)

(RPAQQ ERROR-RUNTIMECOMS 
       ((COMS (* ;;; "Internal functions.")
              (FUNCTIONS CONDITION-TYPEP CONDITION-SUBTYPEP CONDITION-TYPE-OF 
                     FAKE-TYPEP-FOR-CONDITIONS FAKE-SUBTYPEP-FOR-CONDITIONS 
                     FAKE-TYPE-OF-FOR-CONDITIONS)
              (FUNCTIONS CONDITION-HANDLER CONDITION-REPORTER)
              (VARIABLES *CONDITION-HANDLER-BINDINGS* *PROCEED-CASES*)
              (FUNCTIONS CHECK-TYPE-FAIL ECASE-FAIL ASSERT-FAIL)
              (FUNCTIONS MAKE-INTO-CONDITION RAISE-SIGNAL DEFAULT-HANDLE-CONDITION 
                     DEFAULT-PROCEED-REPORTER FIX-INHERITANCE-LINKS DEFAULT-PROCEED-TEST 
                     TEST-PROCEED-CASE))
        (COMS (* ;;; "Pre-defined condition types.")
              (STRUCTURES CONDITION SIMPLE-CONDITION WARNING SIMPLE-WARNING OLD-BREAK1 
                     SERIOUS-CONDITION CL:ERROR OLD-INTERLISP-ERROR SIMPLE-ERROR ASSERTION-FAILED 
                     CELL-ERROR UNBOUND-VARIABLE UNDEFINED-FUNCTION NO-PROCEED-TEST 
                     INDEX-BOUNDS-ERROR)
              (COMS (FUNCTIONS PRETTY-TYPE-NAME REPORT-TYPE-MISMATCH)
                    (STRUCTURES TYPE-MISMATCH))
              (STRUCTURES CONTROL-ERROR ILLEGAL-GO ILLEGAL-RETURN ILLEGAL-THROW BAD-PROCEED-CASE)
              (STRUCTURES CALL-ERROR TOO-MANY-ARGUMENTS TOO-FEW-ARGUMENTS)
              (STRUCTURES STREAM-ERROR READ-ERROR END-OF-FILE)
              (STRUCTURES STORAGE-CONDITION STACK-OVERFLOW STORAGE-EXHAUSTED))
        (COMS (* ;;; "Exported symbols.")
              (VARIABLES *BREAK-ON-WARNINGS*)
              (FUNCTIONS MAKE-CONDITION SIGNAL CL:ERROR CERROR WARN CL:BREAK DEBUG)
              (STRUCTURES PROCEED-CASE)
              (FUNCTIONS FIND-PROCEED-CASE COMPUTE-PROCEED-CASES INVOKE-PROCEED-CASE)
              (FUNCTIONS ABORT PROCEED USE-VALUE))
        (COMS (FUNCTIONS SIMPLE-FORMAT)
              (P (MOVD? (QUOTE SIMPLE-FORMAT)
                        (QUOTE FORMAT))))
        (PROP FILETYPE ERROR-RUNTIME)))



(* ;;; "Internal functions.")

(DEFMACRO CONDITION-TYPEP (DATUM TYPE) (BQUOTE (FAKE-TYPEP-FOR-CONDITIONS (\, DATUM)
                                                      (\, TYPE))))

(DEFMACRO CONDITION-SUBTYPEP (T1 T2) (BQUOTE (FAKE-SUBTYPEP-FOR-CONDITIONS (\, T1)
                                                    (\, T2))))

(DEFMACRO CONDITION-TYPE-OF (DATUM) (BQUOTE (FAKE-TYPE-OF-FOR-CONDITIONS (\, DATUM))))

(DEFUN FAKE-TYPEP-FOR-CONDITIONS (DATUM TYPE)                (* amd " 9-Apr-86 17:41")
   (AND (CONSP DATUM)
        (SYMBOLP (CAR DATUM))
        (CONDITION-SUBTYPEP (CAR DATUM)
               TYPE)))

(DEFUN FAKE-SUBTYPEP-FOR-CONDITIONS (T1 T2) (VALUES (AND (for old T1 by (GETPROP T1 (QUOTE 
                                                                                   %%CONDITION-PARENT
                                                                                           ))
                                                            while T1 thereis (EQ T1 T2))
                                                         T)
                                                   T))

(DEFUN FAKE-TYPE-OF-FOR-CONDITIONS (DATUM) (CAR DATUM))

(DEFMACRO CONDITION-HANDLER (CONDITION-TYPE) (BQUOTE (GETPROP (\, CONDITION-TYPE)
                                                            (QUOTE %%CONDITION-HANDLER))))

(DEFMACRO CONDITION-REPORTER (CONDITION-TYPE) (BQUOTE (GETPROP (\, CONDITION-TYPE)
                                                             (QUOTE %%CONDITION-REPORTER))))

(DEFVAR *CONDITION-HANDLER-BINDINGS* NIL "Condition handler binding stack")

(DEFVAR *PROCEED-CASES* NIL "Active proceed case stack")

(DEFUN CHECK-TYPE-FAIL (PROCEEDABLE PLACE VALUE DESIRED-TYPE MESSAGE)
   (PROCEED-CASE (CL:ERROR (QUOTE TYPE-MISMATCH)
                        :NAME PLACE :VALUE VALUE :DESIRED-TYPE DESIRED-TYPE :MESSAGE MESSAGE)
          (USE-VALUE (IGNORE NEW)
                 :REPORT
                 (FORMAT T "Change the value of ~A" PLACE)
                 :TEST
                 (CL:LAMBDA (CONDITION)
                        (AND PROCEEDABLE (CONDITION-TYPEP CONDITION (QUOTE TYPE-MISMATCH))))
                 NEW)))

(DEFUN ECASE-FAIL (PROCEEDABLE PLACE VALUE SELECTORS) (PROCEED-CASE (CL:ERROR 
                                                                       "The value of ~S, ~S,~&is ~?." 
                                                                           PLACE VALUE 
                                   "~#[wrong~;not ~S~;neither ~S nor ~S~:;not~@{~#[~; or~] ~S~↑,~}~]" 
                                                                           SELECTORS)
                                                             (USE-VALUE (IGNORE V)
                                                                    :TEST
                                                                    (CL:LAMBDA (CONDITION)
                                                                           (CL:DECLARE (IGNORE 
                                                                                            CONDITION
                                                                                              ))
                                                                           PROCEEDABLE)
                                                                    :REPORT
                                                                    (FORMAT T 
                                                                           "Change the value of ~A" 
                                                                           PLACE)
                                                                    V)))

(DEFUN ASSERT-FAIL (STRING &REST ARGS) (PROCEED-CASE (CL:ERROR (QUOTE ASSERTION-FAILED)
                                                            :FORMAT-STRING STRING :FORMAT-ARGUMENTS 
                                                            ARGS)
                                              (PROCEED NIL :REPORT "Re-test assertion")))

(DEFUN MAKE-INTO-CONDITION (DATUM DESIRED-TYPE ARGS CALLER)
   (if (CONDITION-TYPEP DATUM (QUOTE CONDITION))
       then DATUM
     else (TYPECASE DATUM (SYMBOL (CL:WHEN (CONDITION-SUBTYPEP DATUM (QUOTE CONDITION))
                                         (CL:APPLY (FUNCTION MAKE-CONDITION)
                                                DATUM ARGS)))
                 (STRING (MAKE-CONDITION DESIRED-TYPE :FORMAT-STRING DATUM :FORMAT-ARGUMENTS ARGS))
                 (T (CL:ERROR "Bad argument to ~S: ~S." CALLER DATUM)))))

(DEFUN RAISE-SIGNAL (C) (for CHB-TAIL on *CONDITION-HANDLER-BINDINGS* bind BINDING
                           eachtime (SETQ BINDING (CAR CHB-TAIL))
                           do (if (CONDITION-TYPEP C (CAR BINDING))
                                  then (LET ((*CONDITION-HANDLER-BINDINGS* (CDR CHB-TAIL)))
                                            (FUNCALL (CDR BINDING)
                                                   C))))
                        (DEFAULT-HANDLE-CONDITION C)
                        C)

(DEFUN DEFAULT-HANDLE-CONDITION (CONDITION) (CL:DO ((TYPE (CONDITION-TYPE-OF CONDITION)
                                                          (GETPROP TYPE (QUOTE %%CONDITION-PARENT))))
                                                   ((NULL TYPE))
                                                   (LET ((HANDLER (CONDITION-HANDLER TYPE)))
                                                        (CL:WHEN HANDLER (FUNCALL HANDLER CONDITION))
                                                        )))

(DEFUN DEFAULT-PROCEED-REPORTER (PC STREAM) (FORMAT STREAM "Proceed-type: ~A" (PROCEED-CASE-NAME
                                                                               PC)))

(DEFUN FIX-INHERITANCE-LINKS (NAME NEW-PARENT) (LET ((OLD-PARENT (GET NAME (QUOTE %%CONDITION-PARENT)
                                                                      )))
                                                    (CL:UNLESS (OR (EQ NEW-PARENT OLD-PARENT)
                                                                   (NULL OLD-PARENT))
                                                           (LET ((CHILDREN (GET OLD-PARENT
                                                                                (QUOTE 
                                                                                 %%CONDITION-CHILDREN
                                                                                       ))))
                                                                (SETF (GET OLD-PARENT (QUOTE 
                                                                                 %%CONDITION-CHILDREN
                                                                                             ))
                                                                      (DREMOVE NAME CHILDREN))))
                                                    (CL:PUSHNEW NAME (GETPROP NEW-PARENT (QUOTE
                                                                                          
                                                                                 %%CONDITION-CHILDREN
                                                                                          )))
                                                    (SETF (GET NAME (QUOTE %%CONDITION-PARENT))
                                                          NEW-PARENT)))

(DEFMACRO DEFAULT-PROCEED-TEST (PROCEED-TYPE) (BQUOTE (GETPROP (\, PROCEED-TYPE)
                                                             (QUOTE %%DEFAULT-PROCEED-TEST))))

(DEFUN TEST-PROCEED-CASE (PC CONDITION &AUX TEST) (COND
                                                     ((SETF TEST (PROCEED-CASE-TEST PC))
                                                      (FUNCALL TEST CONDITION))
                                                     ((AND (PROCEED-CASE-NAME PC)
                                                           (SETF TEST (OR (DEFAULT-PROCEED-TEST
                                                                           (PROCEED-CASE-NAME PC))
                                                                          (NO-PROCEED-TEST
                                                                           (PROCEED-CASE-NAME PC)))))
                                                      (FUNCALL TEST CONDITION))
                                                     (T      (* "This case shouldn't happen")
                                                        (PROCEED-CASE (CL:ERROR 
                                                                "Couldn't find test function for ~S." 
                                                                             PC)
                                                               (PROCEED NIL :TEST TRUE :REPORT 
                                                                     "Assume proceed case is enabled" 
                                                                      T)))))




(* ;;; "Pre-defined condition types.")

(DEFINE-CONDITION CONDITION CONDITION)

(DEFINE-CONDITION SIMPLE-CONDITION CONDITION :REPORT (CL:APPLY (FUNCTION FORMAT)
                                                            T
                                                            (SIMPLE-CONDITION-FORMAT-STRING CONDITION
                                                                   )
                                                            (SIMPLE-CONDITION-FORMAT-ARGUMENTS 
                                                                   CONDITION))
                                         FORMAT-STRING FORMAT-ARGUMENTS)

(DEFINE-CONDITION WARNING CONDITION)

(DEFINE-CONDITION SIMPLE-WARNING WARNING :REPORT (CL:APPLY (FUNCTION FORMAT)
                                                        T
                                                        (SIMPLE-WARNING-FORMAT-STRING CONDITION)
                                                        (SIMPLE-WARNING-FORMAT-ARGUMENTS CONDITION))
                                       FORMAT-STRING FORMAT-ARGUMENTS)

(DEFINE-CONDITION OLD-BREAK1 CONDITION :REPORT (DESTRUCTURING-BIND (MESS1 MESS2 MESS3)
                                                      (OLD-BREAK1-LIST CONDITION)
                                                      (ERRORMESS1 MESS1 MESS2 MESS3))
                                   LIST)

(DEFINE-CONDITION SERIOUS-CONDITION CONDITION)

(DEFINE-CONDITION CL:ERROR SERIOUS-CONDITION)

(DEFINE-CONDITION OLD-INTERLISP-ERROR CL:ERROR :REPORT (CL:IF (EQ (OLD-INTERLISP-ERROR-NUMBER 
                                                                         CONDITION)
                                                                  17)
                                                              (DESTRUCTURING-BIND (MESS1 . MESS2)
                                                                     (OLD-INTERLISP-ERROR-MESSAGE
                                                                      CONDITION)
                                                                     (ERRORMESS1 MESS1 MESS2
                                                                            (QUOTE ERROR)))
                                                              (ERRORM (LIST (
                                                                           OLD-INTERLISP-ERROR-NUMBER
                                                                             CONDITION)
                                                                            (
                                                                          OLD-INTERLISP-ERROR-MESSAGE
                                                                             CONDITION))))
                                            NUMBER MESSAGE)

(DEFINE-CONDITION SIMPLE-ERROR CL:ERROR :REPORT (CL:APPLY (FUNCTION FORMAT)
                                                       T
                                                       (SIMPLE-ERROR-FORMAT-STRING CONDITION)
                                                       (SIMPLE-ERROR-FORMAT-ARGUMENTS CONDITION))
                                     FORMAT-STRING FORMAT-ARGUMENTS)

(DEFINE-CONDITION ASSERTION-FAILED SIMPLE-ERROR :REPORT (CL:APPLY (FUNCTION FORMAT)
                                                               T
                                                               (OR (ASSERTION-FAILED-FORMAT-STRING
                                                                    CONDITION)
                                                                   "Assertion failed.")
                                                               (ASSERTION-FAILED-FORMAT-ARGUMENTS
                                                                CONDITION)))

(DEFINE-CONDITION CELL-ERROR CL:ERROR NAME)

(DEFINE-CONDITION UNBOUND-VARIABLE CELL-ERROR :REPORT (FORMAT T "Unbound variable: ~S." (
                                                                                UNBOUND-VARIABLE-NAME
                                                                                         CONDITION)))

(DEFINE-CONDITION UNDEFINED-FUNCTION CELL-ERROR :REPORT (FORMAT T "Undefined function: ~S."
                                                               (UNDEFINED-FUNCTION-NAME CONDITION)))

(DEFINE-CONDITION NO-PROCEED-TEST UNDEFINED-FUNCTION :REPORT (FORMAT T 
                                                            "No test specified for proceed case: ~S."
                                                                    (UNDEFINED-FUNCTION-NAME 
                                                                           CONDITION)))

(DEFINE-CONDITION INDEX-BOUNDS-ERROR CELL-ERROR :REPORT (FORMAT T "Index out of bounds: ~D."
                                                               (INDEX-BOUNDS-ERROR-INDEX CONDITION))
                                           INDEX)

(DEFUN PRETTY-TYPE-NAME (TYPESPEC) (CONCAT "a " TYPESPEC))

(DEFUN REPORT-TYPE-MISMATCH (C S) (FORMAT S "The value of ~A, ~A, is not ~A." (TYPE-MISMATCH-NAME
                                                                               C)
                                         (TYPE-MISMATCH-VALUE C)
                                         (if (TYPE-MISMATCH-MESSAGE C)
                                             then (TYPE-MISMATCH-MESSAGE C)
                                           else (PRETTY-TYPE-NAME (TYPE-MISMATCH-DESIRED-TYPE C)))))

(DEFINE-CONDITION TYPE-MISMATCH CELL-ERROR :REPORT-FUNCTION REPORT-TYPE-MISMATCH VALUE DESIRED-TYPE 
                                      MESSAGE)

(DEFINE-CONDITION CONTROL-ERROR CL:ERROR)

(DEFINE-CONDITION ILLEGAL-GO CONTROL-ERROR :REPORT (FORMAT T "GO to a non-existant tag: ~S."
                                                          (ILLEGAL-GO-TAG CONDITION))
                                   TAG)

(DEFINE-CONDITION ILLEGAL-RETURN CONTROL-ERROR :REPORT (FORMAT T "RETURN to non-existant block: ~S."
                                                              (ILLEGAL-RETURN-TAG CONDITION))
                                       TAG)

(DEFINE-CONDITION ILLEGAL-THROW CONTROL-ERROR :REPORT (FORMAT T "Tag for THROW not found: ~S."
                                                             (ILLEGAL-THROW-TAG CONDITION))
                                      TAG)

(DEFINE-CONDITION BAD-PROCEED-CASE CONTROL-ERROR)

(DEFINE-CONDITION CALL-ERROR CONTROL-ERROR CALLEE)

(DEFINE-CONDITION TOO-MANY-ARGUMENTS CALL-ERROR :REPORT (FORMAT T "Too many arguments to ~A: ~A"
                                                               (TOO-MANY-ARGUMENTS-CALLEE CONDITION)
                                                               (TOO-MANY-ARGUMENTS-EXTRA-VALUES
                                                                CONDITION))
                                           EXTRA-VALUES)

(DEFINE-CONDITION TOO-FEW-ARGUMENTS CALL-ERROR :REPORT (FORMAT T "Too few arguments to ~A"
                                                              (TOO-FEW-ARGUMENTS-CALLEE CONDITION)))

(DEFINE-CONDITION STREAM-ERROR CL:ERROR STREAM)

(DEFINE-CONDITION READ-ERROR STREAM-ERROR)

(DEFINE-CONDITION END-OF-FILE READ-ERROR)

(DEFINE-CONDITION STORAGE-CONDITION SERIOUS-CONDITION)

(DEFINE-CONDITION STACK-OVERFLOW STORAGE-CONDITION)

(DEFINE-CONDITION STORAGE-EXHAUSTED STORAGE-CONDITION)




(* ;;; "Exported symbols.")

(DEFVAR *BREAK-ON-WARNINGS* NIL)

(DEFUN MAKE-CONDITION (TYPE &REST SLOT-INITIALIZATIONS) (CL:APPLY (STRUCTURE-CONSTRUCTOR TYPE)
                                                               SLOT-INITIALIZATIONS))

(DEFUN SIGNAL (DATUM &REST ARGS) (LET ((CONDITION (MAKE-INTO-CONDITION DATUM (QUOTE SIMPLE-CONDITION)
                                                         ARGS
                                                         (QUOTE SIGNAL))))
                                      (RAISE-SIGNAL CONDITION)
                                      (CL:IF (CONDITION-TYPEP CONDITION (QUOTE SERIOUS-CONDITION))
                                             (DEBUG CONDITION)
                                             (RETURN-FROM SIGNAL CONDITION))))

(DEFUN CL:ERROR (DATUM &REST ARGS) (DEBUG (RAISE-SIGNAL (MAKE-INTO-CONDITION DATUM (QUOTE 
                                                                                         SIMPLE-ERROR
                                                                                          )
                                                               ARGS
                                                               (QUOTE CL:ERROR)))))

(DEFUN CERROR (PROCEED-FORMAT-STRING DATUM &REST ARGUMENTS)
   (PROCEED-CASE (FUNCALL (FUNCTION CL:ERROR)
                        (MAKE-INTO-CONDITION DATUM (QUOTE SIMPLE-ERROR)
                               ARGUMENTS
                               (QUOTE CERROR)))
          (PROCEED NIL :REPORT (CL:APPLY (FUNCTION FORMAT)
                                      T PROCEED-FORMAT-STRING ARGUMENTS)
                 NIL)))

(DEFUN WARN (DATUM &REST ARGUMENTS) (LET ((CONDITION (MAKE-INTO-CONDITION DATUM (QUOTE SIMPLE-WARNING
                                                                                       )
                                                            ARGUMENTS
                                                            (QUOTE WARN))))
                                         (RAISE-SIGNAL CONDITION)
                                         (if *BREAK-ON-WARNINGS*
                                             then (CL:BREAK CONDITION)
                                           else (FORMAT *ERROR-OUTPUT* "~&Warning: ~A~%%"
                                                       (WITH-OUTPUT-TO-STRING (S)
                                                              (REPORT-CONDITION CONDITION S))))
                                         CONDITION))

(DEFUN CL:BREAK (&OPTIONAL (DATUM "Break.")
                       &REST ARGUMENTS)
   (DECLARE (SPECIAL NBREAKS))
   (LET ((CONDITION (MAKE-INTO-CONDITION DATUM (QUOTE SIMPLE-BREAK)
                           ARGUMENTS
                           (QUOTE CL:BREAK)))
         (HACK (BQUOTE (CL:LAMBDA (P S)
                              (FORMAT S "Return from break: ~D" (\, (ADD1 NBREAKS)))))))
          
          (* * HACK UNTIL LEXICALITY WORKS...)

        (COMMON-LISP (CL:EVAL (BQUOTE (PROCEED-CASE (DEBUG (QUOTE (\, CONDITION)))
                                             (PROCEED (C)
                                                    :REPORT-FUNCTION
                                                    (CL:LAMBDA (P S)
                                                           (FUNCALL (QUOTE (\, HACK))
                                                                  P S))
                                                    C)))))
          
          (* * 
          "Don't just return the thing that PROCEED gave 'cause it might not be the same condition.")

        CONDITION))

(DEFUN DEBUG (&OPTIONAL (DATUM "Break.")
                    &REST ARGS) (LOOP (ERRORX (MAKE-INTO-CONDITION DATUM (QUOTE SIMPLE-CONDITION)
                                                     ARGS
                                                     (QUOTE DEBUG)))))

(DEFSTRUCT (PROCEED-CASE (:PRINT-FUNCTION (CL:LAMBDA (PC STREAM LEVEL)
                                                 (CL:IF *PRINT-ESCAPE* (DEFAULT-STRUCTURE-PRINTER
                                                                        PC STREAM LEVEL)
                                                        (FUNCALL (PROCEED-CASE-REPORT PC)
                                                               PC STREAM))
                                                 T))) NAME TAG SELECTOR TEST REPORT)

(DEFUN FIND-PROCEED-CASE (DATUM CONDITION) (TYPECASE DATUM (PROCEED-CASE (AND (FMEMB DATUM 
                                                                                     *PROCEED-CASES*)
                                                                              (TEST-PROCEED-CASE
                                                                               DATUM CONDITION)
                                                                              DATUM))
                                                  (SYMBOL (for PC in *PROCEED-CASES*
                                                             thereis (AND (EQ (PROCEED-CASE-NAME
                                                                               PC)
                                                                              DATUM)
                                                                          (TEST-PROCEED-CASE PC 
                                                                                 CONDITION)
                                                                          PC)))))

(DEFUN COMPUTE-PROCEED-CASES (CONDITION) (for PC in *PROCEED-CASES*
                                            when (CATCH (QUOTE SKIP-PROCEED-CASE)
                                                        (TEST-PROCEED-CASE PC CONDITION))
                                            collect PC))

(DEFUN INVOKE-PROCEED-CASE (PROCEED-CASE CONDITION &REST VALUES)
   (LET ((PC (FIND-PROCEED-CASE PROCEED-CASE CONDITION)))
        (IF PC
            THEN (AND (BOUNDP (QUOTE BREAKRESETVALS))
                      (BOUNDP (QUOTE \BREAKRESETEXPR))
                      (BREAKRESETFN (QUOTE LEAVING)))        (* Hack until THROW and RESETLST get 
                                                             along)
                 (THROW (PROCEED-CASE-TAG PC)
                        (LIST* (PROCEED-CASE-SELECTOR PC)
                               CONDITION VALUES))
          ELSE (CL:ERROR (QUOTE BAD-PROCEED-CASE)
                      :NAME PROCEED-CASE))))

(DEFINE-PROCEED-FUNCTION ABORT :TEST TRUE :REPORT "Abort")

(DEFINE-PROCEED-FUNCTION PROCEED :TEST TRUE)

(DEFINE-PROCEED-FUNCTION USE-VALUE :REPORT "Use a different value" :TEST TRUE
                                         (VALUE (PROGN (FORMAT T "Enter a new value: ")
                                                       (EVAL (READ)))))

(DEFUN SIMPLE-FORMAT (STREAM &REST ARGS) (CL:WHEN (EQ STREAM T)
                                                (SETF STREAM *STANDARD-OUTPUT*))
                                         (DOLIST (X ARGS)
                                                (CL:PRINT X STREAM)))

(MOVD? (QUOTE SIMPLE-FORMAT)
       (QUOTE FORMAT))

(PUTPROPS ERROR-RUNTIME FILETYPE COMPILE-FILE)
(PUTPROPS ERROR-RUNTIME COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL)))
STOP