[Allegro] Trick 74 : Globale Dollarkrise (Den $ global ersetzen)

Bernhard Eversberg ev at biblio.tu-bs.de
Do Nov 26 08:13:12 CET 2009


Trick 74:  Globale Dollarkrise
            Das $-Zeichen im ganzen Satz ersetzen

Aufgabe: Man hat in seiner Datenbank den $ als Unterfeldzeichen,
          nun soll er durch das Dreieck (Code 31) ersetzt werden.

Aber Achtung: wenn der $ irgendwo als solcher vorkommt, dann wird
er ebenfalls ersetzt, denn das Programm kann dies nicht unterscheiden.

Das Durcharbeiten der gesamten Datenbank ist kein großer Trick, es
wird im Text  hnext.rtf  unter Beispiel 3 beschrieben.

Der erste Trick ist, daß man die lokale Ersetzung mit insert _abc_XYZ_
verwenden muß, denn bei der globalen hat der $ leider die Wirkung
eines Abzwack-Operators: es verschwindet der ganze Rest des Felds.
(s. Handbuch S. 118)
Der zweite Trick ist, mit var k_1 und var k_2 die Felder einzeln
zu bearbeiten, wobei die Feldnummer mitgenommen wird (mit k1/k2
hat man die Feldtexte ohne Nummer), so daß mit
var k_2
...
ins
das Feld wieder korrekt in den Satz zurückgegeben wird.

Der dritte Trick ist, mit  if _$_  zu prüfen, ob im Satz wirklich
ein $ vorkommt, denn wenn nicht, braucht ja nichts getan zu werden
und insbes. der Satz nicht wieder gespeichert.

Der vierte Trick ist, daß man mit ^_ (zwei Zeichen) das Dreieck
angeben kann (Strg+_ ist Code 31). Dies gehoert zu den Eigenheiten
der lokalen Ersetzung (h xinsert)

Hier die Lösung:

   DOLL.FLX : Dollarzeichen ueberall durch das Dreieck ersetzen
   2009-11-26

first #
   falls der erste Satz gelöscht ist: nächster Satz
if del jump weiter
   Jeder Satz wird in dieser Schleife verarbeitet:
:schleife

   Kommt $ im Satz vor? Wenn nicht, -> :weiter
if not _$_ jump weiter

var k_1

:loop
   Kombination ^ und _ steht fuer das Dreieck:
ins ,$,^_,
ins
var k_2
if not "" jump loop

put   speichern

   Nächsten Satz holen (interne Nummernfolge)
:weiter
next #

   kein Satz mehr, Ende erreicht
if cancel jump exit
   der Satz ist gelöscht
if del jump weiter

   es gab noch einen Satz? dann -> :schleife
if yes jump schleife

:exit





Mehr Informationen über die Mailingliste Allegro