APPLICATIONSDIVERS ★ RSX SUCH|CPC MAGAZIN) ★

Wer sucht, der findet (CPC Magazin)Suchen und Ersetzen (CPC Magazin)
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 
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.

  1. Es werden nur die Wörter gefunden, bei denen auch die Groß- und Kleinschreibung exakt übereinstimmt. (Dem Computer ist es aber egal, ob eine Variable in Großoder Kleinbuchstaben vorliegt.)
  2. Die gefundene Stelle wird nicht besonders hervorgehoben. Das kann bei mehrmaligem Auftreten eines Such-Strings in längeren Zeilen dazu führen, daß man einige Stellen übersieht.
  3. Um alle gesuchten Wörter im Programm zu finden, muß immer wieder der Befehl neu eingegeben bzw. mit COPY kopiert oder auf eine Funktionstaste gelegt werden.
  4. Das Kommando funktioniert nur auf dem CPC 464. Mein Suchbefehl weist diese Mängel nicht auf. Zusätzlich werden noch einige weitere hilfreiche Funktionen geboten, nämlich |INVERS, |S.VAR, |BEREICH, |STEAM. Die wesentliche Neuerung an diesem Programm ist dieTauschanweisung. Sie ermöglicht es, Textpassagen durch andere zu ersetzen. Diese Funktion wird für folgende Dinge benötigt:
  • Umbenennen einer Variablen (z.B. von ”y-Position” in ”yp”)
  • Umwandlung von PRINT in PRINT#8, um nachträglich alle Ausgaben auf den Drucker umzuleiten
  • Entfernung aller REMs aus einem Programm (Hier wird REM durch CHR$(0) = Zeilenende ersetzt.)
  • Übersetzung eines anderen Basic-Dialekts in Schneider-Basic (aus PUT wird PLOT u.ä.)

Auch zu diesem Befehl gibt es noch zwei äußerst nützliche Ergänzungen: |T.ALLE, |T.ANZEIGE.

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.
Weil das Programm sehr lang ist, habe ich den MC-Generator so geschrieben, daß er in drei Teile zerlegbar ist. Dann hat man beim Eintippen schon ein kleines Erfolgserlebnis, wenn ein Teil eingegeben ist. Das ' am Anfang der gekennzeichneten Zeilen des ersten bzw. des zweiten Teils ist zu entfernen, und die Länge ist in den Zeilen 1170 bis 1190 zu wählen.

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 Zusatzbefehl 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 Suchbefehl. 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 Zusatzbefehle |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)
1B, 46,1B, 48„ (aus)

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.

Alle weiteren Zusatzbefehle sind Ein-/Aus-Schalter bestimmter Funktionen. Bei diesen wird der Normalzustand eingestellt, wenn man das Kommando ohne Parameter eingibt. Ist der Parameter 0, schaltet man den Schalter aus, mit 1 oder einem beliebigen anderen Wert < > 0 ein.

|INVERS < ,x% >

Schaltet die Hervorhebung beim Suchen ein oder aus (hat beim Tauschbefehl keine Wirkung). Auf dem Bildschirm wird invers dargestellt, auf dem Drucker fett und doppelt gedruckt. Normalerweise ist die Hervorhebung eingeschaltet.

|S.VAR < ,x% >

Damit aktiviert bzw. deaktiviert man die Unterscheidung zwischen Groß- und Kleinbuchstaben. S.VAR ist die Abkürzung für Suchvariable. Der Computer kümmert sich bei Variablen bekanntlich nicht um Groß- und Kleinschreibung; darum sollte die Unterscheidung ausgeschaltet sein, wenn nach einer Variablen gesucht wird. Dazu gibt man |S.VAR,1 oder IS.VAR ein (Normalzustand). Bei der Suche
nach einem Basic-Kommando ist diese Unterscheidung sinnvoll.

|WORT < ,x% >

Damit z.B. beim Suchen nach der Variablen x nicht jeder Befehl, in dem ein x vorkommt (NEXT, XPOS), aufgelistet wird, ist die Differenzierung nach Wörtern nötig. Ein Wort ist dabei eine Gruppe von Zeichen, der keine Buchstaben benachbart sind. Dieser Schalter ist an, wenn der gesamte MC-Generator abgetippt und gestartet wurde. Fehlen die Zusatzbefehle, ist |WORT nicht aktiv.

Die letzten beiden Schalter beziehen sich nur auf den Tauschbefehl.

|T.ALLE < ,X% >

Will man innerhalb eines Programms alle Suchausdrükke tauschen, ohne jedesmal die Anfrage zu beantworten, schaltet man |T.ALLE ein. Beim nächsten Tauschbefehl werden alle Begriffe innerhalb des angegebenen Bereichs automatisch ersetzt. Mit ESC läßt sich dies jederzeit stoppen.

IT.ANZEIGE < ,x% >

Um den Tauschprozeß zu beschleunigen, kann hiermit die Anzeige ausgeschaltet werden. Der Befehl ist nur wirksam, wenn |T.ALLE eingeschaltet ist.

Da die drei Schneider-Rechner CPC 464, 664 und 6128 nicht besonders ähnlich sind, mußte ich für jeden einen eigenen DATA-Teil für den MC-Generator schreiben. Auf dem 664 und 6128 kann bei der Übergabe der String-Werte auf den Klammeraffen verzichtet und der String-Ausdruck direkt angehängt werden.

|SUCH <<,von% ,bis% > ,”Such” >

|TAUSCH << ,von% ,bis% > ,”Such”, "Tausch” >

Hartmut Stengelin

★ PUBLISHERS: CPC Magazin , CPC Magazin Codex
★ YEARE: 1986 , 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ TAG: /RSX/
★ LICENCE: LISTING
★ AUTHORS: Andreas Höhr , Hartmut Stengelin
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» RSX-Suche    (CPC  Magazin)    GERMANDATE: 2020-06-13
DL: 67 fois
TYPE: ZIP
SIZE: 5Ko
NOTE: 40 Cyls
.HFE: NON

» RSX-Suche    (CPC  Magazin  87-10)    (464-664-6128)    GERMANDATE: 2020-06-13
DL: 17 fois
TYPE: ZIP
SIZE: 8Ko
NOTE: 40 Cyls
.HFE: NON

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RSX - Random Disc Access (Popular Computing Weekly)
» Applications » RSX Befehle ohne »@«
» Applications » RSX Break-Utility (CPC Magazin)
» Applications » Music (Amstrad Magazine)
» Applications » Tape Rsxs (The Amstrad User)
» Applications » RSX BankSwop (Amstrad Action)

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 148 millisecondes et consultée 997 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.