	.TITLE	SYNTAX
	.LIBRARY	"CLD"
	.ENTRY	SYNTAX,^M<R6,R7,R8,R9,R10,R11>
	$ENTDEF
;
; GET THE SYNTAX LIST NAME AND WRITE THE DEFINE SYNTAX RECORD OR THE
;	SYNTAX= RECORD
;
;	CALL SYNTAX(ENTITY,FLAG)
;	       WHERE ENTITY = THE ADDRES OF THE ENTITY DESCRIPTOR
;		     FLAG   = 0, WRITE SYNTAX= RECORD
;			    = 1, WRITE DEFINE SYNTAX RECORD
;
	MOVL	4(AP),R7
	MOVZWL	ENT_W_SYNTAX(R7),R9
	BNEQ	10$
	BRW	FINI
;
; USE THE SYNTAX TABLE TO FIND THE NAME TO USE FOR THE SYNTAX
;	RECUR BUILDS THIS TABLE TO PREVENT DUPLICATE SYNTAX NAMES 
;	AND TO PREVENT MULTIPLE DEFINITIONS OF THE SAME LIST
;	   SYNTAX TABLE FORMAT:
;		LONGWORD 1	SYNTAX ADDRESS
;		LONGWORD 2	ADDRESS OF COUNTED ASCII QUAL/PARM NAME STRING
;		LONGWORD 3	KLUGE CHARACTER ADDED TO THE END OF THE
;				KEYWORD NAME STRING FOR CASES OF THE SAME
;				NAME QUALIFIER/PARAM HAVING DIFFERENT KEYWORD
;				LISTS
;
10$:	CVTWL	R9,R9
	ADDL	R7,R9			;R9=ADDRESS OF CHANGE LIST
	MOVAL	TABSYN,R10		;R10=CURRENT SYNTAX TABLE POSITION
	MOVL	SYNNUM,R11		;R11=NUMBER OF SYNTAX'S
;
20$:	CMPL	R9,(R10)+		;COMPARE CHANGE LIST ADDRESSES
	BEQL	30$			;BRANCH IF ENTRY FOUND
	TSTL	(R10)+
	TSTL	(R10)+
	SOBGTR	R11,20$			;LOOP THROUGH TABLE
;
30$:	MOVL	4(R10),SAVE
	MOVL	(R10),R10
;
	TSTL	8(AP)
	BEQL	40$
	MOVAL	DEFNAM,R11
	MOVAL	DEFSYN,R8
	BRB	50$
;
40$:	MOVAL	SYNAM,R11
	MOVAL	SYNREC,R8
;
50$:	MOVC3	VERBLEN,VERB,(R11)
	ADDL	VERBLEN,R11
	MOVB	UNDER,(R11)+
	MOVZBL	(R10)+,R6
	MOVC3	R6,(R10),(R11)
	ADDL	R6,R11
	CMPL	#^X30,SAVE
	BEQL	60$
	MOVB	SAVE,(R11)+
60$:	SUBL3	R8,R11,R6
	$RAB_STORE	RAB=OUTRAB,RBF=(R8),RSZ=R6
	$PUT	RAB=OUTRAB
;
FINI:	RET
;
SYNREC:	.ASCII	/                 syntax=/
SYNAM:	.BLKB	80.
DEFSYN:	.ASCII	/define syntax /
DEFNAM:	.BLKB	80.
UNDER:	.ASCII	/_/
SAVE:	.LONG	0
P1::	.BYTE	2
	.ASCII	/P1/
P2:	.BYTE	2
	.ASCII	/P2/
	.END
