Trick 74: Globale Dollarkrise  
                Das Zeichen $ überall 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  xnext.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 gehört 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
end

Statt des Abschnitts zwischen ***** geht auch, kürzer:

var kn
ins ,$,^_,
ins
put

Das wäre der fünfte Trick: mit  var kn  wird der gesamte Satz in die iV kopiert
die Ersetzung darin durchgeführt und das Ganze wieder in den Arbeitsspeicher
zurückkopiert.