.TITLE COMPAR .IDENT /V01/ .SBTTL DESCRIPTION ; ; ; COMPONENT: COMPAR ; ; 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 COMPAR(STR1,STR2,IPOS) ; ; STR1,STR2 ; ; = ASCII STRINGS TO BE COMPARED. EACH STRING MUST ; BE TERMINATED BY AN ASCII NULL CHARACTER. ; ; IPOS = INTEGER VARIABLE TO RECEIVE CHARACTER POSITION ; AT WHICH THE STRING COMPARISON FAILS. IF THE ; TWO STRINGS ARE EQUIVALENT, IPOS POINTS TO THE ; STRING TERMINATOR. ; ; ; DESCRIPTION: ; ; "COMPAR" COMPARES TWO ASCII STRINGS AND RETURNS THE CHARACTER ; POSITION AT WHICH THE COMPARISON FAILS. BOTH STRINGS MUST BE TERMINATED ; BY AN ASCII NULL CHARACTER. ; ; EXAMPLES: ; ; CALL COMPAR('ABCD' ,'EFGH', N1) ; CALL COMPAR('ABCDEF','ABCXYZ',N2) ; CALL COMPAR('ABCDEF','ABC', N3) ; CALL COMPAR('ABC' ,'ABC', N4) ; ; N1=1 ; N2=4 ; N3=4 ; N4=4 ; ; .SBTTL ENTRY POINT -- COMPARE STRINGS ; ; .PSECT ; ; COMPAR:: ; ; CLR R0 ; CLEAR CHARACTER COUNT MOV 2(R5),R1 ; ADDR OF STR1 TO R1 MOV 4(R5),R2 ; ADDR OF STR2 TO R2 ; 2$: INC R0 ; INCREMENT CHARACTER COUNT CMPB (R1),(R2)+ ; COMPARE CHARACTERS BNE 4$ ; NOT EQUAL, RETURN TO CALLER TSTB (R1)+ ; END-OF-STRING? BNE 2$ ; NO, GO CHECK NEXT CHARACTER ; 4$: MOV R0,@6(R5) ; CHARACTER COUNT TO IPOS RTS PC ; RETURN TO CALLER (R0 = IPOS) .END ;