[Allegro] HFM: FLEX zur Umwandlung vorhandener Daten

Bernhard Eversberg ev at biblio.tu-bs.de
Mi Jul 2 08:33:28 CEST 2014


ACHTUNG:
Anwender, die keine Probleme mit Mehrfachfeldern haben, brauchen
sich mit der HFM-Thematik NICHT zu befassen und können auch mit den
nächsten Versionen (V34.3 und später) unbekümmert weiterarbeiten.
Insbes. Anwender der Standardparameter mit $a.cfg brauchen nichts
zu tun oder zu beachten.

*******************************************************************

Wer nicht in dieser glücklichen Lage ist, soll es aber auch nicht
unnötig schwer haben!

Wer Mehrfachfelder in großer Zahl hat und eine bessere Methode
zu deren Handhabung wünscht, kann mit V34.3 leicht seine problematischen
Daten in die neue Form bringen, die schon beschrieben wurde und in der
Vb.260 dann umfassend dokumentiert sein wird.

Wichtig, wenn man auf interne UTF-8-Codierung umsteigen will:
Unverzichtbar wird die HFM-Umwandlung künftig sein, wenn man z.B.
Mehrfachfelder mit Umlauten und anderen Sonderzeichen an der
Mehrfachposition hat, also z.B.  #31ä  oder  #40é

Nachdem die Programme HFM-fähig gemacht wurden, haben wir einen FLEX
namens  hfmu.flx  geschrieben, der vorhandene Daten in variabler
Weise umwandeln kann.
Darin sind folgende Modifikationen möglich (alles intern dokumentiert):

   1. *** Fuer Gesamtdurchlauf: die mit *** markierten Zeilen aktivieren

   2. ACHTUNG: Wenn bestimmte Mehrfachfelder eine Semantik haben!
            Dann diese unter  :except  eintragen, s.u.
            ODER nur bestimmte Felder wandeln lassen.

   3. Falls 3- bzw. 4stelliges Schema: (t3 bzw. t4 in der CFG)
      dann im gesamten FLEX folgendes tun:
            (4,0) ersetzen durch (5,0) bzw. (6,0)
            (0,3) ersetzen durch (0,4) bzw. (0,5)
            (3,1) ersetzen durch (4,1) bzw. (5,1)

   4. Wenn schon HFM-Felder vorhanden sind, klappt's auch!
      (Nur die Nummern bleiben u.U. nicht erhalten,
       und aus  #nnn.1 TEXT  wird  #nnn  TEXT)
      Falls nicht erwuenscht, dann unter :except ausblenden lassen

Man startet die Umwandlung mit  X hfmu
nachdem man die geeigneten Modifikationen gemacht hat.

Aber bleiben Sie entspannt! Zunächst einmal kann man wie folgt
testen, ohne daß schon irgendwas passiert.

Voraussetzung: man hat das aktuelle, schon HFM-fähige a99.
Hier ist es: (Datum 1.7., 10:19)
   http://www.allegro-c.de/aktuelle-version/a99hfm.zip
Mit den vorhandenen Daten funktioniert das darin befindliche
a99hfm.exe völlig unverändert.
[In V34.3 wird es wieder a99.exe heißen]

Und so holt man sich den FLEX zum Ausprobieren:

   X getfile hfmu.flx

Wenn man ohne Änderungen  X hfmu  gibt, wird nur der aktuelle
Satz gewandelt und gezeigt, aber nicht gespeichert.
Damit kann man sich also zunächst und ab sofort anschauen,
was der FLEX aus den eigenen Daten macht. In der Anzeige und mit
F7 sieht man auch sofort, ob alles noch klappt oder was eben
nicht mehr klappt.

Dann sucht man sich also interessante Datensätze und gibt  X hfmu
Mit Alt+w schaltet man - wie üblich - zwischen dem Original
und dem veränderten Satz vor und zurück, um sofort die Änderungen genau
zu sehen.
Vor dem nächsten Beispiel am besten mit Alt+w das Original wieder
einstellen, damit die veränderte Fassung nicht gespeichert wird.

Soll, nach erfolgreichen Tests, die gesamte Datenbank
verarbeitet werden, dann in  hfmu.flx  die mit *** markierten
Zeilen aktivieren, danach ein letztes mal:  X hfmu

Natürlich kann man auch den put-Befehl deaktiviert lassen und
nach dem Durchlauf sich die geänderten Sätze alle anschauen und
mit Alt+w vergleichen mit dem Original. Wenn unzufrieden:

   x erase off

und nichts wird gespeichert.
Man wird tunlichst zuerst gründlich untersuchen, ob die geänderten
Sätze genau dieselben Schlüssel produzieren, bevor man einen
Gesamtdurchlauf mit aktiviertem put-Befehl macht.

Wir haben die Umwandlung schon getestet mit der Spezialkonfiguration
eines Anwenders, der sehr viele Mehrfachfelder hat, mit einem
3stelligen Schema. Der FLEX schafft gut 100 Sätze je Sekunde,
wenn auch noch ohne Speicherung. Die ist jedoch auch nicht zeitkritisch,
wenn keine Schlüsseländerungen resultieren!









Mehr Informationen über die Mailingliste Allegro