allegro
Hintergründe
Warum ist das
alles so? Muss
man wissen, was
dahinter steckt? Ist nicht eine Software einfach out, die nicht alle Funktionen intuitiv erfassbar und durch wenige Mausklicks erreichbar macht, und für die man sogar manchmal noch ein Systemhandbuch benötigt? Man muss
wohl nüchtern feststellen, dass komplexe Werkzeuge
ohne Kenntnisse und
ohne Einarbeitung nicht angemessen genutzt werden können. Dies
gilt
auch für Windows im Allgemeinen, für Word und Excel
im Besonderen, auch
wenn es nicht jedem bewusst wird und die Industrie diese
Erkenntnis
nicht fördert. Aber das ist hier nicht das Thema. Zuerst
eine allgemeine Bemerkung.
Bibliotheken sammeln und bewahren das aufgezeichnete Wissen der Welt
aus allen Zeiten
und Regionen und zu allen Themen und machen es verfügbar. Zu
erwarten,
das
könne ganz einfach sein oder eine Maschine könne es
fast vollständig
erledigen, ist naiv. Und wer die Mühe scheut, sich Kenntnisse
anzueignen, wer lieber mit einer Black Box arbeiten will, kann kein
mündiger Anwender werden, sondern wird abhängig
bleiben und die
Software (jede Software) nur zu einem Bruchteil nutzen können.
Er lebt
sogar gefährlich, denn ein Minimum an Kenntnissen
über Daten und Dateien muss einfach jeder haben, der
einem Computer
irgendetwas Wichtiges anvertraut. Was Daten und Dateien eigentlich
genau sind, können wir in diesem Text nicht von Grund auf
vermitteln!
Wer sich da unsicher ist, sollte unbedingt zu einem
einschlägigen
Lehrbuch greifen, z.B. so etwas wie "PC für Dummies" (gar kein
schlechtes oder albernes Buch übrigens). In diesem
Text wird ein Versuch gemacht, die datentechnischen Grundlagen von allegro-C
in neuer
Weise
zu vermitteln. Wer bereits als "Nur-Anwender" mit dem System arbeitet,
hat
sicher dabei den einen oder anderen Aha-Effekt, aber auch
Systemverwalter, die nur mit anderen Datenbanken vertraut sind und allegro als
exotisch empfinden,
können hoffentlich profitieren. Zielgruppe
dieses
Textes sind ungefähr
alle, denen das Wort "Parametrierung" noch nicht viel sagt. Nicht alles
wird "ankommen" oder "hängen bleiben", aber wer wird das bei
solcher
Materie erwarten. Auch wenn die Windows-Programme sehr viele Funktionen
an der Oberfläche auf Mausklicks reduzieren, ist ein Wissen um
einige
Hintergründe immer noch sinnvoll und nützlich. Wer
allerdings noch unsicher ist, was denn Daten
wirklich
sind und aus was Dateien eigentlich bestehen, und
was für
Dateien
es im allegro-System gibt, für den gibt es
noch eine voraussetzungsarme
Einführung, die man vorher
lesen
sollte.
Sonst wäre
es viel leichter, darüber zu reden. Aber man
sieht sie doch auf dem Bildschirm? Da sieht man nur Leuchtspuren eines
kompliziert herumschwirrenden Elektronenstrahls, weiter nichts,
hervorgerufen durch den Ablauf von Programmen. Das sind
nicht
die Daten. Das Bild,
das man auf dem Schirm erblickt, das
ist also nicht die Datenbank.
Das Bild wird
gezeichnet von einem Programm, das auf die Datenbank zugreift. Das Bild
auf dem Windows-Schirm (Programme a99
oder alcarta)
sieht ganz anders aus als das DOS-Bild (Programm PRESTO;
wählen Sie
einmal den Menüpunkt "Datei / DOS-Programm", wenn Sie es noch
nie
gesehen haben). Hier
ein Beispiel, wie ein
Datensatz auf dem dem Katalognutzer erscheinen könnte:
Schulz,
Klaus-Peter:
Signatur:
RM 31
Kurt
Tucholsky in Selbstzeugnissen und Bilddokumenten
/
Klaus-Peter
Schulz. - 36.-43. Tsd.
Reinbek : Rowohlt, 1964. - 184 S.
(Rowohlts
Monographien ; 31)
Pers.Schlagw.: Tucholsky,
Kurt Die
DOS-Version und die Windows-Version, das sind jedoch nicht
zwei
verschiedene Datenbanken! Es sind nur zwei verschienene Programme,
die auf den Bildschirmen gleichzeitig
unterschiedliche Bilder vom selben Objekt (von denselben Daten)
erscheinen
lassen. Noch
anders
gesagt: die Daten sind nicht irgendwie im
Programm
gespeichert
oder damit fest verbunden (auch solche Ansichten hat man schon
gehört!),
sie stehen in Dateien, die von den Programmen völlig getrennt
sind.
Eben
deshalb können ja verschiedene Programme gleichzeitig
zugreifen.
Deshalb
kann man auch eine neuere Programmversion einfach über die
alte
kopieren,
ohne den Daten zu schaden. Was
ist nun
aber wirklich gespeichert in den Dateien der Datenbank? Im Fall unseres
Beispiels sieht das ganz anders aus als das Bild oben: 20 Kurt
Tucholsky
in Selbstzeugnissen und Bilddokumenten 40
Schulz,
Klaus-Peter 31p_tucho 71
36.-43. Tsd. 74
Reinbek 75
Rowohlt 76 1964
77 184
S. 85
Rowohlts
Monographien ; 31 90 RM
31 Das ist ein Datensatz im
internen "Format". Mehr wurde nicht eingegeben und mehr steht da nicht
drin, auch unter Windows nicht. Das ist also nichts weiter als eine
Zeichenfolge, die durch einige Nummern unterteilt ist. Diesen Datensatz
können Sie in der Demo-Datenbank besichtigen. Eine Besonderheit: Im Feld 31p (Personenschlagwort) steht "_tucho". Das ist eine Verknüpfung zu einem Namensstammsatz, in dem der tatsächliche Name steht: "Tucholsky, Kurt". Statt des Kürzels
"_tucho" könnte da auch eine
Nummer stehen. Unten im
Anzeigebild sieht man, wie das Programm diesen Namen automatisch
einblenden kann; gespeichert ist er nur im Stammsatz. Ein
Datensatz ist keine Datei,
sondern er steckt (bei allegro) zusammen mit vielen
anderen
Datensätzen in
einer Datei - so wie ein Katalogzettel mit
vielen
anderen in einer Schublade oder ein Formular mit vielen anderen in
einem Ordner. Die Schublade oder der Ordner, das
ist
die Datei.
(Im Englischen ist das leichter zu verstehen: das Wort "file" bedeutet
sowohl "Datei" wie auch "Ordner", aber auch immer noch "Kartei".) Man sieht vom Datensatz aber eben normalerweise andere Bilder, siehe das Beispiel oben. Oder man
sieht z.B. eine Zeile im Register: 1 kommunale
sozialpolitik in vergleichender perspektive Auch dies
machen alles nur die Programme. Diese Bilder sehen sehr viel anders aus
als der
Datensatz mit den Nummern, deshalb fragt man sich am Anfang doch, wo
sie
herkommen. Wie "weiß" das Programm, dass bei der
Nummer 85 ein
Serientitel
steht? Wie weiß es, wo dieser in den anderen Bildern
hingehört, und dass
er in Klammern gehört - denn z.B. die Klammern stehen gar
nicht drin im
Datensatz?
Wie kommen die Eintragungen in den Registern zustande? Sind diese
Einzelheiten
alle fest in ins Programm eingebaut? Keineswegs, und das ist jetzt sehr
wichtig: Die Programme, ob DOS oder
Windows, "wissen"
solche Dinge
überhaupt nicht. Die Programme können aber gewisse Vorschriften
ausführen, in denen z.B. steht, dass die Nummer 85
"Serientitel"
bedeutet und dass dieser im Anschluss an die Nummer
77 (die bedeutet
"Umfangsangabe") ausgegeben werden muss, auf neuer Zeile und
in runden
Klammern. Wir müssen
daher drei verschiedene Dinge auseinanderhalten: 1.
Die
eingegebenen Daten
(Datensätze in
Form von Listen mit numerierten Angaben, siehe oben) 2.
Die
Programme, die darauf zugreifen und
verschiedenste Bilder davon
anzeigen: mal mit, mal ohne die Nummern! Auch ein Register ist nur ein
Bild, das Teile von Datensätzen zeigt, und nicht die
Sätze selbst. 3.
Vorschriften,
die den Programmen sagen, wie sie das alles machen
sollen.
Weil sie das von selber nicht können. Die
Programme sind also neutral. Mit den nackten Datensätzen
allein können
die Programme nichts anfangen, sie brauchen die Vorschriften dazu, und
jede Datenbank kann ihre eigenen Vorschriften haben. So ist es
möglich, dass mit denselben allegro-Programmen
Datenbanken
betrieben werden, die ganz verschieden aussehen, bis hin zu Daten mit
chinesischen und japanischen Schriftzeichen, obwohl die allegro-Entwickler
von diesen Sprachen nichts
verstehen. Die Vorschriften sind das wahre Geheimnis des Systems, das wichtigste Konzept von allegro : erst dadurch wird es flexibel. Für
Systemleute:
hinter oder
unter allegro steckt kein
relationales Datenbanksystem,
sondern es ist ein
eigenes,
andersartiges Konzept. Jedes Datenbanksystem verfügt
über ein System von
Vorschriften für den Umgang mit konkreten Daten, nur werden
sie nie
"Vorschriften" genannt, auch bei allegro nicht. Man
findet die
verschiedensten Namen, z.B. "Syntaxtabellen" oder "Skripte" oder
"Schablonen" oder "Parameter". Nur nicht "Vorschriften", obwohl das ein
genau passendes Wort wäre. Eine allegro-Datenbank
braucht mehrere Arten von Vorschriften: 1.
Für die Datenstruktur
: die Konfiguration, das ist eine Datei vom Typ
CFG; darin
steht hauptsächlich, welche Felder
ein Datensatz haben kann. Die meisten Anwender benutzen die
Konfigurationsdatei A.CFG (oder $A.CFG). In der
Konfiguration steht aber nichts über die Register
oder über die Bildschirmanzeige, das machen andere
Vorschriften: Die
anderen
drei Arten von Vorschriften müssen natürlich auf die
Konfiguration
abgestimmt
sein: 2.
Datenausgabe: solche
Vorschriften heißen Exportparameter. Dazu
gehört auch die Bildschirmanzeigevon
Datensätzen, wie oben zu sehen.
Solche Dateien sind vom Typ .APR, wenn man A.CFG verwendet, vom Typ
.BPR, wenn man B.CFG verwendet, usw. Will man eine anders gestaltete
Anzeige, muss man sich also um die Anzeigeparameter
kümmern. 3.
Register: Vorschriften für den
Index heißen Indexparameter
und stehen in einer Datei vom Typ .API (bzw. .BPI, wenn man B.CFG
verwendet, usw.) Darin steht, was für Register die Datenbank
haben
soll, welche Datenfelder indexiert werden sollen, und alle
Einzelheiten, wie das gemacht werden soll. Will man anders gestaltete
Register, muss man sich also um die Indexparameter
kümmern. 4.
Fremddaten-Umwandlung: Für jedes Fremdformat
braucht man eine
eigene Vorschrift, die man Importparameter nennt.
Das sind
Dateien vom Typ .AIM (bzw. .BIM, wenn man B.CFG verwendet, usw.) Das ist
doch alles viel zu abstrakt? Dann müssen
wir uns eine
Abschweifung leisten. Vielleicht wird es mit einem Denkmodell klarer,
das ohne Computer auskommt. Das Modell arbeitet mit besonderen
Formularen. Eine leeres Formular sieht so aus: Feld
W Inhalt
____________
___
____________________________
____________
___
____________________________
____________
___
____________________________
____________
___
____________________________
____________
___
____________________________
____________
___
____________________________
____________
___
____________________________
____________
___
____________________________
In die
Spalte links trägt man Feldbezeichnungen
ein, in die
ganz schmale Spalte kommt eine Wiederholungsziffer,
wenn ein Feld mehrfach auftritt, um es von anderen, gleichnamigen
Feldern zu unterscheiden. Man
beachte: vorgedruckt ist nichts, und zwar damit man die Felder alle
ausnutzen
kann. Ein Formular mit fest vorgegebenen Feldern hätte in der
Praxis
immer
irgendwelche leeren Felder, weil nicht jedes Datenfeld jedesmal
gebraucht
wird, viele sogar sehr selten! Ein ausgefülltes Formular sieht
so aus:
(Mehrfachbelegung kommt hier nur bei "Verf." vor) IdNr
123456
Für
Systemleute:
hier liegt ein
ganz großer Unterschied zu relationalen Datenbanken; die
haben feste,
vorgedruckte Formulare, Tabellen mit vielen Spalten. Abgesehen vom
Platzverbrauch hat man dabei immer große Probleme mit
Feldlängen, mit selten belegten Feldern, Mehrfachfeldern,
interner
Struktur von Feldern u.a., aber auch mit der Indexierung von Feldbestandteilen
und Stichwörtern. Für allegro
alles kein Thema, denn es
ist von Grund auf anders konzipiert. Ein
anderes
Formular könnte so aussehen: (hier ist "Schlagwort" dreifach
belegt) IdNr.
987654
Titel
Das
Zeitalter der
Extreme : Weltgeschichte des 20. Jahrhunderts
Original
The age of extremes : The short twentieth century
1914-1991
Verf.
Hobsbawm,
Eric Übers.
Badal, Yvonne Ort
München
Verlag
Hanser
Jahr
1995
Schlagwort
Zeitgeschichte
20. Jahrhundert
Schlagwort
2
Kalter Krieg
Schlagwort
3 Weltgeschichte
Umfang
783 S.
Sign.
GE-5678 Man sieht:
es können unterschiedliche Felder auftreten, es bleibt aber
kein Feld
leer,
höchstens am unteren Ende; das kostet in der Realität
keinen
Speicherplatz.
Die Feldbezeichnungen nennen wir kurz "Kategorien".
Der
Ordnung halber müssen wir uns eine Liste der erlaubten
Kategorien
aufstellen;
ein sehr wichtiges Dokument. Aber halt!
Man merkt sehr schnell: es kostet unnötig Platz, immer die
Feldbezeichnungen
im Klartext hinzuschreiben, außerdem erschwert es die
Benutzung durch
Personen, die nicht Deutsch können. Eleganter ist es,
schlichte Nummern
zu verwenden. Dann könnte das zweite Formular so aussehen,
wenn man
z.B. 20 für "Titel", 74 für "Ort" festlegt usw.: 00 987654
20 Das Zeitalter der Extreme
: Weltgeschichte des 20. Jahrhunderts
22 The
age of extremes : The short twentieth century 1914-1991
40 Hobsbawm,
Eric 47 Badal,
Yvonne 74 München
75 Hanser
76 1995
31 Zeitgeschichte 20. Jahrhundert
312 Kalter
Krieg
313 Weltgeschichte
77 783 S.
90 GE-5678
Man hat
nun
weniger zu schreiben und braucht weniger Platz, aber keinen Verlust an
Präzision.
In unsere
Liste der erlaubten Kategorien schreiben wir die Bedeutung dieser
Nummern. Dann braucht man nur die Liste zu übersetzen, damit
anderssprachige Nutzer mit dem Katalog umgehen können. Dieser
Punkt,
nebenbei gesagt, stößt Datenbankleuten immer
besonders sauer auf,
besonders
wenn sie auf XML eingeschworen sind. Es ist aber so, dass die
Nummern,
die
man erfahrungsgemäß schnell lernt, eine unschlagbar
kurze, effiziente
Sprache
bilden, mit der sich Katalogisierer viel besser und präziser
verständigen
können als mit verbalen Bezeichnungen. Als Programmierer ist
man
ebenfalls
froh, z.B. nur #22 schreiben zu müssen als jedesmal
"UniformTitle" oder
sowas. #00
"Identifikationsnummer" #20
"Titel"▼M #30
"Nebentitel" #22
"Originaltitel
(Einheitstitel)" #31
"Schlagwort" #40
"Verfasser"▼M23 #41
"Herausgeber"▼M2 #47
"Übersetzer" #74
"Erscheinungsort" #75
"Verlag" #76
"Erscheinungsjahr" #77
"Umfangsangabe" #85
"Serie"▼M2 #90
"Signatur" ▼M23 bedeutet, es können
ein zweites und ein
drittes Feld vorkommen und in die Wiederholungsspalte muss
dann 2 bzw.
3; ein schichtes M heißt aber: keine Wiederholung
möglich
(Wiederholungszeichen dann 2,3,...., A,B,C,...). Gar keine
Angabe mit ▼M heißt aber: beliebige
Wiederholung möglich
(Beispiel ist hier #20)! Was soll
das Zeichen #? Es ist praktisch, die Nummern mit
einem
besonderen Zeichen zu markieren, damit man es in jedem Zusammenhang
sofort erkennt, wenn von diesen Nummern die Rede ist. Meistens wird
dazu das Doppelkreuz # benutzt. (Daher kommt es übrigens, dass das allegro-Logo
ein großes Doppelkreuz ist.) Warum
sollte man diese Dinge so penibel genau vorgeben? Dazu kommen wir
jetzt. Wir
stellen
uns dazu mal vor, wir hätten zwar keinen Computer, aber
dafür billiges,
fleißiges, jedoch nicht besonders intelligentes Personal. Der
ideale
Bibliotheksknecht kann lesen, abschreiben und alphanumerisch sortieren
(Zeichen für Zeichen), braucht aber vom Inhalt der
Bücher nichts zu
verstehen. Er muss nur Vorschriften ausführen
können. Diese Vorschriften
müssen einfach deshalb sehr genau sein, damit er nichts falsch
machen
kann, auch wenn er vom Sinn der Dinge nichts kapiert. Der Betrieb läuft dann so: wir schreiben selber die Formulare, aber alles andere sollen die Knechte machen. Sie sollen die Formulare schlicht in der Reihenfolge der Nummern in Ordnern (= Dateien) abheften. Zum Benutzen des Katalogs wollen wir nicht immer in den Raum wandern müssen, wo dieser steht. Die Knechte sollen uns jedes Mal diejenigen Blätter heraussuchen und bringen, die von Interesse sind. Was wir dafür nur brauchen, sind gute Register. Im Register sollen die Nummern der Blätter stehen, so dass ein Knecht dann diese Seiten holen kann.. Oder noch besser (der Mann ist ja billig): er soll die Blätter lieber drin lassen (denn sonst könnte in der Zwischenzeit jemand anders sie nicht finden, und man müsste sie jedes Mal zurücksortieren) und soll nur diejenigen Einzelheiten abschreiben, die wir dann brauchen. Wir müssen
für unsere Knechte also mindestens zwei
Vorschriften
ausarbeiten: eine für das Anlegen der Register
und eine für das
Aufschreiben der Einzelheiten, die wir jeweils
sehen wollen,
wenn wir einen Auftrag geben, etwas aus dem Katalog zu holen. Diese
Vorschriften können, weil wir das Nummernschema haben, sehr
einfach und
trotzdem präzise aussehen, d.h. wir müssen nicht
viele Worte machen.
Genügen würde eine Liste wie zum Beispiel diese: |1="Personennamen"
Das bedeutet: Register 1 hat den Titel
"Personennamen" #31.
"|3"
#31. heißt: wenn mehrere #31 vorkommen,
alle gleich behandeln #40.
"|1"
genauso geht's mit der #40 und Register 1 #47
"|1" #41.
"|1" #75
"|6" Statt
"Registervorschrift" können wir auch sagen: Indexparameter.
Die
meisten Anwender nutzen die Index-Parameterdatei CAT.API. Da steht
allerdings SEHR viel mehr drin, denn es gibt sehr viele
Sonderwünsche
für die Register. Beispielsweise soll bei Titeln der Artikel
am Anfang
wegfallen! Dazu muss in der Vorschrift stehen: #20 u
"|4"
(Das u
ist der Befehl "Artikel weglassen". Mehr dazu
siehe unten.) Und nun
zur
Vorschrift für die Titelaufschreibung, oder vornehmer: Anzeigeparameter: #40 P":
" Der Knecht
weiß, wie man diese Vorschrift lesen muss: die hier
angegebenen
Kategorien sollen in dieser Reihenfolge vom Formular abgeschrieben
werden, also #40, #20,
#22, .... Dabei soll
er noch ein paar verschlüsselte Regeln anwenden: C bedeutet
"neue
Zeile", p"`:`" heißt, dass vordas
Element die Interpunktionszeichen "`:`" zu setzen sind, und P")" bedeutet.,
es
soll eine
Klammer dahinter. (Das kleine p soll
heißen "davor", das große P
heißt
"dahinter"!) Dann kommt
für das zweite Beispiel folgendes heraus: Hobsbawm, Eric:
Das
Zeitalter der Extreme : Weltgeschichte des 20. Jahrhunderts
(übers. von
Badal, Yvonne) München
: Hanser, 1995. -
783 S. Schlagwort:
Weltgeschichte
20. Jahrhundert Signatur: GE-764
Solche
Vorschriften könnte sogar ein Gehilfe ausführen, der
überhaupt nicht
richtig lesen, sondern der nur Buchstaben und Ziffern vergleichen und
kopieren kann. (Wie z.B. ein Computer.) Solche
Vorschriften, das ist ein weiterer ganz großer Vorteil,
können leicht
geändert werden,
ohne dass man die Daten oder die Formulare ändern
muss. Warum hat
nie eine Bibliothek in dieser Weise gearbeitet? Weil menschliche
Arbeitskraft dafür eben doch immer zu teuer und zu langsam
war. Mit
Computern aber kann man genau so (aber auch kaum anders) arbeiten, denn
ihre Leistung ist konkurrenzlos billig. Und Zeichen vergleichen,
kopieren und sortieren können sie astronomisch schnell - mit
Verständnis lesen dagegen überhaupt nicht. Deshalb
sind die hübsch
einfach aussehenden Vorschriften in Wirklichkeit noch nicht
genügend
genau. Etwa die Vorschrift, die Titel ins Register 4
zu sortieren. Dabei würde der Titel "Das
Zeitalter der Extreme"
unter D landen, ziemlich weit weg von Z, wo man ihn
gewohnheitsmäßig
suchen würde. Eine Vorschrift "Artikel übergehen"
kann man für Knechte
ohne höheres Sprachverständnis aber nicht
formulieren, zumal manchmal
ein wie ein Artikel aussehendes Wort gar kein Artikel ist. Hier hilft
nur, die Daten von vornherein genauer aufzuschreiben, und zwar den
Artikel eindeutig zu kennzeichnen. Wenn man das so macht: ¬Das¬
Zeitalter der Extreme,
dann kann
weder ein Knecht noch ein Computer etwas falsch machen, wenn man ihm
sagt: was
zwischen ¬...¬ eingeschlossen ist, wird nicht
mitsortiert! In der
Kurzschrift
der Parameter sieht das dann so aus (das 'u' ist die
Anweisung,
die
Teile zwischen ¬...¬
wegzulassen): #20
e" :
" u p"|4" . Hier ist
gleich noch eine Vorschrift eingebaut: die Angabe e" : "
bedeutet: Ende
der Registerzeile bei "Spatium
Doppelpunkt
Spatium". Der Titelzusatz soll also nicht mit ins Register, nur der
Haupttitel. Diese
wenigen Überlegungen lassen erahnen, dass man die
Vorschriften für die
Register,
aber auch für die Anzeige, noch stark erweitern muss,
wenn alle
Eventualitäten berücksichtigt werden sollen. Nicht
nur bei allegro,
sondern bei jedem System, das mit Bibliotheksdaten hantiert, findet man
irgendwo
solche Vorschriften; manchmal sind sie sehr verborgen und
unzugänglich,
aber
es muss sie geben. Die Beispiele oben sind formuliert in der
sog.
Exportsprache des allegro-Systems; diese Sprache
gilt natürlich
nur für allegro. Zum
Abschluss drei Verständnisfragen, die Sie jetzt
leicht beantworten
können: Was ist zu
tun,
Hier die
Antworten:
|