MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      61  ASK COMMAND 

   (1)     246  TEST STRING

   (1)     295  TEST SYMBOL

   (1)     318  EVALUATE ARITHMETIC ASSIGNMENT STATEMENT

   (1)     368  SET SYMBOL VALUE

   (1)     427  INCREMENT/DECREMENT A SYMBOL VALUE

   (1)     489  PROCESS STRING EQUATE STATEMENT

   (1)     525  EVALUATE STRING EXPRESSION

   (1)     597  GET A SYMBOL NAME AND CHECK STARTING CHARACTER

   (1)     656  GET A NUMERIC VALUE AND VERIFY LAST ON LINE

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	MCRSTAMNT - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCESSING

                                     0000     2 	.IDENT	/01/

                                     0000     3  

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1977

                                     0000     6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000     7 ;

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

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

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

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

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

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

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

                                     0000    15 ;

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

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

                                     0000    18 ; EQUIPMENT CORPORATION.

                                     0000    19 ;

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

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

                                     0000    22 ;

                                     0000    23 ; W. H. BROWN 7-DEC-1977

                                     0000    24 ;

                                     0000    25 ; ARITHMETIC ASSIGNMENT AND STRING EQUATE STATEMENT PROCESSING

                                     0000    26 ;

                                     0000    27  

                                     0000    28 ;

                                     0000    29 ; MACRO LIBRARY CALLS

                                     0000    30 ;

                                     0000    31  

                                     0000    32 	DEFCMDWRK			; DEFINE WORK AREA OFFSETS

                                     0000    33 	DEFERRCOD			; DEFINE ERROR/STATUS CODES

                                     0000    34 	DEFSYMTBL			; DEFINE SYMBOL TABLE OFFSETS

                                     0000    35 	$RABDEF				;

                                     0000    36  

                                     0000    37 ;

                                     0000    38 ; LOCAL DEFINITIONS

                                     0000    39 ;

                                     0000    40  

                           FFFFFFCC  0000    41 	WRK_L_LOLIM	= WRK_L_MAXPARM	; OVERLAY WORK DEFINITIONS

                           FFFFFFD0  0000    42 	WRK_L_HILIM	= WRK_L_MINPARM	; MAXIMUM VALUE FOR RESPONCE

                           FFFFFFE8  0000    43 	WRK_L_DEFAULT	= WRK_L_QUABLK	; DEFAULLT VALUE FOR NULL RESPONCE

                           FFFFFFEC  0000    44 	WRK_L_PRMTEND	= WRK_L_IMAGE	; END OF PROMPT STRING IN CMD BUFFER

                                     0000    45 ;

                                     0000    46 ; DEFINE LOCAL FLAGS

                                     0000    47 ;

                                     0000    48  

                                     0000    49 	_VIELD	ASK,0,<-		;

                                     0000    50 		<LOGICAL,,M>,-		; ASKING FOR A LOGICAL VALUE

                                     0000    51 		<NUMERIC,,M>,-		; ASKING FOR A NUMERIC

                                     0000    52 		<LIMITS,,M>,-		; LIMITS WERE SPECIFIED

                                     0000    53 		>

                                     0000    54 ;

                                     0000    55 ; LOCAL DATA

                                     0000    56 ;

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

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   2

01                                                                                                                               (1)



                                     0000    58  

                           4F 44 48  0000    59 RADIXC:	.ASCII	\HDO\			; RADIX INDICATOR CHARACTERS

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   3

01              ASK COMMAND                                                                                                      (1)



                                     0003    61 	.SBTTL	ASK COMMAND 

                                     0003    62 ;+

                                     0003    63 ; MCR$ASK - ASK COMMAND

                                     0003    64 ;

                                     0003    65 ; THIS ROUTINE IS CALLED AS AN INTERNAL COMMAND TO EXECUTE THE ASK

                                     0003    66 ;	MCR COMMAND.

                                     0003    67 ;

                                     0003    68 ; INPUTS:

                                     0003    69 ;

                                     0003    70 ;	R6 = COMMAND BUFFER DISPLAY PARAMETER.

                                     0003    71 ;	R9 = ADDRESS OF NEXT BYTE IN COMMAND BUFFER.

                                     0003    72 ;	R10 = RESULT PARSE DESCRIPTOR TABLE POINTER.

                                     0003    73 ;	R11 = BASE ADDRESS OF PROCESS WORK AREA.

                                     0003    74 ;	FP = BASE ADDRESS OF COMMAND WORK AREA.

                                     0003    75 ;

                                     0003    76 ; OUTPUTS:

                                     0003    77 ;

                                     0003    78 ;

                                     0003    79 ;	R0 LOW BIT CLEAR INDICATES COMMAND FAILURE

                                     0003    80 ;

                                     0003    81 ;	R0 LOW BIT SET INDICATES SUCCESSFUL COMPLETION.

                                     0003    82 ;

                                     0003    83 ;		R0 = MCR$_NORMAL - NORMAL COMPLETION.

                                     0003    84 ;-

                                     0003    85  

                                 00000003    86 	.PSECT	MCR$ZCODE,BYTE,RD,NOWRT

                                     0003    87  

                                     0003    88  

                                     0003    89 MCR$ASKN::				; ASK FOR A VALUE

                                     0003    90 	SETBIT	ASK_V_NUMERIC,WRK_W_LOCFLG(FP) ; FLAG AS DOING VALUE

                                     0007    91 MCR$ASKS::				; ASK STRING COMMAND

                       E8 AD     D4  0007    92 	CLRL	WRK_L_DEFAULT(FP)	; INIT DEFAULT TO ZERO

                                     000A    93 	SETNBLK				; LOOK AT NEXT CHARACTER IN INPUT STREAM

         5B 8F            50     91  000D    94 	CMPB	R0,#^A/[/		; IS THE LIMIT SPECIFICATION COMMING

                          59     12  0011    95 	BNEQ	GETPMT			; BR IF NO - GET THE PROMPT STRING

                                     0013    96 	MOVNCHR				; MOVE BRAKET AND LOOK AT NEXT CHARACTER

            3A            50     91  0016    97 	CMPB	R0,#^A/:/		; NULL LIMIT FIELD

                          05     12  0019    98 	BNEQ	10$			; BR IF VALUE FOLLOWS

                                     001B    99 	MOVNCHR				; COPY THE COLON TO THE COMMADN BUFFER

                          27     11  001E   100 	BRB	20$			; CHECK FOR DEFAULT VALUE

                          03A9   30  0020   101 10$:	BSBW	GETVAL			; GET THE LO LIMIT VALUE

            3E            50     E9  0023   102 	BLBC	R0,60$			; BR IF ERROR EVALUATING LIMIT

         CC AD            51     D0  0026   103 	MOVL	R1,WRK_L_LOLIM(FP)	; SAVE THE LIMIT VALUE

                                     002A   104 	MOVTERM	<:>			; MOVE THE TERMINATOR

                          2A     12  002E   105 	BNEQ	40$			; BR IF NOT CORRECT

                                     0030   106 	SETBIT	ASK_V_LIMITS,WRK_W_LOCFLG(FP) ; FLAG LIMITS SEEN

                          0395   30  0034   107 	BSBW	GETVAL			; NOW GET UPPER LIMIT

            2A            50     E9  0037   108 	BLBC	R0,60$			; BR IF ERROR EVALUATING EXPRESSION

                                     003A   109 	STATUS	NUMBER			; ASSUME VALUE INVALID

         CC AD            51     D1  003D   110 	CMPL	R1,WRK_L_LOLIM(FP)	; UPPER LIMIT GREATER THAN LOWER LIMIT

                          21     15  0041   111 	BLEQ	60$			; BR IF NO - THAT WILL NEVER WORK

         D0 AD            51     D0  0043   112 	MOVL	R1,WRK_L_HILIM(FP)	; SAVE UPPER LIMIT

                                     0047   113 20$:	MOVTERM	<:>			; COPY TERMINATOR TO COMMAND BUFFER

                          0D     12  004B   114 	BNEQ	40$			; BR IF NO - MAYBE NO DEFAULT VALUE

                          037C   30  004D   115 	BSBW	GETVAL			; GET THE VALUE

            11            50     E9  0050   116 	BLBC	R0,60$			; BR IF ERROR EVALUATING DEFAULT VALUE

         E8 AD            51     D0  0053   117 	MOVL	R1,WRK_L_DEFAULT(FP)	; SET DEFAULT VALUE

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   4

01              ASK COMMAND                                                                                                      (1)



                                     0057   118 	MOVCHAR				; COPY THE TERMINATOR TO COMMAND BUFFER

         5D 8F            50     91  005A   119 40$:	CMPB	R0,#^A/]/		; WAS IT CORRECT

                          0C     13  005E   120 	BEQL	GETPMT			; BR IF YES - GET THE PROMPT

                                     0060   121 50$:	STATUS	SYMDEL			; INVALID DELIMITER

                                 05  0064   122 60$:	RSB				;

                                     0065   123  

                                     0065   124 MCR$ASK::				; ASK FOR TRUE OF FALSE

                       E8 AD     D4  0065   125 	CLRL	WRK_L_DEFAULT(FP)	; INIT DEFAULT TO ZERO

                                 A8  0068   126 	BISW	#<ASK_M_NUMERIC!ASK_M_LOGICAL>,- ; INDICTE VALUE TO BE

         F8 AD            03         0069   127 		WRK_W_LOCFLG(FP)	; LOGICAL - WHICH IS NUMERIC!

                          02FB   30  006C   128 GETPMT:	BSBW	MCR$SYMNAM		; GET THE SYMBOL NAME

         F4 AD            89     9E  006F   129 	MOVAB	(R9)+,WRK_L_PROMPT(FP)	; SAVE START OF PROMPT STRING

            89       2A3E 8F     B0  0073   130 	MOVW	#^A/>*/,(R9)+		; SET PROMPT PREFIX

                                     0078   131 10$:	MOVCHAR				; COPY A BYTE INTO THE COMMAND BUFFER

                          FB     12  007B   132 	BNEQ	10$			; BR IF NOT EOL

                          59     D7  007D   133 	DECL	R9			; BACK OVER EOL MARKER

            59         F4 AD     C3  007F   134 	SUBL3	WRK_L_PROMPT(FP),R9,R1	; FIND LENGTH OF PROMPT STRING

                          51         0083       

            03            51     D1  0084   135 	CMPL	R1,#3			; PROMPT STRING HERE?

                          09     14  0087   136 	BGTR	40$			; BR IF YES

            50            53     7D  0089   137 	MOVQ	R3,R0			; USE SYMBOL NAME AS PROMPT

            89            81     90  008C   138 30$:	MOVB	(R1)+,(R9)+		; COPY SYMBOL TO PROMPT BUFFER

            FA            50     F5  008F   139 	SOBGTR	R0,30$			; COPY THE ENTIRE SYMBOL

         F8 AD            00     E0  0092   140 40$:	BBS	#ASK_V_LOGICAL,WRK_W_LOCFLG(FP),70$ ; BR IF GETTING LOGIACL

                          58         0096       

            89            20     90  0097   141 	MOVB	#^A/ /,(R9)+		; SEPARATE

            89       535B 8F     B0  009A   142 	MOVW	#^A/[S/,(R9)+		; SET PROTOTYPE SUFFIX

         F8 AD            01     E1  009F   143 	BBC	#ASK_V_NUMERIC,WRK_W_LOCFLG(FP),50$ ; BR IF ASKING FOR STRING

                          15         00A3       

            51       FF58 CF     9E  00A4   144 	MOVAB	RADIXC,R1		; SET ADDRESS OF RADIX CHARACTERS

            0A         CA AD     91  00A9   145 	CMPB	WRK_B_CURADX(FP),#10	; CHECK RADIX VALUE

                          04     13  00AD   146 	BEQL	44$			; BR IF DECIMAL

                          04     1A  00AF   147 	BGTRU	46$			; BR IF HEX

                          51     D6  00B1   148 	INCL	R1			; ADVANCE POINTER

                          51     D6  00B3   149 44$:	INCL	R1			; ETC

         FF A9            61     90  00B5   150 46$:	MOVB	(R1),-1(R9)		; SET RADIX INDIACTION CHARACTER

         F8 AD            02     E1  00B9   151 50$:	BBC	#ASK_V_LIMITS,WRK_W_LOCFLG(FP),55$ ; BR IF NO LIMITS SUPPLIED

                          19         00BD       

            89            20     90  00BE   152 	MOVB	#^A/ /,(R9)+		; INSERT A SEPARATOR

            89       3A52 8F     B0  00C1   153 	MOVW	#^A/R:/,(R9)+		; SET RANGE PREFIX

            50         CC AD     D0  00C6   154 	MOVL	WRK_L_LOLIM(FP),R0	; GET THE LO LIMIT

                          00E8   30  00CA   155 	BSBW	PUTVAL			; PUT THAT IN THE PROMPT

            89            2D     90  00CD   156 	MOVB	#^A/-/,(R9)+		; SEPARATE LO AND HI

            50         D0 AD     D0  00D0   157 	MOVL	WRK_L_HILIM(FP),R0	; GET THE TOP VALUE

                          00DE   30  00D4   158 	BSBW	PUTVAL			; ADD THAT TO PROMPT

            50         E8 AD     D0  00D7   159 55$:	MOVL	WRK_L_DEFAULT(FP),R0	; NOW GET DEFAULT VALUE

                          0B     13  00DB   160 	BEQL	60$			; BR IF NO DEFAULT HERE

            89       4420 8F     B0  00DD   161 	MOVW	#^A/ D/,(R9)+		; SHOW DEFAULT

            89            3A     90  00E2   162 	MOVB	#^A/:/,(R9)+		; INSERT SEPARATOR

                          00CD   30  00E5   163 	BSBW	PUTVAL			; INSERT THAT VALUE IN PROMPT

            89       3A5D 8F     B0  00E8   164 60$:	MOVW	#^A/]:/,(R9)+		; ADD FINAL SUFFIX

                          0B     11  00ED   165 	BRB	80$			;

   89   3A5D4E2F 595B203F 8F     7D  00EF   166 70$:	MOVQ	#^A\? [Y/N]:\,(R9)+	; INSERT LOGICAL QUERY SUFFIX

            59         F4 AD     C3  00FA   167 80$:	SUBL3	WRK_L_PROMPT(FP),R9,R0	; FIND FINAL LENGTH OF PROMPT

                          50         00FE       

         F4 BD            50     90  00FF   168 	MOVB	R0,@WRK_L_PROMPT(FP)	; SET COUNT OF THE STRING

            50            20     9A  0103   169 	MOVZBL	#^A/ /,R0		; FINALLY A SPACE

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   5

01              ASK COMMAND                                                                                                      (1)



                                     0106   170 	PUTCHAR				; INSERT AND CHECK FOR BUFFER OVERFLOW

                                 A8  0109   171 	BISW	#<WRK_M_ASK!WRK_M_COMMAND>,- ; FLAG QUERY AND COMMAND

         FA AD       0102 8F         010A   172 		WRK_W_FLAGS(FP)		; IN PROGESS NOW

         EC AD            59     D0  010F   173 	MOVL	R9,WRK_L_PRMTEND(FP)	; SAVE END OF PROMT STRING

                       F4 AD     DD  0113   174 100$:	PUSHL	WRK_L_PROMPT(FP)	; SAVE THE PROMPT STRING

                                     0116   175 	FORNBLK				; MAKE AN INPUT HAPPEN

                       F4 AD   8ED0  0119   176 	POPL	WRK_L_PROMPT(FP)	; RESET PROMPT INCASE RE-READ ON ERROR

                                 AA  011D   177 	BICW	#<MCR_M_ESCAPE!MCR_M_DEFALT>,- ; CLEAR ESCAPE AND DEFAULT

         52 AB            0C         011E   178 		PRC_W_CLIFLAG(R11)	; RESPONCE FLAGS

                                     0121   179 	SETNBLK				; PEEK AT FIRST CHARATER IN THE LINE

                          0E     12  0124   180 	BNEQ	120$			; BR IF STRING IS NON-NULL

            51         08 AB     D0  0126   181 	MOVL	PRC_L_INPRAB(R11),R1	; GET THE INPUT RAB JUST USED

            1B         0C A1     91  012A   182 	CMPB	RAB$L_STV(R1),#^X1B	; TERMINATE WITH ONLY ESCAPE

                          04     12  012E   183 	BNEQ	120$			; BR IF NOT ESCAPE

                                     0130   184 	SETBIT	MCR_V_ESCAPE,PRC_W_CLIFLAG(R11) ; REMEMBER ESCAPE LINE

         F8 AD            01     E1  0134   185 120$:	BBC	#ASK_V_NUMERIC,WRK_W_LOCFLG(FP),200$ ; BR IF STRING VALUE

                          2B         0138       

                          50     95  0139   186 	TSTB	R0			; EMPTY LINE?

                          0A     12  013B   187 	BNEQ	130$			; BR IF NO

            51         E8 AD     D0  013D   188 	MOVL	WRK_L_DEFAULT(FP),R1	; SET DEFUALT VALUE

                                     0141   189 	SETBIT	MCR_V_DEFALT,PRC_W_CLIFLAG(R11) ; MARK THAT ANSWER WAS DEFAULTED

                          1B     11  0145   190 	BRB	150$			;

         F8 AD            00     E1  0147   191 130$:	BBC	#ASK_V_LOGICAL,WRK_W_LOCFLG(FP),140$ ; BR IF NUMERIC QUERY

                          10         014B       

                          51     D4  014C   192 	CLRL	R1			; ASSUME ANSWER IS NO

         4E 8F            50     91  014E   193 	CMPB	R0,#^A/N/		; ASSUME CORRECTLY?

                          0E     13  0152   194 	BEQL	150$			; BR IF YES

                          51     D6  0154   195 	INCL	R1			; SET VALUE TO TRUE

         59 8F            50     91  0156   196 	CMPB	R0,#^A/Y/		; CHECK FOR POSITIVE RESPONCE

                          06     13  015A   197 	BEQL	150$			; BR IF YES

                          0255   30  015C   198 140$:	BSBW	GETNUMVAL		; GET VALUE OF THE EXPRESSION

            3B            50     E9  015F   199 	BLBC	R0,310$			; BR IF ERROR CONVERTING VALUE

                          24     11  0162   200 150$:	BRB	300$			;

                                     0164   201  

                                     0164   202 ;

                                     0164   203 ; ASSIGNMENT IS FOR STRING VALUE

                                     0164   204 ;

                                     0164   205  

            52            59     D0  0164   206 200$:	MOVL	R9,R2			; COPY CURRENT PLACE IN COMMAND BUFFER

         52 AB            0B     E1  0167   207 	BBC	#MCR_V_LOWER,PRC_W_CLIFLAG(R11),210$ ; BR IF NO LOWER CASE

                          04         016B       

                                     016C   208 	SETBIT	WRK_V_QUOTE,WRK_W_FLAGS(FP) ; SET "IN QUOTED STRING" FLAG

                                     0170   209 210$:	MOVCHAR				; COPY A CHARACTER TO COMMAND BUFFER

                          FB     12  0173   210 	BNEQ	210$			; BR BACK IF NOT END OF LINE

            59            52     C3  0175   211 	SUBL3	R2,R9,R1		; FIND LENGTH OF SYMBOL TEXT

                          51         0178       

                          51     D7  0179   212 	DECL	R1			; SUBTRACT OUT EOL

                          0B     13  017B   213 	BEQL	300$			; IF EQL NULL STRING VALUE

                          38     BB  017D   214 	PUSHR	#^M<R3,R4,R5>		; SAVE SYMBOL PARAMETERS

                                     017F   215 	COMPSTRING			; COMPRESS QUOTED STRING

            52            51     C1  0182   216 	ADDL3	R1,R2,R9		; RESET COMMAND BUFFER POINTER

                          59         0185       

                          38     BA  0186   217 	POPR	#^M<R3,R4,R5>		; RETRIEVE SYMBOL PARAMETERS

         F8 AD            02     E1  0188   218 300$:	BBC	#ASK_V_LIMITS,WRK_W_LOCFLG(FP),320$ ; BR IF NO LIMITS SET

                          1A         018C       

                                     018D   219 	STATUS	INVRSP			; ASSUME BAD VALUE RESPONCE

         CC AD            51     D1  0191   220 	CMPL	R1,WRK_L_LOLIM(FP)	; VALUE IN RANGE

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   6

01              ASK COMMAND                                                                                                      (1)



                          06     1F  0195   221 	BLSSU	310$			; BR IF NO

         D0 AD            51     D1  0197   222 	CMPL	R1,WRK_L_HILIM(FP)	; NOW CHECK UPPER LIMIT

                          0A     1B  019B   223 	BLEQU	320$			; BR IF VALUE IS OK

                                     019D   224 310$:	ERRMSG				; TELL THE BAD NEWS

            59         EC AD     D0  01A0   225 	MOVL	WRK_L_PRMTEND(FP),R9	; RESET POINTER INTO CMD BUFFER

                          FF6C   31  01A4   226 	BRW	100$			; READ THE LINE AGAIN

         F8 AD            01     E1  01A7   227 320$:	BBC	#ASK_V_NUMERIC,WRK_W_LOCFLG(FP),350$ ; BR IF STRING VALUE

                          03         01AB       

                          0091   31  01AC   228 	BRW	MCR$SETSYMVAL		; DEFINE A SYMBOL AS VALUE

                          0017   30  01AF   229 350$:	BSBW	MCR$TESTSTRING		; CHECK FOR ALPHA-NUMERIC AND RAD50

                          FE4B'  31  01B2   230 	BRW	MCR$ALLOCSYMD		; ALLOCATE AND INSERT SYMBOL IN TABLE

                                     01B5   231  

                                     01B5   232 ;

                                     01B5   233 ; LOCAL SUBROUTINE TO CONVERT A BINARY VALUE INTO ASCII AND STORE

                                     01B5   234 ; THE RESULT IN THE PROMPT STRING.

                                     01B5   235 ;

                                     01B5   236  

                          53     DD  01B5   237 PUTVAL:	PUSHL	R3			; SAVE A WORK REGISTER

                          53     D4  01B7   238 	CLRL	R3			; SET FOR ZERO SUPPRESS

            51         CA AD     9A  01B9   239 	MOVZBL	WRK_B_CURADX(FP),R1	; GET THE CURRENT RADIX

            52            59     D0  01BD   240 	MOVL	R9,R2			; SET ADDRESS TO STORE STRING

                          FE3D'  30  01C0   241 	BSBW	MCR$CNVNUM		; COVERT TO ASCII

            59            52     D0  01C3   242 	MOVL	R2,R9			; SET FINAL ERROR

                          08     BA  01C6   243 	POPR	#^M<R3>			; RESTORE REGISTER

                                 05  01C8   244 	RSB

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   7

01              TEST STRING                                                                                                      (1)



                                     01C9   246 	.SBTTL	TEST STRING

                                     01C9   247 ;+

                                     01C9   248 ; MCR$TESTSTRING - TEST IF A STRING CONTAINS ALPHA-NUMERIC AND RAD50 CHARS

                                     01C9   249 ;

                                     01C9   250 ; THIS SUBROUTINE IS CALLED TO CHECK A STRING TO CONTAIN ONLY

                                     01C9   251 ; ALPHABETIC AND NUMERIC AND/OR ONLY RAD50 CHARACTERS.

                                     01C9   252 ;

                                     01C9   253 ; INPUT:

                                     01C9   254 ;

                                     01C9   255 ;	R1 = LENGTH OF STRING

                                     01C9   256 ;	R2 = ADDRESS OF STRING

                                     01C9   257 ;

                                     01C9   258 ; OUTPUT:

                                     01C9   259 ;

                                     01C9   260 ;	PROCESS LEVEL FLAGS ARE SET IF THE STRING PASSES EITHER OF BOTH TESTS.

                                     01C9   261 ;-

                                     01C9   262  

                                     01C9   263 MCR$TESTSTRING::			;

                          0E     BB  01C9   264 	PUSHR	#^M<R1,R2,R3>		; SAVE STRING DESCRIPTOR AND WORK REG

                                 A8  01CB   265 	BISW	#<MCR_M_ALPHAN!MCR_M_RAD50>,- ; SET FLAGS THAT THE STRING

         52 AB            03         01CC   266 		PRC_W_CLIFLAG(R11)	; WAS ONLY RAD50 OR ALPHA/NUMERIC

                          51     D5  01CF   267 	TSTL	R1			; STRING LENGTH 0

                          30     13  01D1   268 	BEQL	60$			; BR IF NOTHING TO CHECK

            50            82     9A  01D3   269 10$:	MOVZBL	(R2)+,R0		; GET THE CHARACTER

         41 8F            50     91  01D6   270 	CMPB	R0,#^A/A/		; CHECK FOR LO LIMIT OF ALPHA

                          06     1F  01DA   271 	BLSSU	20$			; BR IF CAN'T BE ALPHA

         5A 8F            50     91  01DC   272 	CMPB	R0,#^A/Z/		; CHECK FOR HI LIMIT

                          1E     1B  01E0   273 	BLEQU	40$			; BR IF IT IS ALPHA

            30            50     91  01E2   274 20$:	CMPB	R0,#^A/0/		; CHECK FOR LO LIMIT OF NUMERIC

                          05     1F  01E5   275 	BLSSU	30$			; BR IF NOT ALPHA/NUMERIC

            39            50     91  01E7   276 	CMPB	R0,#^A/9/		; CHECK HI LIMIT OF ALPHA

                          14     1B  01EA   277 	BLEQU	40$			; BR IF IT IS NUMERIC

                                     01EC   278 30$:	CLRBIT	MCR_V_ALPHAN,PRC_W_CLIFLAG(R11) ; CLEAR ALPHA/NUMERIC FLAG

            2E            50     91  01F0   279 	CMPB	R0,#^A/./		; CHECK FOR SPECIAL RAD50 CHARACTER

                          0B     13  01F3   280 	BEQL	40$			; BR IF YES

            24            50     91  01F5   281 	CMPB	R0,#^A/$/		; CHECK FOR OTHER RAD50 CHAR

                          06     13  01F8   282 	BEQL	40$			; BR IF RAD50

                                     01FA   283 	CLRBIT	MCR_V_RAD50,PRC_W_CLIFLAG(R11) ; CLEAR RAD50 FLAG

                          03     11  01FE   284 	BRB	60$			; ALL DONE

            D0            51     F5  0200   285 40$:	SOBGTR	R1,10$			; BR IF MORE CHARACTERS TO CHECK

            52         5C AB     9E  0203   286 60$:	MOVAB	PRC_L_CLIWRK0(R11),R2	; SET ADDRESS OF 4 BYTE STRING BUFFER

                          53     D4  0207   287 	CLRL	R3			; SET FOR ZERO SUPPRESSION

            51            0A     9A  0209   288 	MOVZBL	#10,R1			; SET DECIMAL RADIX

            50            6E     D0  020C   289 	MOVL	(SP),R0			; AND THE NUMBER

                          FDEE'  30  020F   290 	BSBW	MCR$CNVNUM		; CONVERT LENGTH TO ASCIC

            82            2E     90  0212   291 	MOVB	#^A/./,(R2)+		; SET DECIMAL POINT

                          0E     BA  0215   292 	POPR	#^M<R1,R2,R3>		; RESTORE STRING DESCRIPTOR AND R3

                                 05  0217   293 	RSB				;

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   8

01              TEST SYMBOL                                                                                                      (1)



                                     0218   295 	.SBTTL	TEST SYMBOL

                                     0218   296 ;+

                                     0218   297 ; MCR$TEST - TEST A SYMBOL FOR LENGTH,ALPHANUMERIC AND RAD50

                                     0218   298 ;

                                     0218   299 ; THIS ROUTINE IS CALLED TO EXPAND A STRING SYMBOL AND TEST IT IN

                                     0218   300 ; THE SAME FASHION AS WHEN A STRING IS READ IN RESPONCE TO AN ASKS.

                                     0218   301 ;

                                     0218   302 ; INPUTS:

                                     0218   303 ;

                                     0218   304 ;	THE STRING SYMBOL IS NEXT ON THE COMMAND LINE

                                     0218   305 ;

                                     0218   306 ; OUTPUTS:

                                     0218   307 ;

                                     0218   308 ;	THE STRING IS EXPANEDED AND TESTED

                                     0218   309 ;-

                                     0218   310  

                                     0218   311 MCR$TEST::				; TEST A STRING

                          00CB   30  0218   312 	BSBW	MCR$EVLSTRING		; EXPAND THE STRING

            05            50     E9  021B   313 	BLBC	R0,10$			; BR IF ERROR

                          A9     10  021E   314 	BSBB	MCR$TESTSTRING		; TEST THE STRING

                                     0220   315 	STATUS	NORMAL			; SET STATUS TO NORMAL

                                 05  0223   316 10$:	RSB				;

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page   9

01              EVALUATE ARITHMETIC ASSIGNMENT STATEMENT                                                                         (1)



                                     0224   318 	.SBTTL	EVALUATE ARITHMETIC ASSIGNMENT STATEMENT

                                     0224   319 ;+

                                     0224   320 ; MCR$EVALUATE - EVALUATE ARITHMETIC ASSIGNMENT STATEMENT

                                     0224   321 ;

                                     0224   322 ; THIS ROUTINE IS CALLED TO PROCESS AN ARITHMETIC ASSIGNMENT STATEMENT.

                                     0224   323 ;

                                     0224   324 ; INPUTS:

                                     0224   325 ;

                                     0224   326 ;	R1 = LENGTH OF SYMBOL NAME.

                                     0224   327 ;	R2 = ADDRESS OF SYMBOL NAME.

                                     0224   328 ;	R6 = COMMAND BUFFER DISPLAY PARAMETER.

                                     0224   329 ;	R9 = ADDRESS OF NEXT BYTE IN COMMAND BUFFER.

                                     0224   330 ;	R10 = RESULT PARSE DESCRIPTOR TABLE POINTER.

                                     0224   331 ;	R11 = BASE ADDRESS OF PROCESS WORK AREA.

                                     0224   332 ;	FP = BASE ADDRESS OF COMMAND WORK AREA.

                                     0224   333 ;

                                     0224   334 ; OUTPUTS:

                                     0224   335 ;

                                     0224   336 ;	R0 LOW BIT CLEAR INDICATES EXPRESSION ANALYSIS OR ASSIGNMENT FAILURE.

                                     0224   337 ;

                                     0224   338 ;		R0 = MCR$_COMPLX - EXPRESSION TOO COMPLEX.

                                     0224   339 ;		R0 = MCR$_EXPSYN - EXPRESSION SYNTAX ERROR.

                                     0224   340 ;		R0 = MCR$_IVCHAR - INVALID NUMERIC CHARACTER.

                                     0224   341 ;		R0 = MCR$_IVOPER - INVALID EXPRESSION OPERATOR.

                                     0224   342 ;		R0 = MCR$_IVSYMB - INVALID SYMBOL CHARACTER.

                                     0224   343 ;		R0 = MCR$_SYMDEL - INVALID SYMBOL DELIMITER.

                                     0224   344 ;		R0 = MCR$_SYMOVF - SYMBOL TABLE OVERFLOW.

                                     0224   345 ;		R0 = MCR$_UNDSYM - UNDEFINED SYMBOL.

                                     0224   346 ;

                                     0224   347 ;	R0 LOW BIT SET INDICATES SUCCESSFUL COMPLETION.

                                     0224   348 ;

                                     0224   349 ;		R0 = MCR$_NORMAL - NORMAL COMPLETION.

                                     0224   350 ;-

                                     0224   351  

                                     0224   352 	.ENABL	LSB

                                     0224   353 MCR$SETT::				; DEFINE A VARIABLE AS TRUE

            57            01     D0  0224   354 	MOVL	#1,R7			; SET A TRUE VALUE

                          02     11  0227   355 	BRB	10$			; JOIN COMMON CODE

                                     0229   356 MCR$SETF::				; DEFINE A VARIABLE AS FALSE

                          57     D4  0229   357 	CLRL	R7			; GET VALUE

                          013C   30  022B   358 10$:	BSBW	MCR$SYMNAM		; GET THE SYMBOL NAME

            51            57     D0  022E   359 	MOVL	R7,R1			; SET THE VALUE

                                     0231   360 	SETBIT	ASK_V_LOGICAL,WRK_W_LOCFLG(FP) ; INDICATE DOING LOGICAL VALUE

                          09     11  0235   361 	BRB	MCR$SETSYMVAL		; DEFINE THE SYMBOL

                                     0237   362 MCR$SETN::				; SET A NUMERIC VALUE TO A SYMBOL

                          0130   30  0237   363 	BSBW	MCR$SYMNAM		; GET SYMBOL NAME AND CHECK SYNTAX

                          0177   30  023A   364 	BSBW	GETNUMVAL		; GET NUMERIC VALUE FROM COMMAND LINE

            55            50     E9  023D   365 	BLBC	R0,70$			; IF LBC EXPRESSION ANALYSIS ERROR

                                     0240   366 					; JOIN MCR$SETSYMVAL

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  10

01              SET SYMBOL VALUE                                                                                                 (1)



                                     0240   368 	.SBTTL	SET SYMBOL VALUE

                                     0240   369 ;+

                                     0240   370 ; MCR$SETSYMVAL - SET A SYMBOL VALUE

                                     0240   371 ;

                                     0240   372 ; THIS ROUTINE IS CALLED TO DEFINE A NUMERIC SYMBOL.

                                     0240   373 ;

                                     0240   374 ; INPUTS:

                                     0240   375 ;

                                     0240   376 ;	R1 = NUMERIC VALUE FOR SYMBOL

                                     0240   377 ;	R3 = LENGTH OF SYMBOL NAME

                                     0240   378 ;	R4 = ADDRESS OF SYMBOL NAME

                                     0240   379 ;	R5 = TABLE ADDRESS TO ENTER THE SYMBOL

                                     0240   380 ;

                                     0240   381 ;	WRK_B_CURADX = THE RADIX USED WHEN CONVERING THE NUMBER TO BINARY

                                     0240   382 ;

                                     0240   383 ; OUTPUTS:

                                     0240   384 ;

                                     0240   385 ;	R0 LOW BIT CLEAR INDICATES FAILURE TO ALLOCATE THE SYMBOL

                                     0240   386 ;	R0 LOW BIT SET INDICATES SYMBOL ENTRY WAS MADE

                                     0240   387 ;

                                     0240   388 ;	THE SYMBOL IS ENTERED WITH PROPER TYPE ACCORDING TO ITS

                                     0240   389 ;	DEFINITION.  IN ADDITION, DECIMAL SYMBOLS ARE STORED WITH

                                     0240   390 ;	A TRAILING "DOT".  HEX SYMBOLS WITH PRECEEDING "%X".

                                     0240   391 ;-

                                     0240   392 MCR$SETSYMVAL::				; DEFINE A SYMBOL VALUE

            5E            10     C2  0240   393 	SUBL	#16,SP			; MAKE A BUFFER FOR THE VALUE

            52            5E     D0  0243   394 	MOVL	SP,R2			; SET ADDRESS OF THE BUFFER

         F8 AD            00     E1  0246   395 	BBC	#ASK_V_LOGICAL,WRK_W_LOCFLG(FP),16$ ; BR IF NOT A LOGICAL

                          13         024A       

            50            02     9A  024B   396 	MOVZBL	#SYM_K_LOGICAL,R0	; SET SYMBOL TYPE

            62       0046 8F     B0  024E   397 	MOVW	#^A/F/,(R2)		; ASSUME VALUE IS FALSE

            03            51     E9  0253   398 	BLBC	R1,14$			; BR IF IT IS FALSE

            62            0E     80  0256   399 	ADDB	#^A/T/-^A/F/,(R2)	; ADJUST VALUE TO TRUE

            51            01     9A  0259   400 14$:	MOVZBL	#1,R1			; SET LENGTH OF SYMBOL

                          26     11  025C   401 	BRB	60$			;

            50            51     D0  025E   402 16$:	MOVL	R1,R0			; SET THE VALUE TO CONVERT

            51         CA AD     9A  0261   403 	MOVZBL	WRK_B_CURADX(FP),R1	; SET RADIX FOR CONVERSION

                          53     DD  0265   404 	PUSHL	R3			; SAVE THE SYMBOL SIZE 

                          53     D4  0267   405 	CLRL	R3			; SET TO CONVERT ZERO SUPPRESSED

                          FD94'  30  0269   406 	BSBW	MCR$CNVNUM		; CONVERT NUMBER TO ASCII

                          08     BA  026C   407 	POPR	#^M<R3>			; RESTORE SYMBOL SIZE

            52            5E     C3  026E   408 	SUBL3	SP,R2,R1		; FIND LENGTH OF THE VALUE STRING

                          51         0271       

            52            5E     D0  0272   409 	MOVL	SP,R2			; SET ADDRESS OF VALUE STRING

            50            03     9A  0275   410 	MOVZBL	#SYM_K_OCTAL,R0		; ASSUME OCTAL SYMBOL

                                     0278   411 	ASSUME	SYM_K_OCTAL+1 EQ SYM_K_DECIMAL

                                     0278   412 	ASSUME	SYM_K_OCTAL+2 EQ SYM_K_HEXDEC

            0A         CA AD     91  0278   413 	CMPB	WRK_B_CURADX(FP),#10.	; CHECK RADIX

                          06     19  027C   414 	BLSS	60$			; BR IF OCTAL

                          02     13  027E   415 	BEQL	50$			; BR IF DECIAML

                          50     D6  0280   416 	INCL	R0			; SET PROPER SYMBOL VALUE

                          50     D6  0282   417 50$:	INCL	R0			; ETC

            10            50     F0  0284   418 60$:	INSV	R0,#16,#8,R1		; INSERT SYMBOL TYPE

            51            08         0287       

                                     0289   419 	ALLOCSYMD			; ALLOCATE AND INSERT SYMBOL IN TABLE

            5E            10     C0  028C   420 	ADDL	#16,SP			; REMOVE CONVERTED VALUE FROM STACK

            03            50     E9  028F   421 	BLBC	R0,70$			; BR IF ERROR INSERTING IN TABLE

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  11

01              SET SYMBOL VALUE                                                                                                 (1)



                                     0292   422 	STATUS	NORMAL			; SET NORMAL COMPLETION STATUS

                                 05  0295   423 70$:	RSB				; 

                                     0296   424  

                                     0296   425 	.DSABL	LSB

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  12

01              INCREMENT/DECREMENT A SYMBOL VALUE                                                                               (1)



                                     0296   427 	.SBTTL	INCREMENT/DECREMENT A SYMBOL VALUE

                                     0296   428 ;+

                                     0296   429 ; MCR$INC - INCREMENT THE CURRENT VALUE OF A SYMBOL BY 1

                                     0296   430 ; MCR$DEC - DECREMENT THE CURRENT VALUE OF A SYMBOL BY 1

                                     0296   431 ;

                                     0296   432 ; THIS ROUTINE IS CALLED TO PROCESS THE INDIRECT COMMANDS .INC AND .DEC

                                     0296   433 ;

                                     0296   434 ; THE SYMBOL IS PARSED, THEN THE SYMBOL TABLE IS SEARCHED.  IF THE

                                     0296   435 ; SYMBOL IS NOT FOUND, AND ERROR RETURN IS TAKEN. IF FOUND THE

                                     0296   436 ; SYMBOLS VALUE IS CHANGED AND THE SYMBOL REDEFINED.

                                     0296   437 ;

                                     0296   438 ; INPUTS:

                                     0296   439 ;

                                     0296   440 ;	R6 = COMMAND BUFFER DISPLAY PARAMETER.

                                     0296   441 ;	R9 = ADDRESS OF NEXT BYTE IN COMMAND BUFFER.

                                     0296   442 ;	R10 = RESULT PARSE DESCRIPTOR TABLE POINTER.

                                     0296   443 ;	R11 = BASE ADDRESS OF PROCESS WORK AREA.

                                     0296   444 ;	FP = BASE ADDRESS OF COMMAND WORK AREA.

                                     0296   445 ;

                                     0296   446 ; OUTPUTS:

                                     0296   447 ;

                                     0296   448 ;	R0 LOW BIT CLEAR INDICATES SYMBOL ALLOCATION FAILURE.

                                     0296   449 ;

                                     0296   450 ;		R0 = MCR$_INSYMB - INVALID SYMBOL CHARACTER.

                                     0296   451 ;		R0 = MCR$_SYMDEL - INVALID SYMBOL DELIMITER.

                                     0296   452 ;		R0 = MCR$_SYMOVF - SYMBOL TABLE OVERFLOW.

                                     0296   453 ;

                                     0296   454 ;	R0 LOW BIT SET INDICATES SUCCESSFUL ALLOCATION.

                                     0296   455 ;

                                     0296   456 ;		R0 = MCR$_NORMAL - NORMAL COMPLETION.

                                     0296   457 ;-

                                     0296   458 MCR$DEC::				; SUBTRACT 1 FROM SYMBOL

         F8 AD            01     A8  0296   459 	BISW	#1,WRK_W_LOCFLG(FP)	; FLAG DOING A DECREMENT

                                     029A   460 MCR$INC::				; ADD 1 TO SYMBOL

                          00CD   30  029A   461 	BSBW	MCR$SYMNAM		; PARSE THE SYMBOL NAME

            57            53     7D  029D   462 	MOVQ	R3,R7			; SAVE THE DESCRIPTOR

                                     02A0   463 	SEARCH				; LOOK FOR THE SYMBOL

            30            50     E9  02A3   464 	BLBC	R0,20$			; BR IF SYMBOL NOT FOUND

                                     02A6   465 	ASSUME	PRC_K_HEX EQ 0

                                     02A6   466 	ASSUME	PRC_K_DEC EQ 1

                                     02A6   467 	ASSUME	PRC_K_OCT EQ 2

                                     02A6   468 	ASSUME	SYM_K_OCTAL  LT SYM_K_DECIMAL

                                     02A6   469 	ASSUME	SYM_K_HEXDEC GT SYM_K_DECIMAL

                          50     D4  02A6   470 	CLRL	R0			; ASSUME SYMBOL IS HEX

            04         0A A3     91  02A8   471 	CMPB	SYM_B_TYPE(R3),#SYM_K_DECIMAL ; CHECK AGAINST MID VALUE

                          04     13  02AC   472 	BEQL	2$			; BR IF DECIMAL

                          04     1A  02AE   473 	BGTRU	4$			; BR IF SYMBOL IS HEX

                          50     D6  02B0   474 	INCL	R0			; ADJUST CONVERSION RADIX

                          50     D6  02B2   475 2$:	INCL	R0			; ETC

            52            51     7D  02B4   476 4$:	MOVQ	R1,R2			; SET DESCRIPTOR OF STRING FOR CONVERT

            51            50     D0  02B7   477 	MOVL	R0,R1			; SET RADIX INDICATOR

                          FD43'  30  02BA   478 	BSBW	MCR$CNVASCBIN		; CONVERT ASCII TO BINARY

                          14     12  02BD   479 	BNEQ	10$			; BR IF CONVERSION ERROR

         CA AD            52     90  02BF   480 	MOVB	R2,WRK_B_CURADX(FP)	; SET CURRENT RADIX FOR SYMBOL

            53            57     7D  02C3   481 	MOVQ	R7,R3			; RESET SYMBOL DESCRIPTOR

                          51     D6  02C6   482 	INCL	R1			; ADD 1 TO VALUE

         F8 AD            00     E5  02C8   483 	BBCC	#0,WRK_W_LOCFLG(FP),5$	; BR IF COMMAND WAS INC

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  13

01              INCREMENT/DECREMENT A SYMBOL VALUE                                                                               (1)



                          03         02CC       

            51            02     C2  02CD   484 	SUBL	#2,R1			; UNDO INC AND DO DEC

                          FF6D   31  02D0   485 5$:	BRW	MCR$SETSYMVAL		; REDEFINE THE SYMBOL

                                     02D3   486 10$:	STATUS	IVCHAR			; SET ERROR

                                 05  02D6   487 20$:	RSB				;

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  14

01              PROCESS STRING EQUATE STATEMENT                                                                                  (1)



                                     02D7   489 	.SBTTL	PROCESS STRING EQUATE STATEMENT

                                     02D7   490 ;+

                                     02D7   491 ; MCR$SETS - PROCESS STRING EQUATE STATEMENT

                                     02D7   492 ;

                                     02D7   493 ; THIS ROUTINE IS CALLED TO PROCESS A STRING EQUATE STATEMENT.

                                     02D7   494 ;

                                     02D7   495 ; INPUTS:

                                     02D7   496 ;

                                     02D7   497 ;	R6 = COMMAND BUFFER DISPLAY PARAMETER.

                                     02D7   498 ;	R9 = ADDRESS OF NEXT BYTE IN COMMAND BUFFER.

                                     02D7   499 ;	R10 = RESULT PARSE DESCRIPTOR TABLE POINTER.

                                     02D7   500 ;	R11 = BASE ADDRESS OF PROCESS WORK AREA.

                                     02D7   501 ;	FP = BASE ADDRESS OF COMMAND WORK AREA.

                                     02D7   502 ;

                                     02D7   503 ; OUTPUTS:

                                     02D7   504 ;

                                     02D7   505 ;	R0 LOW BIT CLEAR INDICATES SYMBOL ALLOCATION FAILURE.

                                     02D7   506 ;

                                     02D7   507 ;		R0 = MCR$_INSYMB - INVALID SYMBOL CHARACTER.

                                     02D7   508 ;		R0 = MCR$_SYMDEL - INVALID SYMBOL DELIMITER.

                                     02D7   509 ;		R0 = MCR$_SYMOVF - SYMBOL TABLE OVERFLOW.

                                     02D7   510 ;

                                     02D7   511 ;	R0 LOW BIT SET INDICATES SUCCESSFUL ALLOCATION.

                                     02D7   512 ;

                                     02D7   513 ;		R0 = MCR$_NORMAL - NORMAL COMPLETION.

                                     02D7   514 ;-

                                     02D7   515 	.ENABL	LSB

                                     02D7   516  

                                     02D7   517 MCR$SETS::				; PROCESS STRING EQUATE STATEMENT

                          0090   30  02D7   518 	BSBW	MCR$SYMNAM		; GET SYMBOL AND CHECK SYNTAX

                          38     BB  02DA   519 	PUSHR	#^M<R3,R4,R5>		; SAVE SYMBOL PARAMETERS

                          08     10  02DC   520 	BSBB	MCR$EVLSTRING		; EVALUATE STRING EXPRESSION

                          38     BA  02DE   521 	POPR	#^M<R3,R4,R5>		; RESTORE SYMBOL VALUES

            45            50     E9  02E0   522 	BLBC	R0,25$			; BR IF ERROR ON STRING EXPANSION

                          FD1A'  31  02E3   523 	BRW	MCR$ALLOCSYMD		; CREATE THE SYMBOL

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  15

01              EVALUATE STRING EXPRESSION                                                                                       (1)



                                     02E6   525 	.SBTTL	EVALUATE STRING EXPRESSION

                                     02E6   526 ;+

                                     02E6   527 ; MCR$EVLSTRING - EVALUATE STRING EXPRESSION

                                     02E6   528 ;

                                     02E6   529 ; EXPAND A STRING EXPRESSION TO ITS EQUIVALENT STRING

                                     02E6   530 ;

                                     02E6   531 ; INPUTS:

                                     02E6   532 ;

                                     02E6   533 ;	THE COMMAND IS PARSED UP TO THE POINT OF THE EXPRESSION

                                     02E6   534 ;

                                     02E6   535 ; OUTPUT:

                                     02E6   536 ;

                                     02E6   537 ;	THE EXPANDED STRING IS IN THE COMMAND BUFFER

                                     02E6   538 ;	R1 = SIZE OF THE STRING

                                     02E6   539 ;	R2 = ADDRESS OF THE STRING

                                     02E6   540 ;

                                     02E6   541 ;	REGISTER R0 TO R5 ARE USED

                                     02E6   542 ;-

                                     02E6   543  

                                     02E6   544 MCR$EVLSTRING::				;

         CC AD            59     D0  02E6   545 	MOVL	R9,WRK_L_LOLIM(FP)	; SAVE START OF STRING

            56            59     D0  02EA   546 10$:	MOVL	R9,R6			; MARK CURRENT PLACE IN COMMAND BUFFER

         D0 AD            56     D0  02ED   547 	MOVL	R6,WRK_L_HILIM(FP)	; ALSO IN WORK AREA

                                     02F1   548 	GETOKEN				; GET NEXT TOKEN FOR COMMAND LINE

                          63     13  02F4   549 	BEQL	80$			; BR IF NO MORE

            22            62     91  02F6   550 	CMPB	(R2),#^A/"/		; STRING LITERAL?

                          05     12  02F9   551 	BNEQ	20$			; BR IF NO

                                     02FB   552 	COMPSTRING			; REMOVE QUOTES

                          44     11  02FE   553 	BRB	60$			;

                                     0300   554 20$:	SEARCH				; SEARCH FOR THE SYMBOL

            22            50     E9  0303   555 	BLBC	R0,25$			; BR IF SEARCH FAILED

                                     0306   556 	SETCHAR				; PEEK AT NEXT CHARACTER

         5B 8F            50     91  0309   557 	CMPB	R0,#^A/[/		; VALUE FOLLOWING

                          35     12  030D   558 	BNEQ	60$			; BR IF NO SUBSTRING

            53            51     7D  030F   559 	MOVQ	R1,R3			; COPY STRING LIMITS TO SAFE REGISTERS

                                     0312   560 	MOVCHAR				; COPY THAT CHARACTER TO BUFFER

                          00B4   30  0315   561 	BSBW	GETVAL			; GET THE VALUE OF LOWER LIMIT

            49            50     E9  0318   562 	BLBC	R0,90$			; BR IF ERROR EVALUATING EXPRESSION

                                     031B   563 	MOVTERM	<:>			; MOVE THE TERMINATOR

                          0E     12  031F   564 	BNEQ	30$			; BR IF BAD TERMINATOR

            51            01     C3  0321   565 	SUBL3	#1,R1,R5		; SAVE INDEX TO FIRST CHARACTER

                          55         0324       

                          00A4   30  0325   566 	BSBW	GETVAL			; GET UPPER LIMIT OF STRING

            39            50     E9  0328   567 25$:	BLBC	R0,90$			; BR IF ERROR EVALUATING EXPRESSION

                                     032B   568 	MOVTERM	<]>			; MOVE THE EXPRESSION TERMINATOR

                          34     12  032F   569 30$:	BNEQ	100$			; BR IF SYNTAX ERROR

            53            51     D1  0331   570 	CMPL	R1,R3			; CHECK UPPER LIMIT AGAINST SIZE

                          03     19  0334   571 	BLSS	40$			; BR IF LIMIT IN RANGE

            51            53     D0  0336   572 	MOVL	R3,R1			; USE THE SIZE AS UPPER LIMIT

            51            55     C2  0339   573 40$:	SUBL	R5,R1			; FIND NUMBER OF CHARACTERS

                          02     14  033C   574 	BGTR	50$			; BR IF VALID SIZE

                          51     D4  033E   575 	CLRL	R1			; ELSE USE ZERO

            54            55     C1  0340   576 50$:	ADDL3	R5,R4,R2		; GET STARTING BYTE OF SUBSTRING

                          52         0343       

            62            51     28  0344   577 60$:	MOVC	R1,(R2),@WRK_L_HILIM(FP) ; PUT STRING IN INPUT BUFFER

                       D0 BD         0347       

            59            53     D0  0349   578 	MOVL	R3,R9			; SET END OF INPUT BUFFER

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  16

01              EVALUATE STRING EXPRESSION                                                                                       (1)



                                     034C   579 	SETNBLK				; LOOK AT NEXT CHARACTER

            50            2B     91  034F   580 	CMPB	#^A/+/,R0		; CONCATONATE STRINGS

                          05     12  0352   581 	BNEQ	80$			; BR IF NO - ALL DONE

                       FC AD     D6  0354   582 	INCL	WRK_L_CHARPTR(FP)	; SKIP THE PLUS SIGN

                          91     11  0357   583 	BRB	10$			; GET NEXT SYMBOL

            52         CC AD     D0  0359   584 80$:	MOVL	WRK_L_LOLIM(FP),R2	; SET START OF FINAL VALUE

            59            52     C3  035D   585 	SUBL3	R2,R9,R1		; GET FINAL LENGTH

                          51         0360       

                                     0361   586 	STATUS	NORMAL			;

                                 05  0364   587 90$:	RSB				;

                                     0365   588  

                                     0365   589 ;

                                     0365   590 ; INVALID DELIMITER

                                     0365   591 ;

                                     0365   592 100$:	STATUS	SYMDEL			; SYMBOL DELIMITER

                                 05  0369   593 	RSB

                                     036A   594  

                                     036A   595 	.DSABL	LSB

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  17

01              GET A SYMBOL NAME AND CHECK STARTING CHARACTER                                                                   (1)



                                     036A   597 	.SBTTL	GET A SYMBOL NAME AND CHECK STARTING CHARACTER

                                     036A   598 ;+

                                     036A   599 ; MCR$SYMNAM - GET AND CHECK SYMBOL NAME

                                     036A   600 ;

                                     036A   601 ; THIS ROUTINE READS THE NEXT TOKEN FROM THE COMMAND LINE,

                                     036A   602 ; THEN CHECKS THAT THE CHARACTER POINTED TO BY R2 IS VALID

                                     036A   603 ; FIRST CHARACTER FOR A SYMBOL.

                                     036A   604 ;

                                     036A   605 ; INPUTS:

                                     036A   606 ;

                                     036A   607 ;	COMMAND IS PARSED UP TO THE POINT THE SYMBOL STARTS

                                     036A   608 ;

                                     036A   609 ; OUTPUT:

                                     036A   610 ;

                                     036A   611 ;	TOP LEVEL RETURN IS MADE IF SYMBOL IS INVALID WITH ERROR CODE.

                                     036A   612 ;

                                     036A   613 ;	IF THE SYMBOL HAS PROPER SYNTAX R3,R5 IS THE DESCRIPTOR FOR

                                     036A   614 ;	THE SYMBOL AND R5 IS THE PROPER LIST HEAD (GLOBAL OR LOCAL).

                                     036A   615 ;-

                                     036A   616  

                                     036A   617  

                                     036A   618 MCR$SYMNAM::				; GET AND CHECK SYMBOL NAME

            56            59     D0  036A   619 	MOVL	R9,R6			; SET ERROR STRING POINTER

                                     036D   620 	GETOKEN				; MOVE TERMIATOR AND GET TOKEN

                          36     13  0370   621 	BEQL	50$			; BR IF NO TOKEN

            53            51     7D  0372   622 	MOVQ	R1,R3			; COPY SYMBOL DESCRIPTOR

                                     0375   623 	MOVCHAR				; MOVE SYMBOL TERMINATOR TO BUFFER

                          05     13  0378   624 	BEQL	10$			; END OF LINE IS VALID TERMINATOR

            20            50     91  037A   625 	CMPB	R0,#^A/ /		; TERMINATE WITH A SPACE?

                          2E     12  037D   626 	BNEQ	60$			; BR IF NO - THAT IS A ERROR

            55         28 AB     7E  037F   627 10$:	MOVAQ	PRC_Q_GLOBAL(R11),R5	; GET ADDRESS OF GLOBAL LIST HEADER

         52 AB            0A     E0  0383   628 	BBS	#MCR_V_GLOBAL,PRC_W_CLIFLAG(R11),15$ ; BR IF GLOBALS DIABLED

                          04         0387       

            55         38 AB     7E  0388   629 	MOVAQ	PRC_Q_LOCAL(R11),R5	; SET LOCAL TABLE IF NO GLOBALS

            24            62     91  038C   630 15$:	CMPB	(R2),#^A/$/		; NOW TRY FOR DOLLAR SIGN

                          16     13  038F   631 	BEQL	20$			; BR IF THAT MATCHES

            55         38 AB     7E  0391   632 	MOVAQ	PRC_Q_LOCAL(R11),R5	; SYMBOL MUST BE LOCAL IF VALID

         41 8F            62     91  0395   633 	CMPB	(R2),#^A/A/		; CHECK LOW LIMIT FOR ALPHA

                          0D     1F  0399   634 	BLSSU	50$			; BR IF FAILED

         5A 8F            62     91  039B   635 	CMPB	(R2),#^A/Z/		; NOW CHECK HI LIMIT

                          06     1B  039F   636 	BLEQU	20$			; BR IF VALID CHARACTER

         5F 8F            62     91  03A1   637 	CMPB	(R2),#^A/_/		; TRY PSEUDO ALPHA

                          01     12  03A5   638 	BNEQ	50$			; BR IF NOT VALID

                                 05  03A7   639 20$:	RSB				; RETURN WITH SYMBOL

                                     03A8   640  

                                     03A8   641 ;

                                     03A8   642 ; SYMBOL NAME IS IMPROPERLY FORMED

                                     03A8   643 ;

                                     03A8   644  

                                     03A8   645 50$:	STATUS	IVSYMB			; INVALID SYMBOL

                          04     11  03AB   646 	BRB	70$			;

                                     03AD   647  

                                     03AD   648 ;

                                     03AD   649 ; SYMBOL IMPROPERLY DELIMITED

                                     03AD   650 ;

                                     03AD   651  

                                     03AD   652 60$:	STATUS	SYMDEL			; SET ERROR CONDITION

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  18

01              GET A SYMBOL NAME AND CHECK STARTING CHARACTER                                                                   (1)



                          8E     D5  03B1   653 70$:	TSTL	(SP)+			; CLEAR ONE LEVEL OF RETURN

                                 05  03B3   654 	RSB				;

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  19

01              GET A NUMERIC VALUE AND VERIFY LAST ON LINE                                                                      (1)



                                     03B4   656 	.SBTTL	GET A NUMERIC VALUE AND VERIFY LAST ON LINE

                                     03B4   657 ;+

                                     03B4   658 ; GETNUMVAL - GET NUMERIC VALUE

                                     03B4   659 ;

                                     03B4   660 ; THIS ROUTINE IS CALLED TO EVALUATE THE EXPRESSION ON A COMMAND

                                     03B4   661 ; AND VERIFY THAT THE SYMBOL IS THE EXPRESSION IS THE LAST THING

                                     03B4   662 ; ON THE COMMAND LINE.

                                     03B4   663 ;

                                     03B4   664 ; INPUTS:

                                     03B4   665 ;

                                     03B4   666 ;	COMMAND IS PARSED UP TO THE POINT OF THE EXPRESSION

                                     03B4   667 ;

                                     03B4   668 ; OUTPUT:

                                     03B4   669 ;

                                     03B4   670 ;	R0 IS SET TO THE STATUS OF THE OPERATION

                                     03B4   671 ;	R1 IS SET TO THE VALUE IF EXPRESSION EVALUATED CORRECTLY

                                     03B4   672 ;

                                     03B4   673 ;	REGISTERS R3,R4,R5 ARE PRESERVED.

                                     03B4   674 ;-

                                     03B4   675 	.ENABL	LSB

                                     03B4   676  

                                     03B4   677 GETNUMVAL:				;

                          16     10  03B4   678 	BSBB	GETVAL			;

            12            50     E9  03B6   679 	BLBC	R0,10$			; BR IF EXPRESSION FAILED TO EVALUATE

         FA AD            02     A8  03B9   680 	BISW	#WRK_M_COMMAND,WRK_W_FLAGS(FP) ;SET COMMAND EXECUTION IN PROGRESS

                                     03BD   681 	TESTBLANK			; PEEK AT NEXT CHARACTER IN INPUT BUFFER

                          24     13  03C0   682 	BEQL	40$			; BR IF EOL IS NEXT

            3B            50     91  03C2   683 	CMPB	R0,#^A/;/		; IS THE REST A COMMENT?

                          1F     13  03C5   684 	BEQL	40$			; BR IF YES

                                     03C7   685 	STATUS	SYMDEL			; SET INVALID SYMBOL DELIMITER

                                 05  03CB   686 10$:	RSB				;

                                     03CC   687  

                                     03CC   688 ;

                                     03CC   689 ; LCOAL SUBROUTINE TO EVALUTE AN EXPRESSION WHILE SAVING THE

                                     03CC   690 ; CURRENT SYMBOL LENGTH,ADDRESS AND TABLE LIST HEAD.

                                     03CC   691 ;

                                     03CC   692  

            56            59     D0  03CC   693 GETVAL:	MOVL	R9,R6			; SET ERROR LIMIT POINTER

                          51     D4  03CF   694 	CLRL	R1			; ASSUME HEX RADIX

            0A         CA AD     91  03D1   695 	CMPB	WRK_B_CURADX(FP),#10	; CHECK AGAINST MIDDLE VALUE

                          04     13  03D5   696 	BEQL	20$			; BR IF DECIMAL

                          04     1A  03D7   697 	BGTRU	30$			; BR IF HEX

                          51     D6  03D9   698 	INCL	R1			; SET RADIX INDICATOR TO

                          51     D6  03DB   699 20$:	INCL	R1			; PROPER VALUE

                          FC20'  30  03DD   700 30$:	BSBW	MCR$EXPRADIX		; CONVERT TO BINARY

            06            50     E9  03E0   701 	BLBC	R0,50$			; BR IF THERE WAS AN ERROR

            56            59     D0  03E3   702 	MOVL	R9,R6			; RESET ERROR POINTER

                                     03E6   703 40$:	STATUS	NORMAL			; INSURE GOOD STATUS

                                 05  03E9   704 50$:	RSB

                                     03EA   705  

                                     03EA   706 	.DSABL	LSB

                                     03EA   707  

                                     03EA   708 	.END

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  20

SYMBOL TABLE                                                                                                                     (1)



ASK_M_LIMITS   = 00000004            CLI$_NUMBER    = 000380E8            MCR$SETT         00000224 RG    03   

ASK_M_LOGICAL  = 00000001            CLI$_ONCOMD    = 000380F0            MCR$SYMNAM       0000036A RG    03   

ASK_M_NUMERIC  = 00000002            CLI$_ONERR     = 000380F8            MCR$TEST         00000218 RG    03   

ASK_V_LIMITS   = 00000002            CLI$_ONEVAL    = 00038158            MCR$TESTBLANK    ********   X   03   

ASK_V_LOGICAL  = 00000000            CLI$_ONLEVL    = 00038100            MCR$TESTSTRING   000001C9 RG    03   

ASK_V_NUMERIC  = 00000001            CLI$_ONOVF     = 00038108            MCR_M_ALPHAN   = 00000002            

BIT...         = 00000003            CLI$_OVRFLW    = 00038160            MCR_M_DEFALT   = 00000008            

CLI$_ABFNAM    = 000381B8            CLI$_PARMDEL   = 00038110            MCR_M_DELINP   = 00000080            

CLI$_ABKEYW    = 00038000            CLI$_PROC_ID   = 0003FFF1            MCR_M_DOLLARS  = 00000100            

CLI$_ABVERB    = 00038008            CLI$_QUEJOBCRE = 0003FFF9            MCR_M_ESCAPE   = 00000004            

CLI$_BADRET    = 00038198            CLI$_REQPRMABS = 00038812            MCR_M_ESCTRM   = 00000200            

CLI$_BADTEXT   = 000381B0            CLI$_RSLOVF    = 00038118            MCR_M_GLOBAL   = 00000400            

CLI$_BUFOVF    = 00038018            CLI$_SKPDAT    = 00038120            MCR_M_LOWER    = 00000800            

CLI$_COMPLX    = 00038020            CLI$_SPARE0    = 00038010            MCR_M_OPNINP   = 00000040            

CLI$_CONFQUAL  = 00038802            CLI$_SPARE1    = 00038058            MCR_M_RAD50    = 00000001            

CLI$_CREQUEJOB = 0003884A            CLI$_STKOVF    = 00038128            MCR_M_STRSUB   = 00001000            

CLI$_DEFOVF    = 00038028            CLI$_SUBMITERR = 00038852            MCR_V_ALPHAN   = 00000001            

CLI$_DEVALSPL  = 0003885A            CLI$_SYMDEL    = 00038130            MCR_V_DEFALT   = 00000003            

CLI$_DEVNOTFOR = 0003887A            CLI$_SYMOVF    = 00038138            MCR_V_DELINP   = 00000007            

CLI$_DEVNOTSPL = 00038862            CLI$_UNDFIL    = 00038188            MCR_V_DOLLARS  = 00000008            

CLI$_DIRECT    = 00038030            CLI$_UNDSYM    = 00038140            MCR_V_ESCAPE   = 00000002            

CLI$_EXPSYN    = 00038038            CLI$_UNPROPARM = 00038170            MCR_V_ESCTRM   = 00000009            

CLI$_FILOPN    = 00038190            CLI$_UNPROQUAL = 00038168            MCR_V_FORCMD   = 0000000E            

CLI$_ILLVAL    = 0003883A            CLI$_USGOTO    = 00038148            MCR_V_GLOBAL   = 0000000A            

CLI$_IMCHNG    = 00038040            CLI$_VALCNVERR = 00038832            MCR_V_LOWER    = 0000000B            

CLI$_IMGFNF    = 00038872            CLI$_VALREQ    = 00038150            MCR_V_OPNINP   = 00000006            

CLI$_INSFPRM   = 00038048            CMDBUFSIZ      = 000001FC            MCR_V_RAD50    = 00000000            

CLI$_INVKEY    = 00038178            GBL...         = 00000000            MCR_V_STRSUB   = 0000000C            

CLI$_INVQUAL   = 0003880A            GETNUMVAL        000003B4 R     03   MSGBUFSIZ      = 00000084            

CLI$_INVQUALNUM= 0003881A            GETPMT           0000006C R     03   PRC_B_DEFRADIX   00000092            

CLI$_INVREQTYP = 00038822            GETVAL           000003CC R     03   PRC_B_EXMDEPMOD  00000091            

CLI$_INVRSP    = 00038180            INPBUFSIZ      = 00000084            PRC_B_EXMDEPWID  00000090            

CLI$_INVUIC    = 000381A8            MCR$ALLOCSYMD    ********   X   03   PRC_K_DEC      = 00000001            

CLI$_IVCHAR    = 00038050            MCR$ASK          00000065 RG    03   PRC_K_HEX      = 00000000            

CLI$_IVDEVTYPE = 0003886A            MCR$ASKN         00000003 RG    03   PRC_K_LENGTH     000000A0            

CLI$_IVFNAM    = 000381C0            MCR$ASKS         00000007 RG    03   PRC_K_OCT      = 00000002            

CLI$_IVKEYW    = 00038060            MCR$CNVASCBIN    ********   X   03   PRC_L_CLIWRK0    0000005C            

CLI$_IVOPER    = 00038068            MCR$CNVNUM       ********   X   03   PRC_L_CLIWRK1    00000060            

CLI$_IVPROT    = 00038070            MCR$COMPSTRING   ********   X   03   PRC_L_CLIWRK2    00000064            

CLI$_IVQLOC    = 00038078            MCR$DEC          00000296 RG    03   PRC_L_CLIWRK3    00000068            

CLI$_IVSYMB    = 00038080            MCR$ERRORMSG     ********   X   03   PRC_L_CLIWRK4    0000006C            

CLI$_IVVALU    = 00038088            MCR$EVLSTRING    000002E6 RG    03   PRC_L_ERRRAB     00000010            

CLI$_IVVERB    = 00038090            MCR$EXPRADIX     ********   X   03   PRC_L_EXMDEPADR  0000008C            

CLI$_MAXPARM   = 00038098            MCR$FORNBLK      ********   X   03   PRC_L_EXTARG     00000078            

CLI$_MULKEY    = 000381A0            MCR$GETOKEN      ********   X   03   PRC_L_EXTBLK     00000070            

CLI$_NOATFIL   = 000380A0            MCR$INC          0000029A RG    03   PRC_L_EXTCOD     00000080            

CLI$_NOCCAT    = 000380A8            MCR$MOVCHAR      ********   X   03   PRC_L_EXTHND     00000074            

CLI$_NOCOMD    = 000380B0            MCR$MOVNCHR      ********   X   03   PRC_L_EXTPRM     0000007C            

CLI$_NOKEYW    = 000380B8            MCR$MOVTERM      ********   X   03   PRC_L_INDEPTH    00000048            

CLI$_NOLIST    = 000380C0            MCR$PUTCHAR      ********   X   03   PRC_L_INDFAB     0000001C            

CLI$_NOOPTPRS  = 00038842            MCR$SEARCH       ********   X   03   PRC_L_INDINPRAB  00000014            

CLI$_NOQUAL    = 000380C8            MCR$SETCHAR      ********   X   03   PRC_L_INDOUTRAB  00000018            

CLI$_NORMAL    = 00030001            MCR$SETF         00000229 RG    03   PRC_L_INPRAB     00000008            

CLI$_NOTNEG    = 000380D8            MCR$SETN         00000237 RG    03   PRC_L_LSTSTATUS  00000094            

CLI$_NOVALU    = 000380D0            MCR$SETNBLK      ********   X   03   PRC_L_ONCTLY     0000009C            

CLI$_NOVALUE   = 0003882A            MCR$SETS         000002D7 RG    03   PRC_L_ONERROR    00000058            

CLI$_NULFIL    = 000380E0            MCR$SETSYMVAL    00000240 RG    03   PRC_L_OUTRAB     0000000C            

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  21

SYMBOL TABLE                                                                                                                     (1)



PRC_L_PROCUIC    00000098            RAB$B_ROP2       00000006            RAB$V_FDL      = 00000006            

PRC_L_SAVAP      00000000            RAB$B_ROP3       00000007            RAB$V_HSH      = 00000007            

PRC_L_SAVFP      00000004            RAB$B_TMO        0000001F            RAB$V_KGE      = 00000015            

PRC_L_SEVERITY   00000040            RAB$C_BID      = 00000001            RAB$V_KGT      = 00000016            

PRC_L_STACKLM    00000088            RAB$C_BLN        00000044            RAB$V_LIM      = 0000000E            

PRC_L_STACKPT    00000084            RAB$C_KEY      = 00000001            RAB$V_LOA      = 0000000D            

PRC_L_STATUS     00000044            RAB$C_RFA      = 00000002            RAB$V_LOC      = 00000010            

PRC_L_SYMBOL     0000004C            RAB$C_SEQ      = 00000000            RAB$V_MAS      = 00000005            

PRC_M_CNTRLY   = 00000002            RAB$K_BLN        00000044            RAB$V_NLK      = 00000014            

PRC_M_DBGQUAL  = 00000200            RAB$L_BKT        00000038            RAB$V_NXR      = 00000017            

PRC_M_DBGTRUE  = 00000400            RAB$L_CTX        00000018            RAB$V_PMT      = 0000001E            

PRC_M_DISABL   = 00000004            RAB$L_DCT        00000038            RAB$V_PPF_IND  = 0000000E            

PRC_M_EXIT     = 00000008            RAB$L_FAB        0000003C            RAB$V_PPF_RAT  = 00000006            

PRC_M_GOEOF    = 00000001            RAB$L_KBF        00000030            RAB$V_PTA      = 0000001D            

PRC_M_GOTO     = 00000010            RAB$L_PBF        00000030            RAB$V_RAH      = 00000009            

PRC_M_HANGUP   = 00001000            RAB$L_RBF        00000028            RAB$V_RLK      = 00000013            

PRC_M_IND      = 00000020            RAB$L_RFA0       00000010            RAB$V_RNE      = 00000018            

PRC_M_MODE     = 00000040            RAB$L_RHB        0000002C            RAB$V_RNF      = 0000001B            

PRC_M_NOCTLY   = 00004000            RAB$L_ROP        00000004            RAB$V_TMO      = 00000019            

PRC_M_PAUSE    = 00002000            RAB$L_STS        00000008            RAB$V_TPT      = 00000001            

PRC_M_USRDET   = 00000100            RAB$L_STV        0000000C            RAB$V_UIF      = 00000004            

PRC_M_VERIFY   = 00000080            RAB$L_UBF        00000024            RAB$V_ULK      = 00000012            

PRC_M_YLEVEL   = 00000800            RAB$M_ASY      = 00000001            RAB$V_WAT      = 00000011            

PRC_Q_ALLOCREG   00000020            RAB$M_BIO      = 00000800            RAB$V_WBH      = 0000000A            

PRC_Q_GLOBAL     00000028            RAB$M_CCO      = 80000000            RAB$W_ISI        00000002            

PRC_Q_LABEL      00000030            RAB$M_CVT      = 04000000            RAB$W_RFA        00000010            

PRC_Q_LOCAL      00000038            RAB$M_EOF      = 00000100            RAB$W_RFA4       00000014            

PRC_V_CNTRLY   = 00000001            RAB$M_FDL      = 00000040            RAB$W_RSZ        00000022            

PRC_V_DBGQUAL  = 00000009            RAB$M_HSH      = 00000080            RAB$W_USZ        00000020            

PRC_V_DBGTRUE  = 0000000A            RAB$M_KGE      = 00200000            RADIXC           00000000 R     03   

PRC_V_DISABL   = 00000002            RAB$M_KGT      = 00400000            RSLBUFSIZ      = 00000180            

PRC_V_EXIT     = 00000003            RAB$M_LIM      = 00004000            SYM_B_TYPE       0000000A            

PRC_V_GOEOF    = 00000000            RAB$M_LOA      = 00002000            SYM_K_DECIMAL  = 00000004            

PRC_V_GOTO     = 00000004            RAB$M_LOC      = 00010000            SYM_K_HEXDEC   = 00000005            

PRC_V_HANGUP   = 0000000C            RAB$M_MAS      = 00000020            SYM_K_LOGICAL  = 00000002            

PRC_V_IND      = 00000005            RAB$M_NLK      = 00100000            SYM_K_OCTAL    = 00000003            

PRC_V_MODE     = 00000006            RAB$M_NXR      = 00800000            SYM_K_PERM     = 00000001            

PRC_V_NOCTLY   = 0000000E            RAB$M_PMT      = 40000000            SYM_K_STRING   = 00000000            

PRC_V_PAUSE    = 0000000D            RAB$M_PPF_IND  = 00004000            SYM_L_BL         00000004            

PRC_V_USRDET   = 00000008            RAB$M_PPF_RAT  = 00003FC0            SYM_L_FL         00000000            

PRC_V_VERIFY   = 00000007            RAB$M_PTA      = 20000000            SYM_T_SYMBOL     0000000C            

PRC_V_YLEVEL   = 0000000B            RAB$M_RAH      = 00000200            SYM_W_SIZE       00000008            

PRC_W_CLIFLAG    00000052            RAB$M_RLK      = 00080000            WRK_AB_BUFFER    FFFFFD44            

PRC_W_ERRIFI     00000052            RAB$M_RNE      = 01000000            WRK_AG_RESULT    FFFFFBC0            

PRC_W_FLAGS      00000054            RAB$M_RNF      = 08000000            WRK_B_CMDFLG     FFFFFFC9            

PRC_W_INPCHAN    00000050            RAB$M_TMO      = 02000000            WRK_B_CURADX     FFFFFFCA            

PRC_W_ONLEVEL    00000056            RAB$M_TPT      = 00000002            WRK_B_PARMCNT    FFFFFFCB            

PUTVAL           000001B5 R     03   RAB$M_UIF      = 00000010            WRK_B_VERBTYP    FFFFFFC8            

RAB$B_BID        00000000            RAB$M_ULK      = 00040000            WRK_K_LENGTH     FFFFFBC0            

RAB$B_BLN        00000001            RAB$M_WAT      = 00020000            WRK_L_CHARPTR    FFFFFFFC            

RAB$B_KRF        00000035            RAB$M_WBH      = 00000400            WRK_L_DEFAULT  = FFFFFFE8            

RAB$B_KSZ        00000034            RAB$S_PPF_RAT  = 00000008            WRK_L_HILIM    = FFFFFFD0            

RAB$B_MBC        00000037            RAB$V_ASY      = 00000000            WRK_L_IMAGE      FFFFFFEC            

RAB$B_MBF        00000036            RAB$V_BIO      = 0000000B            WRK_L_LOLIM    = FFFFFFCC            

RAB$B_PSZ        00000034            RAB$V_CCO      = 0000001F            WRK_L_MAXPARM    FFFFFFCC            

RAB$B_RAC        0000001E            RAB$V_CVT      = 0000001A            WRK_L_MINPARM    FFFFFFD0            

RAB$B_ROP1       00000005            RAB$V_EOF      = 00000008            WRK_L_PAROUT     FFFFFFF0            

MCRSTAMNT       - ARITHMETIC ASSIGNMENT AND STRING EQUATE PROCE  22-AUG-1978 01:53:28   VAX-11 MACRO X0.3-11               Page  22

SYMBOL TABLE                                                                                                                     (1)



WRK_L_PRMTEND  = FFFFFFEC            

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            

WRK_V_ALL      = 00000000            

WRK_V_ASK      = 00000008            

WRK_V_COMMAND  = 00000001            

WRK_V_CONTINU  = 0000000A            

WRK_V_EQUAL    = 00000003            

WRK_V_IMCHNG   = 00000002            

WRK_V_QUAL     = 00000004            

WRK_V_QUOTE    = 00000005            

WRK_V_STAR     = 00000006            

WRK_V_TRAILSPC = 00000009            

WRK_V_VERB     = 00000007            

WRK_W_FLAGS      FFFFFFFA            

WRK_W_LOCFLG     FFFFFFF8            

_$$_           = 0000004C            





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





THERE WERE NO ERRORS OR WARNINGS.

14460. BYTES LEFT IN FREE MEMORY POOL.

28. BYTES OF RECLAIMED MEMORY.

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

27 MLB DIR RDS - 601 GETS TO DEFINE 34 MACROS. 49 INTER. FILE WRITES. 

