Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-1


				 page 80,132
				;	SCCSID = @(#)tbatch2.asm	4.2 85/07/22
				;	SCCSID = @(#)tbatch2.asm	4.2 85/07/22
				TITLE	Batch processing routines part II
				
					INCLUDE comsw.asm
			     C	;	SCCSID = @(#)comsw.asm	1.1 85/05/14
			     C	;	SCCSID = @(#)comsw.asm	1.1 85/05/14
			     C	
			     C	include version.inc
			     C	; Some modules really want TRUE to be 0FFH.  Best to let them have their way.
			     C	
			     C	;
			     C	; Use the following switches to control cmacros.inc
			     C	;
 = 0000                      C	?PLM       =       0
 = 0000                      C	?WIN       =       0
			     C	
 = 0001                      C	memS       EQU     1			; Small model
			     C	;
			     C	; Use the switches below to produce the standard Microsoft version or the IBM
			     C	; version of the operating system
			     C	;
			     C	; The below chart will indicate how to set the switches to build the various
			     C	; versions
			     C	;
			     C	;                     IBMVER          IBMCOPYRIGHT
			     C	; --------------------------------------------------------
			     C	;  IBM Version   |     TRUE              TRUE
			     C	; --------------------------------------------------------
			     C	;  MS Version    |     FALSE             FALSE
			     C	; --------------------------------------------------------
			     C	;  Clone Version |     TRUE              FALSE
			     C	;
 =                           C	IBMVER     EQU     TRUE
 =                           C	IBMCOPYRIGHT EQU   FALSE
			     C	
 = FFFF                      C	BUFFERFLAG	EQU	NOT IBMCOPYRIGHT
			     C	
 =                           C	IBM	   EQU	   IBMVER
			     C	;
			     C	;
			     C	;
			     C	;
			     C	;***************************************************************************
			     C	;*          The following switches are for DBCS or SBCS support            *
			     C	;*                                                                         *
			     C	;*                     Set INTERNAT EQU TRUE FOR DBCS                      *
			     C	;*                     Set INTERNAT EQU FALSE FOR SBCS                     *
			     C	;*                                                                         *
			     C	;***************************************************************************
			     C	;
 =                           C	IBMJAPVER  EQU	   FALSE		;If TRUE set KANJI true also
			     C	
			     C	;
			     C	; Switch INTERNAT for DBCS support
			     C	;
 =                           C	INTERNAT   EQU	   FALSE
			     C	;
			     C		ELSE
 =                           C	KANJI	   EQU	   FALSE
 =                           C	IBMJAPAN   EQU	   FALSE
			     C		ENDIF
			     C	
			     C	
			     C	;
			     C	; Country code switches
			     C	; The default contry code is assumed as USA.
			     C	;
			     C		ELSE
 =                           C	 KOREA	   EQU	   FALSE
 =                           C	 JAPAN	   EQU	   FALSE
			     C		ENDIF
			     C	;
			     C	
			     C	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-2


				
				.list
				.cref
				
				
 0000				DATARES 	SEGMENT PUBLIC BYTE	;AC000;
					EXTRN	BATCH:WORD
					EXTRN	Batch_Abort:byte
					EXTRN	call_batch_flag:byte
					EXTRN	call_flag:byte
					EXTRN	IFFlag:BYTE
					EXTRN	In_Batch:byte
					EXTRN	Nest:word
					EXTRN	PIPEFILES:BYTE
					EXTRN	RETCODE:WORD
					EXTRN	SINGLECOM:WORD
 0000				DATARES ENDS
				
 0000				TRANDATA	SEGMENT PUBLIC BYTE	;AC000;
					EXTRN	BADLAB_PTR:WORD
					EXTRN	BatBufLen:WORD
					EXTRN	IFTAB:BYTE
					EXTRN	SYNTMES_PTR:WORD
 0000				TRANDATA	ENDS
				
 0000				TRANSPACE	SEGMENT PUBLIC BYTE	;AC000;
					EXTRN	arg:byte		; the arg structure!
					EXTRN	BatBuf:BYTE
					EXTRN	BatBufEnd:WORD
					EXTRN	BatBufPos:WORD
					EXTRN	BATHAND:WORD
					EXTRN	COMBUF:BYTE
					EXTRN	DIRBUF:BYTE
					EXTRN	GOTOLEN:WORD
					EXTRN	if_not_count:word
					EXTRN	IFNOTFLAG:BYTE
					EXTRN	RESSEG:WORD
 0000				TRANSPACE	ENDS
				
 0000				TRANCODE	SEGMENT PUBLIC BYTE
				
				ASSUME	CS:TRANGROUP,DS:NOTHING,ES:NOTHING,SS:NOTHING
				
					EXTRN	cerror:near
					EXTRN	docom1:near
					EXTRN	tcommand:near
				
					public	$if,iferlev,goto,shift,ifexists,ifnot,forerror,$call
				
				
				Break	<GetBatByt - retrieve a byte from the batch file>
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-3
GetBatByt - retrieve a byte from the batch file             

				
				; Get one byte from the batch file and return it in AL.  End-of-file returns
				; <CR> and ends batch mode.  DS must be set to resident segment.
				; AH, DX destroyed.
				
				Procedure   GETBATBYT,NEAR
 0000                        1	GETBATBYT    PROC    NEAR 
				
				ASSUME	DS:RESGROUP
				
					SaveReg <BX,CX,DS>
 0000  53                    2		PUSH    BX 
 0001  51                    2		PUSH    CX 
 0002  1E                    2		PUSH    DS 
 0003  F6 06 0000 E FF			test	byte ptr [Batch_Abort],-1
 0008  75 7E				jnz	BatEOF
 000A  F7 06 0000 E FFFF		TEST	Batch,-1
 0010  74 76				JZ	BatEOF
 0012  06				PUSH	ES
 0013  8E 06 0000 E			MOV	ES,Batch
					ASSUME	ES:NOTHING
 0017  26: 83 06 0007 01		ADD	WORD PTR ES:[BatSeek],1
 001D  26: 83 16 0009 00		ADC	WORD PTR ES:[BatSeek+2],0
 0023  07				POP	ES
				;
				; See if we have bytes buffered...
				;
 0024  8C C8				MOV	AX,CS
 0026  8E D8				MOV	DS,AX
					ASSUME	DS:TranGroup
 0028  8B 1E 0000 E			MOV	BX,BatBufPos
 002C  83 FB FF				CMP	BX,-1
 002F  75 3D				JNZ	UnBuf
				;
				; There are no bytes in the buffer.  Let's try to fill it up.
				;
 0031  BA 0000 E			MOV	DX,OFFSET TranGROUP:BatBuf
 0034  8B 0E 0000 E			MOV	CX,BatBufLen			; max to read.
 0038  8B 1E 0000 E			MOV	BX,BatHand
 003C  B4 3F				MOV	AH,READ
 003E  CD 21				INT	int_command			; Get one more byte from batch file
 0040  73 1E				jnc	bat_read_ok			;AN022; if no error - continue
					invoke	get_ext_error_number		;AN022; get the error
 0042  E8 0000 E             1		CALL    get_ext_error_number 
 0045  1E				push	ds				;AN022; save local segment
 0046  8E 1E 0000 E			mov	ds,[resseg]			;AN022; get resident segment
				assume	ds:resgroup				;AN022;
 004A  8B D0				mov	dx,ax				;AN022; put error in DX
					invoke	output_batch_name		;AN022; set up to print the error
 004C  E8 0000 E             1		CALL    output_batch_name 
 004F  1F				pop	ds				;AN022;
				assume	ds:trangroup				;AN022;
					invoke	std_eprintf			;AN022; print out the error
 0050  E8 0000 E             1		CALL    std_eprintf 
 0053  C6 06 0002 E 0D			mov	byte ptr combuf+2,end_of_line_in;AN022; terminate the batch line for parsing
 0058  C6 06 0003 E 00			mov	byte ptr combuf+3,end_of_line_out ;AN022; terminate the batch line for output
 005D  EB 29 90				jmp	bateof				;AN022; terminate the batch file
				
 0060				bat_read_ok:					;AN022;
 0060  8B C8				MOV	CX,AX
 0062  E3 20				JCXZ	BATEOFDS
 0064  89 0E 0000 E			MOV	BatBufEnd,CX
 0068  33 DB				XOR	BX,BX
 006A  89 1E 0000 E			MOV	BatBufPos,BX
				;
				; Buffered bytes!
				;
 006E				UnBuf:
 006E  8A 87 0000 E			MOV	AL,BatBuf[BX]			; get next byte
 0072  43				INC	BX
 0073  3B 1E 0000 E			CMP	BX,BatBufEnd			; beyond end of buffer?
 0077  72 03				JB	SetBufPos
 0079  BB FFFF				MOV	BX,-1
				
 007C				SetBufPos:
 007C  89 1E 0000 E			MOV	BatBufPos,BX
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-4
GetBatByt - retrieve a byte from the batch file             

 0080  3C 1A				CMP	AL,1AH				; ^Z for termination?
 0082  75 33				jnz	GetByteDone
				
 0084				BatEOFDS:
					ASSUME	DS:TranGroup
 0084  8E 1E 0000 E			MOV	DS,ResSeg
					ASSUME	DS:ResGroup
				
 0088				BATEOF:
					invoke	BatchOff
 0088  E8 0000 E             1		CALL    BatchOff 
 008B  E8 0351 R			CALL	BATCLOSE
 008E  B0 0D				MOV	AL,0DH				; If end-of-file, then end of line
 0090  F6 06 0000 E FF			test	byte ptr [Batch_Abort],-1
 0095  C6 06 0000 E 00			mov	byte ptr [Batch_Abort],0
 009A  74 07				jz	Cont_Get_Byt
 009C  BF 0002 E			mov	di,offset TRANGROUP:COMBUF+2	; reset pointer to beginning of buffer
 009F  33 C9				xor	cx,cx				; zero line length
 00A1  EB 14				jmp	short GetByteDone
				
 00A3				Cont_Get_Byt:
 00A3  83 3E 0000 E F0			CMP	[SINGLECOM],0FFF0H		; See if we need to set SINGLECOM
 00A8  75 0D				JNZ	GetByteDone
 00AA  83 3E 0000 E 00			CMP	NEST,0				;G See if we have nested batch files
 00AF  75 06				JNZ	GETBYTEDONE			;G Yes - don't exit just yet
 00B1  C7 06 0000 E FFFF		MOV	[SINGLECOM],-1			; Cause termination
				
 00B7				GetByteDone:
					RestoreReg  <DS,CX,BX>
 00B7  1F                    2		POP     DS 
 00B8  59                    2		POP     CX 
 00B9  5B                    2		POP     BX 
				
					return
 00BA                        1	??0000: 
 00BA  C3                    1		RET 
				
				EndProc GetBatByt
 00BB                        1	GetBatByt    ENDP 
				
					break	<$If - conditional execution>
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-5
$If - conditional execution                                 

				assume	ds:trangroup,es:trangroup
				
 00BB				IFERRORP:
 00BB  58				POP	AX
 00BC				IFERROR:
 00BC				FORERROR:
 00BC  BA 0000 E			MOV	DX,OFFSET TRANGROUP:SYNTMES_ptr
 00BF  E9 0000 E			JMP	CERROR
				
 00C2				$IF:
				;
				; Turn off any pipes in progress.
				;
 00C2  1E				push	ds				;AN004; save local DS
 00C3  8E 1E 0000 E			mov	ds,[resseg]			;AN004; get resident segment
					assume	ds:resgroup			;AN004;
 00C7  80 3E 0000 E 00			cmp	[PIPEFILES],0			;AN004; Only turn off if present.
 00CC  74 03				jz	IFNoPipe			;AN004; no pipe - continue
					invoke	PipeDel 			;AN004; turn off piping
 00CE  E8 0000 E             1		CALL    PipeDel 
				
 00D1				IFNoPipe:					;AN004;
 00D1  1F				pop	ds				;AN004; get local DS back
					assume	ds:trangroup			;AN004;
 00D2  C6 06 0000 E 00			MOV	[IFNOTFLAG],0
 00D7  C7 06 0000 E 0000		mov	[if_not_count], 0
 00DD  BE 0081				MOV	SI,81H
				
 00E0				IFREENT:
					invoke	SCANOFF
 00E0  E8 0000 E             1		CALL    SCANOFF 
 00E3  3C 0D				CMP	AL,0DH
 00E5  74 D5				JZ	IFERROR
 00E7  8B EE				MOV	BP,SI
 00E9  BF 0000 E			MOV	DI,OFFSET TRANGROUP:IFTAB	; Prepare to search if table
 00EC  B5 00				MOV	CH,0
				
 00EE				IFINDCOM:
 00EE  8B F5				MOV	SI,BP
 00F0  8A 0D				MOV	CL,[DI]
 00F2  47				INC	DI
 00F3  E3 37				JCXZ	IFSTRING
 00F5  EB 02				JMP	SHORT FIRSTCOMP
				
 00F7				IFCOMP:
 00F7  75 10				JNZ	IF_DIF				;AC000;
				
 00F9				FIRSTCOMP:
 00F9  AC				LODSB
 00FA  26: 8A 25			MOV	AH,ES:[DI]
 00FD  47				INC	DI
 00FE  3A C4				CMP	AL,AH
 0100  74 05				JZ	IFLP
 0102  80 CC 20				OR	AH,20H				; Try lower case
 0105  3A C4				CMP	AL,AH
				
 0107				IFLP:
 0107  E2 EE				LOOP	IFCOMP
				
 0109				IF_DIF: 					;AC000;
 0109  9F				LAHF
 010A  03 F9				ADD	DI,CX				; Bump to next position without affecting flags
 010C  8B 1D				MOV	BX,[DI] 			; Get handler address
 010E  47				INC	DI
 010F  47				INC	DI
 0110  9E				SAHF
 0111  75 DB				JNZ	IFINDCOM
 0113  AC				LODSB
 0114  3C 0D				CMP	AL,0DH
				
 0116				IFERRORJ:
 0116  74 A4				JZ	IFERROR
					invoke	DELIM
 0118  E8 0000 E             1		CALL    DELIM 
 011B  75 D1				JNZ	IFINDCOM
					invoke	SCANOFF
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-6
$If - conditional execution                                 

 011D  E8 0000 E             1		CALL    SCANOFF 
 0120  FF E3				JMP	BX
				
 0122				IFNOT:
 0122  F6 16 0000 E			NOT	[IFNOTFLAG]
 0126  FF 06 0000 E			inc	[if_not_count]
 012A  EB B4				JMP	IFREENT
				
				;
				; We are comparing two strings for equality.  First, find the end of the
				; first string.
				;
				
 012C				IFSTRING:
 012C  56				PUSH	SI				; save away pointer for later compare
 012D  33 C9				XOR	CX,CX				; count of chars in first string
				
 012F				FIRST_STRING:
 012F  AC				LODSB					; get character
 0130  3C 0D				CMP	AL,0DH				; end of line?
 0132  74 87				JZ	IFERRORP			; yes => error
					invoke	DELIM				; is it a delimiter?
 0134  E8 0000 E             1		CALL    DELIM 
 0137  74 03				JZ	EQUAL_CHECK			; yes, go find equal sign
 0139  41				INC	CX				; remember 1 byte for the length
 013A  EB F3				JMP	FIRST_STRING			; go back for more
				;
				; We have found the end of the first string.  Unfortunately, we CANNOT use
				; scanoff to find the next token; = is a valid separator and will be skipped
				; over.
				;
				
 013C				EQUAL_CHECK:
 013C  3C 3D				CMP	AL,'='                          ; is char we have an = sign?
 013E  74 07				JZ	EQUAL_CHECK2			; yes, go find second one.
 0140  3C 0D				CMP	AL,0DH				; end of line?
 0142  74 28				JZ	IFERRORPj			;AC004; yes, syntax error
 0144  AC				LODSB					; get next char
 0145  EB F5				JMP	EQUAL_CHECK
				;
				; The first = has been found.  The next char had better be an = too.
				;
				
 0147				EQUAL_CHECK2:
 0147  AC				LODSB					; get potential = char
 0148  3C 3D				CMP	AL,'='                          ; is it good?
 014A  75 20				jnz	iferrorpj			; no, error
				;
				; Find beginning of second string.
				;
					invoke	SCANOFF
 014C  E8 0000 E             1		CALL    SCANOFF 
 014F  3C 0D				CMP	AL,0DH
 0151  74 19				jz	iferrorpj
 0153  5F				POP	DI
				;
				; DS:SI points to second string
				; CX has number of chars in first string
				; ES:DI points to first string
				;
				; Perform compare to elicit match
				;
 0154  F3/ A6				REPE	CMPSB
 0156  74 17				JZ	MATCH				; match found!
				;
				; No match.  Let's find out what was wrong.  The character that did not match
				; has been advanced over.  Let's back up to it.
				;
 0158  4E				DEC	SI
				;
				; If it is EOL, then syntax error
				;
 0159  80 3C 0D				CMP	BYTE PTR [SI],0DH
 015C  74 B8				JZ	IFERRORJ
				;
				; Advance pointer over remainder of unmatched text to next delimiter
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-7
$If - conditional execution                                 

				;
				
 015E				SKIPSTRINGEND:
 015E  AC				LODSB
				
 015F				NOTMATCH:
 015F  3C 0D				CMP	AL,0DH
				
 0161				IFERRORJ2:
 0161  74 B3				JZ	IFERRORJ
					invoke	DELIM
 0163  E8 0000 E             1		CALL    DELIM 
 0166  75 F6				JNZ	SKIPSTRINGEND
				;
				; Signal that we did NOT have a match
				;
 0168  B0 FF				MOV	AL,-1
 016A  EB 3B				JMP	SHORT IFRET
				
 016C				iferrorpj:
 016C  E9 00BB R			jmp	iferrorp
				;
				; The compare succeeded.  Was the second string longer than the first?	We
				; do this by seeing if the next char is a delimiter.
				;
				
 016F				MATCH:
 016F  AC				LODSB
					invoke	DELIM
 0170  E8 0000 E             1		CALL    DELIM 
 0173  75 EA				JNZ	NOTMATCH			; not same.
 0175  32 C0				XOR	AL,AL
 0177  EB 2E				JMP	SHORT IFRET
				
 0179				IFEXISTS:
 = 0006				ifexist_attr	    EQU     attr_hidden+attr_system
				
 0179				moredelim:
 0179  AC				lodsb					; move command line pointer over
					invoke	delim				; pathname -- have to do it ourselves
 017A  E8 0000 E             1		CALL    delim 
 017D  75 FA				jnz	moredelim			; 'cause parse_file_descriptor is dumb
 017F  BA 0000 E			mov	DX, OFFSET TRANGROUP:dirbuf
					trap	set_dma
 0182  B8 1A00               1		mov	AX, (set_dma SHL 8) 
 0185  CD 21                 1		int	int_command 
 0187  BB 0002				mov	BX, 2				; if(0) [|not](|1) exist[1|2] file(2|3)
 018A  03 1E 0000 E			add	BX, [if_not_count]
 018E  B8 0000 E			mov	AX, OFFSET TRANGROUP:arg.argv
					invoke	argv_calc			; convert arg index to pointer
 0191  E8 0000 E             1		CALL    argv_calc 
 0194  8B 17				mov	DX, [BX].argpointer		; get pointer to supposed filename
 0196  B9 0006				mov	CX, ifexist_attr		; filetypes to search for
					trap	Find_First			; request first match, if any
 0199  B8 4E00               1		mov	AX, (Find_First SHL 8) 
 019C  CD 21                 1		int	int_command 
 019E  72 05				jc	if_ex_c 			; carry is how to determine error
 01A0  32 C0				xor	AL, AL
 01A2  EB 03 90				jmp	ifret
				
 01A5				if_ex_c:
 01A5  B0 FF				mov	AL, -1				; false 'n' fall through...
				
 01A7				IFRET:
 01A7  F6 06 0000 E FF			TEST	[IFNOTFLAG],-1
 01AC  74 02				JZ	REALTEST
 01AE  F6 D0				NOT	AL
				
 01B0				REALTEST:
 01B0  0A C0				OR	AL,AL
 01B2  74 03				JZ	IFTRUE
 01B4  E9 0000 E			JMP	TCOMMAND
				
 01B7				IFTRUE:
					invoke	SCANOFF
 01B7  E8 0000 E             1		CALL    SCANOFF 
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-8
$If - conditional execution                                 

 01BA  8B CE				MOV	CX,SI
 01BC  81 E9 0081			SUB	CX,81H
 01C0  28 0E 0080			SUB	DS:[80H],CL
 01C4  8A 0E 0080			MOV	CL,DS:[80H]
 01C8  88 0E 0001 E			MOV	[COMBUF+1],CL
 01CC  BF 0002 E			MOV	DI,OFFSET TRANGROUP:COMBUF+2
 01CF  FC				CLD
 01D0  F3/ A4				REP	MOVSB
 01D2  B0 0D				MOV	AL,0DH
 01D4  AA				STOSB
				;
				; Signal that an IF was done.  This prevents the redirections from getting
				; lost.
				;
 01D5  1E				PUSH	DS
 01D6  8E 1E 0000 E			MOV	DS,ResSeg
					ASSUME	DS:RESGROUP
 01DA  C6 06 0000 E FF			MOV	IFFlag,-1
 01DF  1F				POP	DS
					ASSUME	DS:TRANGROUP
				;
				; Go do the command
				;
 01E0  E9 0000 E			JMP	DOCOM1
				
 01E3				iferrorj3:
 01E3  E9 0161 R			jmp	iferrorj2
				
 01E6				IFERLEV:
 01E6  B7 0A				MOV	BH,10
 01E8  32 DB				XOR	BL,BL
				
 01EA				GETNUMLP:
 01EA  AC				LODSB
 01EB  3C 0D				CMP	AL,0DH
 01ED  74 F4				jz	iferrorj3
					invoke	DELIM
 01EF  E8 0000 E             1		CALL    DELIM 
 01F2  74 0C				JZ	GOTNUM
 01F4  2C 30				SUB	AL,'0'
 01F6  86 C3				XCHG	AL,BL
 01F8  F6 E7				MUL	BH
 01FA  02 C3				ADD	AL,BL
 01FC  86 C3				XCHG	AL,BL
 01FE  EB EA				JMP	SHORT GETNUMLP
				
 0200				GOTNUM:
 0200  1E				PUSH	DS
 0201  8E 1E 0000 E			MOV	DS,[RESSEG]
				ASSUME	DS:RESGROUP
 0205  8A 26 0000 E			MOV	AH,BYTE PTR [RETCODE]
 0209  1F				POP	DS
				ASSUME	DS:TRANGROUP
 020A  32 C0				XOR	AL,AL
 020C  3A E3				CMP	AH,BL
 020E  73 97				JAE	IFRET
 0210  FE C8				DEC	AL
 0212  EB 93				JMP	SHORT IFRET
				
				
					break	<Shift - advance arguments>
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-9
Shift - advance arguments                                   

				assume	ds:trangroup,es:trangroup
				
				;
				; Shift the parameters in the batch structure by 1 and set up the new argument.
				; This is a NOP if no batch in progress.
				;
				
				Procedure   Shift,NEAR
 0214                        1	Shift    PROC    NEAR 
				
 0214  8E 1E 0000 E			MOV	DS,[RESSEG]
				ASSUME	DS:RESGROUP
 0218  A1 0000 E			MOV	AX,[BATCH]			; get batch pointer
 021B  0B C0				OR	AX,AX				; in batch mode?
					retz					; no, done.
 021D  75 01                 2	    jnz   ??0001                           ; 
 021F                        3	??0002: 
 021F  C3                    3		RET 
 0220                        2	    ??0001:                                  ; 
 0220  8E C0				MOV	ES,AX				; operate in batch segment
 0222  8E D8				MOV	DS,AX
				
				ASSUME	DS:NOTHING,ES:NOTHING
				
				;
				; Now move the batch args down by 1 word
				;
 0224  BF 000B				MOV	DI,BatParm			; point to parm table
 0227  8D 75 02				LEA	SI,[DI+2]			; make source = dest + 2
 022A  B9 0009				MOV	CX,9				; move 9 parameters
 022D  F3/ A5				REP	MOVSW				; SHIFT down
				;
				; If the last parameter (the one not moved) is empty (= -1) then we are done.
				; We have copied it into the previous position
				;
 022F  83 3D FF				CMP	WORD PTR [DI],-1		; if last one was not in use then
					retz					; No new parm
 0232  74 EB                 2		    ??0003:  jz    ret_l           ; 
				;
				; This last pointer is NOT nul.  Get it and scan to find the next argument.
				; Assume, first, that there is no next argument
				;
 0234  8B 35				MOV	SI,[DI]
 0236  C7 05 FFFF			MOV	WORD PTR [DI],-1		; Assume no parm
				;
				; The parameters are CR separated.  Scan for end of this parm
				;
 023A				SKIPCRLP:
 023A  AC				LODSB
 023B  3C 0D				CMP	AL,0DH
 023D  75 FB				JNZ	SKIPCRLP
				;
				; We are now pointing at next arg.  If it is 0 (end of original line) then we
				; are finished.  There ARE no more parms and the pointer has been previously
				; initialized to indicate it.
				;
 023F  80 3C 00				CMP	BYTE PTR [SI],0
					retz					; End of parms
 0242  74 DB                 2		    ??0004:  jz    ret_l           ; 
 0244  89 35				MOV	[DI],SI 			; Pointer to next parm as %9
				
					return
 0246                        1	??0005: 
 0246  C3                    1		RET 
				
				EndProc Shift
 0247                        1	Shift    ENDP 
				
				;
				; Skip delim reads bytes from the batch file until a non-delimiter is seen.
				; returns char in AL, carry set -> eof
				;
				
				Procedure   SkipDelim,NEAR
 0247                        1	SkipDelim    PROC    NEAR 
				
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-10
Shift - advance arguments                                   

					ASSUME	DS:ResGroup,ES:NOTHING
 0247  F7 06 0000 E FFFF		TEST	Batch,-1
 024D  74 0A				JZ	SkipErr 			; batch file empty.  OOPS!
 024F  E8 0000 R			CALL	GetBatByt			; get a char
					invoke	Delim				; check for ignoreable chars
 0252  E8 0000 E             1		CALL    Delim 
 0255  74 F0				JZ	SkipDelim			; ignore this char.
 0257  F8				clc
					return
 0258                        1	??0006: 
 0258  C3                    1		RET 
				
 0259				SkipErr:
 0259  F9				stc
					return
 025A                        1	??0007: 
 025A  C3                    1		RET 
				
				EndProc SkipDelim
 025B                        1	SkipDelim    ENDP 
				
					break  $Call
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-11
$Call                                                       

				
				;  CALL is an internal command that transfers control to a .bat, .exe, or
				;  .com file.  This routine strips the CALL off the command line,  sets
				;  the CALL_FLAG to indicate a call in progress, and returns control to
				;  DOCOM1 in TCODE to reprocess the command line and execute the file
				;  being CALLed.
				
 025B				$CALL:
				
				;  strip off CALL from command line
				
					ASSUME DS:trangroup,ES:trangroup
 025B  56				push	si
 025C  57				push	di
 025D  50				push	ax
 025E  51				push	cx
 025F  BE 0002 E			mov	si,offset trangroup:combuf+2
					invoke	scanoff 			;get to first non-delimeter
 0262  E8 0000 E             1		CALL    scanoff 
 0265  83 C6 04				add	si,length_call			;point to char past CALL
 0268  BF 0002 E			mov	di,offset trangroup:combuf+2
 026B  B9 007C				mov	cx,combuflen-length_call	;get length of buffer
 026E  F3/ A4				rep	movsb				;move it
 0270  59				pop	cx
 0271  58				pop	ax
 0272  5F				pop	di
 0273  5E				pop	si
				
				
				;  set call flag to indicate call in progress
				
 0274  1E				push	ds
 0275  8E 1E 0000 E			mov	ds,[resseg]
					ASSUME DS:resgroup,ES:resgroup
 0279  C6 06 0000 E 01			mov	call_flag, call_in_progress
 027E  C6 06 0000 E 01			mov	call_batch_flag, call_in_progress
				;
				; Turn off any pipes in progress.
				;
 0283  80 3E 0000 E 00			cmp	[PIPEFILES],0			; Only turn off if present.
 0288  74 03				jz	NoPipe
					invoke	PipeDel
 028A  E8 0000 E             1		CALL    PipeDel 
 028D				NoPipe:
 028D  1F				pop	ds
				
 028E  C3				ret
				
					break	Goto
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-12
Goto                                                        

				
 028F				GOTO:
				
				assume	ds:trangroup,es:trangroup
 028F  8E 1E 0000 E			MOV	DS,[RESSEG]
				ASSUME	DS:RESGROUP
 0293  F7 06 0000 E FFFF		TEST	[BATCH],-1
					retz					; If not in batch mode, a nop
 0299  74 BF                 2		    ??0008:  jz    ret_l           ; 
 029B  33 D2				XOR	DX,DX
 029D  1E				PUSH	DS
 029E  8E 1E 0000 E			MOV	DS,Batch
 02A2  89 16 0007			MOV	WORD PTR DS:[BatSeek],DX	; Back to start
 02A6  89 16 0009			MOV	WORD PTR DS:[BatSeek+2],DX	; Back to start
 02AA  1F				POP	DS
				
 02AB				GotoOpen:
					invoke	promptBat
 02AB  E8 0000 E             1		CALL    promptBat 
 02AE  BF 005D				MOV	DI,FCB+1			; Get the label
 02B1  B9 000B				MOV	CX,11
 02B4  B0 20				MOV	AL,' '
 02B6  F2/ AE				REPNE	SCASB
 02B8  75 01				JNZ	NOINC
 02BA  41				INC	CX
				
 02BB				NOINC:
 02BB  83 E9 0B				SUB	CX,11
 02BE  F7 D9				NEG	CX
 02C0  26: 89 0E 0000 E			MOV	[GOTOLEN],CX
				;
				; At beginning of file.  Skip to first non-delimiter char
				;
 02C5  E8 0247 R			CALL	SkipDelim
 02C8  72 1C				JC	BadGoto
 02CA  3C 3A				CMP	AL,':'
 02CC  74 23				JZ	CHKLABEL
				
 02CE				LABLKLP:					; Look for the label
 02CE  E8 0000 R			CALL	GETBATBYT
 02D1  3C 0A				CMP	AL,0AH
 02D3  75 09				JNZ	LABLKTST
				;
				; At beginning of line.  Skip to first non-delimiter char
				;
 02D5  E8 0247 R			CALL	SkipDelim
 02D8  72 0C				JC	BadGoto
 02DA  3C 3A				CMP	AL,':'
 02DC  74 13				JZ	CHKLABEL
				
 02DE				LABLKTST:
 02DE  F7 06 0000 E FFFF		TEST	[BATCH],-1
 02E4  75 E8				JNZ	LABLKLP
				
 02E6				BadGoto:
 02E6  E8 0351 R			CALL	BATCLOSE
 02E9  0E				PUSH	CS
 02EA  1F				POP	DS
 02EB  BA 0000 E			MOV	DX,OFFSET TRANGROUP:BADLAB_ptr
 02EE  E9 0000 E			JMP	CERROR
				
				;
				; Found the :.	Skip to first non-delimiter char
				;
				
 02F1				CHKLABEL:
 02F1  E8 0247 R			CALL	SkipDelim
 02F4  72 F0				JC	BadGoto
 02F6  BF 005D				MOV	DI,FCB+1
 02F9  26: 8B 0E 0000 E			MOV	CX,[GOTOLEN]
 02FE  EB 05				JMP	SHORT GotByte
				
 0300				NEXTCHRLP:
 0300  51				PUSH	CX
 0301  E8 0000 R			CALL	GETBATBYT
 0304  59				POP	CX
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-13
Goto                                                        

				
 0305				GotByte:
					INVOKE	TESTKANJ			;AN000;  3/3/KK
 0305  E8 0000 E             1		CALL    TESTKANJ 
 0308  74 13				JZ	NOTKANJ1			;AN000;  3/3/KK
 030A  26: 3A 05			CMP	AL, ES:[DI]			;AN000;  3/3/KK
 030D  75 CF				JNZ	LABLKTST			;AN000;  3/3/KK
 030F  47				INC	DI				;AN000;  3/3/KK
 0310  49				DEC	CX				;AN000;  3/3/KK
 0311  E3 CB				JCXZ	LABLKTST			;AN000;  3/3/KK
 0313  51				PUSH	CX				;AN000;  3/3/KK
 0314  E8 0000 R			CALL	GETBATBYT			;AN000;  3/3/KK
 0317  59				POP	CX				;AN000;  3/3/KK
 0318  26: 3A 05			CMP	AL, ES:[DI]			;AN000;  3/3/KK
 031B  EB 0E				JMP	SHORT KNEXTLABCHR		;AN000;  3/3/KK
				
 031D				NOTKANJ1:					;AN000;  3/3/KK
 031D  0C 20				OR	AL,20H
 031F  26: 3A 05			CMP	AL,ES:[DI]
 0322  75 02				JNZ	TRYUPPER
 0324  EB 07				JMP	SHORT NEXTLABCHR
				
 0326				TRYUPPER:
 0326  2C 20				SUB	AL,20H
 0328  26: 3A 05			CMP	AL,ES:[DI]
				
 032B				KNEXTLABCHR:					;AN000;  3/3/KK
 032B  75 B1				JNZ	LABLKTST
				
 032D				NEXTLABCHR:
 032D  47				INC	DI
 032E  E2 D0				LOOP	NEXTCHRLP
 0330  E8 0000 R			CALL	GETBATBYT
 0333  26: 83 3E 0000 E 08		cmp	[GOTOLEN],8			; Is the label atleast 8 chars long?
 0339  7D 04				jge	gotocont			; Yes, then the next char doesn't matter
 033B  3C 20				CMP	AL,' '
 033D  77 9F				JA	LABLKTST
				
 033F				gotocont:
 033F  3C 0D				CMP	AL,0DH
 0341  74 07				JZ	SKIPLFEED
				
 0343				TONEXTBATLIN:
 0343  E8 0000 R			CALL	GETBATBYT
 0346  3C 0D				CMP	AL,0DH
 0348  75 F9				JNZ	TONEXTBATLIN
				
 034A				SKIPLFEED:
 034A  E8 0000 R			CALL	GETBATBYT
 034D  E8 0351 R			CALL	BatClose
				
					return
 0350                        1	??0009: 
 0350  C3                    1		RET 
				
				Procedure   BatClose,NEAR
 0351                        1	BatClose    PROC    NEAR 
				
 0351  2E: 8B 1E 0000 E			MOV	BX,CS:[BATHAND]
 0356  83 FB 05				CMP	BX,5
 0359  72 04				JB	CloseReturn
 035B  B4 3E				MOV	AH,CLOSE
 035D  CD 21				INT	int_command
				
 035F				CloseReturn:
 035F  C6 06 0000 E 00			mov	byte ptr [In_Batch],0		; reset flag
					return
 0364                        1	??000A: 
 0364  C3                    1		RET 
				
				EndProc BatClose
 0365                        1	BatClose    ENDP 
				
				;
				; Open the BATCH file, If open fails, AL is drive of batch file (A=1)
				; Also, fills internal batch buffer.  If access denied, then AX = -1
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Page     1-14
Goto                                                        

				;
				
				Procedure   BatOpen,NEAR
 0365                        1	BatOpen    PROC    NEAR 
				
				ASSUME	DS:RESGROUP,ES:TRANGROUP
				
 0365  1E				PUSH	DS
 0366  8E 1E 0000 E			MOV	DS,[BATCH]
				ASSUME	DS:NOTHING
				
 036A  BA 001F				MOV	DX,BatFile
 036D  B8 3D00				MOV	AX,OPEN SHL 8
 0370  CD 21				INT	int_command			; Open the batch file
 0372  72 1C				JC	SETERRDL
 0374  8B 16 0007			MOV	DX,WORD PTR DS:[BatSeek]
 0378  8B 0E 0009			MOV	CX,WORD PTR DS:[BatSeek+2]
 037C  1F				POP	DS
				ASSUME	DS:RESGROUP
				
 037D  26: A3 0000 E			MOV	[BATHAND],AX
 0381  8B D8				MOV	BX,AX
 0383  B8 4200				MOV	AX,LSEEK SHL 8			; Go to the right spot
 0386  CD 21				INT	int_command
 0388  26: C7 06 0000 E FFFF		MOV	BatBufPos,-1			; nuke batch buffer position
				
					return
 038F                        1	??000B: 
 038F  C3                    1		RET 
				
 0390				SETERRDL:
 0390  8B DA				MOV	BX,DX
					invoke	get_ext_error_number		;AN022; get the extended error
 0392  E8 0000 E             1		CALL    get_ext_error_number 
 0395  8B D0				mov	dx,ax				;AN022; save extended error in DX
 0397  8A 07				MOV	AL,[BX] 			; Get drive spec
 0399  2C 40				SUB	AL,'@'                          ; A = 1
 039B  1F				POP	DS
 039C  F9				STC					; SUB mucked over carry
				
					return
 039D                        1	??000C: 
 039D  C3                    1		RET 
				
				EndProc BatOpen
 039E                        1	BatOpen    ENDP 
				
				
 039E				TRANCODE    ENDS
					    END

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-1


Macros:

		N a m e			Lines

ARGVAR . . . . . . . . . . . . .  	  23
ASMVAR . . . . . . . . . . . . .  	   3
ASMVARS  . . . . . . . . . . . .  	   3
ASSERT . . . . . . . . . . . . .  	   0
CALLINSTALL  . . . . . . . . . .  	  12
DOSASSUME  . . . . . . . . . . .  	   3
ENTER  . . . . . . . . . . . . .  	   3
ENTERCRIT  . . . . . . . . . . .  	   1
ERRNZ  . . . . . . . . . . . . .  	   4
FMT  . . . . . . . . . . . . . .  	   0
LEAVE  . . . . . . . . . . . . .  	   2
LEAVECRIT  . . . . . . . . . . .  	   1
LOCALVAR . . . . . . . . . . . .  	  23
TRAP . . . . . . . . . . . . . .  	   6

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

ARENA  . . . . . . . . . . . . .  	0010	0005
  ARENA_SIGNATURE  . . . . . . .  	0000
  ARENA_OWNER  . . . . . . . . .  	0001
  ARENA_SIZE . . . . . . . . . .  	0003
  ARENA_RESERVED . . . . . . . .  	0005
  ARENA_NAME . . . . . . . . . .  	0008
ARGV_ELE . . . . . . . . . . . .  	000B	0006
  ARGPOINTER . . . . . . . . . .  	0000
  ARGFLAGS . . . . . . . . . . .  	0002
  ARGSTARTEL . . . . . . . . . .  	0003
  ARGLEN . . . . . . . . . . . .  	0005
  ARGSW_WORD . . . . . . . . . .  	0007
  ARG_OCOMPTR  . . . . . . . . .  	0009
ARG_UNIT . . . . . . . . . . . .  	0544	0005
  ARGV . . . . . . . . . . . . .  	0000
  ARGVCNT  . . . . . . . . . . .  	02C0
  ARGSWINFO  . . . . . . . . . .  	02C2
  ARGBUF . . . . . . . . . . . .  	02C4
  ARGFORCOMBUF . . . . . . . . .  	04C4
A_BPB  . . . . . . . . . . . . .  	001F	000F
  BPB_BYTESPERSECTOR . . . . . .  	0000
  BPB_SECTORSPERCLUSTER  . . . .  	0002
  BPB_RESERVEDSECTORS  . . . . .  	0003
  BPB_NUMBEROFFATS . . . . . . .  	0005
  BPB_ROOTENTRIES  . . . . . . .  	0006
  BPB_TOTALSECTORS . . . . . . .  	0008
  BPB_MEDIADESCRIPTOR  . . . . .  	000A
  BPB_SECTORSPERFAT  . . . . . .  	000B
  BPB_SECTORSPERTRACK  . . . . .  	000D
  BPB_HEADS  . . . . . . . . . .  	000F
  BPB_HIDDENSECTORS  . . . . . .  	0011
  BPB_BIGTOTALSECTORS  . . . . .  	0015
BATCHSEGMENT . . . . . . . . . .  	0020	0008
  BATTYPE  . . . . . . . . . . .  	0000
  BATECHOFLAG  . . . . . . . . .  	0001
  BATLAST  . . . . . . . . . . .  	0002
  BATFORPTR  . . . . . . . . . .  	0004
  BATFORFLAG . . . . . . . . . .  	0006
  BATSEEK  . . . . . . . . . . .  	0007
  BATPARM  . . . . . . . . . . .  	000B
  BATFILE  . . . . . . . . . . .  	001F
BPBLOCK  . . . . . . . . . . . .  	000D	0008
  BPSECSZ  . . . . . . . . . . .  	0000
  BPCLUS . . . . . . . . . . . .  	0002
  BPRES  . . . . . . . . . . . .  	0003
  BPFTCNT  . . . . . . . . . . .  	0005
  BPDRCNT  . . . . . . . . . . .  	0006
  BPSCCNT  . . . . . . . . . . .  	0008
  BPMEDIA  . . . . . . . . . . .  	000A
  BPFTSEC  . . . . . . . . . . .  	000B
BUFFER_HASH_ENTRY  . . . . . . .  	0008	0004
  EMS_PAGE_NUM . . . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-2


  BUFFER_BUCKET  . . . . . . . .  	0002
  DIRTY_COUNT  . . . . . . . . .  	0006
  BUFFER_RESERVED  . . . . . . .  	0007
BUFFINFO . . . . . . . . . . . .  	0023	000F
  HASH_PTR . . . . . . . . . . .  	0000
  HASH_COUNT . . . . . . . . . .  	0004
  CACHE_PTR  . . . . . . . . . .  	0006
  CACHE_COUNT  . . . . . . . . .  	000A
  EMS_SAFE_FLAG  . . . . . . . .  	000C
  EMS_LAST_PAGE  . . . . . . . .  	000D
  EMS_FIRST_PAGE . . . . . . . .  	0011
  EMS_NPA640 . . . . . . . . . .  	0015
  EMS_MODE . . . . . . . . . . .  	0017
  EMS_HANDLE . . . . . . . . . .  	0018
  EMS_PAGEFRAME_NUMBER . . . . .  	001A
  EMS_SEG_CNT  . . . . . . . . .  	001C
  EMS_PAGE_FRAME . . . . . . . .  	001E
  EMS_RESERVED . . . . . . . . .  	0020
  EMS_MAP_BUFF . . . . . . . . .  	0022
CURDIR_LIST  . . . . . . . . . .  	0058	000A
  CURDIR_TEXT  . . . . . . . . .  	0000
  CURDIR_FLAGS . . . . . . . . .  	0043
  CURDIR_DEVPTR  . . . . . . . .  	0045
  CURDIR_ID  . . . . . . . . . .  	0049
  CURDIR_USER_WORD . . . . . . .  	004D
  CURDIR_END . . . . . . . . . .  	004F
  CURDIR_TYPE  . . . . . . . . .  	0051
  CURDIR_IFS_HDR . . . . . . . .  	0052
  CURDIR_FSDA  . . . . . . . . .  	0056
DIR_ENTRY  . . . . . . . . . . .  	0020	000B
  DIR_NAME . . . . . . . . . . .  	0000
  DIR_ATTR . . . . . . . . . . .  	000B
  DIR_CODEPG . . . . . . . . . .  	000C
  DIR_EXTCLUSTER . . . . . . . .  	000E
  DIR_ATTR2  . . . . . . . . . .  	0010
  DIR_PAD  . . . . . . . . . . .  	0011
  DIR_TIME . . . . . . . . . . .  	0016
  DIR_DATE . . . . . . . . . . .  	0018
  DIR_FIRST  . . . . . . . . . .  	001A
  DIR_SIZE_L . . . . . . . . . .  	001C
  DIR_SIZE_H . . . . . . . . . .  	001E
DPB  . . . . . . . . . . . . . .  	0021	0012
  DPB_DRIVE  . . . . . . . . . .  	0000
  DPB_UNIT . . . . . . . . . . .  	0001
  DPB_SECTOR_SIZE  . . . . . . .  	0002
  DPB_CLUSTER_MASK . . . . . . .  	0004
  DPB_CLUSTER_SHIFT  . . . . . .  	0005
  DPB_FIRST_FAT  . . . . . . . .  	0006
  DPB_FAT_COUNT  . . . . . . . .  	0008
  DPB_ROOT_ENTRIES . . . . . . .  	0009
  DPB_FIRST_SECTOR . . . . . . .  	000B
  DPB_MAX_CLUSTER  . . . . . . .  	000D
  DPB_FAT_SIZE . . . . . . . . .  	000F
  DPB_DIR_SECTOR . . . . . . . .  	0011
  DPB_DRIVER_ADDR  . . . . . . .  	0013
  DPB_MEDIA  . . . . . . . . . .  	0017
  DPB_FIRST_ACCESS . . . . . . .  	0018
  DPB_NEXT_DPB . . . . . . . . .  	0019
  DPB_NEXT_FREE  . . . . . . . .  	001D
  DPB_FREE_CNT . . . . . . . . .  	001F
EXEC0  . . . . . . . . . . . . .  	000E	0004
  EXEC0_ENVIRON  . . . . . . . .  	0000
  EXEC0_COM_LINE . . . . . . . .  	0002
  EXEC0_5C_FCB . . . . . . . . .  	0006
  EXEC0_6C_FCB . . . . . . . . .  	000A
EXEC1  . . . . . . . . . . . . .  	0016	0008
  EXEC1_ENVIRON  . . . . . . . .  	0000
  EXEC1_COM_LINE . . . . . . . .  	0002
  EXEC1_5C_FCB . . . . . . . . .  	0006
  EXEC1_6C_FCB . . . . . . . . .  	000A
  EXEC1_SP . . . . . . . . . . .  	000E
  EXEC1_SS . . . . . . . . . . .  	0010
  EXEC1_IP . . . . . . . . . . .  	0012
  EXEC1_CS . . . . . . . . . . .  	0014
EXEC3  . . . . . . . . . . . . .  	0004	0002
  EXEC3_LOAD_ADDR  . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-3


  EXEC3_RELOC_FAC  . . . . . . .  	0002
EXE_FILE . . . . . . . . . . . .  	0020	000F
  EXE_SIGNATURE  . . . . . . . .  	0000
  EXE_LEN_MOD_512  . . . . . . .  	0002
  EXE_PAGES  . . . . . . . . . .  	0004
  EXE_RLE_COUNT  . . . . . . . .  	0006
  EXE_PAR_DIR  . . . . . . . . .  	0008
  EXE_MIN_BSS  . . . . . . . . .  	000A
  EXE_MAX_BSS  . . . . . . . . .  	000C
  EXE_SS . . . . . . . . . . . .  	000E
  EXE_SP . . . . . . . . . . . .  	0010
  EXE_CHKSUM . . . . . . . . . .  	0012
  EXE_IP . . . . . . . . . . . .  	0014
  EXE_CS . . . . . . . . . . . .  	0016
  EXE_RLE_TABLE  . . . . . . . .  	0018
  EXE_IOV  . . . . . . . . . . .  	001A
  EXE_SYM_TAB  . . . . . . . . .  	001C
EXT_OPEN_PARM  . . . . . . . . .  	0006	0002
  EXT_SET_LIST . . . . . . . . .  	0000
  EXT_NUM_OF_PARM  . . . . . . .  	0004
FIND_BUF . . . . . . . . . . . .  	002B	000C
  FIND_BUF_DRIVE . . . . . . . .  	0000
  FIND_BUF_NAME  . . . . . . . .  	0001
  FIND_BUF_SATTR . . . . . . . .  	000C
  FIND_BUF_LASTENT . . . . . . .  	000D
  FIND_BUF_DIRSTART  . . . . . .  	000F
  FIND_BUF_NETID . . . . . . . .  	0011
  FIND_BUF_ATTR  . . . . . . . .  	0015
  FIND_BUF_TIME  . . . . . . . .  	0016
  FIND_BUF_DATE  . . . . . . . .  	0018
  FIND_BUF_SIZE_L  . . . . . . .  	001A
  FIND_BUF_SIZE_H  . . . . . . .  	001C
  FIND_BUF_PNAME . . . . . . . .  	001E
INTERNAT_BLOCK . . . . . . . . .  	0018	0015
  DATE_TIM_FORMAT  . . . . . . .  	0000
  CURRENCY_SYM . . . . . . . . .  	0002
  THOUS_SEP  . . . . . . . . . .  	0007
  DECIMAL_SEP  . . . . . . . . .  	0009
  DATE_SEP . . . . . . . . . . .  	000B
  TIME_SEP . . . . . . . . . . .  	000D
  BIT_FIELD  . . . . . . . . . .  	000F
  CURRENCY_CENTS . . . . . . . .  	0010
  TIME_24  . . . . . . . . . . .  	0011
  MAP_CALL . . . . . . . . . . .  	0012
  DATA_SEP . . . . . . . . . . .  	0016
PARSEFLAGS . . . . . . . . . . .  	0008	0005
  SPECIAL_DELIM  . . . . . . . .  	0007	0001	0080	0000
  UNUSED . . . . . . . . . . . .  	0003	0004	0078	0000
  PATH_SEP . . . . . . . . . . .  	0002	0001	0004	0000
  WILDCARD . . . . . . . . . . .  	0001	0001	0002	0000
  SW_FLAG  . . . . . . . . . . .  	0000	0001	0001	0000
PROCESS_DATA_BLOCK . . . . . . .  	005C	0011
  PDB_EXIT_CALL  . . . . . . . .  	0000
  PDB_BLOCK_LEN  . . . . . . . .  	0002
  PDB_CPM_CALL . . . . . . . . .  	0005
  PDB_EXIT . . . . . . . . . . .  	000A
  PDB_CTRL_C . . . . . . . . . .  	000E
  PDB_FATAL_ABORT  . . . . . . .  	0012
  PDB_PARENT_PID . . . . . . . .  	0016
  PDB_JFN_TABLE  . . . . . . . .  	0018
  PDB_ENVIRON  . . . . . . . . .  	002C
  PDB_USER_STACK . . . . . . . .  	002E
  PDB_JFN_LENGTH . . . . . . . .  	0032
  PDB_JFN_POINTER  . . . . . . .  	0034
  PDB_NEXT_PDB . . . . . . . . .  	0038
  PDB_PAD1 . . . . . . . . . . .  	003C
  PDB_CALL_SYSTEM  . . . . . . .  	0050
  PDB_PAD2 . . . . . . . . . . .  	0055
SF . . . . . . . . . . . . . . .  	0008	0003
  SFLINK . . . . . . . . . . . .  	0000
  SFCOUNT  . . . . . . . . . . .  	0004
  SFTABLE  . . . . . . . . . . .  	0006
SF_ENTRY . . . . . . . . . . . .  	003B	0014
  SF_REF_COUNT . . . . . . . . .  	0000
  SF_MODE  . . . . . . . . . . .  	0002
  SF_ATTR  . . . . . . . . . . .  	0004
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-4


  SF_FLAGS . . . . . . . . . . .  	0005
  SF_DEVPTR  . . . . . . . . . .  	0007
  SF_FIRCLUS . . . . . . . . . .  	000B
  SF_TIME  . . . . . . . . . . .  	000D
  SF_DATE  . . . . . . . . . . .  	000F
  SF_SIZE  . . . . . . . . . . .  	0011
  SF_POSITION  . . . . . . . . .  	0015
  SF_CLUSPOS . . . . . . . . . .  	0019
  SF_DIRSEC  . . . . . . . . . .  	001B
  SF_DIRPOS  . . . . . . . . . .  	001F
  SF_NAME  . . . . . . . . . . .  	0020
  SF_CHAIN . . . . . . . . . . .  	002B
  SF_UID . . . . . . . . . . . .  	002F
  SF_PID . . . . . . . . . . . .  	0031
  SF_MFT . . . . . . . . . . . .  	0033
  SF_LSTCLUS . . . . . . . . . .  	0035
  SF_IFS_HDR . . . . . . . . . .  	0037
SYMBOL_ENTRY . . . . . . . . . .  	0106	0004
  SYM_VALUE  . . . . . . . . . .  	0000
  SYM_TYPE . . . . . . . . . . .  	0004
  SYM_LEN  . . . . . . . . . . .  	0006
  SYM_NAME . . . . . . . . . . .  	0007
SYSINITVARS  . . . . . . . . . .  	0047	0018
  SYSI_DPB . . . . . . . . . . .  	0000
  SYSI_SFT . . . . . . . . . . .  	0004
  SYSI_CLOCK . . . . . . . . . .  	0008
  SYSI_CON . . . . . . . . . . .  	000C
  SYSI_MAXSEC  . . . . . . . . .  	0010
  SYSI_BUF . . . . . . . . . . .  	0012
  SYSI_CDS . . . . . . . . . . .  	0016
  SYSI_FCB . . . . . . . . . . .  	001A
  SYSI_KEEP  . . . . . . . . . .  	001E
  SYSI_NUMIO . . . . . . . . . .  	0020
  SYSI_NCDS  . . . . . . . . . .  	0021
  SYSI_DEV . . . . . . . . . . .  	0022
  SYSI_ATTR  . . . . . . . . . .  	0026
  SYSI_STRAT . . . . . . . . . .  	0028
  SYSI_INTER . . . . . . . . . .  	002A
  SYSI_NAME  . . . . . . . . . .  	002C
  SYSI_SPLICE  . . . . . . . . .  	0034
  SYSI_IBMDOS_SIZE . . . . . . .  	0035
  SYSI_IFS_DOSCALL@  . . . . . .  	0037
  SYSI_IFS . . . . . . . . . . .  	003B
  SYSI_BUFFERS . . . . . . . . .  	003F
  SYSI_BOOT_DRIVE  . . . . . . .  	0043
  SYSI_DWMOVE  . . . . . . . . .  	0044
  SYSI_EXT_MEM . . . . . . . . .  	0045
SYSINITVARS_EXT  . . . . . . . .  	0008	0002
  SYSI_INITVARS  . . . . . . . .  	0000
  SYSI_COUNTRY_TAB . . . . . . .  	0004
SYS_FCB  . . . . . . . . . . . .  	0025	000C
  FCB_DRIVE  . . . . . . . . . .  	0000
  FCB_NAME . . . . . . . . . . .  	0001
  FCB_EXT  . . . . . . . . . . .  	0009
  FCB_EXTENT . . . . . . . . . .  	000C
  FCB_RECSIZ . . . . . . . . . .  	000E
  FCB_FILSIZ . . . . . . . . . .  	0010
  FCB_DRVBP  . . . . . . . . . .  	0012
  FCB_FDATE  . . . . . . . . . .  	0014
  FCB_FTIME  . . . . . . . . . .  	0016
  FCB_RESERVED . . . . . . . . .  	0018
  FCB_NR . . . . . . . . . . . .  	0020
  FCB_RR . . . . . . . . . . . .  	0021
USER_ENVIRON . . . . . . . . . .  	0018	000C
  USER_AX  . . . . . . . . . . .  	0000
  USER_BX  . . . . . . . . . . .  	0002
  USER_CX  . . . . . . . . . . .  	0004
  USER_DX  . . . . . . . . . . .  	0006
  USER_SI  . . . . . . . . . . .  	0008
  USER_DI  . . . . . . . . . . .  	000A
  USER_BP  . . . . . . . . . . .  	000C
  USER_DS  . . . . . . . . . . .  	000E
  USER_ES  . . . . . . . . . . .  	0010
  USER_IP  . . . . . . . . . . .  	0012
  USER_CS  . . . . . . . . . . .  	0014
  USER_F . . . . . . . . . . . .  	0016
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-5


VARSTRUC . . . . . . . . . . . .  	005C	0005
  ISDIR  . . . . . . . . . . . .  	0000
  SIZ  . . . . . . . . . . . . .  	0001
  TTAIL  . . . . . . . . . . . .  	0002
  INFO . . . . . . . . . . . . .  	0004
  BUF  . . . . . . . . . . . . .  	0005

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

RESGROUP . . . . . . . . . . . .  	GROUP
  CODERES  . . . . . . . . . . .  	0000	BYTE	PUBLIC	
  DATARES  . . . . . . . . . . .  	0000	BYTE	PUBLIC	
  BATARENA . . . . . . . . . . .  	0000	PARA	PUBLIC	
  BATSEG . . . . . . . . . . . .  	0000	PARA	PUBLIC	
  ENVARENA . . . . . . . . . . .  	0000	PARA	PUBLIC	
  ENVIRONMENT  . . . . . . . . .  	0000	PARA	PUBLIC	
  INIT . . . . . . . . . . . . .  	0000	PARA	PUBLIC	
  TAIL . . . . . . . . . . . . .  	0000	PARA	PUBLIC	
TRANGROUP  . . . . . . . . . . .  	GROUP
  TRANCODE . . . . . . . . . . .  	039E	BYTE	PUBLIC	
  TRANDATA . . . . . . . . . . .  	0000	BYTE	PUBLIC	
  TRANSPACE  . . . . . . . . . .  	0000	BYTE	PUBLIC	
  TRANTAIL . . . . . . . . . . .  	0000	PARA	PUBLIC	

Symbols:            

                N a m e         	Type	 Value	 Attr

ABORT  . . . . . . . . . . . . .  	NUMBER	0000	
ACCESS_MASK  . . . . . . . . . .  	NUMBER	000F	
ACTION_CREATED_OPENED  . . . . .  	NUMBER	0002	
ACTION_OPENED  . . . . . . . . .  	NUMBER	0001	
ACTION_REPLACED_OPENED . . . . .  	NUMBER	0003	
ADDR_INT_ABORT . . . . . . . . .  	NUMBER	0080	
ADDR_INT_COMMAND . . . . . . . .  	NUMBER	0084	
ADDR_INT_CTRL_C  . . . . . . . .  	NUMBER	008C	
ADDR_INT_DISK_READ . . . . . . .  	NUMBER	0094	
ADDR_INT_DISK_WRITE  . . . . . .  	NUMBER	0098	
ADDR_INT_FASTCON . . . . . . . .  	NUMBER	00A4	
ADDR_INT_FATAL_ABORT . . . . . .  	NUMBER	0090	
ADDR_INT_IBM . . . . . . . . . .  	NUMBER	00A8	
ADDR_INT_KEEP_PROCESS  . . . . .  	NUMBER	009C	
ADDR_INT_SPOOLER . . . . . . . .  	NUMBER	00A0	
ADDR_INT_TERMINATE . . . . . . .  	NUMBER	0088	
ALLOC  . . . . . . . . . . . . .  	NUMBER	0048	
ALLOCOPER  . . . . . . . . . . .  	NUMBER	0058	
ALLOWED_FAIL . . . . . . . . . .  	NUMBER	0008	
ALLOWED_IGNORE . . . . . . . . .  	NUMBER	0020	
ALLOWED_RETRY  . . . . . . . . .  	NUMBER	0010	
ALTPIPECHR . . . . . . . . . . .  	NUMBER	007C	
ALTVECT  . . . . . . . . . . . .  	ALIAS	 FALSE		
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
ANULL  . . . . . . . . . . . . .  	NUMBER	0000	
APPENDDOS  . . . . . . . . . . .  	NUMBER	B702	
APPENDGETSTATE . . . . . . . . .  	NUMBER	B706	
APPENDINSTALL  . . . . . . . . .  	NUMBER	B700	
APPENDSETSTATE . . . . . . . . .  	NUMBER	B707	
APPENDTRUENAME . . . . . . . . .  	NUMBER	B711	
ARENA_OWNER_SYSTEM . . . . . . .  	NUMBER	0000	
ARENA_SIGNATURE_END  . . . . . .  	NUMBER	005A	
ARENA_SIGNATURE_NORMAL . . . . .  	NUMBER	004D	
arg  . . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
ARGBLEN  . . . . . . . . . . . .  	NUMBER	0100	
ARGMAX . . . . . . . . . . . . .  	NUMBER	0040	
argv_calc  . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
ARG_BUF_OVFLOW . . . . . . . . .  	NUMBER	0002	
ARG_CNT_ERROR  . . . . . . . . .  	NUMBER	0001	
ASSIGNOPER . . . . . . . . . . .  	NUMBER	005F	
ATTR_ALL . . . . . . . . . . . .  	NUMBER	0016	
ATTR_ARCHIVE . . . . . . . . . .  	NUMBER	0020	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-6


ATTR_CHANGEABLE  . . . . . . . .  	NUMBER	0027	
ATTR_DEVICE  . . . . . . . . . .  	NUMBER	0040	
ATTR_DIRECTORY . . . . . . . . .  	NUMBER	0010	
ATTR_HIDDEN  . . . . . . . . . .  	NUMBER	0002	
ATTR_IGNORE  . . . . . . . . . .  	NUMBER	0061	
ATTR_READ_ONLY . . . . . . . . .  	NUMBER	0001	
ATTR_SYSTEM  . . . . . . . . . .  	NUMBER	0004	
ATTR_VOLUME_ID . . . . . . . . .  	NUMBER	0008	
AUTO_COMMIT_WRITE  . . . . . . .  	NUMBER	4000	

BADGOTO  . . . . . . . . . . . .  	L NEAR	02E6	TRANCODE
BADLAB_PTR . . . . . . . . . . .  	V WORD	0000	TRANDATA	External
BADPARM_PTR  . . . . . . . . . .  	NUMBER	000A	
BADSWT_PTR . . . . . . . . . . .  	NUMBER	0003	
BatBuf . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
BatBufEnd  . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
BatBufLen  . . . . . . . . . . .  	V WORD	0000	TRANDATA	External
BatBufPos  . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
BATCH  . . . . . . . . . . . . .  	V WORD	0000	DATARES	External
BatchOff . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
BATCHTYPE  . . . . . . . . . . .  	NUMBER	0000	
Batch_Abort  . . . . . . . . . .  	V BYTE	0000	DATARES	External
BatClose . . . . . . . . . . . .  	N PROC	0351	TRANCODE	Global	Length = 0014
BATEOF . . . . . . . . . . . . .  	L NEAR	0088	TRANCODE
BATEOFDS . . . . . . . . . . . .  	L NEAR	0084	TRANCODE
BATHAND  . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
BATLEN . . . . . . . . . . . . .  	NUMBER	0020	
BatOpen  . . . . . . . . . . . .  	N PROC	0365	TRANCODE	Global	Length = 0039
BAT_NOT_OPEN . . . . . . . . . .  	NUMBER	-0001	
BAT_OPEN_HANDLE  . . . . . . . .  	NUMBER	0013	
BAT_READ_OK  . . . . . . . . . .  	L NEAR	0060	TRANCODE
BLANK  . . . . . . . . . . . . .  	NUMBER	0020	
BUFFERFLAG . . . . . . . . . . .  	NUMBER	FFFF	
BUFINSIZ . . . . . . . . . . . .  	NUMBER	0014	
BUF_DIRTY  . . . . . . . . . . .  	NUMBER	0040	
BUF_DPB  . . . . . . . . . . . .  		000D	
BUF_FILL . . . . . . . . . . . .  		0011	
BUF_FLAGS  . . . . . . . . . . .  		0005	
BUF_FREE . . . . . . . . . . . .  	NUMBER	00FF	
BUF_ID . . . . . . . . . . . . .  		0004	
BUF_ISDATA . . . . . . . . . . .  	NUMBER	0008	
BUF_ISDIR  . . . . . . . . . . .  	NUMBER	0004	
BUF_ISFAT  . . . . . . . . . . .  	NUMBER	0002	
BUF_ISNET  . . . . . . . . . . .  	NUMBER	0080	
BUF_NETID  . . . . . . . . . . .  	ALIAS	 BUFINSIZ		
BUF_NEXT . . . . . . . . . . . .  		0000	
BUF_OFFSET . . . . . . . . . . .  	DWORD	0006	
BUF_PREV . . . . . . . . . . . .  		0002	
BUF_RESERVED . . . . . . . . . .  		0013	
BUF_SECTOR . . . . . . . . . . .  		0006	
BUF_SNBUF  . . . . . . . . . . .  	NUMBER	0010	
BUF_TYPE_0 . . . . . . . . . . .  	NUMBER	00F1	
BUF_VISIT  . . . . . . . . . . .  	NUMBER	0020	
BUF_WRTCNT . . . . . . . . . . .  		000A	
BUF_WRTCNTINC  . . . . . . . . .  		000B	

call_batch_flag  . . . . . . . .  	V BYTE	0000	DATARES	External
call_flag  . . . . . . . . . . .  	V BYTE	0000	DATARES	External
CALL_IN_PROGRESS . . . . . . . .  	NUMBER	0001	
CAPITAL_A  . . . . . . . . . . .  	NUMBER	0041	
CAPITAL_N  . . . . . . . . . . .  	NUMBER	0000	
CAPITAL_Y  . . . . . . . . . . .  	NUMBER	0001	
CARGS  . . . . . . . . . . . . .  	NUMBER	0000	
cerror . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
CHAR_OPER  . . . . . . . . . . .  	NUMBER	0037	
CHDIR  . . . . . . . . . . . . .  	NUMBER	003B	
CHKLABEL . . . . . . . . . . . .  	L NEAR	02F1	TRANCODE
CHMOD  . . . . . . . . . . . . .  	NUMBER	0043	
CLOSE  . . . . . . . . . . . . .  	NUMBER	003E	
CLOSERETURN  . . . . . . . . . .  	L NEAR	035F	TRANCODE
COLON_CHAR . . . . . . . . . . .  	NUMBER	003A	
COMBUF . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
COMBUFLEN  . . . . . . . . . . .  	NUMBER	0080	
COMMIT . . . . . . . . . . . . .  	NUMBER	0068	
CONT_GET_BYT . . . . . . . . . .  	L NEAR	00A3	TRANCODE
CPSW_OFF . . . . . . . . . . . .  	NUMBER	0000	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-7


CREAT  . . . . . . . . . . . . .  	NUMBER	003C	
CREATENEWFILE  . . . . . . . . .  	NUMBER	005B	
CREATETEMPFILE . . . . . . . . .  	NUMBER	005A	
CREATE_PROCESS_DATA_BLOCK  . . .  	NUMBER	0026	
CREAT_OPEN_FLAG  . . . . . . . .  	NUMBER	0112	
CRITASSIGN . . . . . . . . . . .  	NUMBER	0008	
CRITDEVICE . . . . . . . . . . .  	NUMBER	0002	
CRITDISK . . . . . . . . . . . .  	NUMBER	0001	
CRITIFS  . . . . . . . . . . . .  	NUMBER	0006	
CRITMEM  . . . . . . . . . . . .  	NUMBER	0001	
CRITNET  . . . . . . . . . . . .  	NUMBER	0005	
CRITSFT  . . . . . . . . . . . .  	NUMBER	0001	
CRITSHARE  . . . . . . . . . . .  	NUMBER	0001	
CRIT_MSG_CLASS . . . . . . . . .  	NUMBER	0003	
CRT_IOCTL_LN . . . . . . . . . .  	NUMBER	000E	
CURDIRLEN  . . . . . . . . . . .  	NUMBER	0058	
CURDIR_INUSE . . . . . . . . . .  	NUMBER	4000	
CURDIR_ISIFS . . . . . . . . . .  	NUMBER	8000	
CURDIR_ISNET . . . . . . . . . .  	NUMBER	8000	
CURDIR_LOCAL . . . . . . . . . .  	NUMBER	1000	
CURDIR_NETID . . . . . . . . . .  	DWORD	0049	
CURDIR_SPLICE  . . . . . . . . .  	NUMBER	2000	
CURRENT_DIR  . . . . . . . . . .  	NUMBER	0047	
C_BS . . . . . . . . . . . . . .  	NUMBER	0008	
C_CR . . . . . . . . . . . . . .  	NUMBER	000D	
C_DEL  . . . . . . . . . . . . .  	NUMBER	007F	
C_ETB  . . . . . . . . . . . . .  	NUMBER	0017	
C_ETX  . . . . . . . . . . . . .  	NUMBER	0003	
C_HT . . . . . . . . . . . . . .  	NUMBER	0009	
C_LF . . . . . . . . . . . . . .  	NUMBER	000A	
C_NAK  . . . . . . . . . . . . .  	NUMBER	0015	

DBCS . . . . . . . . . . . . . .  	NUMBER	0000	
DEALLOC  . . . . . . . . . . . .  	NUMBER	0049	
DEBUG  . . . . . . . . . . . . .  	NUMBER	0000	
DELIM  . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
DEVID_BLOCK_DEV  . . . . . . . .  	NUMBER	001F	
DEVID_DEVICE . . . . . . . . . .  	NUMBER	0080	
DEVID_DEVICE_CLOCK . . . . . . .  	NUMBER	0008	
DEVID_DEVICE_CON_IN  . . . . . .  	NUMBER	0001	
DEVID_DEVICE_CON_OUT . . . . . .  	NUMBER	0002	
DEVID_DEVICE_EOF . . . . . . . .  	NUMBER	0040	
DEVID_DEVICE_NULL  . . . . . . .  	NUMBER	0004	
DEVID_DEVICE_RAW . . . . . . . .  	NUMBER	0020	
DEVID_DEVICE_SPECIAL . . . . . .  	NUMBER	0010	
DEVID_EOF  . . . . . . . . . . .  	NUMBER	0040	
DEVID_FILE_CLEAN . . . . . . . .  	NUMBER	0040	
DEVID_FILE_MASK_DRIVE  . . . . .  	NUMBER	003F	
DEVID_ISCIN  . . . . . . . . . .  	NUMBER	0001	
DEVID_ISCLK  . . . . . . . . . .  	NUMBER	0008	
DEVID_ISCOT  . . . . . . . . . .  	NUMBER	0002	
DEVID_ISDEV  . . . . . . . . . .  	NUMBER	0080	
DEVID_ISNUL  . . . . . . . . . .  	NUMBER	0004	
DEVID_RAW  . . . . . . . . . . .  	NUMBER	0020	
DEVID_SPECIAL  . . . . . . . . .  	NUMBER	0010	
DIRBUF . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DIRSTRLEN  . . . . . . . . . . .  	NUMBER	0043	
DIR_SEARCH_FIRST . . . . . . . .  	NUMBER	0011	
DIR_SEARCH_NEXT  . . . . . . . .  	NUMBER	0012	
DISK_RESET . . . . . . . . . . .  	NUMBER	000D	
docom1 . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
DOLLAR . . . . . . . . . . . . .  	NUMBER	0024	
DOT_CHR  . . . . . . . . . . . .  	NUMBER	002E	
DOT_COLON  . . . . . . . . . . .  	NUMBER	2E3A	
DOT_QMARK  . . . . . . . . . . .  	NUMBER	2E3F	
DO_WORD  . . . . . . . . . . . .  	NUMBER	4F44	
DO_XA  . . . . . . . . . . . . .  	NUMBER	-0001	
DPBSIZ . . . . . . . . . . . . .  	NUMBER	0021	
DSKSIZ . . . . . . . . . . . . .  	NUMBER	000D	
DUP_PDB  . . . . . . . . . . . .  	NUMBER	0055	

ECS_CALL . . . . . . . . . . . .  	NUMBER	0063	
EMGDEBUG . . . . . . . . . . . .  	NUMBER	0000	
EMS_MAP_BUFF_SIZE  . . . . . . .  	NUMBER	000C	
END_OF_LINE  . . . . . . . . . .  	NUMBER	-0001	
END_OF_LINE_IN . . . . . . . . .  	NUMBER	000D	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-8


END_OF_LINE_OUT  . . . . . . . .  	NUMBER	0000	
ENTRYPOINT . . . . . . . . . . .  	NUMBER	00C0	
EQUAL_CHECK  . . . . . . . . . .  	L NEAR	013C	TRANCODE
EQUAL_CHECK2 . . . . . . . . . .  	L NEAR	0147	TRANCODE
EQUAL_CHR  . . . . . . . . . . .  	NUMBER	003D	
ERRACT_ABORT . . . . . . . . . .  	NUMBER	0004	
ERRACT_DLYRET  . . . . . . . . .  	NUMBER	0002	
ERRACT_IGNORE  . . . . . . . . .  	NUMBER	0006	
ERRACT_INTRET  . . . . . . . . .  	NUMBER	0007	
ERRACT_PANIC . . . . . . . . . .  	NUMBER	0005	
ERRACT_RETRY . . . . . . . . . .  	NUMBER	0001	
ERRACT_USER  . . . . . . . . . .  	NUMBER	0003	
ERRCLASS_ALREADY . . . . . . . .  	NUMBER	000C	
ERRCLASS_APPERR  . . . . . . . .  	NUMBER	0007	
ERRCLASS_AUTH  . . . . . . . . .  	NUMBER	0003	
ERRCLASS_BADFMT  . . . . . . . .  	NUMBER	0009	
ERRCLASS_HRDFAIL . . . . . . . .  	NUMBER	0005	
ERRCLASS_INTRN . . . . . . . . .  	NUMBER	0004	
ERRCLASS_LOCKED  . . . . . . . .  	NUMBER	000A	
ERRCLASS_MEDIA . . . . . . . . .  	NUMBER	000B	
ERRCLASS_NOTFND  . . . . . . . .  	NUMBER	0008	
ERRCLASS_OUTRES  . . . . . . . .  	NUMBER	0001	
ERRCLASS_SYSFAIL . . . . . . . .  	NUMBER	0006	
ERRCLASS_TEMPSIT . . . . . . . .  	NUMBER	0002	
ERRCLASS_UNK . . . . . . . . . .  	NUMBER	000D	
ERRLOC_DISK  . . . . . . . . . .  	NUMBER	0002	
ERRLOC_MEM . . . . . . . . . . .  	NUMBER	0005	
ERRLOC_NET . . . . . . . . . . .  	NUMBER	0003	
ERRLOC_SERDEV  . . . . . . . . .  	NUMBER	0004	
ERRLOC_UNK . . . . . . . . . . .  	NUMBER	0001	
ERROR_ACCESS_DENIED  . . . . . .  	NUMBER	0005	
ERROR_ALREADY_ASSIGNED . . . . .  	NUMBER	0055	
ERROR_ARENA_TRASHED  . . . . . .  	NUMBER	0007	
ERROR_BAD_COMMAND  . . . . . . .  	NUMBER	0016	
ERROR_BAD_ENVIRONMENT  . . . . .  	NUMBER	000A	
ERROR_BAD_FORMAT . . . . . . . .  	NUMBER	000B	
ERROR_BAD_LENGTH . . . . . . . .  	NUMBER	0018	
ERROR_BAD_UNIT . . . . . . . . .  	NUMBER	0014	
ERROR_CANNOT_MAKE  . . . . . . .  	NUMBER	0052	
ERROR_CODE_PAGE_MISMATCHED . . .  	NUMBER	0025	
ERROR_CRC  . . . . . . . . . . .  	NUMBER	0017	
ERROR_CURRENT_DIRECTORY  . . . .  	NUMBER	0010	
ERROR_DUP_FCB  . . . . . . . . .  	NUMBER	0051	
ERROR_FAIL_I24 . . . . . . . . .  	NUMBER	0053	
ERROR_FCB_UNAVAILABLE  . . . . .  	NUMBER	0023	
ERROR_FILE_EXISTS  . . . . . . .  	NUMBER	0050	
ERROR_FILE_NOT_FOUND . . . . . .  	NUMBER	0002	
ERROR_GEN_FAILURE  . . . . . . .  	NUMBER	001F	
ERROR_HANDLE_DISK_FULL . . . . .  	NUMBER	0027	
ERROR_HANDLE_EOF . . . . . . . .  	NUMBER	0026	
ERROR_I24_BAD_COMMAND  . . . . .  	NUMBER	0003	
ERROR_I24_BAD_LENGTH . . . . . .  	NUMBER	0005	
ERROR_I24_BAD_UNIT . . . . . . .  	NUMBER	0001	
ERROR_I24_CRC  . . . . . . . . .  	NUMBER	0004	
ERROR_I24_GEN_FAILURE  . . . . .  	NUMBER	000C	
ERROR_I24_NOT_DOS_DISK . . . . .  	NUMBER	0007	
ERROR_I24_NOT_READY  . . . . . .  	NUMBER	0002	
ERROR_I24_OUT_OF_PAPER . . . . .  	NUMBER	0009	
ERROR_I24_READ_FAULT . . . . . .  	NUMBER	000B	
ERROR_I24_SECTOR_NOT_FOUND . . .  	NUMBER	0008	
ERROR_I24_SEEK . . . . . . . . .  	NUMBER	0006	
ERROR_I24_WRITE_FAULT  . . . . .  	NUMBER	000A	
ERROR_I24_WRITE_PROTECT  . . . .  	NUMBER	0000	
ERROR_I24_WRONG_DISK . . . . . .  	NUMBER	000F	
ERROR_INVALID_ACCESS . . . . . .  	NUMBER	000C	
ERROR_INVALID_BLOCK  . . . . . .  	NUMBER	0009	
ERROR_INVALID_DATA . . . . . . .  	NUMBER	000D	
ERROR_INVALID_DRIVE  . . . . . .  	NUMBER	000F	
ERROR_INVALID_FUNCTION . . . . .  	NUMBER	0001	
ERROR_INVALID_HANDLE . . . . . .  	NUMBER	0006	
ERROR_INVALID_PARAMETER  . . . .  	NUMBER	0057	
ERROR_INVALID_PASSWORD . . . . .  	NUMBER	0056	
ERROR_LOCK_VIOLATION . . . . . .  	NUMBER	0021	
ERROR_NET_WRITE_FAULT  . . . . .  	NUMBER	0058	
ERROR_NOT_DOS_DISK . . . . . . .  	NUMBER	001A	
ERROR_NOT_ENOUGH_MEMORY  . . . .  	NUMBER	0008	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-9


ERROR_NOT_READY  . . . . . . . .  	NUMBER	0015	
ERROR_NOT_SAME_DEVICE  . . . . .  	NUMBER	0011	
ERROR_NOT_SUPPORTED  . . . . . .  	NUMBER	0032	
ERROR_NO_MORE_FILES  . . . . . .  	NUMBER	0012	
ERROR_OUT_OF_PAPER . . . . . . .  	NUMBER	001C	
ERROR_OUT_OF_STRUCTURES  . . . .  	NUMBER	0054	
ERROR_PATH_NOT_FOUND . . . . . .  	NUMBER	0003	
ERROR_READ_FAULT . . . . . . . .  	NUMBER	001E	
ERROR_SECTOR_NOT_FOUND . . . . .  	NUMBER	001B	
ERROR_SEEK . . . . . . . . . . .  	NUMBER	0019	
ERROR_SHARING_BUFFER_EXCEEDED  .  	NUMBER	0024	
ERROR_SHARING_VIOLATION  . . . .  	NUMBER	0020	
ERROR_SYS_COMP_NOT_LOADED  . . .  	NUMBER	005A	
ERROR_TOO_MANY_OPEN_FILES  . . .  	NUMBER	0004	
ERROR_WRITE_FAULT  . . . . . . .  	NUMBER	001D	
ERROR_WRITE_PROTECT  . . . . . .  	NUMBER	0013	
ERROR_WRONG_DISK . . . . . . . .  	NUMBER	0022	
EXEC . . . . . . . . . . . . . .  	NUMBER	004B	
EXEC_FUNC_NO_EXECUTE . . . . . .  	NUMBER	0001	
EXEC_FUNC_OVERLAY  . . . . . . .  	NUMBER	0002	
EXE_VALID_OLD_SIGNATURE  . . . .  	NUMBER	4D5A	
EXE_VALID_SIGNATURE  . . . . . .  	NUMBER	5A4D	
EXISTS_MASK  . . . . . . . . . .  	NUMBER	000F	
EXIT . . . . . . . . . . . . . .  	NUMBER	004C	
EXIT_ABORT . . . . . . . . . . .  	NUMBER	0000	
EXIT_CTRL_C  . . . . . . . . . .  	NUMBER	0001	
EXIT_HARD_ERROR  . . . . . . . .  	NUMBER	0002	
EXIT_KEEP_PROCESS  . . . . . . .  	NUMBER	0003	
EXIT_TERMINATE . . . . . . . . .  	NUMBER	0000	
EXPECTED_VERSION . . . . . . . .  	NUMBER	0004	
EXTHANDLE  . . . . . . . . . . .  	NUMBER	0067	
EXTOPEN  . . . . . . . . . . . .  	NUMBER	006C	
EXT_CRLF_CLASS . . . . . . . . .  	NUMBER	0081	
EXT_EXISTS_FAIL  . . . . . . . .  	NUMBER	0000	
EXT_EXISTS_OPEN  . . . . . . . .  	NUMBER	0001	
EXT_FILE_NOT_EXISTS  . . . . . .  	NUMBER	0004	
EXT_MSG_CLASS  . . . . . . . . .  	NUMBER	0001	
EXT_NEXISTS_CREATE . . . . . . .  	NUMBER	0010	
EXT_OPEN_I24_OFF . . . . . . . .  	NUMBER	0002	
EXT_OPEN_ON  . . . . . . . . . .  	NUMBER	0001	

FAIL_ALLOWED . . . . . . . . . .  	NUMBER	0008	
FALSE  . . . . . . . . . . . . .  	NUMBER	0000	
FBADSWITCH . . . . . . . . . . .  	NUMBER	4000	
FCB  . . . . . . . . . . . . . .  	NUMBER	005C	
FCBDEVICE  . . . . . . . . . . .  	NUMBER	0040	
FCBMASK  . . . . . . . . . . . .  	NUMBER	00C0	
FCBNETWORK . . . . . . . . . . .  	NUMBER	0080	
FCBSHARE . . . . . . . . . . . .  	NUMBER	00C0	
FCBSPECIAL . . . . . . . . . . .  	NUMBER	0080	
FCB_CLOSE  . . . . . . . . . . .  	NUMBER	0010	
FCB_CREATE . . . . . . . . . . .  	NUMBER	0016	
FCB_DELETE . . . . . . . . . . .  	NUMBER	0013	
FCB_L_ATTR . . . . . . . . . . .  	BYTE	001E	
FCB_L_DRIVE  . . . . . . . . . .  	BYTE	0019	
FCB_L_FIRCLUS  . . . . . . . . .  	WORD	001A	
FCB_L_MFS  . . . . . . . . . . .  	WORD	001C	
FCB_NETID  . . . . . . . . . . .  	DWORD	001C	
FCB_NET_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NET_HANDLE . . . . . . . . .  	WORD	001A	
FCB_NSLD_DRIVE . . . . . . . . .  	BYTE	0019	
FCB_NSLD_DRVPTR  . . . . . . . .  	DWORD	001A	
FCB_NSL_BITS . . . . . . . . . .  	BYTE	001A	
FCB_NSL_DIRPOS . . . . . . . . .  	BYTE	001F	
FCB_NSL_DIRSEC . . . . . . . . .  	WORD	001D	
FCB_NSL_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NSL_FIRCLUS  . . . . . . . .  	WORD	001B	
FCB_OPEN . . . . . . . . . . . .  	NUMBER	000F	
FCB_RANDOM_READ  . . . . . . . .  	NUMBER	0021	
FCB_RANDOM_READ_BLOCK  . . . . .  	NUMBER	0027	
FCB_RANDOM_WRITE . . . . . . . .  	NUMBER	0022	
FCB_RANDOM_WRITE_BLOCK . . . . .  	NUMBER	0028	
FCB_RENAME . . . . . . . . . . .  	NUMBER	0017	
FCB_SEQ_READ . . . . . . . . . .  	NUMBER	0014	
FCB_SEQ_WRITE  . . . . . . . . .  	NUMBER	0015	
FCB_SFN  . . . . . . . . . . . .  	BYTE	0018	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-10


FCHECKDRIVE  . . . . . . . . . .  	NUMBER	0001	
FCHK . . . . . . . . . . . . . .  	NUMBER	0001	
FDELIM . . . . . . . . . . . . .  	NUMBER	0002	
FFCB . . . . . . . . . . . . . .  	NUMBER	0008	
FILDIRENT  . . . . . . . . . . .  	NUMBER	0010	
FILE_INV_CPAGE . . . . . . . . .  	NUMBER	-0001	
FILE_NO_CPAGE  . . . . . . . . .  	NUMBER	0000	
FILE_TIMES . . . . . . . . . . .  	NUMBER	0057	
FILPERPROC . . . . . . . . . . .  	NUMBER	0014	
FIND_FIRST . . . . . . . . . . .  	NUMBER	004E	
FIND_NEXT  . . . . . . . . . . .  	NUMBER	004F	
FIRSTCOMP  . . . . . . . . . . .  	L NEAR	00F9	TRANCODE
FIRST_STRING . . . . . . . . . .  	L NEAR	012F	TRANCODE
forerror . . . . . . . . . . . .  	L NEAR	00BC	TRANCODE	Global
FPARSE . . . . . . . . . . . . .  	NUMBER	0001	
FSPCHK . . . . . . . . . . . . .  	NUMBER	0004	
FSWITCH  . . . . . . . . . . . .  	NUMBER	8000	
FSWITCHALLOWED . . . . . . . . .  	NUMBER	0002	
F_AUX  . . . . . . . . . . . . .  	NUMBER	0010	
F_CARRY  . . . . . . . . . . . .  	NUMBER	0001	
F_DIRECTION  . . . . . . . . . .  	NUMBER	0400	
F_INTERRUPT  . . . . . . . . . .  	NUMBER	0200	
F_OVERFLOW . . . . . . . . . . .  	NUMBER	0800	
F_PARITY . . . . . . . . . . . .  	NUMBER	0004	
F_SIGN . . . . . . . . . . . . .  	NUMBER	0080	
F_TRACE  . . . . . . . . . . . .  	NUMBER	0100	
F_ZERO . . . . . . . . . . . . .  	NUMBER	0040	

GETBATBYT  . . . . . . . . . . .  	N PROC	0000	TRANCODE	Global	Length = 00BB
GETBYTEDONE  . . . . . . . . . .  	L NEAR	00B7	TRANCODE
GETCURRENTPSP  . . . . . . . . .  	NUMBER	0062	
GETEXTCNTRY  . . . . . . . . . .  	NUMBER	0065	
GETEXTENDEDERROR . . . . . . . .  	NUMBER	0059	
GETNUMLP . . . . . . . . . . . .  	L NEAR	01EA	TRANCODE
GETSETCDPG . . . . . . . . . . .  	NUMBER	0066	
GETSETMEDIAID  . . . . . . . . .  	NUMBER	0069	
GET_CPSW . . . . . . . . . . . .  	NUMBER	0003	
GET_CRITICAL_MSG . . . . . . . .  	NUMBER	0004	
GET_CURRENT_PDB  . . . . . . . .  	NUMBER	0051	
GET_DATE . . . . . . . . . . . .  	NUMBER	002A	
GET_DEFAULT_DPB  . . . . . . . .  	NUMBER	001F	
GET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	0019	
GET_DMA  . . . . . . . . . . . .  	NUMBER	002F	
GET_DPB  . . . . . . . . . . . .  	NUMBER	0032	
GET_DRIVE_FREESPACE  . . . . . .  	NUMBER	0036	
GET_EXTENDED_MSG . . . . . . . .  	NUMBER	0000	
get_ext_error_number . . . . . .  	L NEAR	0000	TRANCODE	External
GET_FCB_FILE_LENGTH  . . . . . .  	NUMBER	0023	
GET_FCB_POSITION . . . . . . . .  	NUMBER	0024	
GET_GENERIC  . . . . . . . . . .  	NUMBER	007F	
GET_INDOS_FLAG . . . . . . . . .  	NUMBER	0034	
GET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0035	
GET_IN_VARS  . . . . . . . . . .  	NUMBER	0052	
GET_PARSE_MSG  . . . . . . . . .  	NUMBER	0002	
GET_TIME . . . . . . . . . . . .  	NUMBER	002C	
GET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	0054	
GET_VERSION  . . . . . . . . . .  	NUMBER	0030	
GET_VIDEO_STATE  . . . . . . . .  	NUMBER	000F	
GET_XA . . . . . . . . . . . . .  	NUMBER	0002	
GOTBYTE  . . . . . . . . . . . .  	L NEAR	0305	TRANCODE
GOTNUM . . . . . . . . . . . . .  	L NEAR	0200	TRANCODE
goto . . . . . . . . . . . . . .  	L NEAR	028F	TRANCODE	Global
GOTOCONT . . . . . . . . . . . .  	L NEAR	033F	TRANCODE
GOTOLEN  . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
GOTOOPEN . . . . . . . . . . . .  	L NEAR	02AB	TRANCODE

HANDLE_FAIL_I24  . . . . . . . .  	NUMBER	0100	
HONGEUL  . . . . . . . . . . . .  	NUMBER	0063	

I24_AREA . . . . . . . . . . . .  	NUMBER	0006	
I24_CLASS  . . . . . . . . . . .  	NUMBER	0080	
I24_OPERATION  . . . . . . . . .  	NUMBER	0001	
IBM  . . . . . . . . . . . . . .  	ALIAS	 IBMVER		
IBMCOPYRIGHT . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPAN . . . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPVER  . . . . . . . . . . .  	ALIAS	 FALSE		
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-11


IBMVER . . . . . . . . . . . . .  	ALIAS	 TRUE		
IFCOMP . . . . . . . . . . . . .  	L NEAR	00F7	TRANCODE
iferlev  . . . . . . . . . . . .  	L NEAR	01E6	TRANCODE	Global
IFERROR  . . . . . . . . . . . .  	L NEAR	00BC	TRANCODE
IFERRORJ . . . . . . . . . . . .  	L NEAR	0116	TRANCODE
IFERRORJ2  . . . . . . . . . . .  	L NEAR	0161	TRANCODE
IFERRORJ3  . . . . . . . . . . .  	L NEAR	01E3	TRANCODE
IFERRORP . . . . . . . . . . . .  	L NEAR	00BB	TRANCODE
IFERRORPJ  . . . . . . . . . . .  	L NEAR	016C	TRANCODE
ifexists . . . . . . . . . . . .  	L NEAR	0179	TRANCODE	Global
IFEXIST_ATTR . . . . . . . . . .  	NUMBER	0006	
IFFlag . . . . . . . . . . . . .  	V BYTE	0000	DATARES	External
IFINDCOM . . . . . . . . . . . .  	L NEAR	00EE	TRANCODE
IFLP . . . . . . . . . . . . . .  	L NEAR	0107	TRANCODE
IFNOPIPE . . . . . . . . . . . .  	L NEAR	00D1	TRANCODE
ifnot  . . . . . . . . . . . . .  	L NEAR	0122	TRANCODE	Global
IFNOTFLAG  . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
IFREENT  . . . . . . . . . . . .  	L NEAR	00E0	TRANCODE
IFRET  . . . . . . . . . . . . .  	L NEAR	01A7	TRANCODE
IFSTRING . . . . . . . . . . . .  	L NEAR	012C	TRANCODE
IFS_IOCTL  . . . . . . . . . . .  	NUMBER	006B	
IFTAB  . . . . . . . . . . . . .  	V BYTE	0000	TRANDATA	External
IFTRUE . . . . . . . . . . . . .  	L NEAR	01B7	TRANCODE
IF_DIF . . . . . . . . . . . . .  	L NEAR	0109	TRANCODE
IF_EX_C  . . . . . . . . . . . .  	L NEAR	01A5	TRANCODE
if_not_count . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
IGNORE_ALLOWED . . . . . . . . .  	NUMBER	0020	
INITCTRLC  . . . . . . . . . . .  	NUMBER	0004	
INITINIT . . . . . . . . . . . .  	NUMBER	0001	
INITSPECIAL  . . . . . . . . . .  	NUMBER	0002	
INSTALLED  . . . . . . . . . . .  	NUMBER	FFFF	
INSTALLEDDATA  . . . . . . . . .  	NUMBER	0000	
INTBASE  . . . . . . . . . . . .  	NUMBER	0080	
INTERNAT . . . . . . . . . . . .  	ALIAS	 FALSE		
INTERNATIONAL  . . . . . . . . .  	NUMBER	0038	
INTERNAT_BLOCK_MAX . . . . . . .  	NUMBER	0020	
INTTAB . . . . . . . . . . . . .  	NUMBER	0020	
INT_24_ERROR . . . . . . . . . .  	NUMBER	2000	
INT_ABORT  . . . . . . . . . . .  	ALIAS	 INTTAB		
INT_COMMAND  . . . . . . . . . .  	NUMBER	0021	
INT_CTRL_C . . . . . . . . . . .  	NUMBER	0023	
INT_DISK_READ  . . . . . . . . .  	NUMBER	0025	
INT_DISK_WRITE . . . . . . . . .  	NUMBER	0026	
INT_FASTCON  . . . . . . . . . .  	NUMBER	0029	
INT_FATAL_ABORT  . . . . . . . .  	NUMBER	0024	
INT_IBM  . . . . . . . . . . . .  	NUMBER	002A	
INT_KEEP_PROCESS . . . . . . . .  	NUMBER	0027	
INT_SPOOLER  . . . . . . . . . .  	NUMBER	0028	
INT_TERMINATE  . . . . . . . . .  	NUMBER	0022	
INV_CP_TAG . . . . . . . . . . .  	NUMBER	0000	
In_Batch . . . . . . . . . . . .  	V BYTE	0000	DATARES	External
IN_WORD  . . . . . . . . . . . .  	NUMBER	4E49	
IOCTL  . . . . . . . . . . . . .  	NUMBER	0044	
IO_MODE_ID . . . . . . . . . . .  	NUMBER	0002	

JAPAN  . . . . . . . . . . . . .  	ALIAS	 FALSE		

KANJI  . . . . . . . . . . . . .  	ALIAS	 FALSE		
KEEP_PROCESS . . . . . . . . . .  	NUMBER	0031	
KNEXTLABCHR  . . . . . . . . . .  	L NEAR	032B	TRANCODE
KOREA  . . . . . . . . . . . . .  	ALIAS	 FALSE		

LABLKLP  . . . . . . . . . . . .  	L NEAR	02CE	TRANCODE
LABLKTST . . . . . . . . . . . .  	L NEAR	02DE	TRANCODE
LABRACKET  . . . . . . . . . . .  	NUMBER	003C	
LENGTH_CALL  . . . . . . . . . .  	NUMBER	0004	
LESSARGS_PTR . . . . . . . . . .  	NUMBER	0002	
LINESPERPAGE . . . . . . . . . .  	NUMBER	0019	
LOCKOPER . . . . . . . . . . . .  	NUMBER	005C	
LPAREN . . . . . . . . . . . . .  	NUMBER	0028	
LSEEK  . . . . . . . . . . . . .  	NUMBER	0042	

MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MATCH  . . . . . . . . . . . . .  	L NEAR	016F	TRANCODE
MAXBUCKETINPAGE  . . . . . . . .  	NUMBER	0002	
MAXBUFFINBUCKET  . . . . . . . .  	NUMBER	000F	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-12


MAX_NEST . . . . . . . . . . . .  	NUMBER	000A	
MEMS . . . . . . . . . . . . . .  	NUMBER	0001	
MESSAGE_2F . . . . . . . . . . .  	NUMBER	002E	
MINOR_VERSION  . . . . . . . . .  	NUMBER	0000	
MI_INT . . . . . . . . . . . . .  	NUMBER	00CD	
MI_LONG_CALL . . . . . . . . . .  	NUMBER	009A	
MI_LONG_JMP  . . . . . . . . . .  	NUMBER	00EA	
MI_LONG_RET  . . . . . . . . . .  	NUMBER	00CB	
MI_NEAR_RET  . . . . . . . . . .  	NUMBER	00C3	
MKDIR  . . . . . . . . . . . . .  	NUMBER	0039	
MOREARGS_PTR . . . . . . . . . .  	NUMBER	0001	
MOREDELIM  . . . . . . . . . . .  	L NEAR	0179	TRANCODE
MSVER  . . . . . . . . . . . . .  	NUMBER	0000	
MULTDOS  . . . . . . . . . . . .  	NUMBER	0012	
MULTIFS  . . . . . . . . . . . .  	NUMBER	0011	
MULTNET  . . . . . . . . . . . .  	NUMBER	0011	
MULTSHARE  . . . . . . . . . . .  	NUMBER	0010	
MULT_ANSI  . . . . . . . . . . .  	NUMBER	001A	
MULT_SHELL_BRK . . . . . . . . .  	NUMBER	1903	
MULT_SHELL_GET . . . . . . . . .  	NUMBER	1902	

Nest . . . . . . . . . . . . . .  	V WORD	0000	DATARES	External
NEXTCHRLP  . . . . . . . . . . .  	L NEAR	0300	TRANCODE
NEXTLABCHR . . . . . . . . . . .  	L NEAR	032D	TRANCODE
NLSFUNC  . . . . . . . . . . . .  	NUMBER	0014	
NOINC  . . . . . . . . . . . . .  	L NEAR	02BB	TRANCODE
NOPIPE . . . . . . . . . . . . .  	L NEAR	028D	TRANCODE
NORMPERLIN . . . . . . . . . . .  	NUMBER	0001	
NOTKANJ1 . . . . . . . . . . . .  	L NEAR	031D	TRANCODE
NOTMATCH . . . . . . . . . . . .  	L NEAR	015F	TRANCODE
NOT_EXISTS_MASK  . . . . . . . .  	NUMBER	00F0	
NO_CODE_PAGE_CHECK . . . . . . .  	NUMBER	0100	
NO_CONT_FLAG . . . . . . . . . .  	NUMBER	0000	
NO_ECHO  . . . . . . . . . . . .  	NUMBER	0000	
NO_ECHO_CHAR . . . . . . . . . .  	NUMBER	0040	
NO_HANDLE_OUT  . . . . . . . . .  	NUMBER	-0001	
NO_SUBST . . . . . . . . . . . .  	NUMBER	0000	
NO_XA_SEG  . . . . . . . . . . .  	NUMBER	-0001	
NULLCOMMAND  . . . . . . . . . .  	NUMBER	0001	
NULLRPAREN . . . . . . . . . . .  	NUMBER	0029	

OEM_C1 . . . . . . . . . . . . .  	NUMBER	00F9	
OEM_C2 . . . . . . . . . . . . .  	NUMBER	00FA	
OEM_C3 . . . . . . . . . . . . .  	NUMBER	00FB	
OEM_C4 . . . . . . . . . . . . .  	NUMBER	00FC	
OEM_C5 . . . . . . . . . . . . .  	NUMBER	00FD	
OEM_C6 . . . . . . . . . . . . .  	NUMBER	00FE	
OEM_C7 . . . . . . . . . . . . .  	NUMBER	00FF	
ONE_SUBST  . . . . . . . . . . .  	NUMBER	0001	
OPEN . . . . . . . . . . . . . .  	NUMBER	003D	
OPEN_FOR_BOTH  . . . . . . . . .  	NUMBER	0002	
OPEN_FOR_READ  . . . . . . . . .  	NUMBER	0000	
OPEN_FOR_WRITE . . . . . . . . .  	NUMBER	0001	
output_batch_name  . . . . . . .  	L NEAR	0000	TRANCODE	External

PARM_BLOCK_SIZE  . . . . . . . .  	NUMBER	000B	
PARM_OFF_POS . . . . . . . . . .  	WORD	0002	
PARSE_FILE_DESCRIPTOR  . . . . .  	NUMBER	0029	
PARSE_MSG_CLASS  . . . . . . . .  	NUMBER	0002	
PATHPARSE  . . . . . . . . . . .  	NUMBER	0061	
PATH_SEP . . . . . . . . . . . .  		0002	
PDB_APPEND . . . . . . . . . . .  	BYTE	003D	
PDB_INTERCON . . . . . . . . . .  	BYTE	003C	
PipeDel  . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
PIPEFILES  . . . . . . . . . . .  	V BYTE	0000	DATARES	External
PLUS_CHR . . . . . . . . . . . .  	NUMBER	002B	
promptBat  . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
PTR_OFF_POS  . . . . . . . . . .  	NUMBER	0005	
PTR_SEG_POS  . . . . . . . . . .  	NUMBER	0007	

RABRACKET  . . . . . . . . . . .  	NUMBER	003E	
RAW_CON_INPUT  . . . . . . . . .  	NUMBER	0007	
RAW_CON_IO . . . . . . . . . . .  	NUMBER	0006	
READ . . . . . . . . . . . . . .  	NUMBER	003F	
READ_OPEN_FLAG . . . . . . . . .  	NUMBER	0101	
READ_OPEN_MODE . . . . . . . . .  	NUMBER	0000	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-13


REALTEST . . . . . . . . . . . .  	L NEAR	01B0	TRANCODE
REDIRECTOR . . . . . . . . . . .  	NUMBER	0000	
RENAME . . . . . . . . . . . . .  	NUMBER	0056	
RESERVED_BITS_MASK . . . . . . .  	NUMBER	FE00	
RESSEG . . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
RESULT_DATE  . . . . . . . . . .  	NUMBER	0007	
RESULT_DRIVE . . . . . . . . . .  	NUMBER	0006	
RESULT_FILESPEC  . . . . . . . .  	NUMBER	0005	
RESULT_NO_ERROR  . . . . . . . .  	NUMBER	0000	
RESULT_NUMBER  . . . . . . . . .  	NUMBER	0001	
RESULT_STRING  . . . . . . . . .  	NUMBER	0003	
RESULT_TIME  . . . . . . . . . .  	NUMBER	0008	
RES_SUBST  . . . . . . . . . . .  	NUMBER	0002	
RETCODE  . . . . . . . . . . . .  	V WORD	0000	DATARES	External
RETRY_ALLOWED  . . . . . . . . .  	NUMBER	0010	
RET_L  . . . . . . . . . . . . .  	NEAR	039D	TRANCODE
RET_Z  . . . . . . . . . . . . .  	NEAR	0299	TRANCODE
RMDIR  . . . . . . . . . . . . .  	NUMBER	003A	
RPAREN . . . . . . . . . . . . .  	NUMBER	0029	

SCANOFF  . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
SCROLL_VIDEO_PAGE  . . . . . . .  	NUMBER	0006	
SEARCH_ATTR  . . . . . . . . . .  	NUMBER	0013	
SEMICOLON  . . . . . . . . . . .  	NUMBER	003B	
SERVERCALL . . . . . . . . . . .  	NUMBER	005D	
SETBLOCK . . . . . . . . . . . .  	NUMBER	004A	
SETBUFPOS  . . . . . . . . . . .  	L NEAR	007C	TRANCODE
SETDPB . . . . . . . . . . . . .  	NUMBER	0053	
SETERRDL . . . . . . . . . . . .  	L NEAR	0390	TRANCODE
SET_COLOR_PALETTE  . . . . . . .  	NUMBER	000B	
SET_CRITICAL_MSG . . . . . . . .  	NUMBER	0005	
SET_CRIT_DEV . . . . . . . . . .  	NUMBER	0100	
SET_CTRL_C_TRAPPING  . . . . . .  	NUMBER	0033	
SET_CURRENT_PDB  . . . . . . . .  	NUMBER	0050	
SET_CURSOR_POSITION  . . . . . .  	NUMBER	0002	
SET_DATE . . . . . . . . . . . .  	NUMBER	002B	
SET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	000E	
SET_DMA  . . . . . . . . . . . .  	NUMBER	001A	
SET_EXTENDED_MSG . . . . . . . .  	NUMBER	0001	
SET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0025	
SET_OEM_HANDLER  . . . . . . . .  	NUMBER	00F8	
SET_PARSE_MSG  . . . . . . . . .  	NUMBER	0003	
SET_PRINTER_FLAG . . . . . . . .  	NUMBER	0064	
SET_TIME . . . . . . . . . . . .  	NUMBER	002D	
SET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	002E	
SET_VIDEO_MODE . . . . . . . . .  	NUMBER	0000	
SET_XA . . . . . . . . . . . . .  	NUMBER	0004	
SF_BUSY  . . . . . . . . . . . .  	NUMBER	-0001	
SF_CLOSE_NODATE  . . . . . . . .  	NUMBER	4000	
SF_DEFAULT_NUMBER  . . . . . . .  	NUMBER	0005	
SF_FSDA  . . . . . . . . . . . .  	BYTE	0019	
SF_ISFCB . . . . . . . . . . . .  	NUMBER	8000	
SF_ISNET . . . . . . . . . . . .  	NUMBER	8000	
SF_LRU . . . . . . . . . . . . .  	WORD	0015	
SF_NETID . . . . . . . . . . . .  	BYTE	0019	
SF_NET_SPOOL . . . . . . . . . .  	NUMBER	0800	
SF_NO_INHERIT  . . . . . . . . .  	NUMBER	1000	
SF_OPENAGE . . . . . . . . . . .  	WORD	0017	
SF_PIPE  . . . . . . . . . . . .  	NUMBER	2000	
SF_SERIAL_ID . . . . . . . . . .  	WORD	000B	
SHAREF . . . . . . . . . . . . .  	NUMBER	0000	
SHARING_COMPAT . . . . . . . . .  	NUMBER	0000	
SHARING_DENY_BOTH  . . . . . . .  	NUMBER	0010	
SHARING_DENY_NONE  . . . . . . .  	NUMBER	0040	
SHARING_DENY_READ  . . . . . . .  	NUMBER	0030	
SHARING_DENY_WRITE . . . . . . .  	NUMBER	0020	
SHARING_MASK . . . . . . . . . .  	NUMBER	00F0	
SHARING_NET_FCB  . . . . . . . .  	NUMBER	0070	
SHARING_NO_INHERIT . . . . . . .  	NUMBER	0080	
SHELL_ACTION . . . . . . . . . .  	NUMBER	00FF	
shift  . . . . . . . . . . . . .  	N PROC	0214	TRANCODE	Global	Length = 0033
SINGLECOM  . . . . . . . . . . .  	V WORD	0000	DATARES	External
SKIPCRLP . . . . . . . . . . . .  	L NEAR	023A	TRANCODE
SkipDelim  . . . . . . . . . . .  	N PROC	0247	TRANCODE	Global	Length = 0014
SKIPERR  . . . . . . . . . . . .  	L NEAR	0259	TRANCODE
SKIPLFEED  . . . . . . . . . . .  	L NEAR	034A	TRANCODE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-14


SKIPSTRINGEND  . . . . . . . . .  	L NEAR	015E	TRANCODE
SMALL_A  . . . . . . . . . . . .  	NUMBER	0061	
SMALL_Z  . . . . . . . . . . . .  	NUMBER	007A	
SPECIAL_DELIM  . . . . . . . . .  		0007	
STAR . . . . . . . . . . . . . .  	NUMBER	002A	
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
STD_AUX_INPUT  . . . . . . . . .  	NUMBER	0003	
STD_AUX_OUTPUT . . . . . . . . .  	NUMBER	0004	
STD_CON_INPUT  . . . . . . . . .  	NUMBER	0001	
STD_CON_INPUT_FLUSH  . . . . . .  	NUMBER	000C	
STD_CON_INPUT_NO_ECHO  . . . . .  	NUMBER	0008	
STD_CON_INPUT_STATUS . . . . . .  	NUMBER	000B	
STD_CON_OUTPUT . . . . . . . . .  	NUMBER	0002	
STD_CON_STRING_INPUT . . . . . .  	NUMBER	000A	
STD_CON_STRING_OUTPUT  . . . . .  	NUMBER	0009	
std_eprintf  . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
STD_PRINTER_OUTPUT . . . . . . .  	NUMBER	0005	
SWITCHA  . . . . . . . . . . . .  	NUMBER	0004	
SWITCHB  . . . . . . . . . . . .  	NUMBER	0008	
SWITCHCOPY . . . . . . . . . . .  	NUMBER	801C	
SWITCHDIR  . . . . . . . . . . .  	NUMBER	8003	
SWITCHP  . . . . . . . . . . . .  	NUMBER	0002	
SWITCHV  . . . . . . . . . . . .  	NUMBER	0010	
SWITCHW  . . . . . . . . . . . .  	NUMBER	0001	
SW_FLAG  . . . . . . . . . . . .  		0000	
SYM  . . . . . . . . . . . . . .  	NUMBER	003E	
SYNTMES_PTR  . . . . . . . . . .  	V WORD	0000	TRANDATA	External

TAB_CHR  . . . . . . . . . . . .  	NUMBER	0009	
tcommand . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
TEMPLEN  . . . . . . . . . . . .  	NUMBER	0086	
TESTKANJ . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
TEXT_MODE  . . . . . . . . . . .  	NUMBER	0001	
TONEXTBATLIN . . . . . . . . . .  	L NEAR	0343	TRANCODE
TPLEN  . . . . . . . . . . . . .  	NUMBER	0040	
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	
TRUEBYTE . . . . . . . . . . . .  	NUMBER	00FF	
TRYUPPER . . . . . . . . . . . .  	L NEAR	0326	TRANCODE

UNBUF  . . . . . . . . . . . . .  	L NEAR	006E	TRANCODE
UNLINK . . . . . . . . . . . . .  	NUMBER	0041	
UNUSED . . . . . . . . . . . . .  		0003	
USEROPER . . . . . . . . . . . .  	NUMBER	005E	
UTIL_MSG_CLASS . . . . . . . . .  	NUMBER	-0001	

VBAR . . . . . . . . . . . . . .  	NUMBER	007C	
VIDEO_ALPHA  . . . . . . . . . .  	NUMBER	0003	
VIDEO_ATTRIBUTE  . . . . . . . .  	NUMBER	0007	
VIDEO_BW . . . . . . . . . . . .  	NUMBER	0007	
VIDEO_IO_INT . . . . . . . . . .  	NUMBER	0010	

WAITPROCESS  . . . . . . . . . .  	NUMBER	004D	
WIDEPERLIN . . . . . . . . . . .  	NUMBER	0005	
WILDCARD . . . . . . . . . . . .  		0001	
WRITE  . . . . . . . . . . . . .  	NUMBER	0040	
WRITE_OPEN_FLAG  . . . . . . . .  	NUMBER	0101	
WRITE_OPEN_MODE  . . . . . . . .  	NUMBER	0001	

XDUP . . . . . . . . . . . . . .  	NUMBER	0045	
XDUP2  . . . . . . . . . . . . .  	NUMBER	0046	
XNAMETRANS . . . . . . . . . . .  	NUMBER	0060	

YES_ECHO . . . . . . . . . . . .  	NUMBER	0001	

$call  . . . . . . . . . . . . .  	L NEAR	025B	TRANCODE	Global
$if  . . . . . . . . . . . . . .  	L NEAR	00C2	TRANCODE	Global
??0000 . . . . . . . . . . . . .  	L NEAR	00BA	TRANCODE
??0002 . . . . . . . . . . . . .  	L NEAR	021F	TRANCODE
??0005 . . . . . . . . . . . . .  	L NEAR	0246	TRANCODE
??0006 . . . . . . . . . . . . .  	L NEAR	0258	TRANCODE
??0007 . . . . . . . . . . . . .  	L NEAR	025A	TRANCODE
??0009 . . . . . . . . . . . . .  	L NEAR	0350	TRANCODE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:02
Batch processing routines part II                           Symbols-15


??000A . . . . . . . . . . . . .  	L NEAR	0364	TRANCODE
??000B . . . . . . . . . . . . .  	L NEAR	038F	TRANCODE
??000C . . . . . . . . . . . . .  	L NEAR	039D	TRANCODE
?PLM . . . . . . . . . . . . . .  	NUMBER	0000	
?WIN . . . . . . . . . . . . . .  	NUMBER	0000	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  tbatch2		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   3570 Source  Lines
   4096 Total   Lines
   1054 Symbols

  43108 + 183880 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
