11 Register = 1 Index ?

Roland Henkel rhenkel at snafu.de
Fr Aug 10 23:09:45 CEST 2001


Hallo Herrr Goldt,

So in Kürze läßt sich Ihre Frage leider nicht erschöpfend beantworten.
Welche Parameterdatei haben Sie denn als Muster? Etwa die von vd17? :-)

Prinzipiell läßt sich vielleicht das Verfahren so schildern:

1. Sie definieren am Anfang Ihrer .xpi - Parameterdatei

eine ak-Sprungliste

ak=xx+a yy+b zz+c

wobei xx, yy, zz Kategorien sind, aus denen Sie irgendwelche Indexschlüssel
bilden wollen.

a,b und c sind Sprungmarken, die zu der Stelle führen, an der sie den
jeweiligen Schlüssel erstellen.

2.

an diesen Stellen, also z.B. a

#-a
geben Sie das an, was mit der Kategorie gemacht werden soll. Dabei ist es
nützlich zu wissen, daß sich in der Kategorie u1 immer der Inhalt der
Kategorie befindet, die in dem jeweiligen ak-Befahl angegeben ist.

Hier steht Ihnen nun der ganze Reichtum der Exportparameterbefehle zur
Verfügung, wovon sich eine gute Übersicht im Handbuch S. 192 oder ähnlich
(ich habe eben nur das Handbuch der Version 15 zur Hand) befindet. Es ist
eine echt biliothekarische Art der Zeichenkettenverarbeitung :-)

In welches Register Ihr Schlüssel ausgegeben wird, bestimmt der - allem
anderen vorangehende - Befehl |i, wobei i, cum grano salis, 1..9, : und ;
(für 10 und 11) sein kann. Zu lesen ist das unter dem Kapitel
"Spezialparameter für die Indexproduktion".

Nehmen wir einmal an, Sie haben in Kat. 20 einen Namen, etwa "Sven Goldt" zu
stehen und wollen daraus den Schlüssel "Goldt, Sven Goldt" bilden, der in
Register 3 landen soll.

dann würde also oben ak=20+a

und bei a etwa folgendes stehen

#-a
#u1 p"|3" e2
#u1 b" "
#u1 p", "
#+#

In der ersten Zeile geben Sie durch den Präfix (bitte im Handbuch nachlesen)
|3 das Register an, in das der zu bildende Schlüssel gelangen soll. e2 dient
dazu, die Ausgabe auf zwei Zeichen zu verkürzen, so daß wirklich nur |3
gebildet wird.

In der nächsten Zeile sagen Sie dann: bilde aus dem Inhalt der Kat. u1 ab
Leerzeichen einen Arbeitstext und gib ihn aus. Das ist dann das "Goldt"

Drittens sagen Sie: Nimm den Inhalt der Kategorie u1 (in diesem Abschnitt
also die 20) und stelle ihm ein Komma und ein Spatium voran. Gib den so
erhaltenden Text ", Sven Goldt" aus.

#+# beendet die Schlüsselbildung für diesen Abschnitt, wobei  statt +# ("+"
bezeichnen Sprünge, "-" Sprungadressen)  auch jede sonst nicht vergebene
Sprungmarke also auch +b stehen könnte. +# hat sich eben nur eingebürgert.

In der Weise bilden Sie auch die anderen, von Ihnen benötigten Schlüssel.
Sie sind nicht auf u1 beschränkt, sondern können jede Kategorie des
aktuellen Datensatzes in die Schlüsselbildung einbeziehen.

Manchmal braucht man für sich wiederholende Operationen Unterprogramme
die mit
#(X

#)X

eingerahmt und mit

#u1 >X

angesprungen werden.

Den ganzen Ablauf können Sie sich am besten so vorstellen, daß die Sätze der
Datenbank sequentiell geladen werden, die ak-Befehle und die zugehörigen
Abschnitte abgearbeitet  und die gebildeten Schlüssel in die Indexdatei
ausgegeben werden.

Da sie nicht zwangsläufig mit u1 arbeiten müssen, sondern auch echte
Kategorienummern verwenden können

also etwa

#20 b" "
lassen sich in Abhängigkeit davon, ob die Kategorie im aktuellen Datensatz
belegt ist oder nicht, bedingte Anweisungen formulieren.

ak=20+a würde bei unbelegter Kat. 20 nichts bewirken, es würde also auch der
zugehörige Abschnitt nicht angesprungen werden.

Tauchen nicht belegte Kategorien im Abschnitt auf,
also etwa
#-a
#20 ...
 würde der entsprechende Befehl nicht ausgeführt werden.

Dies ist alles nur in großen Zügen. Schließlich möchte ich Ihnen ja nicht
das Abenteuer des Handbuchstudiums verderben.

Vielleicht hilft es aber ein Stück weiter.

Gruß
R. Henkel

----- Original Message -----
From: "Sven Goldt" <goldt at solidmedia.de>
To: "Diskussionsliste Allegro-C" <allegro at buch.biblio.etc.tu-bs.de>
Sent: Friday, August 10, 2001 10:00 PM
Subject: 11 Register = 1 Index ?


Sehr geehrte Allegro Anwender,

ich quäle mich schon eine Weile durch die Allegro Dokumentation,
aber bei dem Tempo brauche ich bestimmt noch 1 Monat um die 'einfache'
Frage beantwortet zu bekommen:
Wie definiert man ein Register bzw. erstellt ein neues Register ?

Ich habe bisher erkannt, daß bei Allegro ein Index (.adx) mehrere
(max. 11) Register enthält. Leider kann ich anhand der Beispiele und der
Doku nicht erkennen, wie man definiert, welche Kategorien in ein Register
gehören. Für mich sieht die Parameterdatei aus, als ob wahllos
Kategorien ausgegeben werden, lediglich die Überschriften für die
Register kann man angeben.

Vielleicht gibt es ja auch so etwas wie eine FAQ, wo diese Frage
schon beantwortet wird ?

Mit freundlichen Grüssen,
Sven Goldt






Mehr Informationen über die Mailingliste Allegro