[Allegro] Erweitertes osdp ist da
Bernhard Eversberg
ev at biblio.tu-bs.de
Di Feb 14 09:03:59 CET 2012
Im SVN liegt die aktuelle, erweiterte Fassung:
https://svn.allegro-c.de/svn/osdp/
Und hier das unter Windows ausführbare Programm:
http://ftp.allegro-c.de/aktuelle-version/osdp.zip
Dies jedoch nur zum Ausprobieren, mit drin ist eine Datei aktion.dat,
die man so in Aktion setzt:
osdp <aktion.dat
auf c:\allegro, wenn DemoBank standardmäßig in demo2 liegt.
Darum geht's aber nicht, sondern natürlich um's Quellprogramm, denn
dieses soll als Lernobjekt dienen und als Startbasis für eigene
Versuche, um den Einstieg zu erleichtern.
Es folgt, weil da alles weitere drinsteht, die README-Datei, die
im Anhang auch die Datei aktion.dat zeigt.
osdp : Beispielprogramm für den Umgang mit der Klassenbibliothek
2012-02-13 Ausbaufaehig, entsprechend kommentiert (Zeilen mit ++++)
Kompilierbar unter Windows, Linux, Solaris
osdp ist
ein Konsolprogramm, das auf eine allegro-Datenbank zugreifen
und Aktionen damit und darin ausführen kann, und zwar:
Sätze finden und laden, verändern, speichern, exportieren.
osdp soll:
1. Den Umgang mit der Klassenbibliothek an übersichtlichen
Beispielen zeigen
2. Einen Rahmen bieten, in den man eigene Funktionen einbauen kann
Dieser Rahmen umfaßt folgende Teile:
-- Lesen von Einstellungen aus einer Steuerdatei
-- Auswertung von Aufrufoptionen (Vorrang vor Steuerdatei)
-- Öffnen einer Datenbank
-- optional Laden von Exportparametern
-- Lesen, Erkennen, Ausführen von Befehlen aus der Steuerdatei
osdp kann
nichts, was acon nicht auch könnte! Es ist nur viel kleiner
und übersichtlicher, somit für den Einstieg und als Startpunkt für
eigene, nicht so komplexe Aufgaben besser geeignet als acon.
Typische Aufgaben sind solche, bei denen man bestimmte Datenelemente
in bestimmte Sätze einspeisen will oder sonstige Veränderungen an
den Sätzen vornehmen (globale und lokale Ersetzungen).
osdp kann nicht
Spruenge und Unterprogramme ausfuehren. Die Befehle werden streng
linear abgearbeitet; es wird eine Zeile nach der andern gelesen und
sofort ausgefuehrt. (acon liest erst den ganzen Job ein, bevor es
beginnt! Das geht nicht anders wegen der Sprünge und Unterprog.)
osdp benötigt
eine Steuerdatei, diese ist zu übergeben an die
Standardeingabe mit
osdp <dateiname
Die Datei wird nicht, wie bei acon, zuerst als Ganzes eingelesen,
sondern von Anfang bis Ende, Zeile für Zeile gelesen und sofort
ausgeführt. Die Angaben zur Datenbank müssen deshalb am Anfang
de Datei stehen.
Eine Steuerdatei besteht aus zwei Abschnitten mit den
Überschriften
OPTIONS Einstellungen wie Ort und Name der Datenbank
COMMANDS Befehle zum Finden, Laden, Verändern, Speichern, Exportieren
Die Zeile OPTIONS kann fehlen, dann sind alle Optionen im Aufruf
anzugeben. Ohne den Abschnitt COMMANDS wäre eine Steuerdatei sinnlos.
Zeilen, die mit Spatium beginnen, sind wirkungslos (= Kommentar)
Codierung ist Windows-ANSI (wird dann in den internen Code gewandelt)
Der Dateityp (extension) ist nicht festgelegt. Empf.: .dat
Start: osdp -aufrufoptionen <dateiname
Die per -x.. nicht gesetzten Werte können am Anfang der Datei stehen:
(Die im Aufruf gegebenen Optionen haben Vorrang)
Beispiel:
osdp -kn -df:\daten\katalog -bbank <aktion.dat
Im Normalfall wird man wohl alles in die Steuerdatei schreiben und
dann mit osdp <aktion.dat starten
Mögliche Optionen sind:
-d Datenpfad z.B. -d c:\allegro\demo2
-b DbName -b cat
-r Registernr -r 9 (f.d. find-Befehl)
-k Konfig -k a
-e ExportParam -e e-w
-E Ausgabedatei -E output.adt
Es folgt ein Beispiel für eine Steuerdatei (Codierung: ANSI Windows)
Es kommen alle Befehle vor, die möglich sind.
---------------- aktion.dat ---------------------------------------
OPTIONS
-b cat
-k a
-d c:\allegro\demo2
Die folgenden können zur Laufzeit geändert werden, indem man
die Werte jeweils in gleicher Weise unter COMMANDS neu angibt
-e e-w
-E output.adt
Register der Prim.Schl.
-r 9
Zwischen -x und Wert können Spatien stehen.
Unter dem Wort COMMANDS fängt der funktionale Bereich an
COMMANDS
Satz finden (im Reg. 9 - s. Option -r), aendern, speichern
find 8d0294
ein bestimmtes Feld einfuegen (vorhandenes ersetzen)
#98 Gehört zu Shakespeares berühmtesten Stücken
Ein Feld #31 hinzufuegen (vorhandenes bleibt bestehen)
#31~Tragödie
ein Feld loeschen (ohne Inhalt angeben)
#89x
globale Ersetzung im Satz
_Othello_Otello_
lokale Ersetzung in einem Feld (statt _ auch , möglich)
*#74_u.a.__
Ausgabe per Parameter
export
Satz speichern
put
Indexeinträge des Satzes ausgeben
keys
1 Sekunde warten
sleep 1
Naechster Satz: vorhandenen aendern und als neuen speichern
(dabei muss man #00 geeignet setzen)
find 813139
#00 a?5
#76 2012
#71 3. Aufl.
export
Speichern, aber als neuen Satz
put new
Neuen Satz komplett vorgeben
new
#40 Rietzschel, Thomas
#20 ¬Die¬ Stunde der Dilettanten : Wie wir uns verschaukeln lassen
#39 von Thomas Rietzschel
#74 Wien
#75 Zsolnay
#76 2012
#77 256 S.
#87 3-552-05554-1
#90 ABC-123
put
export
-------------------------------------------------------------------
Nach Ablauf in a99 die Daten betrachten!
Die Sätze sind außerdem in output.adt protokolliert.
Mehr Informationen über die Mailingliste Allegro