V14 : Globale Manipulation

Bernhard Eversberg EV at buch.biblio.etc.tu-bs.de
Mon Nov 21 08:05:29 CET 1994


Ausnahmsweise mal eine Mitteilung der Entwicklungsabteilung:

Letzte Meldung zu Version 14
----------------------------                                     21.11.94

Neue Funktion : "Globale Manipulation"


Die bisher schon vorhandene Funktion "Globale Ersetzung" (F10 in Kombination
mit dem Editor-Befehl #X) wird wesentlich erweitert. Und zwar wird man alle
Moeglichkeiten der Exportsprache einsetzen koennen, um Datensaetze oder
Ergebnismengen strukturell zu manipulieren.

Ausgeloest wird die neue Funktion mit <Strg>+F10.  (F10 fuer die bekannte
globale Ersetzung bleibt erhalten.)

Voraussetzung, wie bei F10, ist Start mit Berechtigung -a3.

Folgendes wird passieren, wenn man <Strg>+F10 drueckt:

- Wenn eine Ergebnismenge besteht, muss man entscheiden, ob die Aktion
  auf die Ergebnismenge oder den aktuellen Datensatz anzuwenden ist
  (genau wie bei F10)

- Das Programm sucht in der geladenen Export-Parameterdatei (d.h. die mit
  Option -e angegebene) oder, wenn keine geladen ist, in der Anzeigeparameter-
  datei nach einem Abschnitt mit der Sprungmarke #-#. (Diese konnte bisher
  nicht auftreten, weil +# der Endebefehl ist.)
  Wird diese Sprungmarke nicht gefunden, passiert nichts.

- Der Abschnitt bei Sprungmarke #-# wird ausgefuehrt. Wenn in der Parameter-
  datei globale Ersetzungsbefehle stehen (Befehl _), werden diese zuerst ausge-
  fuehrt. Ein i4-Befehl wird jedoch ignoriert, d.h. es finden keine Ersetzungen
  vom Typ V14 statt - diese waeren auch unerwuenscht, denn:

- Der Datensatz wird nach diesen Aktionen wieder abgespeichert, und zwar so,
  als haette man die in dem Abschnitt programmierten Veraenderungen mit der
  Hand ausgefuehrt. D.h., alle sich ergebenden Registeraenderungen werden
  automatisch erledigt.

- Das ganze wird, wenn verlangt, auf jeden Satz einer Ergebnismenge angewendet.


Alles das waere noch nicht sonderlich aufregend, wenn nicht ein neuer
Manipulationsbefehl hinzukaeme: der Befehl M (wie Manipulation).
Er tut folgendes:  der aktuelle Arbeitstext wird als Kategorie in die
aktuelle Aufnahme einsortiert - als ob man genau diesen Arbeitstext im
Editor mit der Hand eingegeben haette.

Beispiele:

1. die Kategorie #20 enthaelt "HST : Zusatz". Der Zusatz soll in eine
   eigene Kategorie #25 ueberfuehrt und #20 entsprechend verkuerzt werden.

   #-#
   #20 b" : " p"#25 " M      Teil hinter " : " nach #25 kopieren
   #20 e" : " p"#20 " M      Teil vor " : " nach #20 kopieren

2. Das Umgekehrte wird gewuenscht? Bitte sehr:

   #-#
   #20 dht aht             #20 nach #uht kopieren
   #25 p" : " Aht          #25 an #uht anhaengen
   #uht p"#20 " M          #uht nach #20 kopieren
   #25 p"#25 " e4 M        loesche #25

Zu beachten ist die letzte Zeile: sie zeigt, wie man eine Kategorie mit dem
Befehl M loeschen kann. Man produziert einen Arbeitstext, der nur aus der
Kategorienummer mit Wiederholungszeichen (daher e4) besteht.

Fuer beide Beispiele sind oben die vollstaendigen Exportparameterdateien zu
sehen: mehr brauchen sie nicht zu enthalten! Man beachte insbesondere, dass
defaultmaessig  ks=4  ist (bzw. 5 bei dreistelligem Schema). Das bedeutet,
dass der aus einer Kategorie gebildete Arbeitstext automatisch gleich dem
INHALT der Kategorie ist, ohne vorangestellte Nummer. Durch Voranstellen
der gewuenschten Nummer mit dem p"..."-befehl wird die einzusortierende
Kategorie erstellt, Befehl M erledigt dieses Einsortieren. 
Das Zeichen '#' als Anfangszeichen kann weggelassen werden.
Man achte aber darauf, das Leerzeichen hinter der Kategorienummer nicht
zu vergessen, wenn es sich um eine Kategorie ohne Wiederholungszeichen 
handelt. Also: mit p"#25" statt p"#25 " wuerde man eine #25 ohne Leerzeichen
hinter der #25 erhalten!

Wenn man diese Methode anwendet, empfiehlt es sich selbstverstaendlich, wie
bei globalen Ersetzungen, nicht sofort eine Riesen-Ergebnismenge durch-
rauschen zu lassen, sondern erstmal einzelne Datensaetze testweise zu
manipulieren. Wenn man erst den Bogen raus hat, duerfte man sehr schnell
auf den Geschmack kommen ...
Alles in allem werden jetzt Datenaenderungen struktureller Art sehr 
erleichtert. Bisher musste man per Export eine neue Grunddatei herstellen
und diese per UPDATE wieder einspeisen. 

Der neue Befehl M kann auch in "normalen" Exporten eingesetzt werden.
Das vereinfacht Pauschalexporte, die man bisher nicht mit ## ausfuehren konnte,
weil bestimmte Kategorien nicht ohne gewisse AEnderungen exportiert werden
sollten. Nun kann man ## doch verwenden, wenn man nur ein  oder mehrere
M-Befehle vorausschickt. Z.B. 

   #20 dht aht e0 #zz 0             #20 nach #uht kopieren
   #25 p" : " Aht e0 #zz 0          #25 an #uht anhaengen
   #uht p"#20 " M e0 #zz 0          #uht nach #20 kopieren
   #25 p"#25 " e4 M e0 #zz 0        loesche #25
   ##                         Pauschalexport (mit veraenderter #20, ohne #25)

Hier sind, ergaenzend zum Beispiel 2, noch "e0 #zz 0" in jeder Zeile hinzu-
gefuegt, damit diese Zeilen keine echte Ausgabe produzieren, auch kein Postfix.
(Sonst wuerde jede Zeile noch mindestens ein ke erzeugen.)

Fast waere noch dieses vergessen worden:
Die neuen Programmfiles (PRESTO und LARGO) wurden vorhin auf den FTP kopiert.
Um Rueckmeldungen bei Misserfolg wird gebeten.

B.E.