[Allegro] A99-Exportskripte
Thomas Berger
ThB at Gymel.com
Do Jul 21 22:27:51 CEST 2011
Hallo Herr Fischer,
>>> Der sog. "Kopfabschnitt" war ursprünglich konzipiert für Katalogkarten
>>> und hat intern einen Bereich von nur 2 Zeilen. Wenn der output länger
>>> wird, geht das leider schief. Empfehlung: An den Anfang der Parameter
>>> einen Abschnitt setzen, der nur einmal durchlaufen wird, eben vor
>>> Beginn des ersten Datensatzes.
>>> ja, das nutze ich auch. Aber beim Fußabschnitt gibt es dasselbe Problem, da funktioniert diese Methode nicht.
>>> Ließe sich das nicht etwas aufbohren?
>>>
>> Innerhalb der Exportparameter nicht, denn diese können zwar erkennen, daß
>> es sich um den ersten Satz einer Aktion handelt, nicht aber, ob es
>> der letzte ist. Dies geht läßt sich nur eine Etage höher entscheiden,
>> auf der FLEX-Ebene. Dort kann man export Foot sagen. Oder, wenn es sich
>> um einen Batch oder ein shell-script handelt, mit entsprechenden
>> Befehlen, die an die Exportdatei noch was dranhängen.
>
> Dann bin ich aber wieder am Anfang: Der mit "export Foot" ausgelöste
> Fußabschnitt hat doch dieselben Probleme wie der Kopfabschnitt.
Ich moechte darauf hinweisen, dass Kopf- und Fussabschnitte nicht
nur fuer Karteikarten, sondern fuer alle Medien gedacht sind,
bei denen unter der Regie von allegro "Zeilen" in "Seiten"
aufgeteilt werden.
Fuer die anderen Zwecke gibt es den "Endeabschnitt" genannte Mimik
bei "#- " (und noch eine PRESTO-Spezialitaet bei #-_, die ich jedoch
nie genutzt habe).
Und es ist natuerlich so, dass anders als PRESTO und SRCH die Module
a99 und acon unter Kontrolle ihrer jeweiligen Steuersprachen ggfls.
staendig Dateien schliessen und zum Anhaengen erneut oeffnen, oder
mit Parameterdateien jonglieren. Und bei heutzutage aktuellen
Exporten (RTF, XML, HTML, ...) geht es stets um *Datei*-koepfe und
Fuesse: Da darf nichts ausgelassen werden aber auch nichts gedoppelt
werden (vgl. Herrn Lehmann's notorischen Kampf gegen die Standard-
RTF-Exporte, die am Dateiende ueppigst mit "}" pfeffern, damit es
ja genug sind: Fuer standardkonforme RTF-Reader ist eine Klammer
zu viel genau so fatal wie eine zu wenig).
Es ist aber so, dass man auch mit SRCH soetwas hinbekommen konnte (und
kann), unter den besonderen Schwierigkeiten
* zl=0 (beliebige Zeilenlaenge, da die Automatik Leerzeichen unkontrollierbar
macht)
* fl=0 (also keine "Seiten" in der Ausgabe)
* tendenziell vielzeilige Datei-Koepfe und -Fuesse
ist die guenstigste Praxis, wie von Herrn Eversberg erwaehnt,
- anhand einer Anwendervariablen im Hauptteil zu erkennen, ob der
Kopf noch ausgegeben werden muss und das dann dort zu erledigen
- den Endeabschnitt zu nutzen.
Fuer a99 bzw. acon mit srch.job o.ae. dann direkt genau so nutzen, aufgepasst
werden muss aber auf folgendes (da ist dann evtl. noch Handlungsbedarf,
sobald das besser verstanden ist):
a) In einer "Sitzung" sind viele Exporte moeglich, bei einem zweiten
Export ist die wichtige Anwendervariable zur Erkennung des Falls
"Kopf muss noch" evtl. bereits belegt (betraf strenggenommen auch PRESTO).
Mangels Normierung laesst sich das nicht voellig ausschliessen (wie auch
alle moeglichen anderen Seiteneffekte), man sollte sich aber angewoehnen,
im Endeabschnitt moeglichst auch noch aufzuraeumen
b) Die 16bit-Module haben den Endeabschnitt automatisch ausgefuehrt, in
dieser Situation gab es keinen Datensatz im Arbeitsspeicher. Genau
umgekehrt lassen sie sich in a99 und acon nur dann ausloesen, wenn
ein Datensatz geladen ist (typischerweise ist es noch der letzte der
zu exportierenden Ergebnismenge), ist dies zufaellig ein hierarchischer,
erfolgen in ueblicher Manier ggfls. mehrere Durchlaeufe der Parameterdatei
(an Standard-Sprungmarken: Bug oder Feature?), das muss unterdrueckt
werden.
Bei "spezialisierten" Exporten, wo Parameterdatei und eigens darauf
abgestimmte Flex- bzw. Jobdatei zusammenwirken, sollte das aber alles
ueberhaupt kein Problem sein, da kann man ja (wenn man sich nicht mehr
anders zu helfen weiss), sogar Teile der Ausgabe in write-Anweisungen
der Flex-Datei stopfen...
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro