PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      36  PROCESS QUALIFIER SPCIFICATION

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	PROCQUAL - PROCESS QUALIFIER SPECIFICATION

                                     0000     2 	.IDENT	/01/

                                     0000     3  

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1977

                                     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 ; D. N. CUTLER 24-MAR-77

                                     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

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   2

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



                                     0000    36 	.SBTTL	PROCESS QUALIFIER SPCIFICATION

                                     0000    37 ;+

                                     0000    38 ; DCL$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 = DCL$_ABKEYW - AMBIGUOUS KEYWORD IN QUALIFIER.

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

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

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

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

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

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

                                     0000    61 ;		R0 = DCL$_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 = DCL$_NORMAL - NORMAL COMPLETION.

                                     0000    68 ;-

                                     0000    69  

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

                                     0000    71 DCL$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 	MOVTOKN				;MOVE TERMINATOR AND GET TOKEN

                          70     13  0010    77 	BEQL	90$			;IF EQL NONE

            5C            51     D0  0012    78 10$:	MOVL	R1,AP			;SAVE ORIGINAL TOKEN SIZE

            51            04     D1  0015    79 	CMPL	#4,R1			;KEYWORD LESS THAN 5 CHARACTERS?

                          03     18  0018    80 	BGEQ	20$			;IF GEQ YES

            51            04     D0  001A    81 	MOVL	#4,R1			;SET TO ONLY COMPARE 4 CHARACTERS

                          56     7C  001D    82 20$:	CLRQ	R6			;CLEAR QUALIFIER NUMBER AND INITIAL OFFSET

                          7E     7C  001F    83 	CLRQ	-(SP)			;SET NULL AS QUALIFIER FOUND

                                     0021    84 	STATUS	NOQUAL			;ASSUME NO QUALIFIERS ALLOWED ON COMMAND

            58         E0 AD     D0  0024    85 	MOVL	WRK_L_QUABLK(FP),R8	;GET ADDRESS OF QUALIFIER DESCRIPTORS

                          54     13  0028    86 	BEQL	85$			;IF EQL NONE

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

            50         01 A8     9A  002E    88 	MOVZBL	QUA_B_INDEX(R8),R0	;GET QUALIFIER TABLE INDEX

         03 A8            01     E1  0032    89 	BBC	#QUA_V_LOCALKEY,QUA_W_FLAGS(R8),40$ ;BR IF TEXT IN COMMON LIST

                          05         0036       

            50            58     C0  0037    90 	ADDL	R8,R0			;FIND ADDRESS OF QUALIFER KEY TEXT

                          06     11  003A    91 	BRB	50$			;

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   3

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



            50       0000'CF40   DE  003C    92 40$:	MOVAL	W^DCL$AB_QUALTBL[R0],R0	;GET ADDRESS OF QUALIFIER KEYWORD

            53            51     7D  0042    93 50$:	MOVQ	R1,R3			;COPY QUALIFIER STRING DESCRIPTOR

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

                          08     13  0048    95 	BEQL	65$			;BR IF YES

            84            80     91  004A    96 	CMPB	(R0)+,(R4)+		;IS THIS THE QUALIFIER WERE LOOKIN FOR?

                          0E     12  004D    97 	BNEQ	70$			;BR IF DEFINITELY NOT!

            F3            53     F5  004F    98 	SOBGTR	R3,60$			;BR IF MORE TO CHECK

                                     0052    99 65$:	STATUS	ABKEYW			;ASSUME AMBIGUOUS

                       04 AE     D5  0055   100 	TSTL	4(SP)			;FIND MATCH BEFORE?

                          24     12  0058   101 	BNEQ	85$			;BR IF AMBIGUOUS

            6E            57     7D  005A   102 	MOVQ	R7,(SP)			;SAVE MATCHED QUALIFIER VALUES

                          57     D6  005D   103 70$:	INCL	R7			;INCREMENT QUALIFIER NUMBER

            56            68     9A  005F   104 	MOVZBL	QUA_B_OFFSET(R8),R6	;GET OFFSET TO NEXT QUALIFIER DESCRIPTOR

                          C6     12  0062   105 	BNEQ	30$			;IF NEQ TRY AGAIN

                                     0064   106  

                                     0064   107 ;

                                     0064   108 ; ALL QAULIFERS HAVE BEEN CHECK WITHOUT AMBIGUITY

                                     0064   109 ;	NOW SEE IF ANY MATCHED

                                     0064   110 ;

            57            8E     7D  0064   111 	MOVQ	(SP)+,R7		;RESTORE MATCHED QUALIFER PARAMETERS

                          1F     12  0067   112 	BNEQ	110$			;BR IF ONE WAS FOUND

                                     0069   113  

                                     0069   114 ;

                                     0069   115 ; QUALIFIER DESCRIPTOR TABLE EXHAUSTED - TRY NEGATION

                                     0069   116 ;

                                     0069   117  

            6E            01     CC  0069   118 	XORL	#1,(SP)			;COMPLEMENT NEGATION FLAG

            5C            02     C3  006C   119 	SUBL3	#2,AP,R1		;REDUCE CHARACTER COUNT

                          51         006F       

                          07     15  0070   120 	BLEQ	80$			;IF LEQ NO MATCH POSSIBLE

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

                          99     13  0077   122 	BEQL	10$			;IF EQL YES

                                     0079   123  

                                     0079   124 ;

                                     0079   125 ; INVALID KEYWORD IN QUALIFIER

                                     0079   126 ;

                                     0079   127  

                                     0079   128 80$:	STATUS	IVKEYW			;SET INVALID KEYWORD STATUS

                          07     11  007C   129 	BRB	100$			;

                          8E     7C  007E   130 85$:	CLRQ	(SP)+			;REMOVE PARAMETER FROM THE STACK

                          03     11  0080   131 	BRB	100$			;TAKE ERROR EXIT

                                     0082   132  

                                     0082   133 ;

                                     0082   134 ; NO KEYWORD IN QUALIFIER

                                     0082   135 ;

                                     0082   136  

                                     0082   137 90$:	STATUS	NOKEYW			;SET NO KEYWORD STATUS

                          0156   31  0085   138 100$:	BRW	390$			;

                                     0088   139  

                                     0088   140 ;

                                     0088   141 ; VALID KEYWORD MATCH FOUND - CHECK VALIDITY

                                     0088   142 ;

                                     0088   143  

                                     0088   144 110$:	STATUS	IVQLOC			;ASSUME INVALID QUALIFIER LOCATION

         FA AD            07     E0  008B   145 	BBS	#WRK_V_VERB,WRK_W_FLAGS(FP),120$ ;IF SET, PROCESSING VERB

                          05         008F       

         03 A8            04     E0  0090   146 	BBS	#QUA_V_PARM,QUA_W_FLAGS(R8),130$ ;IF SET, ALLOWED ON PARAMETERS

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   4

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



                          05         0094       

         03 A8            03     E1  0095   147 120$:	BBC	#QUA_V_VERB,QUA_W_FLAGS(R8),100$ ;IF CLR, NOT ALLOWED ON VERBS

                          EB         0099       

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

                          18         009E       

            56         05 A8     9A  009F   149 	MOVZBL	QUA_B_IMAGE(R8),R6	;GET IMAGE NAME INDEX NUMBER

                          12     13  00A3   150 	BEQL	145$			;IF EQL NO CHANGE

                                     00A5   151 	STATUS	IMCHNG			;ASSUME SECOND IMAGE CHANGE

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

                          05     13  00AC   153 	BEQL	140$			;IF EQL YES

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

                          D2         00B2       

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

         03 A8            00     E1  00B7   156 145$:	BBC	#QUA_V_CHNGLIST,QUA_W_FLAGS(R8),150$ ;IF CLR, NO CHANGE LIST

                          26         00BB       

                          00     EF  00BC   157 	EXTZV	#QUA_V_MINPARM,#QUA_S_MINPARM,- ;EXTRACT MINIMUM PARAMETERS

         08 A8            04         00BE   158 		QUA_B_PARMCNT(R8),WRK_L_MINPARM(FP) ;

                       E8 AD         00C1       

                          04     EF  00C3   159 	EXTZV	#QUA_V_MAXPARM,#QUA_S_MAXPARM,- ;EXTRACT MAXIMUM PARAMETERS

         08 A8            04         00C5   160 		QUA_B_PARMCNT(R8),WRK_L_MAXPARM(FP) ;

                       E4 AD         00C8       

         DC AD         09 A8     9E  00CA   161 	MOVAB	QUA_W_PROMPT(R8),WRK_L_PROPTR(FP) ;RESET ADDRESS OF PROMPT DESCRIPTORS

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

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

            50            01     C1  00D5   164 	ADDL3	#1,R0,WRK_L_QUABLK(FP)	;ARE QUALIFIERS NO LONGER ALLOWED?

                       E0 AD         00D8       

                          06     13  00DA   165 	BEQL	150$			;BR IF YES

         E0 AD         06 A840   9E  00DC   166 	MOVAB	QUA_W_QUALIST(R8)[R0],WRK_L_QUABLK(FP) ;SET ADDRESS OF QUALIFIER LIST

                                     00E2   167  

                                     00E2   168 ;

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

                                     00E2   170 ;

                                     00E2   171  

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

                                     00E5   173 	STATUS	NOTNEG			;ASSUME QUALIFIER NOT NEGATABLE

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

                          3B         00EC       

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

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

                          08         00F4       

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

                          03         00F9       

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

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

                          57     D6  0100   180 	INCL	R7			;ADJUST TO ACTUAL QUALIFIER NUMBER

            54         03 A8     3E  0102   181 	MOVAW	QUA_W_FLAGS(R8),R4	;SAVE ADDRESS OF QUALIFIER FLAGS

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

                                     010A   183 	GENDESCR			;GENERATE RESULT PARSE DESCRIPTOR

                                     010D   184  

                                     010D   185 ;

                                     010D   186 ; CHECK FOR VALUE

                                     010D   187 ;

                                     010D   188  

                                     010D   189 	SETCHAR				;PEEK AT NEXT CHARACTER IN INPUT BUFFER

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

                          10     13  0113   191 	BEQL	180$			;IF EQL YES

            50            3A     91  0115   192 	CMPB	#^A/:/,R0		;VALUE SPECIFIED?

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   5

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



                          0B     13  0118   193 	BEQL	180$			;IF EQL YES

                                     011A   194 	STATUS	VALREQ			;ASSUME VALUE REQUIRED

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

                          14         0121       

                          00A9   31  0122   196 	BRW	320$			;

                                     0125   197 180$:	STATUS	NOVALU			;ASSUME NO VALUE ALLOWED

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

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

                          07         012E       

                                     012F   200 ;

                                     012F   201 ; PROCESS QUALIFIER VALUE

                                     012F   202 ;

                                     012F   203  

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

                          06         0132       

                                     0133   205 	PROCFILE			;PARSE THE FILE SPEC

                          00A5   31  0136   206 210$:	BRW	390$			;EXIT QUALIFIER PARSE

            55            02     CE  0139   207 220$:	MNEGL	#2,R5			;SET VALUE STATE VARIABLE

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

                                     013F   209 	MOVCHAR				;COPY TERMINATOR INTO COMMAND BUFFER

                                     0142   210 	SETNBLK				;SKIP LEADING BLANKS

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

                                     0148   212 250$:	MOVCHAR				;COPY BYTE OF DATA INTO COMMADN BUFFER

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

                          F8         014F       

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

                          0A         0153       

            50            3D     91  0154   215 	CMPB	#^A/=/,R0		;VALUE SEPARATOR?

                          0F     13  0157   216 	BEQL	270$			;BR IF YES

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

                          0A     13  015C   218 	BEQL	270$			;BR IF YES

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

                       D5'AF         0161       

                          E3     13  0163   220 	BEQL	250$			;BR IF NO TERMINATOR FOUND

            50            61     9A  0165   221 	MOVZBL	(R1),R0			;RESTORE TERMINATOR IN REGISTER

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

                       FC AD     D7  016C   223 	DECL	WRK_L_CHARPTR(FP)	;BACK UP POINTER TO GET IT AGAIN

            59            52     C3  016F   224 	SUBL3	R2,R9,R1		;CALCULATE LENGTH OF VALUE TOKEN

                          51         0172       

                          11     12  0173   225 	BNEQ	300$			;BR IF VALUE PRESENT

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

                          56     12  0178   227 	BNEQ	350$			;BR IF NO

                          07     F0  017A   228 	INSV	#PTR_K_LPAREN,#PTR_V_TERM,- ;CHANGE QUALIFIER TERMINATOR CLASS

            04            18         017C   229 		#PTR_S_TERM,-4(R10)	;TO VALUE LIST FOLLOWING

                       FC AA         017E       

                          55     D6  0180   230 	INCL	R5			;ACCOUNT FOR MULTI-VALUE FLAG

                          B8     19  0182   231 	BLSS	240$			;BR IF NO PREVIOUS PARAN'S SEEN

                          4A     11  0184   232 	BRB	350$			;BR IF ERROR

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

                                     0188   234 	COMPSTRING			;COMPRESS QUOTED STRING

            52            51     C1  018B   235 	ADDL3	R1,R2,R9		;CALCULATE ADDRESS OF TERMINATOR

                          59         018E       

            55            02     9A  018F   236 	MOVZBL	#PTR_K_QUALVALU,R5	;GET ITEM TYPE TO QUALIFIER VALUE

                          56     D4  0192   237 	CLRL	R6			;CLEAR FLAGS

            57            51     7D  0194   238 	MOVQ	R1,R7			;SET LENGTH OF QUALIFIER VALUE

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

                          06     12  019A   240 	BNEQ	305$			;BR IF NO

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   6

01              PROCESS QUALIFIER SPCIFICATION                                                                                   (1)



                                     019C   241 	MOVCHAR				;COPY PARAN TO BUFFER

                                     019F   242 	TESTBLANK			;FIND REAL QUALIFIER DELIMITER

                                     01A2   243 305$:	GENDESCR			;GENERATE RESULT PARSE DESCRIPTOR

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

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

                          90     13  01AA   246 	BEQL	240$			;BR IF YES-GET THE VALUE PART

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

                          8B     13  01AF   248 	BEQL	240$			;BR IF YES

                          55     D6  01B1   249 	INCL	R5			;COUNT UP THE VALUES SEEN

                          16     19  01B3   250 	BLSS	310$			;BR IF SINGLE VALUE QUALIFIER

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

                          82     13  01B8   252 	BEQL	240$			;IF YES-GO PROCESS THE VALUE

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

                          11     12  01BD   254 	BNEQ	350$			;IF NO-ITS AN ERROR

                          55     D5  01BF   255 	TSTL	R5			;REALLY GET MORE THAN ONE VALUE

                          08     13  01C1   256 	BEQL	310$			;BR IF NO-PARENS WERE NOP

                                     01C3   257 	STATUS	ONEVAL			;ASSUME ONLY ONE VALUE ALLOWED

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

                          13         01CA       

                                     01CB   259 310$:	TESTBLANK			;CHECK FOR SIGNIFICANT BLANK

                          0B     11  01CE   260 320$:	BRB	380$			;CONTINUE

                                     01D0   261  

                                     01D0   262 ;

                                     01D0   263 ; INVALID QUALIFIER VALUE SYNTAX

                                     01D0   264 ;

                                     01D0   265  

                                     01D0   266 350$:	STATUS	IVVALU			;SET INVALID SYNTAX

                          09     11  01D3   267 	BRB	390$			;

                                     01D5   268  

                                     01D5   269 ;

                                     01D5   270 ; VALID TERMIATOR LIST FOR QUALIFIER VALUES

                                     01D5   271 ;

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

                                     01DB   273 370$:

                                     01DB   274 ;

                                     01DB   275 ; SINGLE VALUE QUALIFIER

                                     01DB   276 ;

                                     01DB   277  

                                     01DB   278 380$:	STATUS	NORMAL			;SET SUCCESSFUL COMPLETION

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

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

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

                                 05  01E8   282 	RSB				;

                                     01E9   283  

                                     01E9   284 	.END

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   7

SYMBOL TABLE                                                                                                                     (1)



BIT...         = 00000008            CLI$_OVRFLW    = 00038160            PRC_B_DEFRADIX   00000092            

CLI$_ABFNAM    = 000381B8            CLI$_PARMDEL   = 00038110            PRC_B_EXMDEPMOD  00000091            

CLI$_ABKEYW    = 00038000            CLI$_PROC_ID   = 0003FFF1            PRC_B_EXMDEPWID  00000090            

CLI$_ABVERB    = 00038008            CLI$_QUEJOBCRE = 0003FFF9            PRC_K_DEC      = 00000001            

CLI$_BADRET    = 00038198            CLI$_REQPRMABS = 00038812            PRC_K_HEX      = 00000000            

CLI$_BADTEXT   = 000381B0            CLI$_RSLOVF    = 00038118            PRC_K_LENGTH     000000A0            

CLI$_BUFOVF    = 00038018            CLI$_SKPDAT    = 00038120            PRC_K_OCT      = 00000002            

CLI$_COMPLX    = 00038020            CLI$_SPARE0    = 00038010            PRC_L_CLIWRK0    0000005C            

CLI$_CONFQUAL  = 00038802            CLI$_SPARE1    = 00038058            PRC_L_CLIWRK1    00000060            

CLI$_CREQUEJOB = 0003884A            CLI$_STKOVF    = 00038128            PRC_L_CLIWRK2    00000064            

CLI$_DEFOVF    = 00038028            CLI$_SUBMITERR = 00038852            PRC_L_CLIWRK3    00000068            

CLI$_DEVALSPL  = 0003885A            CLI$_SYMDEL    = 00038130            PRC_L_CLIWRK4    0000006C            

CLI$_DEVNOTFOR = 0003887A            CLI$_SYMOVF    = 00038138            PRC_L_ERRRAB     00000010            

CLI$_DEVNOTSPL = 00038862            CLI$_UNDFIL    = 00038188            PRC_L_EXMDEPADR  0000008C            

CLI$_DIRECT    = 00038030            CLI$_UNDSYM    = 00038140            PRC_L_EXTARG     00000078            

CLI$_EXPSYN    = 00038038            CLI$_UNPROPARM = 00038170            PRC_L_EXTBLK     00000070            

CLI$_FILOPN    = 00038190            CLI$_UNPROQUAL = 00038168            PRC_L_EXTCOD     00000080            

CLI$_ILLVAL    = 0003883A            CLI$_USGOTO    = 00038148            PRC_L_EXTHND     00000074            

CLI$_IMCHNG    = 00038040            CLI$_VALCNVERR = 00038832            PRC_L_EXTPRM     0000007C            

CLI$_IMGFNF    = 00038872            CLI$_VALREQ    = 00038150            PRC_L_INDEPTH    00000048            

CLI$_INSFPRM   = 00038048            CMDBUFSIZ      = 000001FC            PRC_L_INDFAB     0000001C            

CLI$_INVKEY    = 00038178            CMD_AB_PAROUT    00000006            PRC_L_INDINPRAB  00000014            

CLI$_INVQUAL   = 0003880A            CMD_B_DEFIMG     00000002            PRC_L_INDOUTRAB  00000018            

CLI$_INVQUALNUM= 0003881A            CMD_B_FLAGS      00000005            PRC_L_INPRAB     00000008            

CLI$_INVREQTYP = 00038822            CMD_B_PARMCNT    00000001            PRC_L_LSTSTATUS  00000094            

CLI$_INVRSP    = 00038180            CMD_B_PROMPT     00000004            PRC_L_ONCTLY     0000009C            

CLI$_INVUIC    = 000381A8            CMD_B_QUABLK     00000003            PRC_L_ONERROR    00000058            

CLI$_IVCHAR    = 00038050            CMD_B_VERBTYP    00000000            PRC_L_OUTRAB     0000000C            

CLI$_IVDEVTYPE = 0003886A            CMD_M_ABREV    = 00000020            PRC_L_PROCUIC    00000098            

CLI$_IVFNAM    = 000381C0            CMD_M_DEFQUAL  = 00000010            PRC_L_SAVAP      00000000            

CLI$_IVKEYW    = 00038060            CMD_M_FOREIGN  = 00000001            PRC_L_SAVFP      00000004            

CLI$_IVOPER    = 00038068            CMD_M_IMMED    = 00000002            PRC_L_SEVERITY   00000040            

CLI$_IVPROT    = 00038070            CMD_M_NOSTAT   = 00000008            PRC_L_STACKLM    00000088            

CLI$_IVQLOC    = 00038078            CMD_M_PAROUT   = 00000004            PRC_L_STACKPT    00000084            

CLI$_IVSYMB    = 00038080            CMD_S_MAXPARM  = 00000004            PRC_L_STATUS     00000044            

CLI$_IVVALU    = 00038088            CMD_S_MINPARM  = 00000004            PRC_L_SYMBOL     0000004C            

CLI$_IVVERB    = 00038090            CMD_V_ABREV    = 00000005            PRC_M_CNTRLY   = 00000002            

CLI$_MAXPARM   = 00038098            CMD_V_DEFQUAL  = 00000004            PRC_M_DBGQUAL  = 00000200            

CLI$_MULKEY    = 000381A0            CMD_V_FOREIGN  = 00000000            PRC_M_DBGTRUE  = 00000400            

CLI$_NOATFIL   = 000380A0            CMD_V_IMMED    = 00000001            PRC_M_DISABL   = 00000004            

CLI$_NOCCAT    = 000380A8            CMD_V_MAXPARM  = 00000004            PRC_M_EXIT     = 00000008            

CLI$_NOCOMD    = 000380B0            CMD_V_MINPARM  = 00000000            PRC_M_GOEOF    = 00000001            

CLI$_NOKEYW    = 000380B8            CMD_V_NOSTAT   = 00000003            PRC_M_GOTO     = 00000010            

CLI$_NOLIST    = 000380C0            CMD_V_PAROUT   = 00000002            PRC_M_HANGUP   = 00001000            

CLI$_NOOPTPRS  = 00038842            DCL$AB_QUALTBL   ********   X   03   PRC_M_IND      = 00000020            

CLI$_NOQUAL    = 000380C8            DCL$COMPSTRING   ********   X   03   PRC_M_MODE     = 00000040            

CLI$_NORMAL    = 00030001            DCL$GENDESCR     ********   X   03   PRC_M_NOCTLY   = 00004000            

CLI$_NOTNEG    = 000380D8            DCL$MOVCHAR      ********   X   03   PRC_M_PAUSE    = 00002000            

CLI$_NOVALU    = 000380D0            DCL$MOVTOKN      ********   X   03   PRC_M_USRDET   = 00000100            

CLI$_NOVALUE   = 0003882A            DCL$PROCFILE     ********   X   03   PRC_M_VERIFY   = 00000080            

CLI$_NULFIL    = 000380E0            DCL$PROCQUAL     00000000 RG    03   PRC_M_YLEVEL   = 00000800            

CLI$_NUMBER    = 000380E8            DCL$SETCHAR      ********   X   03   PRC_Q_ALLOCREG   00000020            

CLI$_ONCOMD    = 000380F0            DCL$SETNBLK      ********   X   03   PRC_Q_GLOBAL     00000028            

CLI$_ONERR     = 000380F8            DCL$TESTBLANK    ********   X   03   PRC_Q_LABEL      00000030            

CLI$_ONEVAL    = 00038158            GBL...         = 00000000            PRC_Q_LOCAL      00000038            

CLI$_ONLEVL    = 00038100            INPBUFSIZ      = 00000084            PRC_V_CNTRLY   = 00000001            

CLI$_ONOVF     = 00038108            MSGBUFSIZ      = 00000084            PRC_V_DBGQUAL  = 00000009            

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   VAX-11 MACRO X0.3-11               Page   8

SYMBOL TABLE                                                                                                                     (1)



PRC_V_DBGTRUE  = 0000000A            QUA_M_ONEVAL   = 00002000            WRK_M_VERB     = 00000080            

PRC_V_DISABL   = 00000002            QUA_M_OUTPUT   = 00000800            WRK_Q_IOSB       FFFFFFD4            

PRC_V_EXIT     = 00000003            QUA_M_PARM     = 00000010            WRK_V_COMMAND  = 00000001            

PRC_V_GOEOF    = 00000000            QUA_M_VAL      = 00000020            WRK_V_IMCHNG   = 00000002            

PRC_V_GOTO     = 00000004            QUA_M_VALREQ   = 00001000            WRK_V_INQUIRE  = 00000008            

PRC_V_HANGUP   = 0000000C            QUA_M_VERB     = 00000008            WRK_V_NOSTAT   = 00000009            

PRC_V_IND      = 00000005            QUA_S_MAXPARM  = 00000004            WRK_V_PROMPT   = 00000003            

PRC_V_MODE     = 00000006            QUA_S_MINPARM  = 00000004            WRK_V_QUAL     = 00000004            

PRC_V_NOCTLY   = 0000000E            QUA_V_BATDEF   = 00000008            WRK_V_QUOTE    = 00000005            

PRC_V_PAUSE    = 0000000D            QUA_V_CHNGLIST = 00000000            WRK_V_RUNDWN   = 00000000            

PRC_V_USRDET   = 00000008            QUA_V_DEFTRUE  = 00000007            WRK_V_STAR     = 00000006            

PRC_V_VERIFY   = 00000007            QUA_V_FILE     = 00000002            WRK_V_TRAILSPC = 0000000A            

PRC_V_YLEVEL   = 0000000B            QUA_V_IMAGE    = 0000000A            WRK_V_VERB     = 00000007            

PRC_W_CLIFLAG    00000052            QUA_V_INTDEF   = 00000009            WRK_W_FLAGS      FFFFFFFA            

PRC_W_ERRIFI     00000052            QUA_V_KEYVAL   = 0000000E            WRK_W_IMGCHAN    FFFFFFF8            

PRC_W_FLAGS      00000054            QUA_V_LOCALKEY = 00000001            _$$_           = 00000022            

PRC_W_INPCHAN    00000050            QUA_V_MAXPARM  = 00000004            

PRC_W_ONLEVEL    00000056            QUA_V_MINPARM  = 00000000            

PTR_K_BLANK    = 00000001            QUA_V_NEG      = 00000006            

PTR_K_COLON    = 00000002            QUA_V_ONEVAL   = 0000000D            

PTR_K_COMDQUAL = 00000000            QUA_V_OUTPUT   = 0000000B            

PTR_K_COMMA    = 00000005            QUA_V_PARM     = 00000004            

PTR_K_ENDLINE  = 00000004            QUA_V_VAL      = 00000005            

PTR_K_LPAREN   = 00000007            QUA_V_VALREQ   = 0000000C            

PTR_K_PARAMETR = 00000003            QUA_V_VERB     = 00000003            

PTR_K_PARMQUAL = 00000001            QUA_W_FLAGS      00000003            

PTR_K_PLUS     = 00000004            QUA_W_PROMPT     00000009            

PTR_K_QUALVALU = 00000002            QUA_W_QUALIST    00000006            

PTR_K_RPAREN   = 00000006            RSLBUFSIZ      = 00000180            

PTR_K_SLASH    = 00000003            WRK_AB_BUFFER    FFFFFD38            

PTR_L_DESCR      00000000            WRK_AG_RESULT    FFFFFBB4            

PTR_S_FLAGS    = 00000004            WRK_B_VERBTYP    FFFFFFC0            

PTR_S_OFFSET   = 0000000C            WRK_K_LENGTH     FFFFFBB4            

PTR_S_TERM     = 00000004            WRK_L_CHARPTR    FFFFFFFC            

PTR_S_TYPE     = 00000004            WRK_L_CMDOUT     FFFFFFBC            

PTR_S_VALUE    = 00000008            WRK_L_IMAGE      FFFFFFEC            

PTR_V_FLAGS    = 00000014            WRK_L_MAXPARM    FFFFFFE4            

PTR_V_NEGATE   = 00000000            WRK_L_MINPARM    FFFFFFE8            

PTR_V_OFFSET   = 00000008            WRK_L_PARMCNT    FFFFFFF0            

PTR_V_TERM     = 00000018            WRK_L_PAROUT     FFFFFFF4            

PTR_V_TYPE     = 0000001C            WRK_L_PROMPT     FFFFFFD0            

PTR_V_VALUE    = 00000000            WRK_L_PROPTR     FFFFFFDC            

QUA_B_DEFVAL     00000002            WRK_L_QUABLK     FFFFFFE0            

QUA_B_IMAGE      00000005            WRK_L_RSLNXT     FFFFFD34            

QUA_B_INDEX      00000001            WRK_L_SAVAP      FFFFFFC8            

QUA_B_OFFSET     00000000            WRK_L_SAVFP      FFFFFFCC            

QUA_B_PARMCNT    00000008            WRK_L_SAVSP      FFFFFFC4            

QUA_G_CHNGLST    00000006            WRK_M_COMMAND  = 00000002            

QUA_M_BATDEF   = 00000100            WRK_M_IMCHNG   = 00000004            

QUA_M_CHNGLIST = 00000001            WRK_M_INQUIRE  = 00000100            

QUA_M_DEFTRUE  = 00000080            WRK_M_NOSTAT   = 00000200            

QUA_M_FILE     = 00000004            WRK_M_PROMPT   = 00000008            

QUA_M_IMAGE    = 00000400            WRK_M_QUAL     = 00000010            

QUA_M_INTDEF   = 00000200            WRK_M_QUOTE    = 00000020            

QUA_M_KEYVAL   = 00004000            WRK_M_RUNDWN   = 00000001            

QUA_M_LOCALKEY = 00000002            WRK_M_STAR     = 00000040            

QUA_M_NEG      = 00000040            WRK_M_TRAILSPC = 00000400            

PROCQUAL        - PROCESS QUALIFIER SPECIFICATION                22-AUG-1978 01:12:29   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  

DCL$ZCODE        000001E9      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

17072. BYTES LEFT IN FREE MEMORY POOL.

14. BYTES OF RECLAIMED MEMORY.

EXE$:PROCQUAL,LIS$:PROCQUAL/-SP=EXECML$/ML,LIB$:DCL/ML,SRC$:PROCQUAL

23 MLB DIR RDS - 458 GETS TO DEFINE 26 MACROS. 38 INTER. FILE WRITES. 

