Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-02 - 43,50263/declph.fas
There are 2 other files named declph.fas in the archive. Click here to see a list.
;*	*	*	*	*	*	*	*	*
;*	*	DECLARATIONS	*	*	*	*	*
;*	*	*	*	*	*	*	*	*
;*
;*		LOCAL
;*
;	DECLARE('SNOBOL.SUBPROGRAM','DECLPH')
;	DECLARE('OPTION','NO.STNO')
;	DECLARE('PURGE.VARIABLE',ALL)
;	DECLARE('PURGE.LABEL',ALL)
;	DECLARE('EXTERNAL.FUNCTION','GETSTA,STXERR,ERRMSG,PARLIT,GETITM'
;.)
;	DECLARE('INTEGER','I,J,K,ITSW,DFATR')
;	DECLARE('ENTRY.FUNCTION','INIDEC()')
;	DECLARE('ENTRY.FUNCTION','DECLPH()')
;*
;*		SYSTEM COMMON
;*
;*	TABLES AND LISTS
;	DECLARE('EXTERNAL.VARIABLE',
;.'SYMBTB,XNAMTB,KEYWTB,CTRLTB,DECLTB,CROSTB,CONSTB,ENTFTB,DSIZTB,
;.BOPRTB,UOPRTB')
;	DECLARE('EXTERNAL.VARIABLE',
;.'ENTRLS,EXTRLS,FORTLS')
;*	ARRAYS
;	DECLARE('EXTERNAL.VARIABLE',
;.'PTVRAR,PTFNAR,PRIMAR,GOTOAR,DECLAR,PROGAR,VARBAR,MACHAR,STENAR,BOPRAR,
;.UOPRAR,PATRAR,EXPRAR,AROPAR,ARITAR,EACTAR')
;*	PARAMETERS (STRINGS,DATATYPES)
;	DECLARE('EXTERNAL.VARIABLE',
;.'C,INDENT,SPLASH,ITNAM,ITENT,NOFAIL,SNONAM,SUBNAM,PARBLK,PRGNAM,STARTP,
;.TEMLOC,P1,P2,P3,P4,P5')
;*	PARAMETERS (INTEGERS)
;	DECLARE('EXTERNAL.VARIABLE',
;.'P,OBJFLG,LISTSR,INTGER,ITTYP,ITATR,PRGALV,PRGALL,PRGALF,STNFLG,HSHSIZ,
;.STRTIM,DMPFLG,LISTOB,STNO,MAXTMP')
;	DECLARE('INTEGER',
;.'P,OBJFLG,LISTSR,INTGER,ITTYP,ITATR,PRGALV,PRGALL,PRGALF,STNFLG,HSHSIZ,
;.STRTIM,DMPFLG,LISTOB,STNO,MAXTMP')
;	DECLARE('EXTERNAL.VARIABLE',
;.'XNATRB,VTATRB,VDATRB,LTATRB,FTATRB,FDATRB,TXATRB,VNATRB,VXATRB,VIATRB,
;.VGATRB,LIATRB,LGATRB,FIATRB,FGATRB,FXATRB,SKATRB,SDATRB,BTATRB')
;	DECLARE('INTEGER',
;.'XNATRB,VTATRB,VDATRB,LTATRB,FTATRB,FDATRB,TXATRB,VNATRB,VXATRB,VIATRB,
;.VGATRB,LIATRB,LGATRB,FIATRB,FGATRB,FXATRB,SKATRB,SDATRB,BTATRB')
;	DECLARE('EXTERNAL.VARIABLE',
;.'XNVATR,XNLATR,XNFATR,XNXMSK,VTVATR,VDDATR,VDPATR,VDDMSK,LTDATR,LTTMSK,
;.FTFATR,FDPATR,FDIATR,FDDMSK,TXTATR,TXTMSK,VNNATR,VXXATR,VIPATR,VGGATR,
;.LIPATR,LGGATR,FIPATR,FGGATR,FXXATR,FXXMSK,SKRATR,SDRATR,BTRATR')
;	DECLARE('INTEGER',
;.'XNVATR,XNLATR,XNFATR,XNXMSK,VTVATR,VDDATR,VDPATR,VDDMSK,LTDATR,LTTMSK,
;.FTFATR,FDPATR,FDIATR,FDDMSK,TXTATR,TXTMSK,VNNATR,VXXATR,VIPATR,VGGATR,
;.LIPATR,LGGATR,FIPATR,FGGATR,FXXATR,FXXMSK,SKRATR,SDRATR,BTRATR')
;*	SPECIAL CHARACTERS,CHARACTER SEQUENCES, AND CHARACTER CLASSES
;	DECLARE('EXTERNAL.VARIABLE',
;.'FFCHR,CRLCHR,LFCHR,CRCHR,SQCHR,DQCHR,TBCHR,LCSCHR,BLNCHR,EQLCHR,
;.QTSCHR,ELTCHR,LBCHR')
;*	PATTERNS AND MATCHES
;	DECLARE('EXTERNAL.VARIABLE',
;.'COMSPT,INTGPT,BLNKPT,OPBLPT,PCOMPT,PCPRMT,IDENPT,DCLCMT,RSIDPT,LABLPT,
;.POPRMT,IDENMT,SQLTPT,DQLTPT,LBDCPT,IDDCPT')
;*
;*	MINIMAL SYMBOL TABLE
;*
;	DECLARE('UNPURGE.VARIABLE','INIDEC,DECLPH,DFI,DSB,STR1')
;	DECLARE('UNPURGE.LABEL','INIDEC DECLPH DFI DSB NO.STNO TIMER
;. HASHSIZE= LD4 VD4 FD4 DCLEND XFF1 DD3 OPT SNO SUB PRV UPV PRL UPL
;. PRF UPF STR INT REL REN GLV GLL GLF EXV ENV EXL ENL EXF ENF XFF NFF')
;	DECLARE('PURGE.FUNCTION','DEFINE,DATA,IDENT,DIFFER,TABLE,ARRAY,
;.SUBSTR')
;*	*	*	*	*	*	*	*	*
;*	*	INITIALIZE DECLARATION PHASE	*	*	*
;*	*	*	*	*	*	*	*	*
;INIDEC	DEFINE('DFI()')
TITLE DECLPH
	OPDEF	UFERR$	[1B8]
	OPDEF	CFERR$	[2B8]
	OPDEF	FCALV$	[3B8]
	OPDEF	FCALN$	[4B8]
	OPDEF	DASGN$	[5B8]
	OPDEF	DCONC$	[6B8]
	OPDEF	DICNV$	[7B8]
	OPDEF	DRCNV$	[10B8]
	OPDEF	AREFV$	[11B8]
	OPDEF	AREFN$	[12B8]
ENTRY DECLPH,INIDEC
EXTERN IDDCPT,LBDCPT,DQLTPT,SQLTPT,IDENMT,POPRMT,LABLPT,RSIDPT,DCLCMT,IDENPT
EXTERN PCPRMT,PCOMPT,OPBLPT,BLNKPT,INTGPT,COMSPT,LBCHR,ELTCHR,QTSCHR,EQLCHR
EXTERN BLNCHR,LCSCHR,TBCHR,DQCHR,SQCHR,CRCHR,LFCHR,CRLCHR,FFCHR,BTRATR
EXTERN SDRATR,SKRATR,FXXMSK,FXXATR,FGGATR,FIPATR,LGGATR,LIPATR,VGGATR,VIPATR
EXTERN VXXATR,VNNATR,TXTMSK,TXTATR,FDDMSK,FDIATR,FDPATR,FTFATR,LTTMSK,LTDATR
EXTERN VDDMSK,VDPATR,VDDATR,VTVATR,XNXMSK,XNFATR,XNLATR,XNVATR,BTATRB,SDATRB
EXTERN SKATRB,FXATRB,FGATRB,FIATRB,LGATRB,LIATRB,VGATRB,VIATRB,VXATRB,VNATRB
EXTERN TXATRB,FDATRB,FTATRB,LTATRB,VDATRB,VTATRB,XNATRB,MAXTMP,STNO,LISTOB
EXTERN DMPFLG,STRTIM,HSHSIZ,STNFLG,PRGALF,PRGALL,PRGALV,ITATR,ITTYP,INTGER
EXTERN LISTSR,OBJFLG,P,P5,P4,P3,P2,P1,TEMLOC,STARTP
EXTERN PRGNAM,PARBLK,SUBNAM,SNONAM,NOFAIL,ITENT,ITNAM,SPLASH,INDENT,C
EXTERN EACTAR,ARITAR,AROPAR,EXPRAR,PATRAR,UOPRAR,BOPRAR,STENAR,MACHAR,VARBAR
EXTERN PROGAR,DECLAR,GOTOAR,PRIMAR,PTFNAR,PTVRAR,FORTLS,EXTRLS,ENTRLS,UOPRTB
EXTERN BOPRTB,DSIZTB,ENTFTB,CONSTB,CROSTB,DECLTB,CTRLTB,KEYWTB,XNAMTB,SYMBTB
EXTERN GETITM,PARLIT,ERRMSG,STXERR,GETSTA
L10095:
	MOVEI	14,Q10002
	MOVEM	14,S$$FLP##
	MOVE	1,S10275
	FCALV$	^D1,F10066
Q10002:
;	DEFINE('DSB(STR1)')
	MOVEI	14,Q10003
	MOVEM	14,S$$FLP##
	MOVE	1,S10276
	FCALV$	^D1,F10066
Q10003:
;	DATA('SYM(INAM,ATRB)')
	MOVEI	14,Q10004
	MOVEM	14,S$$FLP##
	MOVE	1,S10277
	FCALV$	^D1,F10060
Q10004:
;	DATA('CRS(NEXT,CRSI)')	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,S10278
	FCALV$	^D1,F10060
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*	*	PROCESS DECLARATIONS	*	*	*	*
;*	*	*	*	*	*	*	*	*
;DECLPH
L10097:
;*	DECLARATION LOOP
;DCLOOP	C	= GETSTA()	:F(NOEND)
L10279:
	MOVEI	14,L10280
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETSTA
	MOVEM	1,@C
;	C	SPAN(BLNCHR)  @P	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$SPN##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	C	LEN(*P)  'DECLARE('  @P	:F(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,S10281
	JSP	11,S$$MST##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;*	DECLARATION DECODING
;	C	LEN(*P)  NSPAN(BLNCHR)  @P  SQCHR  @P  @I
;.  SPAN('ABCDEFGHIJKLMNOPQRSTUVWXYZ.') $ DECTYP  @P  SQCHR  @P
;.  NSPAN(BLNCHR)  ','  NSPAN(BLNCHR)  @P  (SQCHR ! 'ALL') $ STR1  @P
;.	:F(BADDEC)
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	MOVE	1,@SQCHR
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@SQCHR
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	MOVE	1,@SQCHR
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D7,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$NSP##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10090
	JSP	11,S$$VAS##
	MOVEI	1,B10282
	JSP	11,S$$SPN##
	MOVE	1,N10283
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D3(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D4(15)
	JSP	11,S$$NSP##
	MOVE	1,S10284
	JSP	11,S$$MST##
	MOVE	1,^D5(15)
	JSP	11,S$$NSP##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$VAS##
	JSP	11,S$$APS##
	XWD	.-.,Q10006
	MOVE	1,^D6(15)
	JSP	11,S$$PTX##
	JRST	Q10005
Q10006:
	JSP	11,S$$APF##
	MOVE	1,S10285
	JSP	11,S$$MST##
Q10005:
	MOVE	1,N10241
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	DECTYP	= DECLTB[DECTYP]
	MOVEI	14,Q10007
	MOVEM	14,S$$FLP##
	MOVE	1,@N10283
	AREFV$	^D1,DECLTB
	MOVEM	1,@N10283
Q10007:
;	(?IDENT(STR1,'ALL') ?DIFFER(SUBSTR(DECTYP,2),'PR'))
;.	:S(BADDEC)
	MOVEI	14,Q10008
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	MOVE	1,S10285
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	1,@N10283
	PUSH	16,1
	MOVE	1,I10287
	FCALV$	^D2,F10081
	PUSH	16,1
	MOVE	1,S10288
	FCALV$	^D2,F10071
	SETZ	1,
	JRST	L10286
Q10008:
;	P	= ?IDENT(DECTYP) I	:F($DECTYP)
	MOVEI	14,Q10009
	MOVEM	14,S$$FLP##
	MOVE	1,@N10283
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	^D1,V10090
	MOVEM	1,P
	JRST	Q10010
Q10009:
	MOVEI 14,S$$BGT##
	MOVEM 14,S$$FLP##
	MOVE	1,@N10283
	JSP 14,S$$ILB##
Q10010:
;*	ERRORS
;	STXERR('UNKNOWN DECLARATION')	:(DCLOOP)
	MOVEI	14,L10279
	MOVEM	14,S$$FLP##
	MOVE	1,S10289
	FCALV$	^D1,STXERR
	JRST	L10279
;BADDEC	STXERR('BAD DECLARATION')	:(DCLOOP)
L10286:
	MOVEI	14,L10279
	MOVEM	14,S$$FLP##
	MOVE	1,S10290
	FCALV$	^D1,STXERR
	JRST	L10279
;BADOPT	STXERR('UNKNOWN OPTION')	:(DCLOOP)
L10291:
	MOVEI	14,L10279
	MOVEM	14,S$$FLP##
	MOVE	1,S10292
	FCALV$	^D1,STXERR
	JRST	L10279
;BADEXT	ERRMSG('MULTIPLE EXTERNAL FOR: ' ITNAM ', IGNORED')
;.	:($RETLAB)
L10293:
	MOVEI	14,Q10011
	MOVEM	14,S$$FLP##
	MOVE	1,S10294
	PUSH	16,1
	MOVE	1,@ITNAM
	PUSH	16,1
	MOVE	1,S10295
	JSP	14,S$$CNC##
	EXP	^D3
	FCALV$	^D1,ERRMSG
Q10011:
	MOVEI 14,S$$BGT##
	MOVEM 14,S$$FLP##
	MOVE	1,@N10296
	JSP 14,S$$ILB##
;BADDEF	ERRMSG('REDEFINITION OF: ' ITNAM ', IGNORED')	:($RETLAB)
L10297:
	MOVEI	14,Q10012
	MOVEM	14,S$$FLP##
	MOVE	1,S10298
	PUSH	16,1
	MOVE	1,@ITNAM
	PUSH	16,1
	MOVE	1,S10295
	JSP	14,S$$CNC##
	EXP	^D3
	FCALV$	^D1,ERRMSG
Q10012:
	MOVEI 14,S$$BGT##
	MOVEM 14,S$$FLP##
	MOVE	1,@N10296
	JSP 14,S$$ILB##
;NOEND	C	=	:(RETURN)
L10280:
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	SETZM	@C
	JRST	S$$SRT##
;*	DECLARATION LOOP BOTTOM
;DCLEND	C	DCLCMT	:F(BADDEC)S(DCLOOP)
L10248:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@DCLCMT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
	JRST	L10279
;DCAEND	C	PCPRMT  @P  OPBLPT  @P  RPOS(0)	:F(BADDEC)S(DCLOOP)
L10299:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@PCPRMT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@OPBLPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D3,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	HRRZ	1,K10300
	CAIE	1,(13)
	POPJ	16,
	JSP	11,S$$MTS##
	JRST	L10279
;*	OPTION DECLARATION
;OPT	C	LEN(*P)  ('NO.STNO' ! 'TIMER' ! 'HASHSIZE=') $ DECTYP
;.  @P	:F(BADOPT)S($DECTYP)
L10251:
	MOVEI	14,L10291
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	JSP	11,S$$APS##
	XWD	.-.,Q10014
	MOVE	1,S10242
	JSP	11,S$$MST##
	JRST	Q10013
Q10014:
	JSP	11,S$$APR##
	XWD	.-.,Q10015
	MOVE	1,S10243
	JSP	11,S$$MST##
	JRST	Q10013
Q10015:
	JSP	11,S$$APF##
	MOVE	1,S10244
	JSP	11,S$$MST##
Q10013:
	MOVE	1,N10283
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
	MOVEI 14,S$$BGT##
	MOVEM 14,S$$FLP##
	MOVE	1,@N10283
	JSP 14,S$$ILB##
;NO.STNO	STNFLG	= -1	:(DCLEND)
L10242:
	MOVN	^D1,K10301
	MOVEM	1,STNFLG
	JRST	L10248
;TIMER	STNFLG	= 1	:(DCLEND)
L10243:
	MOVE	^D1,K10301
	MOVEM	1,STNFLG
	JRST	L10248
;HASHSIZE=	C	LEN(*P)  INTGPT  @P	:F(BADDEC)
L10244:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@INTGPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	HSHSIZ	= INTGER	:(DCLEND)
	MOVE	^D1,INTGER
	MOVEM	1,HSHSIZ
	JRST	L10248
;*	SNOBOL.MAIN DECLARATION
;SNO	C	LEN(*P)  IDENPT $ SNONAM  @P	:F(BADDEC)S(DCLEND)
L10252:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@IDENPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,SNONAM
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
	JRST	L10248
;*	SNOBOL.SUBPROGRAM DECLARATION
;SUB	C	LEN(*P)  IDENPT $ SUBNAM  @P	:F(BADDEC)S(DCLEND)
L10253:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@IDENPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,SUBNAM
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
	JRST	L10248
;*	RENAME DECLARATION
;REN	C	LEN(*P)  IDENPT $ STR1  @P SQCHR  @P  PCOMPT  @P  SQCHR
;.  @P  IDENPT $ STR2  @P	:F(BADDEC)
L10263:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@IDENPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@SQCHR
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@PCOMPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@SQCHR
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@IDENPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D6,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$VAS##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,N10241
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D3(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	MOVE	1,^D4(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$VAS##
	MOVE	1,^D5(15)
	JSP	11,S$$PTX##
	MOVE	1,N10302
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	STR1	= .SYMBTB[STR1]
	MOVEI	14,Q10016
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	AREFN$	^D1,SYMBTB
	MOVEM	1,@N10241
Q10016:
;	SYMBTB[STR2]	= $STR1
	MOVEI	14,Q10017
	MOVEM	14,S$$FLP##
	MOVE	1,@N10302
	AREFN$	^D1,SYMBTB
	PUSH	16,1
	MOVE	1,@N10241
	JSP	14,S$$IVV##
	JSP	11,S$$ASG##
Q10017:
;	$STR1	=	:(DCLEND)
	MOVEI	14,L10248
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	JSP	14,S$$IVN##
	SETZM	(1)
	JRST	L10248
;*	LABEL DECLARATIONS
;* PURGE.LABEL
;PRL	PRGALL	= ?IDENT(STR1,'ALL') LIPATR	:S(DCAEND)
L10256:
	MOVEI	14,Q10018
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	MOVE	1,S10285
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	^D1,LIPATR
	MOVEM	1,PRGALL
	JRST	L10299
Q10018:
;	ITSW	= 1
	MOVE	^D1,K10301
	MOVEM	1,V10093
;	DFATR	= 2 * LTDATR + LIPATR
	MOVE	^D1,K10287
	IMUL	^D1,LTDATR
	ADD	^D1,LIPATR
	MOVEM	1,V10094
;LD1	ITPAT	= LABLPT
L10303:
	MOVEI	14,Q10019
	MOVEM	14,S$$FLP##
	MOVE	1,@LABLPT
	MOVEM	1,@N10304
Q10019:
;LD2	ITSEP	= SPAN(BLNCHR) ! @I
L10305:
	MOVEI	14,Q10023
	MOVEM	14,S$$FLP##
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$GPB##
	XWD	^D-2,Q10022
	JSP	11,S$$APS##
	XWD	.-.,Q10021
	MOVE	1,^D1(15)
	JSP	11,S$$SPN##
	JRST	Q10020
Q10021:
	JSP	11,S$$APF##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10090
Q10020:
	JRST	S$$PTS##
Q10022:
	MOVEM	1,@N10306
Q10023:
;	ITBRK	= LBDCPT
	MOVEI	14,Q10024
	MOVEM	14,S$$FLP##
	MOVE	1,@LBDCPT
	MOVEM	1,@N10307
Q10024:
;	ITTYP	= 1
	MOVE	^D1,K10301
	MOVEM	1,ITTYP
;	I	=	:(LD5)
	MOVEI	14,L10308
	MOVEM	14,S$$FLP##
	SETZM	V10090
	JRST	L10308
;* UNPURGE.LABEL
;UPL	ITSW	= 2
L10257:
	MOVE	^D1,K10287
	MOVEM	1,V10093
;	DFATR	= 2 * LTDATR	:(LD1)
	MOVE	^D1,K10287
	IMUL	^D1,LTDATR
	MOVEM	1,V10094
	JRST	L10303
;* GLOBAL.LABEL
;GLL	ITSW	= 3
L10265:
	MOVE	^D1,K10309
	MOVEM	1,V10093
;	DFATR	= 2 * LTDATR + LGGATR	:(LD1)
	MOVE	^D1,K10287
	IMUL	^D1,LTDATR
	ADD	^D1,LGGATR
	MOVEM	1,V10094
	JRST	L10303
;* EXTERNAL.LABEL
;EXL	ITSW	= 4
L10269:
	MOVE	^D1,K10310
	MOVEM	1,V10093
;	DFATR	= LTDATR + PRGALL + XNLATR
	MOVE	^D1,LTDATR
	ADD	^D1,PRGALL
	ADD	^D1,XNLATR
	MOVEM	1,V10094
;LD3	ITPAT	= RSIDPT		:(LD2)
L10311:
	MOVEI	14,L10305
	MOVEM	14,S$$FLP##
	MOVE	1,@RSIDPT
	MOVEM	1,@N10304
	JRST	L10305
;* ENTRY.LABEL
;ENL	ITSW	= 5
L10270:
	MOVE	^D1,K10312
	MOVEM	1,V10093
;	DFATR	= 2 * LTDATR + PRGALL + XNLATR	:(LD3)
	MOVE	^D1,K10287
	IMUL	^D1,LTDATR
	ADD	^D1,PRGALL
	ADD	^D1,XNLATR
	MOVEM	1,V10094
	JRST	L10311
;* COMMON CODE FOR LABELS
;LD4	?INE(I,P)	:F(DCLEND)
L10245:
	MOVEI	14,L10248
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10090
	JUMP	0,P
	ADD	16,S$$STB##
	SETZ	1,
;LD5	STR1	= DFI()	:F(BADDEC)
L10308:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10239
	MOVEM	1,@N10241
;	IDENT(STR1)	:F(LD7)
	MOVEI	14,L10313
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	FCALV$	^D1,F10072
;LD6	?IGE(ITSW,4)	:F(LD4)
L10314:
	MOVEI	14,L10245
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10093
	JUMP	0,K10310
	ADD	16,S$$STB##
	SETZ	1,
;	XNAMTB[INAM(ITENT)]	= ITNAM
	MOVEI	14,Q10025
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10315
	AREFN$	^D1,XNAMTB
	PUSH	16,1
	MOVE	1,@ITNAM
	JSP	11,S$$ASG##
Q10025:
;	EXTRLS	= ?IEQ(ITSW,4) CRS(EXTRLS,ITNAM)	:S(LD4)
	MOVEI	14,Q10026
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10310
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@EXTRLS
	PUSH	16,1
	MOVE	1,@ITNAM
	FCALV$	^D2,F10316
	MOVEM	1,@EXTRLS
	JRST	L10245
Q10026:
;	ENTRLS	= CRS(ENTRLS,ITNAM)	:(LD4)
	MOVEI	14,L10245
	MOVEM	14,S$$FLP##
	MOVE	1,@ENTRLS
	PUSH	16,1
	MOVE	1,@ITNAM
	FCALV$	^D2,F10316
	MOVEM	1,@ENTRLS
	JRST	L10245
;LD7	ATRB(ITENT)	= ?IEQ(LTATRB,0) OR(ITATR,DFATR)	:F(LD9)
L10313:
	MOVEI	14,L10318
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,LTATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;LD8	ATRB(ITENT)	= ?IGE(ITSW,4) ?INE(XNATRB,0) OR(ITATR,DFATR -
;. XNLATR)	:F(LD6)
L10319:
	MOVEI	14,L10314
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10093
	JUMP	0,K10310
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10094
	SUB	^D1,XNLATR
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;	RETLAB	= 'LD4'	:(BADEXT)
	MOVEI	14,L10293
	MOVEM	14,S$$FLP##
	MOVE	1,S10245
	MOVEM	1,@N10296
	JRST	L10293
;LD9	ATRB(ITENT)	= ?IEQ(ITSW,3) OR(ITATR,LGGATR)	:S(LD4)
L10318:
	MOVEI	14,Q10027
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10309
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,LGGATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10245
Q10027:
;	ATRB(ITENT)	= ?IEQ(ITSW,1) OR(ITATR,LIPATR)	:S(LD4)
	MOVEI	14,Q10028
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10301
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,LIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10245
Q10028:
;	ATRB(ITENT)	= ?IEQ(ITSW,2) AND(ITATR,NOT(LIPATR))	:S(LD4)
	MOVEI	14,Q10029
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10287
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NOT##
	JUMP	0,LIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10245
Q10029:
;	ITATR	= ITATR - LTATRB
	MOVE	^D1,ITATR
	SUB	^D1,LTATRB
	MOVEM	1,ITATR
;	DFATR	= DFATR - PRGALL
	MOVE	^D1,V10094
	SUB	^D1,PRGALL
	MOVEM	1,V10094
;	ATRB(ITENT)	= OR(ITATR,DFATR)	:(LD8)
	MOVEI	14,L10319
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10319
;*	VARIABLE DECLARATIONS
;* PURGE.VARIABLE
;PRV	PRGALV	= ?IDENT(STR1,'ALL') VIPATR	:S(DCAEND)
L10254:
	MOVEI	14,Q10030
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	MOVE	1,S10285
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	^D1,VIPATR
	MOVEM	1,PRGALV
	JRST	L10299
Q10030:
;	ITSW	= 1
	MOVE	^D1,K10301
	MOVEM	1,V10093
;	DFATR	= VTVATR + VIPATR
	MOVE	^D1,VTVATR
	ADD	^D1,VIPATR
	MOVEM	1,V10094
;VD1	ITPAT	= IDENPT
L10320:
	MOVEI	14,Q10031
	MOVEM	14,S$$FLP##
	MOVE	1,@IDENPT
	MOVEM	1,@N10304
Q10031:
;VD2	ITSEP	= PCOMPT ! @I
L10321:
	MOVEI	14,Q10035
	MOVEM	14,S$$FLP##
	MOVE	1,@PCOMPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$GPB##
	XWD	^D-2,Q10034
	JSP	11,S$$APS##
	XWD	.-.,Q10033
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JRST	Q10032
Q10033:
	JSP	11,S$$APF##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10090
Q10032:
	JRST	S$$PTS##
Q10034:
	MOVEM	1,@N10306
Q10035:
;	ITBRK	= IDDCPT
	MOVEI	14,Q10036
	MOVEM	14,S$$FLP##
	MOVE	1,@IDDCPT
	MOVEM	1,@N10307
Q10036:
;	ITTYP	=
	MOVEI	14,Q10037
	MOVEM	14,S$$FLP##
	SETZM	ITTYP
Q10037:
;	I	=	:(VD5)
	MOVEI	14,L10322
	MOVEM	14,S$$FLP##
	SETZM	V10090
	JRST	L10322
;* UNPURGE.VARIABLE
;UPV	ITSW	= 2
L10255:
	MOVE	^D1,K10287
	MOVEM	1,V10093
;	DFATR	= VTVATR	:(VD1)
	MOVE	^D1,VTVATR
	MOVEM	1,V10094
	JRST	L10320
;* GLOBAL.VARIABLE
;GLV	ITSW	= 3
L10264:
	MOVE	^D1,K10309
	MOVEM	1,V10093
;	DFATR	= VTVATR + VGGATR	:(VD1)
	MOVE	^D1,VTVATR
	ADD	^D1,VGGATR
	MOVEM	1,V10094
	JRST	L10320
;* EXTERNAL.VARIABLE
;EXV	ITSW	= 4
L10267:
	MOVE	^D1,K10310
	MOVEM	1,V10093
;	DFATR	= VTVATR + PRGALV + XNVATR + VXXATR
	MOVE	^D1,VTVATR
	ADD	^D1,PRGALV
	ADD	^D1,XNVATR
	ADD	^D1,VXXATR
	MOVEM	1,V10094
;VD3	ITPAT	= RSIDPT	:(VD2)
L10323:
	MOVEI	14,L10321
	MOVEM	14,S$$FLP##
	MOVE	1,@RSIDPT
	MOVEM	1,@N10304
	JRST	L10321
;* ENTRY.VARIABLE
;ENV	ITSW	= 5
L10268:
	MOVE	^D1,K10312
	MOVEM	1,V10093
;	DFATR	= VTVATR + PRGALV + XNVATR	:(VD3)
	MOVE	^D1,VTVATR
	ADD	^D1,PRGALV
	ADD	^D1,XNVATR
	MOVEM	1,V10094
	JRST	L10323
;* COMMON CODE FOR VARIABLES
;VD4	?INE(I,P)	:F(DCLEND)
L10246:
	MOVEI	14,L10248
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10090
	JUMP	0,P
	ADD	16,S$$STB##
	SETZ	1,
;VD5	STR1	= DFI()	:F(BADDEC)
L10322:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10239
	MOVEM	1,@N10241
;	IDENT(STR1)	:F(VD7)
	MOVEI	14,L10324
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	FCALV$	^D1,F10072
;VD6	?IGE(ITSW,4)	:F(VD4)
L10325:
	MOVEI	14,L10246
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10093
	JUMP	0,K10310
	ADD	16,S$$STB##
	SETZ	1,
;	XNAMTB[INAM(ITENT)]	= ITNAM
	MOVEI	14,Q10038
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10315
	AREFN$	^D1,XNAMTB
	PUSH	16,1
	MOVE	1,@ITNAM
	JSP	11,S$$ASG##
Q10038:
;	EXTRLS	= ?IEQ(ITSW,4) CRS(EXTRLS,ITNAM)	:S(VD4)
	MOVEI	14,Q10039
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10310
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,@EXTRLS
	PUSH	16,1
	MOVE	1,@ITNAM
	FCALV$	^D2,F10316
	MOVEM	1,@EXTRLS
	JRST	L10246
Q10039:
;	ENTRLS	= CRS(ENTRLS,ITNAM)	:(VD4)
	MOVEI	14,L10246
	MOVEM	14,S$$FLP##
	MOVE	1,@ENTRLS
	PUSH	16,1
	MOVE	1,@ITNAM
	FCALV$	^D2,F10316
	MOVEM	1,@ENTRLS
	JRST	L10246
;VD7	ATRB(ITENT)	= ?IEQ(VTATRB,0) OR(ITATR,DFATR)	:F(VD9)
L10324:
	MOVEI	14,L10326
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VTATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;VD8	ATRB(ITENT)	= ?IGE(ITSW,4) ?INE(XNATRB,0) OR(ITATR,DFATR -
;. XNATRB - (5 - ITSW) * VXXATR)	:F(VD6)
L10327:
	MOVEI	14,L10325
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$GEP##
	JUMP	0,V10093
	JUMP	0,K10310
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10094
	SUB	^D1,XNATRB
	MOVE	^D2,K10312
	SUB	^D2,V10093
	IMUL	^D2,VXXATR
	SUB	^D1,^D2
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;	RETLAB	= 'VD4'	:(BADEXT)
	MOVEI	14,L10293
	MOVEM	14,S$$FLP##
	MOVE	1,S10246
	MOVEM	1,@N10296
	JRST	L10293
;VD9	RETLAB	= ?IEQ(VDATRB,VDPATR) 'VD4'	:S(BADDEF)
L10326:
	MOVEI	14,Q10040
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VDATRB
	JUMP	0,VDPATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10246
	MOVEM	1,@N10296
	JRST	L10297
Q10040:
;	ATRB(ITENT)	= ?IEQ(ITSW,3) OR(ITATR,VGGATR)	:S(VD4)
	MOVEI	14,Q10041
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10309
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,VGGATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10246
Q10041:
;	ATRB(ITENT)	= ?IEQ(ITSW,1) OR(ITATR,VIPATR)	:S(VD4)
	MOVEI	14,Q10042
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10301
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,VIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10246
Q10042:
;	ATRB(ITENT)	= ?IEQ(ITSW,2) AND(ITATR,NOT(VIPATR))	:S(VD4)
	MOVEI	14,Q10043
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10287
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NOT##
	JUMP	0,VIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10246
Q10043:
;	DFATR	= DFATR - PRGALV
	MOVE	^D1,V10094
	SUB	^D1,PRGALV
	MOVEM	1,V10094
;	ATRB(ITENT)	= OR(ITATR,DFATR)	:(VD8)
	MOVEI	14,L10327
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10327
;*	FUNCTION DECLARATIONS
;* PURGE.FUNCTION
;PRF	PRGALF	= ?IDENT(STR1,'ALL') FIPATR	:S(DCAEND)
L10258:
	MOVEI	14,Q10044
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	MOVE	1,S10285
	FCALV$	^D2,F10072
	SETZ	1,
	MOVE	^D1,FIPATR
	MOVEM	1,PRGALF
	JRST	L10299
Q10044:
;	ITSW	= 1
	MOVE	^D1,K10301
	MOVEM	1,V10093
;	DFATR	= FTFATR + FIPATR
	MOVE	^D1,FTFATR
	ADD	^D1,FIPATR
	MOVEM	1,V10094
;FD1	ITPAT	= IDENPT
L10328:
	MOVEI	14,Q10045
	MOVEM	14,S$$FLP##
	MOVE	1,@IDENPT
	MOVEM	1,@N10304
Q10045:
;FD2	ITSEP	= PCOMPT ! @I
L10329:
	MOVEI	14,Q10049
	MOVEM	14,S$$FLP##
	MOVE	1,@PCOMPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$GPB##
	XWD	^D-2,Q10048
	JSP	11,S$$APS##
	XWD	.-.,Q10047
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JRST	Q10046
Q10047:
	JSP	11,S$$APF##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10090
Q10046:
	JRST	S$$PTS##
Q10048:
	MOVEM	1,@N10306
Q10049:
;	ITBRK	= IDDCPT
	MOVEI	14,Q10050
	MOVEM	14,S$$FLP##
	MOVE	1,@IDDCPT
	MOVEM	1,@N10307
Q10050:
;	ITTYP	= 7
	MOVE	^D1,K10330
	MOVEM	1,ITTYP
;	I	=	:(FD5)
	MOVEI	14,L10331
	MOVEM	14,S$$FLP##
	SETZM	V10090
	JRST	L10331
;* UNPURGE.FUNCTION
;UPF	ITSW	= 2
L10259:
	MOVE	^D1,K10287
	MOVEM	1,V10093
;	DFATR	= FTFATR	:(FD1)
	MOVE	^D1,FTFATR
	MOVEM	1,V10094
	JRST	L10328
;* GLOBAL.FUNCTION
;GLF	ITSW	= 3
L10266:
	MOVE	^D1,K10309
	MOVEM	1,V10093
;	DFATR	= FTFATR + FGGATR	:(FD1)
	MOVE	^D1,FTFATR
	ADD	^D1,FGGATR
	MOVEM	1,V10094
	JRST	L10328
;* EXTERNAL.FUNCTION
;EXF	ITSW	= 4
L10271:
	MOVE	^D1,K10310
	MOVEM	1,V10093
;	DFATR	= FTFATR + FXXATR + XNFATR
	MOVE	^D1,FTFATR
	ADD	^D1,FXXATR
	ADD	^D1,XNFATR
	MOVEM	1,V10094
;	ITPAT	= RSIDPT	:(FD2)
	MOVEI	14,L10329
	MOVEM	14,S$$FLP##
	MOVE	1,@RSIDPT
	MOVEM	1,@N10304
	JRST	L10329
;* COMMON CODE FOR FUNCTIONS
;FD4	?INE(I,P)	:F(DCLEND)
L10247:
	MOVEI	14,L10248
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10090
	JUMP	0,P
	ADD	16,S$$STB##
	SETZ	1,
;FD5	STR1	= DFI()	:F(BADDEC)
L10331:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10239
	MOVEM	1,@N10241
;	IDENT(STR1)	:F(FD7)
	MOVEI	14,L10332
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	FCALV$	^D1,F10072
;FD6	?IEQ(ITSW,4)	:F(FD4)
L10333:
	MOVEI	14,L10247
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10310
	ADD	16,S$$STB##
	SETZ	1,
;	XNAMTB[INAM(ITENT)]	= ITNAM
	MOVEI	14,Q10051
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10315
	AREFN$	^D1,XNAMTB
	PUSH	16,1
	MOVE	1,@ITNAM
	JSP	11,S$$ASG##
Q10051:
;	EXTRLS	= CRS(EXTRLS,ITNAM)	:(FD4)
	MOVEI	14,L10247
	MOVEM	14,S$$FLP##
	MOVE	1,@EXTRLS
	PUSH	16,1
	MOVE	1,@ITNAM
	FCALV$	^D2,F10316
	MOVEM	1,@EXTRLS
	JRST	L10247
;FD7	ITATR	= ?IEQ(ITSW,4) ?IEQ(FXATRB,FXXMSK) ITATR - FXATRB -
;. TXATRB
L10332:
	MOVEI	14,Q10052
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10310
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FXATRB
	JUMP	0,FXXMSK
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,ITATR
	SUB	^D1,FXATRB
	SUB	^D1,TXATRB
	MOVEM	1,ITATR
Q10052:
;	ATRB(ITENT)	= ?IEQ(FTATRB,0) OR(ITATR,DFATR)	:F(FD9)
	MOVEI	14,L10334
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FTATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;FD8	ATRB(ITENT)	= ?IEQ(ITSW,8) ?INE(XNATRB,0) OR(ITATR,FTFATR)
;.	:F(FD6)
L10335:
	MOVEI	14,L10333
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10336
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,FTFATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;	RETLAB	= 'FD4'	:(BADEXT)
	MOVEI	14,L10293
	MOVEM	14,S$$FLP##
	MOVE	1,S10247
	MOVEM	1,@N10296
	JRST	L10293
;FD9	RETLAB	= ?IEQ(FDATRB,FDPATR) 'FD4'	:S(BADDEF)
L10334:
	MOVEI	14,Q10053
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FDATRB
	JUMP	0,FDPATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10247
	MOVEM	1,@N10296
	JRST	L10297
Q10053:
;	ATRB(ITENT)	= ?IEQ(ITSW,3) OR(ITATR,FGGATR)	:S(FD4)
	MOVEI	14,Q10054
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10309
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,FGGATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10247
Q10054:
;	ATRB(ITENT)	= ?IEQ(ITSW,1) OR(ITATR,FIPATR)	:S(FD4)
	MOVEI	14,Q10055
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10301
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,FIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10247
Q10055:
;	ATRB(ITENT)	= ?IEQ(ITSW,2) AND(ITATR,NOT(FIPATR))	:S(FD4)
	MOVEI	14,Q10056
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10287
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NOT##
	JUMP	0,FIPATR
	ADD	16,S$$STB##
	MOVE	1,0
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$AND##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10247
Q10056:
;	ATRB(ITENT)	= OR(ITATR,DFATR)	:(FD8)
	MOVEI	14,L10335
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10335
;*	ENTRY.FUNCTION DECLARATION
;ENF	J	= P
L10272:
	MOVE	^D1,P
	MOVEM	1,V10091
;	STR1	= PARLIT(SQCHR,SQLTPT)	:F(BADDEC)
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@SQCHR
	PUSH	16,1
	MOVE	1,@SQLTPT
	FCALV$	^D2,PARLIT
	MOVEM	1,@N10241
;	STR1	@K  RSIDPT  @K  '('  @K  BREAK(')')	:S(ENFA)
	MOVEI	14,Q10057
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	MOVE	1,@RSIDPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVE	1,S10337
	JSP	11,S$$MST##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVEI	1,B10338
	JSP	11,S$$BRK##
	JSP	11,S$$MTS##
	JRST	L10339
Q10057:
;ENFX	P	= J + K	:(BADDEC)
L10340:
	MOVE	^D1,V10091
	ADD	^D1,V10092
	MOVEM	1,P
	JRST	L10286
;ENFA	STR2	=
L10339:
	MOVEI	14,Q10058
	MOVEM	14,S$$FLP##
	SETZM	@N10302
Q10058:
;	C	LEN(*(P + 1))  PCOMPT  SQCHR  @P	:F(ENFB)
	MOVEI	14,L10341
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@PCOMPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@SQCHR
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D3,0
	MOVE	^D1,P
	ADD	^D1,K10301
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	STR2	= PARLIT(SQCHR,SQLTPT)	:F(BADDEC)
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@SQCHR
	PUSH	16,1
	MOVE	1,@SQLTPT
	FCALV$	^D2,PARLIT
	MOVEM	1,@N10302
;ENFB	DFATR	= FTFATR + 2 * FXXATR + XNFATR + PRGALF
L10341:
	MOVE	^D1,FTFATR
	MOVE	^D2,K10287
	IMUL	^D2,FXXATR
	ADD	^D1,^D2
	ADD	^D1,XNFATR
	ADD	^D1,PRGALF
	MOVEM	1,V10094
;	ITTYP	= 7
	MOVE	^D1,K10330
	MOVEM	1,ITTYP
;	ITATR	= DFATR
	MOVE	^D1,V10094
	MOVEM	1,ITATR
;	(?GETITM() ?IEQ(DFATR,ITATR))	:F(ENF4)
	MOVEI	14,L10342
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10094
	JUMP	0,ITATR
	ADD	16,S$$STB##
	SETZ	1,
;ENF1	XNAMTB[INAM(ITENT)]	= ITNAM
L10343:
	MOVEI	14,Q10059
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10315
	AREFN$	^D1,XNAMTB
	PUSH	16,1
	MOVE	1,@ITNAM
	JSP	11,S$$ASG##
Q10059:
;	ENTRLS	= CRS(ENTRLS,ITNAM)
	MOVEI	14,Q10060
	MOVEM	14,S$$FLP##
	MOVE	1,@ENTRLS
	PUSH	16,1
	MOVE	1,@ITNAM
	FCALV$	^D2,F10316
	MOVEM	1,@ENTRLS
Q10060:
;	ENTFTB	= ?IDENT(ENTFTB) TABLE(3,3)
	MOVEI	14,Q10061
	MOVEM	14,S$$FLP##
	MOVE	1,@ENTFTB
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,I10309
	PUSH	16,1
	MOVE	1,I10309
	FCALV$	^D2,F10064
	MOVEM	1,@ENTFTB
Q10061:
;	ITPTR	= .ENTFTB[INAM(ITENT)]
	MOVEI	14,Q10062
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10315
	AREFN$	^D1,ENTFTB
	MOVEM	1,@N10344
Q10062:
;	$ITPTR	= ARRAY('4',STNO)
	MOVEI	14,Q10063
	MOVEM	14,S$$FLP##
	MOVE	1,@N10344
	JSP	14,S$$IVN##
	PUSH	16,1
	MOVE	1,S10345
	PUSH	16,1
	MOVE	^D1,STNO
	TLO	1,1B18
	TLZ	1,1B19
	FCALV$	^D2,F10063
	JSP	11,S$$ASG##
Q10063:
;	ITPTR	= $ITPTR
	MOVEI	14,Q10064
	MOVEM	14,S$$FLP##
	MOVE	1,@N10344
	JSP	14,S$$IVV##
	MOVEM	1,@N10344
Q10064:
;	ITPTR<2>	= DSB(STR1)
	MOVEI	14,Q10065
	MOVEM	14,S$$FLP##
	MOVE	1,I10287
	AREFN$	^D1,N10344
	PUSH	16,1
	MOVE	1,@N10241
	FCALV$	^D1,F10240
	JSP	11,S$$ASG##
Q10065:
;	I	=
	MOVEI	14,Q10066
	MOVEM	14,S$$FLP##
	SETZM	V10090
Q10066:
;	STR1	BREAK('(')  @J  '(' NSPAN(BLNCHR) ')'	:S(ENF3)
	MOVEI	14,Q10067
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	MOVE	1,@BLNCHR
	JSP	11,S$$MBT##
	EXP	.
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVEI	1,B10337
	JSP	11,S$$BRK##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10091
	MOVE	1,S10337
	JSP	11,S$$MST##
	MOVE	1,^D1(15)
	JSP	11,S$$NSP##
	MOVE	1,S10338
	JSP	11,S$$MST##
	JSP	11,S$$MTS##
	JRST	L10346
Q10067:
;	I	= 1
	MOVE	^D1,K10301
	MOVEM	1,V10090
;ENF2	STR1	LEN(*(J + 1))  BREAK(',)')  @J  ','	:F(ENF3)
L10347:
	MOVEI	14,L10346
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVE	^D1,V10091
	ADD	^D1,K10301
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVEI	1,B10348
	JSP	11,S$$BRK##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10091
	MOVE	1,S10284
	JSP	11,S$$MST##
	JSP	11,S$$MTS##
;	I	= I + 1	:(ENF2)
	MOVE	^D1,V10090
	ADD	^D1,K10301
	MOVEM	1,V10090
	JRST	L10347
;ENF3	ITPTR<4>	= I
L10346:
	MOVEI	14,Q10068
	MOVEM	14,S$$FLP##
	MOVE	1,I10310
	AREFN$	^D1,N10344
	PUSH	16,1
	MOVE	^D1,V10090
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10068:
;	ITPTR<3>	= ?IDENT(STR2) STR2	:S(DCLEND)
	MOVEI	14,Q10069
	MOVEM	14,S$$FLP##
	MOVE	1,I10309
	AREFN$	^D1,N10344
	PUSH	16,1
	MOVE	1,@N10302
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10302
	JSP	11,S$$ASG##
	JRST	L10248
Q10069:
;	ITPTR<3>	= DSB(STR2)	:(DCLEND)
	MOVEI	14,L10248
	MOVEM	14,S$$FLP##
	MOVE	1,I10309
	AREFN$	^D1,N10344
	PUSH	16,1
	MOVE	1,@N10302
	FCALV$	^D1,F10240
	JSP	11,S$$ASG##
	JRST	L10248
;ENF4	ITATR	= ?IEQ(FXATRB,FXXMSK) ITATR - FXATRB - TXATRB
L10342:
	MOVEI	14,Q10070
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FXATRB
	JUMP	0,FXXMSK
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,ITATR
	SUB	^D1,FXATRB
	SUB	^D1,TXATRB
	MOVEM	1,ITATR
Q10070:
;	ATRB(ITENT)	= ?IEQ(FTATRB,0) OR(ITATR,DFATR)	:F(ENF6)
	MOVEI	14,L10349
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FTATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;ENF5	ATRB(ITENT)	= ?INE(XNATRB,0) OR(ITATR,DFATR - 2 * FXXATR -
;. XNFATR)	:F(ENF1)
L10350:
	MOVEI	14,L10343
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10094
	MOVE	^D2,K10287
	IMUL	^D2,FXXATR
	SUB	^D1,^D2
	SUB	^D1,XNFATR
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;	RETLAB	= 'DCLEND'	:(BADEXT)
	MOVEI	14,L10293
	MOVEM	14,S$$FLP##
	MOVE	1,S10248
	MOVEM	1,@N10296
	JRST	L10293
;ENF6	RETLAB	= ?IEQ(FDATRB,FDPATR) 'DCLEND'	:S(BADDEF)
L10349:
	MOVEI	14,Q10071
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FDATRB
	JUMP	0,FDPATR
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10248
	MOVEM	1,@N10296
	JRST	L10297
Q10071:
;	DFATR	= DFATR - PRGALF
	MOVE	^D1,V10094
	SUB	^D1,PRGALF
	MOVEM	1,V10094
;	ATRB(ITENT)	= OR(ITATR,DFATR)	:(ENF5)
	MOVEI	14,L10350
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10350
;*	EXTERNAL.FORTRAN.FUNCTION DECLARATION
;XFF	ITTYP	= 7
L10273:
	MOVE	^D1,K10330
	MOVEM	1,ITTYP
;	I	=	:(XFF2)
	MOVEI	14,L10351
	MOVEM	14,S$$FLP##
	SETZM	V10090
	JRST	L10351
;XFF1	?INE(I,P)	:F(DCLEND)
L10249:
	MOVEI	14,L10248
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10090
	JUMP	0,P
	ADD	16,S$$STB##
	SETZ	1,
;XFF2	J	= P
L10351:
	MOVE	^D1,P
	MOVEM	1,V10091
;	STR2	= PARLIT(SQCHR,IDDCPT)	:F(BADDEC)
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@SQCHR
	PUSH	16,1
	MOVE	1,@IDDCPT
	FCALV$	^D2,PARLIT
	MOVEM	1,@N10302
;	STR2	@K  RSIDPT $ STR1  @K  ('='  ('INTEGER' !
;. 'REAL') $ STR1 ! '')  @K  '('  @K  INTGPT  @K  ')'  RPOS(0)	:F(ENFX)
	MOVEI	14,L10340
	MOVEM	14,S$$FLP##
	MOVE	1,@N10302
	PUSH	16,1
	MOVE	1,@RSIDPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@INTGPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D3,0
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	JSP	11,S$$VAS##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,N10241
	JSP	11,S$$IVA##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	JSP	11,S$$APS##
	XWD	.-.,Q10073
	MOVE	1,S10352
	JSP	11,S$$MST##
	JSP	11,S$$VAS##
	JSP	11,S$$APS##
	XWD	.-.,Q10075
	MOVE	1,S10048
	JSP	11,S$$MST##
	JRST	Q10074
Q10075:
	JSP	11,S$$APF##
	MOVE	1,S10049
	JSP	11,S$$MST##
Q10074:
	MOVE	1,N10241
	JSP	11,S$$IVA##
	JRST	Q10072
Q10073:
	JSP	11,S$$APF##

Q10072:
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVE	1,S10337
	JSP	11,S$$MST##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVE	1,S10338
	JSP	11,S$$MST##
	HRRZ	1,K10300
	CAIE	1,(13)
	POPJ	16,
	JSP	11,S$$MTS##
;	C	LEN(*P)  (PCOMPT ! @I)  @P	:F(BADDEC)
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@PCOMPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	JSP	11,S$$APS##
	XWD	.-.,Q10077
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JRST	Q10076
Q10077:
	JSP	11,S$$APF##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10090
Q10076:
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	J	= FDIATR
	MOVE	^D1,FDIATR
	MOVEM	1,V10091
;	STR1	NOTANY('IJKLMN')	:F(XFF3)
	MOVEI	14,L10354
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D-1,0
	BYTE	(2)2(16)1(18).+1
	MOVEI	1,B10353
	JSP	11,S$$NTA##
	JSP	11,S$$MTS##
;	J	= FDDMSK
	MOVE	^D1,FDDMSK
	MOVEM	1,V10091
;XFF3	DFATR	= FTFATR + J + XNFATR + INTGER * TXTATR
L10354:
	MOVE	^D1,FTFATR
	ADD	^D1,V10091
	ADD	^D1,XNFATR
	MOVE	^D2,INTGER
	IMUL	^D2,TXTATR
	ADD	^D1,^D2
	MOVEM	1,V10094
;	ITATR	= DFATR
	MOVE	^D1,V10094
	MOVEM	1,ITATR
;	(?GETITM() ?IEQ(DFATR,ITATR))	:F(XFF5)
	MOVEI	14,L10355
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10094
	JUMP	0,ITATR
	ADD	16,S$$STB##
	SETZ	1,
;XFF4	XNAMTB[INAM(ITENT)]	= ITNAM
L10356:
	MOVEI	14,Q10078
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10315
	AREFN$	^D1,XNAMTB
	PUSH	16,1
	MOVE	1,@ITNAM
	JSP	11,S$$ASG##
Q10078:
;	EXTRLS	= CRS(EXTRLS,ITNAM)	:(XFF1)
	MOVEI	14,L10249
	MOVEM	14,S$$FLP##
	MOVE	1,@EXTRLS
	PUSH	16,1
	MOVE	1,@ITNAM
	FCALV$	^D2,F10316
	MOVEM	1,@EXTRLS
	JRST	L10249
;XFF5	ITATR	= ?IEQ(FXATRB,FXXMSK) ITATR - FXATRB - TXATRB	:F(XFF6)
L10355:
	MOVEI	14,L10357
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FXATRB
	JUMP	0,FXXMSK
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,ITATR
	SUB	^D1,FXATRB
	SUB	^D1,TXATRB
	MOVEM	1,ITATR
;	TXATRB	=
	MOVEI	14,Q10079
	MOVEM	14,S$$FLP##
	SETZM	TXATRB
Q10079:
;XFF6	RETLAB	= ?INE(TXATRB,0) 'XFF1'	:S(BADDEF)
L10357:
	MOVEI	14,Q10080
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,TXATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10249
	MOVEM	1,@N10296
	JRST	L10297
Q10080:
;	ATRB(ITENT)	= ?IEQ(FTATRB,0) OR(ITATR,DFATR)	:F(XFF8)
	MOVEI	14,L10358
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,FTATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;XFF7	ATRB(ITENT)	= ?INE(XNATRB,0) OR(ITATR,DFATR - XNFATR)
;.	:F(XFF4)
L10359:
	MOVEI	14,L10356
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,XNATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10094
	SUB	^D1,XNFATR
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
;	RETLAB	= 'XFF1'	:(BADEXT)
	MOVEI	14,L10293
	MOVEM	14,S$$FLP##
	MOVE	1,S10249
	MOVEM	1,@N10296
	JRST	L10293
;XFF8	RETLAB	= ?INE(FXATRB,0) 'XFF1'	:S(BADDEF)
L10358:
	MOVEI	14,Q10081
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,FXATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10249
	MOVEM	1,@N10296
	JRST	L10297
Q10081:
;	ATRB(ITENT)	= OR(ITATR,DFATR)	:(XFF7)
	MOVEI	14,L10359
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10359
;*
;*	ENTRY.FORTRAN.FUNCTION DECLARATION
;NFF	J	= P
L10274:
	MOVE	^D1,P
	MOVEM	1,V10091
;	STR1	= PARLIT(SQCHR,SQLTPT)	:F(BADDEC)
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@SQCHR
	PUSH	16,1
	MOVE	1,@SQLTPT
	FCALV$	^D2,PARLIT
	MOVEM	1,@N10241
;	STR1	@K  RSIDPT  @K  '('  @K  BREAK(')')  ')'  @K
;.  RPOS(0)	:F(ENFX)
	MOVEI	14,L10340
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	PUSH	16,1
	MOVE	1,@RSIDPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVE	1,S10337
	JSP	11,S$$MST##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	MOVEI	1,B10338
	JSP	11,S$$BRK##
	MOVE	1,S10338
	JSP	11,S$$MST##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10092
	HRRZ	1,K10300
	CAIE	1,(13)
	POPJ	16,
	JSP	11,S$$MTS##
;	STR2	=
	MOVEI	14,Q10082
	MOVEM	14,S$$FLP##
	SETZM	@N10302
Q10082:
;	C	LEN(*P)  PCOMPT  SQCHR  @P	:F(NFF1)
	MOVEI	14,L10360
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@PCOMPT
	JSP	11,S$$MKP##
	PUSH	16,1
	MOVE	1,@SQCHR
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D3,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	MOVE	1,^D2(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	STR2	= PARLIT(SQCHR,SQLTPT)	:F(BADDEC)
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	MOVE	1,@SQCHR
	PUSH	16,1
	MOVE	1,@SQLTPT
	FCALV$	^D2,PARLIT
	MOVEM	1,@N10302
;NFF1	FORTLS	= ARRAY('5',FORTLS)
L10360:
	MOVEI	14,Q10083
	MOVEM	14,S$$FLP##
	MOVE	1,S10361
	PUSH	16,1
	MOVE	1,@FORTLS
	FCALV$	^D2,F10063
	MOVEM	1,@FORTLS
Q10083:
;	FORTLS<2>	= ITNAM
	MOVEI	14,Q10084
	MOVEM	14,S$$FLP##
	MOVE	1,I10287
	AREFN$	^D1,FORTLS
	PUSH	16,1
	MOVE	1,@ITNAM
	JSP	11,S$$ASG##
Q10084:
;	FORTLS<3>	= STNO
	MOVEI	14,Q10085
	MOVEM	14,S$$FLP##
	MOVE	1,I10309
	AREFN$	^D1,FORTLS
	PUSH	16,1
	MOVE	^D1,STNO
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10085:
;	FORTLS<4>	= DSB(STR1)
	MOVEI	14,Q10086
	MOVEM	14,S$$FLP##
	MOVE	1,I10310
	AREFN$	^D1,FORTLS
	PUSH	16,1
	MOVE	1,@N10241
	FCALV$	^D1,F10240
	JSP	11,S$$ASG##
Q10086:
;	FORTLS<5>	= ?IDENT(STR2) STR2	:S(NFF2)
	MOVEI	14,Q10087
	MOVEM	14,S$$FLP##
	MOVE	1,I10312
	AREFN$	^D1,FORTLS
	PUSH	16,1
	MOVE	1,@N10302
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,@N10302
	JSP	11,S$$ASG##
	JRST	L10362
Q10087:
;	FORTLS<5>	= DSB(STR2)
	MOVEI	14,Q10088
	MOVEM	14,S$$FLP##
	MOVE	1,I10312
	AREFN$	^D1,FORTLS
	PUSH	16,1
	MOVE	1,@N10302
	FCALV$	^D1,F10240
	JSP	11,S$$ASG##
Q10088:
;NFF2	ENTRLS	= CRS(ENTRLS,ITNAM)	:(DCLEND)
L10362:
	MOVEI	14,L10248
	MOVEM	14,S$$FLP##
	MOVE	1,@ENTRLS
	PUSH	16,1
	MOVE	1,@ITNAM
	FCALV$	^D2,F10316
	MOVEM	1,@ENTRLS
	JRST	L10248
;*	DEDICATED VARIABLE DECLARATIONS
;* INTEGER
;INT	ITSW	= 2
L10261:
	MOVE	^D1,K10287
	MOVEM	1,V10093
;DD1	ITPAT	= IDENPT
L10363:
	MOVEI	14,Q10089
	MOVEM	14,S$$FLP##
	MOVE	1,@IDENPT
	MOVEM	1,@N10304
Q10089:
;DD2	ITSEP	= PCOMPT ! @I
L10364:
	MOVEI	14,Q10093
	MOVEM	14,S$$FLP##
	MOVE	1,@PCOMPT
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$GPB##
	XWD	^D-2,Q10092
	JSP	11,S$$APS##
	XWD	.-.,Q10091
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JRST	Q10090
Q10091:
	JSP	11,S$$APF##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,V10090
Q10090:
	JRST	S$$PTS##
Q10092:
	MOVEM	1,@N10306
Q10093:
;	DFATR	= VTVATR + ITSW * VDDATR + PRGALV
	MOVE	^D1,VTVATR
	MOVE	^D2,V10093
	IMUL	^D2,VDDATR
	ADD	^D1,^D2
	ADD	^D1,PRGALV
	MOVEM	1,V10094
;	ITBRK	= IDDCPT
	MOVEI	14,Q10094
	MOVEM	14,S$$FLP##
	MOVE	1,@IDDCPT
	MOVEM	1,@N10307
Q10094:
;	ITTYP	=
	MOVEI	14,Q10095
	MOVEM	14,S$$FLP##
	SETZM	ITTYP
Q10095:
;	I	=	:(DD4)
	MOVEI	14,L10365
	MOVEM	14,S$$FLP##
	SETZM	V10090
	JRST	L10365
;* REAL
;REL	ITSW	= 3	:(DD1)
L10262:
	MOVE	^D1,K10309
	MOVEM	1,V10093
	JRST	L10363
;* STRING
;STR	ITSW	= 1
L10260:
	MOVE	^D1,K10301
	MOVEM	1,V10093
;	ITPAT	= IDENPT  '('  INTGPT  ')'	:(DD2)
	MOVEI	14,L10364
	MOVEM	14,S$$FLP##
	MOVE	1,@IDENPT
	PUSH	16,1
	MOVE	1,S10337
	PUSH	16,1
	MOVE	1,@INTGPT
	PUSH	16,1
	MOVE	1,S10338
	JSP	14,S$$CNC##
	EXP	^D4
	MOVEM	1,@N10304
	JRST	L10364
;* COMMON CODE FOR DEDICATED VARIABLES
;DD3	?INE(I,P)	:F(DCLEND)
L10250:
	MOVEI	14,L10248
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,V10090
	JUMP	0,P
	ADD	16,S$$STB##
	SETZ	1,
;DD4	STR1	= DFI()		:F(BADDEC)
L10365:
	MOVEI	14,L10286
	MOVEM	14,S$$FLP##
	FCALV$	^D0,F10239
	MOVEM	1,@N10241
;	IDENT(STR1)	:F(DD6)
	MOVEI	14,L10366
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	FCALV$	^D1,F10072
;DD5	?IEQ(ITSW,1)	:F(DD3)
L10367:
	MOVEI	14,L10250
	MOVEM	14,S$$FLP##
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,V10093
	JUMP	0,K10301
	ADD	16,S$$STB##
	SETZ	1,
;	DSIZTB	= ?IDENT(DSIZTB) TABLE(3,3)
	MOVEI	14,Q10096
	MOVEM	14,S$$FLP##
	MOVE	1,@DSIZTB
	FCALV$	^D1,F10072
	SETZ	1,
	MOVE	1,I10309
	PUSH	16,1
	MOVE	1,I10309
	FCALV$	^D2,F10064
	MOVEM	1,@DSIZTB
Q10096:
;	DSIZTB[INAM(ITENT)]	= INTGER	:(DD3)
	MOVEI	14,L10250
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10315
	AREFN$	^D1,DSIZTB
	PUSH	16,1
	MOVE	^D1,INTGER
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10250
;DD6	ATRB(ITENT)	= ?IEQ(VTATRB,0) OR(ITATR,DFATR)	:S(DD5)
L10366:
	MOVEI	14,Q10097
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VTATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10367
Q10097:
;	ATRB(ITENT)	= ?IEQ(VDATRB,0) OR(ITATR,ITSW * VDDATR)
;.	:S(DD5)
	MOVEI	14,Q10098
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,VDATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	^D1,V10093
	IMUL	^D1,VDDATR
	MOVEM	1,Q10001+^D0
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,Q10001+^D0
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
	JRST	L10367
Q10098:
;	RETLAB	= 'DD3'	:(BADDEF)
	MOVEI	14,L10297
	MOVEM	14,S$$FLP##
	MOVE	1,S10250
	MOVEM	1,@N10296
	JRST	L10297
;*	*	*	*	*	*	*	*	*
;*	*	SUBROUTINES	*	*	*	*	*
;*	*	*	*	*	*	*	*	*
;*		DFI() DEFINE ITEM
;*	EXPECTS ITPAT SET TO ITEM RECOGNIZER PATTERN, ITBRK TO THE BREAK
;*	PATTERN THAT ENDS THE ITEM, ITSEP TO THE SEPARATOR PATTERN,
;*	ITTYP, DFATR TO THE DEFINING ATTRIBUTES, AND RETURNS A NON-NULL
;*	VALUE IF THE SYMBOL HAS ALREADY BEEN ENTERED
;*
;DFI	PARLIT(SQCHR,ITBRK)	ITPAT	:F(FRETURN)
L10239:
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@SQCHR
	PUSH	16,1
	MOVE	1,@N10307
	FCALV$	^D2,PARLIT
	PUSH	16,1
	MOVE	1,@N10304
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	JSP	11,S$$MTS##
;	C	LEN(*P)  ITSEP  @P	:F(FRETURN)
	MOVEI	14,S$$FRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@C
	PUSH	16,1
	MOVE	1,@N10306
	JSP	11,S$$MKP##
	PUSH	16,1
	JSP	14,S$$MTX##
	XWD	^D2,0
	MOVE	^D1,P
	JUMPL	1,S$$MIE##
	JSP	11,S$$LEN##
	MOVE	1,^D1(15)
	JSP	11,S$$PTX##
	HRRZ	1,@S$$SJC##
	SUBI	1,(13)
	MOVEM	1,P
	JSP	11,S$$MTS##
;	ITATR	= DFATR
	MOVE	^D1,V10094
	MOVEM	1,ITATR
;	DFI	= ?GETITM() ?INE(ITATR,DFATR) 'OLD'	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$NEP##
	JUMP	0,ITATR
	JUMP	0,V10094
	ADD	16,S$$STB##
	SETZ	1,
	MOVE	1,S10368
	MOVEM	1,@N10239
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;*		DSB(STR1) DEFINE STRING BLOCK
;*	CREATES DEFINITION FOR STRING BLOCK, RETURNS INAM
;*
;DSB	ITTYP	= 3
L10240:
	MOVE	^D1,K10309
	MOVEM	1,ITTYP
;	ITATR	= SKRATR
	MOVE	^D1,SKRATR
	MOVEM	1,ITATR
;	ITNAM	= STR1
	MOVEI	14,Q10099
	MOVEM	14,S$$FLP##
	MOVE	1,@N10241
	MOVEM	1,@ITNAM
Q10099:
;	GETITM()
	MOVEI	14,Q10100
	MOVEM	14,S$$FLP##
	FCALV$	^D0,GETITM
Q10100:
;	ATRB(ITENT)	= ?IEQ(SKATRB,0) OR(ITATR,SKRATR)
	MOVEI	14,Q10101
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALN$	^D1,F10317
	PUSH	16,1
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$EQP##
	JUMP	0,SKATRB
	JUMP	0,K10300
	ADD	16,S$$STB##
	SETZ	1,
	SUB	16,S$$STB##
	MOVEM	16,S$$STS##
	JSA	16,F$$IOR##
	JUMP	0,ITATR
	JUMP	0,SKRATR
	ADD	16,S$$STB##
	MOVE	1,0
	TLO	1,1B18
	TLZ	1,1B19
	JSP	11,S$$ASG##
Q10101:
;	DSB	= INAM(ITENT)	:(RETURN)
	MOVEI	14,S$$SRT##
	MOVEM	14,S$$FLP##
	MOVE	1,@ITENT
	FCALV$	^D1,F10315
	MOVEM	1,@N10240
	JRST	S$$SRT##
;*	*	*	*	*	*	*	*	*
;END
	JRST	S$$SXT##
Q10001:	BLOCK	^D1
K10287:	EXP	^D2
I10287:	EXP	^D2!1B0
K10300:	EXP	^D0
K10301:	EXP	^D1
K10309:	EXP	^D3
I10309:	EXP	^D3!1B0
K10310:	EXP	^D4
I10310:	EXP	^D4!1B0
K10312:	EXP	^D5
I10312:	EXP	^D5!1B0
K10330:	EXP	^D7
K10336:	EXP	^D8
S10048:	POINT	7,A10048,35
A10048:	BYTE	(2)2(16)^D2+1(18)^D7
	ASCII	'INTEGER'
S10049:	POINT	7,A10049,35
A10049:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'REAL'
F10060:	BYTE	(4)4(4)0(5)^D1(5)0(18)P$$DAT##
F10063:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$ARR##
F10064:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$TBL##
F10066:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$DEF##
F10071:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$DIF##
F10072:	BYTE	(4)4(4)0(5)^D2(5)0(18)P$$IDT##
F10081:	BYTE	(4)4(4)0(5)^D3(5)0(18)P$$SBS##
V10090:	EXP	0
V10091:	EXP	0
V10092:	EXP	0
V10093:	EXP	0
V10094:	EXP	0
A10095:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'INIDEC'
A10096:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'INIDEC()'
A10097:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'DECLPH'
A10098:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'DECLPH()'
A10239:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'DFI'
A10240:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'DSB'
A10241:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'STR1'
A10242:	BYTE	(2)2(16)^D2+1(18)^D7
	ASCII	'NO.STNO'
A10243:	BYTE	(2)2(16)^D1+1(18)^D5
	ASCII	'TIMER'
A10244:	BYTE	(2)2(16)^D2+1(18)^D9
	ASCII	'HASHSIZE='
A10245:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'LD4'
A10246:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'VD4'
A10247:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'FD4'
A10248:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'DCLEND'
A10249:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'XFF1'
A10250:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'DD3'
A10251:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'OPT'
A10252:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'SNO'
A10253:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'SUB'
A10254:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'PRV'
A10255:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'UPV'
A10256:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'PRL'
A10257:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'UPL'
A10258:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'PRF'
A10259:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'UPF'
A10260:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'STR'
A10261:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'INT'
A10262:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'REL'
A10263:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'REN'
A10264:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'GLV'
A10265:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'GLL'
A10266:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'GLF'
A10267:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'EXV'
A10268:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'ENV'
A10269:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'EXL'
A10270:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'ENL'
A10271:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'EXF'
A10272:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'ENF'
A10273:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'XFF'
A10274:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'NFF'
S10275:	POINT	7,A10275,35
A10275:	BYTE	(2)2(16)^D1+1(18)^D5
	ASCII	'DFI()'
S10276:	POINT	7,A10276,35
A10276:	BYTE	(2)2(16)^D2+1(18)^D9
	ASCII	'DSB(STR1)'
S10277:	POINT	7,A10277,35
A10277:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'SYM(INAM,ATRB)'
S10278:	POINT	7,A10278,35
A10278:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'CRS(NEXT,CRSI)'
S10281:	POINT	7,A10281,35
A10281:	BYTE	(2)2(16)^D2+1(18)^D8
	ASCII	'DECLARE('
B10282:	EXP	^D32256
	XWD	^D0,^D32512
	XWD	^D0,^D32520
	XWD	^D0,^D16128
A10282:	BYTE	(2)2(16)^D6+1(18)^D27
	ASCII	'ABCDEFGHIJKLMNOPQRSTUVWXYZ.'
N10283:	BYTE	(4)4(14)0(18)Q10102+^D6
S10284:	POINT	7,A10284,35
A10284:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	','
S10285:	POINT	7,A10285,35
A10285:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'ALL'
S10288:	POINT	7,A10288,35
A10288:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	'PR'
S10289:	POINT	7,A10289,35
A10289:	BYTE	(2)2(16)^D4+1(18)^D19
	ASCII	'UNKNOWN DECLARATION'
S10290:	POINT	7,A10290,35
A10290:	BYTE	(2)2(16)^D3+1(18)^D15
	ASCII	'BAD DECLARATION'
S10292:	POINT	7,A10292,35
A10292:	BYTE	(2)2(16)^D3+1(18)^D14
	ASCII	'UNKNOWN OPTION'
S10294:	POINT	7,A10294,35
A10294:	BYTE	(2)2(16)^D5+1(18)^D23
	ASCII	'MULTIPLE EXTERNAL FOR: '
S10295:	POINT	7,A10295,35
A10295:	BYTE	(2)2(16)^D2+1(18)^D9
	ASCII	', IGNORED'
N10296:	BYTE	(4)4(14)0(18)Q10102+^D7
S10298:	POINT	7,A10298,35
A10298:	BYTE	(2)2(16)^D4+1(18)^D17
	ASCII	'REDEFINITION OF: '
N10302:	BYTE	(4)4(14)0(18)Q10102+^D8
N10304:	BYTE	(4)4(14)0(18)Q10102+^D9
N10306:	BYTE	(4)4(14)0(18)Q10102+^D10
N10307:	BYTE	(4)4(14)0(18)Q10102+^D11
A10315:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'INAM'
A10316:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'CRS'
A10317:	BYTE	(2)2(16)^D1+1(18)^D4
	ASCII	'ATRB'
B10337:	EXP	^D4
	XWD	^D0,^D0
	XWD	^D0,^D0
	XWD	^D0,^D0
S10337:	POINT	7,A10337,35
A10337:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'('
B10338:	EXP	^D0
	XWD	^D0,^D4
	XWD	^D0,^D0
	XWD	^D0,^D0
S10338:	POINT	7,A10338,35
A10338:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	')'
N10344:	BYTE	(4)4(14)0(18)Q10102+^D12
S10345:	POINT	7,A10345,35
A10345:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'4'
B10348:	EXP	^D8
	XWD	^D0,^D4
	XWD	^D0,^D0
	XWD	^D0,^D0
A10348:	BYTE	(2)2(16)^D1+1(18)^D2
	ASCII	',)'
S10352:	POINT	7,A10352,35
A10352:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'='
B10353:	EXP	^D2048
	XWD	^D0,^D3072
	XWD	^D0,^D3072
	XWD	^D0,^D1024
A10353:	BYTE	(2)2(16)^D2+1(18)^D6
	ASCII	'IJKLMN'
S10361:	POINT	7,A10361,35
A10361:	BYTE	(2)2(16)^D1+1(18)^D1
	ASCII	'5'
S10368:	POINT	7,A10368,35
A10368:	BYTE	(2)2(16)^D1+1(18)^D3
	ASCII	'OLD'
Q10102:	BYTE	(2)2(16)^D12+1(18)0
	REPEAT	^D12,<0>
Q10103:	BYTE	(2)2(16)^D49*4+1(18)-^D49
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10317,35
F10317:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10316,35
F10316:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10315,35
F10315:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10274,35
	JRST	L10274
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10273,35
	JRST	L10273
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10272,35
	JRST	L10272
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10271,35
	JRST	L10271
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10270,35
	JRST	L10270
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10269,35
	JRST	L10269
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10268,35
	JRST	L10268
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10267,35
	JRST	L10267
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10266,35
	JRST	L10266
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10265,35
	JRST	L10265
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10264,35
	JRST	L10264
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10263,35
	JRST	L10263
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10262,35
	JRST	L10262
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10261,35
	JRST	L10261
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10260,35
	JRST	L10260
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10259,35
	JRST	L10259
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10258,35
	JRST	L10258
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10257,35
	JRST	L10257
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10256,35
	JRST	L10256
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10255,35
	JRST	L10255
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10254,35
	JRST	L10254
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10253,35
	JRST	L10253
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10252,35
	JRST	L10252
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10251,35
	JRST	L10251
	EXP	0
	BYTE	(5)3(31)0
S10250:	POINT	7,A10250,35
	JRST	L10250
	EXP	0
	BYTE	(5)3(31)0
S10249:	POINT	7,A10249,35
	JRST	L10249
	EXP	0
	BYTE	(5)3(31)0
S10248:	POINT	7,A10248,35
	JRST	L10248
	EXP	0
	BYTE	(5)3(31)0
S10247:	POINT	7,A10247,35
	JRST	L10247
	EXP	0
	BYTE	(5)3(31)0
S10246:	POINT	7,A10246,35
	JRST	L10246
	EXP	0
	BYTE	(5)3(31)0
S10245:	POINT	7,A10245,35
	JRST	L10245
	EXP	0
	BYTE	(5)3(31)0
S10244:	POINT	7,A10244,35
	JRST	L10244
	EXP	0
	BYTE	(5)3(31)0
S10243:	POINT	7,A10243,35
	JRST	L10243
	EXP	0
	BYTE	(5)3(31)0
S10242:	POINT	7,A10242,35
	JRST	L10242
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10241,35
N10241:	BYTE	(4)4(14)0(18)Q10102+^D5
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10240,35
F10240:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10240,35
	JRST	L10240
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10240,35
N10240:	BYTE	(4)4(14)0(18)Q10102+^D4
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10239,35
F10239:	BYTE	(4)4(4)0(5)20(5)0(18)S$$UDF##
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10239,35
	JRST	L10239
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10239,35
N10239:	BYTE	(4)4(14)0(18)Q10102+^D3
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10097,35
DECLPH:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10097
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10097,35
	JRST	L10097
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10097,35
N10097:	BYTE	(4)4(14)0(18)Q10102+^D2
	EXP	0
	BYTE	(5)5(31)0
	POINT	7,A10095,35
INIDEC:	BYTE	(4)4(4)0(5)^D0(5)0(18)E10095
	EXP	0
	BYTE	(5)3(31)0
	POINT	7,A10095,35
	JRST	L10095
	EXP	0
	BYTE	(5)1(31)0
	POINT	7,A10095,35
N10095:	BYTE	(4)4(14)0(18)Q10102+^D1
	POINT	7,A10097,35
Q10000:	XWD	0,Q10102
	XWD	Q10103,^D0
	EXP	Q10103
	XWD	^D7,Q10000
E10095:	JSP	13,S$$EFI##
	POINT	7,A10096,35
	EXP	0
	XWD	^D8,Q10000
E10097:	JSP	13,S$$EFI##
	POINT	7,A10098,35
	EXP	0
	END