Code:
' ' Unit.............COMPDW1.PBL ' Zweck............Uppercase-Stringvergleich mit MSDOS-Wildcards * und ? ' Version..........1.00 ' Stand............11.05.95 ' Sprache..........PowerBASIC 3.0 ' Autor............M.Hoffmann ' $com 0 $compile unit $cpu 80386 $debug map-,pbdebug-,path-,unit- $dim all $error bounds-,numeric-,overflow-,stack-,param- $event off $float emulate $lib com-,lpt-,cga-,ega-,vga-,fullfloat-,iprint- $optimize size $option cntlbreak-,gosub-,signed- $static function CompDW (Strg1 AS STRING, Strg2 AS STRING) public as integer ' Compare/DOS Wildcards ' Vergleicht zwei Strings unter Berücksichtigung der Wildcards ' * und ? wie bei MS-DOS. Die Argumente werden in Uppercase umgewandelt. ' Ergebnisse: ' 1 = Match ' 0 = Kein Match dim a1 as local integer ' ASCII-Code eines Zeichens aus s1 dim a2 as local integer ' ASCII-Code eines Zeichens aus S2 dim s1 as local string ' Strg1 in UPPERCASE dim s2 as local string ' Strg2 in UPPERCASE dim l as local integer ' Länge des längeren Strings dim i as local integer ' Zähler CompDW = 0 s1 = ucase$(Strg1) : s2 = ucase$(Strg2) : l = max%(len(s1),len(s2)) for i=1 to l a1 = ASCII(mid$(s1,i,1)) a2 = ASCII(mid$(s2,i,1)) if a1 = 63 or a2 = 63 then iterate for elseif a1 = 42 or a2 = 42 then exit for elseif a1 <> a2 then exit function end if next CompDW = 1 end function