| ★ APPLICATIONS ★ DIVERS ★ RSX SUCH (CPC MAGAZIN) ★ |
Wer sucht, der findet (CPC Magazin)![]() | Suchen und Ersetzen (CPC Magazin)![]() |
Diese klassische Funktion von Editoren stellt unsere "Anwendung des Monats” in einer komfortablen Version zur Verfügung. Da ich öfters mit "Wordstar” arbeite, vermisse ich während des Programmierens häufig die Such- und Tauschfunktion. In Ausgabe 3/87 des Schneider Magazins wurde bereits ein Befehl zum Suchen vorgestellt. Doch dieser hat einige Nachteile, die sich bei der Arbeit am Rechner leider bemerkbar machen.
Ein weiteres Leistungsmerkmal ist, daß sich alle Kommandos per Direkteingabe oder vom Programm aus verwenden lassen. Eine kleine Einschränkung ist dabei zu beachten. Wenn Tausch- und Such-String verschieden lang sind, bekommen alle String-Variablen, die nur einmal als Konstanten innerhalb des Programms definiert werden, einen unsinnigen Wert, falls diese Definition nach der getauschten Zeile im Programm steht und bereits durchlaufen wurde. Dieser Fehler tritt auch beim gewöhnlichen EDIT auf. Er läßt sich nur umgehen, indem man die Konstantendefinition an den Anfang setzt. Die Befehle |SUCH << ,von% ,bis% >, @Such$ > Dieses Kommando kann mit drei, einem oder ohne Parameter eingegeben werden. Bei drei Parametern muß der erste die Startzeile, der zweite die Endzeile und der dritte die String-Adresse (welche durch den Klammeraffen berechnet wird) sein. Kommt innerhalb des Strings ein Fragezeichen vor, kann an dieser Stelle jedes Zeichen im Programm stehen. Nur am Anfang und Ende wird nach dem Fragezeichen als solches gesucht. (Ist der Anfang bzw. das Ende unbekannt, läßt man dieses einfach weg.) Ohne die ersten beiden Parameter wird der gesamte Standardbereich durchsucht. Das ist normalerweise der von 1 bis 65536. Mit dem Zusatz befehl IBEREICH lassen sich diese Grenzen verändern. Die Suche kann jederzeit mit ESC unterbrochen werden. Gibt man das Kommando ohne Parameter ein, wird ab der letzten Position im Programm weitergesucht. Dies funktioniert nur, wenn in der Zwischenzeit keine Garbage Collection ausgelöst wurde. |TAUSCH <<, von% , bis% > ,@Such$, @Tausch$ > Mit diesem Befehl lassen sich Programmteile gegen andere austauschen. Die Parameter werden wie beim Such-kommando verwendet. Es ist möglich, alle vier, zwei oder keinen Parameter anzugeben. Die Suche nach dem Programmteil geschieht wie beim Such befehl. Auch |BEREICH und |S.VAR haben dieselbe Wirkung. Wird ein Suchausdruck gefunden, kommt die ganze Zeile zur Anzeige, wobei der Suchbegriff hervorgehoben ist. Dann folgt die Frage, ob man die Zeile editieren, zum nächsten Suchausdruck springen oder tauschen will. Darauf kann mit N, E oder einer beliebigen Taste für Tauschen geantwortet werden. Natürlich läßt sich die Abfrage mit ESC abbrechen. Wählt man E für Edit, befindet man sich im normalen Basic-Editor und kann in der Zeile nach Herzenslust Veränderungen durchführen. Hat man zu viele davon vorgenommen und will die alte Zeile beibehalten, ist es möglich, den Editor mit ESC zu verlassen, ohne die neue Zeile zu übernehmen. Mit T oder einer anderen Taste wird der hervorgehobene Teil des Textes durch den Tausch-String ersetzt. Falls dabei die Zeile zu lang gerät (wenn Tausch- länger als Such-String), erscheint die Fehlermeldung "Line too long”, und es folgt ein Sprung zum Edit-Modus. Nach der Bearbeitung des Ausdrucks wird mit dem nächsten fortgefahren. Die Zusatz befehle |BEREICH < ,von% < ,bis% >> Mit diesem Kommando läßt sich der Standardbereich , innerhalb dessen gesucht oder getauscht wird, vorwählen. Läßt man die Parameter weg, dann wird der Standardbereich auf den Normalwert von 1 -65536 eingestellt. Dieser wird auch gespeichert, falls die übergebenen Parameter unmöglich sind (Anfangszeile muß kleiner als Endzeile sein). Will man lediglich die Anfangszeile ändern, gibt man nur diesen Parameter an. Wenn nur die Endzeile geändert werden soll, nimmt man für die Anfangszeile 0. |STEAM < ,Ausgabekanal % > Bei umfangreichen Programmen ist es hilfreich, die Zeilen mit den gesuchten Wörtern schwarz auf weiß vor sich zu haben. Dafür läßt sich die Ausgabe auf den Drucker umleiten. Dabei werden die gesuchten Stellen doppelt und breit gedruckt. Die Steuercodes für die hervorgehobene Darstellung stehen im MC-Generator ab den letzten 13 Bytes (6 Bytes lang, wobei das letzte NUL sein muß). Anschließend folgen (also ab dem siebtletzten Byte) die Codes für Drucker normal. Die Hervorhebung müßte auf allen Epson-kompatiblen Geräten laufen. Wer ihre Art ändern oder an seinen Drucker anpassen will, muß nur die entsprechenden Werte hexadezimal in den Zeilen 3720 und 3730 des MC-Generators umschreiben. Das doppelte Komma erzeugt NUL. 1B, 45,1B, 47,, (an)Der Ausgabekanal läßt sich auch auf die Diskette (oder Cassette) umleiten (|STEAM,9). Dafür muß vorher eine Ausgabedatei mit OPENOUT”NAME” geöffnet und nach der Suche wieder mit CLOSEOUT geschlossen werden. Zum Rücksetzen des Ausgabekanals gibt man |STEAM,0 oder |STEAM ein. |
| ![]() |
|