$CPU 8086 ' make compatible with XT systems $LIB ALL OFF ' turn off all PowerBASIC libraries $ERROR ALL OFF ' turn off all PowerBASIC error checking $OPTIMIZE SPEED ' optimize for smaller code $COMPILE UNIT ' compile to a UNIT (.PBU) '$COMPILE EXE ' compile to a UNIT (.PBU) DEFINT A-Z ' Required for all numeric functions, forces PB to not ' include floating point in UNIT (makes it smaller) '/*------------------------------------------------------------------*/ $CODE SEG "MLIB1" '/*------------------------------------------------------------------ ' ISLIKE(P$,S$) ' Returns 1 if the pattern in S$ matches the pattern in P$. DOS ' wild card rules apply (?*). ' * = stop compare here ' ? = any character allowed here but must be present (not null) ' # = must be a number here (0123456789) ' % = must be a character here (A-Z case ignored) ' EXAMPLE: T = ISLIKE("??E??T","HRESST") 1 ' T = ISLIKE("??E??T","HRESST") 1 ' T = ISLIKE("??E?#T","HRES1T") 1 ' T = ISLIKE("??E?#T","HRESST") 0 ' T = ISLIKE("(###)###-####","(a12)373-5794") 0 '/*------------------------------------------------------------------ FUNCTION ISLIKE(P$,S$) PUBLIC AS INTEGER IF MID$(P$,1,1) = "*" THEN FUNCTION = 1 EXIT FUNCTION END IF OKF = 1 FOR CNT = 1 TO LEN(P$) '/* --- Wildcard? --- IF MID$(P$,CNT,1) = "*" THEN EXIT FOR '/* --- Any Character? --- IF MID$(P$,CNT,1) = "?" THEN ITERATE '/* --- Alpha Only? --- IF MID$(P$,CNT,1) = "%" THEN IF INSTR(1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ",UCASE$(MID$(S$,CNT,1))) > 0 THEN ITERATE ELSE OKF = 0 EXIT FOR END IF END IF '/* --- Numeric Only? --- IF MID$(P$,CNT,1) = "#" THEN IF INSTR(1,"0123456789",MID$(S$,CNT,1)) > 0 THEN ITERATE ELSE OKF = 0 EXIT FOR END IF END IF '/* --- Exact Match? --- IF MID$(P$,CNT,1) <> MID$(S$,CNT,1) THEN OKF = 0 EXIT FOR END IF NEXT CNT FUNCTION = OKF END FUNCTION '/*------------------------------------------------------------------ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' A$ = "(303)373-57a4" ' P$ = "(###)###-####" ' T = ISLIKE(P$,A$) ' CLS ' SAY 20,1,STR$(T),31 ' Y$ = GETKEY '/*------------------------------------------------------------------