allegro-Dateistruktur

.ALD/ALG/ADT/LOG

Eine Datenbankdatei vom Typ .ALD besteht aus einer Folge von Datensätzen, die alle folgendermaßen aussehen:

1xxxx00 6543210
20 Was können wir wissen?0
31 Evolutionäre Erkenntnistheorie0
40 Vollmer, Gerhard0
74 Stuttgart0
75 Hirzel0
76 19850
77 Bd.1.2.0

201 1=Bd. 10
20 ¬Die¬ Natur der Erkenntnis : Beiträge zur Evolutionären Erkenntnisthe orie025 Mit einem Geleitw. v. Konrad Lorenz0
77 337 S.0
87 3-7776-0403-80
90 2647-36110

201 2=Bd. 20
20 ¬Die¬ Erkenntnis der Natur : Beiträge zur modernen Naturphilosophie0
77  350 S.0
87 3-7776-0404-60
90 2650-97050
 13 10

(So sehen die Daten auch in einer Grunddatei aus (Typ .ALG), nur ohne die Satznummer xxxx)

Ganz korrekt ist dieser Eindruck nicht, denn es gibt in dieser Datei keine Zeilentrennungen: alles steht in einer langen Zeichenfolge hintereinander, nur ganz am Ende stehen die ASCII-Codes 13 10 (in Textdateien sind das die Codes für den Zeilenvorschub). 
Die Codes
 
0, 1 und 2 sind Steuerzeichen, und zwar die ASCII-Codes 00, 01 und 02, nicht die Ziffern '0', '1' und '2'. 
Ganz am Anfang des Satzes steht seine interne Satznummer
 
xxxx , bestehend aus 4 Bytes, das höchstwertige zuerst. (Der Satz mit der internen Nummer 1 - eine Satznr. 0 gibt es nicht - hat daher dort die Folge 
 0001 ). 

Die Steuerzeichen bedeuten: 0 = Feldende, 1 = Satzanfang , 2 = Untersatz-Anfang der Stufe 1. 
Außerdem gibt es 8 für gelöschte und 9 für gesperrte Sätze, anstelle der 
1 am Satzanfang.

Der "Grunddatei"-Typ .ALG unterscheidet sich von .ALD nur dadurch, daß die Satznummer xxxx fehlt, hinter der 1 kommt sofort der Text. Gelöschte und gesperrte Sätze gibt es in .ALG nicht, denn auf solche Dateien wird nicht online zugegriffen.

Auch der Sicherungsdatei-Typ .LOG unterscheidet sich von .ALD nur wenig: 
Neue Sätze beginnen mit Code 8 statt 1 und haben statt der internen Satznummer die Nummer der .ALD-Datei, in die sie gespeichert wurden, ebenfalls in 4 Bytes verschlüsselt. Also 
80002 für einen Neusatz, der in die Datei 2 gespeichert wurde. (Wenn die LOG-Datei in die Sicherungskopie eingespeist werden soll, weiß das Programm dann, in welche Datei der Satz gehört, und er bekommt automatisch dieselbe Nummer, die er beim Erfassen erhalten hatte, 

Ds Beispiel oben ist ein hierarchischer Satz mit zwei Untersätzen: der Hauptsatz beginnt, wie jeder Datensatz, mit dem Code 1 , jeder Untersatz mit 2.  
Ein hierarchischer Untersatz kann alle Felder haben, die auch ein Hauptsatz haben kann. Es kann weitere Unterstufen geben, die dann mit
 
302 ...,403 ... etc. beginnen. Empfohlen wird so etwas nicht, denn der Umgang damit ist schwierig. Auch die Stufe 
2wurde zugunsten verknüpfter Sätze weitgehend aufgegeben. Die Möglichkeit besteht zwar weiter, aber Untersätze wie oben, mit 2 beginnend, haben die meisten Datenbanken nicht.

Felder, die nicht besetzt sind, treten einfach gar nicht auf, es gibt dafür keinerlei Platzhalter! Deshalb werden die Feldnummern (engl. "tags") benötigt: Jedes Feld begimmt mit einem solchen, intern ohne # davor, und endet mit dem Code 0  (nicht der Ziffer 0, die hat den Dezimalcode 48).

Dateityp .ADT
Derselbe Satz kann für die neuere Software (acon, a99/alcarta) auch so aussehen: (nur zum externen Bearbeiten und zum Einlesen aus einer Datei; innerhalb der Datenbankdatei bleibt es bei der oben gezeigten Struktur.)

#00 654321 
#20 Was können wir wissen? 
#31 Evolutionäre Erkenntnistheorie 
#40 Vollmer, Gerhard 
#74 Stuttgart 
#75 Hirzel 
#76 1985 #77 Bd.1.2. 
#01 1=Bd. 1 
#20 ¬Die¬ Natur der Erkenntnis : Beiträge zur Evolutionären 
 Erkenntnistheorie 
#25 Mit einem Geleitw. v. Konrad Lorenz 
#77 337 S. 
#87 3‑7776‑0403‑8 
#90 2647‑3611 
#01 2=Bd. 2 
#20 ¬Die¬ Erkenntnis der Natur : Beiträge zur modernen Naturphilosophie 
#77 350 S. 
#87 3‑7776‑0404‑6 
#90 2650‑9705 

Dateien mit dieser Struktur, sog. "Externdateien", müssen den Typ .ADT haben, damit die Programme sie erkennen.

Keine Leerzeilen innerhalb eines Satzes!

Jedes Datenfeld muß hier auf einer neuen Zeile, mit einem '#' auf der ersten Position, beginnen. Zeilenumbrüche sind nicht nötig, d.h. jedes Feld kann eine einzige lange Zeile sein. Wenn jedoch Umbrüche in einem Feld auftreten, müssen diese bei einem Leerzeichen stattfinden, und die Folgezeile muß mit diesem Leerzeichen beginnen. Wenn man diese Form mit anderer Soft­ware aus Fremddaten herstellen kann, kann das allegro-System sie einlesen. Die Zeichencodes müssen den in der Datenbank verwendeten entsprechen.

Die Programme merken beim Einlesen selbst, und zwar an den Feldern #00 und #01, wo ein Satz bzw. Untersatz beginnt. (In einem anderen Schema, wie z.B.  $P.CFG, sind dies andere Nummern, z.B. #0100 und #70XX.) . Nur wenn es keine solchen Felder gibt, sind zwei Sätze durch eine Leerzeile zu trennen, sonst bemerkt das Programm die Trennung nicht.