Seite durchsuchen nach:
(powered by
FreeFind)
Bemerkung: Manche Browser haben offensichlich Probleme mit CSS. Für die richtige Darstellung dieser Seiten verwenden Sie am besten
Firefox oder
Opera.
Syntax
found = BiSearchAtPos( searchArg[, atPos][, len] ) [;]
Beschreibung
Diese interne REXX-Funktion sucht eine sortierte Liste nach dem als
Aufrufparameter angegebenen Satz ab der angegebenen Position im Satz und
mit der angegbenen Länge durch.
Aufrufparameter
searchArg
Der gesuchte Feld im Listensatz.
atPos
Feldposition im Satz, ab der gesucht wird.
len
Länge der Unterkette im Satz, in der gesucht wird.
Rückgabewerte
found
Index der ersten gefundenen Stemvariablen, in der das gesuchte Feld in
der angegebenen Position vorhanden ist.
0
Eine Null, wenn kein Feld gefunden wurde.
Bemerkungen
Eine Liste ist eine durchnumerierte Stem-Variable mit der Anzahl der
Sätze in der Stem-Variablen mit dem Index 0.
Gesucht wird die Unterkette der Stem-Variablen (des Satzes) ab der
angegebenen Position und mit der angegebenen Länge. Die Liste muss
nach gleichen Kriterien sortit sein (Position, Länge).
In dieser Beispielimplementierung ist die Liste in der Stem-Variablen
mit dem Stamm-Namen stem. abgespeichert.
Dieser Name wurde durch die Anweisung Expose
an die Prozedur Übergeben.
Es wird der Index der ersten gefundenen Stmvwariablen zurück gegeben.
Es kann allerdings weitere Variablen geben, die den Suchkriterien entsprechen
Sourcecode
/*======( Binary search at position )======*/
BiSearchAtPos: Procedure Expose stem.
Arg search, atPos, len
If DataType( atPos ) <> 'NUM' Then atPos = 1
If DataType( len ) <> 'NUM' Then
len = Length( search )
found = 0 /* Index of the found Item */
bottom = 1
top = stem.0
Do While found = 0 & top >= bottom
mean = (bottom + top) % 2
Parse Var stem.mean . (atPos) srchVal +(len) .
If search = srchVal Then found = mean
Else If search < srchVal Then top = mean - 1
Else bottom = mean + 1
End
Return found
/*** End BiSearchAtPos ***/
Beispiel 1
stem. = "Z"
stem.0 = 20
stem.1 = "/* REXX */"
found = BiSearchAtPos( "/* REXX */" )
Say found
Ergebnis 1
1
Beispiel 2
stem. = "Z"
stem.0 = 20
stem.1 = "/* REXX */"
found = BiSearchAtPos( "REXX", 4 )
Say found
Ergebnis 2
1
Your privacy: This web site has no cookies, no advertising and does not provide access data to anyone for any reason.
Copyright © Janosch R. Kowalczyk 1999, 2010. All rights reserved.
Most recent revision on 25 Feb 2010 (56) - 13:21:41.