RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (2)      39  DECLARATIONS

   (3)      78  RESULT PARSE INITIAL ENTRY

   (7)     498  VALUE CONVERSION ROUTINES

   (8)     605  PROCESS BIT LISTS

   (9)     711  PROCESS COMMAND QUALIFIER

   (10)    785  PROCESS QUALIFIER

   (12)    907  GET OPTION VALUE

   (13)    969  GET COMMAND LINE

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	RPDCL	- RESULT PARSE MAIN ROUTINE

                                     0000     2 	.IDENT	/01/

                                     0000     3 

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1977

                                     0000     6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000     7 ;

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

                                     0000     9 ; COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH  THE INCLUSION OF THE

                                     0000    10 ; ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

                                     0000    11 ; MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

                                     0000    12 ; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

                                     0000    13 ; TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

                                     0000    14 ; REMAIN IN DEC.

                                     0000    15 ;

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

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

                                     0000    18 ; 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 

                                     0000    24 ;++

                                     0000    25 ; FACILITY:	STARLET DCL CLI

                                     0000    26 ;

                                     0000    27 ; ABSTRACT:	RESULT PARSE MAIN ROUTINE

                                     0000    28 ;

                                     0000    29 ; ENVIRONMENT:	NATIVE MODE USER CODE

                                     0000    30 ;

                                     0000    31 ; AUTHOR:	W.H.BROWN, CREATION DATE:  13-APR-77

                                     0000    32 ;

                                     0000    33 ; MODIFIED BY:

                                     0000    34 ;

                                     0000    35 ;	, : VERSION

                                     0000    36 ; 01	- 

                                     0000    37 ;--

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   2

01              DECLARATIONS                                                                                                     (2)



                                     0000    39 	.SBTTL	DECLARATIONS

                                     0000    40 ;

                                     0000    41 ; INCLUDE FILES:

                                     0000    42 ;

                                     0000    43 ;	C.MLB

                                     0000    44 ;	LIB.MLB

                                     0000    45 ;

                                     0000    46 ; MACROS:

                                     0000    47 ;

                                     0000    48 ;

                                     0000    49 ; EQUATED SYMBOLS:

                                     0000    50 ;

                                     0000    51 ; MACRO LIBRARY CALLS

                                     0000    52 ;

                                     0000    53 	DEFCMDWRK			; DEFINE WORK AREA OFFSETS

                                     0000    54 	DEFERRCOD			; DEFINE ERROR/STATUS VALUES

                                     0000    55 	DEFPROBLK			; DEFINE PROMPT DESCRIPTOR BLOCK OFFSETS

                                     0000    56 	DEFPTRDSC			; DEFINE RESULT PARSE DESCRIPTOR FORMAT

                                     0000    57 	DEFQUABLK			; DEFINE QUALIFIER BLOCK VALUES

                                     0000    58 	$CLIDEF				; CLI DEFINITIONS

                                     0000    59 	DEFDCLRPW			; DCL RESULT PARSE WORK DEFINITIONS

                                     0000    60 	DEFOPIDCL			; DCL OUTPUT PARSE INDIACTORS

                                     0000    61 	$CLIVERBDEF			; VERB TYPE CODES

                                     0000    62  

                                     0000    63 ;

                                     0000    64 ; UTILITY CALL PARAMETER OFFSETS

                                     0000    65 ;

                           00000004  0000    66 	RQDESC	=	4		; OFFSET TO REQUEST DESCRIPTOR

                           00000008  0000    67 	RQWORK	=	8		; OFFSET TO WORK BLOCK

                           0000000C  0000    68 	RQBITS	=	12		; OFFSET TO BIT ARRAY ADDRESS

                                     0000    69 ;

                                     0000    70 ; INTERNAL ERROR BIT - DON'T USE R5 AS RESULT DESCRIPTOR INDEX

                                     0000    71 ;

                           0000001F  0000    72 	INTERROR = 31			; BIT 31 FLAGS INTERNAL ERROR

                                     0000    73 ;

                                     0000    74 ; OWN STORAGE:

                                     0000    75 ;

                                     0000    76 ;	THIS MODULE HAS NO LOCAL STORAGE

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   3

01              RESULT PARSE INITIAL ENTRY                                                                                       (3)



                                     0000    78 	.SBTTL	RESULT PARSE INITIAL ENTRY

                                     0000    79 ;++

                                     0000    80 ; FUNCTIONAL DESCRIPTION:

                                     0000    81 ;

                                     0000    82 ;	THIS IS THE ENTRY POINT USED FOR ALL UTILITY SEVICE

                                     0000    83 ;	CALL BACK REQUEST FOR SERVICE.

                                     0000    84 ;

                                     0000    85 ; CALLING SEQUENCE:

                                     0000    86 ;

                                     0000    87 ;	CALL	DCL$UTILSERV

                                     0000    88 ;

                                     0000    89 ; INPUT PARAMETERS:

                                     0000    90 ;

                                     0000    91 ;	RQDESC(AP) IS THE ADDRESS OF THE REQUEST DESCRIPTOR

                                     0000    92 ;	RQWORK(AP) IS THE ADDRESS OF A WORK AREA FOR RESULT PARSE DATA

                                     0000    93 ;	RQBITS(AP) IS THE ADDRESS OF A BIT ARRAY FOR INPUT/OUTPUT 

                                     0000    94 ;		PARAMETER DEFINITION REQUESTS

                                     0000    95 ;

                                     0000    96 ; IMPLICIT INPUTS:

                                     0000    97 ;

                                     0000    98 ;	NONE

                                     0000    99 ;

                                     0000   100 ; OUTPUT PARAMETERS:

                                     0000   101 ;

                                     0000   102 ;	THE FUNCTION IS PURFORMED, OR AN ERROR IS RETURNED

                                     0000   103 ;

                                     0000   104 ; IMPLICIT OUTPUTS:

                                     0000   105 ;

                                     0000   106 ;	NONE

                                     0000   107 ;

                                     0000   108 ; COMPLETION CODES:

                                     0000   109 ;

                                     0000   110 ;	R0 = SUCCESS/FAILURE DEPENDING ON RESULT OF SEARCH

                                     0000   111 ;

                                     0000   112 ; SIDE EFFECTS:

                                     0000   113 ;

                                     0000   114 ;	NONE

                                     0000   115 ;

                                     0000   116 ;--

                                     0000   117 

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

                                     0000   119  

                               0FFC' 0000   120 	.ENTRY	DCL$UTLSERV,^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11>

                                     0002   121  

            59         04 AC     D0  0002   122 	MOVL	RQDESC(AP),R9		; ADDRESS OF THE REQUEST DESCRIPTOR

            69            05     91  0006   123 	CMPB	#CLI$K_CLISERV,CLI$B_RQTYPE(R9) ; THIS A REQUEST FOR CLI SERVICE

                          05     12  0009   124 	BNEQ	5$			; BR IF NO

                       01 A9     BE  000B   125 	CHMS	CLI$W_SERVCOD(R9)	; THIS MUST BE DONE IN SUPER MODE

                          62     11  000E   126 	BRB	RET0			; RETURN TO REQUESTOR

            5A         08 AC     D0  0010   127 5$:	MOVL	RQWORK(AP),R10		; GET ADDRESS OF WORK AREA

                                     0014   128 	IFNORD	#4,RPW_L_DCLWRK(R10),10$ ; CHECK IF WORK AREA IS ACCESSABLE

            5B         04 AA     D0  001B   129 	MOVL	RPW_L_DCLWRK(R10),R11	; IF YES-GET THE WORK AREA

                       03 A9     94  001F   130 10$:	CLRB	CLI$B_RQSTAT(R9)	; INITIAL RETURN STATUS FLAGS

                       08 A9     7C  0022   131 	CLRQ	CLI$Q_RQDESC(R9)	; AND ZERO THE PARAMETER DESCRIPTOR

            55            01     D0  0025   132 	MOVL	#1,R5			; SET DEFAULT RESULT PARSE INDEX

         73'AF            6C     FA  0028   133 	CALLG	(AP),B^RSLTPRS		; CALL FOR ERROR FRAME

            50   00030000 8F     C8  002C   134 	BISL	#<CLI$_ABKEYW&^X0FFF0000>,R0 ; INCLUDE SUBSYSTEM NUMBER

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   4

01              RESULT PARSE INITIAL ENTRY                                                                                       (3)



            3C            50     E8  0033   135 	BLBS	R0,RET0			; BR IF NO ERRORS

            50            1F     E4  0036   136 CALERR:	BBSC	#INTERROR,R0,10$	; BR IF THIS IS A INTERNAL ERROR

                          1B         0039       

                                     003A   137 	GETEXTDESC			; TAKE APART DESCRIPTOR(POINT OF ERROR)

                          53     DD  003D   138 	PUSHL	R3			; SAVE POINT OF ERROR

                          55     D6  003F   139 	INCL	R5			; ADVANCE TO NEXT

                                     0041   140 	GETEXTDESC			; TAKE THAT APART

            52            53     D0  0044   141 	MOVL	R3,R2			; COPY ENDING ADDRESS OF ERROR

                          08     BA  0047   142 	POPR	#^M<R3>			; GET POINT OF ERROR BACK

            52            53     C2  0049   143 	SUBL	R3,R2			; FIND LENGTH OF ERROR SEGMENT

                          53     D7  004C   144 	DECL	R3			; BACKUP TO PRECEEDING TERMAINATOR

            51            04     91  004E   145 	CMPB	#PTR_K_ENDLINE,R1	; WAS ERROR AT END-OF-LINE?

                          02     12  0051   146 	BNEQ	10$			; BR IF NO-ALL IS CORRECT

                          52     D6  0053   147 	INCL	R2			; ADJUST LENGTH FOR LAST LAST BYTE IN TOKEN

         08 A9            52     7D  0055   148 10$:	MOVQ	R2,CLI$Q_RQDESC(R9)	; SET IN DESCRIPTOR

                       04 A9     DD  0059   149 	PUSHL	CLI$A_ERRACT(R9)	; GET USER ERROR ROUTINE ADDRESS/OFFSET

                          14     13  005C   150 	BEQL	RET0			; BR IF NO ERROR ROUTINE

            69            11     E0  005E   151 	BBS	#CLI$V_ABSADR+<CLI$B_RQFLGS*8>,(R9),20$ ; BR IF ADR IS ABSOLUTE

                          03         0061       

            6E            59     C0  0062   152 	ADDL	R9,(SP)			; FIND REAL ADDRESS OF ROUTINE

            5B            6A     D0  0065   153 20$:	MOVL	(R10),R11		; SET USER CONTEXT WORD

                          5B     DD  0068   154 	PUSHL	R11			; AND PASS IN ARGUMENT LIST

                          50     DD  006A   155 	PUSHL	R0			; ERROR CODE IS SECOND ARGUMENT INPUT,

                          59     DD  006C   156 	PUSHL	R9			; REQUEST DESCRIPTOR IS FIRST ARGUMENT 

         0C BE            03     FB  006E   157 	CALLS	#3,@12(SP)		; GIVE THE USER CHANCE TO HANDLE ERROR

                                 04  0072   158 RET0:	RET				; GO BACK FROM CALL BACK

                                     0073   159  

                                     0073   160 ;

                                     0073   161 ; RESULT PARSE DISPATCHER

                                     0073   162 ;

                                     0073   163  

                               0000  0073   164 RSLTPRS:.WORD	0			; REGISTERS ALREADY SAVED!

                          04     EF  0075   165 	EXTZV	#CLI$V_PRITYP,#CLI$S_PRITYP,- ; EXTRACT THE PRIMARY REQUEST

            69            04         0077   166 		CLI$B_RQTYPE(R9),R1	; FROM THE REQUEST DESCRIPTOR

                          51         0079       

                          11     13  007A   167 	BEQL	10$			; BR IF REQUEST IS UTILITY TYPE

                          00     EF  007C   168 	EXTZV	#CLI$V_SUBTYP,#CLI$S_SUBTYP,- ; GET THE PARAMETER NUMBER

            69            04         007E   169 		CLI$B_RQTYPE(R9),R0	; OR SUB TYPE FOR RESULT

                          50         0080       

                                     0081   170 	CASE	R1,-			; DISPATCH ON REQUEST TYPE

                                     0081   171 		LIMIT=#CLI$K_INPSPEC,<-	;STARTING WTIH INPUT SPECIFICATION

                                     0081   172 		SETQUAL,-		; REQUEST FOR INPUT DEFINTION

                                     0081   173 		SETQUAL,-		; REQUEST FOR OUTPUT DEFINTION

                                     0081   174 		CMPPRM,-		; COMPLETED WITH PARAMETER SET

                                     0081   175 		DCL$VALCNV,-		; REQUEST FOR VALUE CONVERSION

                                     0081   176 		>

                                     008D   177 					; FALL THROUGH ON UTILITY OR ERROR

                                     008D   178 10$:	CASE	CLI$B_RQTYPE(R9),-	; DECODE UTILITY REQUEST

                                     008D   179 		LIMIT=#CLI$K_INITPRS,-	; LOW VALUE FOR CASE

                                     008D   180 		TYPE=B,<-		; TYPE OF CASE IS BYTE

                                     008D   181 		DCL$RPINIT,-		; INIT RESULT PARSE

                                     008D   182 		DCL$GETCMD,-		; GET COMMAND LINE DESCRIPTOR

                                     008D   183 		SETQUAL,-		; SET QUALIFER STATE

                                     008D   184 		DCL$GETOPT,-		; GET COMMAND OPTION

                                     008D   185 		>

                                     0099   186 	SETSTAT	INVREQTYP		; INVALID REQUEST TYPE

                                 04  009E   187 	RET				; DONE WITH THIS COMMAND

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   5

01              RESULT PARSE INITIAL ENTRY                                                                                       (4)



                                     009F   189 ;

                                     009F   190 ; REQUEST IS FOR TERMINATEION OF PARAMETER SET

                                     009F   191 ;

            56         40 AA40   DE  009F   192 CMPPRM:	MOVAL	RPW_AG_PRMLIM(R10)[R0],R6 ; SET ADDRESS OF PROPER LIMIT DESC

            7E            01     7D  00A4   193 	MOVQ	#1,-(SP)		; SET SUCCESS PLUS A ZERO LONG WORD

            58            5E     D0  00A7   194 	MOVL	SP,R8			; MARK POINT OF ERROR PARAMETERS

                                     00AA   195 					; NOTE: R5 WAS ZEROED IN INITIAL ENTRY

         08 AA            55     91  00AA   196 10$:	CMPB	R5,RPW_B_STRPARM(R10)	; IS INDEX AT END COMD QUALIFIER AREA?

                          06     12  00AE   197 	BNEQ	20$			; BR IF NO

            55         01 A6     9A  00B0   198 	MOVZBL	PLM_B_FSTDESC(R6),R5	; ELSE SET START OF PARAMETER AREA

                          60     13  00B4   199 	BEQL	80$			; BR IF PARAMETER IS NON-EXISTANT

         02 A6            55     91  00B6   200 20$:	CMPB	R5,PLM_B_LSTDESC(R6)	; IS INDEX OUT OF CURRENT PARAMETER?

                          1A     1A  00BA   201 	BGTRU	50$			; BR IF ALL DONE

                                     00BC   202 	GETEXTDESC			; GET AND EXTRACT DESCRITPTOR

                                     00BF   203 	ASSUME	PTR_K_PARMQUAL EQ 1	;

                                     00BF   204 	ASSUME	PTR_K_COMDQUAL EQ 0	;

            01            51     91  00BF   205 	CMPB	R1,#PTR_K_PARMQUAL	; ANY KIND OF QUALIFIER?

                          0E     1A  00C2   206 	BGTRU	40$			; IF NO BR AND CONTINUE SEARCH

         20 AA            55     E0  00C4   207 	BBS	R5,RPW_AG_BITS(R10),40$	; BR IF THE QUALIFIER HAS BEEN SEEN

                          09         00C8       

                                     00C9   208 	SETSTAT	UNPROQUAL

         19'AF            6C     FA  00CE   209 	CALLG	(AP),B^100$		; PROCESS ERROR CALL BACK

                          55     D6  00D2   210 40$:	INCL	R5			; ADD 1 TO BUFFER INDEX

                          D4     11  00D4   211 	BRB	10$			; KEEP LOOKING

            55            66     9A  00D6   212 50$:	MOVZBL	PLM_B_NXTDESC(R6),R5	; NEXT DESCRIPTOR TO PROCESS

                          3B     13  00D9   213 	BEQL	80$			; BR IF NO PARAMETER PRESENT

         02 A6            55     91  00DB   214 	CMPB	R5,PLM_B_LSTDESC(R6)	; ALL BEEN PROCESSED

                          09     1A  00DF   215 	BGTRU	55$			; BR IF YES

                                     00E1   216 	SETSTAT	UNPROPARM		; UNPROCESSED PARAMETERS

         19'AF            6C     FA  00E6   217 	CALLG	(AP),B^100$		; GENERATE AN ERROR

            55         02 A6     9A  00EA   218 55$:	MOVZBL	PLM_B_LSTDESC(R6),R5	; INDEX TO LAST DESCRIPTOR

                          55     96  00EE   219 	INCB	R5			; SET TO NEXT DESCRIPTOR INDEX

         03 A6            55     91  00F0   220 	CMPB	R5,PLM_B_TRMDESC(R6)	; IS THIS THE TERMINATOR DESCRIPTOR?

                          20     1E  00F4   221 	BGEQU	80$			; BR IF YES-NOTHING MORE TO DO!

            66            55     90  00F6   222 	MOVB	R5,PLM_B_NXTDESC(R6)	; SET THAT AS NEXT FOR NEXT CALLBACK

                                     00F9   223 60$:	GETPARM				; FIND THE NEXT PARAMETER

            0A            50     E9  00FC   224 	BLBC	R0,70$			; BR IF NONE REMAIN

            01            53     91  00FF   225 	CMPB	R3,#PTR_K_BLANK		; CHECK IF END OF PARAMETER LIST

                          05     13  0102   226 	BEQL	70$			; BR IF YES-SET NEW LIMIT TO HERE

            05            53     91  0104   227 	CMPB	R3,#PTR_K_COMMA		; HOW ABOUT LIST SEPARATOR?

                          F0     12  0107   228 	BNEQ	60$			; KEEP LOOKING

            55            01     83  0109   229 70$:	SUBB3	#1,R5,PLM_B_LSTDESC(R6)	; SET NEW LAST

                       02 A6         010C       

                                 88  010E   230 	BISB	#CLI$M_MOREINP,-	; SET FLAG THAT MORE INPUT EXISTS

         03 A9            04         010F   231 		CLI$B_RQSTAT(R9)	; INDICATE MORE DATA TO COME

                                 90  0112   232 	MOVB	PLM_B_NXTDESC(R6),-	; SET PREVIOUS NEXT AS

         01 A6            66         0113   233 		PLM_B_FSTDESC(R6)	; AS FIRST IN THIS PARAMETER

                          21     BA  0116   234 80$:	POPR	#^M<R0,R5>		; GET STATUS AND POINT OF ERROR(IF ONE)

                                 04  0118   235 90$:	RET

                                     0119   236  

                                     0119   237 ; THIS ROUTINE IS CALLED TO FACILITATE MULTIPLE ERROR

                                     0119   238 ; ACTION CALLS WHEN PROCESSING THE END OF A PARAMETER SET

                                     0119   239 ;

                               0820  0119   240 100$:	.WORD	^M<R5,R11>		; SAVE REGISTERS 5 AND 11

                          21     BB  011B   241 	PUSHR	#^M<R0,R5>		; SET ERROR AND PLACE IN THE LINE

            50            68     D0  011D   242 	MOVL	(R8),R0			; GET PRVIOUS ERROR

            55         04 A8     D0  0120   243 	MOVL	4(R8),R5		; GET PREVIOUS PLACE

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   6

01              RESULT PARSE INITIAL ENTRY                                                                                       (4)



            68            8E     7D  0124   244 	MOVQ	(SP)+,(R8)		; SET THE NEW AS NEXT TO DO

            EE            50     E8  0127   245 	BLBS	R0,90$			; BR IF FIRST TIME THROUGH

                          FF09   31  012A   246 	BRW	CALERR			; GO CALL THE UTILITY WITH ERROR

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   7

01              RESULT PARSE INITIAL ENTRY                                                                                       (5)



                                     012D   248 ;

                                     012D   249 ; REQUEST IS EITHER INPUT OR OUTPUT PARAMETER

                                     012D   250 ;

                                     012D   251  

            58         0C AC     D0  012D   252 SETQUAL:MOVL	RQBITS(AP),R8		; GET USERS BIT ARRAY

                     0217'CF     DF  0131   253 	PUSHAL	W^SCANQUAL		; SET INITIAL ADDRESS FOR QUALIFER SCAN

                          9E     16  0135   254 10$:	JSB	@(SP)+			; CO-ROUTINE LINK TO SCAN QUALIFIERS

            08            50     E9  0137   255 	BLBC	R0,20$			; BR WHEN ALL ARE SCANNED

                       03 A7     94  013A   256 	CLRB	CLI$B_QDSTAT(R7)	; RESET ALL STATUS FLAGS

                       04 A7     7C  013D   257 	CLRQ	CLI$Q_QDVALDESC(R7)	; SET VALUE DESCRIPTOR TO ZERO

                          F3     11  0140   258 	BRB	10$			; TRY FOR NEXT

                                     0142   259 ;

                                     0142   260 ; DEFAULT AND COMMAND QUALIFIERS ALL DONE

                                     0142   261 ;

            02            69     91  0142   262 20$:	CMPB	CLI$B_RQTYPE(R9),#CLI$K_GETQUAL ; IS THIS REQUEST FOR QUALIFER 

                          0A     12  0145   263 	BNEQ	25$			; DEFINTION ONLY- BR IF NO

                                 90  0147   264 	MOVB	WRK_B_VERBTYP(R11),-	; SET COMMAND GENERIC VERB TYPE INTO

         03 A9         C0 AB         0148   265 		CLI$B_RQSTAT(R9)	; REQUEST DESCRIPTOR STATUS BYTE

                                     014C   266 	PROCMDQUAL			; FIND COMMAND QUALIFIER

                          24     11  014F   267 	BRB	40$			; TAKE ACTION

                          00E7   30  0151   268 25$:	BSBW	PROCIO			; PROCESS INPUT/OUTPUT DESCRIPTION

            52         01 A9     9A  0154   269 	MOVZBL	CLI$B_BITNUM(R9),R2	; GET THE PARAMETER PRESENT FLAG BIT

                                 E0  0158   270 	BBS	#CLI$V_PARMPRS,-	; BR IF THE PARAMETER IS PRESENT

         03 A9            00         0159   271 		CLI$B_RQSTAT(R9),30$	;

                          14         015C       

                                     015D   272 	CLRBIT	R2,(R8)			; INDICATE PARAMETER ABSENT

                                     0161   273 	SETSTAT	REQPRMABS		; SET REQUIRED PARAMETER ABSENT

                                 E0  0166   274 	BBS	#CLI$V_PARMREQ,-	; BR IF PARAMETER IS REQUIRED

         02 A9            00         0167   275 		CLI$B_RQFLGS(R9),140$	; 

                          75         016A       

            51         14 A9     D0  016B   276 	MOVL	CLI$A_ABSACT(R9),R1	; GET PARAMETER ABSENT ACTION ADDRESS

                          65     11  016F   277 	BRB	120$			; JOIN COMMON ROUTINE

                                     0171   278 30$:	SETBIT	R2,(R8)			; SET PARAMETER PRESENT FLAG

                     0217'CF     9F  0175   279 40$:	PUSHAB	W^SCANQUAL		; SET INITIAL COROUTINE ADDRESS

                          6E     DD  0179   280 	PUSHL	(SP)			; COPY COROUTINE INITIAL ADDRESS

                          6E     DD  017B   281 	PUSHL	(SP)			; THREE MORE TIMES FOR

                          6E     DD  017D   282 	PUSHL	(SP)			; SUBSEQUENT SCANS OF QUALIFIERS

                          9E     16  017F   283 45$:	JSB	@(SP)+			; GET NEXT QUALIFIER DESCRIPTOR

            1A            50     E9  0181   284 	BLBC	R0,50$			; BR WHEN SCAN IS DONE

         03 A7            01     E0  0184   285 	BBS	#CLI$V_QUALEXP,CLI$B_QDSTAT(R7),45$ ; LOOP IF FOUND EXPLICITLY

                          F6         0188       

            51         01 A7     9A  0189   286 	MOVZBL	CLI$B_QDCODE(R7),R1	; GET THE INDEX INTO THE TABLE

                                     018D   287 	GETPARMQUAL			; FIND THE ASSOCIATED STRUCTURE

         03 A2            07     E1  0190   288 	BBC	#QUA_V_DEFTRUE,QUA_W_FLAGS(R2),45$ ; BR IF NOT DEFAULTED TRUE

                          EA         0194       

         03 A7            01     88  0195   289 	BISB	#CLI$M_QUALTRU,CLI$B_QDSTAT(R7) ; MARK QUALIFIER TRUE

                          03C8   30  0199   290 	BSBW	DCL$SETDEFVAL		; SET UP THE DEFAULT VALUE IF THERE

                          E1     11  019C   291 	BRB	45$			; LOOK AT NEXT

                          9E     16  019E   292 50$:	JSB	@(SP)+			; GET NEXT DESCRIPTOR

            0A            50     E9  01A0   293 	BLBC	R0,60$			; BR WHEN NO MORE

         03 A7            00     E0  01A3   294 	BBS	#CLI$V_QUALTRU,CLI$B_QDSTAT(R7),50$ ; BR IF TRUE

                          F6         01A7       

                          02CD   30  01A8   295 	BSBW	DCL$CLRSETLST		; CLEAR THE BITS

                          F1     11  01AB   296 	BRB	50$			; LOOK FOR MORE FALSSE QUALIFIERS

                          9E     16  01AD   297 60$:	JSB	@(SP)+			; GET NEXT QUALIFIER DESCRIPTOR

            13            50     E9  01AF   298 	BLBC	R0,100$			; BR WHEN NO MORE

         03 A7            00     E1  01B2   299 	BBC	#CLI$V_QUALTRU,CLI$B_QDSTAT(R7),60$ ; BR IF FALSE

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   8

01              RESULT PARSE INITIAL ENTRY                                                                                       (5)



                          F6         01B6       

                       F3 AF     9F  01B7   300 	PUSHAB	B^60$			; SUBROUTINE RETURN ADDRESS

         03 A7            01     E1  01BA   301 	BBC	#CLI$V_QUALEXP,CLI$B_QDSTAT(R7),70$ ; BR IF NOT EXPLICITLY FOUND

                          03         01BE       

                          0293   31  01BF   302 	BRW	DCL$TSTSETLST		; TEST THEN SET SET LIST, ETC.

                          02AA   31  01C2   303 70$:	BRW	DCL$SETSETLST		; ONLY SET THE SET LIST FOR DEFAULTS

                          9E     16  01C5   304 100$:	JSB	@(SP)+			; GET NEXT QUALIFIER DESCRIPTOR

            08            50     E9  01C7   305 	BLBC	R0,110$			; BR WHEN NO MORE QUALIFIERS

                                 E0  01CA   306 	BBS	#CLI$V_ALLOCCUR+<CLI$B_QDFLGS*8>,- ; IF ALL OCCURANCES IS SET

            67            10         01CB   307 		(R7),100$		; CALL BACK ALREADY BEEN DONE

                          F7         01CD       

                          11     10  01CE   308 	BSBB	QUALACT			; TAKE QUALIFIER ACTION

                          F3     11  01D0   309 	BRB	100$			; TRY FOR NEXT

            51         10 A9     D0  01D2   310 110$:	MOVL	CLI$A_PRSACT(R9),R1	; PRESENT ACTION ADDRESS OFFSET

                          05     13  01D6   311 120$:	BEQL	130$			; BR IF NO PARAMETER ACTION

            50            59     D0  01D8   312 	MOVL	R9,R0			; SET ADDRESS OF ARGUMENT TO CALL WITH

                          20     10  01DB   313 	BSBB	CALLBAK			; ISSUE CALL BACK

                                     01DD   314 130$:	SETSTAT	SUCCESS			; SET GOOD RETURN

                                 04  01E0   315 140$:	RET				; BACK TO DISPATCHER

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page   9

01              RESULT PARSE INITIAL ENTRY                                                                                       (6)



                                     01E1   317 ;

                                     01E1   318 ; QUALACT - QUALIFIER ACTION CALLBACK SUBROUTINE

                                     01E1   319 ;

                                     01E1   320 	.ENABL	LSB

                                     01E1   321  

         02 A7            02     E1  01E1   322 QUALACT:BBC	#CLI$V_QDEXPA,CLI$B_QDFLGS(R7),5$ ; BR IF ACTION ALWAYS DESIRED

                          05         01E5       

         03 A7            01     E1  01E6   323 	BBC	#CLI$V_QUALEXP,CLI$B_QDSTAT(R7),40$ ; IF NOT EXPLICIT

                          2B         01EA       

            51         10 A7     D0  01EB   324 5$:	MOVL	CLI$A_FLSACT(R7),R1	; ASSUME QUALIFIER IS FALSE

                                 E1  01EF   325 	BBC	#CLI$V_QUALTRU,-	; BR IF THAT ASSUMPTION

         03 A7            00         01F0   326 		CLI$B_QDSTAT(R7),10$	; WAS CORRECT

                          04         01F3       

            51         0C A7     D0  01F4   327 	MOVL	CLI$A_TRUACT(R7),R1	; GET TRUE ACTION ADDRESS OFFSET

                          1C     13  01F8   328 10$:	BEQL	40$			; BR IF NO ACTION ROUTINE

            50            57     D0  01FA   329 	MOVL	R7,R0			; ARGUMENT FOR CALL BACK

                                     01FD   330 					; JOIN CALL BACK

                                     01FD   331  

            69            11     E0  01FD   332 CALLBAK:BBS	#CLI$V_ABSADR+<CLI$B_RQFLGS*8>,(R9),20$ ; BR IF ADR IS ABSOLUTE

                          03         0200       

            51            50     C0  0201   333 	ADDL	R0,R1			; RELOCATE ADDRESS

            5B            6A     D0  0204   334 20$:	MOVL	(R10),R11		; SET USER CONTEXT WORD

                          5B     DD  0207   335 	PUSHL	R11			; PASS USER CONTEXT WORD

                     FDF3 CF     9F  0209   336 	PUSHAB	DCL$UTLSERV		; GIVE THE ACTION ROUTINE CALL BACK ADR

                          60     9F  020D   337 	PUSHAB	(R0)			; PASS CALLERS STRUCTURE AS ARGUMENT

            61            03     FB  020F   338 	CALLS	#3,(R1)			; CALL THE ACTION ROUTINE

            5B         04 AA     D0  0212   339 	MOVL	RPW_L_DCLWRK(R10),R11	; RESET THE COMMAND WORK ADDRESS

                                 05  0216   340 40$:	RSB				; RETURN TO MY CALLER

                                     0217   341  

                                     0217   342 	.DSABL	LSB

                                     0217   343 ;

                                     0217   344 ; COOROUTINE TO SCAN UTILITY QUALIFIER DESCRIPTORS

                                     0217   345 ;

                                     0217   346 SCANQUAL:				; SCAN QUALIFIERS

            57         18 A9     D0  0217   347 	MOVL	CLI$A_QUALST(R9),R7	; GET OFFSET TO QUALIFIER LIST

                          18     13  021B   348 	BEQL	20$			; BR IF NONE AT ALL

            69            11     E0  021D   349 	BBS	#CLI$V_ABSADR+<CLI$B_RQFLGS*8>,(R9),10$ ; BR IF ADR IS ABSOLUTE

                          03         0220       

            57            59     C0  0221   350 	ADDL	R9,R7			; ADJUST ADDRESS TO ABSOLUTE

                                     0224   351 10$:	SETSTAT	NORMAL			; ASSUME MORE QUALIFIERS TO PROCESS

                          67     95  0227   352 	TSTB	(R7)			; END OF LIST

                          0A     13  0229   353 	BEQL	20$			; BR IF END OF LIST

                          9E     16  022B   354 	JSB	@(SP)+			; RETURN WITH A DESCRIPTOR

            50            67     9A  022D   355 	MOVZBL	CLI$B_QDBLKSIZ(R7),R0	; GET SIZE OF DESCRIPTOR

            57            50     C0  0230   356 	ADDL	R0,R7			; ADVANCE TO NEXT BLOCK

                          EF     11  0233   357 	BRB	10$			; CK IF MORE

                                     0235   358 20$:	SETSTAT	INVQUAL			; RETURN AN ERROR

                                 05  023A   359 RSB0:	RSB				; RETURN TO CALLER

                                     023B   360  

                                     023B   361 ;

                                     023B   362 ; RETURN HERE AFTER PROCESSING THE REQUEST

                                     023B   363 ; IF CLI$V_PARMPRS IS SET,THAN THE PARAMETER WAS FOUND

                                     023B   364 ;

                                     023B   365  

                          00     EF  023B   366 PROCIO:	EXTZV	#CLI$V_SUBTYP,#CLI$S_SUBTYP,- ; AND THE SUB TYPE VIELD

            69            04         023D   367 		CLI$B_RQTYPE(R9),R0	; INTO R0

                          50         023F       

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  10

01              RESULT PARSE INITIAL ENTRY                                                                                       (6)



                          04     ED  0240   368 	CMPZV	#CLI$V_PRITYP,#CLI$S_PRITYP,-; CHECK THE PRIMARY REQUEST TYPE TO

            69            04         0242   369 		CLI$B_RQTYPE(R9),#CLI$K_OUTSPEC ; SEE IF REQUEST IS FOR OUTPUT

                          02         0244       

                          03     13  0245   370 	BEQL	OUTPUT			; BR IF REQUEST IS FOR OUTPUT

                          0103   31  0247   371 	BRW	INPUT			; ELSE PROCESS INPUT

                                     024A   372 OUTPUT:					; REQUEST ID FOR OUTPUT SPEC

            51         F4 AB     D0  024A   373 	MOVL	WRK_L_PAROUT(R11),R1	; SET POINTER TO OUTPUT PARSE TABLE

                          EA     13  024E   374 	BEQL	RSB0			; BR IF NO TABLE

            81            50     91  0250   375 	CMPB	R0,(R1)+		; REQUEST IN RANGE?

                          E5     1E  0253   376 	BGEQU	RSB0			; BR IF NO

            51            6140   9A  0255   377 	MOVZBL	(R1)[R0],R1		; GET OUTPUT PARSE INDICATOR

            56         40 AA     DE  0259   378 	MOVAL	RPW_AG_PRMLIM(R10),R6	; ASSUME OUTPUT IS FIRST PARAMETER

         FE 8F            51     91  025D   379 	CMPB	R1,#OPI_K_SCNPRM	; IS SECOND PARAMETER THE OUTPUT

                          03     1F  0261   380 	BLSSU	10$			; BR IF OUTPUT IS DEFINED BY QUALIFIER

                          00E1   31  0263   381 	BRW	95$			; ELSE IT IS A FORMAL PARAMETER

                                     0266   382 10$:	GETQUALDESC			; FIND DESCRIPTOR FOR DCL CMD QUALIFER

            50            08     D0  0269   383 	MOVL	#QUA_V_BATDEF,R0	; ASSUME RUNNING IN BATCH MODE

                                     026C   384 	IFBATCH	20$			; BR IF IN BATCH MODE

                                     0274   385 	ASSUME	QUA_V_INTDEF EQ QUA_V_BATDEF+1 ; CHECK FOR ASSUMED RELATIONSHIP

                          50     D6  0274   386 	INCL	R0			; CHANGE TO INTERACTIVE BIT

         03 A2            50     E1  0276   387 20$:	BBC	R0,QUA_W_FLAGS(R2),30$ ; BR IF PARAMETER ABSENT BY DEFAULT

                          04         027A       

                                 88  027B   388 	BISB	#CLI$M_PARMPRS!CLI$M_PARMDEF,-; SET PARAMETER PRESENT & DEFAULT

         03 A9            09         027C   389 		CLI$B_RQSTAT(R9) 	; IN REQUEST STATUS BYTE

                          7E     D4  027F   390 30$:	CLRL	-(SP)			; MAKE SPACE FOR PARAMETER LIMIT DESC

                          7E     7C  0281   391 	CLRQ	-(SP)			; SET VALUES FOR QUALIFER TO ZERO

                     0000'CF     9F  0283   392 	PUSHAB	W^DCL$FNDCMDQUAL	; SET COROUTINE ADDRESS

                          9E     16  0287   393 40$:	JSB	@(SP)+			; COROUTINE LINK

            14            50     E9  0289   394 	BLBC	R0,50$			; BR IF NO MORE COMMADN QUALIFIERS

            51            64     91  028C   395 	CMPB	(R4),R1			; IS THIS THE QUALIFIER FOR THIS OUTPUT?

                          F6     12  028F   396 	BNEQ	40$			; BR IF NO

         04 AE            54     7D  0291   397 	MOVQ	R4,4(SP)		; SAVE DESCRIPTOR ADDRESS AND INDEX

         0C AE            56     D0  0295   398 	MOVL	R6,12(SP)		; SAVE PARAMETER LIMIT DESCRIPTOR

                                     0299   399 	SETBIT	R5,RPW_AG_BITS(R10)	; INDICATE THAT QUALIFIER WAS USED

                          E7     11  029E   400 	BRB	40$			; LOOK FOR ANOTHER OCCURANCE

            54            8E     7D  02A0   401 50$:	MOVQ	(SP)+,R4		; RETREIVE PARAMETERS FOR LAST OCCURANCE

            56            8E     D0  02A3   402 	MOVL	(SP)+,R6		; RESET PARAMETER LIMIT DESCRIPTOR

                          41     13  02A6   403 	BEQL	80$			; BR IF NOT IN COMMAND EXPLICITLY

                                 8A  02A8   404 	BICB	#CLI$M_PARMPRS!CLI$M_PARMDEF,-; CLR PARAMETER PRESENT & DEFAULT

         03 A9            09         02A9   405 		CLI$B_RQSTAT(R9) 	; IN REQUEST STATUS BYTE

            64            14     E0  02AC   406 	BBS	#PTR_V_NEGATE+PTR_V_FLAGS,(R4),80$ ; BR IF ASSUMED CORRECTLY

                          39         02AF       

         03 A9            01     88  02B0   407 	BISB	#CLI$M_PARMPRS,CLI$B_RQSTAT(R9) ; SET EXPLICITLY PRESENT

                          84     D5  02B4   408 	TSTL	(R4)+			; ADVANCE POINTER TO NEXT DESCRIPTOR

                                     02B6   409 	EXTRSLDESC			; TAKE DESCRIPTOR APART

            02            51     91  02B9   410 	CMPB	R1,#PTR_K_QUALVALU	; IS THIS A QUALIFIER VALUE?

                          27     13  02BC   411 	BEQL	70$			; BR IF FILENAME HERE AS QUALIFIER VALUE

                          55     D7  02BE   412 60$:	DECL	R5			; BACKUP IN RESULT PARSE DECSRIPTOR

         01 A6            55     91  02C0   413 	CMPB	R5,PLM_B_FSTDESC(R6)	; IS THIS IN THE CURRENT PARAMETER

                          23     1F  02C4   414 	BLSSU	80$			; BR IF NO - NO MORE TO CHECK

                                     02C6   415 	GETEXTDESC			; TAKE THAT DESCRIPTOR APART

            03            51     91  02C9   416 	CMPB	R1,#PTR_K_PARAMETR	; WAS THIS A PARAMETER?

                          F0     12  02CC   417 	BNEQ	60$			; BR IF NO

            52         5D 8F     3A  02CE   418 	LOCC	#^A/]/,R2,(R3)		; IS THERE A DIRECTORY SPEC HERE

                          63         02D2       

                          09     12  02D3   419 	BNEQ	65$			; BR IF YES

            52            3E     3A  02D5   420 	LOCC	#^A/>/,R2,(R3)		; CHECK FOR ALTERNATE SYNTAX

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  11

01              RESULT PARSE INITIAL ENTRY                                                                                       (6)



                          63         02D8       

                          03     12  02D9   421 	BNEQ	65$			; BR IF THAT TYPE IS HERE

            50            52     7D  02DB   422 	MOVQ	R2,R0			; SET LIMITS FOR SEARCH FOR TYPE

            50            2E     3A  02DE   423 65$:	LOCC	#^A/./,R0,(R1)		; TRY TO FIND TYPE FIELD

                          61         02E1       

            52            50     C2  02E2   424 	SUBL	R0,R2			; ADJUST LENGTH FOR FILE TYPE

         08 A9            52     7D  02E5   425 70$:	MOVQ	R2,CLI$Q_RQDESC(R9)	; SET RETURNED VALUE FOR NAME

         03 A9            00     E1  02E9   426 80$:	BBC	#CLI$V_PARMPRS,CLI$B_RQSTAT(R9),90$ ; BR IF PARAMETER NO HERE

                          58         02ED       

                                     02EE   427 	PROCMDQUAL			; PROCESS COMMAND QUALIFIERS

         02 A9            02     E0  02F1   428 	BBS	#CLI$V_EXPNAM,CLI$B_RQFLGS(R9),90$ ; BR IF EXPLICIT NAMES ONLY

                          50         02F5       

                       08 A9     B5  02F6   429 	TSTW	CLI$W_RQSIZE(R9)	; NAME FOUND FOR THIS PARAMETER?

                          4B     12  02F9   430 	BNEQ	90$			; BR IF YES

            56         40 AA     DE  02FB   431 	MOVAL	RPW_AG_PRMLIM(R10),R6	; POINT AT FIRST LIMIT DESCRIPTOR

            55         01 A6     9A  02FF   432 	MOVZBL	PLM_B_FSTDESC(R6),R5	; INDEX TO FIRST PARAMETER

                                     0303   433 	SETDESCADR			; SET ADDRESS OF DESCRIPTOR IN R4

                                     0306   434 	EXTRSLDESC			; TAKE THE DESCRIPTOR A PART

            52         5D 8F     3A  0309   435 	LOCC	#^A/]/,R2,(R3)		; LOOK FOR A DIRECTORY SPEC

                          63         030D       

                          1D     12  030E   436 	BNEQ	84$			; BR IF FOUND A DIRECTORY

            52            3E     3A  0310   437 	LOCC	#^A/>/,R2,(R3)		; IF NO LOOK FOR THE OTHER DIRECTORY END

                          63         0313       

                          17     12  0314   438 	BNEQ	84$			; BR IF THAT DIRECTORY WAS FOUND

            52            3A     3A  0316   439 	LOCC	#^A/:/,R2,(R3)		; NOW LOOK FOR DEVICE NAME

                          63         0319       

                          19     13  031A   440 	BEQL	86$			; BR IF NO DEVICE NAME HERE

                          7E     7C  031C   441 	CLRQ	-(SP)			; MAKE A QUADWORD BUFFER

            6E            50     7D  031E   442 82$:	MOVQ	R0,(SP)			; SAVE LAST COLON WAS FOUND

                          51     D6  0321   443 	INCL	R1			; ADVANCE ADDRESS OVER THAT COLON

                          50     D7  0323   444 	DECL	R0			; SUBTRACT 1 FROM COUNT FOR THE COLON

            50            3A     3A  0325   445 	LOCC	#^A/:/,R0,(R1)		; LOOK FOR MORE COLONS

                          61         0328       

                          F3     12  0329   446 	BNEQ	82$			; BR IF MORE COLONS HERE

                          03     BA  032B   447 	POPR	#^M<R0,R1>		; GET ADDRESS OF LENGTH FOR LAST COLON

            52         FF A0     9E  032D   448 84$:	MOVAB	-1(R0),R2		; SET LENGTH MINUS THE TERMINATOR

            53         01 A1     9E  0331   449 	MOVAB	1(R1),R3		; AND ADDRESS BEYOND THE TERMINATOR

            52            2E     3A  0335   450 86$:	LOCC	#^A/./,R2,(R3)		; LOOK FOR A TYPE FIELD

                          63         0338       

                          04     12  0339   451 	BNEQ	88$			; BR IF TYPE FIELD PRESENT

            52            3B     3A  033B   452 	LOCC	#^A/;/,R2,(R3)		; NOW LOOK FOR EXPLICIT VERSION

                          63         033E       

            52            50     C2  033F   453 88$:	SUBL	R0,R2			; ALSO REMOVE THAT IF FOUND

         08 A9            52     7D  0342   454 	MOVQ	R2,CLI$Q_RQDESC(R9)	; SET SIZE AND ADDRESS OF DESCRIPTOR

                                 05  0346   455 90$:	RSB				; RETURN TO DISPATCHER

                                     0347   456 ;

                                     0347   457 ; COME HERE WHEN OUTPUT IS DEFINED BY A PARAMETER

                                     0347   458 ;

                          09     1A  0347   459 95$:	BGTRU	SETPRM			; BR IF OUTPUT IS FIRST PARAMETER

                          86     D5  0349   460 	TSTL	(R6)+			; ADVANCE PARAMETER POINTER

                          05     11  034B   461 	BRB	SETPRM			; OUTPUT IS SECOND PARAMETER

                                     034D   462 ;

                                     034D   463 ; PROCESS REQUEST FOR AN INPUT SPEC DEFINITON

                                     034D   464 ;

            56         40 AA40   DE  034D   465 INPUT:	MOVAL	RPW_AG_PRMLIM(R10)[R0],R6 ; SET ADDRESS OF LIMIT DESCRIPTOR

                                     0352   466 SETPRM:	EXTNXTDESC			; TAKE NEXT DESCRIPTOR APART

            42            50     E9  0355   467 	BLBC	R0,90$			; ALL DONE

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  12

01              RESULT PARSE INITIAL ENTRY                                                                                       (6)



         08 A9            52     7D  0358   468 	MOVQ	R2,CLI$Q_RQDESC(R9)	; SAVE ADDRESS OF PARAMETER

                                 88  035C   469 	BISB	#CLI$M_PARMPRS,-	; SET FLAG THAT PARAMETER IS PRESENT

         03 A9            01         035D   470 		CLI$B_RQSTAT(R9)	; IN USERS REQUEST STATUS BYTE

                          56     DD  0360   471 	PUSHL	R6			; SAVE PARAMETER DESCRIPTOR POINTER

                                     0362   472 	PROCMDQUAL			; TAKE CARE OF COMMAND QUALIFIERS

                          56   8ED0  0365   473 	POPL	R6			; RESTORE PARM LIMIT DESCRITPTOR POINTER

                                     0368   474 10$:	EXTNXTDESC			; TAKE THE NEXT DESCRIPTOR APART

            2C            50     E9  036B   475 	BLBC	R0,90$			; BR IF NO MORE

            01            51     91  036E   476 	CMPB	R1,#PTR_K_PARMQUAL	; IS THIS A PARAMETER QUALIFIER

                          16     12  0371   477 	BNEQ	30$			; BR IF NO

                     FEA0 CF     9F  0373   478 	PUSHAB	SCANQUAL		; SET INITIAL COROUTINE ADDRESS

                          9E     16  0377   479 20$:	JSB	@(SP)+			; GET NEXT DESCRIPTOR

            1F            50     E9  0379   480 	BLBC	R0,RET1			; NO FIND IS AN ERROR

         01 A7            64     91  037C   481 	CMPB	(R4),CLI$B_QDCODE(R7)	; IS THIS THE QUALIFIER DESCRIPTOR?

                          F5     12  0380   482 	BNEQ	20$			; IF NO LOOK AT NEXT

                          8E     D5  0382   483 	TSTL	(SP)+			; CLEAR COROUTINE ADDRESS

                          0181   30  0384   484 	BSBW	DCL$HANDLQUAL		; SET UP QUALIFER RESULT PARSE DATA

                          DF     11  0387   485 	BRB	10$			; CHECK FOR MORE

            03            51     91  0389   486 30$:	CMPB	R1,#PTR_K_PARAMETR	; THE NEXT PARAMETER

                          DA     12  038C   487 	BNEQ	10$			; BR IF NO

                          66     97  038E   488 	DECB	PLM_B_NXTDESC(R6)	; BACK UP INDEX FOR NEXT RESULT PARSE

                                 91  0390   489 	CMPB	PLM_B_NXTDESC(R6),-	; CHECK IF NEXT IS LEQ LAST,

         02 A6            66         0391   490 		PLM_B_LSTDESC(R6)	; IN THE CURRENT PARAMETER

                          04     1A  0394   491 	BGTRU	90$			; IF GTRU, NO MORE ELEMEMTS IN THIS SET

                                 88  0396   492 	BISB	#CLI$M_CONCATINP,-	; SET FLAG TO SAY CONCATONATED INPUT

         03 A9            02         0397   493 		CLI$B_RQSTAT(R9)	; LIST IS NO EXHAUSTED.

                                 05  039A   494 90$:	RSB				; BACK TO I/O PROCESSOR

                                 04  039B   495 RET1:	RET

                                     039C   496  

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  13

01              VALUE CONVERSION ROUTINES                                                                                        (7)



                                     039C   498 	.SBTTL	VALUE CONVERSION ROUTINES

                                     039C   499 ;++

                                     039C   500 ; FUNCTIONAL DESCRIPTION:

                                     039C   501 ;

                                     039C   502 ;	THIS ROUTINE IS CALLED WHEN THE UTILITY HAS REQUESTED

                                     039C   503 ;	A QUALIFIER VALUE CONVERSION.

                                     039C   504 ;

                                     039C   505 ; CALLING SEQUENCE:

                                     039C   506 ;

                                     039C   507 ;	ENTERED VIA A CASE FOLLOWING A CALL

                                     039C   508 ;

                                     039C   509 ; INPUT PARAMETERS:

                                     039C   510 ;

                                     039C   511 ;	NONE

                                     039C   512 ;

                                     039C   513 ; IMPLICIT INPUTS:

                                     039C   514 ;

                                     039C   515 ;	R9 = ADDRESS OF REQUEST DESCRIPTOR FOR VALUE CONVERSION

                                     039C   516 ;	R10 = ADDRESS OF IMAGE LOCAL WORK AREA

                                     039C   517 ;	R11 = ADDRESS OF PASS 1 PARSE WORK AREA

                                     039C   518 ;

                                     039C   519 ; OUTPUT PARAMETERS:

                                     039C   520 ;

                                     039C   521 ;	VALUE IS CONVERTED AND STRING DESCRIPTOR IN QUALFIER DESCRIPTOR

                                     039C   522 ;	IS UPDATED TO DESCRIBE THE REMAINING VALUE-IF ANY.

                                     039C   523 ;

                                     039C   524 ; IMPLICIT OUTPUTS:

                                     039C   525 ;

                                     039C   526 ;	NONE

                                     039C   527 ;

                                     039C   528 ; COMPLETION CODES:

                                     039C   529 ;

                                     039C   530 ;	DCL$NORMAL FOR SUCCESSFUL CONVERSION

                                     039C   531 ;	DCL$VALCNVERR FOR CONVERSION ERROR

                                     039C   532 ;	DCL$NOVALUE IF VALUE NOT PRESENT

                                     039C   533 ;

                                     039C   534 ; SIDE EFFECTS:

                                     039C   535 ;

                                     039C   536 ;	NONE

                                     039C   537 ;

                                     039C   538 ;--

                                     039C   539  

                                     039C   540 DCL$VALCNV:				; REQUEST FOR VALUE CONVERSION

            57         0C AC     D0  039C   541 	MOVL	12(AP),R7		; GET QUALIFIER DESCRIPTOR

                                     03A0   542 	SETINTR	NOVALUE			; ASSUME NO VALUE PRESENT

            52         04 A7     7D  03A7   543 	MOVQ	CLI$Q_QDVALDESC(R7),R2	; COPY QUALIFIER VALUE STRING DESCRITOR

                          59     13  03AB   544 	BEQL	40$			; BR IF NO VALUE

                          7E     7C  03AD   545 	CLRQ	-(SP)			; ASSUME NOT CONVERTING DEFAULT VALUE

            55            53     D0  03AF   546 	MOVL	R3,R5			; COPY ADDRESS OF STRING

            54       FD38 CB     DE  03B2   547 	MOVAL	WRK_AB_BUFFER(R11),R4	; BASE ADDRESS OF BUFFER

            55            54     C2  03B7   548 	SUBL	R4,R5			; FIND BYTE OFFSET INTO BUFFER

            54       FBB4 CB     DE  03BA   549 	MOVAL	WRK_AG_RESULT(R11),R4	; RESULT PARSE BUFFER

            51         FC A4     DE  03BF   550 	MOVAL	-4(R4),R1		; SET INDEX BASE INTO RESULT BUFFER

                          08     ED  03C3   551 10$:	CMPZV	#PTR_V_OFFSET,#PTR_S_OFFSET,-

            64            0C         03C5   552 		(R4),R5			; IS THIS THE DESCRIPTOR?

                          55         03C7       

                          0C     12  03C8   553 	BNEQ	20$			; BR IF FOUND THE DESCRIPTOR

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  14

01              VALUE CONVERSION ROUTINES                                                                                        (7)



            54            51     C3  03CA   554 	SUBL3	R1,R4,R5		; FIND BYTE OFFSET TO DESCRIPTOR

                          55         03CD       

            55            04     C6  03CE   555 	DIVL	#4,R5			; NOW LONGWORD INDEX INTO RESULT BUFFER

                                     03D1   556 	EXTRSLDESC			; TAKE RESULT DESCRIPTOR APART

                          22     11  03D4   557 	BRB	30$			; PROCESS THE REQUEST WITH USER VALUE

                          84     D5  03D6   558 20$:	TSTL	(R4)+			; ADVANCE TO NEXT DESCRIPTOR

       FD34 CB            54     D1  03D8   559 	CMPL	R4,WRK_L_RSLNXT(R11)	; IS THIS THE LAST DESCRIPTOR?

                          E4     1F  03DD   560 	BLSSU	10$			; BR IF NO

                                     03DF   561 	SETBIT	#31,(SP)		; SET FLAG FOR INTERNAL VALUE

            52            2C     3A  03E3   562 	LOCC	#^A/,/,R2,(R3)		; CHECK FOR MULTIPLE VALUES

                          63         03E6       

                          0F     13  03E7   563 	BEQL	30$			; BR IF LAST VALUE VALUES

            52            50     C2  03E9   564 	SUBL	R0,R2			; FIND LENGTH OF CURRENT VALUE

            50            01     A3  03EC   565 	SUBW3	#1,R0,(SP)		; SET REMAINING LENTH

                          6E         03EF       

            53            52     C1  03F0   566 	ADDL3	R2,R3,4(SP)		; FIND ADDRESS OF COMMA

                       04 AE         03F3       

                       04 AE     D6  03F5   567 	INCL	4(SP)			; PLUS 1 TO START OF REAL VALUE

                                     03F8   568 30$:	CASE	CLI$B_RQTYPE(R9),-	; DECODE REQUEST TYPE

                                     03F8   569 		TYPE=B,-		; CASE ON A BYTE

                                     03F8   570 		LIMIT=#CLI$K_NUMERVAL,<-; LOWEST REQUEST FOR VALUE LEGAL

                                     03F8   571 		50$,-			; NUMERIC CONVERSION

                                     03F8   572 		100$,-			; ASCII VALUE

                                     03F8   573 		>

                                     0401   574 	SETSTAT	INVREQTYP		; INCORRECT VALUE

                                 04  0406   575 40$:	RET				; EXIT CONVERSION

                          FBF6'  30  0407   576 50$:	BSBW	DCL$CNVNUMDEC		; CONVERT NUMERIC-DEFAULT RADIX=DECIMAL

                          06     12  040A   577 	BNEQ	70$			; IF NOT EQUAL - CONVERSION ERROR

         0C A9            51     D0  040C   578 	MOVL	R1,CLI$L_RQVALU(R9)	; SET RESULTANT VALUE

                          1D     11  0410   579 	BRB	120$			; EXIT CONVERSION

                                     0412   580 70$:	SETSTAT	VALCNVERR		; SET ERROR

                          6E     B4  0417   581 	CLRW	(SP)			; ZERO ANY BYTE COUNT HERE IF ANY

            50            6E     C8  0419   582 	BISL	(SP),R0			; INCLUDE INTERNAL BIT IF THERE

                                 04  041C   583 	RET				; RETURN TO DISPATCHER

                                     041D   584  

                                     041D   585 ;

                                     041D   586 ; REQUEST ASCII STRING VALUE

                                     041D   587 ;

                                     041D   588  

                              3D 3A  041D   589 90$:	.ASCII	\:=\			; TERMINATORS FOR KEYVALUES

         08 A9            52     7D  041F   590 100$:	MOVQ	R2,CLI$Q_RQDESC(R9)	; SET ADDRESS AND SIZE OUTPUT VALUE

            02            6243   3A  0423   591 	LOCC	(R2)[R3],#2,90$		; CHECK FOR KEY VALUE

                       F4 AF         0427       

                          04     13  0429   592 	BEQL	120$			; BR IF NONE LEFT IN MATCH

         03 A9            02     88  042B   593 	BISB	#CLI$M_KEYVALU,CLI$B_RQSTAT(R9) ; INDICATE SUBVALUE FOLLOWING

         04 A7            8E     7D  042F   594 120$:	MOVQ	(SP)+,CLI$Q_QDVALDESC(R7) ; GET DEFAULT VALUE INFORMATION BACK

         04 A7            1F     E4  0433   595 	BBSC	#31,CLI$Q_QDVALDESC(R7),140$ ; BR IF DOING DEFAULT VALUE

                          03         0437       

                          00F3   30  0438   596 	BSBW	DCL$SETQUALVAL		; SET UP DESCRIPTOR FOR REMAINING VALUE

            52         04 A7     7D  043B   597 140$:	MOVQ	CLI$Q_QDVALDESC(R7),R2	; GET REMAINING VALUE

                          10     13  043F   598 	BEQL	150$			; BR IF THERE IS NONE

         03 A9            01     88  0441   599 	BISB	#CLI$M_MOREVALS,CLI$B_RQSTAT(R9) ; SET FLAG TO INDICATE MORE

                                     0445   600 	SETINTR	ILLVAL			; ASSUME THAT NO MORE ALLOWED

         02 A9            00     E0  044C   601 	BBS	#CLI$V_LASTVAL,CLI$B_RQFLGS(R9),RET2 ; BR IF ERROR

                          03         0450       

                                     0451   602 150$:	SETSTAT	SUCCESS			; INDICATE GOOD STATUS

                                 04  0454   603 RET2:	RET				; ALL DONE

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  15

01              PROCESS BIT LISTS                                                                                                (8)



                                     0455   605 	.SBTTL	PROCESS BIT LISTS

                                     0455   606 ;++

                                     0455   607 ; FUNCTIONAL DESCRIPTION:

                                     0455   608 ;

                                     0455   609 ;	THESE ROUTINES ARE CALLED TO PROCESS THE BIT LISTS SUPPLIED

                                     0455   610 ;	WITH A PARAMETER QUALIFIER. THERE ARE 3 LISTS, THE TEST,SET

                                     0455   611 ;	AND CLEAR LISTS.  THE TEST LIST IS INTENDED TO DETECT CONFLICTING

                                     0455   612 ;	QUALIFIERS AND IS TESTED ONLY WHEN THE QUALIFIER IS FOUND

                                     0455   613 ;	EXPLICITLY TRUE IN THE COMMAND.  THE SET LIST IS SET WHEN THE

                                     0455   614 ;	QUALIFIER IS FOUND TO BE TRUE,CLEARED WHEN THE QUALIFIER IS

                                     0455   615 ;	FOUND TO BE FALSE. THE CLEAR LIST INDICATES A SET OF BITS THAT 

                                     0455   616 ;	SHOULD BE CLEARED IF THE QUALFIER IS TRUE.  THIS PERMITS

                                     0455   617 ;	THE PRESENTS OF A QUALIFIER TO OVERRIDE THE PRESENTS OF

                                     0455   618 ;	ANOTHER.

                                     0455   619 ;

                                     0455   620 ; CALLING SEQUENCE:

                                     0455   621 ;

                                     0455   622 ;	BSB/JSB	DCL$SETSETLST		; SET THE SET LIST, CLEAR THE CLEAR LIST

                                     0455   623 ;	BSB/JSB	DCL$CLRSETLST		; CLEAR THE SET LIST, SET THE CLEAR LIST

                                     0455   624 ;	BSB/JSB	DCL$TSTSETLST		; TEST THE TEST LIST, THEN DO SETSETLST

                                     0455   625 ;

                                     0455   626 ; INPUT PARAMETERS:

                                     0455   627 ;

                                     0455   628 ;	R7 CONTAINS THE ADDRESS OF THE PROPER QUALIFIER DESCRIPTOR

                                     0455   629 ;

                                     0455   630 ; IMPLICIT INPUTS:

                                     0455   631 ;

                                     0455   632 ;	R8 = ADDRESS OF UTILITY BIT ARRAY

                                     0455   633 ;	R9 = ADDRESS OF REQUEST DESCRIPTOR

                                     0455   634 ;	R10 = ADDRESS OF WORK BLOCK

                                     0455   635 ;	R11 = ADDRESS OF PASS 1 PARSE WORK AREA

                                     0455   636 ;

                                     0455   637 ; OUTPUT PARAMETERS:

                                     0455   638 ;

                                     0455   639 ;	THE BITS ARE SET/CLEARED

                                     0455   640 ;

                                     0455   641 ; IMPLICIT OUTPUTS:

                                     0455   642 ;

                                     0455   643 ;	NONE

                                     0455   644 ;

                                     0455   645 ; COMPLETION CODES:

                                     0455   646 ;

                                     0455   647 ;	NONE

                                     0455   648 ;

                                     0455   649 ; SIDE EFFECTS:

                                     0455   650 ;

                                     0455   651 ;	TOP LEVEL ERROR IS ISSUED OF BIT TEST FAILURE

                                     0455   652 ;

                                     0455   653 ;--

                                     0455   654 

                                     0455   655 	.ENABL	LSB

                                     0455   656  

                                     0455   657 DCL$TSTSETLST::				; TEST THE TEST LIST, THEN DO SET LIST

            52         14 A7     9E  0455   658 	MOVAB	CLI$C_QDBITS(R7),R2	; GET ADDRESS OF BIT TEST LIST

         02 A7            01     E1  0459   659 	BBC	#CLI$V_QDUSRV,CLI$B_QDFLGS(R7),5$ ; BR IF NO USER CONTEX VALUE

                          02         045D       

                          82     D5  045E   660 	TSTL	(R2)+			; SKIP OVER THE USERS VALUE

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  16

01              PROCESS BIT LISTS                                                                                                (8)



            51            82     9A  0460   661 5$:	MOVZBL	(R2)+,R1		; GET COUNT OF BITS TO TEST

                          0A     13  0463   662 	BEQL	DCL$SETSETLST		; GO SET THE BITS

            53            82     9A  0465   663 10$:	MOVZBL	(R2)+,R3		; GET BIT NUMBER

            68            53     E0  0468   664 	BBS	R3,(R8),100$		; TAKE ERROR EXIT

                          36         046B       

            F6            51     F5  046C   665 	SOBGTR	R1,10$			; BR IF MORE TO DO

                                     046F   666  

                                     046F   667 DCL$SETSETLST::				; SET THE SET LIST

            50            01     D0  046F   668 	MOVL	#1,R0			; SET A TRUE INDICATOR

                          06     10  0472   669 	BSBB	50$			; PROCESS SET LIST

                          50     D4  0474   670 	CLRL	R0			; NOW A FALSE

                          13     11  0476   671 	BRB	60$			; AND DO CLEAR LIST

                                     0478   672  

                                     0478   673 DCL$CLRSETLST::				; CLEAR THE SET LIST

                          50     D4  0478   674 	CLRL	R0			; GET A FALSE

                                     047A   675 ;	BSBB	50$			; CLEAR THE SET LIST

                                     047A   676 ;	INCL	R0			; NOW TRUE

                                     047A   677 ;	BRB	60$			; SET THE CLEAR LIST

                                     047A   678  

            52         14 A7     9E  047A   679 50$:	MOVAB	CLI$C_QDBITS(R7),R2	; GET ADDRESS OF TEST LIST

         02 A7            01     E1  047E   680 	BBC	#CLI$V_QDUSRV,CLI$B_QDFLGS(R7),55$ ; BR IF NO USER VALUE PRESENT

                          02         0482       

                          82     D5  0483   681 	TSTL	(R2)+			; SKIP USER CONTEX LONGWORD

            51            82     9A  0485   682 55$:	MOVZBL	(R2)+,R1		; GET COUNT OF TEST LIST

            52            51     C0  0488   683 	ADDL	R1,R2			; AND SKIP OVER THE LIST

            51            82     9A  048B   684 60$:	MOVZBL	(R2)+,R1		; GET COUNT OF SET LIST

                          11     13  048E   685 	BEQL	90$			; BR IF NONE

            53            82     9A  0490   686 70$:	MOVZBL	(R2)+,R3		; GET A BIT

                                     0493   687 	SETBIT	R3,(R8)			; SET THE BIT

            04            50     E8  0497   688 	BLBS	R0,80$			; BR IF THAT WAS THE CORRECT ACTION

                                     049A   689 	CLRBIT	R3,(R8)			; ELSE CLEAR IT

            EF            51     F5  049E   690 80$:	SOBGTR	R1,70$			; DO ALL BITS

                                 05  04A1   691 90$:	RSB				; RETURN

                                     04A2   692 ;

                                     04A2   693 ; COME HERE WHEN A CONFLICTING QUALIFIER IS FOUND.

                                     04A2   694 ; SET ERROR RETURN STRING INFO TO POINT AT THE QUALIFIER

                                     04A2   695 ;

                                     04A2   696  

                          55     D4  04A2   697 100$:	CLRL	R5			; INIT FOR SEARCH

                          55     D6  04A4   698 110$:	INCL	R5			; INCREASE INDEX BY 1

                          FB57'  30  04A6   699 	BSBW	DCL$GETEXTDESC		; THAT THE DESCRIPTOR APART

                                     04A9   700 	ASSUME	PTR_K_COMDQUAL EQ 0	;

                                     04A9   701 	ASSUME	PTR_K_PARMQUAL EQ 1	;

            01            51     D1  04A9   702 	CMPL	R1,#PTR_K_PARMQUAL	; IS THIS A QUALIFIER

                          F6     1A  04AC   703 	BGTRU	110$			; BR IF NO

            52         01 A7     91  04AE   704 	CMPB	CLI$B_QDCODE(R7),R2	; IS IT THE ONE THAT CONFLICTED?

                          F0     12  04B2   705 	BNEQ	110$			; BR IF NO

                                     04B4   706 	SETSTAT	CONFQUAL		; SET ERROR TO CONFLICTING QUALIFERS

                                 04  04B9   707 	RET				; REPORT THE ERROR

                                     04BA   708  

                                     04BA   709 	.DSABL	LSB

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  17

01              PROCESS COMMAND QUALIFIER                                                                                        (9)



                                     04BA   711 	.SBTTL	PROCESS COMMAND QUALIFIER

                                     04BA   712 ;++

                                     04BA   713 ; FUNCTIONAL DESCRIPTION:

                                     04BA   714 ;

                                     04BA   715 ;	THIS ROUTINE IS CALLED WHEN A PARAMETER HAS BEEN FOUND PRESENT

                                     04BA   716 ;	IN THE COMMAND. THIS ROUTINE SEARCHED FOR ANY COMMAND QUALIFIERS

                                     04BA   717 ;	PRESENT ITN THE RANGE OF THE COMMAND, WHERE THE RANGE OF THE

                                     04BA   718 ;	COMMAND IS DEFINED AS ON THE VERB, OR WITHIN THE CURRENT LIMITS

                                     04BA   719 ;	OF ANY COMMAND PARAMETERS.  ONLY QUALIFIERS EXPLICITLY REQUESTED

                                     04BA   720 ;	ARE PROCESSED.

                                     04BA   721 ;

                                     04BA   722 ; CALLING SEQUENCE:

                                     04BA   723 ;

                                     04BA   724 ;	BSB/JSB	DCL$PROCMDQUAL

                                     04BA   725 ;

                                     04BA   726 ; INPUT PARAMETERS:

                                     04BA   727 ;

                                     04BA   728 ;	NONE

                                     04BA   729 ;

                                     04BA   730 ; IMPLICIT INPUTS:

                                     04BA   731 ;

                                     04BA   732 ;	R8 = ADDRESS OF UTILITY BIT ARRAY

                                     04BA   733 ;	R9 = ADDRESS OF REQUEST DESCRIPTOR

                                     04BA   734 ;	R10 = ADDRESS OF WORK BLOCK

                                     04BA   735 ;	R11 = ADDRESS OF PASS 1 PARSE WORK AREA

                                     04BA   736 ;

                                     04BA   737 ; OUTPUT PARAMETERS:

                                     04BA   738 ;

                                     04BA   739 ;	ALL QUALIFIERS SPECIFIED BY THE UTILITY, AND PRESENT ARE PROCESSED.

                                     04BA   740 ;

                                     04BA   741 ; IMPLICIT OUTPUTS:

                                     04BA   742 ;

                                     04BA   743 ;	NONE

                                     04BA   744 ;

                                     04BA   745 ; COMPLETION CODES:

                                     04BA   746 ;

                                     04BA   747 ;	NONE

                                     04BA   748 ;

                                     04BA   749 ; SIDE EFFECTS:

                                     04BA   750 ;

                                     04BA   751 ;	NONE

                                     04BA   752 ;

                                     04BA   753 ;--

                                     04BA   754 

                                     04BA   755  

                                     04BA   756 DCL$PROCMDQUAL::			; PROCESS COMMAND QUALIFIERS

                     0000'CF     9F  04BA   757 	PUSHAB	W^DCL$FNDCMDQUAL	; INIT COROUTINE

                          9E     16  04BE   758 10$:	JSB	@(SP)+			; FIND NEXT QUALIFIER IN COMMAND

            44            50     E9  04C0   759 	BLBC	R0,80$			; BR IF NO MORE

                     FD50 CF     9F  04C3   760 	PUSHAB	W^SCANQUAL		; SCAN THE UTILITIES QUALIFIERS

                          9E     16  04C7   761 20$:	JSB	@(SP)+			; FIND NEXT QUALIFIER DESCRIPTOR BLOCK

            F2            50     E9  04C9   762 	BLBC	R0,10$			; BR IF NO MORE UTILITY DESCRIPTORS

            64         01 A7     91  04CC   763 	CMPB	CLI$B_QDCODE(R7),(R4)	; MATCH UTILITY CODE?

                          F5     12  04D0   764 	BNEQ	20$			; BR IF NO-CKECK UTILITIES NEXT DESCPTR

                          8E     D5  04D2   765 	TSTL	(SP)+			; CLR QUAL DESC SCAN COROUTINE

                     0070 8F     BB  04D4   766 	PUSHR	#^M<R4,R5,R6>		; SAVE INFO USED BY COROUTINE

                                 E0  04D8   767 	BBS	#CLI$V_ALLOCCUR+<CLI$B_QDFLGS*8>,- ; BR IF UTILITY WANTS TO SEE

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  18

01              PROCESS COMMAND QUALIFIER                                                                                        (9)



            67            10         04D9   768 		(R7),60$		; ALL OCCURANCES OF THIS QUALIFIER

                          1C         04DB       

                                     04DC   769 	SETBIT	R5,RPW_AG_BITS(R10)	; INDICATE QUALIFIER PROCESSED

                       0C AE     DD  04E1   770 	PUSHL	12(SP)			; COPY COROUTINE ADDRESS

                          9E     16  04E4   771 30$:	JSB	@(SP)+			; CONTINUE SCAN FOR THIS QUALIFIER

            0C            50     E9  04E6   772 	BLBC	R0,40$			; BR IF NO MORE OCCURANCES

            64         01 A7     91  04E9   773 	CMPB	CLI$B_QDCODE(R7),(R4)	; IS THIS THE SAME QUALIFIER?

                          F5     12  04ED   774 	BNEQ	30$			; IF NO LOOK SOME MORE

                     0071 8F     BA  04EF   775 	POPR	#^M<R0,R4,R5,R6>	; POP RETURN ADDRESS PLUS PARAMETERS

                          C9     11  04F3   776 	BRB	10$			; PROCESS THIS WHEN WE FIND IT AGAIN

            54            6E     7D  04F5   777 40$:	MOVQ	(SP),R4			; SET THE VALUE OF QUALIFIER DESCRIPTOR

                          0E     10  04F8   778 60$:	BSBB	DCL$HANDLQUAL		; HANDLE THE QUALIFIER

                     0070 8F     BA  04FA   779 	POPR	#^M<R4,R5,R6>		; RESTORE INFO USED BY COROUTINE

            67            10     E1  04FE   780 	BBC	#CLI$V_ALLOCCUR+<CLI$B_RQFLGS*8>,(R7),10$ ; DOING ALL OCCURANCES

                          BC         0501       

                          FCDC   30  0502   781 	BSBW	QUALACT			; IF YES TAKE ACTION AT THIS TIME

                          B7     11  0505   782 	BRB	10$			; LOOK FOR MORE

                                 05  0507   783 80$:	RSB				;

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  19

01              PROCESS QUALIFIER                                                                                               (10)



                                     0508   785 	.SBTTL	PROCESS QUALIFIER

                                     0508   786 ;++

                                     0508   787 ; FUNCTIONAL DESCRIPTION:

                                     0508   788 ;

                                     0508   789 ;	THE FOLLOWING IS A SET OF ROUTINES THAT PROCESS QUALIFERS

                                     0508   790 ;	AND THERE VALUES.

                                     0508   791 ;

                                     0508   792 ;    DCL$HANDLQUAL

                                     0508   793 ;

                                     0508   794 ;	THIS ROUTINE IS CALLED TO PROCESS A QUALIFIER FOUND IN THE

                                     0508   795 ;	COMMAND LINE, AND SET ALL UTILITY STRUCTURES CORRECTLY.

                                     0508   796 ;

                                     0508   797 ;    DCL$SETQUALVAL

                                     0508   798 ;

                                     0508   799 ;	THIS ROUTINE IS CALLED TO SET THE STRING LIMITS OF

                                     0508   800 ;	A EXPLICIT VALUE ENTERED VIA THE COMMAND STREAM.

                                     0508   801 ;

                                     0508   802 ;    DCL$SETDEFVAL

                                     0508   803 ;

                                     0508   804 ;	THIS ROUTINE IS CALLED TO SET THE STRING LIMITS FOR

                                     0508   805 ;	A DEFAULT VALUE ASSOCIATED WITH A QUALIFER THAT IS TRUE.

                                     0508   806 ;

                                     0508   807 ; CALLING SEQUENCE:

                                     0508   808 ;

                                     0508   809 ;	BSB/JSB	DCL$<ENTRY>

                                     0508   810 ;

                                     0508   811 ; INPUT PARAMETERS:

                                     0508   812 ;

                                     0508   813 ;  DCL$HANDLQUAL

                                     0508   814 ;

                                     0508   815 ;	R4 CONTAINS THE ADDRESS OF THE RESULT PARSE DESCRIPTOR FOR THE QUALIFIER

                                     0508   816 ;	R5 IS INDEX TO THE RESULT DESCRIPTOR FOR THE QUALFIER

                                     0508   817 ;	R7 CONTAINS THE ADDRESS OF THE UTILITY QUALIFIER DESCRIPTOR

                                     0508   818 ;

                                     0508   819 ; DCL$SETQUALVAL

                                     0508   820 ;

                                     0508   821 ;	R5 IS INDEX TO THE RESULT DESCRIPTOR FOR THE QUALFIER OR LAST VALUE

                                     0508   822 ;	R7 CONTAINS THE ADDRESS OF THE UTILITY QUALIFIER DESCRIPTOR

                                     0508   823 ;

                                     0508   824 ; DCL$SETDEFVAL

                                     0508   825 ;

                                     0508   826 ;	R2 CONTAINS THE ADDRESS OF DCL INTERNAL QUALIFER DESCRIPTOR

                                     0508   827 ;	R7 CONTAINS THE ADDRESS OF THE UTILITY QUALIFIER DESCRIPTOR

                                     0508   828 ;

                                     0508   829 ; IMPLICIT INPUTS:

                                     0508   830 ;

                                     0508   831 ;	R8 = ADDRESS OF UTILITY BIT ARRAY

                                     0508   832 ;	R9 = ADDRESS OF REQUEST DESCRIPTOR

                                     0508   833 ;	R10 = ADDRESS OF WORK BLOCK

                                     0508   834 ;	R11 = ADDRESS OF PASS 1 PARSE WORK AREA

                                     0508   835 ;

                                     0508   836 ; OUTPUT PARAMETERS:

                                     0508   837 ;

                                     0508   838 ;	UTILITY QUALIFER DATA STRUTURE IS SET PROPERLY

                                     0508   839 ;

                                     0508   840 ; IMPLICIT OUTPUTS:

                                     0508   841 ;

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  20

01              PROCESS QUALIFIER                                                                                               (10)



                                     0508   842 ;	NONE

                                     0508   843 ;

                                     0508   844 ; COMPLETION CODES:

                                     0508   845 ;

                                     0508   846 ;	NONE

                                     0508   847 ;

                                     0508   848 ; SIDE EFFECTS:

                                     0508   849 ;

                                     0508   850 ;	NONE

                                     0508   851 ;

                                     0508   852 ;--

                                     0508   853 

                                     0508   854 	.ENABL	LSB

                                     0508   855 

                                     0508   856 DCL$HANDLQUAL::				; PROCESS A QUALIFIER

                       04 A7     7C  0508   857 	CLRQ	CLI$Q_QDVALDESC(R7)	; SET VALUE TO NONE

                                     050B   858 	SETBIT	R5,RPW_AG_BITS(R10)	; COUNT THIS QUALIFIER AS PROCESSED

                                 88  0510   859 	BISB	#CLI$M_QUALEXP,-	; SET FLAG TO INDICATE QUALIFIER WAS

         03 A7            02         0511   860 		CLI$B_QDSTAT(R7)	; EXPLICITLY FOUND

         03 A7            01     8A  0514   861 	BICB	#CLI$M_QUALTRU,CLI$B_QDSTAT(R7) ; AND SET STATE TO FALSE

                                 E0  0518   862 	BBS	#PTR_V_NEGATE+PTR_V_FLAGS,- ; BR IF THE ASSUMED STATE,FALSE,

            64            14         0519   863 		PTR_L_DESCR(R4),40$	; BR IF ASSUMED CORRECTLY

                          3C         051B       

                                 88  051C   864 	BISB	#CLI$M_QUALTRU,-	; ASSUMED INCORRECTLY, SET STATE OF

         03 A7            01         051D   865 		CLI$B_QDSTAT(R7)	; QUALIFIER TO TRUE

                          18     ED  0520   866 	CMPZV	#PTR_V_TERM,#PTR_S_TERM,- ; TERMINATOR VIELD LIMITS

            64            04         0522   867 		PTR_L_DESCR(R4),#PTR_K_COLON ; EXPLICIT VALUE GIVEN?

                          02         0524       

                          07     13  0525   868 	BEQL	DCL$SETQUALVAL		; BR IF YES, SET USER SPECIFIED VALUE

                          18     ED  0527   869 	CMPZV	#PTR_V_TERM,#PTR_S_TERM,- ; TERMINATOR VIELD LIMITS

            64            04         0529   870 		PTR_L_DESCR(R4),#PTR_K_LPAREN ; EXPLICIT VALUE GIVEN?

                          07         052B       

                          2B     12  052C   871 	BNEQ	70$			; BR IF N0, SET DEFAULT IF THERE IS ONE

                                     052E   872 DCL$SETQUALVAL:				; SET QUALIFIER VALUE ONLY

                       04 A7     7C  052E   873 	CLRQ	CLI$Q_QDVALDESC(R7)	; ASSUME NO VALUE PRESENT

                          55     D6  0531   874 	INCL	R5			; ADV INDEX TO NEXT RESULT DESCRIPTOR

                                     0533   875 	GETEXTDESC			; TAKE THAT 1 APART

            02            51     91  0536   876 	CMPB	R1,#PTR_K_QUALVALU	; WAS THIS A VALUE?

                          1D     12  0539   877 	BNEQ	40$			; BR IF NO

                          0C     BB  053B   878 	PUSHR	#^M<R2,R3>		; SET CURRENT LIMIT VALUES

                          0A     11  053D   879 	BRB	20$			; JOIN COMMON LOOP

                          55     D6  053F   880 10$:	INCL	R5			; ADD 1 TO INDEX INTO RESULT BUFFER

                                     0541   881 	GETEXTDESC			; TAKE THE DESCRIPTOR APART

            02            51     91  0544   882 	CMPB	R1,#PTR_K_QUALVALU	; LAST VALUE IN LIST?

                          06     12  0547   883 	BNEQ	30$			; BR IF YES-EXIT THE LOOP

            53            52     C1  0549   884 20$:	ADDL3	R2,R3,(SP)		; FIND END OF LAST VALUE

                          6E         054C       

                          F0     11  054D   885 	BRB	10$			; LOOK FOR MORE

                          0C     BA  054F   886 30$:	POPR	#^M<R2,R3>		; GET VALUE LIMITS BACK

            52            53     C2  0551   887 	SUBL	R3,R2			; CHANGE TO LENGTH

         04 A7            52     7D  0554   888 	MOVQ	R2,CLI$Q_QDVALDESC(R7)	; SET VALUE

                                 05  0558   889 40$:	RSB				; PROCESS BIT LISTS-RETURN FROM THERE

                                     0559   890  

            10            69     91  0559   891 70$:	CMPB	(R9),#CLI$K_INPUT1	; IS THIS A PARAMETER PARSE

                          17     19  055C   892 	BLSS	80$			; BR IF NO - NO DEFAULT VALUES THEN

            51            64     9A  055E   893 	MOVZBL	(R4),R1			; GET QUALIFIER NUMBER

                                     0561   894 	GETPARMQUAL			; LOCATE ASSOCIATED QUALIFER BLOCK

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  21

01              PROCESS QUALIFIER                                                                                               (10)



                                     0564   895  

                                     0564   896 DCL$SETDEFVAL:				; RETURN QUALIFER DEFAULT VALUE

            50         02 A2     9A  0564   897 	MOVZBL	QUA_B_DEFVAL(R2),R0	; GET OFFSET TO DEFAULT VALUE STRING

                          0B     13  0568   898 	BEQL	80$			; BR IF NO DEFAULT VALUE

            50            52     C0  056A   899 	ADDL	R2,R0			; FIND REAL ADDRESS OF DEFAULT VALUE

         04 A7            80     9B  056D   900 	MOVZBW	(R0)+,CLI$W_QDVALSIZ(R7) ; SET SIZE OF VALUE STRING

         08 A7            50     D0  0571   901 	MOVL	R0,CLI$A_QDVALADR(R7)	; AND THE ADDRESS OF THE STRING

                                 05  0575   902 80$:	RSB				; RETURN FROM DEFAULT VALUE PROCESSING

                                     0576   903  

                                     0576   904 	.DSABL	LSB

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  22

01              PROCESS QUALIFIER                                                                                               (12)



                                     0576   906 

                                     0576   907 	.SBTTL	GET OPTION VALUE

                                     0576   908 ;++

                                     0576   909 ; FUNCTIONAL DESCRIPTION:

                                     0576   910 ;

                                     0576   911 ;	AN OPTION IS A DCL COMMAND PARAMETER THAT IS MADE TO

                                     0576   912 ;	APPEAR AS A QUALIFIER.  THIS ROUTINE IS CALLED BY

                                     0576   913 ;	AN IMAGE THAT HAS SEVERAL OPTIONS TO PROCESS AND WOULD

                                     0576   914 ;	LIKE TO BE TOLD WHICH IT IS TO DO.  OPTIONS APPEAR IN

                                     0576   915 ;	THE RESULT PARSE BUFFER AS THE FIRST ENTRY AND AS

                                     0576   916 ;	PARAMETER QUALIFIER.  THE ONLY OUTPUT OF THIS ROUTINE

                                     0576   917 ;	IS THE EXECUTION OF THE ACTION ROUTINE FOR THE OPTION.

                                     0576   918 ;	FAILURE TO SPECIFY ACTION ROUTINES FOR OPTIONS RESULTS

                                     0576   919 ;	IN CAUSING THIS CALL BACK TO BE A NO-OP.

                                     0576   920 ;

                                     0576   921 ; CALLING SEQUENCE:

                                     0576   922 ;

                                     0576   923 ;	ENTERED VIA A CASE FOLLOWING A CALL

                                     0576   924 ;

                                     0576   925 ; INPUT PARAMETERS:

                                     0576   926 ;

                                     0576   927 ;	NONE

                                     0576   928 ;

                                     0576   929 ; IMPLICIT INPUTS:

                                     0576   930 ;

                                     0576   931 ;	R9 = ADDRESS OF REQUEST DESCRIPTOR FOR VALUE CONVERSION

                                     0576   932 ;	R10 = ADDRESS OF IMAGE LOCAL WORK AREA

                                     0576   933 ;	R11 = ADDRESS OF PASS 1 PARSE WORK AREA

                                     0576   934 ;

                                     0576   935 ; OUTPUT PARAMETERS:

                                     0576   936 ;

                                     0576   937 ;	THE OPTION QUALIFER ACTION ROUTINE IS EXECUTED FOR THE QUALIFIER

                                     0576   938 ;	THAT MATCHES THE CODE.

                                     0576   939 ;

                                     0576   940 ; IMPLICIT OUTPUTS:

                                     0576   941 ;

                                     0576   942 ;	NONE

                                     0576   943 ;

                                     0576   944 ; COMPLETION CODES:

                                     0576   945 ;

                                     0576   946 ;	DCL$INVQUAL IF NO MATCH ON THE QUALIFIER CODE

                                     0576   947 ;	    ELSE AS SET BY THE OPTION ACTION ROUTINE.

                                     0576   948 ;

                                     0576   949 ; SIDE EFFECTS:

                                     0576   950 ;

                                     0576   951 ;	NONE

                                     0576   952 ;

                                     0576   953 ;--

                                     0576   954 DCL$GETOPT:				; FIND COMMAND OPTION

                                     0576   955 	SETSTAT	<NOOPTPRS>		; ASSUME NO OPTION PRESENT

            54       FBB4 CB     DE  057B   956 	MOVAL	WRK_AG_RESULT(R11),R4	; SET ADDRESS OF FIRST RESULT DESCRIPTOR

                          1C     ED  0580   957 	CMPZV	#PTR_V_TYPE,#PTR_S_TYPE,- ; CHECK THAT QUALIFER TYPE IS

            64            04         0582   958 		PTR_L_DESCR(R4),#PTR_K_PARMQUAL ; PARAMETER QUALIFER

                          01         0584       

                          15     1A  0585   959 	BGTRU	20$			; IF NOT-THIS COMMAND HAS NO OPTIONS

                     FC8C CF     9F  0587   960 	PUSHAB	SCANQUAL		; SET COROUTINE TO SCAN INPUT QUALIFERS

                          9E     16  058B   961 10$:	JSB	@(SP)+			; GET CALLERS NEXT QUALIFIER DESCRIPTOR

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  23

01              GET OPTION VALUE                                                                                                (12)



            0C            50     E9  058D   962 	BLBC	R0,20$			; BR IF NOT FOUND

         01 A7            64     91  0590   963 	CMPB	(R4),CLI$B_QDCODE(R7)	; IS THIS THE QUALIFIER HE WANTED

                          F5     12  0594   964 	BNEQ	10$			; BR IF NO-KEEP LOOKING

                          FF6F   30  0596   965 	BSBW	DCL$HANDLQUAL		; SET USERS STRUCTURE

                          FC45   30  0599   966 	BSBW	QUALACT			; TAKE PROPER ACTION

                                 04  059C   967 20$:	RET				; RETURN TO DISPATCHER

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  24

01              GET COMMAND LINE                                                                                                (13)



                                     059D   969 	.SBTTL	GET COMMAND LINE

                                     059D   970 ;++

                                     059D   971 ; FUNCTIONAL DESCRIPTION:

                                     059D   972 ;

                                     059D   973 ;	THIS ROUTINE IS CALLED TO SET A DESCRITOR FOR THE COMMAND

                                     059D   974 ;	THAT WAS JUST PROCESSED BY DCL.

                                     059D   975 ;

                                     059D   976 ; CALLING SEQUENCE:

                                     059D   977 ;

                                     059D   978 ;	THIS ROUTINE IS ENTERED BY A CASE FOLLOWING A CALL

                                     059D   979 ;

                                     059D   980 ; INPUT PARAMETERS:

                                     059D   981 ;

                                     059D   982 ;	NONE

                                     059D   983 ;

                                     059D   984 ; IMPLICIT INPUTS:

                                     059D   985 ;

                                     059D   986 ;	R9 = ADDRESS OF REQUEST DESCRIPTOR

                                     059D   987 ;	R11 = ADDRESS OF PASS 1 PARSE WORK AREA

                                     059D   988 ;

                                     059D   989 ; OUTPUT PARAMETERS:

                                     059D   990 ;

                                     059D   991 ;	THE REQUEST DESCRIPTOR IS SET TO CONTAIN A QUADWORD DESCRIPTOR

                                     059D   992 ;	THE THE FINAL COMMAND IN THE BUFFER.

                                     059D   993 ;

                                     059D   994 ; IMPLICIT OUTPUTS:

                                     059D   995 ;

                                     059D   996 ;	THE INTERNAL ERROR MECHANISM IS USED TO RETURN THE RESULTANT

                                     059D   997 ;	COMMAND LINE DESCRIPTOR WHEN COMMAND IS A RUN

                                     059D   998 ;

                                     059D   999 ; COMPLETION CODES:

                                     059D  1000 ;

                                     059D  1001 ;	SUCCESS IN ALL CASES EXCEPT WHEN COMMAND IS A "RUN".  IN THIS

                                     059D  1002 ;	WAY, A UTILITY MAY DETERMIN THAT IS WAS INVOKED VIA A COMMAND,

                                     059D  1003 ;	IE: LINK ALPHA, OR BY A "RUN FILESPEC".

                                     059D  1004 ;

                                     059D  1005 ; SIDE EFFECTS:

                                     059D  1006 ;

                                     059D  1007 ;	NONE

                                     059D  1008 ;

                                     059D  1009 ;--

                                     059D  1010 

                                     059D  1011 

                                     059D  1012 DCL$GETCMD::				; GET COMMAND LINE

                          FA60'  30  059D  1013 	BSBW	DCL$GETDCLWRK		; SET WORK AREA POINTER

         03 A9         C0 AB     90  05A0  1014 	MOVB	WRK_B_VERBTYP(R11),CLI$B_RQSTAT(R9); GET VERB TYPE FOR CALLER

                          08     EF  05A5  1015 	EXTZV	#PTR_V_OFFSET,#PTR_S_OFFSET,- ; GET THE OFFSET INTO THE COMMAND

       FBB4 CB            0C         05A7  1016 		WRK_AG_RESULT(R11),R3	; BUFFER FOR THE FIRST COMMAND TOKEN

                          53         05AB       

            52       FD34 CB     D0  05AC  1017 	MOVL	WRK_L_RSLNXT(R11),R2	; GET ADDRESS OF FREE RESULT DESCRIPTOR

                          08     EF  05B1  1018 	EXTZV	#PTR_V_OFFSET,#PTR_S_OFFSET,- ; NOW GET OFFSET TO END_OF_LINE

         FC A2            0C         05B3  1019 		-4(R2),R2		; MARKER IN COMMAND BUFFER

                          52         05B6       

            52            53     C2  05B7  1020 	SUBL	R3,R2			; FIND LENGTH OF COMMAND

                          14     15  05BA  1021 	BLEQ	20$			; BR IF NO COMMAND IN THE BUFFER

            53       FD38 CB43   9E  05BC  1022 	MOVAB	WRK_AB_BUFFER(R11)[R3],R3 ; GET ADDRESS OF FIRST ITEM

         FF A3            2F     91  05C2  1023 	CMPB	#^A\/\,-1(R3)		; COMMAND TERMINATOR A SLASH?

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  25

01              GET COMMAND LINE                                                                                                (13)



                          04     12  05C6  1024 	BNEQ	10$			; IF NOT-THEN DON'T INCLUE IT

                          52     D6  05C8  1025 	INCL	R2			; ADD 1 TO COUNT

                          53     D7  05CA  1026 	DECL	R3			; BACK UP ADDRESS TO TERMINATOR

         08 A9            52     7D  05CC  1027 10$:	MOVQ	R2,CLI$Q_RQDESC(R9)	; SET RESULT IN CALLER DATA BLOCK

            50   80000000 8F     D0  05D0  1028 20$:	MOVL	#1@31,R0		; SET INTERNAL ERROR BIT

         03 A9            24     91  05D7  1029 	CMPB	#CLI$K_VERB_RUN,CLI$B_RQSTAT(R9) ; WAS COMMAND A RUN?

                          03     13  05DB  1030 	BEQL	30$			; IF YES - THERE IS NO COMMAND LINE

                                     05DD  1031 	STATUS	NORMAL			; SET GOOD STATUS

                                 04  05E0  1032 30$:	RET				; RETURN TO DISPATCHER

                                     05E1  1033  

                                     05E1  1034 	.END

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  26

SYMBOL TABLE                                                                                                                    (13)



BIT...         = 000000FE            CLI$K_VALCONV  = 00000004            CLI$K_WORKAREA   00000080            

CALERR           00000036 R     03   CLI$K_VERB_ALLO= 00000001            CLI$L_CLIFLAG    00000018            

CALLBAK          000001FD R     03   CLI$K_VERB_ANAL= 00000002            CLI$L_INIARGCNT  00000000            

CLI$A_ABSACT     00000014            CLI$K_VERB_APPE= 0000002F            CLI$L_LINKFLAG   00000014            

CLI$A_ERRACT     00000004            CLI$K_VERB_ASSI= 00000003            CLI$L_RQVALU     0000000C            

CLI$A_FLSACT     00000010            CLI$K_VERB_BASI= 00000004            CLI$L_USRVAL     00000014            

CLI$A_IMGFILED   00000010            CLI$K_VERB_BLIS= 00000005            CLI$L_WORKAREA   00000000            

CLI$A_IMGHDADR   0000000C            CLI$K_VERB_CANC= 00000033            CLI$M_ABSADR   = 00000002            

CLI$A_PROGXFER   00000004            CLI$K_VERB_COBO= 00000006            CLI$M_ALLOCCUR = 00000001            

CLI$A_PRSACT     00000010            CLI$K_VERB_CONT= 00000007            CLI$M_BATCH    = 00000008            

CLI$A_QDVALADR   00000008            CLI$K_VERB_COPY= 00000008            CLI$M_CONCATINP= 00000002            

CLI$A_QUALST     00000018            CLI$K_VERB_CREA= 00000009            CLI$M_DBGEXCP  = 00010000            

CLI$A_RQADDR     0000000C            CLI$K_VERB_DATA= 0000000A            CLI$M_DBGTRU   = 00000002            

CLI$A_TRUACT     0000000C            CLI$K_VERB_DEAL= 0000000B            CLI$M_DEBUG    = 00000001            

CLI$A_UTILSERV   00000008            CLI$K_VERB_DEAS= 0000000C            CLI$M_DUMMY    = 00000002            

CLI$B_BITNUM     00000001            CLI$K_VERB_DEBU= 0000000D            CLI$M_EXPNAM   = 00000004            

CLI$B_QDBLKSIZ   00000000            CLI$K_VERB_DEFI= 0000000E            CLI$M_INDIRECT = 00000010            

CLI$B_QDCODE     00000001            CLI$K_VERB_DELE= 0000000F            CLI$M_KEYVALU  = 00000002            

CLI$B_QDFLGS     00000002            CLI$K_VERB_DEPO= 00000010            CLI$M_LASTVAL  = 00000001            

CLI$B_QDSTAT     00000003            CLI$K_VERB_DIFF= 00000011            CLI$M_MOREINP  = 00000004            

CLI$B_RQFLGS     00000002            CLI$K_VERB_DIRE= 00000012            CLI$M_MOREVALS = 00000001            

CLI$B_RQINDX     00000001            CLI$K_VERB_DISM= 00000013            CLI$M_PARMDEF  = 00000008            

CLI$B_RQSTAT     00000003            CLI$K_VERB_DUMP= 00000030            CLI$M_PARMPRS  = 00000001            

CLI$B_RQTYPE     00000000            CLI$K_VERB_EDIT= 00000014            CLI$M_PARMREQ  = 00000001            

CLI$C_QDBITS     00000014            CLI$K_VERB_EOD = 00000015            CLI$M_QDEXPA   = 00000004            

CLI$C_QUALDEF    00000014            CLI$K_VERB_EXAM= 00000016            CLI$M_QDUSRV   = 00000002            

CLI$C_REQDESC    0000001C            CLI$K_VERB_EXIT= 00000017            CLI$M_QUALEXP  = 00000002            

CLI$C_WORKAREA   00000080            CLI$K_VERB_FORE= 000000FF            CLI$M_QUALTRU  = 00000001            

CLI$K_ASCIIVAL = 00000041            CLI$K_VERB_FORT= 00000018            CLI$M_TRMVRBLV = 00000300            

CLI$K_CLISERV  = 00000005            CLI$K_VERB_GOTO= 00000019            CLI$M_VERIFY   = 00000004            

CLI$K_ENDPRM1  = 00000030            CLI$K_VERB_HELP= 0000001A            CLI$M_VFYINP   = 00000020            

CLI$K_ENDPRM2  = 00000031            CLI$K_VERB_IF  = 0000001B            CLI$Q_QDVALDESC  00000004            

CLI$K_ENDPRM3  = 00000032            CLI$K_VERB_INIT= 0000001C            CLI$Q_RQDESC     00000008            

CLI$K_ENDPRM4  = 00000033            CLI$K_VERB_INQU= 0000001D            CLI$S_PRITYP   = 00000004            

CLI$K_FILSPEC  = 00000044            CLI$K_VERB_LIBR= 00000034            CLI$S_SUBTYP   = 00000004            

CLI$K_GETCMD   = 00000001            CLI$K_VERB_LINK= 0000001E            CLI$S_TRMVRBLV = 00000002            

CLI$K_GETOPT   = 00000003            CLI$K_VERB_LOGO= 0000001F            CLI$V_ABSADR   = 00000001            

CLI$K_GETQUAL  = 00000002            CLI$K_VERB_MACR= 00000020            CLI$V_ALLOCCUR = 00000000            

CLI$K_INITPRS  = 00000000            CLI$K_VERB_MCR = 00000021            CLI$V_BATCH    = 00000003            

CLI$K_INPSPEC  = 00000001            CLI$K_VERB_MOUN= 0000002B            CLI$V_CONCATINP= 00000001            

CLI$K_INPUT1   = 00000010            CLI$K_VERB_ON  = 00000022            CLI$V_DBGEXCP  = 00000010            

CLI$K_INPUT2   = 00000011            CLI$K_VERB_PATC= 0000002C            CLI$V_DBGTRU   = 00000001            

CLI$K_INPUT3   = 00000012            CLI$K_VERB_PRIN= 00000023            CLI$V_DEBUG    = 00000000            

CLI$K_INPUT4   = 00000013            CLI$K_VERB_PURG= 00000031            CLI$V_DUMMY    = 00000001            

CLI$K_KEYVAL   = 00000043            CLI$K_VERB_RENA= 00000032            CLI$V_EXPNAM   = 00000002            

CLI$K_KEYWORD  = 00000042            CLI$K_VERB_REPL= 0000002D            CLI$V_INDIRECT = 00000004            

CLI$K_NUMERVAL = 00000040            CLI$K_VERB_REQU= 00000036            CLI$V_KEYVALU  = 00000001            

CLI$K_OUTPUT1  = 00000020            CLI$K_VERB_RUN = 00000024            CLI$V_LASTVAL  = 00000000            

CLI$K_OUTPUT2  = 00000021            CLI$K_VERB_SET = 00000025            CLI$V_MOREINP  = 00000002            

CLI$K_OUTPUT3  = 00000022            CLI$K_VERB_SHOW= 00000026            CLI$V_MOREVALS = 00000000            

CLI$K_OUTPUT4  = 00000023            CLI$K_VERB_SORT= 00000035            CLI$V_PARMDEF  = 00000003            

CLI$K_OUTSPEC  = 00000002            CLI$K_VERB_STAR= 00000027            CLI$V_PARMPRS  = 00000000            

CLI$K_PARDONE  = 00000003            CLI$K_VERB_STOP= 00000028            CLI$V_PARMREQ  = 00000000            

CLI$K_QDBITS     00000014            CLI$K_VERB_SUBM= 00000029            CLI$V_PRITYP   = 00000004            

CLI$K_QUALDEF    00000014            CLI$K_VERB_SYNC= 00000037            CLI$V_QDEXPA   = 00000002            

CLI$K_REQDESC    0000001C            CLI$K_VERB_TYPE= 0000002A            CLI$V_QDUSRV   = 00000001            

CLI$K_UTILOPR  = 00000000            CLI$K_VERB_UNLO= 0000002E            CLI$V_QUALEXP  = 00000001            

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  27

SYMBOL TABLE                                                                                                                    (13)



CLI$V_QUALTRU  = 00000000            CLI$_NULFIL    = 000380E0            OPI_K_FSTPRM   = FFFFFFFF            

CLI$V_SUBTYP   = 00000000            CLI$_NUMBER    = 000380E8            OPI_K_SCNPRM   = FFFFFFFE            

CLI$V_TRMVRBLV = 00000008            CLI$_ONCOMD    = 000380F0            OUTPUT           0000024A R     03   

CLI$V_VERIFY   = 00000002            CLI$_ONERR     = 000380F8            PLM_B_FSTDESC    00000001            

CLI$V_VFYINP   = 00000005            CLI$_ONEVAL    = 00038158            PLM_B_LSTDESC    00000002            

CLI$W_QDVALSIZ   00000004            CLI$_ONLEVL    = 00038100            PLM_B_NXTDESC    00000000            

CLI$W_RQSIZE     00000008            CLI$_ONOVF     = 00038108            PLM_B_TRMDESC    00000003            

CLI$W_SERVCOD    00000001            CLI$_OVRFLW    = 00038160            PLM_K_SIZE       00000004            

CLI$_ABFNAM    = 000381B8            CLI$_PARMDEL   = 00038110            PRC_B_DEFRADIX   00000092            

CLI$_ABKEYW    = 00038000            CLI$_PROC_ID   = 0003FFF1            PRC_B_EXMDEPMOD  00000091            

CLI$_ABVERB    = 00038008            CLI$_QUEJOBCRE = 0003FFF9            PRC_B_EXMDEPWID  00000090            

CLI$_BADRET    = 00038198            CLI$_REQPRMABS = 00038812            PRC_K_DEC      = 00000001            

CLI$_BADTEXT   = 000381B0            CLI$_RSLOVF    = 00038118            PRC_K_HEX      = 00000000            

CLI$_BUFOVF    = 00038018            CLI$_SKPDAT    = 00038120            PRC_K_LENGTH     000000A0            

CLI$_COMPLX    = 00038020            CLI$_SPARE0    = 00038010            PRC_K_OCT      = 00000002            

CLI$_CONFQUAL  = 00038802            CLI$_SPARE1    = 00038058            PRC_L_CLIWRK0    0000005C            

CLI$_CREQUEJOB = 0003884A            CLI$_STKOVF    = 00038128            PRC_L_CLIWRK1    00000060            

CLI$_DEFOVF    = 00038028            CLI$_SUBMITERR = 00038852            PRC_L_CLIWRK2    00000064            

CLI$_DEVALSPL  = 0003885A            CLI$_SYMDEL    = 00038130            PRC_L_CLIWRK3    00000068            

CLI$_DEVNOTFOR = 0003887A            CLI$_SYMOVF    = 00038138            PRC_L_CLIWRK4    0000006C            

CLI$_DEVNOTSPL = 00038862            CLI$_UNDFIL    = 00038188            PRC_L_ERRRAB     00000010            

CLI$_DIRECT    = 00038030            CLI$_UNDSYM    = 00038140            PRC_L_EXMDEPADR  0000008C            

CLI$_EXPSYN    = 00038038            CLI$_UNPROPARM = 00038170            PRC_L_EXTARG     00000078            

CLI$_FILOPN    = 00038190            CLI$_UNPROQUAL = 00038168            PRC_L_EXTBLK     00000070            

CLI$_ILLVAL    = 0003883A            CLI$_USGOTO    = 00038148            PRC_L_EXTCOD     00000080            

CLI$_IMCHNG    = 00038040            CLI$_VALCNVERR = 00038832            PRC_L_EXTHND     00000074            

CLI$_IMGFNF    = 00038872            CLI$_VALREQ    = 00038150            PRC_L_EXTPRM     0000007C            

CLI$_INSFPRM   = 00038048            CMDBUFSIZ      = 000001FC            PRC_L_INDEPTH    00000048            

CLI$_INVKEY    = 00038178            CMPPRM           0000009F R     03   PRC_L_INDFAB     0000001C            

CLI$_INVQUAL   = 0003880A            CTL$AG_CLIDATA   ********   X   03   PRC_L_INDINPRAB  00000014            

CLI$_INVQUALNUM= 0003881A            DCL$CLRSETLST    00000478 RG    03   PRC_L_INDOUTRAB  00000018            

CLI$_INVREQTYP = 00038822            DCL$CNVNUMDEC    ********   X   03   PRC_L_INPRAB     00000008            

CLI$_INVRSP    = 00038180            DCL$EXTNXTDESC   ********   X   03   PRC_L_LSTSTATUS  00000094            

CLI$_INVUIC    = 000381A8            DCL$EXTRSLDESC   ********   X   03   PRC_L_ONCTLY     0000009C            

CLI$_IVCHAR    = 00038050            DCL$FNDCMDQUAL   ********   X   03   PRC_L_ONERROR    00000058            

CLI$_IVDEVTYPE = 0003886A            DCL$GETCMD       0000059D RG    03   PRC_L_OUTRAB     0000000C            

CLI$_IVFNAM    = 000381C0            DCL$GETDCLWRK    ********   X   03   PRC_L_PROCUIC    00000098            

CLI$_IVKEYW    = 00038060            DCL$GETEXTDESC   ********   X   03   PRC_L_SAVAP      00000000            

CLI$_IVOPER    = 00038068            DCL$GETOPT       00000576 R     03   PRC_L_SAVFP      00000004            

CLI$_IVPROT    = 00038070            DCL$GETPARM      ********   X   03   PRC_L_SEVERITY   00000040            

CLI$_IVQLOC    = 00038078            DCL$GETPARMQUAL  ********   X   03   PRC_L_STACKLM    00000088            

CLI$_IVSYMB    = 00038080            DCL$GETQUALDESC  ********   X   03   PRC_L_STACKPT    00000084            

CLI$_IVVALU    = 00038088            DCL$HANDLQUAL    00000508 RG    03   PRC_L_STATUS     00000044            

CLI$_IVVERB    = 00038090            DCL$PROCMDQUAL   000004BA RG    03   PRC_L_SYMBOL     0000004C            

CLI$_MAXPARM   = 00038098            DCL$RPINIT       ********   X   03   PRC_M_CNTRLY   = 00000002            

CLI$_MULKEY    = 000381A0            DCL$SETDEFVAL    00000564 R     03   PRC_M_DBGQUAL  = 00000200            

CLI$_NOATFIL   = 000380A0            DCL$SETDESCADR   ********   X   03   PRC_M_DBGTRUE  = 00000400            

CLI$_NOCCAT    = 000380A8            DCL$SETQUALVAL   0000052E R     03   PRC_M_DISABL   = 00000004            

CLI$_NOCOMD    = 000380B0            DCL$SETSETLST    0000046F RG    03   PRC_M_EXIT     = 00000008            

CLI$_NOKEYW    = 000380B8            DCL$TSTSETLST    00000455 RG    03   PRC_M_GOEOF    = 00000001            

CLI$_NOLIST    = 000380C0            DCL$UTLSERV      00000000 RG    03   PRC_M_GOTO     = 00000010            

CLI$_NOOPTPRS  = 00038842            DCL$VALCNV       0000039C R     03   PRC_M_HANGUP   = 00001000            

CLI$_NOQUAL    = 000380C8            GBL...         = 00000000            PRC_M_IND      = 00000020            

CLI$_NORMAL    = 00030001            INPBUFSIZ      = 00000084            PRC_M_MODE     = 00000040            

CLI$_NOTNEG    = 000380D8            INPUT            0000034D R     03   PRC_M_NOCTLY   = 00004000            

CLI$_NOVALU    = 000380D0            INTERROR       = 0000001F            PRC_M_PAUSE    = 00002000            

CLI$_NOVALUE   = 0003882A            MSGBUFSIZ      = 00000084            PRC_M_USRDET   = 00000100            

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  28

SYMBOL TABLE                                                                                                                    (13)



PRC_M_VERIFY   = 00000080            PTR_S_TERM     = 00000004            RPW_AG_PRMLIM    00000040            

PRC_M_YLEVEL   = 00000800            PTR_S_TYPE     = 00000004            RPW_B_LSTDESC    00000009            

PRC_Q_ALLOCREG   00000020            PTR_S_VALUE    = 00000008            RPW_B_STRPARM    00000008            

PRC_Q_GLOBAL     00000028            PTR_V_FLAGS    = 00000014            RPW_K_HDRSIZ     00000040            

PRC_Q_LABEL      00000030            PTR_V_NEGATE   = 00000000            RPW_L_DCLWRK     00000004            

PRC_Q_LOCAL      00000038            PTR_V_OFFSET   = 00000008            RPW_L_USERCTX    00000000            

PRC_V_CNTRLY   = 00000001            PTR_V_TERM     = 00000018            RQBITS         = 0000000C            

PRC_V_DBGQUAL  = 00000009            PTR_V_TYPE     = 0000001C            RQDESC         = 00000004            

PRC_V_DBGTRUE  = 0000000A            PTR_V_VALUE    = 00000000            RQWORK         = 00000008            

PRC_V_DISABL   = 00000002            QUALACT          000001E1 R     03   RSB0             0000023A R     03   

PRC_V_EXIT     = 00000003            QUA_B_DEFVAL     00000002            RSLBUFSIZ      = 00000180            

PRC_V_GOEOF    = 00000000            QUA_B_IMAGE      00000005            RSLTPRS          00000073 R     03   

PRC_V_GOTO     = 00000004            QUA_B_INDEX      00000001            SCANQUAL         00000217 R     03   

PRC_V_HANGUP   = 0000000C            QUA_B_OFFSET     00000000            SETPRM           00000352 R     03   

PRC_V_IND      = 00000005            QUA_B_PARMCNT    00000008            SETQUAL          0000012D R     03   

PRC_V_MODE     = 00000006            QUA_G_CHNGLST    00000006            WRK_AB_BUFFER    FFFFFD38            

PRC_V_NOCTLY   = 0000000E            QUA_M_BATDEF   = 00000100            WRK_AG_RESULT    FFFFFBB4            

PRC_V_PAUSE    = 0000000D            QUA_M_CHNGLIST = 00000001            WRK_B_VERBTYP    FFFFFFC0            

PRC_V_USRDET   = 00000008            QUA_M_DEFTRUE  = 00000080            WRK_K_LENGTH     FFFFFBB4            

PRC_V_VERIFY   = 00000007            QUA_M_FILE     = 00000004            WRK_L_CHARPTR    FFFFFFFC            

PRC_V_YLEVEL   = 0000000B            QUA_M_IMAGE    = 00000400            WRK_L_CMDOUT     FFFFFFBC            

PRC_W_CLIFLAG    00000052            QUA_M_INTDEF   = 00000200            WRK_L_IMAGE      FFFFFFEC            

PRC_W_ERRIFI     00000052            QUA_M_KEYVAL   = 00004000            WRK_L_MAXPARM    FFFFFFE4            

PRC_W_FLAGS      00000054            QUA_M_LOCALKEY = 00000002            WRK_L_MINPARM    FFFFFFE8            

PRC_W_INPCHAN    00000050            QUA_M_NEG      = 00000040            WRK_L_PARMCNT    FFFFFFF0            

PRC_W_ONLEVEL    00000056            QUA_M_ONEVAL   = 00002000            WRK_L_PAROUT     FFFFFFF4            

PROCIO           0000023B R     03   QUA_M_OUTPUT   = 00000800            WRK_L_PROMPT     FFFFFFD0            

PRO_B_FLAGS      00000001            QUA_M_PARM     = 00000010            WRK_L_PROPTR     FFFFFFDC            

PRO_B_PROMPT     00000000            QUA_M_VAL      = 00000020            WRK_L_QUABLK     FFFFFFE0            

PRO_K_LENGTH     00000002            QUA_M_VALREQ   = 00001000            WRK_L_RSLNXT     FFFFFD34            

PRO_M_CONCAT   = 00000001            QUA_M_VERB     = 00000008            WRK_L_SAVAP      FFFFFFC8            

PRO_M_IMPCAT   = 00000002            QUA_S_MAXPARM  = 00000004            WRK_L_SAVFP      FFFFFFCC            

PRO_M_LIST     = 00000004            QUA_S_MINPARM  = 00000004            WRK_L_SAVSP      FFFFFFC4            

PRO_M_OPTION   = 00000008            QUA_V_BATDEF   = 00000008            WRK_M_COMMAND  = 00000002            

PRO_M_REQ      = 00000010            QUA_V_CHNGLIST = 00000000            WRK_M_IMCHNG   = 00000004            

PRO_M_STRING   = 00000020            QUA_V_DEFTRUE  = 00000007            WRK_M_INQUIRE  = 00000100            

PRO_V_CONCAT   = 00000000            QUA_V_FILE     = 00000002            WRK_M_NOSTAT   = 00000200            

PRO_V_IMPCAT   = 00000001            QUA_V_IMAGE    = 0000000A            WRK_M_PROMPT   = 00000008            

PRO_V_LIST     = 00000002            QUA_V_INTDEF   = 00000009            WRK_M_QUAL     = 00000010            

PRO_V_OPTION   = 00000003            QUA_V_KEYVAL   = 0000000E            WRK_M_QUOTE    = 00000020            

PRO_V_REQ      = 00000004            QUA_V_LOCALKEY = 00000001            WRK_M_RUNDWN   = 00000001            

PRO_V_STRING   = 00000005            QUA_V_MAXPARM  = 00000004            WRK_M_STAR     = 00000040            

PTR_K_BLANK    = 00000001            QUA_V_MINPARM  = 00000000            WRK_M_TRAILSPC = 00000400            

PTR_K_COLON    = 00000002            QUA_V_NEG      = 00000006            WRK_M_VERB     = 00000080            

PTR_K_COMDQUAL = 00000000            QUA_V_ONEVAL   = 0000000D            WRK_Q_IOSB       FFFFFFD4            

PTR_K_COMMA    = 00000005            QUA_V_OUTPUT   = 0000000B            WRK_V_COMMAND  = 00000001            

PTR_K_ENDLINE  = 00000004            QUA_V_PARM     = 00000004            WRK_V_IMCHNG   = 00000002            

PTR_K_LPAREN   = 00000007            QUA_V_VAL      = 00000005            WRK_V_INQUIRE  = 00000008            

PTR_K_PARAMETR = 00000003            QUA_V_VALREQ   = 0000000C            WRK_V_NOSTAT   = 00000009            

PTR_K_PARMQUAL = 00000001            QUA_V_VERB     = 00000003            WRK_V_PROMPT   = 00000003            

PTR_K_PLUS     = 00000004            QUA_W_FLAGS      00000003            WRK_V_QUAL     = 00000004            

PTR_K_QUALVALU = 00000002            QUA_W_PROMPT     00000009            WRK_V_QUOTE    = 00000005            

PTR_K_RPAREN   = 00000006            QUA_W_QUALIST    00000006            WRK_V_RUNDWN   = 00000000            

PTR_K_SLASH    = 00000003            RET0             00000072 R     03   WRK_V_STAR     = 00000006            

PTR_L_DESCR      00000000            RET1             0000039B R     03   WRK_V_TRAILSPC = 0000000A            

PTR_S_FLAGS    = 00000004            RET2             00000454 R     03   WRK_V_VERB     = 00000007            

PTR_S_OFFSET   = 0000000C            RPW_AG_BITS      00000020            WRK_W_FLAGS      FFFFFFFA            

RPDCL           - RESULT PARSE MAIN ROUTINE                      22-AUG-1978 01:22:18   VAX-11 MACRO X0.3-11               Page  29

SYMBOL TABLE                                                                                                                    (13)



WRK_W_IMGCHAN    FFFFFFF8            

_$$_           = 00000055            





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        000005E1      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

9266. BYTES LEFT IN FREE MEMORY POOL.

304. BYTES OF RECLAIMED MEMORY.

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

40 MLB DIR RDS - 788 GETS TO DEFINE 39 MACROS. 69 INTER. FILE WRITES. 

