[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