CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      54  LOCATE STRING BY INDEX NUMBER

   (1)      79  GENERATE RESULT PARSE DESCRIPTOR

   (1)     130  GET NEXT NONBLANK CHARACTER FROM INPUT BUFFER

   (1)     153  MOVE CHARACTER TO COMMAND BUFFER AND GET BLANK 

   (1)     174  MOVE CHARACTER TO COMMAND BUFFER AND GET TOKEN

   (1)     194  GETOKEN - GET TOKEN FROM INPUT BUFFER

   (1)     256  FORCE NONBLANK CHARACTER

   (1)     277  POINT TO NEXT NONBLANK CHARACTER IN INPUT BUFFE

   (1)     305  PEEK AT NEXT CHARACTER IN INPUT BUFFER

   (1)     332  TEST FOR SIGNIFICANT BLANK

   (1)     362  MOVE CHARACTER TO COMMAND BUFFER

   (1)     384  PUT CHARACTER IN COMMAND BUFFER

   (1)     414  GET - GET CHARACTER FROM INPUT BUFFER

   (1)     619  EXPAND INPUT LINE

   (1)     670  GET EXPANSION SYMBOL

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   1

01                                                                                                                               (1)



                                     0000     1 	.TITLE	CHARMANIP - CHARACTER 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 28-MAR-77

                                     0000    24 ;

                                     0000    25 ; CHARACTER 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 	$PSLDEF				;DEFINE PROCESSOR STATUS FIELDS

                                     0000    34 	$RABDEF				;DEFINE RAB OFFSETS

                                     0000    35 	$SSDEF				;DEFINE SYSTEM STATUS VALUES

                                     0000    36  

                                     0000    37 ;

                                     0000    38 ; LOCAL DATA

                                     0000    39 ;

                                     0000    40  

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

                                     0000    42 DCL$HYPHEN::				;HYPHEN STRING

                              00 2D  0000    43 	.ASCII	/-/<0>			;

                                     0002    44 REPROMPT:				;CONTINUATION PROMPT STRING

                           5F 24 00' 0002    45 	.ASCIC	\$_\			;

                                 02  0002       

                                     0005    46 TERMCLASS:				;ITEM TERMINATOR STRING

                  20 3A 2F 2B 2C 29  0005    47 	.ASCII	\),+/: \		;

                                     000B    48 TERMTAB:				;TERMINATOR TABLE

3D 5C 3F 3E 5D 29 28 2D 2C 2B 2F 3A  000B    49 	.ASCII	D:/+,-()]>?\=^#D<0>	;

                           00 23 5E  0017       

                                     001A    50 BLANKTAB:				;SIGNIFICANT BLANK SEPARATOR

            20 3B 2E 3C 5B 27 2A 40  001A    51 	.ASCII	\@*'[<.; \		;

                                     0022    52 ENDTERM:				;REF LABEL

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   2

01              LOCATE STRING BY INDEX NUMBER                                                                                    (1)



                                     0022    54 	.SBTTL	LOCATE STRING BY INDEX NUMBER

                                     0022    55 ;+

                                     0022    56 ; DCL$LOCATE - LOCATE STRING BY INDEX NUMBER

                                     0022    57 ;

                                     0022    58 ; THIS ROUTINE IS CALLED TO LOCATE A STRING IN A CHARACTER ARRAY BY COUNTING

                                     0022    59 ; THE OCCURANCES OF CHARACTERS WITH BIT 7 SET.

                                     0022    60 ;

                                     0022    61 ; INPUTS:

                                     0022    62 ;

                                     0022    63 ;	R2 = ADDRESS OF CHARACTER ARRAY.

                                     0022    64 ;	R3 = STRING INDEX NUMBER.

                                     0022    65 ;

                                     0022    66 ; OUTPUTS:

                                     0022    67 ;

                                     0022    68 ;	R1 = LENGTH OF STRING.

                                     0022    69 ;	R2 = ADDRESS OF STRING.

                                     0022    70 ;-

                                     0022    71  

                                     0022    72 DCL$LOCATE::				;LOCATE STRING BY INDEX NUMBER

                          51     D4  0022    73 	CLRL	R1			;CLEAR INITIAL LENGTH

            52            51     C0  0024    74 10$:	ADDL	R1,R2			;POINT TO NEXT ENTRY IN TABLE

            51            82     9A  0027    75 	MOVZBL	(R2)+,R1		;GET COUNT

            F7            53     F4  002A    76 	SOBGEQ	R3,10$			;ANY MORE STRINGS TO SKIP OVER?

                                 05  002D    77 	RSB				;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   3

01              GENERATE RESULT PARSE DESCRIPTOR                                                                                 (1)



                                     002E    79 	.SBTTL	GENERATE RESULT PARSE DESCRIPTOR

                                     002E    80 ;+

                                     002E    81 ; DCL$GENDESCR - GENERATE RESULT PARSE DESCRIPTOR

                                     002E    82 ;

                                     002E    83 ; THIS ROUTINE IS CALLED TO GENERATE A LONGWORD DESCRIPTOR FOR A RESULT PARSE

                                     002E    84 ; ITEM.

                                     002E    85 ;

                                     002E    86 ; INPUTS:

                                     002E    87 ;

                                     002E    88 ;	R5 = ITEM TYPE.

                                     002E    89 ;	R6 = ITEM FLAGS.

                                     002E    90 ;	R7 = ITEM VALUE.

                                     002E    91 ;	R8 = STARTING ADDRESS OF ITEM.

                                     002E    92 ;	R9 = ADDRESS OF TERMINATOR CHARACTER IN COMMAND BUFFER.

                                     002E    93 ;	R10 = RESULT PARSE DESCRIPTOR TABLE POINTER.

                                     002E    94 ;

                                     002E    95 ; OUTPUTS:

                                     002E    96 ;

                                     002E    97 ;	THE SPECIFIED FIELDS ARE PACKED TOGETHER TO FORM A RESULT PARSE

                                     002E    98 ;	DESCRIPTOR LONGWORD AND THE RESULTANT VALUE IS STORED IN THE RESULT

                                     002E    99 ;	PARSE TABLE.

                                     002E   100 ;-

                                     002E   101  

                                     002E   102 DCL$GENDESCR::				;GENERATE RESULT PARSE DESCRIPTOR

                     FD34 CD     9F  002E   103 	PUSHAB	WRK_L_RSLNXT(FP)	;GET ENDING ADDRESS OF RESULT BUFFER

            5A            8E     D1  0032   104 	CMPL	(SP)+,R10		;ROOM FOR ANOTHER DESCRIPTOR?

                          3A     1B  0035   105 	BLEQU	20$			;IF LEQU NO

            00            57     F0  0037   106 	INSV	R7,#PTR_V_VALUE,#PTR_S_VALUE,- ;INSERT VALUE FIELD

                                     003A       

            6A            08         003A   107 		PTR_L_DESCR(R10)	;

                     FD38 CD     9F  003C   108 	PUSHAB	WRK_AB_BUFFER(FP)	;GET STARTING ADDRESS OF COMMAND BUFFER

            58            8E     C3  0040   109 	SUBL3	(SP)+,R8,R0		;CALCULATE OFFSET TO ITEM

                          50         0043       

            08            50     F0  0044   110 	INSV	R0,#PTR_V_OFFSET,#PTR_S_OFFSET,- ;INSERT OFFSET TO ITEM

                                     0047       

            6A            0C         0047   111 		PTR_L_DESCR(R10)	;

            14            56     F0  0049   112 	INSV	R6,#PTR_V_FLAGS,#PTR_S_FLAGS,- ;INSERT ITEM FLAGS

                                     004C       

            6A            04         004C   113 		PTR_L_DESCR(R10)	;

            06            69     3A  004E   114 	LOCC	(R9),#TERMTAB-TERMCLASS,TERMCLASS ;SEARCH FOR TERMINATOR

                       B2 AF         0051       

                          0A     12  0053   115 	BNEQ	10$			;IF NEQ TERMINATOR FOUND

                          50     D6  0055   116 	INCL	R0			;SET TERMINATOR CLASS TO BLANK

            69            3D     91  0057   117 	CMPB	#^A/=/,(R9)		;EQUAL TERMINATOR?

                          03     12  005A   118 	BNEQ	10$			;IF NEQ NO

            50            02     9A  005C   119 	MOVZBL	#PTR_K_COLON,R0		;SET TERMINATOR CLASS TO COLON

            18            50     F0  005F   120 10$:	INSV	R0,#PTR_V_TERM,#PTR_S_TERM,- ;INSERT TERMINATOR CLASS NUMBER

                                     0062       

            6A            04         0062   121 		PTR_L_DESCR(R10)	;

            1C            55     F0  0064   122 	INSV	R5,#PTR_V_TYPE,#PTR_S_TYPE,- ;INSERT ITEM TYPE

                                     0067       

            6A            04         0067   123 		PTR_L_DESCR(R10)	;

                          8A     D5  0069   124 	TSTL	(R10)+			;POINT TO NEXT ITEM IN BUFFER

       FD34 CD            5A     D0  006B   125 	MOVL	R10,WRK_L_RSLNXT(FP)	;SAVE ADDRESS OF NEXT ITEM IN ARRAY

                                 05  0070   126 	RSB				;

                                     0071   127 20$:	ERRMSG	RSLOVF			;OUTPUT ERROR MESSAGE

                          0187   31  0078   128 	BRW	ERROR			;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   4

01              GET NEXT NONBLANK CHARACTER FROM INPUT BUFFER                                                                    (1)



                                     007B   130 	.SBTTL	GET NEXT NONBLANK CHARACTER FROM INPUT BUFFER

                                     007B   131 ;+

                                     007B   132 ; DCL$GETNBLK - GET NEXT NONBLANK CHARACTER FROM INPUT BUFFER

                                     007B   133 ;

                                     007B   134 ; THIS ROUTINE IS CALLED TO OBTAIN THE NEXT NONBLANK CHARACTER FROM THE INPUT

                                     007B   135 ; BUFFER.

                                     007B   136 ;

                                     007B   137 ; INPUTS:

                                     007B   138 ;

                                     007B   139 ;	NONE.

                                     007B   140 ;

                                     007B   141 ; OUTPUTS:

                                     007B   142 ;

                                     007B   143 ;	CHARACTERS ARE OBTAINED FROM THE INPUT BUFFER UNTIL A NONBLANK

                                     007B   144 ;	CHARACTER IS ENCOUNTERED.

                                     007B   145 ;

                                     007B   146 ;	R0 = NONBLANK CHARACTER.

                                     007B   147 ;-

                                     007B   148  

                                     007B   149 DCL$GETNBLK::				;GET NEXT NONBLANK CHARACTER

                          007D   30  007B   150 	BSBW	DCL$SETNBLK		;POINT TO NEXT NONBLANK CHARACTER

                          00D0   31  007E   151 	BRW	DCL$GETCHAR		;RETURN NEXT CHARACTER TO CALLER

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   5

01              MOVE CHARACTER TO COMMAND BUFFER AND GET BLANK                                                                   (1)



                                     0081   153 	.SBTTL	MOVE CHARACTER TO COMMAND BUFFER AND GET BLANK TOKEN

                                     0081   154 ;+

                                     0081   155 ; DCL$MOVBTOKN - MOVE CHARACTER TO COMMAND BUFFER AND GET BLANK TOKEN

                                     0081   156 ;

                                     0081   157 ; THIS ROUTINE IS CALLED TO PERFORM THE COMBINED OPERATION OF MOVING THE NEXT

                                     0081   158 ; CHARACTER TO THE COMMAND BUFFER AND THEN OBTAINING THE NEXT BLANK TOKEN.

                                     0081   159 ;

                                     0081   160 ; INPUTS:

                                     0081   161 ;

                                     0081   162 ;	NONE.

                                     0081   163 ;

                                     0081   164 ; OUTPUTS:

                                     0081   165 ;

                                     0081   166 ;	THE NEXT CHARACTER IS MOVED TO THE COMMAND BUFFER AND THEN THE NEXT

                                     0081   167 ;	BLANK TOKEN IS OBTAINED.

                                     0081   168 ;-

                                     0081   169  

                                     0081   170 DCL$MOVBTOKN::				;MOVE CHARACTER AND GET TOKEN

                          00AE   30  0081   171 	BSBW	DCL$MOVCHAR		;MOVE CHARACTER TO COMMAND BUFFER

                          05     11  0084   172 	BRB	DCL$GTBTOKEN		;GET NEXT BLANK TOKEN

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   6

01              MOVE CHARACTER TO COMMAND BUFFER AND GET TOKEN                                                                   (1)



                                     0086   174 	.SBTTL	MOVE CHARACTER TO COMMAND BUFFER AND GET TOKEN

                                     0086   175 ;+

                                     0086   176 ; DCL$MOVTOKN - MOVE CHARACTER TO COMMAND BUFFER AND GET TOKEN

                                     0086   177 ;

                                     0086   178 ; THIS ROUTINE IS CALLED TO PERFORM THE COMBINED OPERATION OF MOVING THE NEXT

                                     0086   179 ; CHARACTER TO THE COMMAND BUFFER AND THEN OBTAINING THE NEXT TOKEN.

                                     0086   180 ;

                                     0086   181 ; INPUTS:

                                     0086   182 ;

                                     0086   183 ;	NONE.

                                     0086   184 ;

                                     0086   185 ; OUTPUTS:

                                     0086   186 ;

                                     0086   187 ;	THE NEXT CHARACTER IS MOVED TO THE COMMAND BUFFER AND THEN THE NEXT

                                     0086   188 ;	TOKEN IS OBTAINED.

                                     0086   189 ;-

                                     0086   190  

                                     0086   191 DCL$MOVTOKN::				;MOVE CHARACTER AND GET TOKEN

                          00A9   30  0086   192 	BSBW	DCL$MOVCHAR		;MOVE CHARACTER TO COMMAND BUFFER

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   7

01              GETOKEN - GET TOKEN FROM INPUT BUFFER                                                                            (1)



                                     0089   194 	.SBTTL	GETOKEN - GET TOKEN FROM INPUT BUFFER

                                     0089   195 ;+

                                     0089   196 ; DCL$GETOKEN - GET TOKEN FROM INPUT BUFFER WITH INSIGNIFICANT LEADING BLANKS

                                     0089   197 ; DCL$GTBTOKEN - GET TOKEN FROM INPUT BUFFER WITH SIGNIFICANT LEADING BLANKS

                                     0089   198 ;

                                     0089   199 ; THIS ROUTINE IS CALLED TO SCAN THE INPUT BUFFER UNTIL A DELIMITER IS FOUND.

                                     0089   200 ; WHILE THE BUFFER IS BEING SCANNED, THE RESULTANT TOKEN IS COPIED INTO THE

                                     0089   201 ; COMMAND BUFFER. WHEN A TERMINATOR IS RECOGNIZED, THE DESCRIPTOR FOR THE

                                     0089   202 ; TOKEN IS RETURNED TO THE CALLER ALONG WITH THE TERMINATOR.

                                     0089   203 ;

                                     0089   204 ; INPUTS:

                                     0089   205 ;

                                     0089   206 ;	NONE.

                                     0089   207 ;

                                     0089   208 ; OUTPUTS:

                                     0089   209 ;

                                     0089   210 ;	R0 = TERMINATOR CHARACTER.

                                     0089   211 ;	R1 = LENGTH OF OUTPUT TOKEN.

                                     0089   212 ;	R2 = ADDRESS OF OUTPUT TOKEN.

                                     0089   213 ;

                                     0089   214 ;	Z = 1 IF NO TOKEN IS BEING RETURNED.

                                     0089   215 ;	Z = 0 IF A TOKEN IS BEING RETURNED.

                                     0089   216 ;-

                                     0089   217 

                                     0089   218 DCL$GETOKEN::				;GET TOKEN FROM INPUT BUFFER

                          70     10  0089   219 	BSBB	DCL$SETNBLK		;POINT TO NEXT NONBLANK CHARACTER

                                     008B   220 DCL$GTBTOKEN::				;GET TOKEN FROM INPUT BUFFER

            59            5D     C3  008B   221 	SUBL3	FP,R9,R2		;FIND OFFSET OF FIRST BYTE IN TOKEN

                          52         008E       

                          00A0   30  008F   222 10$:	BSBW	DCL$MOVCHAR		;MOVE CHARACTER TO COMMAND BUFFER

         FA AD            05     E0  0092   223 	BBS	#WRK_V_QUOTE,WRK_W_FLAGS(FP),10$ ;IF SET, QUOTE IN PROGRESS

                          F8         0096       

         FA AD            06     E0  0097   224 	BBS	#WRK_V_STAR,WRK_W_FLAGS(FP),20$ ;IF SET, ASTERISK IS TERMINATOR

                          05         009B       

            50            2A     91  009C   225 	CMPB	#^A/*/,R0		;ASTERISK?

                          EE     13  009F   226 	BEQL	10$			;IF EQL YES

            17            50     3A  00A1   227 20$:	LOCC	R0,#ENDTERM-TERMTAB,TERMTAB ;SEARCH FOR TERMINATOR

                     FF64 CF         00A4       

                          E6     13  00A7   228 	BEQL	10$			;IF EQL TERMINATOR NOT FOUND

                          59     D7  00A9   229 	DECL	R9			;BACK UP TO TERMINATOR

            50            61     9A  00AB   230 	MOVZBL	(R1),R0			;RETRIEVE TERMINATOR

            50            20     91  00AE   231 	CMPB	#^A/ /,R0		;WAS TERMINATOR A BLANK?

                          10     12  00B1   232 	BNEQ	30$			;IF NEQ NO

            51         FC AD     D0  00B3   233 	MOVL	WRK_L_CHARPTR(FP),R1	;GET CURRENT CHARACTER POINTER

            0F         01 A1     3A  00B7   234 	LOCC	1(R1),#BLANKTAB-TERMTAB,TERMTAB ;SEARCH FOR TERMINATOR

                     FF4D CF         00BB       

                          CF     12  00BE   235 	BNEQ	10$			;IF NEQ INSIGNIFICANT BLANK

            50            20     9A  00C0   236 	MOVZBL	#^A/ /,R0		;RESET BLANK TERMINATOR

         FC BD            50     90  00C3   237 30$:	MOVB	R0,@WRK_L_CHARPTR(FP)	;RESTORE TERMINATOR IN INPUT BUFFER

                       FC AD     D7  00C7   238 	DECL	WRK_L_CHARPTR(FP)	;BACK UP TO TERMINATOR IN INPUT BUFFER

            52            5D     C0  00CA   239 	ADDL	FP,R2			;FIND ADDRESS OF FIRST BYTE IN TOKEN

            59            52     C3  00CD   240 	SUBL3	R2,R9,R1		;CALCULATE LENGTH OF ITEM

                          51         00D0       

                          21     13  00D1   241 	BEQL	50$			;IF EQL NO TOKEN

            62            26     91  00D3   242 	CMPB	#^A/&/,(R2)		;TOKEN START WITH AMPERSAND?

                          1C     12  00D6   243 	BNEQ	50$			;IF NEQ NO

                          3C     BB  00D8   244 	PUSHR	#^M<R2,R3,R4,R5>	;SAVE REGISTERS

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   8

01              GETOKEN - GET TOKEN FROM INPUT BUFFER                                                                            (1)



                          52     D6  00DA   245 	INCL	R2			;POINT TO SYMBOL NAME

                          51     D7  00DC   246 	DECL	R1			;REDUCE LENGTH OF SYMBOL

                          03     13  00DE   247 	BEQL	40$			;IF EQL NULL SYMBOL NAME

                                     00E0   248 	SEARCH				;SEARCH ALL LOCAL AND GLOBAL SYMBOL TABLES

            62            51     28  00E3   249 40$:	MOVC	R1,(R2),@(SP)		;MOVE SYMBOL VALUE TO COMMAND BUFFER

                       00 BE         00E6       

            59            53     D0  00E8   250 	MOVL	R3,R9			;SAVE ADDRESS OF NEXT BYTE IN COMMAND BUFFER

                          3C     BA  00EB   251 	POPR	#^M<R2,R3,R4,R5>	;RESTORE REGISTERS

                                     00ED   252 	SETCHAR				;PEEK AT NEXT CHARACTER IN INPUT BUFFER

            59            52     C3  00F0   253 	SUBL3	R2,R9,R1		;CALCULATE LENGTH OF TOKEN

                          51         00F3       

                                 05  00F4   254 50$:	RSB				;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page   9

01              FORCE NONBLANK CHARACTER                                                                                         (1)



                                     00F5   256 	.SBTTL	FORCE NONBLANK CHARACTER

                                     00F5   257 ;+

                                     00F5   258 ; DCL$FORNBLK - FORCE NONBLANK CHARACTER

                                     00F5   259 ;

                                     00F5   260 ; THIS ROUTINE IS CALLED TO FORCE AN INPUT AND THEN SET THE CHARACTER POINTER

                                     00F5   261 ; TO THE NEXT NONBLANK CHARACTER.

                                     00F5   262 ;

                                     00F5   263 ; INPUTS:

                                     00F5   264 ;

                                     00F5   265 ;	NONE.

                                     00F5   266 ;

                                     00F5   267 ; OUTPUTS:

                                     00F5   268 ;

                                     00F5   269 ;	THE NEXT CHARACTER POINTER IS SET TO POINT TO A STRING CONTAINING

                                     00F5   270 ;	A HYPHEN FOLLOWED BY AN END OF LINE. A SET NONBLANK OPERATION IS

                                     00F5   271 ;	THEN PERFORMED.

                                     00F5   272 ;-

                                     00F5   273  

                                     00F5   274 DCL$FORNBLK::				;FORCE NONBLANK CHARACTER

         FC AD       FF06 CF     9E  00F5   275 	MOVAB	DCL$HYPHEN-1,WRK_L_CHARPTR(FP) ;SET TO FORCE INPUT ON NEXT GET

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  10

01              POINT TO NEXT NONBLANK CHARACTER IN INPUT BUFFE                                                                  (1)



                                     00FB   277 	.SBTTL	POINT TO NEXT NONBLANK CHARACTER IN INPUT BUFFER

                                     00FB   278 ;+

                                     00FB   279 ; DCL$SETNBLK - POINT TO NEXT NONBLANK CHARACTER IN INPUT BUFFER

                                     00FB   280 ;

                                     00FB   281 ; THIS ROUTINE IS CALLED TO SET THE INPUT BUFFER POINTER TO THE NEXT NONBLANK

                                     00FB   282 ; CHARACTER.

                                     00FB   283 ;

                                     00FB   284 ; INPUTS:

                                     00FB   285 ;

                                     00FB   286 ;	NONE.

                                     00FB   287 ;

                                     00FB   288 ; OUTPUTS:

                                     00FB   289 ;

                                     00FB   290 ;	CHARACTERS ARE OBTAINED FROM THE INPUT BUFFER UNTIL A NONBLANK CHAR-

                                     00FB   291 ;	ACTER IS ENCOUNTERED AND THE INPUT BUFFER POINTER IS RETURNED TO ITS

                                     00FB   292 ;	POSITION BEFORE THE LAST GET CHARACTER OPERATION.

                                     00FB   293 ;

                                     00FB   294 ;	R0 = NONBLANK CHARACTER.

                                     00FB   295 ;-

                                     00FB   296  

                                     00FB   297 	.ENABL	LSB

                                     00FB   298 DCL$SETNBLK::				;POINT TO NEXT NONBLANK CHARACTER

                          54     10  00FB   299 	BSBB	DCL$GETCHAR		;GET NEXT CHARACTER FROM INPUT BUFFER

                          12     13  00FD   300 	BEQL	20$			;IF EQL END OF LINE

            50            20     91  00FF   301 	CMPB	#^A/ /,R0		;BLANK?

                          F7     13  0102   302 	BEQL	DCL$SETNBLK		;IF EQL YES

                          04     11  0104   303 	BRB	10$			;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  11

01              PEEK AT NEXT CHARACTER IN INPUT BUFFER                                                                           (1)



                                     0106   305 	.SBTTL	PEEK AT NEXT CHARACTER IN INPUT BUFFER

                                     0106   306 ;+

                                     0106   307 ; DCL$SETCHAR - PEEK AT NEXT CHARACTER IN INPUT BUFFER

                                     0106   308 ;

                                     0106   309 ; THIS ROUTINE IS CALLED TO OBTAIN THE NEXT CHARACTER IN THE INPUT BUFFER

                                     0106   310 ; WITHOUT MOVING THE BUFFER POINTER.

                                     0106   311 ;

                                     0106   312 ; INPUTS:

                                     0106   313 ;

                                     0106   314 ;	NONE.

                                     0106   315 ;

                                     0106   316 ; OUTPUTS:

                                     0106   317 ;

                                     0106   318 ;	THE NEXT CHARACTER IS OBTAINED FROM THE INPUT BUFFER AND THE CHARACTER

                                     0106   319 ;	POINTER IS RETURNED TO ITS POSITION BEFORE THE GET CHARACTER OPERATION.

                                     0106   320 ;

                                     0106   321 ;	R0 = NEXT CHARACTER IN INPUT BUFFER.

                                     0106   322 ;+

                                     0106   323  

                                     0106   324 DCL$SETCHAR::				;PEEK AT NEXT CHARACTER

                          49     10  0106   325 	BSBB	DCL$GETCHAR		;GET NEXT CHARACTER FROM INPUT BUFFER

                          07     13  0108   326 	BEQL	20$			;IF EQL END OF LINE

         FA AD            20     AA  010A   327 10$:	BICW	#WRK_M_QUOTE,WRK_W_FLAGS(FP) ;TURN OFF QUOTATION FLAG

                       FC AD     D7  010E   328 	DECL	WRK_L_CHARPTR(FP)	;BACK UP INPUT BUFFER POINTER

                                 05  0111   329 20$:	RSB				;

                                     0112   330 	.DSABL	LSB

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  12

01              TEST FOR SIGNIFICANT BLANK                                                                                       (1)



                                     0112   332 	.SBTTL	TEST FOR SIGNIFICANT BLANK

                                     0112   333 ;+

                                     0112   334 ; DCL$TESTBLANK - TEST FOR SIGNIFICANT BLANK

                                     0112   335 ;

                                     0112   336 ; THIS ROUTINE IS CALLED TO TEST IF THE NEXT CHARACTER IN THE INPUT BUFFER IS

                                     0112   337 ; A SIGNIFICANT BLANK.

                                     0112   338 ;

                                     0112   339 ; INPUTS:

                                     0112   340 ;

                                     0112   341 ;	NONE.

                                     0112   342 ;

                                     0112   343 ; OUTPUTS:

                                     0112   344 ;

                                     0112   345 ;	IF THE NEXT CHARACTER IN THE INPUT BUFFER IS A BLANK AND IT IS NOT

                                     0112   346 ;	SIGNIFICANT, THEN IT IS REMOVED FROM THE INPUT STREAM.

                                     0112   347 ;-

                                     0112   348  

                                     0112   349 DCL$TESTBLANK::				;TEST FOR SIGNIFICANT BLANK

                          1E     10  0112   350 	BSBB	DCL$MOVCHAR		;PEEK AT NEXT CHARACTER IN INPUT BUFFER

            50            20     91  0114   351 	CMPB	#^A/ /,R0		;BLANK?

                          11     12  0117   352 	BNEQ	10$			;IF NEQ NO

                          EB     10  0119   353 	BSBB	DCL$SETCHAR		;PEEK AT NEXT CHARACTER IN INPUT BUFFER

            0F            50     3A  011B   354 	LOCC	R0,#BLANKTAB-TERMTAB,TERMTAB ;SEARCH FOR TERMINATOR

                     FEEA CF         011E       

                          07     13  0121   355 	BEQL	10$			;BR IF BLANK IS SIGNIFICANT

         FF A9            61     90  0123   356 	MOVB	(R1),-1(R9)		;PUT REAL TERMINATOR OVER BLANK

                       FC AD     D6  0127   357 	INCL	WRK_L_CHARPTR(FP)	;ADJUST POINTER FOR THE BLANK

         FC BD            79     90  012A   358 10$:	MOVB	-(R9),@WRK_L_CHARPTR(FP) ;RESTORE TERMINATOR IN INPUT BUFFER

                       FC AD     D7  012E   359 	DECL	WRK_L_CHARPTR(FP)	;BACK UP INPUT BUFFER POINTER

                                 05  0131   360 	RSB				;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  13

01              MOVE CHARACTER TO COMMAND BUFFER                                                                                 (1)



                                     0132   362 	.SBTTL	MOVE CHARACTER TO COMMAND BUFFER

                                     0132   363 ;+

                                     0132   364 ; DCL$MOVCHAR - MOVE CHARACTER TO COMMAND BUFFER

                                     0132   365 ;

                                     0132   366 ; THIS ROUTINE IS CALLED TO MOVE A CHARACTER FROM THE INPUT BUFFER TO THE

                                     0132   367 ; COMMAND BUFFER.

                                     0132   368 ;

                                     0132   369 ; INPUTS:

                                     0132   370 ;

                                     0132   371 ;	NONE.

                                     0132   372 ;

                                     0132   373 ; OUTPUTS:

                                     0132   374 ;

                                     0132   375 ;	THE NEXT CHARACTER IS OBTAINED FROM THE INPUT BUFFER AND WRITTEN INTO

                                     0132   376 ;	THE COMMAND BUFFER.

                                     0132   377 ;

                                     0132   378 ;	R0 = CHARACTER MOVED.

                                     0132   379 ;-

                                     0132   380  

                                     0132   381 DCL$MOVCHAR::				;MOVE CHARACTER TO COMMAND BUFFER

                          1D     10  0132   382 	BSBB	DCL$GETCHAR		;GET NEXT CHARACTER FROM INPUT BUFFER

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  14

01              PUT CHARACTER IN COMMAND BUFFER                                                                                  (1)



                                     0134   384 	.SBTTL	PUT CHARACTER IN COMMAND BUFFER

                                     0134   385 ;+

                                     0134   386 ; DCL$PUTCHAR - PUT CHARACTER IN COMMAND BUFFER

                                     0134   387 ;

                                     0134   388 ; THIS ROUTINE IS CALLED TO WRITE A CHARACTER INTO THE COMMAND BUFFER.

                                     0134   389 ;

                                     0134   390 ; INPUTS:

                                     0134   391 ;

                                     0134   392 ;	R0 = CHARACTER TO BE WRITTEN IN COMMAND BUFFER.

                                     0134   393 ;	R9 = ADDRESS OF NEXT BYTE IN COMMAND BUFFER.

                                     0134   394 ;

                                     0134   395 ; OUTPUTS:

                                     0134   396 ;

                                     0134   397 ;	THE SPECIFIED CHARACTER IS WRITTEN INTO THE COMMAND BUFFER AFTER

                                     0134   398 ;	HAVING CHECKED FOR BUFFER OVERFLOW.

                                     0134   399 ;

                                     0134   400 ;	R0 = CHARACTER WRITTEN.

                                     0134   401 ;-

                                     0134   402  

                                     0134   403 DCL$PUTCHAR::				;PUT CHARACTER IN COMMAND BUFFER

                     FF34 CD     9F  0134   404 	PUSHAB	WRK_AB_BUFFER+CMDBUFSIZ(FP) ;GET ENDING ADDRESS OF COMMAND BUFFER

            59            8E     D1  0138   405 	CMPL	(SP)+,R9		;ROOM FOR ANOTHER CHARACTER?

                          04     1B  013B   406 	BLEQU	10$			;IF LEQU NO

            89            50     90  013D   407 	MOVB	R0,(R9)+		;STORE CHARACTER IN COMMAND BUFFER

                                 05  0140   408 	RSB				;

            56            59     D0  0141   409 10$:	MOVL	R9,R6			;SET FOR NO ERROR SEGMENT

                                     0144   410 	ERRMSG	BUFOVF			;OUTPUT ERROR MESSAGE

         54 AB            20     AA  014A   411 	BICW	#PRC_M_IND,PRC_W_FLAGS(R11) ;CLEAR INDIRECT IN PROGRESS

                          00B1   31  014E   412 	BRW	ERROR			;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  15

01              GET - GET CHARACTER FROM INPUT BUFFER                                                                            (1)



                                     0151   414 	.SBTTL	GET - GET CHARACTER FROM INPUT BUFFER

                                     0151   415 ;+

                                     0151   416 ; DCL$GETCHAR - GET CHARACTER FROM INPUT BUFFER

                                     0151   417 ;

                                     0151   418 ; THIS ROUTINE IS CALLED TO GET THE NEXT CHARACTER FROM THE INPUT BUFFER.

                                     0151   419 ; IT HANDLES INDIRECT FILES, QUOTES, CONTINUATION, AND BLANK SUPPRESSION.

                                     0151   420 ;

                                     0151   421 ; INPUTS:

                                     0151   422 ;

                                     0151   423 ;	NONE.

                                     0151   424 ;

                                     0151   425 ; OUTPUTS:

                                     0151   426 ;

                                     0151   427 ;	THE NEXT CHARACTER IS READ FROM THE INPUT BUFFER AND RETURNED TO THE

                                     0151   428 ;	CALLER.

                                     0151   429 ;

                                     0151   430 ;	R0 = CHARACTER READ.

                                     0151   431 ;-

                                     0151   432  

                                     0151   433 	.ENABL	LSB

                                     0151   434 DCL$GETCHAR::				;GET NEXT CHARACTER FROM INPUT BUFFER

                          51     DD  0151   435 	PUSHL	R1			;SAVE REGISTER

                                     0153   436 NEXTCHAR:				;GET NEXT CHARACTER

                       FC AD     D6  0153   437 	INCL	WRK_L_CHARPTR(FP)	;UPDATE INPUT BUFFER POINTER

            51         FC AD     D0  0156   438 10$:	MOVL	WRK_L_CHARPTR(FP),R1	;GET CURRENT CHARACTER POINTER

            50            81     9A  015A   439 	MOVZBL	(R1)+,R0		;GET NEXT CHARACTER FROM INPUT BUFFER

                          73     13  015D   440 	BEQL	80$			;IF EQL END OF LINE

            50            22     91  015F   441 	CMPB	#^A/"/,R0		;QUOTE?

                          64     13  0162   442 	BEQL	60$			;IF EQL YES

         FA AD            05     E0  0164   443 	BBS	#WRK_V_QUOTE,WRK_W_FLAGS(FP),EXITCHAR ;IF SET, IN QUOTED STRING

                          7F         0168       

            50            21     91  0169   444 	CMPB	#^A/!/,R0		;EXCLAMATION?

                          60     13  016C   445 	BEQL	70$			;IF EQL YES

            50            2D     91  016E   446 	CMPB	#^A/-/,R0		;HYPHEN?

                          3A     13  0171   447 	BEQL	50$			;IF EQL YES

            50            20     91  0173   448 	CMPB	#^A/ /,R0		;BLANK?

                          0E     13  0176   449 	BEQL	20$			;IF EQL YES

            50         40 8F     91  0178   450 	CMPB	#^A/@/,R0		;AT SIGN?

                          70     13  017C   451 	BEQL	100$			;IF EQL YES

            50            09     91  017E   452 	CMPB	#^A/	/,R0		;TAB?

                          56     12  0181   453 	BNEQ	90$			;IF NEQ NO

            50            20     9A  0183   454 	MOVZBL	#^A/ /,R0		;SET CHARACTER TO A BLANK

         FC BD            50     90  0186   455 20$:	MOVB	R0,@WRK_L_CHARPTR(FP)	;STORE BLANK IN INPUT BUFFER

            81            20     91  018A   456 	CMPB	#^A/ /,(R1)+		;NEXT CHARACTER A BLANK?

                          06     13  018D   457 	BEQL	30$			;IF EQL YES

         FF A1            09     91  018F   458 	CMPB	#^A/	/,-1(R1)	;NEXT CHARACTER A TAB?

                          05     12  0193   459 	BNEQ	40$			;IF NEQ NO

                       FC AD     D6  0195   460 30$:	INCL	WRK_L_CHARPTR(FP)	;INCREMENT CHARACTER POINTER

                          EC     11  0198   461 	BRB	20$			;

                          71     95  019A   462 40$:	TSTB	-(R1)			;NEXT CHARACTER END OF LINE?

                          30     13  019C   463 	BEQL	70$			;IF EQL YES

            61            21     91  019E   464 	CMPB	#^A/!/,(R1)		;NEXT CHARACTER EXCLAMATION?

                          2B     13  01A1   465 	BEQL	70$			;IF EQL YES

            81            2D     91  01A3   466 	CMPB	#^A/-/,(R1)+		;HYPHEN?

                          40     12  01A6   467 	BNEQ	EXITCHAR		;IF NEQ NO

                                     01A8   468 	SETBIT	WRK_V_TRAILSPC,WRK_W_FLAGS(FP) ;INDICATE TRAILING SPACES SEEN

                          61     95  01AD   469 50$:	TSTB	(R1)			;NEXT CHARACTER END OF LINE?

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  16

01              GET - GET CHARACTER FROM INPUT BUFFER                                                                            (1)



                          5B     13  01AF   470 	BEQL	INPUT			;IF EQL YES

            61            21     91  01B1   471 	CMPB	#^A/!/,(R1)		;NEXT CHARACTER EXCLAMATION?

                          56     13  01B4   472 	BEQL	INPUT			;IF EQL YES

            81            20     91  01B6   473 	CMPB	#^A/ /,(R1)+		;NEXT CHARACTER A BLANK?

                          F2     13  01B9   474 	BEQL	50$			;IF EQL YES

         FF A1            09     91  01BB   475 	CMPB	#^A/	/,-1(R1)	;NEXT CHARACTER A TAB?

                          EC     13  01BF   476 	BEQL	50$			;IF EQL YES

                                     01C1   477 	CLRBIT	WRK_V_TRAILSPC,WRK_W_FLAGS(FP) ;CLEAR TRAILING SPACE FLAG

                          20     11  01C6   478 	BRB	EXITCHAR		;

         FA AD            20     AC  01C8   479 60$:	XORW	#WRK_M_QUOTE,WRK_W_FLAGS(FP) ;INVERT QUOTE FLAG

                          1A     11  01CC   480 	BRB	EXITCHAR		;

                          71     94  01CE   481 70$:	CLRB	-(R1)			;SET END OF LINE IN BUFFER

                          84     11  01D0   482 	BRB	10$			;

         FA AD            20     AA  01D2   483 80$:	BICW	#WRK_M_QUOTE,WRK_W_FLAGS(FP) ;CLEAR QUOTE IN PROGRESS

                       FC AD     D7  01D6   484 	DECL	WRK_L_CHARPTR(FP)	;BACK UP INPUT BUFFER POINTER

            50         61 8F     91  01D9   485 90$:	CMPB	#^A/a/,R0		;LOWER CASE LETTER?

                          09     1A  01DD   486 	BGTRU	EXITCHAR		;IF GTRU NO

            50         7A 8F     91  01DF   487 	CMPB	#^A/z/,R0		;LOWER CASE LETTER?

                          03     1F  01E3   488 	BLSSU	EXITCHAR		;IF LSSU NO

            50            20     8A  01E5   489 	BICB	#^X20,R0		;CONVERT TO LOWER CASE

                                     01E8   490 EXITCHAR:				;EXIT WITH CHARACTER

                          51   8ED0  01E8   491 	POPL	R1			;RESTORE REGISTER

                          50     95  01EB   492 	TSTB	R0			;SET CONDITION CODES BASED ON CHARACTER

                                 05  01ED   493 	RSB				;

         54 AB            04     E0  01EE   494 100$:	BBS	#PRC_V_GOTO,PRC_W_FLAGS(R11),EXITCHAR ;IF SET, IN GOTO

                          F5         01F2       

         54 AB            05     E2  01F3   495 	BBSS	#PRC_V_IND,PRC_W_FLAGS(R11),EXITCHAR ;IF SET, ALREADY IN @ FILE

                          F0         01F7       

                                     01F8   496 	STACKIND			;STACK CURRENT INDIRECT FILE SPECIFICATION

         54 AB            20     AA  01FB   497 	BICW	#PRC_M_IND,PRC_W_FLAGS(R11) ;CLEAR INDIRECT FILE IN PROGRESS

            0A            50     E8  01FF   498 	BLBS	R0,INPUT		;IF LBS SUCCESS

                                     0202   499 	.DSABL	LSB

                                     0202   500  

                                     0202   501 ;

                                     0202   502 ; ERROR EXIT

                                     0202   503 ;

                                     0202   504  

                          50     DD  0202   505 ERROR:	PUSHL	R0			;SAVE ERROR/STATUS VALUE

                                     0204   506 	FLUSH				;FLUSH INPUT BUFFER

                          01     BA  0207   507 	POPR	#^M<R0>			;RESTORE ERROR/STATUS VALUE

                          0144   31  0209   508 	BRW	STATUS			;

                                     020C   509  

                                     020C   510 ;

                                     020C   511 ; CONTINUATION SPECIFIED - READ IN NEXT LINE

                                     020C   512 ;

                                     020C   513  

                                     020C   514 INPUT:					;INPUT NEXT RECORD

                          1C     BB  020C   515 	PUSHR	#^M<R2,R3,R4>		;SAVE REGISTERS

         FA AD            08     E0  020E   516 REINP:	BBS	#WRK_V_INQUIRE,WRK_W_FLAGS(FP),5$ ;IF SET, QUERY IN PROGRESS

                          09         0212       

            54         14 AB     D0  0213   517 	MOVL	PRC_L_INDINPRAB(R11),R4	;GET ADDRESS OF LEVEL N RAB

         54 AB            0B     E1  0217   518 	BBC	#PRC_V_YLEVEL,PRC_W_FLAGS(R11),10$ ;IF CLR, NOT AT CONTROL Y/C LEVEL

                          04         021B       

            54         08 AB     D0  021C   519 5$:	MOVL	PRC_L_INPRAB(R11),R4	;GET ADDRESS OF LEVEL 0 RAB

            5E       FF7C CE     9E  0220   520 10$:	MOVAB	-MSGBUFSIZ(SP),SP	;ALLOCATE SPACE FOR PROMPT STRING

            50            5E     D0  0225   521 	MOVL	SP,R0			;SAVE ADDRESS OF PROMPT STRING STORAGE

         30 A4            50     D0  0228   522 	MOVL	R0,RAB$L_PBF(R4)	;SET ADDRESS OF PROMPT STRING

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  17

01              GET - GET CHARACTER FROM INPUT BUFFER                                                                            (1)



            52         D0 AD     D0  022C   523 	MOVL	WRK_L_PROMPT(FP),R2	;GET ADDRESS OF PROMPT STRING

            51            82     9A  0230   524 	MOVZBL	(R2)+,R1		;NOW THE LENGTH OF THE STRING

            51            02     81  0233   525 	ADDB3	#2,R1,RAB$B_PSZ(R4)	;SET LENGTH OF PROMPT STRING

                       34 A4         0236       

            80       0A0D 8F     B0  0238   526 	MOVW	#<10@8>+13,(R0)+	;INSERT CARRIAGE RETURN/LINE FEED PAIR

            80            82     90  023D   527 20$:	MOVB	(R2)+,(R0)+		;MOVE CHARACTER TO PROMPT BUFFER

            FA            51     F5  0240   528 	SOBGTR	R1,20$			;ANY MORE TO MOVE?

         20 A4         84 8F     9B  0243   529 	MOVZBW	#INPBUFSIZ,RAB$W_USZ(R4) ;SET SIZE OF INPUT BUFFER

            52       FF36 CD     9E  0248   530 	MOVAB	WRK_AB_BUFFER+CMDBUFSIZ+2(FP),R2 ;GET ADDRESS OF INPUT BUFFER

         24 A4            52     D0  024D   531 	MOVL	R2,RAB$L_UBF(R4)	;SET ADDRESS OF INPUT BUFFER

         FC AD         FF A2     9E  0251   532 	MOVAB	-1(R2),WRK_L_CHARPTR(FP) ;SET POINTER FOR GET CHARACTER

                                     0256   533 	DISABLE				;DISABLE CONTROL Y/C AST'S

                                     0259   534 	$GET	RAB=(R4)		;GET NEXT RECORD FROM INPUT FILE

            53         22 A4     3C  0262   535 	MOVZWL	RAB$W_RSZ(R4),R3	;GET LENGTH OF INPUT RECORD

                                     0266   536 	ENABLE				;ENABLE CONTROL Y/C AST'S

            5E       0084 CE     9E  0268   537 	MOVAB	MSGBUFSIZ(SP),SP	;DEALLOCATE PROMPT STRING STORAGE

            61            50     E9  026D   538 	BLBC	R0,40$			;IF LBC I/O ERROR

                          6243   94  0270   539 	CLRB	(R2)[R3]		;SET EOL INDICATOR

            53            27     3A  0273   540 	LOCC	#^A/'/,R3,(R2)		;LINE HAVE POSSIBLE STRING SUBSTITUTION?

                          62         0276       

                          03     13  0277   541 	BEQL	25$			;IF EQL NO

                          00DA   30  0279   542 	BSBW	EXPAND			;EXPAND LINE IF APPROPRIATE

         54 AB            04     E0  027C   543 25$:	BBS	#PRC_V_GOTO,PRC_W_FLAGS(R11),30$ ;IF SET, FORWARD GOTO

                          1C         0280       

         54 AB            07     E1  0281   544 	BBC	#PRC_V_VERIFY,PRC_W_FLAGS(R11),30$ ;IF CLR, NO LINE VERIFICATION

                          17         0285       

         54 AB            0B     E0  0286   545 	BBS	#PRC_V_YLEVEL,PRC_W_FLAGS(R11),30$ ;IF SET, AT CONTROL Y/C LEVEL

                          12         028A       

         18 AB            54     D1  028B   546 	CMPL	R4,PRC_L_INDOUTRAB(R11)	;READ FROM OUTPUT?

                          0C     13  028F   547 	BEQL	30$			;IF EQL YES, DON'T RE-ECHO

            53            01     C1  0291   548 	ADDL3	#1,R3,R1		;CALCULATE ACTUAL LENGTH OF LINE

                          51         0294       

            72            0D     90  0295   549 	MOVB	#13,-(R2)		;INSERT CARRIAGE RETURN IN BUFFER

                                     0298   550 	MSGOUT				;OUTPUT INPUT LINE

                          52     D6  029B   551 	INCL	R2			;POINT TO START OF BUFFER

                          54     D4  029D   552 30$:	CLRL	R4			;SET NO DOLLAR SIGN SEEN FLAG

            05            82     3A  029F   553 32$:	LOCC	(R2)+,#5,B^39$		;CHECK FOR SPECIAL CHARS

                       CC'AF         02A2       

                          0F     13  02A4   554 	BEQL	33$			;IF EQL NO MATCH

            50            03     C2  02A6   555 	SUBL	#3,R0			;BLANK OR TAB?

                          F4     19  02A9   556 	BLSS	32$			;IF LSS YES

                          08     13  02AB   557 	BEQL	33$			;IF EQL END OF LINE

                          50     D7  02AD   558 	DECL	R0			;DOLLAR SIGN OR COMMENT?

                          58     14  02AF   559 	BGTR	55$			;IF GTR COMMENT

            54            00     E3  02B1   560 	BBCS	#0,R4,32$		;IF CLR, FIRST DOLLAR SIGN

                          EA         02B4       

         FA AD            0A     E5  02B5   561 33$:	BBCC	#WRK_V_TRAILSPC,WRK_W_FLAGS(FP),35$ ;IF CLR, NO TRAILING SPACE SEEN

                          07         02B9       

         FC BD            20     90  02BA   562 	MOVB	#^A/ /,@WRK_L_CHARPTR(FP) ;INSERT BLANK AT FRONT OF BUFFER

                       FC AD     D7  02BE   563 	DECL	WRK_L_CHARPTR(FP)	;BACKUP POINTER TO LEADING SPACE

                          1C     BA  02C1   564 35$:	POPR	#^M<R2,R3,R4>		;RESTORE REGISTERS

         D0 AD       FD3B CF     9E  02C3   565 	MOVAB	REPROMPT,WRK_L_PROMPT(FP) ;SET FOR CONTINUATION PROMPT

                          FE87   31  02C9   566 	BRW	NEXTCHAR		;

                                     02CC   567  

                     09 20 00 24 21  02CC   568 39$:	.ASCII	/!$/<0>/ 	/	;SPECIAL CHARACTERS

                                     02D1   569  

                                     02D1   570 ;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  18

01              GET - GET CHARACTER FROM INPUT BUFFER                                                                            (1)



                                     02D1   571 ; INPUT I/O ERROR

                                     02D1   572 ;

                                     02D1   573 ;	****	NOTE: R2, R3, AND R4 ARE STILL ON THE STACK    ****

                                     02D1   574 ;

                                     02D1   575  

            50   00000000'8F     D1  02D1   576 40$:	CMPL	#RMS$_RSA,R0		;ERROR RECORD STREAM ACTIVE

                          0D     12  02D8   577 	BNEQ	45$			;IF NO CHECK FOR END_OF_FILE

                                     02DA   578 	$CANCEL_S PRC_W_INPCHAN(R11)	;IF YES, STOP THE IO ON THAT CHANNEL

                          22     11  02E5   579 	BRB	55$			;TRY TO READ AGAIN

            50   00000000'8F     D1  02E7   580 45$:	CMPL	#RMS$_EOF,R0		;END OF FILE?

                          3F     12  02EE   581 	BNEQ	60$			;IF NEQ NO

                          62     94  02F0   582 	CLRB	(R2)			;SET END OF LINE INDICATOR

         54 AB            0B     E0  02F2   583 	BBS	#PRC_V_YLEVEL,PRC_W_FLAGS(R11),33$ ;IF SET, AT CONTROL Y/C LEVEL

                          BE         02F6       

         FA AD            08     E0  02F7   584 	BBS	#WRK_V_INQUIRE,WRK_W_FLAGS(FP),33$ ;BR IF DOING AN INQUIRE

                          B9         02FB       

         14 AB         08 AB     D1  02FC   585 	CMPL	PRC_L_INPRAB(R11),PRC_L_INDINPRAB(R11) ;INDIRECT LEVEL ZERO?

                          0E     13  0301   586 	BEQL	57$			;IF EQL, YES

                                     0303   587 	UNSTACK				;UNSTACK INDIRECT FILE

            47            50     E9  0306   588 	BLBC	R0,STATUS		;IF LBC UNSTACK ERROR

                                     0309   589  

                                     0309   590 ;

                                     0309   591 ; NOW CHECK IF UNSTACK HAS OCCURED WITH INDIRECT FILE RECOGNITION DISABLED.

                                     0309   592 ; IF SO, THIS IS A FLUSH OF A COMMAND WITH "-" AS THE LAST CHARACTER.

                                     0309   593 ; IN THIS CASE, AN EOL MUST BE RETURNED.

                                     0309   594 ;

                                     0309   595  

         54 AB            05     E0  0309   596 55$:	BBS	#PRC_V_IND,PRC_W_FLAGS(R11),33$ ;BR IF DOING A FLUSH

                          A7         030D       

                          FEFD   31  030E   597 	BRW	REINP			;ELSE READ THE NEXT LINE

         54 AB            06     E1  0311   598 57$:	BBC	#PRC_V_MODE,PRC_W_FLAGS(R11),55$ ;BR IF NOT A BATCH JOB

                          F3         0315       

         54 AB            04     E5  0316   599 	BBCC	#PRC_V_GOTO,PRC_W_FLAGS(R11),59$ ;BR IF NOT IN A GOTO

                          11         031A       

                          FCE2'  30  031B   600 	BSBW	DCL$DEALGOTO		;DEALLOCATE AST CONTROL BLOCK

                                     031E   601 	STATUS	USGOTO			;SET FINAL STATUS OF UNSTATISFIED GOTO

                                     0322   602 	SETBIT WRK_V_COMMAND,WRK_W_FLAGS(FP) ;MARK COMMAND EXECUTION ERROR

                                     0326   603 	ERRMSG				;PRINT THE ERROR

                                     0329   604 58$:	SET_STATUS			;GIVE ERROR HANDLER A CHANCE

                          FCD1'  31  032C   605 59$:	BRW	DCL$LOGOUT		;LOG OUT BATCH JOB

                                     032F   606 60$:	SETBIT WRK_V_COMMAND,WRK_W_FLAGS(FP) ;MARK COMMAND EXECUTION ERROR

                                     0333   607 	ERRMSG				;OUTPUT ERROR MESSAGE

         54 AB            0B     E0  0336   608 	BBS	#PRC_V_YLEVEL,PRC_W_FLAGS(R11),STATUS ;IF SET, CNTL Y/C LEVEL

                          15         033A       

         14 AB         08 AB     D1  033B   609 	CMPL	PRC_L_INPRAB(R11),PRC_L_INDINPRAB(R11) ;INDIRECT LEVEL ZERO?

                          07     12  0340   610 	BNEQ	70$			;IF NEQ NO

         54 AB            06     E0  0342   611 	BBS	#PRC_V_MODE,PRC_W_FLAGS(R11),58$ ;BR IF BATCH

                          E2         0346       

                          07     11  0347   612 	BRB	STATUS			;

                          50     DD  0349   613 70$:	PUSHL	R0			;SAVE ERROR/STATUS VALUE

                                     034B   614 	UNSTACK				;UNSTACK INDIRECT FILE

                          01     BA  034E   615 	POPR	#^M<R0>			;RESTORE ERROR/STATUS VALUE

                                     0350   616 STATUS:	SET_STATUS			;SET COMPLETION STATUS

                          FCAA'  31  0353   617 	BRW	DCL$RESTART		;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  19

01              EXPAND INPUT LINE                                                                                                (1)



                                     0356   619 	.SBTTL	EXPAND INPUT LINE

                                     0356   620 ;

                                     0356   621 ; SUBROUTINE TO EXPAND INPUT LINE BY EXECUTING ALL STRING SUBSTITUTION COMMANDS

                                     0356   622 ;

                                     0356   623  

                                     0356   624 EXPAND:					;EXPAND INPUT LINE

                     17F0 8F     BB  0356   625 	PUSHR	#^M<R4,R5,R6,R7,R8,R9,R10,AP> ;SAVE REGISTERS

                          7E     D4  035A   626 	CLRL	-(SP)			;CLEAR QUOTE INDICATOR

            5A            52     D0  035C   627 	MOVL	R2,R10			;COPY ADDRESS OF INPUT BUFFER

            50            8A     9A  035F   628 10$:	MOVZBL	(R10)+,R0		;GET NEXT CHARACTER FROM INPUT LINE

            50            22     91  0362   629 	CMPB	#^A/"/,R0		;START OF QUOTE?

                          4C     13  0365   630 	BEQL	60$			;IF EQL YES

            50            27     91  0367   631 	CMPB	#^A/'/,R0		;STRING SUBSTITUTION COMMAND?

                          4A     12  036A   632 	BNEQ	70$			;IF NEQ NO

            08            6E     E9  036C   633 	BLBC	(SP),20$		;IF LBC NOT IN QUOTE

            6A            27     91  036F   634 	CMPB	#^A/'/,(R10)		;NEXT CHARACTER ALSO SINGLE QUOTE?

                          42     12  0372   635 	BNEQ	70$			;IF NEQ NO

            50            8A     9A  0374   636 	MOVZBL	(R10)+,R0		;GET NEXT CHARACTER

                          59     DD  0377   637 20$:	PUSHL	R9			;SAVE PLACE IN COMMAND BUFFER

                                     0379   638 	GETXSYM				;GET EXPANSION SYMBOL

            6A            27     91  037C   639 	CMPB	#^A/'/,(R10)		;SYMBOL END WITH SINGLE QUOTE?

                          02     12  037F   640 	BNEQ	30$			;IF NEQ NO

                          5A     D6  0381   641 	INCL	R10			;ADVANCE PAST SINGLE QUOTE

                          51     D5  0383   642 30$:	TSTL	R1			;ZERO LENGTH SYMBOL?

                          13     13  0385   643 	BEQL	50$			;IF EQL YES

            56            51     7D  0387   644 	MOVQ	R1,R6			;SAVE STRING PARAMETERS

                                     038A   645 	SEARCH				;SEARCH FOR SYMBOL

            03            50     E8  038D   646 	BLBS	R0,40$			;IF LBS SYMBOL DEFINITION FOUND

                          FC6D'  30  0390   647 	BSBW	DCL$LEXIF		;EVALUATE LEXICAL FUNCTION

            5A            51     C2  0393   648 40$:	SUBL	R1,R10			;CALCULATE ADDRESS TO COPY STRING

            62            51     28  0396   649 	MOVC	R1,(R2),(R10)		;CONCATENATE STRING TO INPUT BUFFER

                          6A         0399       

                          59   8ED0  039A   650 50$:	POPL	R9			;RETRIEVE ADDRESS IN COMMAND BUFFER

            01       03E8 8F     3D  039D   651 	ACBW	#1000,#1,2(SP),10$	;CHECK FOR SUBSTITUTION LOOP

            FFB9       02 AE         03A2       

                                     03A6   652 	STATUS	EXPSYN			;EXPRESSION SYNTAX ERROR

            57            56     C1  03A9   653 	ADDL3	R6,R7,R9		;POINT AT END OF SYMBOL

                          59         03AC       

            56            77     9E  03AD   654 	MOVAB	-(R7),R6		;SET ADDRESS OF "'"

                          FC4D'  31  03B0   655 	BRW	DCL$PARSERR		;REPORT ERROR

            6E            01     CC  03B3   656 60$:	XORL	#1,(SP)			;COMPLEMENT QUOTE FLAG

                                     03B6   657 70$:	PUTCHAR				;PUT CHARACTER IN COMMAND BUFFER

                          A4     12  03B9   658 	BNEQ	10$			;IF NEQ MORE CHARACTERS TO SCAN

            57         18 AE     D0  03BB   659 	MOVL	6*4(SP),R7		;GET STARTING ADDRESS OF EXPANDED LINE

            59            57     C2  03BF   660 	SUBL	R7,R9			;CALCULATE LENGTH OF EXPANDED LINE

            58         B8 AD     9E  03C2   661 	MOVAB	WRK_AB_BUFFER+CMDBUFSIZ+INPBUFSIZ(FP),R8 ;FIND END OF BUFFERS

            58            59     C2  03C6   662 	SUBL	R9,R8			;COMPUTE ADDRESS TO MOVE LINE TO

            67            59     28  03C9   663 	MOVC	R9,(R7),(R8)		;MOVE EXPANDED LINE TO END OF INPUT BUFFER

                          68         03CC       

            52            58     7D  03CD   664 	MOVQ	R8,R2			;SET INPUT LINE PARAMETERS

                          8E     D5  03D0   665 	TSTL	(SP)+			;REMOVE QUOTE FLAG FROM STACK

                     17F0 8F     BA  03D2   666 	POPR	#^M<R4,R5,R6,R7,R8,R9,R10,AP> ;RESTORE REGISTERS

         FC AD         FF A2     9E  03D6   667 	MOVAB	-1(R2),WRK_L_CHARPTR(FP) ;SET ADDRESS OF EXPANDED INPUT LINE

                                 05  03DB   668 	RSB				;

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  20

01              GET EXPANSION SYMBOL                                                                                             (1)



                                     03DC   670 	.SBTTL	GET EXPANSION SYMBOL

                                     03DC   671 ;+

                                     03DC   672 ; DCL$GETXSYM - GET EXPANSION SYMBOL

                                     03DC   673 ;

                                     03DC   674 ; THIS ROUTINE IS CALLED TO ISOLATE THE NEXT SYMBOL DURING A LINE EXPANSION.

                                     03DC   675 ;

                                     03DC   676 ; INPUTS:

                                     03DC   677 ;

                                     03DC   678 ;	R9 = ADDRESS OF NEXT CHARACTER IN OUTPUT BUFFER.

                                     03DC   679 ;	R10 = ADDRESS OF NEXT CHARACTER IN INPUT BUFFER.

                                     03DC   680 ;

                                     03DC   681 ; OUTPUTS:

                                     03DC   682 ;

                                     03DC   683 ;	R1 = LENGTH OF EXPANSION SYMBOL.

                                     03DC   684 ;	R2 = ADDRESS OF EXPANSION SYMBOL.

                                     03DC   685 ;	R9 AND R10 UPDATED AS APPROPRIATE.

                                     03DC   686 ;

                                     03DC   687 ;	CONDITION CODES SET BASED ON LENGTH OF SYMBOL.

                                     03DC   688 ;-

                                     03DC   689  

                                     03DC   690 DCL$GETXSYM::				;GET EXPANSION SYMBOL

            52            59     D0  03DC   691 	MOVL	R9,R2			;COPY STARTING ADDRESS OF SYMBOL

                          53     D4  03DF   692 	CLRL	R3			;CLEAR QUOTE FLAG

            0D            53     E8  03E1   693 10$:	BLBS	R3,20$			;IF LBS IN QUOTE

            17            6A     3A  03E4   694 	LOCC	(R10),#ENDTERM-TERMTAB,TERMTAB ;SEARCH FOR TERMINATOR

                     FC21 CF         03E7       

                          2B     12  03EA   695 	BNEQ	60$			;IF NEQ TERMINATOR FOUND

            6A            09     91  03EC   696 	CMPB	#^A/	/,(R10)		;TAB CHARACTER?

                          26     13  03EF   697 	BEQL	60$			;IF EQL YES

            50            8A     9A  03F1   698 20$:	MOVZBL	(R10)+,R0		;GET CHARACTER FROM INPUT BUFFER

                          1F     13  03F4   699 	BEQL	50$			;IF EQL END OF LINE

            50            22     91  03F6   700 	CMPB	#^A/"/,R0		;QUOTE CHARACTER?

                          03     12  03F9   701 	BNEQ	30$			;IF NEQ NO

            53            01     8C  03FB   702 	XORB	#1,R3			;COMPLEMENT QUOTE FLAG

            0F            53     E8  03FE   703 30$:	BLBS	R3,40$			;IF LBS IN QUOTE

            50         61 8F     91  0401   704 	CMPB	#^A/a/,R0		;LOWER CASE LETTER?

                          09     1A  0405   705 	BGTRU	40$			;IF GTRU NO

            50         7A 8F     91  0407   706 	CMPB	#^A/z/,R0		;LOWER CASE LETTER?

                          03     1F  040B   707 	BLSSU	40$			;IF LSSU NO

            50            20     8A  040D   708 	BICB	#^X20,R0		;CONVERT TO UPPER CASE

                                     0410   709 40$:	PUTCHAR				;PUT CHARACTER IN COMMAND BUFFER

                          CC     11  0413   710 	BRB	10$			;

                          5A     D7  0415   711 50$:	DECL	R10			;BACK UP TO TERMINATOR

            59            52     C3  0417   712 60$:	SUBL3	R2,R9,R1		;CALCULATE LENGTH OF SYMBOL

                          51         041A       

                                 05  041B   713 	RSB				;

                                     041C   714  

                                     041C   715 	.END

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  21

SYMBOL TABLE                                                                                                                     (1)



$$.TMP1        = 00000001            CLI$_ONEVAL    = 00038158            GBL...         = 00000000            

$$.TMP2        = 00000064            CLI$_ONLEVL    = 00038100            INPBUFSIZ      = 00000084            

BIT...         = 00000000            CLI$_ONOVF     = 00038108            INPUT            0000020C R     03   

BLANKTAB         0000001A R     03   CLI$_OVRFLW    = 00038160            MSGBUFSIZ      = 00000084            

CLI$_ABFNAM    = 000381B8            CLI$_PARMDEL   = 00038110            NEXTCHAR         00000153 R     03   

CLI$_ABKEYW    = 00038000            CLI$_PROC_ID   = 0003FFF1            PRC_B_DEFRADIX   00000092            

CLI$_ABVERB    = 00038008            CLI$_QUEJOBCRE = 0003FFF9            PRC_B_EXMDEPMOD  00000091            

CLI$_BADRET    = 00038198            CLI$_REQPRMABS = 00038812            PRC_B_EXMDEPWID  00000090            

CLI$_BADTEXT   = 000381B0            CLI$_RSLOVF    = 00038118            PRC_K_DEC      = 00000001            

CLI$_BUFOVF    = 00038018            CLI$_SKPDAT    = 00038120            PRC_K_HEX      = 00000000            

CLI$_COMPLX    = 00038020            CLI$_SPARE0    = 00038010            PRC_K_LENGTH     000000A0            

CLI$_CONFQUAL  = 00038802            CLI$_SPARE1    = 00038058            PRC_K_OCT      = 00000002            

CLI$_CREQUEJOB = 0003884A            CLI$_STKOVF    = 00038128            PRC_L_CLIWRK0    0000005C            

CLI$_DEFOVF    = 00038028            CLI$_SUBMITERR = 00038852            PRC_L_CLIWRK1    00000060            

CLI$_DEVALSPL  = 0003885A            CLI$_SYMDEL    = 00038130            PRC_L_CLIWRK2    00000064            

CLI$_DEVNOTFOR = 0003887A            CLI$_SYMOVF    = 00038138            PRC_L_CLIWRK3    00000068            

CLI$_DEVNOTSPL = 00038862            CLI$_UNDFIL    = 00038188            PRC_L_CLIWRK4    0000006C            

CLI$_DIRECT    = 00038030            CLI$_UNDSYM    = 00038140            PRC_L_ERRRAB     00000010            

CLI$_EXPSYN    = 00038038            CLI$_UNPROPARM = 00038170            PRC_L_EXMDEPADR  0000008C            

CLI$_FILOPN    = 00038190            CLI$_UNPROQUAL = 00038168            PRC_L_EXTARG     00000078            

CLI$_ILLVAL    = 0003883A            CLI$_USGOTO    = 00038148            PRC_L_EXTBLK     00000070            

CLI$_IMCHNG    = 00038040            CLI$_VALCNVERR = 00038832            PRC_L_EXTCOD     00000080            

CLI$_IMGFNF    = 00038872            CLI$_VALREQ    = 00038150            PRC_L_EXTHND     00000074            

CLI$_INSFPRM   = 00038048            CMDBUFSIZ      = 000001FC            PRC_L_EXTPRM     0000007C            

CLI$_INVKEY    = 00038178            DCL$DEALGOTO     ********   X   03   PRC_L_INDEPTH    00000048            

CLI$_INVQUAL   = 0003880A            DCL$DISABLE      ********   X   03   PRC_L_INDFAB     0000001C            

CLI$_INVQUALNUM= 0003881A            DCL$ERRORMSG     ********   X   03   PRC_L_INDINPRAB  00000014            

CLI$_INVREQTYP = 00038822            DCL$FLUSH        ********   X   03   PRC_L_INDOUTRAB  00000018            

CLI$_INVRSP    = 00038180            DCL$FORNBLK      000000F5 RG    03   PRC_L_INPRAB     00000008            

CLI$_INVUIC    = 000381A8            DCL$GENDESCR     0000002E RG    03   PRC_L_LSTSTATUS  00000094            

CLI$_IVCHAR    = 00038050            DCL$GETCHAR      00000151 RG    03   PRC_L_ONCTLY     0000009C            

CLI$_IVDEVTYPE = 0003886A            DCL$GETNBLK      0000007B RG    03   PRC_L_ONERROR    00000058            

CLI$_IVFNAM    = 000381C0            DCL$GETOKEN      00000089 RG    03   PRC_L_OUTRAB     0000000C            

CLI$_IVKEYW    = 00038060            DCL$GETXSYM      000003DC RG    03   PRC_L_PROCUIC    00000098            

CLI$_IVOPER    = 00038068            DCL$GTBTOKEN     0000008B RG    03   PRC_L_SAVAP      00000000            

CLI$_IVPROT    = 00038070            DCL$HYPHEN       00000000 RG    03   PRC_L_SAVFP      00000004            

CLI$_IVQLOC    = 00038078            DCL$LEXIF        ********   X   03   PRC_L_SEVERITY   00000040            

CLI$_IVSYMB    = 00038080            DCL$LOCATE       00000022 RG    03   PRC_L_STACKLM    00000088            

CLI$_IVVALU    = 00038088            DCL$LOGOUT       ********   X   03   PRC_L_STACKPT    00000084            

CLI$_IVVERB    = 00038090            DCL$MOVBTOKN     00000081 RG    03   PRC_L_STATUS     00000044            

CLI$_MAXPARM   = 00038098            DCL$MOVCHAR      00000132 RG    03   PRC_L_SYMBOL     0000004C            

CLI$_MULKEY    = 000381A0            DCL$MOVTOKN      00000086 RG    03   PRC_M_CNTRLY   = 00000002            

CLI$_NOATFIL   = 000380A0            DCL$MSGOUT       ********   X   03   PRC_M_DBGQUAL  = 00000200            

CLI$_NOCCAT    = 000380A8            DCL$PARSERR      ********   X   03   PRC_M_DBGTRUE  = 00000400            

CLI$_NOCOMD    = 000380B0            DCL$PUTCHAR      00000134 RG    03   PRC_M_DISABL   = 00000004            

CLI$_NOKEYW    = 000380B8            DCL$RESTART      ********   X   03   PRC_M_EXIT     = 00000008            

CLI$_NOLIST    = 000380C0            DCL$SEARCH       ********   X   03   PRC_M_GOEOF    = 00000001            

CLI$_NOOPTPRS  = 00038842            DCL$SETCHAR      00000106 RG    03   PRC_M_GOTO     = 00000010            

CLI$_NOQUAL    = 000380C8            DCL$SETNBLK      000000FB RG    03   PRC_M_HANGUP   = 00001000            

CLI$_NORMAL    = 00030001            DCL$SET_STATUS   ********   X   03   PRC_M_IND      = 00000020            

CLI$_NOTNEG    = 000380D8            DCL$STACKIND     ********   X   03   PRC_M_MODE     = 00000040            

CLI$_NOVALU    = 000380D0            DCL$TESTBLANK    00000112 RG    03   PRC_M_NOCTLY   = 00004000            

CLI$_NOVALUE   = 0003882A            DCL$UNSTACK      ********   X   03   PRC_M_PAUSE    = 00002000            

CLI$_NULFIL    = 000380E0            ENDTERM          00000022 R     03   PRC_M_USRDET   = 00000100            

CLI$_NUMBER    = 000380E8            ERROR            00000202 R     03   PRC_M_VERIFY   = 00000080            

CLI$_ONCOMD    = 000380F0            EXITCHAR         000001E8 R     03   PRC_M_YLEVEL   = 00000800            

CLI$_ONERR     = 000380F8            EXPAND           00000356 R     03   PRC_Q_ALLOCREG   00000020            

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  22

SYMBOL TABLE                                                                                                                     (1)



PRC_Q_GLOBAL     00000028            PTR_K_ENDLINE  = 00000004            RAB$M_HSH      = 00000080            

PRC_Q_LABEL      00000030            PTR_K_LPAREN   = 00000007            RAB$M_KGE      = 00200000            

PRC_Q_LOCAL      00000038            PTR_K_PARAMETR = 00000003            RAB$M_KGT      = 00400000            

PRC_V_CNTRLY   = 00000001            PTR_K_PARMQUAL = 00000001            RAB$M_LIM      = 00004000            

PRC_V_DBGQUAL  = 00000009            PTR_K_PLUS     = 00000004            RAB$M_LOA      = 00002000            

PRC_V_DBGTRUE  = 0000000A            PTR_K_QUALVALU = 00000002            RAB$M_LOC      = 00010000            

PRC_V_DISABL   = 00000002            PTR_K_RPAREN   = 00000006            RAB$M_MAS      = 00000020            

PRC_V_EXIT     = 00000003            PTR_K_SLASH    = 00000003            RAB$M_NLK      = 00100000            

PRC_V_GOEOF    = 00000000            PTR_L_DESCR      00000000            RAB$M_NXR      = 00800000            

PRC_V_GOTO     = 00000004            PTR_S_FLAGS    = 00000004            RAB$M_PMT      = 40000000            

PRC_V_HANGUP   = 0000000C            PTR_S_OFFSET   = 0000000C            RAB$M_PPF_IND  = 00004000            

PRC_V_IND      = 00000005            PTR_S_TERM     = 00000004            RAB$M_PPF_RAT  = 00003FC0            

PRC_V_MODE     = 00000006            PTR_S_TYPE     = 00000004            RAB$M_PTA      = 20000000            

PRC_V_NOCTLY   = 0000000E            PTR_S_VALUE    = 00000008            RAB$M_RAH      = 00000200            

PRC_V_PAUSE    = 0000000D            PTR_V_FLAGS    = 00000014            RAB$M_RLK      = 00080000            

PRC_V_USRDET   = 00000008            PTR_V_NEGATE   = 00000000            RAB$M_RNE      = 01000000            

PRC_V_VERIFY   = 00000007            PTR_V_OFFSET   = 00000008            RAB$M_RNF      = 08000000            

PRC_V_YLEVEL   = 0000000B            PTR_V_TERM     = 00000018            RAB$M_TMO      = 02000000            

PRC_W_CLIFLAG    00000052            PTR_V_TYPE     = 0000001C            RAB$M_TPT      = 00000002            

PRC_W_ERRIFI     00000052            PTR_V_VALUE    = 00000000            RAB$M_UIF      = 00000010            

PRC_W_FLAGS      00000054            RAB$B_BID        00000000            RAB$M_ULK      = 00040000            

PRC_W_INPCHAN    00000050            RAB$B_BLN        00000001            RAB$M_WAT      = 00020000            

PRC_W_ONLEVEL    00000056            RAB$B_KRF        00000035            RAB$M_WBH      = 00000400            

PSL$C_EXEC     = 00000001            RAB$B_KSZ        00000034            RAB$S_PPF_RAT  = 00000008            

PSL$C_KERNEL   = 00000000            RAB$B_MBC        00000037            RAB$V_ASY      = 00000000            

PSL$C_SUPER    = 00000002            RAB$B_MBF        00000036            RAB$V_BIO      = 0000000B            

PSL$C_USER     = 00000003            RAB$B_PSZ        00000034            RAB$V_CCO      = 0000001F            

PSL$M_CM       = 80000000            RAB$B_RAC        0000001E            RAB$V_CVT      = 0000001A            

PSL$M_CURMOD   = 03000000            RAB$B_ROP1       00000005            RAB$V_EOF      = 00000008            

PSL$M_DV       = 00000080            RAB$B_ROP2       00000006            RAB$V_FDL      = 00000006            

PSL$M_FPD      = 08000000            RAB$B_ROP3       00000007            RAB$V_HSH      = 00000007            

PSL$M_FU       = 00000040            RAB$B_TMO        0000001F            RAB$V_KGE      = 00000015            

PSL$M_IPL      = 001F0000            RAB$C_BID      = 00000001            RAB$V_KGT      = 00000016            

PSL$M_IS       = 04000000            RAB$C_BLN        00000044            RAB$V_LIM      = 0000000E            

PSL$M_IV       = 00000020            RAB$C_KEY      = 00000001            RAB$V_LOA      = 0000000D            

PSL$M_PRVMOD   = 00C00000            RAB$C_RFA      = 00000002            RAB$V_LOC      = 00000010            

PSL$M_SAFBITS  = 000037FF            RAB$C_SEQ      = 00000000            RAB$V_MAS      = 00000005            

PSL$M_TBIT     = 00000010            RAB$K_BLN        00000044            RAB$V_NLK      = 00000014            

PSL$M_TP       = 40000000            RAB$L_BKT        00000038            RAB$V_NXR      = 00000017            

PSL$S_CURMOD   = 00000002            RAB$L_CTX        00000018            RAB$V_PMT      = 0000001E            

PSL$S_IPL      = 00000005            RAB$L_DCT        00000038            RAB$V_PPF_IND  = 0000000E            

PSL$S_PRVMOD   = 00000002            RAB$L_FAB        0000003C            RAB$V_PPF_RAT  = 00000006            

PSL$V_CM       = 0000001F            RAB$L_KBF        00000030            RAB$V_PTA      = 0000001D            

PSL$V_CURMOD   = 00000018            RAB$L_PBF        00000030            RAB$V_RAH      = 00000009            

PSL$V_DV       = 00000007            RAB$L_RBF        00000028            RAB$V_RLK      = 00000013            

PSL$V_FPD      = 0000001B            RAB$L_RFA0       00000010            RAB$V_RNE      = 00000018            

PSL$V_FU       = 00000006            RAB$L_RHB        0000002C            RAB$V_RNF      = 0000001B            

PSL$V_IPL      = 00000010            RAB$L_ROP        00000004            RAB$V_TMO      = 00000019            

PSL$V_IS       = 0000001A            RAB$L_STS        00000008            RAB$V_TPT      = 00000001            

PSL$V_IV       = 00000005            RAB$L_STV        0000000C            RAB$V_UIF      = 00000004            

PSL$V_PRVMOD   = 00000016            RAB$L_UBF        00000024            RAB$V_ULK      = 00000012            

PSL$V_TBIT     = 00000004            RAB$M_ASY      = 00000001            RAB$V_WAT      = 00000011            

PSL$V_TP       = 0000001E            RAB$M_BIO      = 00000800            RAB$V_WBH      = 0000000A            

PTR_K_BLANK    = 00000001            RAB$M_CCO      = 80000000            RAB$W_ISI        00000002            

PTR_K_COLON    = 00000002            RAB$M_CVT      = 04000000            RAB$W_RFA        00000010            

PTR_K_COMDQUAL = 00000000            RAB$M_EOF      = 00000100            RAB$W_RFA4       00000014            

PTR_K_COMMA    = 00000005            RAB$M_FDL      = 00000040            RAB$W_RSZ        00000022            

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  23

SYMBOL TABLE                                                                                                                     (1)



RAB$W_USZ        00000020            SS$_DUPFILENAME= 00000868            SS$_IVSECIDCTL = 000002E4            

REINP            0000020E R     03   SS$_DUPLNAM    = 00000094            SS$_IVSSRQ     = 00000174            

REPROMPT         00000002 R     03   SS$_ENDOFFILE  = 00000870            SS$_IVSTSFLG   = 0000017C            

RMS$_EOF         ********   X   03   SS$_ENDOFTAPE  = 00000878            SS$_IVTIME     = 00000184            

RMS$_RSA         ********   X   03   SS$_ENDOFUSRLBL= 00000970            SS$_LCKPAGFUL  = 000000D4            

RSLBUFSIZ      = 00000180            SS$_EXQUOTA    = 0000001C            SS$_LENVIO     = 0000018C            

SS$_ABORT      = 0000002C            SS$_EXTIDXFILE = 00000880            SS$_LKWSETFUL  = 00000194            

SS$_ACCONFLICT = 00000800            SS$_FCPREADERR = 00000888            SS$_MBFULL     = 000008D8            

SS$_ACCVIO     = 0000000C            SS$_FCPREPSTN  = 00000988            SS$_MBTOOSML   = 0000019C            

SS$_ACPVAFUL   = 000002FC            SS$_FCPREWNDERR= 00000890            SS$_MCHECK     = 000002BC            

SS$_ARTRES     = 00000474            SS$_FCPSPACERR = 00000898            SS$_MEDOFL     = 000001A4            

SS$_ASTFLT     = 0000040C            SS$_FCPWRITERR = 000008A0            SS$_MSGNOTFND  = 00000621            

SS$_BADATTRIB  = 00000034            SS$_FILACCERR  = 0000009C            SS$_MTLBLLONG  = 00000304            

SS$_BADCHKSUM  = 00000808            SS$_FILALRACC  = 000000A4            SS$_MUSTCLOSEFL= 00000948            

SS$_BADESCAPE  = 0000003C            SS$_FILELOCKED = 000008A8            SS$_NOAQB      = 00000314            

SS$_BADFILEHDR = 00000810            SS$_FILENUMCHK = 000008B0            SS$_NODATA     = 000001AC            

SS$_BADFILENAME= 00000818            SS$_FILESEQCHK = 000008B8            SS$_NOHANDLER  = 000008F8            

SS$_BADFILEVER = 00000820            SS$_FILESTRUCT = 000008C0            SS$_NOHOMEBLK  = 000008E0            

SS$_BADIMGHDR  = 00000044            SS$_FILNOTACC  = 000000AC            SS$_NOIOCHAN   = 000001B4            

SS$_BADIRECTORY= 00000828            SS$_FILNOTCNTG = 000002AC            SS$_NOLINKS    = 0000027C            

SS$_BADPARAM   = 00000014            SS$_FILNOTEXP  = 000000B4            SS$_NOLOGNAM   = 000001BC            

SS$_BADSTACK   = 000002B4            SS$_FLTDIV     = 00000494            SS$_NOMBX      = 00000274            

SS$_BEGOFFILE  = 00000938            SS$_FLTOVF     = 0000048C            SS$_NOMOREFILES= 00000930            

SS$_BLOCKCNTERR= 00000940            SS$_FLTUND     = 0000049C            SS$_NONEXDRV   = 000001C4            

SS$_BREAK      = 00000414            SS$_FORMAT     = 000000BC            SS$_NONEXPR    = 000008E8            

SS$_BUFBYTALI  = 0000030C            SS$_GPTFULL    = 000000C4            SS$_NONLOCAL   = 000008F0            

SS$_BUFFEROVF  = 00000601            SS$_GSDFULL    = 000000CC            SS$_NOPRIV     = 00000024            

SS$_BUGCHECK   = 000002A4            SS$_HANGUP     = 000002CC            SS$_NORMAL     = 00000001            

SS$_CANCEL     = 00000830            SS$_HEADERFULL = 000008C8            SS$_NOSIGNAL   = 00000900            

SS$_CHANINTLK  = 0000004C            SS$_IDXFILEFULL= 000008D0            SS$_NOSOLICIT  = 00000284            

SS$_CLIFRCEXT  = 00000980            SS$_ILLBLKNUM  = 000000DC            SS$_NOSUCHDEV  = 00000908            

SS$_CMODSUPR   = 0000041C            SS$_ILLCNTRFUNC= 000000E4            SS$_NOSUCHFILE = 00000910            

SS$_CMODUSER   = 00000424            SS$_ILLEFC     = 000000EC            SS$_NOSUCHNODE = 0000028C            

SS$_COMPAT     = 0000042C            SS$_ILLIOFUNC  = 000000F4            SS$_NOSUCHSEC  = 00000978            

SS$_CONTINUE   = 00000001            SS$_ILLLBLAST  = 00000968            SS$_NOTAPEOP   = 00000264            

SS$_CONTROLC   = 00000651            SS$_ILLPAGCNT  = 000000FC            SS$_NOTFILEDEV = 000001CC            

SS$_CONTROLO   = 00000609            SS$_ILLSEQOP   = 000002DC            SS$_NOTINTBLSZ = 000001D4            

SS$_CONTROLY   = 00000611            SS$_ILLSER     = 00000104            SS$_NOTLABELMT = 000001DC            

SS$_CREATED    = 00000619            SS$_ILLUSRLBLRD= 00000958            SS$_NOTMODIFIED= 00000659            

SS$_CTRLERR    = 00000054            SS$_ILLUSRLBLWT= 00000960            SS$_NOTNETDEV  = 000002EC            

SS$_DATACHECK  = 0000005C            SS$_INCVOLLABEL= 0000010C            SS$_NOTRAN     = 00000629            

SS$_DATAOVERUN = 00000838            SS$_INSFARG    = 00000114            SS$_NOTSQDEV   = 000001E4            

SS$_DEBUG      = 0000046C            SS$_INSFMEM    = 00000124            SS$_OPCCUS     = 00000434            

SS$_DECOVF     = 000004A4            SS$_INSFRAME   = 0000012C            SS$_OPCDEC     = 0000043C            

SS$_DEVACTIVE  = 000002C4            SS$_INSFWSL    = 0000011C            SS$_OPINCOMPL  = 000002D4            

SS$_DEVALLOC   = 00000840            SS$_INTDIV     = 00000484            SS$_PAGOWNVIO  = 000001EC            

SS$_DEVALRALLOC= 00000641            SS$_INTOVF     = 0000047C            SS$_PAGRDERR   = 00000444            

SS$_DEVASSIGN  = 00000848            SS$_IVADDR     = 00000134            SS$_PARITY     = 000001F4            

SS$_DEVFOREIGN = 00000064            SS$_IVCHAN     = 0000013C            SS$_PARTESCAPE = 000001FC            

SS$_DEVICEFULL = 00000850            SS$_IVCHNLSEC  = 0000026C            SS$_PFMBSY     = 00000204            

SS$_DEVMOUNT   = 0000006C            SS$_IVDEVNAM   = 00000144            SS$_PLHLDR     = 00000404            

SS$_DEVNOTALLOC= 00000858            SS$_IVGSDNAM   = 0000014C            SS$_PSTFULL    = 0000020C            

SS$_DEVNOTMBX  = 00000074            SS$_IVLOGNAM   = 00000154            SS$_RADRMOD    = 0000044C            

SS$_DEVNOTMOUNT= 0000007C            SS$_IVLOGTAB   = 0000015C            SS$_REJECT     = 00000294            

SS$_DEVOFFLINE = 00000084            SS$_IVPROTECT  = 000002F4            SS$_REMOTE     = 00000649            

SS$_DIRFULL    = 00000860            SS$_IVQUOTAL   = 00000164            SS$_RESIGNAL   = 00000918            

SS$_DRVERR     = 0000008C            SS$_IVSECFLG   = 0000016C            SS$_RESULTOVF  = 00000214            

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  24

SYMBOL TABLE                                                                                                                     (1)



SS$_ROPRAND    = 00000454            WRK_Q_IOSB       FFFFFFD4            

SS$_SECTBLFUL  = 0000021C            WRK_V_COMMAND  = 00000001            

SS$_SSFAIL     = 0000045C            WRK_V_IMCHNG   = 00000002            

SS$_SUBRNG     = 000004AC            WRK_V_INQUIRE  = 00000008            

SS$_SUPERSEDE  = 00000631            WRK_V_NOSTAT   = 00000009            

SS$_TAPEPOSLOST= 00000224            WRK_V_PROMPT   = 00000003            

SS$_TBIT       = 00000464            WRK_V_QUAL     = 00000004            

SS$_TIMEOUT    = 0000022C            WRK_V_QUOTE    = 00000005            

SS$_TOOMANYVER = 00000990            WRK_V_RUNDWN   = 00000000            

SS$_TOOMUCHDATA= 0000029C            WRK_V_STAR     = 00000006            

SS$_UNASEFC    = 00000234            WRK_V_TRAILSPC = 0000000A            

SS$_UNSAFE     = 0000023C            WRK_V_VERB     = 00000007            

SS$_UNWIND     = 00000920            WRK_W_FLAGS      FFFFFFFA            

SS$_UNWINDING  = 00000928            WRK_W_IMGCHAN    FFFFFFF8            

SS$_VASFULL    = 00000244            _$$_           = 0000000E            

SS$_VECINUSE   = 0000024C            

SS$_VOLINV     = 00000254            

SS$_WAITUSRLBL = 00000950            

SS$_WASCLR     = 00000001            

SS$_WASECC     = 00000639            

SS$_WASSET     = 00000009            

SS$_WRITLCK    = 0000025C            

SS$_WRONGACP   = 0000031C            

STATUS           00000350 R     03   

SYS$CANCEL       ********   X   03   

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

TERMCLASS        00000005 R     03   

TERMTAB          0000000B R     03   

WRK_AB_BUFFER    FFFFFD38            

WRK_AG_RESULT    FFFFFBB4            

WRK_B_VERBTYP    FFFFFFC0            

WRK_K_LENGTH     FFFFFBB4            

WRK_L_CHARPTR    FFFFFFFC            

WRK_L_CMDOUT     FFFFFFBC            

WRK_L_IMAGE      FFFFFFEC            

WRK_L_MAXPARM    FFFFFFE4            

WRK_L_MINPARM    FFFFFFE8            

WRK_L_PARMCNT    FFFFFFF0            

WRK_L_PAROUT     FFFFFFF4            

WRK_L_PROMPT     FFFFFFD0            

WRK_L_PROPTR     FFFFFFDC            

WRK_L_QUABLK     FFFFFFE0            

WRK_L_RSLNXT     FFFFFD34            

WRK_L_SAVAP      FFFFFFC8            

WRK_L_SAVFP      FFFFFFCC            

WRK_L_SAVSP      FFFFFFC4            

WRK_M_COMMAND  = 00000002            

WRK_M_IMCHNG   = 00000004            

WRK_M_INQUIRE  = 00000100            

WRK_M_NOSTAT   = 00000200            

WRK_M_PROMPT   = 00000008            

WRK_M_QUAL     = 00000010            

WRK_M_QUOTE    = 00000020            

WRK_M_RUNDWN   = 00000001            

WRK_M_STAR     = 00000040            

WRK_M_TRAILSPC = 00000400            

WRK_M_VERB     = 00000080            

CHARMANIP       - CHARACTER MANIPULATION ROUTINES                22-AUG-1978 00:54:57   VAX-11 MACRO X0.3-11               Page  25

PROGRAM SECTION SYNOPSIS                                                                                                         (1)







PROGRAM SECTION SYNOPSIS



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

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

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

DCL$ZCODE        0000041C      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

6980. BYTES LEFT IN FREE MEMORY POOL.

2218. BYTES OF RECLAIMED MEMORY.

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

36 MLB DIR RDS - 904 GETS TO DEFINE 37 MACROS. 72 INTER. FILE WRITES. 

