[Allegro] Variablen-Lebensdauer / -gueltigketi beim Index-Lauf
Anando Eger
a.eger at aneg-dv.de
Di Dez 6 11:00:09 CET 2011
Hallo Herr Berger,
vielen Dank - das rundet mein empirisch entstandenes Bild von der
Index-Funktionsweise ab ;-)
Ich versuche mal eine Zusammenfassung (als Kochrezept):
A) Primärschlüssel _müssen_ über die erste ak-Zeile
gebildet werden.
B) Um weitestgehende Kompatibilität zu gewähleisten, muss die
Sprungmarke der ersten ak-Zeile ak=zz+@ -> #-@ sein.
C) Es gibt 2(3?) Gruppen von ak-Zeilen, die sich hinsichtlich
des Zeitpunktes ihrer Abarbeitung unterscheiden (können):
C1: erste ak-Zeile
C2: alle weiteren ak-Zeilen
C3: (in Reihenfolge ihres Auftretens in der ?pi-Datei abgearbeitete
ak-Zeilen bis zur Produktion des ersten gültigen Schlüssels)
D) Es gibt vordefinierte Sprungmarken, die abhängig von der
gewählten Index-Funktion (oder Funktionen anderer Teilprogramme)
direkt angesprungen und für Schlüsselbildungen verwendet werden:
D1: #-@ Primärschlüssel
D2: #-0 Kurztitel
D3: #-/ Restriktionen
D4: #-. SR-Schlüssel
D5: alle anderen ausser #-1 ... #-;
Für die Verwendung von Variablen ergibt sich:
Die Initialisierung _UND_ folgende Verwendung einer Variable sollte
immer innerhalb von durch ak-Zeilengruppe (C) _UND_ Srungmarken-
gruppe (D) definierten und zusammengefassten Indexabschnitts-
gruppen erfolgen.
Dabei sollte für die Initialisierung der erste, möglichst über
ak=zz angesprungene, Abschnitt einer Gruppe verwendet werden.
Oder für ein Beispiel formuliert:
- Variablen, die für die Kurztitelerzeugung verwendet werden,
muss man auch im #-0 -Abschnitt löschen
Ist das soweit vollständig oder habe ich noch etwas vergessen?
Viele Grüße
Anando Eger
On 5 Dec 2011 at 13:44, Thomas Berger wrote:
> Lieber Herr Eger, liebe Liste,
>
> > Unklar ist mir: werden bei - at 1 alle ak-Zeilen abgearbeitet, bis sich
> > der erste Schlüssel ergibt oder wird nur eine bestimmte Sprungmarke
> > angenommen?
>
> Ungefaehr ersteres: Es werden solange die Sprungmarken abgearbeitet,
> bis mindestens ein Schluessel gebildet wurde, es werden aber alle bei
> dieser Marke gebildeten Schluesseln in den Index gesetzt.
>
> Bei - at 2 hingegen wird die erste Sprungmarke stur uebersprungen
> (also nicht alles abgearbeitet und der erste gebildete unterdrueckt).
> Insofern kann es zu Ueberschneidungen kommen, seit vielen Jahren werden
> aber identische Schluessel in einen bestehenden Index ohne graessliche
> Fehlermeldungen einsortiert.
>
> Die Sprungmarke #-@ ist schon laengst nicht mehr (fuer den Index)
> verdrahtet, PRESTO hat aber gewisse Navigationsfunktionen daran
> aufgehaengt. Ich nutz(t)e das gerne, indem ich einen fuer diese
> Navigation optimierten Abschnitt in den Indexparametern mitfuehre,
> der aber bewusst nicht durch ak-Zeilen angesteuert wird (die benoetigten
> Schluessel werden anderswo gebildet, der Abschnitt #-@ kann dann
> gemaechlich Alternativen testen und irgendetwas navigatorisch
> passendes ausspucken)
>
>
> > Weiter unklar:
> >
> > Wird bei Index -fi auch der Abschnitt #-0 durchlaufen? (dieser ist ja
> > explizit für die Kurztitelerstellung vorgesehen)
> > Wenn nicht, dann sind natürlich dort stehende Variablensetzungen oder
> > -Löschungen unwirksam...
>
> Bei Index -fi wird alles gemacht, wie bei Index -f7, aber bei den
> Spezialfunktionen -fs/-fx (Kurztitelliste / Restriktionentabelle isoliert
> wiederherstellen) muss man darauf achten: In cat.api erfolgen die Haupt-
> Initialisierungen nun gerade bei #-0, aber bei #-/ definitiv nicht, daher
> Vorsicht, wenn man dort auf ein aufwendig vorbereitetes Erscheinungsjahr in
> einer Anwendervariablen zurueckgreifen will
>
>
> > Wäre es sinnvoll, die erste ak-Zeile extra für alle Variablen-Setzungen
> > zu reservieren (z.B. ak=zz+? und dort keine Schlüssel zu erzeugen), oder
> > kollidiert das mit irgendwelchen anderen Mechanismen?
>
> Die erste: Das waere fatal, weil es dann nicht zum Zuge kommt, wenn man
> es braucht.
>
> Wichtig sind vor allem Variablen-Loeschungen, am besten alles was vorkommt
> im Rahmen einer ak=zz+... -Konstruktion loeschen, die darf aber gerade
> nicht die erste sein, sollte aber moeglichst vor allen anderen aufgerufen
> waeren, optimal also, wenn es die zweite ist...
>
> viele Gruesse
> Thomas Berger
>
Mehr Informationen über die Mailingliste Allegro