[Allegro] Kleines Tutorial für Einsteiger zum neuen "upd"

Bernhard Eversberg ev at biblio.tu-bs.de
Do Jan 26 08:34:55 CET 2012


                                                             2012-01-26

update.job : Kleines Tutorial
=============================
Zielgruppe: Anwender ohne viel Kenntnis der FLEX-Sprache, der
allegro-Parameter, Importverfahren und sonstigen Interna.

Lernziel: Auf bequeme Art eigene neue Daten in eine Datenbank
einspeisen, oder darin vorhandene Daten ändern oder löschen.
(Klar, normalerweise mit a99, aber manchmal will man Daten einspeisen,
die schon in anderer Form vorliegen oder die man sonstwie als Text
mit anderen Mitteln erstellen kann.)

Zuerst aber etwas nur für Kenner
--------------------------------
... des alten UPDATE.EXE. Man braucht V32.
Im Prinzip ist es so, daß jeder klassische Aufruf

   update -f -u<dateiname> ...  (ab Win'XP gleichwertig: upd -f ... )

ab V32.0 ersetzt werden kann durch

   acon -jupdate -f -u<dateiname> ...

d.h. der gesamte Rest des Aufrufs bleibt unverändert - die
Phrase "acon -jupdate" ist in dem Sinne ein Synonym für "update".

Das neue Programm upd.exe, viel kleiner als das alte, tut nichts
weiter als einen Aufruf alter Art in einen der neuen Art zu wandeln
und diesen dann zu starten - mehr nicht.

Wer es extrem einfach haben will, braucht daher nur das ganz neue,
ganz kleine Progrämmchen  upd.exe (32bit!)  und dazu die neuen
Dateien  update.job + optsget.inc. Diese fügt die V32.0 der bestehenden
Installation hinzu (normalerweise auf c:\allegro). Man arbeitet danach
weiter wie gewohnt. Und es klappt dann auch unter Windows'7/64bit
(mit dem alten upd.exe / update.exe nicht).


Die große Neuerung
------------------
Neben dem Vorteil, auch unter 64bit und Linux zu laufen, gibt es noch
einen zweiten: die Update-Datei (Option -u<dateiname>) kann nun auch
eine im Externformat sein, Typ .adt. Solche sind schlichte Textdateien
und somit viel leichter zu erstellen. (Handbuch Kap.0.2.2)

Das Einspeisen von eigenen Daten, ohne das aufwendige Importprogramm,
wird so zu einer recht einfachen Sache, falls man mit eigenen Mitteln
(also ohne komplizierte Fremddaten-Umwandlung) Textdateien vom Typ
.adt erstellen kann. UND die Externdatei kann auch im Windows-Code
(ANSI) geschrieben sein, oder sogar in UTF-8 (Unicode). Möglich ist
also z.B. auch das Erstellen einer .adt-Datei mit XSLT aus einer
XML-Datei heraus.

Beispiel zum Ausprobieren mit der DemoBank
------------------------------------------
Um zu erleben, wie einfach es tatsächlich ist, erstellt man sich
erst einmal eine ganz kleine Datei, und zwar so: Den folgenden
Abschnitt in das Programm notepad kopieren und auf das eigene ProgDir
speichern als Datei mit Namen "testdat.adt":
(Nur das, was zwischen den gestrichelten Linien steht)

--------------------- Beginn Datei testdat.adt ------------------------

   Zuerst ein neuer Satz, er soll in Datei 2 und bringt eigene 00 mit
   (Das Feld u1  ist ein Steuerbefehl und wird nicht mit gespeichert.)
#u1 ####2
#00 987654
#20 Optoelektronik : Bauelemente der Halbleiter-Optoelektronik
#30aelk
#42 Fischbach, Jörn-Uwe
#71 Stark verkürzte Sonderaufl. f. Bachelor
#74 Grafenau/Württ
#75 Expert-Verl.
#76 2002
#77 73 S.
#85 Kontakt & Studium ; 111
#87 978-3-88508-800-7
#90 OPT-568

   Neuer Satz ohne 00, erhaelt dann eine 00 gemaeß CFG (Befehle cg und ci)
   (Kommt in die mit Option -n angegebene Datei)
#20 Optoelektronik : Bauelemente der Halbleiter-Optoelektronik
#30aelk
#31 Optische Technologie
#42 Fischbach, Jörn-Uwe
#71 4. und letzte Aufl. (Verf. hat keine Lust mehr)
#74 Grafenau/Württ
#75 Expert-Verl.
#76 2012
#77 732 S.
#85 Kontakt & Studium ; 176
#87 978-3-88508-877-7
#90 OPT-569

   Vorhandener Satz: Es gibt schon einen Satz mit Nr. 823056 in 00.
   Zu ergaenzen sind 3 neue Felder, die 85 soll raus, zwei neue Felder
   der Kategorie 31 und eine 90 sollen hinzugefügt werden. Das Feld 71
   ist zu ersetzen, falls schon vorhanden, sonst einzufügen
#00 823056
#31~Elektronik
#31~Optische Technologie
#71 1. Aufl.
#90~OPT-567
#85 _

   Satz loeschen. Es genuegt der Steuerbefehl  u1 @@@@@ am Anfang und
   die Angabe des Felds fuer den Primaerschluessel, hier die 00
#u1 @@@@@
#00 816059
-------------------- Ende testdat.adt ------------------------------

In einer .ADT-Datei dürfen eingerückte Texte über jedem Satz stehen.
Darin soll nur das Zeichen # nicht vorkommen.
Die Datensätze müssen durch eine Leerzeile getrennt sein.
So schlicht kann also eine Datei aussehen, die sich nun problemlos
einmischen läßt. Genauso sehen die Sätze in a99 aus, wenn man sie mit
  F5  anzeigen läßt. (D.h. man kann auf diese Weise Sätze herauskopieren
in eine Textdatei, beliebig ändern und dann mit dieser Methode wieder
in dieselbe oder eine andere Datenbank einspeisen.)

Tip: Die Exportparameter  e-w.apr  stellen genau diese Form her.
      Wenn man also damit eine Erg.Menge exportiert, hat man die
      Daten im Externformat. Soll die Datei im Windows-Code sein, dann
      in e-w.apr die Zeile  tad-aw  aktivieren.

Zuerst mal testen!
------------------
Zum Einspeisen nun diesen Befehl geben (auf dem ProgDir, an dem der
Ordner demo2 mit der DemoBank hängt):

   upd -fm41 -ddemo2 -bcat -utestdat.adt -n1 --ANSI --ASIF

[Die Reihenfolge der Optionen ist egal]

Mit der Sonderoption --ASIF  arbeitet das Programm alles ab, nur das
Speichern entfällt, d.h. es wird nichts in die Datenbank geschrieben.
Fuegt man noch -T1 hinzu oder -T2, erhält man weitere Meldungen zum
Ablauf des Vorgangs, sowohl auf der Konsole wie in der Datei "upro".

Und jetzt in echt: (keine Angst, ist ja nur die Demo!)
------------------
Dazu mutig denselben Befehl geben, aber ohne das --ASIF.
Dann wird das Speichern durchgeführt, d.h. nach Ablauf kann man die
geänderten bzw. neuen Sätze in der Datenbank begutachten und auch
mal nachschauen, ob im Index alles zu finden bzw. gelöscht ist.

Hat man eine Option formal falsch eingegeben oder eine wichtige
vergessen, kommt eine Fehlermeldung und es passiert nichts.

Besonderheiten
--------------
Die Sonderoption --ANSI sagt dem Programm, daß die zu lesenden Daten
im ANSI-Code (Windows-Standard) sind. Intern hat die Datenbank aber
ASCII als Norm. Die Daten werden dann umcodiert.
Ebenso kann man mit der Sonderoption  --UNICODE erreichen, daß
die zu lesende Datei in UTF-8 codiert sein kann und dann nach ASCII
konvertiert wird. [Dazu muß ucodes.apt in die Indexparameter einbezogen
sein, was bei cat.api der Fall ist.]

Was bedeutet -fm41 ?
--------------------
Die Option -fm sagt dem Programm, WIE das Einmischen erfolgen soll.
Hinter dem m können 5 verschiedene Ziffern stehen, die zweite Ziffer
kann nur eine 0 oder eine 1 sein. Falsche Ziffern lösen eine Fehler-
meldung aus und den Abbruch des Vorgangs.
Geben Sie in a99 ein:
    h xset
Dann erscheint die Doku zum FLEX-Befehl set. Der Abschnitt unter
set u xyz
erklärt die Bedeutung der Ziffern. In diesem Fall:
   4 : Vorhandene Kategorien überschreiben
   1 : Wenn der Primärschlüssel noch nicht existiert, dann den Satz
       als neuen Satz einmischen.
Mit der Option  -fm  kann man für jeden denkbaren Fall die richtige
Modalität des Einmischens einstellen.

Weiterführend
-------------
Der  update.job  ist eine für acon geeignete FLEX-Datei.
Darin gibt es Stellen für eigene Erweiterungen. Diese sind markiert mit
dem Wort  ERWEITERUNG  und Kommentaren, was an der betr. Stelle
gemacht werden kann. Auf diese Weise wird  update.job  zu einem
flexiblen Skript für viel Zwecke der Datenbearbeitung in Verbindung
mit dem Einmischen von Daten in eigene Datenbanken.





Mehr Informationen über die Mailingliste Allegro