.TITLE STRIP .IDENT /V01/ .SBTTL DESCRIPTION ; ; ; COMPONENT: STRIP ; ; DATE: 30-MAY-79 ; ; AUTHOR: GR JOHNSON ; BATTELLE NORTHWEST ; P O BOX 999 ; RICHLAND WA 99352 ; ; SOURCE: MACRO-11 ; ; CALLER: FORTRAN IV-PLUS ; ; CALLING SEQUENCE: ; ; CALL STRIP(STRING,[ILEN]) ; ; STRING = ARRAY CONTAINING THE STRING TO BE TRUNCATED. ; THE STRING MUST BE TERMINATED BY AN ASCII NULL ; CHARACTER. ; ; ILEN = INTEGER VARIABLE TO RECEIVE THE LENGTH OF THE ; TRUNCATED STRING. ; ; ; DESCRIPTION: ; ; "STRIP" TRUNCATES TRAILING SPACES AND NON-PRINTABLE CHARACTERS ; FROM AN ASCII STRING (NULL REPLACEMENT). THE LENGTH OF THE TRUNCATED ; STRING IS OPTIONALLY RETURNED IN ILEN. ; ; .SBTTL ENTRY POINT -- STRIP TRAILING GARBAGE ; ; .PSECT ; ; STRIP:: ; ; MOV 2(R5),R1 ; ADDRESS OF STRING TO R1 CLR R0 ; CLEAR CHARACTER COUNT 2$: INC R0 ; INCREMENT CHARACTER COUNT CMPB #000,(R1)+ ; END-OF-STRING? BEQ 4$ ; YES, GO TRUNCATE BR 2$ ; NO, CONTINUE TO SCAN ; 4$: DEC R1 ; POINT TO PRIOR CHARACTER CMPB #040,(R1) ; SPACE OR LESS? BGE 6$ ; YES, NEXT CHARACTER CMPB #177,(R1) ; DEL? BNE RTN ; NO, RETURN TO CALLER 6$: CLRB (R1) ; CLEAR CHARACTER (ASCII NULL) SOB R0,4$ ; DECREMENT COUNT AND CONTINUE TO SCAN ; RTN: CMPB #2,(R5) ; AT LEAST TWO ARGUMENTS? BGT 2$ ; NO, RETURN TO CALLER TST 4(R5) ; NULL ARGUMENT? BEQ 2$ ; YES, RETURN TO CALLER MOV R0,@4(R5) ; CHARACTER COUNT TO ILEN 2$: RTS PC ; RETURN TO CALLER (R0 = ILEN) .END ;