(FILECREATED "30-Dec-85 13:17:43" {ERIS}<LISPUSERS>KOTO>COURIEREVALSERVE.;5 5049   

      changes to:  (VARS COURIEREVALSERVECOMS)

      previous date: " 5-Dec-85 20:14:30" {ERIS}<LANE>COURIEREVALSERVE.;3)


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

(PRETTYCOMPRINT COURIEREVALSERVECOMS)

(RPAQQ COURIEREVALSERVECOMS ((FNS REMOTEAPPLY REMOTEEVAL \REMOTEAPPLY \REMOTEEVAL)
			       (FILES COURIERSERVE)
			       (COURIERPROGRAMS EVAL)))
(DEFINEQ

(REMOTEAPPLY
  [LAMBDA (FN ARGS COURIERSTREAM)                            (* cdl "29-Aug-85 19:35")
                                                             (* DECLARATIONS: (RECORD RESULT 
							     (REJECTTYPE ERRORTYPE ERRORSTRING)))
    (PROG (STRING STREAM RESULT)
	    (DECLARE (SPECVARS STRING STREAM))
	    (if [LISTP (SETQ STRING (COURIER.CALL COURIERSTREAM (QUOTE EVAL)
							  (QUOTE APPLY)
							  (MKSTRING FN T)
							  (for ARG in ARGS
							     collect (MKSTRING ARG T))
							  (QUOTE RETURNERRORS]
		then (with RESULT STRING (if ERRORSTRING
						 then (ERROR (ERRORMESS ERRORSTRING))
					       else (ERROR REJECTTYPE ERRORTYPE)))
	      else [SETQ RESULT (NLSETQ (READ (SETQ STREAM (OPENSTRINGSTREAM
							  STRING
							  (QUOTE INPUT]
		     (CLOSEF? STREAM)
		     (RETURN (CAR RESULT])
)
(DEFINEQ

(REMOTEEVAL
  [LAMBDA (FORM COURIERSTREAM)                               (* cdl "29-Aug-85 19:34")
                                                             (* DECLARATIONS: (RECORD RESULT 
							     (REJECTTYPE ERRORTYPE ERRORSTRING)))
    (PROG (STRING STREAM RESULT)
	    (DECLARE (SPECVARS STREAM STRING))
	    (if [LISTP (SETQ STRING (COURIER.CALL COURIERSTREAM (QUOTE EVAL)
							  (QUOTE EVAL)
							  (MKSTRING FORM T)
							  (QUOTE RETURNERRORS]
		then (with RESULT STRING (if ERRORSTRING
						 then (ERROR (ERRORMESS ERRORSTRING))
					       else (ERROR REJECTTYPE ERRORTYPE)))
	      else [SETQ RESULT (NLSETQ (READ (SETQ STREAM (OPENSTRINGSTREAM
							  STRING
							  (QUOTE INPUT]
		     (CLOSEF? STREAM)
		     (RETURN (CAR RESULT])
)
(DEFINEQ

(\REMOTEAPPLY
  [LAMBDA (COURIERSTREAM PROGRAM PROCEEDURE FN ARGS)         (* cdl " 5-Dec-85 20:14")
    (DECLARE (SPECVARS FN ARGS))
    (PROG (ERROR SEXPR STRINGSTREAM)
	    (DECLARE (SPECVARS STRINGSTREAM))
	    [SETQ ARGS (for ARG in ARGS
			    collect (SETQ STRINGSTREAM (OPENSTRINGSTREAM ARG (QUOTE INPUT)))
				      (SETQ SEXPR (NLSETQ (READ STRINGSTREAM)))
				      (CLOSEF? STRINGSTREAM)
				      (if (NULL SEXPR)
					  then (SETQ ERROR (QUOTE REMOTE.READ.ERROR))
						 (RETURN)
					else (CAR SEXPR]
	    (SETQ STRINGSTREAM (OPENSTRINGSTREAM FN (QUOTE INPUT)))
	    (SETQ FN (NLSETQ (READ STRINGSTREAM)))
	    (CLOSEF? STRINGSTREAM)
	    (if (NULL FN)
		then (SETQ ERROR (QUOTE REMOTE.READ.ERROR))
	      else (SETQ FN (CAR FN)))
	    [if ERROR
		then (RETURN (BQUOTE (ABORT , ERROR , (ERRORN]
	    [if [NULL (SETQ SEXPR (NLSETQ (APPLY FN ARGS]
		then (RETURN (BQUOTE (ABORT REMOTE.APPLY.ERROR , (ERRORN]
	    (RETURN (BQUOTE (RETURN , (MKSTRING (CAR SEXPR)
							T])
)
(DEFINEQ

(\REMOTEEVAL
  [LAMBDA (COURIERSTREAM PROGRAM PROCEEDURE STRING)          (* cdl " 8-Sep-85 12:37")
    (PROG [SEXPR (STRINGSTREAM (OPENSTRINGSTREAM STRING (QUOTE INPUT]
	    (DECLARE (SPECVARS STRINGSTREAM SEXPR))
	    (SETQ SEXPR (NLSETQ (READ STRINGSTREAM)))
	    (CLOSEF? STRINGSTREAM)
	    [if (NULL SEXPR)
		then (RETURN (BQUOTE (ABORT REMOTE.READ.ERROR , (ERRORN]
	    [if [NULL (SETQ SEXPR (NLSETQ (EVAL (CAR SEXPR]
		then (RETURN (BQUOTE (ABORT REMOTE.EVAL.ERROR , (ERRORN]
	    (RETURN (BQUOTE (RETURN , (MKSTRING (CAR SEXPR)
							T])
)
(FILESLOAD COURIERSERVE)

(COURIERPROGRAM EVAL (1105 0)
    TYPES
      [(SEXPR STRING)
       (FN STRING)
       (ARGS (SEQUENCE SEXPR))
       (ERRORN (RECORD (ERROR.NUMBER CARDINAL)
		       (ERROR.MESSAGE SEXPR]
    PROCEDURES
      ((EVAL 0 (SEXPR)
	     RETURNS
	     (SEXPR)
	     REPORTS
	     (REMOTE.EVAL.ERROR REMOTE.READ.ERROR)
	     IMPLEMENTEDBY \REMOTEEVAL)
       (APPLY 1 (FN ARGS)
	      RETURNS
	      (SEXPR)
	      REPORTS
	      (REMOTE.APPLY.ERROR REMOTE.READ.ERROR)
	      IMPLEMENTEDBY \REMOTEAPPLY))
    ERRORS
      ((REMOTE.EVAL.ERROR 0 (ERRORN))
       (REMOTE.APPLY.ERROR 1 (ERRORN))
       (REMOTE.READ.ERROR 2 (ERRORN))))
(PUTPROPS COURIEREVALSERVE COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (475 1459 (REMOTEAPPLY 485 . 1457)) (1460 2364 (REMOTEEVAL 1470 . 2362)) (2365 3605 (
\REMOTEAPPLY 2375 . 3603)) (3606 4292 (\REMOTEEVAL 3616 . 4290)))))
STOP