![]() |
allegro-Exportparameter |
Man kann eine solche Datei (Typ .APR, APT oder .API) grob in vier wichtige Teile gliedern. Das Handbuch, auf dessen Kapitel hier verwiesen wird, erschwert leider den Überblick durch seinen Umfang und die sehr detaillierte Gliederung.
Bei jedem Teil sind auf der linken Seite nur einige typische Zeilen als Beispiele angegeben.
Die tatsächliche Reihenfolge der Teile und ihrer einzelnen Zeilen hat keine Auswirkung auf die Ausführung! Nur innerhalb des Teils 3, der Kategorieliste, kommt es auf die Reihenfolge an. Ansonsten gilt, wenn ein Befehl mehrfach vorkommt, nur der letzte.
zl=72
zi=5
am=8
In diesem Abschnitt werden Werte festgelegt, die von allgemeiner
Bedeutung für den gewünschten Exportvorgang sind und die nichts mit
einzelnen Kategorien zu tun haben. Z.B. zl=72 besagt "Zeilenlänge 72 Zeichen"
1=". "
2=" ; " t99
24=C "Ort: "
Die sog. "Zwischenteile" können Interpunktionen und andere Konstanten
enthalten, die man in der Kategorieliste verwenden kann, um sie zwischen
die Kategorietexte einzustreuen. Die bis zu 99 Zwischenteile können auch Steuerzeichen für die Aufbereitung enthalten
(z.B. C = Zeilenvorschub), aber auch für Druckattribute (t99 = fett ein, t98=fett aus) sowie für Bildschirmfarben (t71
= rot, t77 = weiß) und andere Zwecke.
ak=4..+A 20+B 90.+C
ak=31s"; "+D
ak=22/40+E
Diese sehr wichtigen Befehle legen fest, aus welchen Kategorien
Eintragungen erzeugt werden sollen, falls sie vorkommen.
Wenn die Aufgabe etwa ein Kartendruck ist, wird es sich um diejenigen Kategorien handeln, die für Kartenköpfe benötigt werden - daher der Name "Kopfbefehle".
Wenn die Aufgabe aber z.B. eine Indexproduktion ist (Dateityp .API), werden es die Kategorien sein, aus denen Indexeinträge zu machen sind.
Die Buchstaben hinter dem '+' weisen auf "Sprungmarken" in der Kategorieliste (Teil 3): sie legen fest, wo die spezifische Bearbeitung der Kopfkategorie beginnen soll; z.B. bedeutet ak=4..+A soviel wie: nimm jede Kategorie der Gruppe #4 und beginne jeweils mit der Verarbeitung bei der Sprungmarke #-A in der Kategorieliste.
Durch die Angabe von Trennzeichen (z.B. "; ") kann man bewirken, daß eine Kategorie an bestimmten Stellen auseinandergenommen und somit zu mehreren Einträgen verarbeitet wird.
Wenn für jeden Datensatz nur genau ein Exportsatz entstehen soll (was z.B. bei einer Parameterdatei der Fall ist, die nur für die Bildschirmanzeige zuständig ist), braucht man keine Kopfbefehle!
Die Kopfbefehle selbst bewirken noch keine Ausgabe, sie veranlassen nur die Auswahl (und evtl. Zerlegung) von Kategorien und steuern mit dem Sprungbefehl, bei welcher Sprungmarke die Verarbeitung beginnt.
Der genaue Ablauf ist dieser: (==> Handbuch Kap.10.2.6, dort auch Hinweise auf Verarbeitung von Untersätzen!)
ak=
angesprochene Kategorie in der aktuellen Aufnahme existiert. Wenn nicht: gehe
zum nächsten ak-Befehl über. Sonderfall: Wenn keiner der ak-Befehle ausführbar ist oder keiner
vorhanden: beginne mit der Ausführung bei der ersten Zeile der Kategorieliste (==> 3. Teil).
#-A
geben).
Dieser Teil ist praktisch der Hauptteil: nur er enthält Anweisungen, die tatsächlich eine Ausgabe bewirken. Die anderen Teile regeln nur die Rahmenbedingungen, z.B. Zeilenlänge (==> 1.) oder Zeichenumwandlung (==> 4.)
Die Anweisungszeilen werden von oben nach unten abgearbeitet. Der Anfangspunkt wird für jeden ak-Befehl durch seine Sprungmarke bestimmt. Abweichungen von der Reihenfolge lassen sich durch Sprungbefehle programmieren.
#-A Im Prinzip ist die Kategorieliste eine Auflistung derjenigen Kategorien, die !u1 99 P":" #zz 98 ausgegeben werden sollen. Jede Kategorie kann aber mit etlichen Befehlen #20 e" : " P". " (sog. "Manipulationsbefehlen" ==> 7.) vorbehandelt werden. Ferner gibt #+h es Bedingungsprüfungen und Sprungbefehle, die den Ablauf steuern. #-B Wegen der zahlreichen Möglichkeiten, die sich zudem freizügig kombinieren #u1 +h p99 E50 P98 lassen, ist dieser Teil der schwierigste des Exportsystems. #76 p" (" P")" Die Zeilen beginnen alle mit '#' oder '!' (siehe 4. Teil): wenn es '#' ist, #+h werden zur Umcodierung die p-Befehle benutzt, wenn '!', dann die q-Befehle. #.... Zur allgemeinen Form der Exportbefehle folgen nähere Erläuterungen auf der #-h nächsten Seite. #....Zwischen den Anweisungszeilen, die sich jeweils auf eine Kategorie beziehen, können verschiedene Steuerbefehle stehen. Diese beginnen ebenfalls alle mit dem Zeichen '#'.
Die wichtigsten Steuerbefehle sind: (==> Handbuch Kap. 10.2.6.4.)
(Achtung Nebeneffekt: wenn der Parameter as
oder ab
definiert
wurde, dann werden diese Werte trotzdem ausgegeben.)
Die Kategorieliste als Hauptteil einer Parameterdatei besteht im Prinzip, wie gesagt, einfach aus einer Auflistung der Kategorien, die ausgegeben werden sollen, in der gewünschten Reihenfolge.
Man kann eine neue Parameterdatei immer so beginnen, daß man die auszugebenden Kategorien untereinander aufschreibt. Jede Zeile stellt dann die Anweisung dar, die genannte Kategorie auszugeben. Damit würde der Export schon funktionieren, aber die Kategorietexte würden dann ohne Punkt und Komma aufeinander folgen, denn kein Programm könnte sich selber eine sinnvolle Interpunktion ausdenken.
Man muß also auf irgendeine Weise für jede auszugebende Kategorie festlegen können, ob etwas davor und/oder dahinter zu schreiben ist (und was), und auch: ob etwa nur ein bestimmter Teil des Kategorietextes auszugeben ist (und welcher), oder ob und wie das Vorhandensein einer Kategorie oder eines Bestandteils innerhalb des Kategorietextes den Ablauf beeinflussen soll, ob einzelne Zeichen oder Bestandteile durch andere Dinge zu ersetzen sind, usw. usf.
Nun wird etwas genauer erläutert, wie eine Anweisung, also eine Zeile der Kategorieliste (Teil 3), aufgebaut ist, d.h. aus welchen Teilen sie bestehen kann. (Im einfachsten Fall, wie gesagt, ist es nur eine Kategorienummer.)
Die allgemeine Form ("Syntax") einer Anweisung ist diese: (==> Handbuch Kap. 10.2.6)
Kxx[f] [BS] [MB] [BPf] (Zwischen den Bestandteilen jeweils genau ein Leerzeichen!)
Die eckig geklammerten Teile können (einzeln oder alle) entfallen, nur die jeweils benötigten sind anzugeben. Die Bestandteile haben folgende Bedeutung und Funktion (man vergleiche dazu die Beispiele im Abschnitt 3 oben):
Ist aber der Manipulationsbefehl nicht ausführbar, so produziert die gesamte Zeile kein Ergebnis und der bedingte Sprung wird ignoriert, d.h. es geht mit der nächsten Zeile weiter
Diese hier möglichen etwa 40 Befehle bilden den umfangreichsten Teil des Exportsystems und erfüllen die oben angedeuteten Detailaufgaben. Die Auflistung im Abschnitt 7 erklärt jeden einzelnen Befehl anhand von Beispielen.
#20 0 #59 7 #zz 0 (die 0 bewirkt nichts, muß aber sein: BPf darf nicht #40 0 #59 8 #zz 0 direkt auf die Kategorienummer folgen) #41 0 #74 p". - " #75 p": " #76 p", " #77 p". - "Bedeutung: Wenn ein Personenname (#40 oder #41 oder beide) vorhanden ist, soll nach dem Titel die Kombination " / " (definiert als Zwischenteil 7=" / ") ausgegeben werden, wenn beide fehlen, entfällt natürlich der Schrägstrich (#zz 0 bewirkt das). Wenn beide vorhanden sind, soll nur vor dem ersten der Schrägstrich erscheinen, vor den zweiten kommt Zwischenteil 8=" ; "). Genau diese Situation läßt sich nur mit den bedingten Postfixen lösen.
Ansonsten sollte man versuchen, auf die bedingten Postfixe zu verzichten, da sie den Ablauf unübersichtlich machen.
Das Handbuch erklärt im Detail, wie eine Anweisungszeile abgearbeitet wird (==> Handbuch Kap. 10.2.6).
Hier folgt eine knappe, aber doch vollständige Beschreibung:
Wenn man eine Parameterdatei der einfachsten Form hat, also eine schlichte Auflistung der auszugebenden Kategorien, zeilenweise untereinander geschrieben, kommen nur die mit (*) markierten Zeilen zur Ausführung.
ks=4
; wenn man ks=1
gesetzt hat, gehört die
Kategorienummer mit zum Arbeitstext, bei ks=0
auch noch das Zeichen '#' .)
bn
oder ik,x
, oder ein y-Befehl kam vor, dann wird die Umcodierung schon vorher ausgeführt, weil bei der Umcodierung Zeichen
wegfallen oder hinzukommen können und die Länge sich dadurch verändert.)
ke
(= Kategorie-Ende) ausgegeben
(==> Handbuch Kap. 10.2.5), falls er definiert wurde. (Will man das im Einzelfall verhindern, muß man die Angabe #zz
0
an jede Anweisungszeile hängen, hinter der kein Postfix gewünscht wird.)
pX
und pz
)
Pz
oder PX
), falls eines angegeben ist,
Wenn dies ein Sprungbefehl #+M ist, wird die Sprungmarke #-M gesucht und mit der darauf folgenden Zeile weitergemacht.
Wenn die nächste Zeile ein Endebefehl #+# ist, wird die Ausgabe abgeschlossen. Danach geht es mit dem nächsten ak-Befehl weiter (d.h. mit dem nächsten #u1), wenn es noch einen gibt.
Befehl #+- bewirkt dagegen bedingungslosen Abbruch, d.h. die Ausgabe für das aktuelle #u1 unterbleibt. Es geht mit dem nächsten #u1 weiter.
Diesen Ablauf macht man sich am besten zunächst immer wieder an konkreten Beispielen bewußt, bis man die ganze Logik "verinnerlicht" hat.
Die Exportsprache hat eine sehr knappe und mit bekannten Programmiersprachen kaum vergleichbare Struktur, die auf schnelle Verarbeitung ausgerichtet ist. Die Effizienz ist besonders wichtig für die Indexierung, die ja ebenfalls mit dieser Sprache programmiert wird.
Eine Anmerkung der Entwickler: Viele Anwender empfinden das Erlernen dieser Sprache und das Arbeiten mit ihr äußerst schwierig, das soll hier nicht verheimlicht werden. Geschätzt wird sie aber von Experten wegen ihrer Flexibilität und Leistungsfähigkeit. Diese Eigenschaften mit hoher Benutzerfreundlichkeit zu verbinden, das ist auch bei den gängigen Programmiersprachen ein Kardinalproblem.
Exportprodukte und die zugehörigen Parameterdateien lassen sich in folgende 7 Typen einteilen:
+-----------+----------------------------------------------------------------------------------------+-----------+ | Typ | Produkt | Beispiele| +-----------+----------------------------------------------------------------------------------------+-----------+ | DISPLAY | Bildschirmanzeigen, Katalogkarten. D-1.APR wird von PRESTO standardmäßig für die | D-0.APR | | | Anzeige geladen, wenn es nicht existiert, wird P1.APR genommen. | P1.APR | +-----------+----------------------------------------------------------------------------------------+-----------+ | PRINT | Ausdrucke mit Seitenumbruch, Literaturlisten, gedruckte Kataloge. Geeignet zum | P-*.APR | | | Ausdruck von sortierten Dateien (Vorbereitung mit einer Datei vom Typ SORT) | P2.APR | +-----------+----------------------------------------------------------------------------------------+-----------+ | INTERN | Selektierte Teilmengen (downloads) zum Aufbau neuer allegro-Datenbanken oder zum | I-0.APR | | | Einmischen in andere. Ausgabedatei vom Typ .cLG (Grunddatei) | PA.APR | | FORM | Formularähnliche Ausdrucke, z.B. Bestellzettel | F-0.APR | +-----------+----------------------------------------------------------------------------------------+-----------+ | SORT | sortierfähig aufbereitete Dateien, die anschließend mit ASORT sortiert und dann mit | S-*.APR | | | SRCH nochmals z.B. als gedruckte Liste (Typ PRINT) exportiert werden können. Ausgabe | PS.APR | | | erfolgt ebenfalls im allegro-Internformat (Typ .ALG), aber jede Aufnahme beginnt | | | | mit einem Sortierbegriff in Sonderkategorie #u1 | | +-----------+----------------------------------------------------------------------------------------+-----------+ | EXTERN | Dateien in anderen Formaten für Anwendungen außerhalb der allegro-Umgebung (z.B. | E-0.APR | | | Weiterbearbeitung mit Textsystemen oder sonstiger Software oder Übermittlung an | PK.APR | | | andere Katalogsysteme. | | +-----------+----------------------------------------------------------------------------------------+-----------+ | RESULT | Rechenergebnisse, Auswertungen von Dateien oder Ergebnismengen; ausbaufähig bis hin | R-0.APR | | | zu tabellarischen Auswertungen | | +-----------+----------------------------------------------------------------------------------------+-----------+ | ALPHA | Alphabetisches Register ausgewählter Kategorien, meist in Verbindung mit einer | A-0.APR | | | Listenproduktion (Typ PRINT). Erstellt wird eine sortierfähige Datei. Nach dem | | | | Sortieren mit ASORT übernehmen ALPHA2.APR und ALPHA3.APR (die beide unabhängig von | ALPHA2 | | | der Konfiguraaion sind) die Druckaufbereitung. | ALPHA3 | +-----------+----------------------------------------------------------------------------------------+-----------+ | COUNT | Ermittlung der Häufigkeit von Kategorieinhalten, z.B. Liste der vergebenen | C-0.APR | | | Schlagwörter mit Anzahl der Aufnahmen. Erstellt wird eine sortierfähige Datei. Nach | | | | dem Sortieren mit ASORT übernimmt COUNT2.APR die Druckaufbereitung. | COUNT2 | +-----------+----------------------------------------------------------------------------------------+-----------+ | INDX | Sonderfall : Suchschlüssel, die in den Index einer Datenbank einzuordnen sind. Auch | CAT.API | | | dafür ist die Exportsprache zuständig! | | +-----------+----------------------------------------------------------------------------------------+-----------+
Vorschlag: geben Sie Ihren Parameterdateien Namen, die mit dem Typbuchstaben und Bindestrich anfangen: eine Datei vom Typ EXTERN erhält einen Namen, der mit "E-" beginnt. E-0.APR ist der Prototyp dafür.
CockPit unterstützt bereits die Typen SORT und PRINT. Im Menü "Optionen" kann man je eine der vorhandenen Dateien S-*.APR und P-*.APR auswählen. Diese wird dann umkopiert auf den Namen SORT.APR bzw. PRINT.APR und bei einer nachfolgenden Listenproduktion über Menü "Routinen/exportieren" benutzt. Die Unterstützung dieser Typologie durch das CockPit wird weiterentwickelt, so daß Exportproduktionen einfacher werden.
Wenn Sie darangehen, eine eigene Export-Parameterdatei zu erstellen, können Sie sich in der Regel an eins der genannten Beispiele anlehnen. Stellen Sie also zunächst fest, zu welchem Typ Ihr Vorhaben gehört, nehmen Sie dann die zuge- hörige, oben genannte Parameterdatei als Muster (-> Handbuch 10.1, 10.4) und wählen einen geeigneten Namen.
Im Lehrbuch finden sie die kommentierten Prototypen abgedruckt. (Sie sind aber auch auf der normalen Lieferdiskette, d.h. Sie können sich auch selbst diese Dateien ausdrucken.) Diese Prototypen haben die Namen D-0.APR, P-0.APR usw. So kann man sie auch bei der Auswahl per CockPit immer sofort finden, sie stehen nämlich in ihrer jeweiligen Gruppe zwangsläufig ganz oben. Wenn die Auswahlliste erscheint und man drückt einfach nur 's' - schon erscheint die Gruppe der Dateien vom Typ Sort, und der Leuchtbalken steht auf S-0.APR. <Enter> betätigen, und man hat die Wahl, diese Datei anzusehen, zu bearbeiten, oder eine eigene Version als Kopie davon zu erstellen.
Führen Sie vom CockPit aus die hier angegebenen Schritte hintereinander aus, dann haben Sie ein einfaches Beispiel für eine neue Parameterdatei - hier vom Typ Extern -, die aber auch für die Bildschirmanzeige verwendbar ist.
Die Parameterdatei E-0.APR vom Programmverzeichnis wird genommen, eine Kopie unter dem Namen E-SIMPEL.APR wird gemacht und diese zur Bearbeitung vorgelegt.
[Man wählt statt dessen z.B. D-0.APR, wenn man eine neue Anzeige-Parameterdatei machen will.]
Die fett gedruckten Teile stellen die Änderungen dar, wobei die Kommentare nicht berücksichtigt sind.
Ausgabe mit Feldbenennungen und Einrückung von Folgezeilen pn="Export mit Feldbenennungen" --------------------- Grundparameter -------------------- zl=72 Zeilenlänge zi=11 11 Zeichen Einrückung bei Folgezeilen zm=0 kein Seitenumbruch ae=13 10 1 Zeilenvorschub am Aufnahme-Ende fl=0 fortlaufende Ausgabe (kein Karten- oder Seitenumbruch) ks=4 Startpos. 4 (= erstes Textzeichen, d.h. Kategorienummer wird nicht mit abgedruckt; ks=0 setzen, wenn mit Kategorienummer gedruckt werden soll) ke=C &0 Kategorie-Ende: C = Zeilenvorschub, &0 = Sprung auf Zeilenanfang --------------------- Kategorieliste -------------------- Wenn man die Breite der Feldbezeichnungen ändert, sollte man auch die Einrückung (zi=11, siehe oben) anpassen #20 "Titel: " wenn die Zeile länger wird als 72 Zeichen, wird sie umgebrochen, dann erfolgt Einrückung um 11 Zeichen! #40 "Verfasser: " beginnt auf neuer Zeile, denn ke wird ausgeführt #74 "Ersch.Ort: " #zz 0 (hier soll ke entfallen: #zz 0 heißt "kein Postfix") #76 ": " (#76 wird hierdurch mit ": " an #74 angehängt) #75 "Verlag: " Die nächsten drei Zeilen beginnen wegen des #87 "ISBN: " automatisch ausgeführten ke-Befehls jeweils wieder auf #90 "Signatur: " neuer Zeile und am Zeilenanfang
F2 F2 F2 [Liste der .APR-Dateien erscheint] '+' vor E-SIMPEL.APR setzen, <Enter>
Anschließend sieht sofort die Titelanzeige ganz anders aus als vorher, nämlich nun so, wie es die neue Parameter- datei E-SIMPEL.APR vorschreibt.
(Siehe auch die Bemerkungen zum Testen von Parameterdateien im nächsten Abschnitt.)
So testet man eine Export-Parameterdatei:
Für Experten: die "Allers'sche Testschleife"
Dies ist eine noch schnellere und sehr elegante Testmethode, benannt nach ihrem Erfinder Heinrich Allers von der UB Oldenburg.
Man stellt eine Batchdatei TESTAPR.BAT nach folgendem Schema zusammen:
:START Testschleife für Kontrolle am Bildschirm presto -f1 -a3 -n1 -S -dC:\ALLEGRO\KATALOG -p %1 pause x %1.APR goto STARTund gibt dann den Befehl
testapr xyz
In dieser schlichten Endlosschleife wird jeweils die Datenbank gestartet, und zwar mit XYZ.APR als Anzeige-Parameterdatei (statt
der standardmäßigen P1.APR), so daß man diese dann gar nicht erst mit F2 ... laden muß.
Verläßt man die Datenbank, wird der Editor aufgerufen, um die Parameterdatei sofort wieder bearbeiten zu
können. Der Befehl pause
ermöglicht einen Abbruch der Endlosschleife mit Ctrl+c.
Wenn man in den EDITORzustand geht, kann man mit Befehl #a die Anwendervariablen kontrollieren.
Die Testschleife läßt sich universell für alle .APR-Dateien verwenden. Der Aufruf testapr
abc
ermöglicht jederzeit den Test jeder beliebigen ABC.APR-Datei.
Soll der Test mit SRCH laufen, ersetzt man den PRESTO-Aufruf durch einen SRCH-Aufruf:
:START Testschleife für Listenproduktion srch -f4 -n1 -dC:\ALLEGRO\KATALOG -e %1/testlist -s0 -m0 -v0 v testlist (Ergebnisdatei testlist anzeigen) pause x %1.APR goto STARTDurch
v testlist
wird dann die Ergebnisdatei angezeigt, bevor man wieder in die Bearbeitung der
Parameterdatei kommt. Ein Trick: mit Druck auf 'x' kann man jederzeit den SRCH-Lauf abbrechen. Man kommt in den EDITOR
und kann sich die zuletzt geladene Aufnahme ansehen. Mit Befehl #Da sieht man das Exportergebnis auf dem Bildschirm. Mit dem
Befehl #a kann man evtl. vorhandene Anwendervariablen kontrollieren, die von den Exportparametern erzeugt werden! Mit #e bricht
man den SRCH-Lauf ab und die Schleife geht weiter.
So testet man eine Index-Parameterdatei:
Das ist sehr einfach; man braucht auf keinen Fall erst neu zu indexieren, sondern:
:START presto -f1 -a3 -n1 -S -dC:\ALLEGRO\KATALOG (Datenbank wird aufgerufen, Test mit F7) pause x KAT.API (Parameterdatei bearbeiten) goto STARTDieses kleine Programm schaltet ständig zwischen der Benutzung der Datenbank und der Bearbeitung der KAT.API hin und her. Man steigt aus der Schleife aus, indem man nach Verlassen der Datenbank <Strg+c> drückt.
Man muß auch hierfür vorher die Parameterdateien umbenennen, wie oben unter 1. beschrieben, denn PRESTO setzt voraus, daß der Name der Index-Parameterdatei identisch mit dem der Datenbank ist. Meistens wird man aber Veränderungen an der schon existierenden Parameterdatei einer Datenbank testen wollen, und dann entfällt dieser Schritt.
Zum Verständnis der Beispiel-Parameterdateien hier noch ein paar Hinweise:
Diese Regeln sind deshalb so einfach gestaltet, damit man zu freizügigem Kommentieren ermuntert wird. ABER: Man muß aufpassen, in einer Befehlszeile nicht aus Versehen oder wegen besserer Übersichtlichkeit zwei Leerzeichen statt einem zwischen die Manipulationsbefehle zu setzen.
Nur zwischen Anführungszeichen gilt die Regel nicht! Sonst könnte man keine Textelemente einbauen, die mehr als ein Leerzeichen hintereinander enthalten.