; ; STRIPS.M68 ; ; This subroutine does a reverse strip on a string . ; what it does is takes all leading blanks , control characters ; and strips them out,then it pads the string with the pad character ; you specified. ; ; FORMAT : XCALL STRIPS,STRING,PADCHR ; ; 07/16/87 flm(bb) ; ; Author : Fred L. McMaster (A.K.A.'BIBI') Computer Resources,Inc. ; 101 39th Street North ; Birmingham , AL 35222 ; (205) 591-8810 ; SEARCH SYS SEARCH SYSSYM SEARCH TRM VMAJOR = 1 VMINOR = 0 VEDIT = 1 VWHO = 1 OBJNAM .SBR PHDR -1,0,PH$REE!PH$REU ; re'entrant / re'usable .OFINI .OFDEF XC.ARG,2 ;number of arguments .OFDEF XC.TY1,2 ;source type .OFDEF XC.AD1,4 ;source address .OFDEF XC.SZ1,4 ;source size .OFDEF XC.TY2,2 ;padchr type .OFDEF XC.AD2,4 ;padchr address .OFDEF XC.SZ2,4 ;padchr size .OFSIZ XC.SIZ STRIPS: CMMW XC.ARG(A3),#2 ; Test for at least one arg JLO ARGERR ; if not report it STR1: CMMW XC.TY1(A3),#2 ; test for string type(source) JNE TYPERR ; if not report it MOV XC.SZ1(A3),D0 ; set source byte count MOV XC.AD1(A3),A2 ; move source variable into A2 MOV XC.AD1(A3),A4 ; move dest. variable into a4 CLR D2 ; clear secondary register START: DEC D0 ; decrement byte count by 1 MOVB (A2)+,D1 ; move first byte into d1 CMPB D1,#40 ; compare with space BLE START ; if it's a space or less(ctrl char) ; then get next char. MOVB D1,(A4)+ ; put byte into destination buffer 10$: INC D2 ; increment byte count for output by 1 MOVB (A2)+,(A4)+ ; this is the main loop SOB D0,10$ ; subtract one and branch until ; the entire string is done. MOV XC.SZ1(A3),D0 ; set string length CLR @A2 ; clear the register MOV XC.AD2(A3),A2 ; push address into A2 20$: CMPW D2,D0 ; compare length's BEQ 30$ ; exit if same MOVB (A2),(A4)+ ; space is pad character INC D2 ; increment byte count BR 20$ 30$: RTN ; return from calling program. DEFINE ERROR TEXT TYPE <'TEXT' > JMP ABORT ENDM ARGERR:ERROR An improper number of arguments has been passed to VARERR:ERROR An argument type error has occurred in SIZERR:ERROR An argument size error has occurred in TYPERR:ERROR A variable type error has occurred in ABORT: TYPECR TYPECR < 1987 Computer Resources, Inc. > ; or any other verbage RTN END .