Google
 

Trailing-Edge - PDP-10 Archives - -
There are no other files named in the archive.
COMMENT    VALID 00021 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	  Definition of Terms
C00008 00003	MUMBLE Classes 
C00015 00004	MUMBLE Declarations
C00021 00005
C00024 00006	MUMBLE Statements
C00031 00007	MUMBLE Expression Parsers
C00033 00008	MUMBLE Main Expression Parser
C00041 00009	MUMBLE Compile-time type checking productions
C00043 00010	MUMBLE Boolean Expressions
C00045 00011	MUMBLE Leap constructs
C00049 00012
C00054 00013	MUMBLE Loop Statements, array calcs, proc names, etc
C00058 00014	MUMBLE backtracking, memory and loc, record fields
C00062 00015	MUMBLE In-line code
C00065 00016	MUMBLE Conditional Compilation Statements
C00071 00017	MUMBLE Macro DEFINE handling
C00074 00018	MUMBLE print statement
C00075 00019	MUMBLE dynamic procedure binding, etc.
C00080 00020	MUMBLE  Error productions
C00085 00021	MUMBLE  More error productions
C00093 ENDMK
C;
COMMENT	  Definition of Terms

MUMBLE

You shall be sent where no son of man
  Or god shall see you again,
With earth behind you, on an eagle's mound,
  Facing Hel, for ever sit.

			Skirnir's Ride
;


ASG LEAPSW 1
ASG GLOBSW 1
<SYMBOLS>

; SEMI _ LARW , COMA ) RPRN ( LPRN  INTER  UNION - MINUS { SETO ~ SETC
[ LBR ] RBR & ANDD ^ UPRW : COL + PLUS * TIMS / SLSH . DOT ' ASSOC
| VERT  XOR  EQV < LES > GRE = EQU  NEQ  GEQ  LEQ
 INF  IN   SWAP % PRC @ INDR ? QUES



<TERMINALS>

| I < > = + - [ ] & ^ : * / . ; _ , ) ( % @ ?
IVB ISV IAR ILB ICN IIT IST ITV IPR STC ICTXT IRC

<RESERVED-WORDS>

RETURN ELSE IN DATUM WHILE DO THEN CASE OF STEP SIMPLE
MUMBLE FOLLOWING WERE INSTALLED FOR EXPORTATION PUPOSES;
NEQ GEQ LEQ SETO SETC SWAP UNION INTER ASSOC LISTO LISTC
LOP COP CVI CVN LENGTH PNAMES PRELOADWITH PRESETWITH BIND BUCKETS
STRINGSPACE SYSTEMPDL STRINGPDL ARRAYPDL LIBRARY
SOURCEFILE LOADMODULE NEWITEMS REQUIRE NEXT NEEDNEXT VERSION
ALLGLOBAL OVERLAPOK VERIFYDATUMS ILDB IDPB LDB DPB IBP BBPP
UNTIL BEGIN STARTCODE QUICKCODE IF GO TO GOTO COMMENT PROCEDURE ARRAY
REAL SET EXTERNAL OWN VALUE FORTRAN FORWARD END FOR NEW MATCHING
SUCCEED FAIL CONTEXT DONE DIV MOD FIRST SECOND THIRD PUT REMOVE
REMEMBER FORGET RESTORE KILLSET NULLCONTEXT SAMEIV INCONTEXT
INTEGER BOOLEAN  ITEM ITEMVAR STRING INF
SAFE FROM NOT XOR AND OR ABS LABEL INTERNAL REFERENCE
RECURSIVE DEFINE REDEFINE EVALDEFINE EVALREDEFINE ASSIGNC NOMAC CVPS LET 
EQV SUCH THAT DELETE PHI NIL ISTRIPLE MAKE ERASE FOREACH 
TRUE FALSE NULL LSH ROT LAND LOR LNOT ENTRY ASH
MAX MIN SHORT LIST AFTER BEFORE  CVSET CVLIST DELIMITERS REPLACEDELIMITERS
UNSTACKDELIMITERS NULLDELIMITERS
IFC IFCR THENC ELSEC ENDC WHILEC CASEC FORC FORLC DOC OFC STEPC UNTILC CVMS
ALL PROTECTACS ASSIGN APPLY  
NOWSAFE NOWUNSAFE ITEMSTART
DECLARATION EXPRTYPE
GLOBAL SEGMENTNAME SEGMENTFILE
MESSAGE
CONTINUE MEMORY LOCATION
SPROUT PROCESSES DEPENDENTS
INITIALIZATION INTERROGATE CAUSE
CHECKTYPE RESERVED BUILTIN LEAPARRAY
PROPS CLEANUP POLL POLLINGINTERVAL ACCESS
REFITEM SETCP SETIP SPROUTDEFAULTS ERRORMODES ARGLIST
RECORDPOINTER RECORDCLASS NEWRECORD
NULLRECORD ANYCLASS
COMPILERSWITCHES
PRINT CPRINT CONOK LONG

<NON-TERMINAL-SYMBOLS>

PDEC BLAT S SICL LHS FCALL PCALL SE ST BE SF
STID LDAT TR BP SP  P SIP IP SIFC EIFC LIP
DS AE PDNO ARDEC E ARID EN CASEX T 
DPL ASSDO WHILC ELHS BT FORCA
DOL CRAP OPC LSP BLKFRC
CTRU1 CTRU2 CFLS1 CFLS2 DUMMY NOCOND EOFILE NOMORE
WDPL CDPL FRDPL FLDPL OPPS MPRO
MUMBLE Classes ;

<CLASSES>

@ALGLP	ITEM ITEMVAR SET LABEL REAL INTEGER 
	 STRING BOOLEAN LIST KILLSET CONTEXT
@HEL	ITEM ITEMVAR  MUMBLE NEW DATA TYPES;
@XO	INTERNAL SAFE EXTERNAL OWN RECURSIVE FORTRAN FORWARD SHORT SIMPLE
	MATCHING GLOBAL MESSAGE CONOK LONG
@VAL	REFERENCE VALUE QUES
@UNOPE	LNOT ABS + -
@PM	+ - EQV LAND LOR 
@ASOP	 '  *
@TD	* % / LSH ROT  DIV MOD ASH &
@RL	< > =    MUMBLE RELATIONS;
@MX MAX MIN
@ALG	STRING REAL INTEGER BOOLEAN SET LIST CONTEXT
@DCL	SET ITEM ITEMVAR LABEL REAL INTEGER STRING LIST CONTEXT
	 BOOLEAN PROCEDURE INTERNAL SAFE EXTERNAL OWN DEFINE
	 REDEFINE EVALDEFINE EVALREDEFINE NOMAC 
	 RECURSIVE FORWARD FORTRAN REQUIRE PRELOADWITH PRESETWITH SHORT
	 LET MATCHING
	 GLOBAL MESSAGE
	PROTECTACS SIMPLE CLEANUP SPROUTDEFAULTS
	RECORDCLASS RECORDPOINTER LONG
@E	E BE AE
@IRCC	IRC ANYCLASS IPR
MUMBLE
@SETOP	 
;
@REQ	PNAMES SYSTEMPDL STRINGPDL STRINGSPACE ARRAYPDL
	 NEWITEMS VERSION LIBRARY LOADMODULE SOURCEFILE DELIMITERS
	REPLACEDELIMITERS UNSTACKDELIMITERS NULLDELIMITERS
	ALLGLOBAL SEGMENTNAME SEGMENTFILE
	PROCESSES POLLINGINTERVAL BUCKETS ITEMSTART ERRORMODES
	COMPILERSWITCHES OVERLAPOK VERIFYDATUMS
@CALL	PCALL FCALL
@LOOP	ASSDO FORCA  WHILC
@NXT	STEP UNTIL WHILE : TO FOR 
@END	UNTIL END ELSE ;
@IN	IN FROM
@OTH	; DO  , ) END ELSE UNTIL
@MAKER	MAKE ERASE
@PUT	PUT REMOVE
@SUCCEED SUCCEED FAIL
@REMEMB REMEMBER FORGET RESTORE
@BEAFT  AFTER BEFORE
@TFAL	INF NULL TRUE FALSE 
@FUNC1	ISTRIPLE LOP CVN LENGTH ILDB LDB
@FUNC2	FIRST SECOND THIRD COP CVI
@FUNCL	FIRST SECOND THIRD ISTRIPLE
@CVSET	CVSET	CVLIST
@PRO1	IDPB DPB IBP
@AR	T P BP BT BE
@DC	DO ,
@I	I IVB ISV IAR ILB ICN IIT IST ITV IPR STC IRC ICTXT
@IARY	IAR ILB
@ISTO	IVB ISV IST ITV
@IASS	IIT ITV
@IALG	IVB ISV ICN STC
@FUNC	ISTRIPLE FIRST SECOND THIRD LOP COP CVI CVN LENGTH ILDB LDB BBPP
	CVSET CVLIST
@IDC	IVB ISV IAR ILB ICTXT ICN IIT IST ITV IPR STC
@STA	FOR WHILE DATUM MAKE ERASE DONE PUT REMOVE DELETE REMEMBER FORGET RESTORE
	MEMORY SUCCEED FAIL PROPS IRC
@EXS	( LNOT ABS + - NOT [

@STCO  STARTCODE QUICKCODE
@BEG	BEGIN STARTCODE QUICKCODE

@EDN	AFTER ARDEC ARID ASSIGNC BBPP BEFORE BEGIN CASE CASEC CASEX CDPL COL COP CVI
	CVLIST CVN CVSET DATUM DELETE DOC DPB DPL EIFC ELHS ELSE FCALL FIRST
	FLDPL FOR FOREACH FORGET FROM FRDPL IBP IDPB IFC IFCR CTRU1 CFLS1 CTRU2
	INCONTEXT
	CFLS2 IN ILDB ISTRIPLE LARW LDAT LDB LENGTH LHS LIP LOP LSP NEW OF OFC PCALL
	PROPS QUICKCODE REMEMBER REMOVE REQUIRE RESTORE RETURN SECOND SIP
	STARTCODE STEP STID THEN THENC THIRD TO UNTIL WDPL WHILE WHILEC  : [  ,
	PROTECTACS ASSIGN APPLY MEMORY SPROUT CAUSE INTERROGATE EXPRTYPE
	PDEC REFITEM ARGLIST IRC REFERENCE PRINT CPRINT
@LCON	@EDN AND DATUM IF IN MAX MIN NOT OR 
	( < > =   

@EDR	DO DOC ELSE ELSEC END ENDC FOR FROM IN OF OFC STEP STEPC THEN THENC TO UNTIL
	UNTILC WHILE , ) ] ; @ ( : LISTC ~ @REQ MESSAGE
@RCON	@EDR AND CASE EQV OR > < =    - +

@LOWER	+ - * %  / & = < >    LNOT ABS EQV LAND LOR LSH ROT DIV ASH
        MOD MAX MIN
@MKSU	NOWSAFE NOWUNSAFE
@TERMINAL
MUMBLE JFR 7-4-76 SO CHECKTYPE(LEAPARRAY) WORKS;
@RSTDC	RESERVED BUILTIN LEAPARRAY
@RESERVED
@CONS	ICN STC
@IDQ	IVB ISV IAR ILB IST ITV IPR ICTXT
@IDD	@RESERVED @IDQ IIT I IRC
@C1	, ; ) [ ]
MUMBLE
@C2	UNTIL WHILE IF CRAP
@STM	SIFC BEGIN STARTCODE QUICKCODE CASEX PDEC ASSDO FORCA WHILC
;
MUMBLE
@GAR	GO GOTO FOR WHILE DATUM MAKE ERASE PUT DELETE DONE SUCCEED FAIL
	 BEGIN IF FOREACH IDPB DPB CASE DO RETURN REMEMBER FORGET RESTORE
	 DEFINE REDEFINE EVALDEFINE EVALREDFINE NOMAC NEXT NEEDNEXT 
	 GLOBAL LET 
;
@SEND	END ELSE ; UNTIL
MUMBLE
@LPR	NEW RETURN CASEX DELETE ISTRIPLE FIRST SECOND THIRD
	 LOP COP CVI CVN  LENGTH ILDB LDB , PCALL FCALL CVSET CVLIST
	PRINT CPRINT
;

@SIP	LIP SIP
@THT	THEN THENC
@CONBG	IFC IFCR WHILEC CASEC FORC FORLC
@DOCA	DO DOC
MUMBLE #XJ JFR 7-4-76 ADD IRC SO DECLARATION(record!class name) WORKS;
@LDC	IVB ISV IAR ILB IST ITV IPR I IRC
@STEPCA	STEP STEPC
@UNTLCA	UNTIL UNTILC
MUMBLE
@OFCA	OF OFC
;
@CTRUE  CTRU1 CTRU2
@CFALSE CFLS1 CFLS2
@EQC	LARW EQU
@QEND	END ;
@QBEG	BEGIN STARTCODE QUICKCODE CASEX
@REFXX	REFERENCE REFITEM ARGLIST
MUMBLE Declarations;


<PRODUCTIONS>

BB0:	 ENTRY 		EXEC ENTENT		SCAN 		ENT
	 BEGIN  BLAT BEGIN	EXEC ENTOUT LPNAME DWN	SCAN 		BDS   #Q1

ENT:	 ; 						SCAN 		BB0  
ENT0:	 SG 			EXEC ENTMAK		SCAN 		ENT1  
ENT1:	 , 						SCAN 		ENT0  
ENT2:	 ; 						SCAN		BB0   #Q2

MUMBLE OUTER BEGIN-END PAIR IS ALWAYS A BLOCK! ;
BDS:	 @BEG STC  @BEG	EXEC BLNAME		SCAN		BDS1
BDS1:	 @BEG SG		EXEC BLOCK  KLSTG CLRSET		DS0  #TRAP

DS:	 @BEG STC  @BEG	EXEC BLNAME		SCAN 		DS2
DS2:	 @BEG @DCL		EXEC BLOCK CLRSET			DS0  #DS3
DS3:	 SG			EXEC OFFDEF				S0

DS0:	 
	 @ALGLP			EXEC @ALGLP TYPSET	SCAN 		D1

	 PDEC @VAL  PDEC	EXEC @VAL VALSET	SCAN 		DS0
	 @XO   						SCAN 		ZDS2

	 PROCEDURE					SCAN 		TYP
	 DEFINE 		EXEC MACOFF DLMPSH DPSHBT  
							SCAN	^DFR	ZDS1
	 REDEFINE 		EXEC SETRDF MACOFF DLMPSH DPSHBT   
							SCAN	^DFR	ZDS1

	 EVALDEFINE 		EXEC SETEDF DLMPSH DPSHBT SCAN	^DFR	ZDS1 
	 EVALREDEFINE  EVALDEFINE EXEC SETRDF			^EDF	ZDS1 

	 NOMAC 		EXEC MACOFF		SCAN	^NM1	ZDS1

	 LET 			EXEC MACOFF TRIGOF	SCAN 	^LTR 	DS0
	 REQUIRE					SCAN  	^RQQ 	DS0
	 PRELOADWITH 	EXEC LDYBEG		SCAN 	^CONX 	LW1
	 PRESETWITH 		EXEC LDYSET		SCAN 	^CONX 	LW1
	 CLEANUP 					SCAN 2		CLN
	 PROTECTACS 					SCAN 	^CONX 	PACL
	 SPROUTDEFAULTS 				SCAN	^CONX	SDSS
	 BEGIN RECORDCLASS 				SCAN		RCD
	 RECORDPOINTER  INTEGER			SCAN 2		RPD
	 ;  						SCAN		DS0
	 STC 			EXEC SCOMM		SCAN		DS0
	 @BEG SG		EXEC ENDDEC 				S0   #XXQQ

RCD:	@IDD  PDEC		EXEC RCBIT0 PRDEC RCCREM 
							SCAN		PD0 #QRC1


ZDS1:	 SG						SCAN		DS0

ZDS2:	 @XO @DCL  @DCL	EXEC @XO XOWSET				DS0
	 GLOBAL SG  SG    	EXEC ENDDEC GLBSET			S01   #XXQQ
D1:	 @XO 			EXEC @XO XOWSET		SCAN 		D1
	 @ALG @HEL 		EXEC @HEL HELSET	SCAN 		TYP
	 @ALG ARRAY  ARRAY				SCAN 		D2
	 @ALGLP SG  SG 						TYP
D2:	 SG ITEMVAR 		EXEC HELAR1		SCAN 		TYP
	 SG ITEM  ARDEC	EXEC HELAR2		SCAN 		DA1 

TYP:	 ARRAY						SCAN 		TYP1
	 PROCEDURE					SCAN		TYP1
TYP1:	 BEGIN PROCEDURE @IDD  BEGIN PDEC 
				EXEC KLSET PRDEC	SCAN 		PD0
	 ARRAY @IDD  ARDEC @IDD 
				EXEC STARY 				DA1
	 PDEC PROCEDURE @IDD  PDEC @IDD 
				EXEC PRSET 				IDL

IDL:	@DCL      					SCAN		QIDC  
    	 @IDD 		EXEC ENTID		SCAN 		IDL1 #Q4
IDL1:	 , 						SCAN 		IDL
	 ; 			EXEC CLRSET		SCAN 		DS0
	 PDEC (  PDEC		EXEC DFVPV0		SCAN	^CONX	DFVP
	 PDEC )  PDEC		EXEC TWPR2		SCAN 		PD1  #Q5

PD0:	 ( 			EXEC CLRSET		SCAN 		DS0
	 PDEC SG		EXEC TWPR1 				PD1  #TRAP

PD1:	 
	 RECORDCLASS PDEC SG  PDEC SG				RCD1
	 RECORDCLASS PDNO SG  PDEC SG				RCD1
	 
	 PDEC ;  PDEC		EXEC ENDPR KOUNT1	SCAN 		S1
	 PDNO ; 		EXEC ENDPR FWUNDO	SCAN 		DS0  #Q7

CLN:	 IPR , 		EXEC CLNSET		SCAN 2		CLN
	 IPR ; 		EXEC CLNSET 		SCAN		DS0

DFVP:	SG ) 			EXEC DFVPV		SCAN		IDL1 #Q4

RCD1:	PDEC [  PDEC					SCAN 2		RCD2 #RCD3
RCD2:	PDEC IPR ]  PDEC	EXEC URCHLR		SCAN		RCD3 #QRC2
RCD3:	PDEC ; 		EXEC ENDRC		SCAN		DS0 #QRC2

RPD:	( @IRCC  		EXEC SETIRP @IRCC TWDIRC 
							SCAN 2		RPD1 #QRP1
RPD1:	, @IRCC  		EXEC @IRCC TWDIRC	SCAN 2		RPD1
	) SG  SG							D1    #QRP1
PACL:	 SG , 		EXEC PACDO		SCAN 	^CONX 	PACL
	 SG ; 		EXEC PACDO		SCAN 		DS0  #Q8

SDSS:	 E ; 			EXEC SDFLTS		SCAN		DS0 #XXQQ

RQQ:
	 REQUIRE @REQ  REQUIRE 
				EXEC DEFZRO @REQ RQSET	SCAN		RQ1
	 IPR						SCAN		RQ5
	 SG							^CONX	RQQQ #TRAP
RQQQ:
	 E SOURCEFILE					SCAN		RQ3
	 E @REQ  		EXEC @REQ RQSET		SCAN		RQ1 #RQQ2
RQQ2:
	 E MESSAGE 		EXEC TYPMSG		SCAN		RQ1 #Q10
RQ1:	 REQUIRE ; 		EXEC CLRSET		SCAN 	
	 REQUIRE ,  REQUIRE				SCAN  		RQQ  #Q10

RQ3:	 REQUIRE E SOURCEFILE ,  REQUIRE 
				EXEC REQERR		SCAN  		RQQ
	 REQUIRE E SOURCEFILE ;  
				EXEC SRCSWT		SCAN		RQ4  #Q11
RQ4:	 SG			EXEC SRCCHK			

RQ5:	 IPR INITIALIZATION  IPR 			SCAN		RQ6
	 IPR SG  IPR		EXEC SCNBAK			^CONX	RQQQ #XXQQ
RQ6:	[						SCAN 	^CONX	RQ7
	IPR SG  SG		EXEC REQINI				RQ1 #XXQQ
RQ7:	IPR [ E ] 		EXEC RQINIX		SCAN		RQ1 #XXQQ

LW1:	 [ E ] 		EXEC LDYREP		SCAN 	^CONX 	LW1
LW:	 E , 			EXEC LDYNO		SCAN 	^CONX 	LW1
	 E ; 			EXEC LDYNO CLRSET	SCAN 		DS0  #Q12


DA0:	 ARDEC ; SG  SG	EXEC CLRSET 				DS0
	 ARDEC , SG  ARDEC SG 					DA1  #Q13
DA1:	 PDEC ARDEC SG  PDEC SG 					IDL
DA2:	 @IDD 		EXEC ENTARY		SCAN 		DA3  #Q4
DA3:	 , 						SCAN 		DA2
	 [ 						SCAN 	^NEX 	AR0  #Q15

AR0:	 ARDEC E : E ,  ARDEC	EXEC ARRSUB		SCAN 	^NEX 	AR0
	 ARDEC E : E ]  ARDEC	EXEC ARRSUB ARRDEC	SCAN 2 		DA0  #Q16

LTR:	 @IDD			EXEC LETSET		SCAN 2 		LT1  #Q4 
LT1:	 SG = @RESERVED 	EXEC LETENT		SCAN 		LTR1 #XXQQ
LTR1:	 , 			EXEC MACOFF		SCAN 		LTR
	 ; 			EXEC TRIGON		SCAN 	 	      #Q23
MUMBLE Statements;

S0:	 BLAT BEGIN SG		EXEC UINCLL				S1
	 @STCO SG		EXEC @STCO CODNIT 			COD
S1:	 SG			EXEC CAPOLL LSTKCK			S01
S01:	 @IDQ						SCAN		SID
	 @STA 								S1Q
	 @BEG			EXEC DWN		SCAN 		DS
	 IF						SCAN 	^BEX 	IFQ
	 CASEX ELSE  CASEX	EXEC CASEME		SCAN		S01	#S02
S02:	 @END  S @END 						S9
	 GO						SCAN 		G1
	 GOTO  GO					SCAN 		G2
	 FOREACH  BLKFRC FOREACH 
				EXEC DWN1				FRC0
	 GLOBAL 		EXEC GLBSET		SCAN 		S01
	 @PRO1						SCAN 	^EXD 	PROS
	 CASE						SCAN 	^EX 	CSES
	 DO  DOL		EXEC DOLOOP KOUNT1	SCAN 		S1
	 PRINT						SCAN		%PRT
	 CPRINT						SCAN		%CPRT
	 RETURN 					SCAN 		RT0
	 NEEDNEXT 		EXEC NEXTR		SCAN 		S1
	 NEXT						SCAN		NXTX
	 CONTINUE					SCAN		CTUX
	 STC 			EXEC SCOMM		SCAN 		S1
	 REQUIRE 					SCAN  	^RQQ 	S1
	 CASEX [					SCAN 	^CONX 	CASD
	OPPS BEGIN [					SCAN 	^CONX	CASD
	 @MKSU						SCAN 2 		MS
 	 APPLY	 PCALL APPLY				SCAN		%EV1
	 ASSIGN   					SCAN		%BP1
	 SPROUT						SCAN 		FK
	 CAUSE						SCAN	^EXD	%CS2
	 INTERROGATE  PCALL				SCAN	^EXD	%IR2
	 POLL  S		EXEC INMAIN EPOLL	SCAN		S9
	 SETCP						SCAN 		SIC
	 SETIP						SCAN		SIC
	 ASSIGNC  ASSIGNC					^ASG	SS1
	 I       		EXEC UNDEC		SCAN 		USID  #Q24    
SS1:	 SG						SCAN		S01   #TRAP

S1Q:	 FOR						SCAN  		S1 
	 WHILE			EXEC WHIL1 KOUNT1	SCAN 	^BEX 	WHG
	 DATUM  LDAT		EXEC GLBST2		SCAN 	 	LDA
	 @MAKER			EXEC @MAKER MKSET	SCAN 	^EX1	FRG
	 @PUT						SCAN 	^EX1	PT0
	 DELETE			EXEC GLBST2		SCAN 	^EXD 	DEL
	 @REMEMB					SCAN		RFR
	 PROPS			EXEC GLBST2		SCAN	^EXD	SPRP
	 @SUCCEED  S		EXEC @SUCCEED SUCCEX	SCAN		S9
	 MEMORY						SCAN	^MEMX	SID
	 IRC						SCAN	^RCF	SID
	 DONE 			          		SCAN 		DNEX  #XXQQ

NXTX:	 NEXT STC  S		EXEC NEXTBN		SCAN		S9
	 NEXT SG  S SG	EXEC DNEXT				S9 #XXQQ
DNEX:	 DONE STC  S		EXEC DONEBN		SCAN		S9
	 DONE SG  S SG	EXEC DDONE		    		S9 #XXQQ
CTUX:	 CONTINUE STC  S	EXEC CONTBN		SCAN		S9
	 CONTINUE SG  S SG	EXEC CNTNUE				S9 #XXQQ

RT0:	 @OTH  S @OTH		EXEC RESLT1 				S9
	 (  RETURN					SCAN 	^EX 	RESL #XXQQ
RESL:	 RETURN @E )  S	EXEC @E ECHK RESULTS	SCAN 		S9   #Q30

G1:	 GO TO  GO					SCAN 		G2
G2:	 GO ILB  S		EXEC TRA		SCAN 		S9   #Q32

SID:	 FOR @ISTO _  FORCA LHS 
				EXEC FORBG TWID10	SCAN 	^NEX 	FOR1
	 @ISTO _  LHS		EXEC TWID10		SCAN 	^EX 	STO
	 @IARY [  ARID	EXEC ARYIDX		SCAN 	^ARY 	SID
	 IPR (  PCALL		EXEC RDYCAL		SCAN 	^EX 	PARM
	 IPR SG  S SG		EXEC RDYCL1 ISUCL1 PRST 		S9
	 ILB : 		EXEC ENTLAB APOLL KOUNT2 
							SCAN 		S1
	 IST [			EXEC REFINF		SCAN 	^EX 	REP0
	 @ISTO 					SCAN 	^EX 	STO       
	 ICTXT COL					SCAN	^EX1	LCEL
	 I SG								USID  #XXQQ


S9:	 SIFC S ELSE		EXEC IFLS1		SCAN 		S1
	OPPS S SG  SG		EXEC ERR105				FUSH
S8:	 BEGIN S ;  BEGIN				SCAN 		S1
	 SIFC S ELSE S @SEND  S @SEND 
				EXEC IFLS2 				S9
	 SIFC S @SEND  S @SEND  EXEC IFNLS 				S9
	 BLAT BEGIN S END  S	EXEC QREM2 UP2 DONES OKEOF 
							SCAN		FIN
	 BEGIN S END  S	EXEC QREM2 UP2		SCAN 		S7
	 @LOOP S @SEND  S @SEND  EXEC LOPPS KOUNT1 			FR9
	 DOL S UNTIL		EXEC CNFXP		SCAN 	^BEX 	DOLS
	 CASEX S ;  CASEX	EXEC CASEMT KOUNT1	SCAN 		S1
	 CASEX S END  CASEX	EXEC CASEMT CASEND	SCAN		S7
	 PDEC S ; 		EXEC PRUP		SCAN 		DS0  #Q34

S7:	 S STC  S		EXEC NAMCHK		SCAN 		S9
	 CASEX STC  S		EXEC NAMCHK		SCAN 		S9
	 CASEX SG  S SG 						S9   #S9
FR9:	 BLKFRC S SG  S SG	EXEC UP2 				S9   #S9

FIN:	 S STC 		EXEC NAMCHK OKEOF	SCAN 		FIN1
	 S SG  SG 							FIN1 #FIN1
FIN1:	 EOFILE  							           
	 SG 			EXEC OKEOF		SCAN		FIN1  #FIN1

MS:	 @MKSU IAR ,  @MKSU	EXEC @MKSU DOSFTY	SCAN 2 		MS
	 @MKSU IAR SG  S SG	EXEC @MKSU DOSFTY			S9   #Q35
MUMBLE Expression Parsers;

EXD:	 ( 						SCAN 		EX   #Q36
EX:	 SG 							^EX1 	EX22
EX22:    TR SG  P SG		EXEC ISIT			^P2	EX22
	 BE SG  E SG		EXEC EXPOP 			
	 SG 							 	      #TRAP

BEX:	 SG 							^EX1 	BX2
BX2:	 BE SG 							
	 E SG  BE SG		EXEC BOOP 			
	 TR SG  P SG		EXEC ISIT			^P2	BX2  #Q38

CONX:	 SG 							^EX 	CX1
CX1:	 CFLS1 E SG						
	 E SG			EXEC CHKCON 			 	      #Q39

NEX:	 SG 							^EX 	NEX1 #TRAP
NEX1:	( E @NXT  P @NXT	EXEC ER40   TWID10		^P2	NEX1
	( BE @NXT  ( BE ) @NXT 
				EXEC ER40   TWID10		^BP4	NEX1
     	 SG @E @NXT		EXEC @NXT WAIT		SCAN 		NEX2 #NXQ
NEX2:	 WHILE SG 						^BEX 	NEX1 #NEX
NXQ:	 SG 							
MUMBLE Main Expression Parser;

EX1:	 @IDC						SCAN 		XID
	 @EXS						SCAN 		EX1
	 @FUNCL			EXEC GLBST2		SCAN	^EXD	RTN
	 @FUNC						SCAN 	^EXD 	RTN
	 IF			EXEC CHKLEP		SCAN 	^BEX 	EIF
	 @TFAL  P		EXEC @TFAL TCON		SCAN 		P2
	 DATUM			EXEC GLBST2		SCAN	^EDAT   XID
	 {  SIP					SCAN 		BRK1
	 PHI  SP		EXEC LPPHI		SCAN 		SF1
	 NIL  SP		EXEC STKNIL		SCAN		SF1
	 DEPENDENTS 					SCAN 3		DPS1
	 NEW			EXEC GLBST2		SCAN 		NW1
	 LISTO  LIP					SCAN 		BRK2
	 ?						SCAN 2		IPQ
	 BIND						SCAN 2		IP0
	 REMOVE ALL  REMOVE	EXEC REMAST		SCAN 		EX1
	 PROPS 			EXEC GLBST2		SCAN	^EXD	PRP
	 SAMEIV						SCAN 6		SIV
	 REFITEM 		EXEC GLBST2		SCAN 2		RFI
	 REFERENCE					SCAN 2		RFI
	 GLOBAL 		EXEC GLBSET		SCAN 		EX1
	 MESSAGE 		EXEC MESCL		SCAN 		EX1
	 MEMORY						SCAN 	^MEMX	XID
	 IRC						SCAN	^RCF	XID
	 LOCATION					SCAN		LOCX
	 APPLY  FCALL APPLY				SCAN		%EV1
	 INTERROGATE  FCALL				SCAN	^EXD	%IR2
	 ARGLIST     				SCAN    	AGL
	 I 			EXEC UNDEC		SCAN 		UXID
	 CASE			EXEC CHKLEP		SCAN 	^EX 	CSEX
	 @SUCCEED  ITV	EXEC @SUCCEED SUCCEX ONEITV   SCAN 	XIF
	 ICTXT						SCAN 		ECEL
	 NULLCONTEXT		EXEC NLCNXT		SCAN	
	 INCONTEXT					SCAN	^EXD	NCXT
	 CVMS 					SCAN	^CV1	CV2
	 CVPS 					SCAN	^CVP1	XID 
	 NEWRECORD 					SCAN 3		NRCD
	 NULLRECORD  IVB	EXEC NLLREC		SCAN		XID
	 DECLARATION 					SCAN	^CV1	DL1
	 EXPRTYPE					SCAN		DE1
	 CHECKTYPE 		EXEC SPRZER		SCAN		CK0	#Q41


DE1:	 ( 			EXEC DCLBEG		SCAN	^EX1	DE2
DE2:	 EXPRTYPE @E )  ICN	EXEC @E ECHK DCLEND DCLNT1 
							SCAN		XID	#Q114

MUMBLE %DS% 2! JFR 8-21-76 added DL1A;
DL1:	 @LDC  ICN		EXEC DCLNT2		SCAN		DL2
	 @RESERVED  ICN	EXEC @RESERVED DCLNT3	SCAN		DL2	#Q107
DL2:	 ) 						SCAN		XID	#XXQQ

CV1:	 ( 			EXEC MACOFF		SCAN	
CV2:	 I  STC		EXEC STCAT		SCAN		CV3	#XXQQ
CV3:	 )  						SCAN		XID	#Q106

CVP1:	 ( 			EXEC INTSCN		SCAN		CVP2	#Q119 
CVP2:	 ICN  STC		EXEC CVPFRM		SCAN		CVP3	#Q120 
CVP3:	 ) 						SCAN			#XXQQ 



XID:	 @EDN @IALG @EDR  @EDN E @EDR 			
	 @ISTO _ 							XSTO  #XIE
XSTO:	 ICTXT COL @ISTO _						XST1  #XST2
XST1:	 @IALG SG  E SG						
	 @IASS SG  AE SG	EXEC STITM			
	 IST SG  AE SG	EXEC STSET				       #Q115

XST2:	 @ISTO _  ELHS	EXEC TWID10		SCAN 	^EX 	ESTO
XIE:
	 @IARY [  ARID	EXEC ARYIDX		SCAN 	^ARY 	XID
	 ICTXT COL @I SG						XST1
	 @IALG SG  P SG 						P2
XIF:
	 @IASS SG  IP SG	EXEC STITM 				IP2
	 IST SG  SP SG	 					SF0
	 IPR (  FCALL		EXEC RDYCAL		SCAN 	^EX 	PARM
	 @CALL @IDC @OTH  @CALL E @OTH 			
	 IPR SG  P SG		EXEC RDYCL1 ISUCL1 TYPR1 		PAM2
	 ICTXT SG					 	  	ECEL
	 @REMEMB	IAR @EDR  @REMEMB E @EDR				
	 INCONTEXT IAR @EDR  INCONTEXT IAR @EDR			
	 NEW @IARY ) 						 	             
	 REFITEM @IARY )					
	 I SG								UXID   #Q42



NW1:	 ( 						SCAN 	^EX 	NW2
	 NEW SG  IP SG	EXEC NEWNOT 				IP2
NW2:	 NEW SG )  IP		EXEC NEWART		SCAN 		IP2  #Q43


P2:	 @LCON P @RCON  @LCON E @RCON 				E2
	 P ^ 						SCAN 		EX1
	 P [  STID		EXEC SVSTR TWID10	SCAN 	^NEX 	BSTR
	 E @PM P SG  E @PM T SG 					T2
	 @UNOPE P SG  P SG	EXEC @UNOPE UNARY 			P2
	 P ^ P SG  P SG 	EXEC EXPON 				P2


T1:	 T @TD P SG  T SG	EXEC @TD TIMDIV 			T2

T2:	 @AR @TD  T @TD				SCAN 		EX1
EN1:	 E @PM @AR SG  E SG	EXEC @PM PLUSM 				E2
	 @AR SG  E SG 						E2   #XXQQ
E2:	 E @PM						SCAN 		EX1
	 @EDN E @EDR 						
	 @EDN E @I 						
MUMBLE PREVIOUS FOR BENEFIT OF STARTCODE, WHICH IS ONLY CONSTRUCT
 IN SAIL WHICH IS NOT OPERATOR GRAMMAR-LIKE (THEREFORE
 I'M SAFE?) (DCS -- 8/19/70);

	 ( E )  P		EXEC TWID10		SCAN 		P2
	 E @MX E SG  E SG	EXEC @MX MAXMIN 			E2
	 E @MX						SCAN 		EX1 #BX1

RFI:	SG ( VALUE  SG	EXEC RFVAL		SCAN	^EX	RF0
	SG1 ( SG2  SG1 SG2	EXEC RFZERO			^EX	RF0 #Q36
RF0:	REFITEM @E )  IP	EXEC @E ECHK RFIMAK	SCAN		IP2
MUMBLE fix to allow arrays as args to REF!ITEM \UR#35\ ;
	REFITEM IAR )  IP	EXEC @0 ECHK RFIMAK	SCAN		IP2
	REFERENCE @E )  IVB	EXEC @E ECHK RFNCDO	SCAN		XID
	ARGLIST @E @EDR  @EDR IP 
				EXEC @E ECHK RFTEMP RFIMAK    		AGL4 #QRFI

AGL:	(  LIP					SCAN		AGL1 #XXQQ
AGL1:	LIP )  SP		EXEC STKNIL		SCAN		SF1
AGL2:	LIP SG			EXEC LIPGO				AGL3 #XXQQ
AGL3:	SG  ARGLIST ( SG	EXEC GLBST2				RFI #XXQQ
AGL4:	LIP @EDR IP  LIP AE @EDR 					AGL5 #XXQQ
AGL5:	LIP AE @EDR  LIP @EDR	EXEC SIP1				AGL6
AGL6:	LIP )  SP		EXEC STPRIM		SCAN		SF1
AGL7:	,  ARGLIST (		EXEC GLBST2		SCAN		RFI #XXQQ

NRCD:	( IRC )  E		EXEC NRCDO		SCAN		   #XXQQ
MUMBLE Compile-time type checking productions;

CK0:	( 						SCAN		CK1
CK1:	)  ICN		EXEC MKINT		SCAN		XID
CK2:
	@ALGLP			EXEC @ALGLP TYPST1	SCAN		CK4
	@XO 			EXEC @XO XOWST1		SCAN		CK1
	DEFINE 		EXEC @4 RSTST1		SCAN		CK1 
	REDEFINE 		EXEC @4 RSTST1		SCAN		CK1 
	EVALDEFINE 		EXEC @4 RSTST1		SCAN		CK1 
	EVALREDEFINE 		EXEC @4 RSTST1		SCAN		CK1 
	RECORDPOINTER 	EXEC @6 RSTST1		SCAN		CK1
	RECORDCLASS 		EXEC @7 RSTST1		SCAN		CK1
	@VAL 			EXEC @VAL VALST1	SCAN		CK1
	ARRAY 						SCAN		CK5
	PROCEDURE 		EXEC @5 RSTST1		SCAN		CK1
	@RSTDC 		EXEC @RSTDC RSTST1	SCAN		CK1	#Q108
CK3:	ARRAY 		EXEC @3 RSTST1		SCAN		CK1
CKP:	PROCEDURE 		EXEC @5 RSTST1		SCAN		CK1	#CK1

CK4:	@XO 			EXEC @XO XOWST1		SCAN		CK4
	@ALG @HEL 		EXEC @HEL HELST1	SCAN		CK3
	@ALG ARRAY ARRAY				SCAN		CK5
	ARRAY						SCAN		CK5
	@ALGLP SG  SG							CK3
CK5:	SG ITEMVAR 		EXEC @0 HELAR3		SCAN		CK3
	SG ITEM 		EXEC @1 HELAR3		SCAN		CK1
	ARRAY SG  SG		EXEC @3 RSTST1				CK1 	#CKP
MUMBLE Boolean Expressions;

BX1:	 @E @RL @E @RL  BT AND @E @RL 
				EXEC @E ESET @RL BOREL1	SCAN 		EX1
	 @E @RL @E SG  BP SG	EXEC @E ESET @RL BOREL 			BP2
	 @RL						SCAN 		EX1
	 @E SG  BP SG		EXEC BOOP 				BP2 

BP2:	 NOT BP SG  BP SG	EXEC BONOT 				BP2
BP3:	 BT AND BP SG  BP SG	EXEC BOAND 				BP2
BT2:	 @AR AND  BT AND				SCAN 		EX1
BT3:	 BE OR @AR SG  BE SG	EXEC BOOR 				BE2
BE2:	 @AR OR  BE OR				SCAN 		EX1
	 ( @AR )		EXEC TWID10		SCAN 		BP4
	 @AR SG  BE SG 					 	      #XXQQ

BP4:	 @LOWER SG @AR SG1 SG2  @LOWER P SG2 
				EXEC EXPOP1 				P2
	 SG @AR SG1 @LOWER  P @LOWER 
				EXEC EXPOP1 				P2
	 SG @AR SG1 SG2  BP SG2 
				EXEC TWID21 				BP2  #XXQQ
MUMBLE Leap constructs;

SPRP:	 PROPS AE )  AE	EXEC PPROP		SCAN 2		SPP2 #Q110
SPP2:	 _ SG							^EX	SPP3 #Q111
SPP3:	 AE _ E SG  S SG	EXEC PPSTO				S9   #Q111

PRP:	 PROPS AE )  AE	EXEC PPROP		SCAN		PRP2 #Q110
PRP2:	 SG _						SCAN	^EX	PRP3
	 AE SG  P SG		EXEC GTPROP				P2
PRP3:	 AE _ E SG  E SG	EXEC EPPSTO				E2   #Q111

EDAT:	 DATUM (  DATUM				SCAN	^EX1	EDA1 #XXQQ
EDA1:	 SG			EXEC CLRSET				EDA2
EDA2:	 DATUM AE ,  DATUM AE				SCAN	^DTTP	EDA3 #EDA3
EDA3:	 DATUM AE )  I	EXEC DDATA		SCAN		      #XXQQ

LDA:	 LDAT (  LDAT					SCAN	^EX1	LDA1 #XXQQ
LDA1:	 SG			EXEC CLRSET				LDA2
LDA2:	 LDAT AE ,  LDAT AE				SCAN	^DTTP	LDA3 #LDA3
LDA3:	 LDAT AE )  I		EXEC LDATA		SCAN		SID  #XXQQ

DTTP:	 @ALGLP 		EXEC @ALGLP TYPSET	SCAN		DTTP #DTT3
DTT3:	 SAFE 		EXEC SAFSET		SCAN		DTTP #DTT4
DTT4:	 ARRAY 		EXEC ARYSET		SCAN		DTTP #DTT5
DTT5:	 SG								      #TRAP

IPQ:	 ? ITV SG  IP SG	EXEC STITM QUESET			IP2
	 @IARY [  ARID        EXEC ARYIDX		SCAN    ^ARY    IPQ
	 @REFXX ? @IDC SG  @REFXX @IDC SG 
				EXEC RFQKLG				XID  #Q109

IP0:	 BIND ITV SG  IP SG	EXEC STITM FRESET			IP2
	 @IARY [  ARID        EXEC ARYIDX		SCAN    ^ARY    IP0 
	 @REFXX BIND @IDC SG  @REFXX @IDC SG 
				EXEC RFBKLG				XID  #Q109

IP2:	 @REMEMB IP @IN  @REMEMB E @IN				
	 IP @IN  IP @IN				SCAN		EX1
	 @EDN IP @EDR  @EDN AE @EDR 				
	 [ AE  IP 					SCAN 		EX1
	 [ AE  IP  IP ]  IP	EXEC BTRIP		SCAN 		IP2
	 AE  IP   AE  AE 						IE3
	 IP @ASOP  AE @ASOP	EXEC GLBST2		SCAN 		EX1
	 @ASOP IP SG  @ASOP AE SG					IE3
	 IP @RL  AE @RL	EXEC ITMREL				IE3 
	 IP SG  AE SG 						IE3  #XXQQ

BRK1:	 SIP {  LIP					SCAN 		BRK2
	 SIP ~  SP		EXEC LPPHI     		SCAN		SF1
	 SG 			EXEC SIPGO			^EX1	SPP0 #TRAP
BRK2:    LIP ~	 SP		EXEC STKNIL		SCAN            BRK3 #BRK4
BRK3:	 ~  						SCAN		SF1  #SF1
BRK4:	 LIP LISTC  SP	EXEC STKNIL		SCAN		SF1 #BRK5
BRK5:    LIP SG			EXEC LIPGO			^EX1	SPP0 #TRAP
SPP0:	 @SIP AE @EDR  @SIP @EDR  EXEC SIP1				SPP1 #Q48
SPP1:	 @SIP ,  @SIP					SCAN 	^EX1	SPP0
	 LIP LISTC  SP	EXEC STPRIM		SCAN 		SF1
	 LIP ~  SP		EXEC STPRIM		SCAN 		LIP2
	 SIP ~  SP		EXEC STPRIM		SCAN 		SF1  #Q48
LIP2:	 SP ~  SP					SCAN 		SF1  #SF1

FRC0:	 BLKFRC FOREACH		EXEC BLOCK EACH4 ENDDEC	SCAN  		FRC
FRC:	 ?						SCAN		FRD1
    	 ITV						SCAN		FRC1
	 | 			EXEC DUMITV FRCHGO	SCAN		FRE
	 SUCH 		EXEC DUMITV FRCHGO	SCAN		FRD  #Q485
FRC1:	 ITV , 		EXEC ENTITV		SCAN  		FRC
	 ITV | 		EXEC ENTITV FRCHGO	SCAN 		FRE
	 ITV SUCH 		EXEC ENTITV FRCHGO	SCAN 		FRD  #XXQQ
FRD:	 THAT 					SCAN 		FRE  #FRE
FRD1:	 ? ITV	 ITV		EXEC QLOCAL		SCAN		FRC1 #Q486

FRE:	 (  CRAP		EXEC BOPREP		SCAN 	^BEX 	FRF
	 SG 							^EX1	FRG
FRF:	 CRAP BE )  TR	EXEC FRBOL		SCAN 		FRG  #Q50
FRG:	 FOREACH MPRO SG  FOREACH TR SG 
				EXEC INMAIN CALMP			FRG
FRG2:	 FOREACH TR AND  FOREACH 
				EXEC FRCH1		SCAN 		FRE
	 FOREACH TR DO  ASSDO	EXEC FRCH2 KOUNT1	SCAN 		S1
	 @MAKER TR SG  S SG 
				EXEC @MAKER MAKIT 			S9   #Q51

SIV:	 ( ITV , ITV ) SG  P SG 
				EXEC SAMEV				P2   #Q112


LSB1:	 SP [ @E ]  IP	EXEC ELSSUB SELIP	SCAN 		IP2
	 SP [ @E @NXT					SCAN 	^EX 	LSB2 #Q52
LSB2:	 SP [ @E @NXT @E ]  SP 
				EXEC ELSSUB @NXT SELSBL	SCAN 		SF1  #Q53

SF0:	 SP @BEAFT		EXEC REFINF				SFS  #SFS
SFS:	 SP SG			EXEC STSET				SF1  #TRAP
SF1:	@PUT SG @IN SP SG1					
	@IN SP SG							SF1A
    	 @EDN SP @EDR  @EDN AE @EDR 				
SF1A:	 SP [			EXEC LSSUB		SCAN 	^EX 	LSB1
	 SP & SP SG  SP SG	EXEC LSTCAT 				SF1
	 SP &						SCAN 		EX1
	 SF - SP SG  SF SG	EXEC STMIN 				SF2
	 SP SG  SF SG 						SF2
SF2:	 SF -						SCAN 		EX1
ST1:	 ST  SF SG  ST SG	EXEC STINT 				ST2
	 SF SG  ST SG 						ST2
ST2:	 ST 						SCAN 		EX1
SE1:	 SE  ST SG  SE SG	EXEC STUNI 				SE2
	 ST SG  SE SG 						SE2

SE2:	 SE 						SCAN 		EX1
	 ( SE )  SP		EXEC TWID10		SCAN 		SF1
	 FOREACH IP IN SE SG  FOREACH TR SG 
				EXEC STSRC 			
	 IP IN SE SG  P SG	EXEC STIN 				P2
	 SE SG  AE SG 						IE3



IE3:	 @EDN AE @EDR 						 
	 AE @ASOP AE SG 						IE4
	 DS  AE SG  TR SG	EXEC FID1 			
	 AE @RL 							BX1
	 @RL AE SG 							BX1 
	 ( AE )  AE					SCAN 		ETYP

PT0:	REMOVE E FROM 					SCAN	^EX1	PT1
PT1:	@PUT IP @IN SP @OTH  S @OTH 
				EXEC @PUT PUTIN				S9
	REMOVE E FROM SP @OTH  S @OTH 
				EXEC REMXD				S9
	PUT IP IN SP @BEAFT	EXEC HLDPNT		SCAN	^EX	PTII  #XXQQ
PTII:	 PUT IP IN SP @BEAFT @E @OTH  S @OTH 
				EXEC @BEAFT PUTINL ELSSUB	   	S9   #Q55


IE4:	 AE  AE   DS 				SCAN 		EX1
MUMBLE FOLLOWING PRODUCTION BECAUSE EQV CAN'T BE IN TWO CLASSES AT SAME
	TIME AND STILL USE INDEX PROPERTY;
	 AE  AE SG  SP SG     
				EXEC @3 DERIV				SF1
	 AE @ASOP AE SG  SP SG 
				EXEC @ASOP DERIV 			SF1  #XXQQ
REP0:	 IST [ E ]  IST E				SCAN 		REP1 #Q57
REP1:	 IST E _  IST E LSP	EXEC ELSSUB		SCAN 	^EX 	REP2 #XXQQ
REP2:	 IST E LSP AE SG  S SG 
				EXEC REPLCX 				S9   #Q59
MUMBLE Loop Statements, array calcs, proc names, etc;

FOR1:	 FORCA LHS E STEP E UNTIL E @DC  FORCA LHS @DC 
				EXEC @DC FRSTE 				FOR4
	 FORCA LHS E UNTIL E @DC  FORCA LHS @DC 
				EXEC @DC FRSTE			FOR4
	 FORCA LHS @E @DC  FORCA LHS @DC 
				EXEC @E ESET @DC FRSTO 			FOR4
FOR2:	 FORCA LHS E STEP E WHILE BE @DC  FORCA LHS @DC 
				EXEC @DC FRWHILE 			FOR4 #Q60
FOR4:	 , 						SCAN 	^NEX 	FOR1
	 FORCA LHS DO  FORCA	EXEC KOUNT1		SCAN 		S1
STO:	 LHS @E SG  S SG	EXEC @E STORE				S9
	 @ISTO  @E SG  S SG	EXEC @E SWPR				S9   #Q61

ARY:	 SG 							^EX 	ARY1
ARY1:	 ARID E ,  ARID	EXEC ARRSBY		SCAN 	^EX 	ARY1
	 ARID E ]  I		EXEC ARRSB1 SUBSCR TYPAR 
							SCAN 	 	      #Q62

PARM:	 SPROUT PCALL @E )  SPROUT 
	 			EXEC @E ECHK CALARG SPRPD  SCAN		FK3
     	 PCALL @E )  S	EXEC @E ECHK CALARG ISUCAL PRST 
							SCAN 	      	S9
	 FCALL @E )  P	EXEC @E ECHK CALARG ISUCAL TYPPRO 
							SCAN 	      	PAM2
	 @CALL @E ,  @CALL	EXEC @E ECHK CALARG	SCAN	^EX	PARM  #Q63
PAM2:	 MPRO SG 							       #XID

IFQ:	 IF BE THEN  SIFC	EXEC STIF KOUNT1	SCAN 		S1   #Q64

MUMBLE JFR 4-17-76 separate entries for statement (CSES) and expression (CSEX).
  Under old (combined) method, a CASE expression used as a statement caused parser
  to POPJ at E2 (via ETYP), quitting compilation in the middle of the file without
  telling anyone.;
CSES:	 CASE E OF  CASEX	EXEC CASSTR		SCAN 		CAS1 #Q65
CAS1:	 BEGIN 		EXEC KOUNT1		SCAN 		CAS2 #Q24
CAS2:	 CASEX STC  CASEX	EXEC CSNAME		SCAN 		S1   #S1

CSEX:	 CASE E OF  CASEX	EXEC CASSTR		SCAN 		CAS9 #Q65
CAS9:	 CASEX (  CASEX	EXEC CASE1 KOUNT5	SCAN 	^EX 	CAS3 #Q66

CAS3:	 CASEX @E )  @E	EXEC @E CASE2 CASE3	SCAN 	      	ETYP
	 CASEX @E ,  CASEX	EXEC @E CASE2 KOUNT6	SCAN	^EX	CAS3  #Q67

CASD:	 CASEX [ E ]  CASEX	EXEC CASEMM		SCAN 		S1
	 OPPS BEGIN [ E ]  OPPS BEGIN			SCAN		S0  #XXQQ

EIF:	 IF BE THEN  EIFC	EXEC EXIF KOUNT3	SCAN 	^EX 	EIF1 #Q69
EIF1:	 EIFC @E ELSE		EXEC @E EXIF1 KOUNT4	SCAN 	^EX 	EIF2 #Q70
EIF2:	 EIFC SG ELSE @E SG1  SG SG1 
				EXEC @E EXIF2 				ETYP #Q71

ETYP:	 E SG 								E2
	 AE SG  AE SG		EXEC LTYPCK				ETY2
	 BE SG  E SG 							E2   #XXQQ
ETY2:	 IP SG								IP2
	 SP SG								SF1

WHG:	 WHILE BE DO  WHILC	EXEC WHIL KOUNT1	SCAN 		S1   #Q73
MUMBLE backtracking, memory and loc, record fields;

RFR:	 @REMEMB ALL  @REMEMB	EXEC @REMEMB RMASET	SCAN		NTXT
	 @REMEMB (  @REMEMB	EXEC @REMEMB RMBSET	SCAN	^EX1	RFR2
	 @REMEMB SG		EXEC @REMEMB RMBSET		^EX1  	RFR2 #TRAP
RFR2:	 @REMEMB @E )  @REMEMB 
				EXEC RMSTK		SCAN		NTXT
	 @REMEMB @E ,  @REMEMB EXEC RMSTK		SCAN	^EX1	RFR2
	 @REMEMB @E @IN  @REMEMB  EXEC RMSTK		SCAN	^EX1	NTX2 #Q72
NTXT:	 @REMEMB @IN  @REMEMB				SCAN 	^EX1	NTX2 #Q68
NTX2:	 @REMEMB ICTXT SG    S SG    EXEC CNTXTS			S9    #XXQQ

NCXT:	 INCONTEXT SG ,  INCONTEXT 
				EXEC RMSTK		SCAN	^EX1	NCX2 #Q113
NCX2:	 INCONTEXT ICTXT )  P 
				EXEC INCNTX		SCAN		P2   #Q113
ECEL:	 ICTXT COL					SCAN	^EX1	CEL2 #CENO
CENO:	 SG						        
CEL2:	 ICTXT COL @E SG  P SG 
				EXEC @E ECHK CONELM			XID  #Q115
LCEL:	 ICTXT COL @E SG  I SG 
				EXEC @E ECHK CONELM			SID  #Q115

DEL:	 DELETE AE )  S	EXEC DELT		SCAN 		S9   #Q74

RTN:	 LOP AE )  IP		EXEC STLOP		SCAN 		IP2
	 @CVSET AE )  SP	EXEC @CVSET CVLS	SCAN 		SF1
	 BBPP @E ,					SCAN 	^EX 	RTP
	 @FUNC1 @E )  P	EXEC @FUNC1 FDO1	SCAN 		P2
	 @FUNC2 @E )  IP	EXEC @FUNC2 FDO2	SCAN		IP2    #XXQQ
MEMX:	[ 			EXEC ZBITS		SCAN	^EX	MMX1  #XXQQ
MMX1:	MEMORY E ]  IVB	EXEC MEMI		SCAN	
MMX2:	, 			EXEC ZBITS		SCAN 		MMX3  #Q75
MMX3:
	LONG 			EXEC @15 XOWSET		SCAN		MMX6
MMX6:	@ALGLP 		EXEC @ALGLP TYPSET	SCAN		MMX4  #XXQQ
MMX4:	@HEL 			EXEC @HEL HELSET	SCAN		MMX5
MMX5:	MEMORY E ]  I		EXEC MEMS		SCAN			#Q75.5

LOCX:	LOCATION (  	 				SCAN	   	LCX1  #XXQQ
LCX1:   IPR 						SCAN		LCX2	
	IRC						SCAN		LCX3
LCXY:	SG  FCALL SG						^EX	LCXX #XXQQ
LCX2:	IPR )  P		EXEC LOCN		SCAN		XID #LCX4
LCX3:	IRC )  P		EXEC LOCN		SCAN		XID
LCX4:	SG 			EXEC SCNBAK				LCXY #XXQQ
LCXX:	FCALL @E )  P		EXEC @E ECHK LOCN	SCAN		XID   #XXQQ

RCF:	IRC :						SCAN 2		RCF1 #RCF3
RCF3:	IRC @EDR  IPR		EXEC LOCN SCNBAK	SCAN		      #XXQQ
RCF1:	IRC : SG [  IRC :	EXEC RCFPIK		SCAN	^EX	RCF2 #XXQQ
RCF2:	IRC : E ]  I		EXEC RCFREF		SCAN		    #XXQQ
MUMBLE In-line code;

RTP:	 BBPP @E , @E ,		EXEC BPTWD		SCAN 	^EX 	RTP1 #Q76
RTP1:	 BBPP @E , @E , @E )  P 
				EXEC BPNT		SCAN 		P2   #XXQQ

ESTO:	 ELHS @E SG  @E SG	EXEC @E STOR1 				ETYP #Q78

PROS:	 ,						SCAN 	^EX 	PROS
	 IBP @E )  S		EXEC @PRO1 BYPQ		SCAN 		S9
	 @PRO1 @E , @E )  S	EXEC @PRO1 BYPS		SCAN 		S9   #XXQQ

BSTR:	 STID E @NXT E ]  ISV	EXEC @NXT SUBSTR	SCAN 		XIE  #Q80

DOLS:	 DOL S UNTIL BE @END  S @END 
				EXEC DOUNT KOUNT1 			S9   #Q81

MUMBLE IN-LINE CODE PRODUCTIONS.;

MUMBLE NON-ID LEVEL;

COD:	 @STCO END  S		EXEC ONEWRD WRDNIT LITOFF UP1 
							SCAN 		S7
	 ; 			EXEC ONEWRD WRDNIT	SCAN 		COD
	 @ 			EXEC CODIND		SCAN 		COD
	 ( 						SCAN 	^CONX 	CDP
	 [ 			EXEC LITOFF		SCAN 	^EX 	CDB
	 : 			EXEC ERRCOL		SCAN 		COD
	 , 			EXEC ERRCOM		SCAN 		COD
	 ACCESS  		EXEC CESSGO		SCAN	^EXD	CDAC
	 SG			EXEC SETSIX 				CDI

CDAC:	 @E ) 		EXEC @E ECHK CESSOK CODID SCAN		COD  #XXQQ

CDI:	 OPC 			EXEC SETOP		SCAN 		COD
	 ILB  ILB					SCAN 		CDI1
	 IAR  IAR					SCAN 		CODS
	 IPR  IPR					SCAN 		CODS
	 IRC  IRC					SCAN		CODS
	 SG  SG 						^EX 	CDI1 #XXQQ

CDI1:	 ILB : 		EXEC ENTLAB		SCAN 		COD
	 ILB SG  SG		EXEC CODID 				COD
	 @E , 		EXEC @E ECHK CODREG	SCAN 		COD
	 @E SG  SG		EXEC @E ECHK CODID 			COD  #XXQQ

CODS:	 IAR [ 							^CDS1 	CDI1
	 SG SG1  SG1		EXEC CODID 				COD  #XXQQ
CDS1:	 SG 								XIE

CDP:	 @E ) 		EXEC @E ECHK CODX	SCAN 		COD  #XXQQ

CDB:	 @E ] 		EXEC @E ECHK CODLIT	SCAN 		COD  #XXQQ
MUMBLE Conditional Compilation Statements;

IF0:	 IFC			EXEC CPSHBT CPSHEY CNDRCN PSHLST 
							SCAN 	^CONX 	IF1

IF1:	 IFC E @THT  CTRU1	EXEC TWCOND CPOPBT POPLST		IF2  #XXQQ
IF2:	 CTRU1			EXEC TOMACN		PRESUME		IF3
	 CFLS1			EXEC SWPOFF CPOPET PSHLST 
							SCAN 		IF4  #XXQQ 

MUMBLE IF ABOVE LINE BOMBS, SOMETHING'S REALLY WRONG;
IF3:	 WDPL CTRU1 ENDC  WDPL 
				EXEC SWICHM CPOPET	PRESUME	
	 @CTRUE ENDC 		EXEC CPOPET CNDRCP 	PRESUME	
	 CTRU1 ELSEC  CFLS2	EXEC SWPOFF CPOPET FRMACN PSHLST 
							SCAN 		IF4  #XXQQ

IF4:	 WDPL CFLS1 ENDC 	EXEC FREMBW SWPON POPLST 
							PRESUME	
	 @CFALSE ENDC 	EXEC SWPON TOMACN CNDRCP POPLST 
							PRESUME	
	 CFLS1 ELSEC  CTRU2	EXEC SWPON CPSHEY TOMACN POPLST 
							PRESUME		IF3
	 NOCOND ENDC 					SCAN 		IF4
	 @CONBG  NOCOND				SCAN 		IF4
	 SG 						SCAN 		IF4  #XXQQ

IF5:	 IFCR  IFC		EXEC CPSHBT CPSHEY CNDRCY PSHLST 
							SCAN	^CONX	IF1	#XXQQ 

WH0:	 WHILEC 		EXEC SETDLM CPSHBT CPSHEN PSHLST 
							SCAN 		WH1
WH1:	 STC			EXEC OFFDLM		SCAN 		WH2
WH2:	 @DOCA  WDPL		EXEC SETDLM DWPREP 	SCAN    ^CONX  WH3
WH3:	 STC WDPL SG ENDC  WDPL 
				EXEC DFENT OFFDLM SETWHL CPOPBT CPOPET POPLST 
							PRESUME 

CS0:	 CASEC			EXEC CPSHBT CPSHEN PSHLST 
							SCAN 	^CONX 	CS1 
CS1:	 CASEC E OFC  CDPL CTRU1 
				EXEC SETDLM SWPOFF CPOPET DCPREP 
								 	CSB
	 CASEC E OF  CDPL CTRU1 
				EXEC SETDLM SWPOFF CPOPET DCPREP 
								 	CSB
CS2:	 CDPL CFLS1 SG ,  CDPL CFLS1 
				EXEC TWCSCN				CSB
	 CDPL CFLS1 SG ENDC 	EXEC FRMBCE OFFDLM SWPON TOMACN CPOPBT POPLST 
							PRESUME	
	 CDPL CTRU1 SG ,  CDPL CTRU1 
				EXEC DFENT1 OFFDLM SETCSE CPOPBT CPOPET POPLST 
							PRESUME		CS3
	 CDPL CTRU1 SG ENDC  CDPL NOMORE 
				EXEC DFENT1 OFFDLM SETCSE CPOPBT CPOPET POPLST 
							PRESUME		CS4
	 @CONBG SG  SG NOCOND				SCAN	^CSA    CS2
CSA:	 NOCOND ENDC 					SCAN	
	 @CONBG  NOCOND				SCAN	^CSA	CSA
	 SG 						SCAN		CSA #XXQQ
CSB:	 CTRU1						SCAN	^CONX   CS2
	 CFLS1						SCAN 2          CS2   #TRAP
CS3:	 CDPL CTRU1 ENDC  CDPL CFLS1 
				EXEC FRMBCT SETDLM SWPOFF CPSHBT PSHLST 
							SCAN 2		CS2  #XXQQ
CS4:	 CDPL NOMORE ENDC 	EXEC FREMBW SWPON 
							PRESUME		      #XXQQ


FR0:	 FORC  FRDPL		EXEC DWPREP CPSHBT CPSHEN PSHLST MACOFF 
							SCAN	^FM0	FR1
FR1:	 SG @IDD @EQC  SG	EXEC DFPINS		SCAN 	^CONX 	FR2
FR2:	 FRDPL E @STEPCA  FRDPL 
				EXEC GTSTRT		SCAN 	^CONX 	FR3
FR3:	 FRDPL E @UNTLCA  FRDPL 
				EXEC GTSTEP		SCAN 	^CONX 	FR4
FR4:	 FRDPL E @DOCA  CTRU1 FRDPL 
				EXEC DFSET GETERM SETDLM  SCAN	^CONX	FR41
FR41:	 CTRU1 SG SG1 SG2				 	FR5
	 CFLS1 SG SG1 SG2	EXEC SWPOFF CPOPET		FR51
FR5:	 CTRU1 FRDPL SG ENDC  FRDPL 
				EXEC DFENT FFPOP OFFDLM SETFR CPOPBT CPOPET POPLST 
							PRESUME		FR6
FR51:	 CFLS1 FRDPL SG ENDC  
				EXEC OFFDLM FREMBN SWPON CPOPBT POPLST 
							PRESUME	
FR6:	 FRDPL ENDC  CTRU1 FRDPL 
				EXEC TWNUM 				FR7
FR7:	 CTRU1 FRDPL  FRDPL	EXEC SWCHFR		PRESUME		FR6
	 CFLS1 FRDPL 		EXEC FREMBF		PRESUME	


FL0:	 FORLC  FLDPL		EXEC DWPREP CPSHBT CPSHEN PSHLST MACOFF 
							SCAN	^FM0	FL1
FL1:	 SG @IDD @EQC  SG	EXEC DFPINS GETACT	SCAN 		FL2
FL2:	 @DOCA 		EXEC DFSET SETDLM	SCAN	^CONX	FL3
FL3:	 FLDPL SG ENDC  FLDPL EXEC DFENT FFPOP OFFDLM SETFL CPOPBT CPOPET POPLST 
							PRESUME		FL4
FL4:	 FLDPL ENDC  CTRU1 FLDPL 
				EXEC TWACT 				FL5
FL5:	 CTRU1 FLDPL  FLDPL	EXEC SWCHFL	   	PRESUME		FL4 
	 CFLS1 FLDPL 		EXEC FREMBF		PRESUME	

FM0:	 SG			EXEC MACON		SCAN	
MUMBLE Macro DEFINE handling;

DF0:	 DEFINE 		EXEC MACOFF DLMPSH DPSHBT 
							SCAN		DFR
DFR:	 @IDD  DPL		EXEC DFPREP		SCAN 		DFR1 #Q4
DFR1:	 ( 			EXEC MACOFF		SCAN 2 		DPA  #LEQ

DPA:	 SG @IDD ,  SG	EXEC DFPINS		SCAN 2 		DPA
	 SG @IDD ;  SG	EXEC DFPINS		SCAN 2 		DPA
	 SG @IDD )  SG	EXEC MDFPNS		SCAN 		LEQ  #Q4
LEQ:	 STC 			EXEC SPDMBD		SCAN 		LEQ1
LEQ1:	 SG @EQC  SG		EXEC KLSTOF DLMPOP DFSET SETDLM 
							SCAN 	^CONX 	DEQ  #XXQQ
DEQ:	 DPL SG1 , 		EXEC DFENT FFPOP ENDMAC EVMCOF OFFDLM DLMPSH KLSTOC 
							SCAN 		DFR
	 SG SG1 ; 		EXEC DEFOFF DFENT FFPOP ENDMAC SWDLM OFFDLM DPOPBT KLSTON 
								 	      #Q20

RDF:	REDEFINE 		EXEC SETRDF MACOFF DLMPSH DPSHBT SCAN	DFR	#XXQQ 

EDF:	EVALDEFINE 		EXEC SETEDF DLMPSH DPSHBT SCAN		DFR	#XXQQ 

ERF:	EVALREDEFINE  EVALDEFINE EXEC SETRDF				EDF	#XXQQ 

ASG:	ASSIGNC 		EXEC DLMPSH DPSHBT INTSCN 
							SCAN		AS1 
AS1:	ICN  ASSIGNC		EXEC ASGOFF		SCAN		AS2	#Q116 
AS2:	STC 			EXEC SPDMBD		SCAN		AS3 
AS3:	SG =  SG		EXEC DLMPOP DFSET SETDLM 
							SCAN	^CONX	AS4	#XXQQ
AS4:	SG SG1 , 		EXEC ASGENT FFPOP OFFDLM DLMPSH INTSCN 
							SCAN		AS1 
	SG SG1 ; 		EXEC ASGENT FFPOP SWDLM OFFDLM DPOPBT 
										#Q20 

NMC:	NOMAC 		EXEC MACOFF		SCAN		NM1	#XXQQ 
NM1:	I 			EXEC MACON SCNBAK				#Q118 
MUMBLE print statement;
%PRT:	PRINT (	 PRINT	EXEC STRTPT		SCAN	^EX	%PR1

%PR1:	PRINT @E )  S		EXEC @E ECHK DOPRT ENDPRT	SCAN	S9
	PRINT @E ,  PRINT	EXEC @E ECHK DOPRT 	SCAN	^EX	%PR1

%CPRT:	CPRINT (  CPRINT				SCAN 	^EX 	%CPR1
%CPR1:	CPRINT @E ,  PRINT	EXEC @E ECHK STCPRT	SCAN	^EX	%PR1
MUMBLE dynamic procedure binding, etc.;

%BP1:	( 						SCAN	^EX	%BP2 #XXQQ
%BP2:	ASSIGN @E ,  ASSIGN   EXEC BNDITM		SCAN 2 		%BP3 #Q92
%BP3:	ASSIGN IPR )  S	EXEC PDASTK BINCL	SCAN		S9
	DATUM (  (						^EXD	%BP4 #XXQQ
%BP4:	ASSIGN @E )  S	EXEC BNDITM COPPIT	SCAN		%BP5 #XXQQ
%BP5:	S )  S					SCAN		S9   #XXQQ


MUMBLE apply;
%EV1:	( 						SCAN 2		%EV2 #XXQQ
%EV2:	IPR  SG  SG		EXEC PDASTK				%EV3 
	DATUM (  (						^EXD  	%EV4 #XXQQ
%EV3:	, 						SCAN 	^EX	%EV5 
	FCALL APPLY )  P	EXEC EVLNLL TYPIRG	SCAN		XID
	PCALL APPLY )  S 	EXEC EVLNLL		SCAN 		S9   
	SPROUT APPLY )  SPROUT 
				EXEC SAPPN		SCAN		FK3 #XXQQ
%EV4:   APPLY @E )  APPLY 	EXEC BNDITM PITSTK	SCAN		%EV3 #Q99
%EV5:	PCALL APPLY @E )  S	EXEC EVLLST		SCAN		S9   
	FCALL APPLY @E )  P	EXEC EVLLST TYPIRG	SCAN		XID  
	SPROUT APPLY @E )  SPROUT 
				EXEC SAPPL		SCAN		FK3 #Q100

MUMBLE sprout;
FK:	SPROUT (  SPROUT	EXEC INMAIN		SCAN	^EX	FK1  #XXQQ
FK1:	SPROUT @E ,  SPROUT	EXEC BNDITM		SCAN 2		FK2  #Q97 
FK2:	SPROUT IPR (  SPROUT PCALL 
				EXEC FPREM RDYCAL	SCAN	^EX	PARM
	SPROUT IPR SG  SPROUT SG 
				EXEC FPREM PDASTK			FK3  
	SPROUT APPLY (  SPROUT APPLY 
				EXEC SAPPL1		SCAN 2		%EV2 #XXQQ
FK3:	, 						SCAN		FK4
	SPROUT )  S 		EXEC STDOPT STDKLL SPRIT 
							SCAN		S9   #XXQQ
FK4:	,  			EXEC STDOPT		SCAN		FK7
	SG							^EX	FK5
FK5:	SPROUT E SG  SPROUT SG  EXEC STKOPT				FK6  #Q98 
FK6:	SPROUT )  S		EXEC STDKLL SPRIT	SCAN		S9
	, 						SCAN		FK7 #XXQQ
FK7:	SPROUT STC  SPROUT 	EXEC BNKLL		SCAN		FK9
FK8:	SPROUT IST  SPROUT	EXEC EKLL		SCAN		FK9  #XXQQ
FK9:	SPROUT )  S		EXEC SPRIT		SCAN		S9  #XXQQ


MUMBLE CAUSE;
%CS2:	@E ,  		EXEC BNDITM		SCAN	^EX	%CS3  #Q101
%CS3:	CAUSE @E )  S		EXEC BNDITM STDOPT CSIT SCAN		S9
	@E ,  		EXEC BNDITM		SCAN	^EX	%CS4  #Q102
%CS4:	CAUSE E )  S		EXEC STKOPT CSIT	SCAN		S9    #Q103


MUMBLE INTERROGATE;
%IR2:	PCALL AE )  S		EXEC STKIRG STDOPT IRIT SCAN		S9
	FCALL AE )  P		EXEC STKIRG STDOPT IRIT TYPIRG SCAN	XID
	AE ,  		EXEC STKIRG		SCAN	^EX	%IR3  #Q104
%IR3:	PCALL E )  S		EXEC STKOPT IRIT	SCAN		S9
	FCALL E )  P		EXEC STKOPT IRIT TYPIRG SCAN		XID   #Q105

MUMBLE DEPENDENTS;
DPS1:	( STC )  SP		EXEC BDEPS		SCAN		SF1 #QDPS


MUMBLE SETIP & STECP;
SIC:	( 						SCAN	^EX	SIC1 #XXQQ
SIC1:	@E , 			EXEC BNDITM		SCAN 2	^SCX	SIC2 #XXQQ
SIC2:	SETCP  S		EXEC SCPCLL		SCAN		S9
SIC3:	SETIP  S		EXEC SIPCLL		SCAN		S9 #XXQQ

SCX:	IPR ) 		EXEC PDASTK			
	DATUM (  (					SCAN 	^EXD	SCX1 #XXQQ
SCX1:	@E ) 			EXEC BNDITM PITSTK		
MUMBLE  Error productions;
XXQQ:	SG			EXEC ER7				FUSH
FUSH:	@QEND								FA     #FB
FA:	@QBEG ;  @QBEG	EXEC KILPOP ERR101 CLRSET SCAN		QDS2
	@QBEG END  @QBEG S END 
				EXEC KILPOP ERR101			S9
	SG @QEND  @QEND						FA
FB:	@BEG  OPPS @BEG 	EXEC ERR102		SCAN		DS
	SG 						SCAN		FUSH
QDS2:	@BEG @DCL							DS0   #S0

RET:	SG							
QPAR:	@E )  @E		EXEC ERR103		SCAN	
QPR1:	( E SG  P SG	   	EXEC TWID10 ERR104	    	^P2	RET   
	( BE SG  ( BE ) SG	EXEC TWID10 ERR104		^BP4	RET   #FUSH

Q1:	SG			EXEC ER1				Q1A   
Q1A:	BEGIN								BB0
	SG 						SCAN		Q1A
Q2:	@IDD      		EXEC ER5       				BB0
	SG			EXEC ER2				Q1A   
QIDC:	@DCL @IDD  @DCL	EXEC ER3 CLRSET SCNBAK 			DS0   #IDL
Q4:	SG			EXEC ER4				FUSH 
Q5:	@IDD     		EXEC ER5 CLRSET				DS0  
	BEGIN S ELSE BEGIN	EXEC ER6		SCAN		S1   #XXQQ
Q7:	PDEC SG			EXEC ER5 ENDPR KOUNT1			S1
	PDNO @IDD  @IDD	EXEC ER5 ENDPR FWUNDO			DS0  #XXQQ
Q8:	SG  @IDD  @IDD     	EXEC ER5 PACDO				DS0  #XXQQ
Q10:	@IDD     		EXEC ER5				      #XXQQ
Q11:	STC SOURCEFILE @IDD  @IDD 
				EXEC ER5 SRCSWT				      #XXQQ
Q12:	 E @IDD  @IDD		EXEC ER5 LDYNO CLRSET			DS0  #XXQQ
Q13:	ARDEC @IDD SG  @IDD	EXEC ER5 CLRSET SCNBAK			DS0  #XXQQ
Q15:	( 			EXEC ER15		SCAN	^NEX	AR0  
	SG			EXEC ERR115				XXQQ #TRAP
Q16:	ARDEC E )  ARDEC E	EXEC ER37		SCAN		QA16
	SG			EXEC ER8			^QPAR	AR0 
QA16:	ARDEC E :					SCAN	^EX	AR0  #XXQQ
Q20:	SG SG1 @IDD  @IDD 	EXEC ER5 DFENT FFPOP ENDMAC SWDLM OFFDLM          #XXQQ
Q23:	@IDD			EXEC ER5				DS0  #XXQQ
Q24:	SG			EXEC ER24				FUSH
Q30:	RETURN @E @SEND  S @SEND 
				EXEC ER40 @E ECHK RESULTS		S9   #XXQQ
Q32:	GO I           		EXEC UNDEC            	    		QA32 #XXQQ
QA32:	I  ILB		EXEC QDEC0				G2

USID:	I [  ARID		EXEC QDEC2 		SCAN	^UARY 	SID	
	I :  ILB :		EXEC QDEC1       			SID
	I (  PCALL 		EXEC QDEC2        	SCAN	^EX  	UCAL        
	I @SEND  S @SEND   	EXEC QDEC1 QPRDEC       		S9
	I SG  IVB SG		EXEC QDEC1        	  		SID  #TRAP
UCAL:	PCALL @E )  S		EXEC QPARM QPRDEC	SCAN	      	S9
	FCALL @E )  I		EXEC QPARM QPRDEC 	SCAN	      	UXID
	@CALL @E ,  @CALL	EXEC QPARM  		SCAN	^EX	UCAL  #QU63
UARY:	SG							^EX	URY1
URY1:	ARID E ,  ARID	EXEC QSUBSC           	SCAN	^EX	URY1
	ARID E ]  IVB		EXEC QSUBSC QARDEC   	SCAN		     #QU62
MUMBLE   I[ at SID implies either a subscripted array variable or a list
replacement statement, which, because this is the first use of the 
list, must have an argument of one.  I[ at SID could be a subscripted
array, set, string, or list.  However, since this is the first use of 
the variable, the programmer must have intended to use its intialized
values.  Thus, he could have only intended the use of an array, since
such use of the others (when declared) leads to runtime errors;

QRC2:	PDEC SG 		EXEC RCCERR ENDRC			DS0
QRC1:	SG			EXEC RCCERR				FUSH
QRP1:	SG			EXEC RCPERR				FUSH
MUMBLE  More error productions;
Q34:	 S )    S 		EXEC ER37       	SCAN		S9
	DOL S SG 		EXEC ER33 		SCAN		S9
	S ELSE  S ;		EXEC ERR125				S9
	S SG  S ;		EXEC ER5 SCNBAK				S9   #XXQQ
Q35:	I @C1  IAR @C1	EXEC ER35 				MS   #XXQQ
Q36:	[ 			EXEC ER15		SCAN		EX     
	SG			EXEC ER36				EX
Q38:	SG			EXEC ER38				FUSH 
Q39:	SG			EXEC ER39				FUSH 
Q41:	) 			EXEC ER37        	SCAN		EX1  
	SG 			EXEC ER41		    		FUSH
Q42:	@IARY (  ARID		EXEC ER15 ARYIDX	SCAN	^ARY	XID   #XXQQ

UXID:	IP @IN I @SEND  IP @IN IST @SEND 
				EXEC QDEC1       			XID
	LDAT I )  LDAT ITV )	EXEC QDEC1        			XID
	DATUM I )  DATUM ITV ) 
				EXEC QDEC1       			XID
	I @ASOP  ITV @ASOP	EXEC QDEC1				XID
	I   ITV 		EXEC QDEC1				XID
	 I SG   ITV SG	EXEC QDEC1				XID
	@SIP I ,  @SIP ITV ,	EXEC QDEC1				XID
	I [  ARID		EXEC QDEC2        	SCAN	^UARY	XID
	I (  FCALL		EXEC QDEC2        	SCAN	^EX	UCAL
	I SG  IVB SG		EXEC QDEC1        			XID   #TRAP  
Q43:	NEW @E SG  IP		EXEC ER40 NEWART SCNBAK SCAN		IP2   #XXQQ
QRFI:	REFITEM @E SG  IP	EXEC ER40 @E ECHK 
    					RFIMAK SCNBAK	SCAN		IP2   #XXQQ
Q48:	@SIP SG  @SIP ~   	EXEC ER48 SCNBAK			SPP1  #XXQQ
Q48:	@SIP SG  @SIP ~   	EXEC ER48 SCNBAK			SPP1  #XXQQ
Q485:	I             		EXEC UNDEC             	     		QQA8  #XXQQ
QQA8:	I  ITV		EXEC QDEC0		SCAN		FRC1  #XXQQ
Q486:	I			EXEC UNDEC				QQA6  #XXQQ
QQA6:	I  ITV		EXEC QDEC0				FRD1  #XXQQ
Q50:	CRAP BE DO  TR	EXEC ER40 FRBOL		SCAN	     	FRG   #XXQQ 	 	
Q51:	FOREACH TR )  FOREACH TR   EXEC ER37		SCAN		FRG   #XXQQ
Q52:	SG			EXEC ER8 			^QPAR	LSB1   
Q53:	SG			EXEC ER8 			^QPAR	LSB2   
Q55:	SG			EXEC ER8 			^QPAR	PTII  
Q57:	SG			EXEC ER8 			^QPAR	REP0   
Q59:	SG			EXEC ER59				FUSH 
Q60:	SG			EXEC ER8  			^QPAR	QA60   
QA60:	@E @NXT			EXEC @NXT WAIT		SCAN	^NEX2	FOR1   #FOR1  
Q61:	@E )  @E		EXEC ER37         	SCAN		STO
	LHS @E SG  S ;	EXEC ER5 @E STORE SCNBAK		S9
	@ISTO  @E SG  S ;	EXEC ER5 @E SWPR  SCNBAK		S9  
	SG			EXEC ER8  			^QPAR	STO
Q62:	SG			EXEC ER8 			^QPAR	QA62   
QA62:	ARID E , 							ARY1
	ARID E ]							ARY1
	ARID E SG  I		EXEC ERR108 SUBSCR TYPAR SCNBAK  SCAN     #FUSH
QU62:	SG			EXEC ER8 			^QPAR	URY1
Q63:	, 			EXEC ER8 			^QPAR	PARM   
	PCALL @E SG  S SG	EXEC @E ECHK CALARG ISUCAL PRST ER40    S9
	FCALL @E SG  P     	EXEC @E ECHK CALARG ISUCAL TYPR1 ER40 SCNBAK 
							SCAN		PAM2  #XXQQ
QU63:	,			EXEC ER8 			^QPAR	UCAL  #XXQQ
Q64:	SG			EXEC ER8 			^QPAR	IFQ    
Q65:	SG			EXEC ER8 			^QPAR	CSES   
Q66:	SG			EXEC ER66				FUSH 
Q67:	, 			EXEC ER8 			^QPAR	CAS3   
	CASEX @E SG  @E    	EXEC @E CASE2 CASE3 ER40 SCNBAK  SCAN	ETYP  #XXQQ
Q68:	SG			EXEC ER68			     	FUSH  
Q69:	SG			EXEC ER8 			^QPAR 	EIF    
Q70:	SG			EXEC ER8 			^QPAR	EIF1   	
Q71:	SG			EXEC ER8 			^QPR1	EIF2   
Q72:	SG			EXEC ER8 			^QPAR	RFR2  
Q73:	SG			EXEC ER8 			^QPAR	WHG    
Q74:	AE SG  S SG 		EXEC ER37 DELT 				S9    #XXQQ
Q75:	SG			EXEC ER8 			^QPAR	MMX1
Q75.5:	SG			EXEC ER8			^QPAR	MMX5
Q76:	, 			EXEC ER8 			^QPAR	RTP    
	@E )  @E		EXEC ER37       	SCAN		RTP   #XXQQ
Q78:	SG			EXEC ER8 			^QPR1	ESTO   
Q80:	SG			EXEC ER8 			^QPAR	QA80   
QA80:	@E @NXT			EXEC @NXT WAIT 		 SCAN	^NEX2	BSTR  #BSTR
Q81:	@E )  @E 		EXEC ER37        	SCAN		DOLS
	DOL S UNTIL BE SG  S SG 
				EXEC ER40 DOUNT KOUNT1			S9
	SG			EXEC ER8 			^QPAR	DOLS
Q92:	SG			EXEC ER8 			^QPAR	%BP2  
Q97:	SG			EXEC ER8 			^QPAR	FK1   
Q98:	SG			EXEC ER8 			^QPAR	FK5   
Q99:	SG			EXEC ER8 			^QPAR	%EV3  
Q100:	SG			EXEC ER8  			^QPAR	%EV5  
Q101:	SG			EXEC ER8 			^QPAR	%CS2
Q102:	SG			EXEC ER8			^QPAR	%CS3
Q103:	SG			EXEC ER8			^QPR1	%CS4
Q104:	SG			EXEC ER8			^QPAR	%IR2
Q105:	SG			EXEC ER8			^QPR1	%IR3
Q106:	(			EXEC ERR109			^Z1	XID	#XXQQ
Q107:	SG			EXEC ERR110				XXQQ
Q108:	SG			EXEC ERR111				XXQQ
Q109:	BIND SG1 SG2  SG1 SG2	EXEC ERR112				EX1    #TRAP
Q110:	SG			EXEC ERR113				XXQQ
Q111:	SG			EXEC ERR114				XXQQ
QDPS:	SG								XXQQ
Q112:   SG			EXEC ERR116				XXQQ
Q113:	SG			EXEC ERR117				XXQQ
Q114:	SG			EXEC ERR118				XXQQ
Q115:	SG			EXEC ERR119				XXQQ
Q116:	SG			EXEC ERR120				XXQQ
Q117:   SG  			EXEC ERR121		PRESUME		Q117
Q118:	SG			EXEC ERR122 MACON			XXQQ 
Q119:	SG			EXEC ERR123 ASGOFF			XXQQ 
Q120:	SG			EXEC ERR124 ASGOFF			XXQQ 
Z1:	STC ( )  STC					SCAN		
	( ) 						SCAN		Z1
	(						SCAN		Z1
	SG 						SCAN		Z1
TRAP:	SG			EXEC ERTRAP				FUSH
<END>