MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      36  PROCESS QUALIFIER SPCIFICATION

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	MCRPRCQUA - PROCESS QUALIFIER SPECIFICATION

                                     0000     2 	.IDENT	/01/

                                     0000     3  

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1977,1978

                                     0000     6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000     7 ;

                                     0000     8 ; THIS SOFTWARE IS FURNISHED UNDER  A LICENSE FOR USE ONLY  ON  A

                                     0000     9 ; SINGLE COMPUTER SYSTEM AND MAY BE  COPIED ONLY WITH  THE INCLU-

                                     0000    10 ; SION OF  THE  ABOVE  COPYRIGHT NOTICE.  THIS SOFTWARE,  OR  ANY

                                     0000    11 ; OTHER COPIES THEREOF, MAY NOT BE  PROVIDED  OR  OTHERWISE  MADE

                                     0000    12 ; AVAILABLE TO ANY OTHER PERSON EXCEPT  FOR  USE  ON  SUCH SYSTEM

                                     0000    13 ; AND TO  ONE WHO AGREES  TO  THESE LICENSE  TERMS.  TITLE TO AND

                                     0000    14 ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.

                                     0000    15 ;

                                     0000    16 ; THE INFORMATION IN THIS SOFTWARE  IS  SUBJECT TO CHANGE WITHOUT

                                     0000    17 ; NOTICE AND SHOULD NOT BE CONSTRUED  AS  A COMMITMENT BY DIGITAL

                                     0000    18 ; EQUIPMENT CORPORATION.

                                     0000    19 ;

                                     0000    20 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS

                                     0000    21 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000    22 ;

                                     0000    23 ; W. H. BROWN 3-JAN-1978

                                     0000    24 ;

                                     0000    25 ; PROCESS QUALIFIER SPECIFICATION

                                     0000    26 ;

                                     0000    27 ; MACRO LIBRARY CALLS

                                     0000    28 ;

                                     0000    29  

                                     0000    30 	DEFCMDBLK			; DEFINE COMMAND BLOCK OFFSETS

                                     0000    31 	DEFCMDWRK			; DEFINE WORK AREA OFFSETS

                                     0000    32 	DEFERRCOD			; DEFINE ERROR/STATUS VALUES

                                     0000    33 	DEFPTRDSC			; DEFINE RESULT PARSE DESCRIPTOR FORMAT

                                     0000    34 	DEFQUABLK			; DEFINE QUALIFIER BLOCK OFFSETS

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   2

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



                                     0000    36 	.SBTTL	PROCESS QUALIFIER SPCIFICATION

                                     0000    37 ;+

                                     0000    38 ; MCR$PROCQUAL - PROCESS QUALIFIER SPECIFICATION

                                     0000    39 ;

                                     0000    40 ; THIS ROUTINE IS CALLED TO PARSE A QUALIFIER SPECIFICATION AND EMIT A

                                     0000    41 ; DESCRIPTOR TO THE RESULT PARSE TABLE.

                                     0000    42 ;

                                     0000    43 ; INPUTS:

                                     0000    44 ;

                                     0000    45 ;	R9 = ADDRESS OF NEXT BYTE IN COMMAND BUFFER.

                                     0000    46 ;	R10 = RESULT PARSE DESCRIPTOR TABLE POINTER.

                                     0000    47 ;	R11 = BASE ADDRESS OF PROCESS WORK AREA.

                                     0000    48 ;	FP = BASE ADDRESS OF COMMAND WORK AREA.

                                     0000    49 ;

                                     0000    50 ; OUTPUTS:

                                     0000    51 ;

                                     0000    52 ;	R0 LOW BIT CLEAR INDICATES FAILURE TO PARSE QUALIFIER SPECIFICATION.

                                     0000    53 ;

                                     0000    54 ;		R0 = MCR$_ABKEYW - AMBIGUOUS KEYWORD IN QUALIFIER.

                                     0000    55 ;		R0 = MCR$_IMCHNG - MULTIPLE ATTEMPT TO CHANGE IMAGE NAME.

                                     0000    56 ;		R0 = MCR$_IVKEYW - INVALID KEYWORD IN QUALIFIER.

                                     0000    57 ;		R0 = MCR$_IVQLOC - INVALID QUALIFIER LOCATION.

                                     0000    58 ;		R0 = MCR$_IVVALU - INVALID QUALIFIER VALUE SYNTAX.

                                     0000    59 ;		R0 = MCR$_NOKEYW - NO KEYWORD IN QUALIFIER.

                                     0000    60 ;		R0 = MCR$_NOQUAL - NO QUALIFIERS ALLOWED ON COMMAND.

                                     0000    61 ;		R0 = MCR$_NOVALU - NO VALUE ALLOWED ON QUALIFIER.

                                     0000    62 ;

                                     0000    63 ;	R0 LOW BIT SET INDICATES SUCCESSFUL PARSE WITH THE QUALIFIER

                                     0000    64 ;		DESCRIPTOR EMITTED AND THE QUALIFIER SPECIFICATION COPIED

                                     0000    65 ;		TO THE COMMAND BUFFER.

                                     0000    66 ;

                                     0000    67 ;		R0 = MCR$_NORMAL - NORMAL COMPLETION.

                                     0000    68 ;-

                                     0000    69  

                                 00000000    70 	.PSECT	MCR$ZCODE,BYTE,RD,NOWRT

                                     0000    71 MCR$PROCQUAL::				; PROCESS QUALIFIER SPECIFICATION

                     01C0 8F     BB  0000    72 	PUSHR	#^M<R6,R7,R8>		; SAVE REGISTERS

         FA AD            10     A8  0004    73 	BISW	#WRK_M_QUAL,WRK_W_FLAGS(FP) ; SET QUALIFIER PROCESSING IN PROGRESS

                       01 A9     9F  0008    74 	PUSHAB	1(R9)			; SAVE STARTING ADDRESS OF QUALIFIER

                          7E     D4  000B    75 	CLRL	-(SP)			; CLEAR KEYWORD NEGATION FLAG

                                     000D    76 5$:	MOVTOKN				; MOVE TERMINATOR AND GET TOKEN

                          09     12  0010    77 	BNEQ	10$			; BR IF TOKEN FOUND

            2D            50     91  0012    78 	CMPB	R0,#^A/-/		; QUALIFIER START WITH NEGATE SIGN

                          70     12  0015    79 	BNEQ	90$			; BR IF NO

                          6E     D6  0017    80 	INCL	(SP)			; SET THE NEGATED FLAG

                          F2     11  0019    81 	BRB	5$			; TRY AGAIN

            5C            51     D0  001B    82 10$:	MOVL	R1,AP			; SAVE ORIGINAL TOKEN SIZE

            51            04     D1  001E    83 	CMPL	#4,R1			; KEYWORD LESS THAN 5 CHARACTERS?

                          03     18  0021    84 	BGEQ	20$			; IF GEQ YES

            51            04     D0  0023    85 	MOVL	#4,R1			; SET TO ONLY COMPARE 4 CHARACTERS

                          56     D4  0026    86 20$:	CLRL	R6			; CLEAR INITIAL OFFSET INTO QUALIST

                          7E     D4  0028    87 	CLRL	-(SP)			; SET NULL AS QUALIFIER FOUND

                                     002A    88 	STATUS	NOQUAL			; ASSUME NO QUALIFIERS ALLOWED ON COMMAND

            58         E8 AD     D0  002D    89 	MOVL	WRK_L_QUABLK(FP),R8	; GET ADDRESS OF QUALIFIER DESCRIPTORS

                          50     13  0031    90 	BEQL	85$			; IF EQL NONE

            58            6846   9E  0033    91 30$:	MOVAB	QUA_B_OFFSET(R8)[R6],R8	; GET ADDRESS OF NEXT QUALIFIER DESCRIPTOR

            50         02 A8     9A  0037    92 	MOVZBL	QUA_B_INDEX(R8),R0	; GET QUALIFIER TABLE INDEX

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   3

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



         04 A8            01     E1  003B    93 	BBC	#QUA_V_LOCALKEY,QUA_W_FLAGS(R8),40$ ; BR IF TEXT IN COMMON LIST

                          05         003F       

            50            58     C0  0040    94 	ADDL	R8,R0			; FIND ADDRESS OF QUALIFER KEY TEXT

                          06     11  0043    95 	BRB	50$			; 

            50       0000'CF40   DE  0045    96 40$:	MOVAL	W^MCR$AB_QUALTBL[R0],R0	; GET ADDRESS OF QUALIFIER KEYWORD

            53            51     7D  004B    97 50$:	MOVQ	R1,R3			; COPY QUALIFIER STRING DESCRIPTOR

            60            20     91  004E    98 60$:	CMPB	#^A/ /,(R0)		; END OF QUALIFER TEXT?

                          08     13  0051    99 	BEQL	65$			; BR IF YES

            84            80     91  0053   100 	CMPB	(R0)+,(R4)+		; IS THIS THE QUALIFIER WERE LOOKIN FOR?

                          0D     12  0056   101 	BNEQ	70$			; BR IF DEFINITELY NOT!

            F3            53     F5  0058   102 	SOBGTR	R3,60$			; BR IF MORE TO CHECK

                                     005B   103 65$:	STATUS	ABKEYW			; ASSUME AMBIGUOUS

                          6E     D5  005E   104 	TSTL	(SP)			; FIND MATCH BEFORE?

                          21     12  0060   105 	BNEQ	85$			; BR IF AMBIGUOUS

            6E            58     D0  0062   106 	MOVL	R8,(SP)			; SAVE MATCHED QUALIFIER ADDRESS

            56            68     9A  0065   107 70$:	MOVZBL	QUA_B_OFFSET(R8),R6	; OFFSET TO NEXT QUALIFIER DESCRIPTOR

                          C9     12  0068   108 	BNEQ	30$			; IF NEQ TRY AGAIN

                                     006A   109  

                                     006A   110 ;

                                     006A   111 ; ALL QAULIFERS HAVE BEEN CHECK WITHOUT AMBIGUITY

                                     006A   112 ;	NOW SEE IF ANY MATCHED

                                     006A   113 ;

            58            8E     D0  006A   114 	MOVL	(SP)+,R8		; RESTORE MATCHED QUALIFER ADDRESS

                          1E     12  006D   115 	BNEQ	110$			; BR IF ONE WAS FOUND

                                     006F   116  

                                     006F   117 ;

                                     006F   118 ; QUALIFIER DESCRIPTOR TABLE EXHAUSTED - TRY NEGATION

                                     006F   119 ;

                                     006F   120  

                          6E     D6  006F   121 	INCL	(SP)			; COMPLEMENT NEGATION FLAG

            5C            02     C3  0071   122 	SUBL3	#2,AP,R1		; REDUCE CHARACTER COUNT

                          51         0074       

                          07     15  0075   123 	BLEQ	80$			; IF LEQ NO MATCH POSSIBLE

            82       4F4E 8F     B1  0077   124 	CMPW	#^A/NO/,(R2)+		; KEYWORD START WITH 'NO'?

                          9D     13  007C   125 	BEQL	10$			; IF EQL YES

                                     007E   126  

                                     007E   127 ;

                                     007E   128 ; INVALID KEYWORD IN QUALIFIER

                                     007E   129 ;

                                     007E   130  

                                     007E   131 80$:	STATUS	IVKEYW			; SET INVALID KEYWORD STATUS

                          07     11  0081   132 	BRB	100$			; 

                          8E     D4  0083   133 85$:	CLRL	(SP)+			; REMOVE PARAMETER FROM THE STACK

                          03     11  0085   134 	BRB	100$			; TAKE ERROR EXIT

                                     0087   135  

                                     0087   136 ;

                                     0087   137 ; NO KEYWORD IN QUALIFIER

                                     0087   138 ;

                                     0087   139  

                                     0087   140 90$:	STATUS	NOKEYW			; SET NO KEYWORD STATUS

                          015A   31  008A   141 100$:	BRW	390$			; 

                                     008D   142  

                                     008D   143 ;

                                     008D   144 ; VALID KEYWORD MATCH FOUND - CHECK VALIDITY

                                     008D   145 ;

                                     008D   146  

                                     008D   147 110$:	STATUS	IVQLOC			; ASSUME INVALID QUALIFIER LOCATION

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   4

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



         FA AD            07     E0  0090   148 	BBS	#WRK_V_VERB,WRK_W_FLAGS(FP),120$ ; IF SET, PROCESSING VERB

                          05         0094       

         04 A8            04     E0  0095   149 	BBS	#QUA_V_PARM,QUA_W_FLAGS(R8),130$ ; IF SET, ALLOWED ON PARAMETERS

                          05         0099       

         04 A8            03     E1  009A   150 120$:	BBC	#QUA_V_VERB,QUA_W_FLAGS(R8),100$ ; IF CLR, NOT ALLOWED ON VERBS

                          EB         009E       

         04 A8            0A     E1  009F   151 130$:	BBC	#QUA_V_IMAGE,QUA_W_FLAGS(R8),145$ ; IF CLR, NO IMAGE SPECIFIED

                          18         00A3       

            56         06 A8     9A  00A4   152 	MOVZBL	QUA_B_IMAGE(R8),R6	; GET IMAGE NAME INDEX NUMBER

                          12     13  00A8   153 	BEQL	145$			; IF EQL NO CHANGE

                                     00AA   154 	STATUS	IMCHNG			; ASSUME SECOND IMAGE CHANGE

         EC AD            56     D1  00AD   155 	CMPL	R6,WRK_L_IMAGE(FP)	; IMAGE NAME INDEX NUMBER MATCH?

                          05     13  00B1   156 	BEQL	140$			; IF EQL YES

         FA AD            02     E2  00B3   157 	BBSS	#WRK_V_IMCHNG,WRK_W_FLAGS(FP),100$ ; IF SET, PREVIOUS IMAGE CHANGE

                          D2         00B7       

         EC AD            56     D0  00B8   158 140$:	MOVL	R6,WRK_L_IMAGE(FP)	; SET INDEX NUMBER OF NEW IMAGE NAME

         04 A8            00     E1  00BC   159 145$:	BBC	#QUA_V_CHNGLIST,QUA_W_FLAGS(R8),150$ ; IF CLR, NO CHANGE LIST

                          21         00C0       

                          00     EF  00C1   160 	EXTZV	#QUA_V_MINPARM,#QUA_S_MINPARM,- ; GET NEW PARAMETER LIMITS

         09 A8            04         00C3   161 		QUA_B_PARMCNT(R8),WRK_L_MINPARM(FP) ; INTO WORK AREA

                       D0 AD         00C6       

                          04     EF  00C8   162 	EXTZV	#QUA_V_MAXPARM,#QUA_S_MAXPARM,- ; GET NEW PARAMETER LIMITS

         09 A8            04         00CA   163 		QUA_B_PARMCNT(R8),WRK_L_MAXPARM(FP) ; INTO WORK AREA

                       CC AD         00CD       

            50         07 A8     32  00CF   164 	CVTWL	QUA_W_QUALIST(R8),R0	; GET OFFSET TO NEW QUALIFIER LIST

                          0D     13  00D3   165 	BEQL	150$			; IF EQL NONE

            50            01     C1  00D5   166 	ADDL3	#1,R0,WRK_L_QUABLK(FP)	; ASSUME QUALIFIERS NO LONGER VALID

                       E8 AD         00D8       

                          06     13  00DA   167 	BEQL	150$			; IF EQL, THEN NO MORE QUALIFIERS

         E8 AD         07 A840   9E  00DC   168 	MOVAB	QUA_W_QUALIST(R8)[R0],WRK_L_QUABLK(FP) ; SET ADDRESS OF QUALIFIER LIST

                                     00E2   169  

                                     00E2   170 ;

                                     00E2   171 ; KEYWORD VALID - CHECK NEGATION AND GENERATE QUALIFIER DESCRIPTOR

                                     00E2   172 ;

                                     00E2   173  

            08            6E     E9  00E2   174 150$:	BLBC	(SP),160$		; IF LBC QUALIFIER NOT NEGATED

                                     00E5   175 	STATUS	NOTNEG			; ASSUME QUALIFIER NOT NEGATABLE

         04 A8            06     E1  00E8   176 	BBC	#QUA_V_NEG,QUA_W_FLAGS(R8),200$ ; IF CLR, NOT NEGATABLE

                          4B         00EC       

            55            00     9A  00ED   177 160$:	MOVZBL	#PTR_K_COMDQUAL,R5	; ASSUME COMMAND QUALIFIER

         FA AD            07     E0  00F0   178 	BBS	#WRK_V_VERB,WRK_W_FLAGS(FP),170$ ; IF SET, PROCESSING VERB

                          08         00F4       

         04 A8            04     E1  00F5   179 	BBC	#QUA_V_PARM,QUA_W_FLAGS(R8),170$ ; IF CLR, COMMAND QUALIFIER

                          03         00F9       

            55            01     9A  00FA   180 	MOVZBL	#PTR_K_PARMQUAL,R5	; SET TYPE TO PARAMETER QUALIFIER

            56            6E     D0  00FD   181 170$:	MOVL	(SP),R6			; COPY NEGATION FLAG

            57         01 A8     9A  0100   182 	MOVZBL	QUA_B_CODE(R8),R7	; GET QUALIFIER CODE VALUE

            54         04 A8     3E  0104   183 	MOVAW	QUA_W_FLAGS(R8),R4	; SAVE ADDRESS OF QUALIFIER FLAGS

            58         04 AE     D0  0108   184 	MOVL	4(SP),R8		; RETRIEVE STARTING ADDRESS OF QUALIFIER

                                     010C   185 	GENDESCR			; GENERATE RESULT PARSE DESCRIPTOR

                                     010F   186  

                                     010F   187 ;

                                     010F   188 ; CHECK FOR VALUE

                                     010F   189 ;

                                     010F   190  

         C9 AD            00     E1  010F   191 	BBC	#CMD_V_OPTION,WRK_B_CMDFLG(FP),171$ ; BR IF QUAL NOT AN OPTION

                          04         0113       

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   5

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



            64            05     E1  0114   192 	BBC	#QUA_V_VAL,(R4),175$	; BR IF NO VALUES GO ON THIS OPTION

                          1A         0117       

                                     0118   193 171$:	SETCHAR				; PEEK AT NEXT CHARACTER IN INPUT BUFFER

         C9 AD            06     E0  011B   194 	BBS	#CMD_V_NOEQL,WRK_B_CMDFLG(FP),172$ ; BR IF EQUAL NO VALID

                          05         011F       

            50            3D     91  0120   195 	CMPB	#^A/=/,R0		; VALUE SPECIFIED?

                          10     13  0123   196 	BEQL	180$			; IF EQL YES

            50            3A     91  0125   197 172$:	CMPB	#^A/:/,R0		; VALUE SPECIFIED?

                          0B     13  0128   198 	BEQL	180$			; IF EQL YES

                                     012A   199 	STATUS	VALREQ			; ASSUME VALUE REQUIRED

            64            0C     E0  012E   200 	BBS	#QUA_V_VALREQ,(R4),210$ ; IF SET, VALUE REQUIRED

                          14         0131       

                          00AF   31  0132   201 175$:	BRW	380$			; 

                                     0135   202 180$:	STATUS	NOVALU			; ASSUME NO VALUE ALLOWED

            0B            6E     E8  0138   203 200$:	BLBS	(SP),210$		; IF LBS QUALIFIER NEGATED

            64            05     E1  013B   204 	BBC	#QUA_V_VAL,(R4),210$	; IF CLR, VALUE NOT ALLOWED

                          07         013E       

                                     013F   205 ;

                                     013F   206 ; PROCESS QUALIFIER VALUE

                                     013F   207 ;

                                     013F   208  

            64            02     E1  013F   209 	BBC	#QUA_V_FILE,(R4),220$	; BR IF VALUE IS NOT A FILE SPEC

                          06         0142       

                                     0143   210 	PROCFILE			; PARSE THE FILE SPEC

                          009E   31  0146   211 210$:	BRW	390$			; EXIT QUALIFIER PARSE

            55            02     CE  0149   212 220$:	MNEGL	#2,R5			; SET VALUE COUNT FOR NORMAL CASE

            56            69     9E  014C   213 240$:	MOVAB	(R9),R6			; SET START OF TOKEN FOR ERROR

                                     014F   214 	MOVCHAR				; COPY TERMINATOR INTO COMMAND BUFFER

                                     0152   215 	SETNBLK				; SKIP LEADING BLANKS

            52            69     9E  0155   216 	MOVAB	(R9),R2			; SET START OF VALUE TOKEN

                                     0158   217 250$:	MOVCHAR				; COPY BYTE OF DATA INTO COMMADN BUFFER

         FA AD            05     E0  015B   218 	BBS	#WRK_V_QUOTE,WRK_W_FLAGS(FP),250$ ; LOOP AROUND ON QUTED STRINGS

                          F8         015F       

            64            0E     E1  0160   219 	BBC	#QUA_V_KEYVAL,(R4),260$	; BR IF QUALIFIER DON'T TAKE KEY VALUES

                          05         0163       

            50            3A     91  0164   220 	CMPB	#^A/:/,R0		; CHECK IF END OF KEY AND START OF VALUE

                          0A     13  0167   221 	BEQL	270$			; BR IF YES

            06'           50     3A  0169   222 260$:	LOCC	R0,S^#<370$-360$>,B^360$; CHECK FOR QUALIFIER TERMINATOR

                       DE'AF         016C       

                          E8     13  016E   223 	BEQL	250$			; BR IF NO TERMINATOR FOUND

            50            61     9A  0170   224 	MOVZBL	(R1),R0			; RESTORE TERMINATOR IN REGISTER

         FC BD            79     90  0173   225 270$:	MOVB	-(R9),@WRK_L_CHARPTR(FP); REPLACE TERMINATOR IN INPUT BUFFER

                       FC AD     D7  0177   226 	DECL	WRK_L_CHARPTR(FP)	; BACK UP POINTER TO GET IT AGAIN

            59            52     C3  017A   227 	SUBL3	R2,R9,R1		; CALCULATE LENGTH OF VALUE TOKEN

                          51         017D       

                          0F     12  017E   228 	BNEQ	300$			; BR IF VALUE PRESENT

            50            28     91  0180   229 	CMPB	#^A/(/,R0		; START OF VALUE LIST

                          54     12  0183   230 	BNEQ	350$			; BR IF NO

                          07     F0  0185   231 	INSV	#PTR_K_LPAREN,#PTR_V_TERM,- ; CHANGE QUALIFIER TERMINATOR CLASS

            04            18         0187   232 		#PTR_S_TERM,-4(R10)	; TO VALUE LIST FOLLOWING

                       FC AA         0189       

                          55     D6  018B   233 	INCL	R5			; ACCOUNT FOR MULTI-VALUE FLAG

                          BD     11  018D   234 	BRB	240$			; START OVER

                          31     BB  018F   235 300$:	PUSHR	#^M<R0,R4,R5>		;SAVE TERMINATOR,FLAGS AND VALUE COUNTER

                                     0191   236 	COMPSTRING			;COMPRESS QUOTED STRING

            52            51     C1  0194   237 	ADDL3	R1,R2,R9		;CALCULATE ADDRESS OF TERMINATOR

                          59         0197       

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   6

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



            55            02     9A  0198   238 	MOVZBL	#PTR_K_QUALVALU,R5	;GET ITEM TYPE TO QUALIFIER VALUE

                          56     D4  019B   239 	CLRL	R6			;CLEAR FLAGS

            57            51     7D  019D   240 	MOVQ	R1,R7			;SET LENGTH OF QUALIFIER VALUE

            29            6E     91  01A0   241 	CMPB	(SP),#^A/)/		;IS THIS END OF VALUE LIST

                          06     12  01A3   242 	BNEQ	305$			;BR IF NO

                                     01A5   243 	MOVCHAR				;COPY PARAN TO BUFFER

                                     01A8   244 	TESTBLANK			;FIND REAL QUALIFIER DELIMITER

                                     01AB   245 305$:	GENDESCR			;GENERATE RESULT PARSE DESCRIPTOR

                          31     BA  01AE   246 	POPR	#^M<R0,R4,R5>		;RESTORE TERMINATOR,FLAGS AND VALUE COUNTER

            50            3A     91  01B0   247 	CMPB	#^A/:/,R0		;IS THIS KEY:VAL CONSTRUCT?

                          97     13  01B3   248 	BEQL	240$			;BR IF YES-GET THE VALUE PART

            50            3D     91  01B5   249 	CMPB	#^A/=/,R0		;CHECK FOR ALTERNATE SYNTAX

                          92     13  01B8   250 	BEQL	240$			;BR IF YES

                          55     D6  01BA   251 	INCL	R5			;COUNT UP THE VALUES SEEN

                          16     19  01BC   252 	BLSS	310$			;BR IF SINGLE VALUE QUALIFIER

            50            2C     91  01BE   253 	CMPB	#^A/,/,R0		;TERMINATER SAY MORE VALUES COMMING?

                          89     13  01C1   254 	BEQL	240$			;IF YES-GO PROCESS THE VALUE

            50            29     91  01C3   255 	CMPB	#^A/)/,R0		;END OF VALUE LIST?

                          11     12  01C6   256 	BNEQ	350$			;IF NO-ITS AN ERROR

                          55     D5  01C8   257 	TSTL	R5			;REALLY GET MORE THAN ONE VALUE

                          08     13  01CA   258 	BEQL	310$			;BR IF NO-PARENS WERE NOP

                                     01CC   259 	STATUS	ONEVAL			;ASSUME ONLY ONE VALUE ALLOWED

            64            0D     E0  01D0   260 	BBS	#QUA_V_ONEVAL,(R4),390$	;BR IF ERROR

                          13         01D3       

                                     01D4   261 310$:	TESTBLANK			;CHECK FOR SIGNIFICANT BLANK

                          0B     11  01D7   262 320$:	BRB	380$			;CONTINUE

                                     01D9   263  

                                     01D9   264 ;

                                     01D9   265 ; INVALID QUALIFIER VALUE SYNTAX

                                     01D9   266 ;

                                     01D9   267  

                                     01D9   268 350$:	STATUS	IVVALU			;SET INVALID SYNTAX

                          09     11  01DC   269 	BRB	390$			;

                                     01DE   270  

                                     01DE   271 ;

                                     01DE   272 ; VALID TERMIATOR LIST FOR QUALIFIER VALUES

                                     01DE   273 ;

                  00 29 28 2F 2C 20  01DE   274 360$:	.ASCII	\ ,/()\<0>		; SPACE,COMMA,SLASH,PARENS AND EOL

                                     01E4   275 370$:

                                     01E4   276 ;

                                     01E4   277 ; SINGLE VALUE QUALIFIER

                                     01E4   278 ;

                                     01E4   279  

                                     01E4   280 380$:	STATUS	NORMAL			;SET SUCCESSFUL COMPLETION

                          8E     7C  01E7   281 390$:	CLRQ	(SP)+			;CLEAN STACK

         FA AD            10     AA  01E9   282 	BICW	#WRK_M_QUAL,WRK_W_FLAGS(FP) ;CLEAR QUALIFIER PROCESSING IN PROGRESS

                     01C0 8F     BA  01ED   283 	POPR	#^M<R6,R7,R8>		;RESTORE REGISTERS

                                 05  01F1   284 	RSB				;

                                     01F2   285  

                                     01F2   286 	.END

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   7

SYMBOL TABLE                                                                                                                     (1)



BIT...         = 00000008            CLI$_OVRFLW    = 00038160            MCR$SETNBLK      ********   X   03   

CLI$_ABFNAM    = 000381B8            CLI$_PARMDEL   = 00038110            MCR$TESTBLANK    ********   X   03   

CLI$_ABKEYW    = 00038000            CLI$_PROC_ID   = 0003FFF1            MCR_M_ALPHAN   = 00000002            

CLI$_ABVERB    = 00038008            CLI$_QUEJOBCRE = 0003FFF9            MCR_M_DEFALT   = 00000008            

CLI$_BADRET    = 00038198            CLI$_REQPRMABS = 00038812            MCR_M_DELINP   = 00000080            

CLI$_BADTEXT   = 000381B0            CLI$_RSLOVF    = 00038118            MCR_M_DOLLARS  = 00000100            

CLI$_BUFOVF    = 00038018            CLI$_SKPDAT    = 00038120            MCR_M_ESCAPE   = 00000004            

CLI$_COMPLX    = 00038020            CLI$_SPARE0    = 00038010            MCR_M_ESCTRM   = 00000200            

CLI$_CONFQUAL  = 00038802            CLI$_SPARE1    = 00038058            MCR_M_GLOBAL   = 00000400            

CLI$_CREQUEJOB = 0003884A            CLI$_STKOVF    = 00038128            MCR_M_LOWER    = 00000800            

CLI$_DEFOVF    = 00038028            CLI$_SUBMITERR = 00038852            MCR_M_OPNINP   = 00000040            

CLI$_DEVALSPL  = 0003885A            CLI$_SYMDEL    = 00038130            MCR_M_RAD50    = 00000001            

CLI$_DEVNOTFOR = 0003887A            CLI$_SYMOVF    = 00038138            MCR_M_STRSUB   = 00001000            

CLI$_DEVNOTSPL = 00038862            CLI$_UNDFIL    = 00038188            MCR_V_ALPHAN   = 00000001            

CLI$_DIRECT    = 00038030            CLI$_UNDSYM    = 00038140            MCR_V_DEFALT   = 00000003            

CLI$_EXPSYN    = 00038038            CLI$_UNPROPARM = 00038170            MCR_V_DELINP   = 00000007            

CLI$_FILOPN    = 00038190            CLI$_UNPROQUAL = 00038168            MCR_V_DOLLARS  = 00000008            

CLI$_ILLVAL    = 0003883A            CLI$_USGOTO    = 00038148            MCR_V_ESCAPE   = 00000002            

CLI$_IMCHNG    = 00038040            CLI$_VALCNVERR = 00038832            MCR_V_ESCTRM   = 00000009            

CLI$_IMGFNF    = 00038872            CLI$_VALREQ    = 00038150            MCR_V_FORCMD   = 0000000E            

CLI$_INSFPRM   = 00038048            CMDBUFSIZ      = 000001FC            MCR_V_GLOBAL   = 0000000A            

CLI$_INVKEY    = 00038178            CMD_AB_PAROUT    00000005            MCR_V_LOWER    = 0000000B            

CLI$_INVQUAL   = 0003880A            CMD_B_DEFIMG     00000002            MCR_V_OPNINP   = 00000006            

CLI$_INVQUALNUM= 0003881A            CMD_B_FLAGS      00000004            MCR_V_RAD50    = 00000000            

CLI$_INVREQTYP = 00038822            CMD_B_PARMCNT    00000001            MCR_V_STRSUB   = 0000000C            

CLI$_INVRSP    = 00038180            CMD_B_QUABLK     00000003            MSGBUFSIZ      = 00000084            

CLI$_INVUIC    = 000381A8            CMD_B_VERBTYP    00000000            PRC_B_DEFRADIX   00000092            

CLI$_IVCHAR    = 00038050            CMD_M_ABREV    = 00000020            PRC_B_EXMDEPMOD  00000091            

CLI$_IVDEVTYPE = 0003886A            CMD_M_DEFQUAL  = 00000010            PRC_B_EXMDEPWID  00000090            

CLI$_IVFNAM    = 000381C0            CMD_M_DEVNAM   = 00000080            PRC_K_DEC      = 00000001            

CLI$_IVKEYW    = 00038060            CMD_M_IMMED    = 00000002            PRC_K_HEX      = 00000000            

CLI$_IVOPER    = 00038068            CMD_M_NOEQL    = 00000040            PRC_K_LENGTH     000000A0            

CLI$_IVPROT    = 00038070            CMD_M_NOSTAT   = 00000008            PRC_K_OCT      = 00000002            

CLI$_IVQLOC    = 00038078            CMD_M_OPTION   = 00000001            PRC_L_CLIWRK0    0000005C            

CLI$_IVSYMB    = 00038080            CMD_M_PAROUT   = 00000004            PRC_L_CLIWRK1    00000060            

CLI$_IVVALU    = 00038088            CMD_S_MAXPARM  = 00000004            PRC_L_CLIWRK2    00000064            

CLI$_IVVERB    = 00038090            CMD_S_MINPARM  = 00000004            PRC_L_CLIWRK3    00000068            

CLI$_MAXPARM   = 00038098            CMD_V_ABREV    = 00000005            PRC_L_CLIWRK4    0000006C            

CLI$_MULKEY    = 000381A0            CMD_V_DEFQUAL  = 00000004            PRC_L_ERRRAB     00000010            

CLI$_NOATFIL   = 000380A0            CMD_V_DEVNAM   = 00000007            PRC_L_EXMDEPADR  0000008C            

CLI$_NOCCAT    = 000380A8            CMD_V_IMMED    = 00000001            PRC_L_EXTARG     00000078            

CLI$_NOCOMD    = 000380B0            CMD_V_MAXPARM  = 00000004            PRC_L_EXTBLK     00000070            

CLI$_NOKEYW    = 000380B8            CMD_V_MINPARM  = 00000000            PRC_L_EXTCOD     00000080            

CLI$_NOLIST    = 000380C0            CMD_V_NOEQL    = 00000006            PRC_L_EXTHND     00000074            

CLI$_NOOPTPRS  = 00038842            CMD_V_NOSTAT   = 00000003            PRC_L_EXTPRM     0000007C            

CLI$_NOQUAL    = 000380C8            CMD_V_OPTION   = 00000000            PRC_L_INDEPTH    00000048            

CLI$_NORMAL    = 00030001            CMD_V_PAROUT   = 00000002            PRC_L_INDFAB     0000001C            

CLI$_NOTNEG    = 000380D8            GBL...         = 00000000            PRC_L_INDINPRAB  00000014            

CLI$_NOVALU    = 000380D0            INPBUFSIZ      = 00000084            PRC_L_INDOUTRAB  00000018            

CLI$_NOVALUE   = 0003882A            MCR$AB_QUALTBL   ********   X   03   PRC_L_INPRAB     00000008            

CLI$_NULFIL    = 000380E0            MCR$COMPSTRING   ********   X   03   PRC_L_LSTSTATUS  00000094            

CLI$_NUMBER    = 000380E8            MCR$GENDESCR     ********   X   03   PRC_L_ONCTLY     0000009C            

CLI$_ONCOMD    = 000380F0            MCR$MOVCHAR      ********   X   03   PRC_L_ONERROR    00000058            

CLI$_ONERR     = 000380F8            MCR$MOVTOKN      ********   X   03   PRC_L_OUTRAB     0000000C            

CLI$_ONEVAL    = 00038158            MCR$PROCFILE     ********   X   03   PRC_L_PROCUIC    00000098            

CLI$_ONLEVL    = 00038100            MCR$PROCQUAL     00000000 RG    03   PRC_L_SAVAP      00000000            

CLI$_ONOVF     = 00038108            MCR$SETCHAR      ********   X   03   PRC_L_SAVFP      00000004            

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   8

SYMBOL TABLE                                                                                                                     (1)



PRC_L_SEVERITY   00000040            PTR_S_FLAGS    = 00000004            WRK_AG_RESULT    FFFFFBC0            

PRC_L_STACKLM    00000088            PTR_S_OFFSET   = 0000000C            WRK_B_CMDFLG     FFFFFFC9            

PRC_L_STACKPT    00000084            PTR_S_TERM     = 00000004            WRK_B_CURADX     FFFFFFCA            

PRC_L_STATUS     00000044            PTR_S_TYPE     = 00000004            WRK_B_PARMCNT    FFFFFFCB            

PRC_L_SYMBOL     0000004C            PTR_S_VALUE    = 00000008            WRK_B_VERBTYP    FFFFFFC8            

PRC_M_CNTRLY   = 00000002            PTR_V_EQUAL    = 00000000            WRK_K_LENGTH     FFFFFBC0            

PRC_M_DBGQUAL  = 00000200            PTR_V_FLAGS    = 00000014            WRK_L_CHARPTR    FFFFFFFC            

PRC_M_DBGTRUE  = 00000400            PTR_V_NEGATE   = 00000000            WRK_L_IMAGE      FFFFFFEC            

PRC_M_DISABL   = 00000004            PTR_V_OFFSET   = 00000008            WRK_L_MAXPARM    FFFFFFCC            

PRC_M_EXIT     = 00000008            PTR_V_TERM     = 00000018            WRK_L_MINPARM    FFFFFFD0            

PRC_M_GOEOF    = 00000001            PTR_V_TYPE     = 0000001C            WRK_L_PAROUT     FFFFFFF0            

PRC_M_GOTO     = 00000010            PTR_V_VALUE    = 00000000            WRK_L_PROMPT     FFFFFFF4            

PRC_M_HANGUP   = 00001000            QUA_B_CODE       00000001            WRK_L_QUABLK     FFFFFFE8            

PRC_M_IND      = 00000020            QUA_B_DEFVAL     00000003            WRK_L_RSLNXT     FFFFFD40            

PRC_M_MODE     = 00000040            QUA_B_IMAGE      00000006            WRK_L_SAVAP      FFFFFFD8            

PRC_M_NOCTLY   = 00004000            QUA_B_INDEX      00000002            WRK_L_SAVFP      FFFFFFDC            

PRC_M_PAUSE    = 00002000            QUA_B_OFFSET     00000000            WRK_L_SAVSP      FFFFFFD4            

PRC_M_USRDET   = 00000100            QUA_B_PARMCNT    00000009            WRK_M_ALL      = 00000001            

PRC_M_VERIFY   = 00000080            QUA_G_CHNGLST    00000007            WRK_M_ASK      = 00000100            

PRC_M_YLEVEL   = 00000800            QUA_M_BATDEF   = 00000100            WRK_M_COMMAND  = 00000002            

PRC_Q_ALLOCREG   00000020            QUA_M_CHNGLIST = 00000001            WRK_M_CONTINU  = 00000400            

PRC_Q_GLOBAL     00000028            QUA_M_DEFTRUE  = 00000080            WRK_M_EQUAL    = 00000008            

PRC_Q_LABEL      00000030            QUA_M_FILE     = 00000004            WRK_M_IMCHNG   = 00000004            

PRC_Q_LOCAL      00000038            QUA_M_IMAGE    = 00000400            WRK_M_QUAL     = 00000010            

PRC_V_CNTRLY   = 00000001            QUA_M_INTDEF   = 00000200            WRK_M_QUOTE    = 00000020            

PRC_V_DBGQUAL  = 00000009            QUA_M_KEYVAL   = 00004000            WRK_M_STAR     = 00000040            

PRC_V_DBGTRUE  = 0000000A            QUA_M_LOCALKEY = 00000002            WRK_M_TRAILSPC = 00000200            

PRC_V_DISABL   = 00000002            QUA_M_NEG      = 00000040            WRK_M_VERB     = 00000080            

PRC_V_EXIT     = 00000003            QUA_M_ONEVAL   = 00002000            WRK_Q_IOSB       FFFFFFE0            

PRC_V_GOEOF    = 00000000            QUA_M_OUTPUT   = 00000800            WRK_V_ALL      = 00000000            

PRC_V_GOTO     = 00000004            QUA_M_PARM     = 00000010            WRK_V_ASK      = 00000008            

PRC_V_HANGUP   = 0000000C            QUA_M_VAL      = 00000020            WRK_V_COMMAND  = 00000001            

PRC_V_IND      = 00000005            QUA_M_VALREQ   = 00001000            WRK_V_CONTINU  = 0000000A            

PRC_V_MODE     = 00000006            QUA_M_VERB     = 00000008            WRK_V_EQUAL    = 00000003            

PRC_V_NOCTLY   = 0000000E            QUA_S_MAXPARM  = 00000004            WRK_V_IMCHNG   = 00000002            

PRC_V_PAUSE    = 0000000D            QUA_S_MINPARM  = 00000004            WRK_V_QUAL     = 00000004            

PRC_V_USRDET   = 00000008            QUA_V_BATDEF   = 00000008            WRK_V_QUOTE    = 00000005            

PRC_V_VERIFY   = 00000007            QUA_V_CHNGLIST = 00000000            WRK_V_STAR     = 00000006            

PRC_V_YLEVEL   = 0000000B            QUA_V_DEFTRUE  = 00000007            WRK_V_TRAILSPC = 00000009            

PRC_W_CLIFLAG    00000052            QUA_V_FILE     = 00000002            WRK_V_VERB     = 00000007            

PRC_W_ERRIFI     00000052            QUA_V_IMAGE    = 0000000A            WRK_W_FLAGS      FFFFFFFA            

PRC_W_FLAGS      00000054            QUA_V_INTDEF   = 00000009            WRK_W_LOCFLG     FFFFFFF8            

PRC_W_INPCHAN    00000050            QUA_V_KEYVAL   = 0000000E            _$$_           = 00000022            

PRC_W_ONLEVEL    00000056            QUA_V_LOCALKEY = 00000001            

PTR_K_BLANK    = 00000001            QUA_V_MAXPARM  = 00000004            

PTR_K_COLON    = 00000002            QUA_V_MINPARM  = 00000000            

PTR_K_COMDQUAL = 00000000            QUA_V_NEG      = 00000006            

PTR_K_COMMA    = 00000005            QUA_V_ONEVAL   = 0000000D            

PTR_K_ENDLINE  = 00000004            QUA_V_OUTPUT   = 0000000B            

PTR_K_LPAREN   = 00000007            QUA_V_PARM     = 00000004            

PTR_K_PARAMETR = 00000003            QUA_V_VAL      = 00000005            

PTR_K_PARMQUAL = 00000001            QUA_V_VALREQ   = 0000000C            

PTR_K_PLUS     = 00000004            QUA_V_VERB     = 00000003            

PTR_K_QUALVALU = 00000002            QUA_W_FLAGS      00000004            

PTR_K_RPAREN   = 00000006            QUA_W_QUALIST    00000007            

PTR_K_SLASH    = 00000003            RSLBUFSIZ      = 00000180            

PTR_L_DESCR      00000000            WRK_AB_BUFFER    FFFFFD44            

MCRPRCQUA       - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:48:45   VAX-11 MACRO X0.3-11               Page   9

PROGRAM SECTION SYNOPSIS                                                                                                         (1)







PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            FFFFFFFC      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

MCR$ZCODE        000001F2      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

16102. BYTES LEFT IN FREE MEMORY POOL.

30. BYTES OF RECLAIMED MEMORY.

OBJ$:MCRPRCQUA,LIS$:MCRPRCQUA/-SP=EXECML$/ML,LIB$:MCR/ML,SRC$:MCRPRCQUA

21 MLB DIR RDS - 488 GETS TO DEFINE 26 MACROS. 42 INTER. FILE WRITES. 

