MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      63  CHAIN TO NEXT INDIRECT FILE

   (1)     107  STACK INDIRECT FILE

   (1)     335  UNSTACK INDIRECT FILE SPECIFICATION

   (1)     403  UNSTACK NEXT INDIRECT FILE

   (1)     485  CREATE LOGICAL NAMES FOR 'INPUT' AND 'OUTPUT'

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	MCRINDRCT - INDIRECT FILE MANIPULATION ROUTINES

                                     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 ; D. N. CUTLER 2-MAY-77

                                     0000    24 ;

                                     0000    25 ; INDIRECT FILE MANIPULATION ROUTINES

                                     0000    26 ;

                                     0000    27 ; MACRO LIBRARY CALLS

                                     0000    28 ;

                                     0000    29  

                                     0000    30 	DEFCMDWRK			;DEFINE WORK AREA OFFSETS

                                     0000    31 	DEFERRCOD			;DEFINE ERROR/STATUS VALUES

                                     0000    32 	DEFPTRDSC			;DEFINE RESULT PARSE DESCRIPTOR FORMAT

                                     0000    33 	DEFSYMTBL			;DEFINE SYMBOL TABLE OFFSET AND VALUES

                                     0000    34 	IDFDEF				;DEFINE INDIRECT FRAME OFFSETS

                                     0000    35 	$PRDDEF				;PROCESS RMS DATA

                                     01B8    36 	$DEVDEF				;DEFINE DEVICE CHARACTERISTIC BITS

                                     01B8    37 	$FABDEF				;DEFINE FAB OFFSETS

                                     01B8    38 	$LOGDEF				;DEFINE LOG OFFSETS

                                     01B8    39 	$NAMDEF				;DEFINE NAM OFFSETS

                                     01B8    40 	$PSLDEF				;DEFINE PROCESSOR STATUS FIELDS

                                     01B8    41 	$RABDEF				;DEFINE RAB OFFSETS

                                     01B8    42  

                                     01B8    43 ;

                                     01B8    44 ; LOCAL SYMBOLS

                                     01B8    45 ;

                                     01B8    46  

                           00000008  01B8    47 SYMBOLS=8				;MAXIMUM NUMBER OF INDIRECT FILE SYMBOLS

                                     01B8    48  

                                     01B8    49 ;

                                     01B8    50 ; LOCAL DATA

                                     01B8    51 ;

                                     01B8    52  

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

                                     0000    54 INPFILE:				;INPUT FILE DEFAULT NAME STRING

                        44 4D 43 2E  0000    55 	.ASCII	/.CMD/			;

                                     0004    56 INPUTNAM:				;'INPUT' LOGICAL NAME TEXT

      54 55 50 4E 49 24 53 59 53 09  0004    57 	.ASCII	<9>/SYS$INPUT/		;

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   2

01                                                                                                                               (1)



                                     000E    58 OUTFILE:				;OUTPUT FILE DEFAULT NAME STRING

                        53 49 4C 2E  000E    59 	.ASCII	/.LIS/			;

                                     0012    60 OUTPUTNAM:				;'OUTPUT' LOGICAL NAME TEXT

   54 55 50 54 55 4F 24 53 59 53 0A  0012    61 	.ASCII	<10>/SYS$OUTPUT/	;

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   3

01              CHAIN TO NEXT INDIRECT FILE                                                                                      (1)



                                     001D    63 	.SBTTL	CHAIN TO NEXT INDIRECT FILE

                                     001D    64 ;+

                                     001D    65 ; MCR$CHAIN - CHAIN TO NEXT INDIRECT FILE

                                     001D    66 ;

                                     001D    67 ; THIS ROUTINE IS CALLED TO UNSTACK THE CURRENT INDIRECT LEVEL, THEN STACK

                                     001D    68 ; THE NEW AND PROCEED WITH THE EXECUTION OF THE NEW FILE AT SAME INDIRECT

                                     001D    69 ; LEVEL AS WHEN ENTERED.

                                     001D    70 ;

                                     001D    71 ; INPUTS:

                                     001D    72 ;

                                     001D    73 ;	THE INPUT FILE SPEC IS NEXT ON THE COMMAND LINE.

                                     001D    74 ;

                                     001D    75 ; OUTPUTS:

                                     001D    76 ;

                                     001D    77 ;	THE CURRENT INDIRECT FILE SPECIFICATION IS CLEARED FORM THE INDIRECT

                                     001D    78 ;	FILE STACK AND THE NEXT INDIRECT FILE IS PROCESSED.

                                     001D    79 ;

                                     001D    80 ;	R0 LOW BIT CLEAR INDICATES INDIRECT FILE PROCESSING FAILURE.

                                     001D    81 ;

                                     001D    82 ;		R0 = MCR$_ATLAST - INDIRECT FILE SPECIFICATION NOT LAST ITEM ON

                                     001D    83 ;			COMMAND LINE.

                                     001D    84 ;		R0 = MCR$_DEFOVF - ATTEMPT TO DEFINE MORE THAN EIGHT PARAMETERS.

                                     001D    85 ;		R0 = MCR$_IVINDF - INDIRECT FILES NOT ALLOWED AT CONTROL Y LEVEL.

                                     001D    86 ;		R0 = MCR$_STKOVF - INDIRECT FILE INTERNAL STACK OVERFLOW.

                                     001D    87 ;

                                     001D    88 ;	R0 LOW BIT SET INDICATES SUCCESSFUL COMPLETION.

                                     001D    89 ;

                                     001D    90 ;		R0 = MCR$_NORMAL - NORMAL COMPLETION.

                                     001D    91 ;-

                                     001D    92 MCR$CHAIN::				; CHAIN TO NEXT INDIRECT FILE

         14 AB         08 AB     D1  001D    93 	CMPL	PRC_L_INPRAB(R11),PRC_L_INDINPRAB(R11) ; INDIRECT LEVEL ZERO

                          10     13  0022    94 	BEQL	10$			; BR IF YES - DO NOT UNSTACK

                                     0024    95 	DISABLE				; DISABLE CONTROL Y/C AST'S

                     17FC 8F     BB  0027    96 	PUSHR	#^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,AP> ; SAVE REGISTERS

                          030C   30  002B    97 	BSBW	UNSTACK			; REMOVE ONE LEVEL OF INDIRECT

                     17FC 8F     BA  002E    98 	POPR	#^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,AP> ; RESTORE SAVED REGISTERS

                                     0032    99 	ENABLE				; ALLOW AST'S

                                     0034   100 10$:	SETBIT	PRC_V_IND,PRC_W_FLAGS(R11) ; FLAG PROCESSING INDIRECT FILE

                                     0038   101 	STACKIND			; STACK THE NEXT

                                     003B   102 	CLRBIT	PRC_V_IND,PRC_W_FLAGS(R11) ; RESET THE FLAG

            03            50     E9  003F   103 	BLBC	R0,20$			; BR IF OPEN WORKED OK

                          FFBB'  31  0042   104 	BRW	MCR$RESTART		; PROCESS THE NEW COMMAND FILE

                                 05  0045   105 20$:	RSB				; RETURN WITH ERROR

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   4

01              STACK INDIRECT FILE                                                                                              (1)



                                     0046   107 	.SBTTL	STACK INDIRECT FILE

                                     0046   108 ;+

                                     0046   109 ; MCR$STACKIND - STACK INDIRECT FILE

                                     0046   110 ;

                                     0046   111 ; THIS ROUTINE IS CALLED TO STACK THE CURRENT INDIRECT FILE LEVEL AND TO PARSE

                                     0046   112 ; AND OPEN THE NEXT INDIRECT FILE.

                                     0046   113 ;

                                     0046   114 ; INPUTS:

                                     0046   115 ;

                                     0046   116 ;	IT IS ASSUMED THAT THE INDIRECT FILE PROCESSING FLAG IS SET.

                                     0046   117 ;

                                     0046   118 ; OUTPUTS:

                                     0046   119 ;

                                     0046   120 ;	THE CURRENT INDIRECT FILE SPECIFICATION IS SAVED ON THE INDIRECT FILE

                                     0046   121 ;	STACK AND THE NEXT INDIRECT FILE IS PROCESSED.

                                     0046   122 ;

                                     0046   123 ;	R0 LOW BIT CLEAR INDICATES INDIRECT FILE PROCESSING FAILURE.

                                     0046   124 ;

                                     0046   125 ;		R0 = MCR$_ATLAST - INDIRECT FILE SPECIFICATION NOT LAST ITEM ON

                                     0046   126 ;			COMMAND LINE.

                                     0046   127 ;		R0 = MCR$_DEFOVF - ATTEMPT TO DEFINE MORE THAN EIGHT PARAMETERS.

                                     0046   128 ;		R0 = MCR$_STKOVF - INDIRECT FILE INTERNAL STACK OVERFLOW.

                                     0046   129 ;

                                     0046   130 ;	R0 LOW BIT SET INDICATES SUCCESSFUL COMPLETION.

                                     0046   131 ;

                                     0046   132 ;		R0 = MCR$_NORMAL - NORMAL COMPLETION.

                                     0046   133 ;-

                                     0046   134  

                                     0046   135 MCR$STACKIND::				;STACK INDIRECT FILE

                          02DF   30  0046   136 	BSBW	SETIND			;SETUP INDIRECT FILE PROCESSING

            5E         B8 AE     9E  0049   137 	MOVAB	-<<SYMBOLS+1>*8>(SP),SP ;ALLOCATE SPACE FOR SYMBOL DESCRIPTORS

                          7E     D4  004D   138 	CLRL	-(SP)			;CLEAR COUNT OF GENERATED SYMBOLS

                       FC AD     D7  004F   139 	DECL	WRK_L_CHARPTR(FP)	;BACK UP TO AT SIGN

            56            59     D0  0052   140 10$:	MOVL	R9,R6			;SAVE DISPLAY PARAMETER

                                     0055   141 	PROCFILE			;PROCESS FILE SPECIFICATION

            30            50     E9  0058   142 	BLBC	R0,29$			;IF LBC PARSE FAILURE

                                     005B   143 15$:	SETCHAR				;PEEK AT NEXT CHARACTER IN INPUT BUFFER

            50            2F     91  005E   144 	CMPB	#^A\/\,R0		;SLASH?

                          2A     12  0061   145 	BNEQ	30$			;IF NEQ NO

                                     0063   146 	MOVTOKN				;MOVE TERMINATOR AND GET NEXT TOKEN

         44 8F            62     91  0066   147 	CMPB	(R2),#^A/D/		;IS QUALIFIER DELETE?

                          15     13  006A   148 	BEQL	22$			;BR IF YES

         4F 8F            62     91  006C   149 	CMPB	(R2),#^A/O/		;HOW ABOUT OUTPUT?

                          16     12  0070   150 	BNEQ	28$			;BR IF UNRECOGNIZED

            50            3D     91  0072   151 	CMPB	#^A/=/,R0		;EQUAL SIGN TERMINATOR?

                          DB     13  0075   152 	BEQL	10$			;IF EQL YES

            50            3A     91  0077   153 	CMPB	#^A/:/,R0		;COLON TERMINATOR?

                          D6     13  007A   154 	BEQL	10$			;IF EQL YES

                                     007C   155 	STATUS	IVVALU			;SET INVALID VALUE SYNTAX

                          0A     11  007F   156 20$:	BRB	29$			;

                                     0081   157 22$:	SETBIT	#15,WRK_W_LOCFLG(FP)	;REMEMBER DELETE OPTION

                          D3     11  0086   158 	BRB	15$			;SCAN FOR ANOTHER OPTION

                                     0088   159 28$:	STATUS	IVKEYW			;UNRECOGNIZED QUALIFIER

                          59     11  008B   160 29$:	BRB	100$			;

                                     008D   161  

                                     008D   162 ;

                                     008D   163 ; FILE SPECIFICATIONS PARSED - PARSE SYMBOL DEFINITIONS

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   5

01              STACK INDIRECT FILE                                                                                              (1)



                                     008D   164 ;

                                     008D   165  

            58         04 AE     9E  008D   166 30$:	MOVAB	4(SP),R8		;GET ADDRESS OF SYMBOL DESCRIPTOR STORAGE

            52            59     D0  0091   167 40$:	MOVL	R9,R2			;MARK START OF PARAMETER STRING

                                     0094   168 	MOVCHAR				;LOOK AT PRECEEDING TERMINATOR

                          39     13  0097   169 	BEQL	80$			;BR IF END OF LINE IS THE FIRST BYTE

            50            20     91  0099   170 	CMPB	#^A/ /,R0		;WAS IT A BLANK

                          02     12  009C   171 	BNEQ	50$			;BR IF NO-IT COUNTS IN THE STRING

                          52     D6  009E   172 	INCL	R2			;ADJ POINTER OVER THE SPACE

                                     00A0   173 50$:	MOVCHAR				;COPY A CHARACTER FROM INPUT BUUFER

         FA AD            05     E0  00A3   174 	BBS	#WRK_V_QUOTE,WRK_W_FLAGS(FP),50$ ;LOOP IF IN A QUOTED STRING

                          F8         00A7       

                          05     13  00A8   175 	BEQL	60$			;BR IF END OF LINE

            50            20     91  00AA   176 	CMPB	#^A/ /,R0		;IS THIS A TERMINATOR

                          F1     12  00AD   177 	BNEQ	50$			;BR IF NO - KEEP LOOKING FOR TERMINATOR

            59            52     C3  00AF   178 60$:	SUBL3	R2,R9,R1		;FIND LENGTH OF SYMBOL

                          51         00B2       

                          51     D7  00B3   179 	DECL	R1			;REMOVE COUNT FOR TERMINATOR

                          1B     13  00B5   180 	BEQL	80$			;IF NULL STRING - NO MORE SYMBOLS

            62            22     91  00B7   181 	CMPB	#^A/"/,(R2)		;SYMBOL START WITH A QUOTE

                          07     12  00BA   182 	BNEQ	70$			;IF NO - LEAVE THE SYMBOL ALONE

                                     00BC   183 	COMPSTRING			;ELSE REMOVE THE QUOTE PAIRS

            52            51     C1  00BF   184 	ADDL3	R1,R2,R9		;RESET POINTER TO COMMADN BUFFER

                          59         00C2       

            88            51     7D  00C3   185 70$:	MOVQ	R1,(R8)+		;STORE SYMBOL DESCRIPTOR

            52            59     D0  00C6   186 	MOVL	R9,R2			;SET START OF NEXT SYMBOL

            6E            08     F3  00C9   187 	AOBLEQ	#SYMBOLS,(SP),50$	;ANY MORE SYMBOL DEFINITIONS ALLOWED?

                          D3         00CC       

                                     00CD   188 	STATUS	DEFOVF			;SET SYMBOL DEFINITION OVERFLOW

                          14     11  00D0   189 	BRB	100$			;

                                     00D2   190  

                                     00D2   191 ;

                                     00D2   192 ; FILE SPECIFICATION AND SYMBOL DEFINITIONS PARSED - STACK CURRENT FILE

                                     00D2   193 ;

                                     00D2   194  

            56       0084 CB     D0  00D2   195 80$:	MOVL	PRC_L_STACKPT(R11),R6	;GET CURRENT INDIRECT STACK POINTER

            58         A4 A6     9E  00D7   196 	MOVAB	-IDF_K_LENGTH(R6),R8	;CALCULATE NEW INDIRECT STACK POINTER

       0088 CB            58     D1  00DB   197 	CMPL	R8,PRC_L_STACKLM(R11)	;INDIRECT STACK OVERFLOW?

                          0A     1A  00E0   198 	BGTRU	RAISE			;IF GTRU NO

                                     00E2   199  

                                     00E2   200 ;

                                     00E2   201 ; INDIRECT FILES TOO DEEPLY NESTED

                                     00E2   202 ;

                                     00E2   203  

                                     00E2   204 	STATUS	STKOVF			;SET INDIRECT STACK OVERFLOW

                                     00E6   205 100$:	ERRMSG				;OUTPUT ERROR MESSAGE

                          01CB   31  00E9   206 	BRW	INDXIT			;

                                     00EC   207  

                                     00EC   208 ;

                                     00EC   209 ; SAVE CURRENT INDIRECT FILE INFORMATION AND OPEN NEW FILES

                                     00EC   210 ;

                                     00EC   211  

                       48 AB     D6  00EC   212 RAISE:	INCL	PRC_L_INDEPTH(R11)	;COUNT INDRECT LEVEL CHANGES

                          5A     DD  00EF   213 	PUSHL	R10			;SAVE POINTER INTO COMMAND WORK AREA

                          FF0C'  30  00F1   214 	BSBW	MCR$RUNDOWN		;RUN DOWN IMAGE AND INDIRECT LEVELS

                                 AA  00F4   215 	BICW	#<PRC_M_PAUSE!PRC_M_YLEVEL>,- ;CLEAR PAUSE AND ^Y LEVEL

         54 AB       2800 8F         00F5   216 		PRC_W_FLAGS(R11)	; IN PROCESS FLAGS WORD

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   6

01              STACK INDIRECT FILE                                                                                              (1)



       FD40 CD            8E     C3  00FA   217 	SUBL3	(SP)+,WRK_L_RSLNXT(FP),R0 ;CALCULATE LENGTH OF MOVE

                          50         00FF       

         6C AE            50     C0  0100   218 	ADDL	R0,<<<SYMBOLS+1>*8>+4+<8*4>>(SP) ;RELOCATE SAVED BUFFER POINTER

         70 AE            50     C0  0104   219 	ADDL	R0,<<<SYMBOLS+1>*8>+4+<9*4>>(SP) ;RELOCATE SAVED DESCRIPTOR POINTER

            53         30 BB     0F  0108   220 1$:	REMQUE	@PRC_Q_LABEL(R11),R3	;REMOVE PREVIOUS LABEL TABLE ENTRY

                          05     1D  010C   221 	BVS	2$			;BR WHEN NO MORE

                                     010E   222 	DEALLOCSYM			;DEALLOCATE THE SYMBOL

                          F5     11  0111   223 	BRB	1$			;TRY AGAIN

            56       0084 CB     D0  0113   224 2$:	MOVL	PRC_L_STACKPT(R11),R6	;GET CURRENT INDIRECT STACK POINTER

            58         A4 A6     9E  0118   225 	MOVAB	-IDF_K_LENGTH(R6),R8	;CALCULATE NEW INDIRECT STACK POINTER

       0084 CB            58     D0  011C   226 	MOVL	R8,PRC_L_STACKPT(R11)	;SET NEW INDIRECT STACK POINTER

            5C         1C AB     D0  0121   227 	MOVL	PRC_L_INDFAB(R11),AP	;GET ADDRESS OF INDIRECT FAB

         56 A6         52 AB     B0  0125   228 	MOVW	PRC_W_CLIFLAG(R11),IDF_W_FLAG(R6) ;SAVE COMMAND LEVEL FLAGS

         52 AB       0800 8F     B0  012A   229 	MOVW	#MCR_M_LOWER,PRC_W_CLIFLAG(R11)	;SET FLAG TO DEFAULT STATE

         F8 AD            0F     E5  0130   230 	BBCC	#15,WRK_W_LOCFLG(FP),5$	;BR IF NO DELETE OPTION REQUESTED

                          05         0134       

                                     0135   231 	SETBIT	#MCR_V_DELINP,PRC_W_CLIFLAG(R11) ;MARK FILE FOR DELETE ON CLOSE

         14 A6         38 AB     7D  013A   232 5$:	MOVQ	PRC_Q_LOCAL(R11),IDF_Q_LOCAL(R6) ;SAVE LOCAL SYMBOL TABLE LISTHEAD

         1C A6         30 AB     7D  013F   233 	MOVQ	PRC_Q_LABEL(R11),IDF_Q_LABEL(R6) ;SAVE LABEL SYMBOL TABLE LISTHEAD

         06 A6         56 AB     B0  0144   234 	MOVW	PRC_W_ONLEVEL(R11),IDF_W_ONLEVEL(R6) ;SAVE ON ERROR LEVEL NUMBER

         08 A6         58 AB     D0  0149   235 	MOVL	PRC_L_ONERROR(R11),IDF_L_ONERROR(R6) ;SAVE ON ERROR COMMAND TEXT

            50         30 AB     9E  014E   236 	MOVAB	PRC_Q_LABEL(R11),R0	;GET ADDRESS OF LABEL TABLE LISTHEAD

            60            50     D0  0152   237 	MOVL	R0,(R0)			;SET ADDRESS OF LISTHEAD AS FORWARD LINK

            80            80     D0  0155   238 	MOVL	(R0)+,(R0)+		;SET ADDRESS OF LISTHEAD AS BACKWARD LINK

            60            50     D0  0158   239 	MOVL	R0,(R0)			;SET ADDRESS OF LISTHEAD AS FORWARD LINK

            80            80     D0  015B   240 	MOVL	(R0)+,(R0)+		;SET ADDRESS OF LISTHEAD AS BACKWARD LINK

                       58 AB     D4  015E   241 	CLRL	PRC_L_ONERROR(R11)	;CLEAR ADDRESS OF ON ERROR COMMAND TEXT

         56 AB       0208 8F     B0  0161   242 	MOVW	#2@8!8,PRC_W_ONLEVEL(R11) ;RESET ON ERROR LEVEL TO ERROR

                                     0167   243 	ASSUME	IDF_W_OUTISI EQ IDF_W_OUTIFI+2

         02 A8         02 A6     D0  0167   244 	MOVL	IDF_W_OUTIFI(R6),IDF_W_OUTIFI(R8) ;SAVE PREVIOUS INTERNAL FILE INDEX

         10 A8         10 A6     D0  016C   245 	MOVL	IDF_L_OUTRABCTX(R6),IDF_L_OUTRABCTX(R8) ;SAME FOR RAB CONTEXT

         24 A6            10     28  0171   246 	MOVC	#16,IDF_T_OUTDVI(R6),IDF_T_OUTDVI(R8) ;SAVE PREVIOUS DEVICE NAME

                       24 A8         0175       

            50         14 AB     D0  0177   247 	MOVL	PRC_L_INDINPRAB(R11),R0	;SET CURRENT INDIRECT RAB POINTER

         08 AB            50     D1  017B   248 	CMPL	R0,PRC_L_INPRAB(R11)	;IS THIS THE PRIMARY INPUT STREAM?

                          18     13  017F   249 	BEQL	10$			;BR IF YES-THAT NEVER GETS CLOSED

         10 A0            06     28  0181   250 	MOVC	#6,RAB$W_RFA(R0),IDF_W_INPRFA(R6) ;SAVE PLACE IN FILE

                       50 A6         0185       

                                     0187   251 	SETBIT	MCR_V_OPNINP,IDF_W_FLAG(R6) ;MARK OPEN REQUIRED ON UNSTACK

         02 AC            66     B0  018C   252 	MOVW	IDF_W_INPIFI(R6),FAB$W_IFI(AP) ;SET INTERNAL FILE IDENTIFICATION

                                     0190   253 	$CLOSE	FAB=(AP)		;

            68            01     AE  0199   254 10$:	MNEGW	#1,IDF_W_INPIFI(R8)	;SET ILLEGAL INPUT FILE INTERNAL INDEX

            5A         70 AE     D0  019C   255 	MOVL	<<<SYMBOLS+1>*8>+4+<9*4>>(SP),R10 ;RETRIEVE ADDRESS OF DESCRIPTORS

                                     01A0   256 	GETDVAL				;GET INPUT FILE DESCRIPTOR VALUES

         35 AC            04     90  01A3   257 	MOVB	#4,FAB$B_DNS(AP)	;SET SIZE OF DEFAULT NAME STRING

         30 AC       FE55 CF     9E  01A7   258 	MOVAB	INPFILE,FAB$L_DNA(AP)	;SET ADDRESS OF DEFAULT NAME STRING

         34 AC            51     90  01AD   259 	MOVB	R1,FAB$B_FNS(AP)	;SET SIZE OF FILE NAME STRING

         2C AC            52     D0  01B1   260 	MOVL	R2,FAB$L_FNA(AP)	;SET ADDRESS OF FILE NAME STRING

         16 AC            02     90  01B5   261 	MOVB	#FAB$M_GET,FAB$B_FAC(AP) ;SET FILE ACCESS TYPE

         04 AC   000C0040 8F     D0  01B9   262 	MOVL	#FAB$M_INP!FAB$M_PPF!-	;SET FILE OPEN OPTIONS

                                     01C1   263 		FAB$M_SQO,FAB$L_FOP(AP)	;

                       02 AC     B4  01C1   264 	CLRW	FAB$W_IFI(AP)		;CLEAR INTERNAL FILE INDEX

                                     01C4   265 	$OPEN	FAB=(AP)		;OPEN INDIRECT INPUT FILE

            2A            50     E9  01CD   266 	BLBC	R0,20$			;IF LBC OPEN FAILURE

            57         28 AC     D0  01D0   267 	MOVL	FAB$L_NAM(AP),R7	;GET ADDRESS OF INDIRECT NAME BLOCK

            68         02 AC     B0  01D4   268 	MOVW	FAB$W_IFI(AP),IDF_W_INPIFI(R8) ;SAVE INPUT FILE INTERNAL INDEX

            56       00CC CC     9E  01D8   269 	MOVAB	PRD_G_ALTINPRAB(AP),R6	;GET ALTERNATE INPUT RAB

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   7

01              STACK INDIRECT FILE                                                                                              (1)



         18 A6         40 AC     D0  01DD   270 	MOVL	FAB$L_DEV(AP),RAB$L_CTX(R6) ;SAVE DEVICE CHARACTERISTICS

         0C A8         18 A6     D0  01E2   271 	MOVL	RAB$L_CTX(R6),IDF_L_INPRABCTX(R8) ;AND A COPY IN THE STACK FRAME

                          1C     28  01E7   272 	MOVC	#28,NAM$T_DVI(R7),-	;COPY DEVICE,FILE AND DIRECTORY ID'S

         34 A8         14 A7         01E9   273 		IDF_T_INPDVI(R8)	;INTO INDIRECT STACK FRAME

         3C A6            5C     D0  01ED   274 	MOVL	AP,RAB$L_FAB(R6)	;LINK FAB TO RAB

                                     01F1   275 	$CONNECT RAB=(R6)		;CONNECT TO NEW INPUT

            67            50     E9  01FA   276 20$:	BLBC	R0,30$			;IF LBC CONNECT FAILURE

         14 AB            56     D0  01FD   277 	MOVL	R6,PRC_L_INDINPRAB(R11)	;SET INDIRECT INPUT RAB

                                     0201   278 	GETDVAL				;GET OUTPUT FILE DESCRIPTOR VALUES

            71            50     E9  0204   279 	BLBC	R0,40$			;IF LBC NO OUTPUT FILE SPECIFIED

         30 AC       FE03 CF     9E  0207   280 	MOVAB	OUTFILE,FAB$L_DNA(AP)	;SET ADDRESS OF DEFAULT NAME STRING

         16 AC            01     90  020D   281 	MOVB	#FAB$M_PUT,FAB$B_FAC(AP) ;SET FILE ACCESS TYPE

         34 AC            51     90  0211   282 	MOVB	R1,FAB$B_FNS(AP)	;SET SIZE OF FILENAME STRING

         2C AC            52     D0  0215   283 	MOVL	R2,FAB$L_FNA(AP)	;SET ADDRESS OF FILE NAME STRING

         04 AC   00040040 8F     D0  0219   284 	MOVL	#FAB$M_PPF!FAB$M_SQO,FAB$L_FOP(AP) ;SET FILE OPEN OPTIONS

         1D AC            00     90  0221   285 	MOVB	#FAB$C_SEQ,FAB$B_ORG(AP) ;SET FILE ORGANIZATION TYPE

         1E AC            04     90  0225   286 	MOVB	#FAB$M_PRN,FAB$B_RAT(AP) ;SET RECORD ATTRIBUTE TYPE TO PRINT

         1F AC            03     90  0229   287 	MOVB	#FAB$C_VFC,FAB$B_RFM(AP) ;SET RECORD FORMAT TYPE-FIXED CONTROL

                       02 AC     B4  022D   288 	CLRW	FAB$W_IFI(AP)		;CLEAR INTERNAL FILE INDEX

                                     0230   289 	$CREATE	FAB=(AP)		;CREATE NEW OUTPUT FILE

            28            50     E9  0239   290 	BLBC	R0,30$			;IF LBC CREATION FAILURE

         02 A8         02 AC     B0  023C   291 	MOVW	FAB$W_IFI(AP),IDF_W_OUTIFI(R8) ;SAVE OUTPUT FILE INTERNAL INDEX

            52       0110 CC     9E  0241   292 	MOVAB	PRD_G_ALTOUTRAB(AP),R2	;GET ALTERNATE OUTPUT RAB ADDRESS

         18 A2         40 AC     D0  0246   293 	MOVL	FAB$L_DEV(AP),RAB$L_CTX(R2) ;SAVE DEVICE CHARACTERISTICS HERE

         10 A8         18 A2     D0  024B   294 	MOVL	RAB$L_CTX(R2),IDF_L_OUTRABCTX(R8) ;AND HERE AS WELL

         18 AB            62     9E  0250   295 	MOVAB	(R2),PRC_L_INDOUTRAB(R11) ;SET ADDRESS OF OUTPUT RAB

                       02 A2     B4  0254   296 	CLRW	RAB$W_ISI(R2) 		;CLEAR INTERNAL STREAM INDEX

         3C A2            5C     D0  0257   297 	MOVL	AP,RAB$L_FAB(R2)	;LINK FAB TO RAB

                                     025B   298 	$CONNECT RAB=(R2)		;CONNECT TO OUTPUT

            46            50     E9  0264   299 30$:	BLBC	R0,80$			;IF LBS CONNECT FAILURE

                          02     F0  0267   300 	INSV	#FAB$M_CR,#RAB$V_PPF_RAT,- ;SET TO USE IMPLIED

            08            06         0269   301 		#RAB$S_PPF_RAT,RAB$W_ISI(R2) ;CR/LF FOR OUTPUT

                       02 A2         026B       

         04 A8         02 A2     B0  026D   302 	MOVW	RAB$W_ISI(R2),IDF_W_OUTISI(R8) ;COPY OUTPUT ISI TO STACK FRAME

         14 A7            10     28  0272   303 	MOVC	#16,NAM$T_DVI(R7),IDF_T_OUTDVI(R8) ;SAVE DEVICE IDENTIFICATION

                       24 A8         0276       

                          01D7   30  0278   304 40$:	BSBW	CREATE			;CREATE LOGICAL NAMES FOR 'INPUT' AND 'OUTPUT'

            58            6E     9E  027B   305 	MOVAB	(SP),R8			;GET ADDRESS OF NUMBER OF SYMBOL DEFINITIONS

            5A            68     D0  027E   306 	MOVL	(R8),R10		;GET NUMBER OF SYMBOL DEFINITIONS

            88       3050 8F     3C  0281   307 	MOVZWL	#^A/P0/,(R8)+		;SET GENERATED SYMBOL PROTOTYPE

            57            08     D0  0286   308 	MOVL	#SYMBOLS,R7		;NUMBER OF SYMBOLS TO GENERATE

                          51     D4  0289   309 50$:	CLRL	R1			;ASSUME NO MORE SYMBOLS DEFINED

                          5A     D7  028B   310 	DECL	R10			;IS THERE ANY MORE TO DEFINE

                          03     19  028D   311 	BLSS	60$			;BR IF NO - DEFINE AS NULL STRING

            51            88     7D  028F   312 	MOVQ	(R8)+,R1		;GET VALUE DESCRIPTOR

                       01 AE     96  0292   313 60$:	INCB	1(SP)			;INCREMENT SYMBOL NUMBER

            53            02     D0  0295   314 	MOVL	#2,R3			;SET LENGTH OF SYMBOL NAME

            54            6E     9E  0298   315 	MOVAB	(SP),R4			;SET ADDRESS OF SYMBOL NAME

            55         38 AB     9E  029B   316 	MOVAB	PRC_Q_LOCAL(R11),R5	;GET ADDRESS OF LOCAL SYMBOL TABLE LISTHEAD

                                     029F   317 	ALLOCSYM			;ALLOCATE AND INSERT SYMBOL TABLE ENTRY

            08            50     E9  02A2   318 	BLBC	R0,80$			;IF LBC ALLOCATION FAILURE

            E1            57     F5  02A5   319 	SOBGTR	R7,50$			;ANY MORE SYMBOL TO PROCESS?

                                     02A8   320 70$:	STATUS	NORMAL			;SET NORMAL COMPLETION STATUS

                          0A     11  02AB   321 	BRB	INDXIT			;

                                     02AD   322  

                                     02AD   323 ;

                                     02AD   324 ; OPEN, CONNECT, OR SYMBOL ALLOCATION FAILURE

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   8

01              STACK INDIRECT FILE                                                                                              (1)



                                     02AD   325 ;

                                     02AD   326  

                                     02AD   327 80$:	ERRMSG				;OUTPUT ERROR MESSAGE

                          50     DD  02B0   328 	PUSHL	R0			;SAVE ERROR/STATUS VALUE

                          0085   30  02B2   329 	BSBW	UNSTACK			;UNSTACK PREVIOUS INDIRECT FILE

                          01     BA  02B5   330 	POPR	#^M<R0>			;RETRIEVE ERROR/STATUS VALUE

            5E         4C AE     9E  02B7   331 INDXIT:	MOVAB	<<SYMBOLS+1>*8>+4(SP),SP ;DEALLOCATE SYMBOL DESCRIPTOR STORAGE

                          50     DD  02BB   332 	PUSHL	R0			;SAVE FINAL STATUS

                          5A     11  02BD   333 	BRB	STKXIT			;

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page   9

01              UNSTACK INDIRECT FILE SPECIFICATION                                                                              (1)



                                     02BF   335 	.SBTTL	UNSTACK INDIRECT FILE SPECIFICATION

                                     02BF   336 ;+

                                     02BF   337 ; MCR$UNSTACK - UNSTACK INDIRECT FILE SPECIFICATION

                                     02BF   338 ;

                                     02BF   339 ; THIS ROUTINE IS CALLED TO CLOSE THE CURRENT INDIRECT FILE AND TO UNSTACK THE

                                     02BF   340 ; PREVIOUS SPECIFICATION. ALSO, ANY DATA FILES THAT ARE OPEN ARE CLOSED.

                                     02BF   341 ;

                                     02BF   342 ; INPUTS:

                                     02BF   343 ;

                                     02BF   344 ;	NONE.

                                     02BF   345 ;

                                     02BF   346 ; OUTPUTS:

                                     02BF   347 ;

                                     02BF   348 ;	THE CURRENT INDIRECT FILE IS CLOSED AND ALL LOCAL SYMBOLS FOR THE LEVEL

                                     02BF   349 ;	ARE DEALLOCATED. THE PREVIOUS INDIRECT FILE IS THEN UNSTACKED AND REOPENED.

                                     02BF   350 ;

                                     02BF   351 ;	R0 LOW BIT CLEAR INDICATES UNSUCCESSFUL COMPLETION.

                                     02BF   352 ;

                                     02BF   353 ;	R0 LOW BIT SET INDICATES SUCCESSFUL COMPLETION.

                                     02BF   354 ;

                                     02BF   355 ;		R0 = MCR$_NORMAL - NORMAL COMPLETION.

                                     02BF   356 ;-

                                     02BF   357  

                                     02BF   358 MCR$UNSTACK::				;UNSTACK INDIRECT FILE SPECIFICATION

                          67     10  02BF   359 	BSBB	SETIND			;SETUP INDIRECT FILE PROCESSING

                 00000000'8F     DD  02C1   360 	PUSHL	#SS$_NORMAL		;ASSUME NORMAL COMPLETION

         54 AB            04     E5  02C7   361 	BBCC	#PRC_V_GOTO,PRC_W_FLAGS(R11),10$ ;IF CLR, NO GOTO IN PROGRESS

                          11         02CB       

                                     02CC   362 	CLRBIT	PRC_V_GOEOF,PRC_W_FLAGS(R11) ; REMOVE RESIDUAL FLAG IF PRESENT

                          FD2D'  30  02D0   363 	BSBW	MCR$DEALGOTO		;DEALLOCATE THE SPACE

                                     02D3   364 	STATUS	USGOTO			;SET UNSATISFIED GOTO STATUS

            6E            50     D0  02D7   365 	MOVL	R0,(SP)			;SET COMPLETION STATUS

                                     02DA   366 	ERRMSG				;OUTPUT ERROR MESSAGE

                          5B     10  02DD   367 10$:	BSBB	UNSTACK			;UNSTACK NEXT INDIRECT FILE

                                 D1  02DF   368 	CMPL	PRC_L_INDINPRAB(R11),-	;IS CURRENT INDIRECT LEVEL

         08 AB         14 AB         02E0   369 		PRC_L_INPRAB(R11)	;EQUAL LEVEL 0?

                          33     12  02E4   370 	BNEQ	STKXIT			;BR IF NO

            57         70 AB     DE  02E6   371 	MOVAL	PRC_L_CLIWRK4+4(R11),R7	;POINT AT LAST DATA FILE SLOT

            58            04     D0  02EA   372 	MOVL	#4,R8			;SET NUMBER OF FILES TO CHECK

                          77     D5  02ED   373 20$:	TSTL	-(R7)			;FILE OPEN?

                          03     13  02EF   374 	BEQL	30$			;BR IF NO

                          FD0C'  30  02F1   375 	BSBW	MCR$CLSFIL		;CLOSE THE FILE IF OPEN

            F6            58     F5  02F4   376 30$:	SOBGTR	R8,20$			;CHECK ALL FILES?

            54         28 AB     7E  02F7   377 	MOVAQ	PRC_Q_GLOBAL(R11),R4	;GET START OF GLOBAL SYMBOL TABLE

            55            54     D0  02FB   378 	MOVL	R4,R5			;MAKE A COPY

            53            64     D0  02FE   379 40$:	MOVL	(R4),R3			;GET NEXT ENTRY

            55            53     D1  0301   380 	CMPL	R3,R5			;GET BACK TO THE BEGINNING

                          13     13  0304   381 	BEQL	60$			;BR IF YES

            01         0A A3     91  0306   382 	CMPB	SYM_B_TYPE(R3),#SYM_K_PERM ;PERMANENT SYMBOL?

                          05     12  030A   383 	BNEQ	50$			;BR IF NO

            54            53     D0  030C   384 	MOVL	R3,R4			;SET CURRENT AS PREVIOUS

                          ED     11  030F   385 	BRB	40$			;DEALLOCATE NEXT

            53            63     0F  0311   386 50$:	REMQUE	(R3),R3			;REMOVE ITEM FROM THE LIST

                                     0314   387 	DEALLOCSYM			;DEALLOCATE THE SYMBOL

                          E5     11  0317   388 	BRB	40$			;

                                     0319   389 60$:					;REFERENCE

                     17FF 8F     BA  0319   390 STKXIT:	POPR	#^M<R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,AP> ;RESTORE REGISTERS

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  10

01              UNSTACK INDIRECT FILE SPECIFICATION                                                                              (1)



                                     031D   391 	ENABLE				;ENABLE CONTROL Y/C AST'S

            51            01     E0  031F   392 	BBS	#WRK_V_COMMAND,R1,10$	;BR IF COMMAND WAS SET ON ENTRY

                          04         0322       

         FA AD            02     AA  0323   393 	BICW	#WRK_M_COMMAND,WRK_W_FLAGS(FP) ;CLEAR COMMAND IN PROGRESS

                                 05  0327   394 10$:	RSB				;

                                     0328   395  

                          01     BA  0328   396 SETIND:	POPR	#^M<R0>			;GET RETURN OUT OF STACK

                                     032A   397 	DISABLE				;DISABLE CONTROL Y/C AST'S

                     17FC 8F     BB  032D   398 	PUSHR	#^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,AP> ;SAVE REGISTERS

                       FA AD     DD  0331   399 	PUSHL	WRK_W_FLAGS(FP)		;SAVE PREVIOUS FLAGS

         FA AD            02     A8  0334   400 	BISW	#WRK_M_COMMAND,WRK_W_FLAGS(FP) ;SET COMMAND IN PROGRESS

                          60     17  0338   401 	JMP	(R0)			;RETURN

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  11

01              UNSTACK NEXT INDIRECT FILE                                                                                       (1)



                                     033A   403 	.SBTTL	UNSTACK NEXT INDIRECT FILE

                                     033A   404 ;

                                     033A   405 ; UNSTACK - UNSTACK NEXT INDIRECT FILE

                                     033A   406 ;

                                     033A   407 ; THIS ROUTINE IS CALLED TO CLOSE THE CURRENT INDIRECT FILE AND UNSTACK THE

                                     033A   408 ; CONTEXT INFORMATION FOR THE PREVIOUS LEVEL INDIRECT FILE.

                                     033A   409 ;

                                     033A   410  

                                     033A   411 UNSTACK:				;UNSTACK INDIRECT FILE

            5C         1C AB     D0  033A   412 	MOVL	PRC_L_INDFAB(R11),AP	;GET ADDRESS OF INDIRECT FAB

            58       0084 CB     D0  033E   413 	MOVL	PRC_L_STACKPT(R11),R8	;GET ADDRESS OF INDIRECT STACK FRAME

                          68     B5  0343   414 5$:	TSTW	(R8)			;ANY SUBROUTINE RETURN ADDRESS HERE

                          04     12  0345   415 	BNEQ	10$			;BR IF NONE HERE

                          88     7C  0347   416 	CLRQ	(R8)+			;REMOVE SUBROUTINE RETURN ADDRESS

                          F8     11  0349   417 	BRB	5$			;

         02 AC            68     B0  034B   418 10$:	MOVW	IDF_W_INPIFI(R8),FAB$W_IFI(AP) ;RESTORE INTERNAL FILE INDEX

         52 AB            07     E1  034F   419 	BBC	#MCR_V_DELINP,PRC_W_CLIFLAG(R11),15$ ;BR IF NO DELETE REQUESTED

                          12         0353       

            57         28 AC     D0  0354   420 	MOVL	FAB$L_NAM(AP),R7	;GET THE NAME BLOCK

                          1C     28  0358   421 	MOVC	#28,IDF_T_INPDVI(R8),-	;COPY INPUT FILE, DIRECTORY AND DEVICE

         14 A7         34 A8         035A   422 		NAM$T_DVI(R7)		;ID'S INTO NAME BLOCK FIELDS

                                 C8  035E   423 	BISL	#<FAB$M_DLT!FAB$M_NAM>,-;MARK FILE FOR DELETE BY NAME BLOCK

         04 AC   01008000 8F         035F   424 		FAB$L_FOP(AP)		;WHEN CLOSED BY RMS

                                     0366   425 15$:	$CLOSE	FAB=(AP)		;CLOSE INDIRECT INPUT FILE

                       04 AC     D4  036F   426 	CLRL	FAB$L_FOP(AP)		;REMOVE DELETE BIT FOR SURE

                                 B1  0372   427 	CMPW	IDF_W_OUTIFI(R8),-	;SEE IF THE OUTPUT FILE CHANGED

         5E A8         02 A8         0373   428 		IDF_W_OUTIFI+IDF_K_LENGTH(R8) ;FROM PREVIOUS COMMAND LEVEL

                          2B     13  0377   429 	BEQL	20$			;BR IF NO

         02 AC         02 A8     B0  0379   430 	MOVW	IDF_W_OUTIFI(R8),FAB$W_IFI(AP) ;RESTORE INTERNAL FILE INDEX

                                     037E   431 	$CLOSE	FAB=(AP)		;CLOSE INDIRECT OUTPUT FILE

            50         18 AB     D0  0387   432 	MOVL	PRC_L_INDOUTRAB(R11),R0	;GET POINTER TO INDIRECT OUTPUT RAB

                                 B0  038B   433 	MOVW	IDF_W_OUTISI+IDF_K_LENGTH(R8),- ;GET ISI FROM PREVIOUS OUTPUT

         02 A0         60 A8         038C   434 		RAB$W_ISI(R0)		;AND SET INTO RAB

                                 D0  0390   435 	MOVL	IDF_L_OUTRABCTX+IDF_K_LENGTH(R8),- ;RESTORE STACKED CONTEXT-

         18 A0         6C A8         0391   436 		RAB$L_CTX(R0)		;VALUE FROM PREVIOUS STACK FRAME

            51         0C AB     D0  0395   437 	MOVL	PRC_L_OUTRAB(R11),R1	;GET DIRECT OUTPUT RAB

         02 A1         02 A0     B1  0399   438 	CMPW	RAB$W_ISI(R0),RAB$W_ISI(R1) ;IS OUTPUT NESTED AT ALL?

                          04     12  039E   439 	BNEQ	20$			;BR IF YES

         18 AB            51     D0  03A0   440 	MOVL	R1,PRC_L_INDOUTRAB(R11)	;SET INDIRECT OUTPUT AND OUTPUT THE SAME

            53         38 BB     0F  03A4   441 20$:	REMQUE	@PRC_Q_LOCAL(R11),R3	;REMOVE NEXT ENTRY FROM LOCAL SYMBOL TABLE

                          06     1C  03A8   442 	BVC	30$			;IF VC ENTRY REMOVED

            53         30 BB     0F  03AA   443 	REMQUE	@PRC_Q_LABEL(R11),R3	;REMOVE NEXT ENTRY FROM LOCAL LABEL TABLE

                          05     1D  03AE   444 	BVS	40$			;IF VS TABLE EMPTY

                                     03B0   445 30$:	DEALLOCSYM			;DEALLOCATE SYMBOL ENTRY

                          EF     11  03B3   446 	BRB	20$			;

                                     03B5   447 40$:	ONRESET				;RESET ON ERROR PARAMETERS

            58         5C A8     9E  03B8   448 	MOVAB	IDF_K_LENGTH(R8),R8	;CALCULATE ADDRESS OF NEXT FRAME

       0084 CB            58     D0  03BC   449 	MOVL	R8,PRC_L_STACKPT(R11)	;SAVE UPDATED STACK POINTER

         52 AB         56 A8     B0  03C1   450 	MOVW	IDF_W_FLAG(R8),PRC_W_CLIFLAG(R11) ;RESET COMMAND FLAGS

                                 D0  03C6   451 	MOVL	PRC_L_INPRAB(R11),-	;ASSUME RETURNING TO LEVEL ZERO AND-

         14 AB         08 AB         03C7   452 		PRC_L_INDINPRAB(R11)	;SET INPUT AS INDIRECT INPUT ALSO

         56 A8            06     E1  03CB   453 	BBC	#MCR_V_OPNINP,IDF_W_FLAG(R8),50$ ;BR IF GOING TO LEVEL 0

                          6E         03CF       

            56       00CC CC     9E  03D0   454 	MOVAB	PRD_G_ALTINPRAB(AP),R6	;GET THE ALTERNATE INPUT RAB

         14 AB            56     D0  03D5   455 	MOVL	R6,PRC_L_INDINPRAB(R11)	;SET THAT IS INDIRECT INPUT RAB

                                 D0  03D9   456 	MOVL	IDF_L_INPRABCTX(R8),-	;RESTORE STACKED DEVICE CHARACTERISTICS-

         18 A6         0C A8         03DA   457 		RAB$L_CTX(R6)		;VALUE FROM STACK FRAME

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  12

01              UNSTACK NEXT INDIRECT FILE                                                                                       (1)



            57         28 AC     D0  03DE   458 	MOVL	FAB$L_NAM(AP),R7	;ADDRESS OF NAME BLOCK

                          1C     28  03E2   459 	MOVC	#28,IDF_T_INPDVI(R8),-	;COPY PREVIOUS INPUT DEVICE,FILE AND-

         14 A7         34 A8         03E4   460 		NAM$T_DVI(R7)		;DIRECTORY ID'S INTO NAME BLOCK

         16 AC            02     90  03E8   461 	MOVB	#FAB$M_GET,FAB$B_FAC(AP) ;SET FILE ACCESS TYPE

         04 AC   010C0040 8F     D0  03EC   462 	MOVL	#FAB$M_INP!FAB$M_PPF!-	;SET FILE OPEN OPTIONS

                                     03F4   463 		FAB$M_NAM!FAB$M_SQO,FAB$L_FOP(AP) ;

                       02 AC     B4  03F4   464 	CLRW	FAB$W_IFI(AP)		;MAKE SURE PREVIOUS CLOSE WORKED

                       34 AC     94  03F7   465 	CLRB	FAB$B_FNS(AP)		;REMOVE ANY RESIDUAL FILE NAME

                                     03FA   466 	$OPEN	FAB=(AP)		;OPEN PREVIOUS INPUT

                                     0403   467 	CLRBIT	FAB$V_NAM,FAB$L_FOP(AP)	;REMOVE OPEN BY NAME BLOCK FLAG

                       02 A6     B4  0408   468 	CLRW	RAB$W_ISI(R6)		;ZERO PREVIOUS INTERNAL SEQUENCE NUMBER

                                     040B   469 	$CONNECT RAB=(R6)		;CONNECT TO PREVIOUS INPUT

         14 A6         54 A8     B0  0414   470 	MOVW	IDF_W_INPRFA+4(R8),RAB$W_RFA4(R6) ;COPY RECORD FILE ADDRESS FROM

         10 A6         50 A8     D0  0419   471 	MOVL	IDF_W_INPRFA(R8),RAB$W_RFA(R6) ;FROM INDIRECT STACK TO RAB

                          1E     13  041E   472 	BEQL	50$			;BR IF PREVIOUS FILE AT TOP_OF_FILE

         1E A6            02     90  0420   473 	MOVB	#RAB$C_RFA,RAB$B_RAC(R6) ;SET ACCESS MODE TO RECORD FILE ADR

            5E       FF7C CE     9E  0424   474 	MOVAB	-INPBUFSIZ(SP),SP	;ALLOCATE A SCRATCH LINE BUFFER

         24 A6            6E     9E  0429   475 	MOVAB	(SP),RAB$L_UBF(R6)	;SET ADDRESS OF RECORD BUFFER

                                     042D   476 	$GET	RAB=(R6)		;GET THE PREVIOUS INDIRECT COMMAND

            5E       0084 CE     9E  0436   477 	MOVAB	INPBUFSIZ(SP),SP	;CLEAR TEMP BUFFER FROM THE STACK

                                     043B   478 	ASSUME	RAB$C_SEQ EQ 0

                       1E A6     94  043B   479 	CLRB	RAB$B_RAC(R6)		;SET ACCESS TO SEQUENTIAL

         38 AB         14 A8     7D  043E   480 50$:	MOVQ	IDF_Q_LOCAL(R8),PRC_Q_LOCAL(R11) ;RESTORE LOCAL SYMBOL TABLE LISTHEAD

         30 AB         1C A8     7D  0443   481 	MOVQ	IDF_Q_LABEL(R8),PRC_Q_LABEL(R11) ;RESTORE LOCAL LABEL TABLE LISTHEAD

         56 AB         06 A8     B0  0448   482 	MOVW	IDF_W_ONLEVEL(R8),PRC_W_ONLEVEL(R11) ;RESTORE ON ERROR LEVEL NUMBER

         58 AB         08 A8     D0  044D   483 	MOVL	IDF_L_ONERROR(R8),PRC_L_ONERROR(R11) ;RESTORE ADDRESS OF COMMAND TEXT

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  13

01              CREATE LOGICAL NAMES FOR 'INPUT' AND 'OUTPUT'                                                                    (1)



                                     0452   485 	.SBTTL	CREATE LOGICAL NAMES FOR 'INPUT' AND 'OUTPUT'

                                     0452   486 ;

                                     0452   487 ; CREATE - CREATE LOGICAL NAMES FOR 'INPUT' AND 'OUTPUT'

                                     0452   488 ;

                                     0452   489 ; THIS ROUTINE IS CALLED TO CREATE LOGICAL NAMES FOR 'INPUT' AND 'OUTPUT'

                                     0452   490 ; BASE ON THE CURRENT INDIRECT FILE DEPTH.

                                     0452   491 ;

                                     0452   492  

                                     0452   493 CREATE:					;

            50         14 AB     D0  0452   494 	MOVL	PRC_L_INDINPRAB(R11),R0	;GET INDIRECT INPUT RAB ADDRESS

            56         34 A8     9E  0456   495 	MOVAB	IDF_T_INPDVI(R8),R6	;GET ADDRESS OF INPUT DEVICE IDENTIFICATION

                                 AB  045A   496 	BICW3	#FAB$M_PPF_IND,-	;REMOVE INDIRECT BIT IF SET AND-

            68       4000 8F         045B   497 		IDF_W_INPIFI(R8),R7	;GET INPUT FILE INTERNAL INDEX

                          57         045F       

            5A       FBA0 CF     9E  0460   498 	MOVAB	INPUTNAM,R10		;GET ADDRESS OF INPUT LOGICAL NAME

                          14     10  0465   499 	BSBB	10$			;CREATE 'INPUT' LOGICAL NAME

            50         18 AB     D0  0467   500 	MOVL	PRC_L_INDOUTRAB(R11),R0	;GET INDIRECT OUTPUT RAB ADDRESS

            56         24 A8     9E  046B   501 	MOVAB	IDF_T_OUTDVI(R8),R6	;GET ADDRESS OF OUTPUT DEVICE IDENTIFICATION

                                 AB  046F   502 	BICW3	#FAB$M_PPF_IND,-	;REMOVE INDIRECT BIT IF SET AND-

         02 A8       4000 8F         0470   503 		IDF_W_OUTIFI(R8),R7	;GET OUTPUT FILE INTERNAL STREAM INDEX

                          57         0475       

            5A       FB98 CF     9E  0476   504 	MOVAB	OUTPUTNAM,R10		;GET ADDRESS OF OUTPUT LOGICAL NAME

            5E            10     C2  047B   505 10$:	SUBL	#16,SP			;ALLOCATE SPACE TO STORE DEVICE NAME

            50            86     9A  047E   506 	MOVZBL	(R6)+,R0		;GET LENGTH OF DEVICE NAME

            66            50     28  0481   507 	MOVC	R0,(R6),1(SP)		;COPY DEVICE IDENTIFICATION

                       01 AE         0484       

            6E         5F 8F     90  0486   508 	MOVB	#^A/_/,(SP)		;INSERT PHYSICAL DEVICE DESIGNATOR

            7E            1B     9A  048A   509 	MOVZBL	#27,-(SP)		;INSERT ESCAPE AND TYPE ZERO

         02 AE            57     B0  048D   510 	MOVW	R7,2(SP)		;INSERT INTERNAL FILE INDEX

                          6E     9F  0491   511 	PUSHAB	(SP)			;BUILD DESCRIPTOR FOR EQUIVALENCE NAME

            50            76     9A  0493   512 	MOVZBL	-(R6),R0		;GET LENGTH OF DEVICE IDENTIFICATION

                       05 A0     9F  0496   513 	PUSHAB	5(R0)			;SET LENGTH OF LOGICAL NAME

            50            5E     D0  0499   514 	MOVL	SP,R0			;SAVE ADDRESS OF EQUIVALENCE NAME DESCRIPTOR

            59            8A     9A  049C   515 	MOVZBL	(R10)+,R9		;GET LENGTH OF LOGICAL NAME

            7E            59     7D  049F   516 	MOVQ	R9,-(SP)		;BUILD LOGICAL NAME DESCRIPTOR

            51            5E     D0  04A2   517 	MOVL	SP,R1			;SAVE ADDRESS OF LOGICAL NAME DESCRIPTOR

         14 AB         08 AB     D1  04A5   518 	CMPL	PRC_L_INPRAB(R11),PRC_L_INDINPRAB(R11) ;INDIRECT LEVEL ZERO?

                          11     13  04AA   519 	BEQL	20$			;IF EQL YES

                                     04AC   520 	$CRELOG_S #LOG$C_PROCESS,(R1),(R0),#PSL$C_SUPER ;CREATE LOGICAL NAME

                          0D     11  04BB   521 	BRB	30$			;

                                     04BD   522 20$:	$DELLOG_S #LOG$C_PROCESS,(R1),#PSL$C_SUPER ;DELETE LOGICAL NAME

            5E            24     C0  04CA   523 30$:	ADDL	#36,SP			;CLEAN STACK

                                 05  04CD   524 	RSB				;

                                     04CE   525  

                                     04CE   526 	.END

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  14

SYMBOL TABLE                                                                                                                     (1)



$$.TMP1        = 00000001            CLI$_ONLEVL    = 00038100            DEV$V_GEN      = 00000011            

$$.TMP2        = 00000066            CLI$_ONOVF     = 00038108            DEV$V_IDV      = 0000001A            

BIT...         = 00000000            CLI$_OVRFLW    = 00038160            DEV$V_MBX      = 00000014            

CLI$_ABFNAM    = 000381B8            CLI$_PARMDEL   = 00038110            DEV$V_MNT      = 00000013            

CLI$_ABKEYW    = 00038000            CLI$_PROC_ID   = 0003FFF1            DEV$V_NET      = 0000000D            

CLI$_ABVERB    = 00038008            CLI$_QUEJOBCRE = 0003FFF9            DEV$V_ODV      = 0000001B            

CLI$_BADRET    = 00038198            CLI$_REQPRMABS = 00038812            DEV$V_RCK      = 0000001E            

CLI$_BADTEXT   = 000381B0            CLI$_RSLOVF    = 00038118            DEV$V_REC      = 00000000            

CLI$_BUFOVF    = 00038018            CLI$_SKPDAT    = 00038120            DEV$V_RND      = 0000001C            

CLI$_COMPLX    = 00038020            CLI$_SPARE0    = 00038010            DEV$V_RTM      = 0000001D            

CLI$_CONFQUAL  = 00038802            CLI$_SPARE1    = 00038058            DEV$V_SDI      = 00000004            

CLI$_CREQUEJOB = 0003884A            CLI$_STKOVF    = 00038128            DEV$V_SHR      = 00000010            

CLI$_DEFOVF    = 00038028            CLI$_SUBMITERR = 00038852            DEV$V_SPL      = 00000006            

CLI$_DEVALSPL  = 0003885A            CLI$_SYMDEL    = 00038130            DEV$V_SQD      = 00000005            

CLI$_DEVNOTFOR = 0003887A            CLI$_SYMOVF    = 00038138            DEV$V_SWL      = 00000019            

CLI$_DEVNOTSPL = 00038862            CLI$_UNDFIL    = 00038188            DEV$V_TRM      = 00000002            

CLI$_DIRECT    = 00038030            CLI$_UNDSYM    = 00038140            DEV$V_WCK      = 0000001F            

CLI$_EXPSYN    = 00038038            CLI$_UNPROPARM = 00038170            FAB$B_BID        00000000            

CLI$_FILOPN    = 00038190            CLI$_UNPROQUAL = 00038168            FAB$B_BKS        0000003E            

CLI$_ILLVAL    = 0003883A            CLI$_USGOTO    = 00038148            FAB$B_BLN        00000001            

CLI$_IMCHNG    = 00038040            CLI$_VALCNVERR = 00038832            FAB$B_DNS        00000035            

CLI$_IMGFNF    = 00038872            CLI$_VALREQ    = 00038150            FAB$B_FAC        00000016            

CLI$_INSFPRM   = 00038048            CMDBUFSIZ      = 000001FC            FAB$B_FNS        00000034            

CLI$_INVKEY    = 00038178            CREATE           00000452 R     03   FAB$B_FSZ        0000003F            

CLI$_INVQUAL   = 0003880A            DEV$M_ALL      = 00800000            FAB$B_ORG        0000001D            

CLI$_INVQUALNUM= 0003881A            DEV$M_AVL      = 00040000            FAB$B_RAT        0000001E            

CLI$_INVREQTYP = 00038822            DEV$M_CCL      = 00000002            FAB$B_RFM        0000001F            

CLI$_INVRSP    = 00038180            DEV$M_DIR      = 00000008            FAB$B_RTV        0000001C            

CLI$_INVUIC    = 000381A8            DEV$M_DMT      = 00200000            FAB$B_SHR        00000017            

CLI$_IVCHAR    = 00038050            DEV$M_ELG      = 00400000            FAB$C_BID      = 00000003            

CLI$_IVDEVTYPE = 0003886A            DEV$M_FOD      = 00004000            FAB$C_BLN        00000050            

CLI$_IVFNAM    = 000381C0            DEV$M_FOR      = 01000000            FAB$C_FIX      = 00000001            

CLI$_IVKEYW    = 00038060            DEV$M_GEN      = 00020000            FAB$C_HSH      = 00000030            

CLI$_IVOPER    = 00038068            DEV$M_IDV      = 04000000            FAB$C_IDX      = 00000020            

CLI$_IVPROT    = 00038070            DEV$M_MBX      = 00100000            FAB$C_MAXRFM   = 00000003            

CLI$_IVQLOC    = 00038078            DEV$M_MNT      = 00080000            FAB$C_REL      = 00000010            

CLI$_IVSYMB    = 00038080            DEV$M_NET      = 00002000            FAB$C_RFM_DFLT = 00000002            

CLI$_IVVALU    = 00038088            DEV$M_ODV      = 08000000            FAB$C_SEQ      = 00000000            

CLI$_IVVERB    = 00038090            DEV$M_RCK      = 40000000            FAB$C_UDF      = 00000000            

CLI$_MAXPARM   = 00038098            DEV$M_REC      = 00000001            FAB$C_VAR      = 00000002            

CLI$_MULKEY    = 000381A0            DEV$M_RND      = 10000000            FAB$C_VFC      = 00000003            

CLI$_NOATFIL   = 000380A0            DEV$M_RTM      = 20000000            FAB$K_BLN        00000050            

CLI$_NOCCAT    = 000380A8            DEV$M_SDI      = 00000010            FAB$L_ALQ        00000010            

CLI$_NOCOMD    = 000380B0            DEV$M_SHR      = 00010000            FAB$L_CTX        00000018            

CLI$_NOKEYW    = 000380B8            DEV$M_SPL      = 00000040            FAB$L_DEV        00000040            

CLI$_NOLIST    = 000380C0            DEV$M_SQD      = 00000020            FAB$L_DNA        00000030            

CLI$_NOOPTPRS  = 00038842            DEV$M_SWL      = 02000000            FAB$L_FNA        0000002C            

CLI$_NOQUAL    = 000380C8            DEV$M_TRM      = 00000004            FAB$L_FOP        00000004            

CLI$_NORMAL    = 00030001            DEV$M_WCK      = 80000000            FAB$L_JNL        00000020            

CLI$_NOTNEG    = 000380D8            DEV$V_ALL      = 00000017            FAB$L_MRN        00000038            

CLI$_NOVALU    = 000380D0            DEV$V_AVL      = 00000012            FAB$L_NAM        00000028            

CLI$_NOVALUE   = 0003882A            DEV$V_CCL      = 00000001            FAB$L_SDC        00000044            

CLI$_NULFIL    = 000380E0            DEV$V_DIR      = 00000003            FAB$L_STS        00000008            

CLI$_NUMBER    = 000380E8            DEV$V_DMT      = 00000015            FAB$L_STV        0000000C            

CLI$_ONCOMD    = 000380F0            DEV$V_ELG      = 00000016            FAB$L_XAB        00000024            

CLI$_ONERR     = 000380F8            DEV$V_FOD      = 0000000E            FAB$M_BIO      = 00000020            

CLI$_ONEVAL    = 00038158            DEV$V_FOR      = 00000018            FAB$M_BLK      = 00000008            

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                     (1)



FAB$M_BRO      = 00000040            FAB$V_CTG      = 00000014            IDF_Q_LOCAL      00000014            

FAB$M_CBT      = 00200000            FAB$V_DEL      = 00000002            IDF_T_INPDVI     00000034            

FAB$M_CIF      = 02000000            FAB$V_DFW      = 00000005            IDF_T_OUTDVI     00000024            

FAB$M_CR       = 00000002            FAB$V_DLT      = 0000000F            IDF_V_INPOPN   = 00000000            

FAB$M_CTG      = 00100000            FAB$V_DMO      = 0000000C            IDF_W_FLAG       00000056            

FAB$M_DEL      = 00000004            FAB$V_ESC      = 0000001B            IDF_W_INPDID     0000004A            

FAB$M_DFW      = 00000020            FAB$V_EXE      = 00000007            IDF_W_INPFID     00000044            

FAB$M_DLT      = 00008000            FAB$V_FTN      = 00000000            IDF_W_INPIFI     00000000            

FAB$M_DMO      = 00001000            FAB$V_GET      = 00000001            IDF_W_INPRFA     00000050            

FAB$M_ESC      = 08000000            FAB$V_INP      = 00000013            IDF_W_ONLEVEL    00000006            

FAB$M_EXE      = 00000080            FAB$V_JNL      = 00000016            IDF_W_OUTIFI     00000002            

FAB$M_FTN      = 00000001            FAB$V_KFO      = 0000001E            IDF_W_OUTISI     00000004            

FAB$M_GET      = 00000002            FAB$V_MSE      = 00000004            INDXIT           000002B7 R     03   

FAB$M_INP      = 00080000            FAB$V_MXV      = 00000001            INPBUFSIZ      = 00000084            

FAB$M_JNL      = 00400000            FAB$V_NAM      = 00000018            INPFILE          00000000 R     03   

FAB$M_KFO      = 40000000            FAB$V_NEF      = 0000000A            INPUTNAM         00000004 R     03   

FAB$M_MSE      = 00000010            FAB$V_NFS      = 00000010            LOG$B_AMOD       0000000E            

FAB$M_MXV      = 00000002            FAB$V_NIL      = 00000005            LOG$B_TABLE      0000000B            

FAB$M_NAM      = 01000000            FAB$V_OFP      = 0000001D            LOG$B_TYPE       0000000A            

FAB$M_NEF      = 00000400            FAB$V_ORG      = 00000004            LOG$C_GROUP    = 00000001            

FAB$M_NFS      = 00010000            FAB$V_POS      = 00000008            LOG$C_LENGTH     00000014            

FAB$M_NIL      = 00000020            FAB$V_PPF      = 00000012            LOG$C_NAMLENGTH= 00000040            

FAB$M_OFP      = 20000000            FAB$V_PPF_IND  = 0000000E            LOG$C_PROCESS  = 00000002            

FAB$M_POS      = 00000100            FAB$V_PPF_RAT  = 00000006            LOG$C_SYSTEM   = 00000000            

FAB$M_PPF      = 00040000            FAB$V_PRN      = 00000002            LOG$K_LENGTH     00000014            

FAB$M_PPF_IND  = 00004000            FAB$V_PUT      = 00000000            LOG$L_LTBL       00000004            

FAB$M_PPF_RAT  = 00003FC0            FAB$V_RCK      = 00000017            LOG$L_LTFL       00000000            

FAB$M_PRN      = 00000004            FAB$V_RWC      = 0000000B            LOG$L_MBXUCB     00000010            

FAB$M_PUT      = 00000001            FAB$V_RWO      = 00000007            LOG$T_NAME       00000014            

FAB$M_RCK      = 00800000            FAB$V_SCF      = 0000000E            LOG$W_GROUP      0000000C            

FAB$M_RWC      = 00000800            FAB$V_SHRDEL   = 00000002            LOG$W_SIZE       00000008            

FAB$M_RWO      = 00000080            FAB$V_SHRGET   = 00000001            MCR$ALLOCSYM     ********   X   03   

FAB$M_SCF      = 00004000            FAB$V_SHRPUT   = 00000000            MCR$CHAIN        0000001D RG    03   

FAB$M_SHRDEL   = 00000004            FAB$V_SHRUPD   = 00000003            MCR$CLSFIL       ********   X   03   

FAB$M_SHRGET   = 00000002            FAB$V_SPL      = 0000000D            MCR$COMPSTRING   ********   X   03   

FAB$M_SHRPUT   = 00000001            FAB$V_SQO      = 00000006            MCR$DEALGOTO     ********   X   03   

FAB$M_SHRUPD   = 00000008            FAB$V_SUP      = 00000002            MCR$DEALLOCSYM   ********   X   03   

FAB$M_SPL      = 00002000            FAB$V_TEF      = 0000001C            MCR$DISABLE      ********   X   03   

FAB$M_SQO      = 00000040            FAB$V_TMD      = 00000004            MCR$ERRORMSG     ********   X   03   

FAB$M_SUP      = 00000004            FAB$V_TMP      = 00000003            MCR$GETDVAL      ********   X   03   

FAB$M_TEF      = 10000000            FAB$V_TRN      = 00000004            MCR$MOVCHAR      ********   X   03   

FAB$M_TMD      = 00000010            FAB$V_UFM      = 0000001A            MCR$MOVTOKN      ********   X   03   

FAB$M_TMP      = 00000008            FAB$V_UFO      = 00000011            MCR$ONRESET      ********   X   03   

FAB$M_TRN      = 00000010            FAB$V_UPD      = 00000003            MCR$PROCFILE     ********   X   03   

FAB$M_UFM      = 04000000            FAB$V_UPI      = 00000006            MCR$RESTART      ********   X   03   

FAB$M_UFO      = 00020000            FAB$V_WCK      = 00000009            MCR$RUNDOWN      ********   X   03   

FAB$M_UPD      = 00000008            FAB$W_BLS        0000003C            MCR$SETCHAR      ********   X   03   

FAB$M_UPI      = 00000040            FAB$W_DEQ        00000014            MCR$STACKIND     00000046 RG    03   

FAB$M_WCK      = 00000200            FAB$W_IFI        00000002            MCR$UNSTACK      000002BF RG    03   

FAB$S_ORG      = 00000004            FAB$W_MRS        00000036            MCR_M_ALPHAN   = 00000002            

FAB$S_PPF_RAT  = 00000008            GBL...         = 00000000            MCR_M_DEFALT   = 00000008            

FAB$V_BIO      = 00000005            IDF_K_LENGTH     0000005C            MCR_M_DELINP   = 00000080            

FAB$V_BLK      = 00000003            IDF_L_INPRABCTX  0000000C            MCR_M_DOLLARS  = 00000100            

FAB$V_BRO      = 00000006            IDF_L_ONCTLY     00000058            MCR_M_ESCAPE   = 00000004            

FAB$V_CBT      = 00000015            IDF_L_ONERROR    00000008            MCR_M_ESCTRM   = 00000200            

FAB$V_CIF      = 00000019            IDF_L_OUTRABCTX  00000010            MCR_M_GLOBAL   = 00000400            

FAB$V_CR       = 00000001            IDF_Q_LABEL      0000001C            MCR_M_LOWER    = 00000800            

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                     (1)



MCR_M_OPNINP   = 00000040            NAM$M_WILD_NAME= 00000020            PRC_K_OCT      = 00000002            

MCR_M_RAD50    = 00000001            NAM$M_WILD_SFD1= 02000000            PRC_L_CLIWRK0    0000005C            

MCR_M_STRSUB   = 00001000            NAM$M_WILD_SFD2= 04000000            PRC_L_CLIWRK1    00000060            

MCR_V_ALPHAN   = 00000001            NAM$M_WILD_SFD3= 08000000            PRC_L_CLIWRK2    00000064            

MCR_V_DEFALT   = 00000003            NAM$M_WILD_SFD4= 10000000            PRC_L_CLIWRK3    00000068            

MCR_V_DELINP   = 00000007            NAM$M_WILD_SFD5= 20000000            PRC_L_CLIWRK4    0000006C            

MCR_V_DOLLARS  = 00000008            NAM$M_WILD_SFD6= 40000000            PRC_L_ERRRAB     00000010            

MCR_V_ESCAPE   = 00000002            NAM$M_WILD_SFD7= 80000000            PRC_L_EXMDEPADR  0000008C            

MCR_V_ESCTRM   = 00000009            NAM$M_WILD_TYPE= 00000010            PRC_L_EXTARG     00000078            

MCR_V_FORCMD   = 0000000E            NAM$M_WILD_UFD = 01000000            PRC_L_EXTBLK     00000070            

MCR_V_GLOBAL   = 0000000A            NAM$M_WILD_VER = 00000008            PRC_L_EXTCOD     00000080            

MCR_V_LOWER    = 0000000B            NAM$S_DIR_LVLS = 00000003            PRC_L_EXTHND     00000074            

MCR_V_OPNINP   = 00000006            NAM$T_DVI        00000014            PRC_L_EXTPRM     0000007C            

MCR_V_RAD50    = 00000000            NAM$V_DIR_LVLS = 00000015            PRC_L_INDEPTH    00000048            

MCR_V_STRSUB   = 0000000C            NAM$V_EXP_DEV  = 00000007            PRC_L_INDFAB     0000001C            

MSGBUFSIZ      = 00000084            NAM$V_EXP_DIR  = 00000006            PRC_L_INDINPRAB  00000014            

NAM$B_BID        00000000            NAM$V_EXP_NAME = 00000002            PRC_L_INDOUTRAB  00000018            

NAM$B_BLN        00000001            NAM$V_EXP_TYPE = 00000001            PRC_L_INPRAB     00000008            

NAM$B_CURLVL     00000038            NAM$V_EXP_VER  = 00000000            PRC_L_LSTSTATUS  00000094            

NAM$B_ESL        0000000B            NAM$V_GRP_MBR  = 00000013            PRC_L_ONCTLY     0000009C            

NAM$B_ESS        0000000A            NAM$V_HIGHVER  = 0000000F            PRC_L_ONERROR    00000058            

NAM$B_RSL        00000003            NAM$V_LOWVER   = 0000000E            PRC_L_OUTRAB     0000000C            

NAM$B_RSS        00000002            NAM$V_NODE     = 00000011            PRC_L_PROCUIC    00000098            

NAM$C_BID      = 00000002            NAM$V_PPF      = 00000010            PRC_L_SAVAP      00000000            

NAM$C_BLN        00000038            NAM$V_QUOTED   = 00000012            PRC_L_SAVFP      00000004            

NAM$C_BLN_DIRWC  00000050            NAM$V_WILDCARD = 00000008            PRC_L_SEVERITY   00000040            

NAM$C_DVI      = 00000010            NAM$V_WILD_DIR = 00000014            PRC_L_STACKLM    00000088            

NAM$C_MAXRSS   = 00000080            NAM$V_WILD_GRP = 00000018            PRC_L_STACKPT    00000084            

NAM$C_MAXRSSLCL= 00000060            NAM$V_WILD_MBR = 00000019            PRC_L_STATUS     00000044            

NAM$K_BLN        00000038            NAM$V_WILD_NAME= 00000005            PRC_L_SYMBOL     0000004C            

NAM$K_BLN_DIRWC  00000050            NAM$V_WILD_SFD1= 00000019            PRC_M_CNTRLY   = 00000002            

NAM$L_DIRWCC1    00000040            NAM$V_WILD_SFD2= 0000001A            PRC_M_DBGQUAL  = 00000200            

NAM$L_DIRWCC2    00000044            NAM$V_WILD_SFD3= 0000001B            PRC_M_DBGTRUE  = 00000400            

NAM$L_DIRWCC3    00000048            NAM$V_WILD_SFD4= 0000001C            PRC_M_DISABL   = 00000004            

NAM$L_DIRWCC4    0000004C            NAM$V_WILD_SFD5= 0000001D            PRC_M_EXIT     = 00000008            

NAM$L_DWC        00000038            NAM$V_WILD_SFD6= 0000001E            PRC_M_GOEOF    = 00000001            

NAM$L_ESA        0000000C            NAM$V_WILD_SFD7= 0000001F            PRC_M_GOTO     = 00000010            

NAM$L_FNB        00000034            NAM$V_WILD_TYPE= 00000004            PRC_M_HANGUP   = 00001000            

NAM$L_RLF        00000010            NAM$V_WILD_UFD = 00000018            PRC_M_IND      = 00000020            

NAM$L_RSA        00000004            NAM$V_WILD_VER = 00000003            PRC_M_MODE     = 00000040            

NAM$L_WCC        00000030            NAM$W_DID        0000002A            PRC_M_NOCTLY   = 00004000            

NAM$M_DIR_LVLS = 00E00000            NAM$W_DID_NUM    0000002A            PRC_M_PAUSE    = 00002000            

NAM$M_EXP_DEV  = 00000080            NAM$W_DID_RVN    0000002E            PRC_M_USRDET   = 00000100            

NAM$M_EXP_DIR  = 00000040            NAM$W_DID_SEQ    0000002C            PRC_M_VERIFY   = 00000080            

NAM$M_EXP_NAME = 00000004            NAM$W_FID        00000024            PRC_M_YLEVEL   = 00000800            

NAM$M_EXP_TYPE = 00000002            NAM$W_FID_NUM    00000024            PRC_Q_ALLOCREG   00000020            

NAM$M_EXP_VER  = 00000001            NAM$W_FID_RVN    00000028            PRC_Q_GLOBAL     00000028            

NAM$M_GRP_MBR  = 00080000            NAM$W_FID_SEQ    00000026            PRC_Q_LABEL      00000030            

NAM$M_HIGHVER  = 00008000            NAM$W_PRV_DID    0000003A            PRC_Q_LOCAL      00000038            

NAM$M_LOWVER   = 00004000            OUTFILE          0000000E R     03   PRC_V_CNTRLY   = 00000001            

NAM$M_NODE     = 00020000            OUTPUTNAM        00000012 R     03   PRC_V_DBGQUAL  = 00000009            

NAM$M_PPF      = 00010000            PRC_B_DEFRADIX   00000092            PRC_V_DBGTRUE  = 0000000A            

NAM$M_QUOTED   = 00040000            PRC_B_EXMDEPMOD  00000091            PRC_V_DISABL   = 00000002            

NAM$M_WILDCARD = 00000100            PRC_B_EXMDEPWID  00000090            PRC_V_EXIT     = 00000003            

NAM$M_WILD_DIR = 00100000            PRC_K_DEC      = 00000001            PRC_V_GOEOF    = 00000000            

NAM$M_WILD_GRP = 01000000            PRC_K_HEX      = 00000000            PRC_V_GOTO     = 00000004            

NAM$M_WILD_MBR = 02000000            PRC_K_LENGTH     000000A0            PRC_V_HANGUP   = 0000000C            

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                     (1)



PRC_V_IND      = 00000005            PTR_K_ENDLINE  = 00000004            RAB$M_FDL      = 00000040            

PRC_V_MODE     = 00000006            PTR_K_LPAREN   = 00000007            RAB$M_HSH      = 00000080            

PRC_V_NOCTLY   = 0000000E            PTR_K_PARAMETR = 00000003            RAB$M_KGE      = 00200000            

PRC_V_PAUSE    = 0000000D            PTR_K_PARMQUAL = 00000001            RAB$M_KGT      = 00400000            

PRC_V_USRDET   = 00000008            PTR_K_PLUS     = 00000004            RAB$M_LIM      = 00004000            

PRC_V_VERIFY   = 00000007            PTR_K_QUALVALU = 00000002            RAB$M_LOA      = 00002000            

PRC_V_YLEVEL   = 0000000B            PTR_K_RPAREN   = 00000006            RAB$M_LOC      = 00010000            

PRC_W_CLIFLAG    00000052            PTR_K_SLASH    = 00000003            RAB$M_MAS      = 00000020            

PRC_W_ERRIFI     00000052            PTR_L_DESCR      00000000            RAB$M_NLK      = 00100000            

PRC_W_FLAGS      00000054            PTR_S_FLAGS    = 00000004            RAB$M_NXR      = 00800000            

PRC_W_INPCHAN    00000050            PTR_S_OFFSET   = 0000000C            RAB$M_PMT      = 40000000            

PRC_W_ONLEVEL    00000056            PTR_S_TERM     = 00000004            RAB$M_PPF_IND  = 00004000            

PRD_G_ALTINPRAB  000000CC            PTR_S_TYPE     = 00000004            RAB$M_PPF_RAT  = 00003FC0            

PRD_G_ALTOUTRAB  00000110            PTR_S_VALUE    = 00000008            RAB$M_PTA      = 20000000            

PRD_G_FAB        00000000            PTR_V_EQUAL    = 00000000            RAB$M_RAH      = 00000200            

PRD_G_INPRAB     00000088            PTR_V_FLAGS    = 00000014            RAB$M_RLK      = 00080000            

PRD_G_NAM        00000050            PTR_V_NEGATE   = 00000000            RAB$M_RNE      = 01000000            

PRD_G_OUTRAB     00000154            PTR_V_OFFSET   = 00000008            RAB$M_RNF      = 08000000            

PRD_K_LENGTH     00000198            PTR_V_TERM     = 00000018            RAB$M_TMO      = 02000000            

PRD_K_XLENGTH    000001B8            PTR_V_TYPE     = 0000001C            RAB$M_TPT      = 00000002            

PRD_T_OUTFNM     000001A4            PTR_V_VALUE    = 00000000            RAB$M_UIF      = 00000010            

PRD_W_OUTDID     0000019E            RAB$B_BID        00000000            RAB$M_ULK      = 00040000            

PRD_W_OUTFID     00000198            RAB$B_BLN        00000001            RAB$M_WAT      = 00020000            

PSL$C_EXEC     = 00000001            RAB$B_KRF        00000035            RAB$M_WBH      = 00000400            

PSL$C_KERNEL   = 00000000            RAB$B_KSZ        00000034            RAB$S_PPF_RAT  = 00000008            

PSL$C_SUPER    = 00000002            RAB$B_MBC        00000037            RAB$V_ASY      = 00000000            

PSL$C_USER     = 00000003            RAB$B_MBF        00000036            RAB$V_BIO      = 0000000B            

PSL$M_CM       = 80000000            RAB$B_PSZ        00000034            RAB$V_CCO      = 0000001F            

PSL$M_CURMOD   = 03000000            RAB$B_RAC        0000001E            RAB$V_CVT      = 0000001A            

PSL$M_DV       = 00000080            RAB$B_ROP1       00000005            RAB$V_EOF      = 00000008            

PSL$M_FPD      = 08000000            RAB$B_ROP2       00000006            RAB$V_FDL      = 00000006            

PSL$M_FU       = 00000040            RAB$B_ROP3       00000007            RAB$V_HSH      = 00000007            

PSL$M_IPL      = 001F0000            RAB$B_TMO        0000001F            RAB$V_KGE      = 00000015            

PSL$M_IS       = 04000000            RAB$C_BID      = 00000001            RAB$V_KGT      = 00000016            

PSL$M_IV       = 00000020            RAB$C_BLN        00000044            RAB$V_LIM      = 0000000E            

PSL$M_PRVMOD   = 00C00000            RAB$C_KEY      = 00000001            RAB$V_LOA      = 0000000D            

PSL$M_SAFBITS  = 000037FF            RAB$C_RFA      = 00000002            RAB$V_LOC      = 00000010            

PSL$M_TBIT     = 00000010            RAB$C_SEQ      = 00000000            RAB$V_MAS      = 00000005            

PSL$M_TP       = 40000000            RAB$K_BLN        00000044            RAB$V_NLK      = 00000014            

PSL$S_CURMOD   = 00000002            RAB$L_BKT        00000038            RAB$V_NXR      = 00000017            

PSL$S_IPL      = 00000005            RAB$L_CTX        00000018            RAB$V_PMT      = 0000001E            

PSL$S_PRVMOD   = 00000002            RAB$L_DCT        00000038            RAB$V_PPF_IND  = 0000000E            

PSL$V_CM       = 0000001F            RAB$L_FAB        0000003C            RAB$V_PPF_RAT  = 00000006            

PSL$V_CURMOD   = 00000018            RAB$L_KBF        00000030            RAB$V_PTA      = 0000001D            

PSL$V_DV       = 00000007            RAB$L_PBF        00000030            RAB$V_RAH      = 00000009            

PSL$V_FPD      = 0000001B            RAB$L_RBF        00000028            RAB$V_RLK      = 00000013            

PSL$V_FU       = 00000006            RAB$L_RFA0       00000010            RAB$V_RNE      = 00000018            

PSL$V_IPL      = 00000010            RAB$L_RHB        0000002C            RAB$V_RNF      = 0000001B            

PSL$V_IS       = 0000001A            RAB$L_ROP        00000004            RAB$V_TMO      = 00000019            

PSL$V_IV       = 00000005            RAB$L_STS        00000008            RAB$V_TPT      = 00000001            

PSL$V_PRVMOD   = 00000016            RAB$L_STV        0000000C            RAB$V_UIF      = 00000004            

PSL$V_TBIT     = 00000004            RAB$L_UBF        00000024            RAB$V_ULK      = 00000012            

PSL$V_TP       = 0000001E            RAB$M_ASY      = 00000001            RAB$V_WAT      = 00000011            

PTR_K_BLANK    = 00000001            RAB$M_BIO      = 00000800            RAB$V_WBH      = 0000000A            

PTR_K_COLON    = 00000002            RAB$M_CCO      = 80000000            RAB$W_ISI        00000002            

PTR_K_COMDQUAL = 00000000            RAB$M_CVT      = 04000000            RAB$W_RFA        00000010            

PTR_K_COMMA    = 00000005            RAB$M_EOF      = 00000100            RAB$W_RFA4       00000014            

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  18

SYMBOL TABLE                                                                                                                     (1)



RAB$W_RSZ        00000022            WRK_V_ALL      = 00000000            

RAB$W_USZ        00000020            WRK_V_ASK      = 00000008            

RAISE            000000EC R     03   WRK_V_COMMAND  = 00000001            

RSLBUFSIZ      = 00000180            WRK_V_CONTINU  = 0000000A            

SETIND           00000328 R     03   WRK_V_EQUAL    = 00000003            

SS$_NORMAL       ********   X   03   WRK_V_IMCHNG   = 00000002            

STKXIT           00000319 R     03   WRK_V_QUAL     = 00000004            

SYMBOLS        = 00000008            WRK_V_QUOTE    = 00000005            

SYM_B_TYPE       0000000A            WRK_V_STAR     = 00000006            

SYM_K_DECIMAL  = 00000004            WRK_V_TRAILSPC = 00000009            

SYM_K_HEXDEC   = 00000005            WRK_V_VERB     = 00000007            

SYM_K_LOGICAL  = 00000002            WRK_W_FLAGS      FFFFFFFA            

SYM_K_OCTAL    = 00000003            WRK_W_LOCFLG     FFFFFFF8            

SYM_K_PERM     = 00000001            _$$_           = 000000EF            

SYM_K_STRING   = 00000000            

SYM_L_BL         00000004            

SYM_L_FL         00000000            

SYM_T_SYMBOL     0000000C            

SYM_W_SIZE       00000008            

SYS$CLOSE        ********  GX   03   

SYS$CONNECT      ********  GX   03   

SYS$CREATE       ********  GX   03   

SYS$CRELOG       ********   X   03   

SYS$DELLOG       ********   X   03   

SYS$GET          ********  GX   03   

SYS$OPEN         ********  GX   03   

UNSTACK          0000033A R     03   

WRK_AB_BUFFER    FFFFFD44            

WRK_AG_RESULT    FFFFFBC0            

WRK_B_CMDFLG     FFFFFFC9            

WRK_B_CURADX     FFFFFFCA            

WRK_B_PARMCNT    FFFFFFCB            

WRK_B_VERBTYP    FFFFFFC8            

WRK_K_LENGTH     FFFFFBC0            

WRK_L_CHARPTR    FFFFFFFC            

WRK_L_IMAGE      FFFFFFEC            

WRK_L_MAXPARM    FFFFFFCC            

WRK_L_MINPARM    FFFFFFD0            

WRK_L_PAROUT     FFFFFFF0            

WRK_L_PROMPT     FFFFFFF4            

WRK_L_QUABLK     FFFFFFE8            

WRK_L_RSLNXT     FFFFFD40            

WRK_L_SAVAP      FFFFFFD8            

WRK_L_SAVFP      FFFFFFDC            

WRK_L_SAVSP      FFFFFFD4            

WRK_M_ALL      = 00000001            

WRK_M_ASK      = 00000100            

WRK_M_COMMAND  = 00000002            

WRK_M_CONTINU  = 00000400            

WRK_M_EQUAL    = 00000008            

WRK_M_IMCHNG   = 00000004            

WRK_M_QUAL     = 00000010            

WRK_M_QUOTE    = 00000020            

WRK_M_STAR     = 00000040            

WRK_M_TRAILSPC = 00000200            

WRK_M_VERB     = 00000080            

WRK_Q_IOSB       FFFFFFE0            

MCRINDRCT       - INDIRECT FILE MANIPULATION ROUTINES            22-AUG-1978 01:42:37   VAX-11 MACRO X0.3-11               Page  19

PROGRAM SECTION SYNOPSIS                                                                                                         (1)







PROGRAM SECTION SYNOPSIS



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

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

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

MCR$ZCODE        000004CE      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

4304. BYTES LEFT IN FREE MEMORY POOL.

72. BYTES OF RECLAIMED MEMORY.

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

63 MLB DIR RDS - 1100 GETS TO DEFINE 51 MACROS. 95 INTER. FILE WRITES. 

