.TITLE LOFSET .IDENT /Y01/ ;+ ;LOFSET---LOGICAL OF SET FUNCTION ; ;FORTRAN FUNCTION TO TEST IF A CHARACTER IS OF ;A GIVEN SET ; ;CALL: ; LOGICAL=LOFSET(BYTE,SET) ;WHERE: ; "BYTE" IS CHARACTER TO TEST ; ; "SET" IS LOGICAL*1 ARRAY OF CHARACTERS TO BE TESTED ; TO SEE IF CHARACTER MATCHES. ; "SET" IS IN ASCIZ FORMAT(IE:TERMINATED BY 0 BYTE) ; ; OUTPUT IS SET TO ZERO IF NO MATCH, -1 FOR MATCH ; ; NOTE: "BYTE" MAY BE ANY DATA TYPE,IF ONLY 1 CHAR IS TO BE TESTED ; *IF MULTIPLE CHARACTERS ARE TO BE TESTED ; IN A SINGLE VARIABLE,THIS MUST BE ; EQUIVALENCED TO A LOGICAL*1 ARRAY, OTHERWISE ; ONLY THE FIRST CHARACTER WOULD BE CHECHED ;IE: ; DIMENSION ALPHA(20) ; ... ; LOGICAL*1 BALPH(80) ; ... ; EQUIVALENCE (APLHA(1),BALPHA(1)) ; ... ; READ(1,1001)ALPHA ;1001 FORMAT(20A4) ; ... ; DO 401 IX=1,80 ; IF(LOFSET(BALPH(IX,'@=!$').EQ. .TRUE.) GOTO 999!LOOK FOR SPECIAL CHARS ; ... ;401 CONTINUE ; ... ; ; .MCALL RETURN LOFSET::MOVB @2(R5),R1 ;GET INPUT MOV 4(R5),R2 ;TARGET STRING MOV #-1,R0 ;ASSUME CHAR IS HERE 10$: CMPB R1,(R2)+ ;SEE IF IT IS BEQ 20$ ;BR IF FOUND TSTB (R2) ;END? BNE 10$ ;BR IF NO CLR R0 ;ZERO IS THE ANSWER 20$: RETURN .END