The following article was printed in issue 15 of 1987.7.8 of the magazine „Computer Persönlich".
Demonstration of wildcards in processing files.
|
|
Joker für Dateibearbeitung
Sie haben Ihre selbstprogrammierte Dateiverwaltung geladen und suchen nun einen bestimmten Eintrag.
Leider haben Sie aber gerade die exakte Schreibweise des Suchbegriffes nicht im Kopf.
Wenn Sie sich in dieser Situation wiedererkennen, dann dürfte Sie dieser Beitrag interessieren.
Jeder kennt sie von den Kopierprogrammen der Betriebssysteme:
Die »Joker« oder »Wildcards« <*> und <?>.
<*> darf Namensteile, <?> einen Buchstaben ersetzen.
Das können wir auch in unseren eigenen Programmen verwenden.
Mit der Funktion »Gleich« läßt sich schnell eine Datei auf passende Einträge durchsuchen.
Dabei sind für die Maske auch Konstruktionen wie »Mü*er*n« erlaubt, die beispielsweise der Befehl »Copy« von MS-DOS nicht bearbeitet.
Eigentlich sollte keine Dateiverwaltung und keine Datenbank ohne diese Funktion programmiert werden.
Wie oft taucht die Frage auf »Maier mit ai, ei, ey oder ej ?«
Wir tippen einfach »M??er« und schon werden alle passenden Einträge gesucht.
Oder man sucht in einer Adressenliste alle Gabis in München:
Vorname: Gab*
Nachname: *
Ort: München
Sollen alle Features der Maskenprogrammierung berücksichtigt werden, entsteht eine furchtbare Schlange von IF-Anweisungen.
Das läßt sich durch Rekursion einigermaßen im Rahmen halten.
Es wird immer nur der erste Buchstabe der Maske untersucht.
Anschließend wird dieser und der dazu passende Teil des Vergleichstrings gelöscht, um wieder von vorne zu beginnen.
Obwohl Rekursionen immer etwas länger dauern, ist die Funktion auch in großen Dateien sehr schnell und CP/M-Programmierer können auf die Compiler-Option {$A-}
verzichten, da der Rekursionsstack nicht benötigt wird.
Das Demo-Programm zeigt den Einsatz der Funktion zur Erstellung einer Indexdatei.
(Detlef Hoche/zi)
|
Listing der Funktion »GLEICH«
|
|
Dieses Listing zeigt den Einsatz der Funktion »GLEICH«
|
[The function »Gleich«
and the demo program]
Scanned by
Werner Cirsovius
September 2002
© Computer Persönlich