Funktion FAST_ASCAN in Clipper
Ersatzfunktion für Suche in langen mehrdimensonalen Arrays
Das zu durchsuchende Array muss in der Suchspalte sortiert sein
FUNCTION FAST_ASCAN(sucharray,suchwert,arrayind) LOCAL arraylen := 0 LOCAL aktvalue := "" LOCAL maximum := 0 LOCAL minimum := 0 LOCAL nextone := 0 LOCAL retwert := 0 arraylen=LEN(sucharray) IF arraylen>0.5 IF arraylen>1.5 IF arraylen>2.5 nextone=INT((arraylen/2)+0.999999) maximum=arraylen minimum=1 DO WHILE .T. aktvalue=sucharray[nextone,arrayind] IF aktvalue==suchwert retwert=nextone EXIT ENDIF IF (nextone=minimum) .OR. (nextone=maximum) retwert=0 EXIT ENDIF IF aktvalue<suchwert minimum=nextone nextone=nextone+INT(((maximum-nextone)/2)+0.999999) ELSE maximum=nextone nextone=nextone-INT(((nextone-minimum)/2)+0.999999) ENDIF ENDDO ELSE IF sucharray[1,arrayind]==suchwert retwert=1 ELSEIF sucharray[2,arrayind]==suchwert retwert=2 ENDIF ENDIF ELSE IF sucharray[1,arrayind]==suchwert retwert=1 ENDIF ENDIF ENDIF RETURN(retwert)