WordPerfect 5.1-Datei PostScript-Datei

allegro-C Logo

allegro-news Nr.43

Ausgabe 96/3, 14. Okt 1996

Universitätsbibliothek der Technischen Universität Braunschweig, Universit√§tsplatz 1, D-38106 Braunschweig, Tel. (0531)391-5011, -5026, FAX -5836

"Well, worthy Client, what's your need?
what may I serve for you to read?
Megabytes,
days and nights!
The best? The rest?
The oldest items, or the last?"
"Oh more than that, but fast!"

Neue Offenheit

Sind schwarze Kisten eigentlich erwünscht oder nicht? Einerseits will man nichts wissen müssen über die innere Struktur und Arbeitsweise einer Datenbank, sie soll also eine "Black Box" sein, andererseits soll sie "transparent" sein. Die Daten will man sehen können, klar, aber nichts als die Daten. Hineinschauen will man können aus jeder Umgebung heraus, und alles soll immer so aussehen, wie man's gerade braucht, nicht so, wie irgendeine Entwicklungsabteilung es vorgibt.

Was allegro anbetrifft, so war es nie ein richtig zugeknöpftes System. Die Exportsprache, mit der sich Daten beliebig formatiert ausgeben lassen, gehört immerhin zu den ältesten Komponenten des Systems. Die Importsprache, nötig zum Hineinschaufeln von Fremddaten in eine allegro-Datenbank, wurde ab 1987 entwickelt. So konnten Datenumwandlungen schon seit langem in vielen Richtungen stattfinden. So sehr aber die Fähigkeiten auf dem Gebiet des Konvertierens geschätzt und gerühmt werden, so häufig wird andererseits das schwierige Erlernen dieser eigenwilligen Programmiersprachen beklagt. Man konnte es hierbei nicht belassen, sollte nicht über kurz oder lang allegro als "proprietäres System" (ein anderes Wort für Black Box) auf ein Abstellgleis geraten, sollte nicht gar die Eigenwilligkeit sich irgendwann als "Nagel zum Sarg" (noch ein Wort für Black Box) erweisen. Solche Einsichten keimten genaugenommen schon im Jahre 1985, als die Entscheidung getroffen wurde, das ältere allegro84 einzufrieren und, auf den Erfahrungen aufbauend, etwas ganz Neues zu programmieren. Das sollte in der Sprache C geschehen, weil damit eine Portierung auf UNIX und evtl. auch andere Systeme durchführbar erschien. Mit den Compilern der 80er Jahre war echtes plattformunabhängiges Programmieren noch nicht machbar, jedenfalls nicht für komfortable Benutzeroberflächen. In jahrelanger Arbeit entstanden Kernprogramme, die in großen Teilen portabel sind, d.h. offen für andere Betriebssysteme. Dadurch sind heute die DOS- und UNIX-Programme weitgehend funktionsgleich, die Datenbanken zwischen den Plattformen ohne jede Änderung austauschbar. Noch immer aber blieb der Zugang zu den Daten an Programme gebunden, deren Beherrschung nicht jedermanns Sache ist. Nach der rasanten Heraufkunft des neuen Massenmediums "Web" schleicht sich indessen, als extremer Gegenpol, eine Mentalität ein, die eine Datenressource bereits als bestenfalls zweitrangig einstuft, wenn sie weiter als einen Mausklick entfernt ist. Es kann natürlich nicht darum gehen, derart grotesken Fehlhaltungen Vorschub zu leisten. Genauso steht aber fest, daß die Beschäftigung mit einem Datenbanksystem kein Selbstzweck ist, so wenig wie übrigens die Arbeit an einem Zettelkatalog. Das Datenbanksystem muß gesammelte Ressourcen geordnet und jederzeit aktuell bereithalten (das tut allegro seit langem), doch der Zugriff darauf soll heute unmittelbar aus Umgebungen heraus möglich sein, in denen sich Menschen der informationsverarbeitenden Berufe normalerweise aufhalten. Solche Umgebungen sind Windows, X-Windows und zunehmend oder bald überwiegend die Web-"Browser".

Welche Konsequenzen ergeben sich daraus für die allegro-Entwicklung? Zunächst wurde erkannt, daß man wohl etwas Besseres machen sollte als nur noch ein paar Fenster in ein paar noch schwarze Wände der Kiste zu sägen, denn dadurch hätte diese allzu instabil werden können. Konkret sollte z.B. keine Fixierung allein auf die populäre Umgebung "Windows" stattfinden. In einer etwas größeren Anstrengung wurden statt dessen die bewährten Teile völlig herausgelöst und zu Fertigteilen umgearbeitet, aus denen nun neue Kisten zusammengesetzt werden konnten. Diese Aktion wurde "Projekt avanti" genannt. Der Fertigbausatz, eine "Klassenbibliothek" in der Programmiersprache C++, wurde erstmals in news Nr.39 (Sept. 1995) vorgestellt. Nach gründlicher Erprobung, aus der das Programm VPW hervorging (siehe dazu news Nr.40+42), entstanden in schneller Folge neue Produkte und Ansätze zu solchen:

  1. Presto-W : Zunächst unter Windows, bald auch X-Windows, läuft dieses Programm, das einen Ersatz für das DOS-Programm PRESTO bietet. Durchgängige Windows-Funktionalität ersetzt die proprietären Funktionen des konventionellen Programms. Die erste Version wurde jetzt den Anwendern zugänglich gemacht. Eine Beschreibung für die Installation und den Betrieb liegt als Textdatei vor. Vorhandene Datenbanken können unmittelbar mit diesem Programm benutzt werden, zugleich kann man aber, wo sinnvoll, weiter die konventionellen Programme fahren.
  2. Der avanti-Server : Mit diesem Programm, bereits jetzt für Windows und die UNIX-Plattformen verfügbar, läßt sich eine unveränderte allegro-Datenbank als Client/Server-System betreiben. Die Zugriffe erfolgen mit einer Sprache und einer Methodik, die in allen Software-Umgebungen, vor allem im Web, leicht zu implementieren ist.
    Mit dem Server wird eine Datenbank in dem Sinne transparent, wie es für vernetzte Anwendungen immer mehr zur Notwendigkeit wird, ohne daß von der bewährten Flexibilität etwas aufgegeben wird.
  3. Die Z39.50-Schnittstelle : von der DFG gefördert, wird in diesem Teilprojekt die Öffnung zum internationalen Standard der Kommunikation zwischen den Datenbanken des Bibliotheks- und Dokumentationswesens vollzogen.

Da es zudem mit dem Fertigbausatz jetzt jedem C-Programmierer möglich ist, allegro als Kernsystem für Datenbankprojekte zu verwenden, werden die Komplikationen des Systems nach und nach unter allerhand Oberflächenschichten aus dem Blick des Anwenders verschwinden, doch ist es gerade die Komplexität im Innern, die die Offenheit erst ermöglicht.

Stand der Entwicklungsarbeit

1. DOS und UNIX : "konventionelle" Programme

Im ersten Quartal 1997 wird mit V15 ein Abschluß erreicht werden. Die Quellprogramme für DOS und UNIX sind harmonisiert, d.h. der Funktionsumfang ist identisch.
Es wird auf beiden Plattformen standardmäßig die Fähigkeit vorhanden sein, beliebige andere Programme aus einer allegro-Sitzung heraus aufzurufen. (Meistens wird dies zur Anbindung von Grafik und anderen externen Datenressourcen benutzt.) Bei V14c ist das noch eine Sonderversion, diese wird es dann nicht mehr geben.
Die Ausleih- und Erwerbungsprogramme (aLF und ORDER) werden über denselben Kern von Funktionen verfügen. Diese Programme sind einerseits sehr komplex, brauchen aber andererseits schnelle Reaktionszeiten. Deshalb wird man sie nicht kurzfristig in Windows-Programme überführen können.
Die Monographien-Erwerbung (Programm ORDER) kann als abgeschlossen gelten und enthält den Kern von V14c. Für die Zeitschriften-Erwerbung, insbesondere den Heftzugang, existieren nur konzeptionelle Ideen, noch kein programmierter Ansatz. Zugunsten der anderen Entwicklungen, insbes. Windows, wurde dieser Bereich zurückgestellt.
Die Ausleihfunktionen (Programm aLF) sind recht ausgereift. Im August '96 ist der hauptamtlich zuständige Entwickler, Peter Hartwig, zur Büchereizentrale Lüneburg übergesiedelt. Vorrangig werden dort die Einsatzmöglichkeiten an Öffentlichen Bibliotheken weiterentwickelt. Mehrere Installationen laufen schon längere Zeit, viele weitere stehen bevor. Die Erfahrungen der Praxis können nun noch stärker als bisher einbezogen werden. Für aLF muß außerdem der Schritt von V13 auf V14c noch vollzogen werden, was aber fast nur Formsache ist.

Mit V14c wurden einige Zusatzpakete für DOS-Anwender herausgebracht (QUEX, QUANT, PRONTO und EXPEX, siehe news Nr.42), die den Umgang mit dem System in einigen Bereichen erleichtern (indem die Parametrierung entfällt) und das Erlernen fördern. Diese Pakete sind unabhängig vom eingesetzten Kategoriesystem und können auch als Modelle für weitere Zusatzpakete dienen.
Zum Kernsystem gehört seit V13a auch ein sehr einfaches Ausleihprogramm ALFA (nur Ausleihe und Rücknahme, keine Frist-, Gebühren- und Statistikfunktionen). Dieses ist insbes. bei Instituts- und kleineren Spezialbibliotheken sehr beliebt, wo aLF überdimensioniert wäre. Es kommt ohne umfangreiche Vorbereitungen und ohne Barcodes aus. (news 34, S.7f)

Das Systemhandbuch wird vollständig aktualisiert und dann auch die Zusatzpakete (QUEX etc.) behandeln. Es soll spätestens zugleich mit V15 erscheinen, aber es wird Dezember '96 angestrebt, da die Ausgabe zu V14 vergriffen ist.
Das Lehrbuch von H. Allers ist gleichfalls vergriffen, kann aber vorläufig nicht überarbeitet werden. Um dringendem Bedarf abzuhelfen, wurde die "Ouvertüre" schon ein wenig erweitert, soll aber noch neue Teile erhalten.

2. Neue Entwicklungen : plattformunabhängig

Die im Jahre 1995 geschaffene "Klassenbibliothek" (Datenstrukturen und Funktionen) in C++ ist das Fundament für alle Neuentwicklungen, die unter den graphischen Oberflächen laufen sollen. Verfügbar sind diese Klassen für Windows und UNIX, mit identischer Funktionsweise (weil die Programmtexte identisch sind). Vorhandene allegro-Datenbanken müssen in keiner Weise geändert werden (auch nicht der Zeichensatz!), um mit den neuen Programmen benutzt werden zu können. Daher kann man auch gleichzeitig mit alten und neuen Programmen auf dieselbe Datenbank zugreifen, auch übergreifend zwischen DOS, Windows und UNIX.

Die weitere Entwicklungsarbeit kann sich nun in drei Bereichen vollziehen:

2.1. Entwicklungen innerhalb der Abteilung in C++

VPW (Freigabe Juli 96) ist das erste Beispiel. Noch kein echtes Windows-Programm, aber zugleich für UNIX verfügbar, hat es erstmals einen Suchbefehl, der an Pica orientiert ist, und es kann Ergebnismengen geordnet anzeigen und ausgeben. Unter UNIX kann es auch per "telnet" als OPAC-Programm eingesetzt werden.
PRESTO-W ist das zweite Beispiel. Die Version 1.0 wurde am 4.10.96 freigegeben. Diese hat schon einige Eigenschaften, die über das "alte" PRESTO hinausgehen. Alle Abonnenten sollen dieses Programm mit V15 erhalten. Mehr darüber weiter unten.
Seit Juli in Arbeit ist ein Z39.50-Interface, das auch von dem im Sept. 96 freigegebenen avanti-Server profitieren wird (siehe 2.3.). Dieses Teilprojekt wird von der DFG finanziert.

2.2. Entwicklungen in C++ anderswo

An Entwickler, die mit C++ arbeiten wollen, kann eine Lizenz der Klassenbibliothek gegeben werden. Sie stellt also das "Application Programmers' Interface (API)" dar, mit dem man das allegro-System als Datenbankmaschine auf Programmierebene einsetzen kann.
Das Programm VPW, mit V14c bereitgestellt, kann als Beispiel dienen, an dem Entwickler die Verwendung der Klassenbibliothek studieren können. An einer namhaften UB wird dies bereits in einem besonderen Projekt ausprobiert.
Weil die Klassenbibliothek alles enthält, was intern in der Datenbank abläuft, sowie die gesamte Exportmethodik, ist das Entwickeln von Oberflächenfunktionen und neuen Anwendungen mit einer allegro-Datenbank als Basis jetzt von jedem Ballast befreit, der bei den älteren Kernprogrammen in C den Programmierer belastete. Man mußte allzu vieles vom Kernsystem wissen und berücksichtigen und konnte dennoch keine Oberfläche freizügig gestalten. Man ist jetzt aber sogar frei, nicht C++ zu benutzen, sondern irgend eine andere moderne Programmierumgebung. Sagte oder dachte da jemand "Java"? Ganz richtig, auch dieses. Für solche Vorhaben, und damit der Umgang mit einer allegro-Datenbank für den Programmierer so einfach wie nur denkbar wird, wurde ein Serverprogramm erstellt:

2.3. avanti-Client/Server-Entwicklungen

Potentiell ist dies das weiteste Feld überhaupt.
Für alle Software, die nicht den schnellstmöglichen, direkten und unmittelbaren Zugriff braucht, ist der avanti-Server einsetzbar. Dieser stellt mit der avanti-Sprache ein API auf höherer, viel bequemerer Ebene bereit als die Klassen der Ebene C++. Mit entsprechenden Kenntnissen sind hier Entwicklungszeiten von wenigen Tagen erreichbar, natürlich abhängig von Komplexität und Anspruch. Hier sind Web-Anwendungen anzusiedeln. Die Erstellung der Server-Aufträge und Auswertung der Resultate kann eingebettet werden in praktisch jede andere Umgebung, in Zukunft vermutlich zunehmend in der Sprache JAVA. Dies bedeutet praktisch, daß jeder, der in irgendeiner Sprache programmiert, allegro-Datenbanken in Entwicklungen einbeziehen kann. "Synergie-Effekte" im weitesten Sinne sind jetzt in greifbare Nähe gerückt, d.h. Datenbanken können in Interaktionen einbezogen werden mit elektronischen Ressourcen aller Art. Es gibt schon mehrere Web-Kataloge auf allegro-Basis, die aber noch mit der älteren, komplizierteren Methode arbeiten (einer Kombination der Programme QRIX und SRCH). Der avanti-Server wird solche Entwicklungen vereinfachen und schneller machen. Es wird daran gearbeitet, eine Musteranwendung für den Web-Zugang zu einem allegro-Katalog zusammenzustellen. Nach diesem ausbau- und anpassungsfähigen "Strickmuster" werden dann allenthalben Web-Zugänge geschaffen werden können, ohne daß noch vertiefte allegro-Kenntnisse nötig sind.
Der Server selbst ist als Version 1.0 freigegeben, der zugleich veröffentlichte Sprachumfang ist ausgetestet und festgeschrieben. Er ist mit identischer Funktionsweise für PC-Netze und für UNIX-Systeme (SUN, LinuX, AIX, HP, SINIX) verfügbar, denn er beruht ebenfalls auf der Klassenbibliothek.
Client-Entwicklungen wurden inzwischen an mehreren Stellen aufgenommen. Die ersten Ergebnisse wird man schon in Kürze auf dem Web sehen können. Die Erfahrungen werden ausgewertet und für die Weiterentwicklung des Servers verwendet werden.

Entgelte 1997

Nicht wenige Anwender interessieren sich für die Frage der Kosten. Hier sieht es für 1997, nach allem, was man zur Zeit sagen kann, nicht weniger erfreulich aus als für 1996. Änderungen der Entgeltordnung sind nicht leicht durchzuführen, und weil in diesem Jahr zwar unerwartet große Schritte gelungen sind, die "Produktpalette" aber wohl erst nach weiteren Ergänzungen 1997 in eine neue, übersichtliche Ordnung gebracht werden kann, bleibt es vorerst bei der alten Ordnung. Eine Konsequenz ist, daß wir für das Windows-Programm PRESTO-W Version 1.0 kein Entgelt nehmen. Es wurde frei verfügbar gemacht. Gegenwärtig kann man ehrlicherweise noch nicht von einem Produkt " allegro for Windows" sprechen, dafür fehlt noch zuviel. Im ersten Halbjahr 1997 wird ein erweitertes PRESTO-W erscheinen, und dazu Anwendungen, die auf dem avanti-Server beruhen. Wir werden es rechtzeitig bekanntgeben, wann und für welche Produkte dann neue Entgelte eingeführt werden.
Damit es ganz deutlich wird (etwas anderes wurde allerdings auch nie gesagt, aber die Erwartungen eilen oft den Realitäten weit voraus): das Windows-Programm PRESTO-W ist kein Ersatz für die konventionellen Programme, mit diesen muß man also zunächst weiterarbeiten. Das neue Programm erlaubt es, in existierende Datenbanken von Windows aus hineinzuschauen und Daten zu bearbeiten und mit vorhandenen Parametern zu exportieren, mehr im Prinzip noch nicht.
Wenn Sie FTP-Anschluß haben, können Sie sich das Programm so abholen:

        ftp 134.169.20.1
        ac96
        <das passwort>
        bin
        cd ac14
        cd windows
        get prestow.lzh
        get prestow.txt
        quit

Wenn Sie keinen FTP-Anschluß haben, aber den Eindruck gewinnen (nachdem Sie die folgenden zwei Seiten gelesen haben), daß Sie von PRESTO-W profitieren können, dann schreiben Sie uns.

PRESTO-W : Das erste echte Windows-Programm

[Auszüge aus der umfangreicheren Dokumentation]

Die Übertragung der allegro-Programme in die Welt der graphischen Benutzeroberflächen beginnt mit dem meistbenutzten Programm, mit dem normalerweise auf allegro-Datenbanken zugegriffen wird. Es wird PRESTO-W genannt, PRESTO für Windows. Die erste Version kann aber noch nicht alles das bieten, was man von der DOS-Version gewohnt ist. Die Umsetzung aller bekannten Fähigkeiten erfordert Zeit. Zudem müssen einige Eigenschaften anders gelöst werden als unter DOS, und man kann neue, bisher unbekannte hinzufügen. Wir bitten daher um etwas Nachsicht, wenn Sie das eine oder andere noch vermissen. Die Arbeit daran geht weiter, das Programm auf den von der DOS-Version her bekannten Stand zu heben und darüber hinaus neue Fähigkeiten einzubauen.

Was kann PRESTO-W 1.0?

Wir listen hier kurz auf, was Sie von dieser Version von PRESTO-W erwarten können:

Was kommt mit der nächsten Version?

Folgende Eigenschaften sind für die nächste Version (1. Halbjahr 1997) geplant:

Die INI-Datei

Zum Steuern und Konfigurieren von PRESTO-W wird eine INItialisierungs-Datei gebraucht. Das ist eine einfache Textdatei, die mehrere, in Abschnitte gegliederte Anweisungen enthält. Die Datei darf nur mit einem einfachen Texteditor wie z.B. notepad.exe bearbeitet werden. Als Beispiel für eine INI-Datei können Sie sich die mitgelieferte Datei prestow.ini ansehen.
Der Aufbau der INI-Datei folgt den Regeln, die sich für Windows-Software eingebürgert haben. Sie enthält prinzipiell drei Elemente: Kommentare, Titelzeilen für Abschnitte und die eigentlichen Anweisungen. Ein Kommentar steht auf einer einzelnen Zeile und beginnt mit einem Semikolon:

; Dies ist ein Kommentar

Alle Anweisungen sind in Abschnitte gegliedert. Ein Abschnitt braucht einen Titel, der in eckige Klammern eingeschlossen sein muß:

[Abschnittstitel]

Eine Anweisung ist eine Art Variable, deren Wert hinter einem Gleichheitszeichen angegeben wird:

BspAnweisung=Beispiel

Grundsätzlich gilt: Bei Abschnitten und Anweisungen ist unbedingt auf die korrekte Schreibweise zu achten.

Es gibt zwei Abschnitte in der INI-Datei:

[Global] In diesem Abschnitt können Anweisungen angegeben werde, deren Werte als Grundeinstellungen gelten sollen. Gleichnamige Anweisungen in den anderen Abschnitten überschreiben für diesen Abschnitt die Grundeinstellung. Erlaubt sind z. Zt. Parameter, InternAnzeige und AnzeigeUmschaltungPermanent. Erläuterungen zu diesen Anweisungen finden Sie weiter unten.
[Datenbanki] Abschnitt für Anweisungen einer Datenbank, die angeboten werden soll. Die Angabe i steht für eine Zahl von 1 bis 10. Damit können bis zu zehn Datenbanken definiert werden. Hinter diesen Abschnittsüberschriften folgen die für diese Datenbank gültigen Anweisungen, die im folgenden beschrieben werden. Die angegebenen Datenbanken können unterschiedliche Konfigurationen haben.
Beispiel: [Datenbank1]

Anweisungen

Mit den Anweisungen wird eingestellt, welche Datenbank angeboten werden soll und welche Parameterdateien benutzt werden. Auch hier ist die genaue Schreibweise wichtig. Die Angaben hinter den Gleichheitszeichen werden nicht in Anführungszeichen gesetzt. Bei Dateinamen werden nur die Namen und nicht die Endungen angegeben.

Anweisung Erläuterung/Beispiel
DatenbankName Hier gibt man eine kurze Bezeichnung für die Datenbank an. Diese Angabe erscheint dann später in der Titelleiste des Hauptfensters von PRESTO-W.
Beispiel: DatenbankName=Demodatenbank
DatenbankPfad Hier muß eine Pfadangabe stehen. Sie gibt das Verzeichnis, in dem die Datenbank zu finden ist, an. Die Pfadangabe muß absolut sein. Diese Angabe entspricht der Option -d bei den DOS-Programmen. Es darf kein '\' am Ende stehen
Beispiel: DatenbankPfad=c:\allegro\windemo
KonfigurationsDatei Hier wird der Name der Konfigurationsdatei der Datenbank angegeben. Diese Anweisung entspricht der Option -k der DOS-Programme. Man darf also ein evtl. im Dateinamen am Anfang stehendes '$' nicht mit angeben. Ebenso wird keine Dateiendung angegeben.
Beispiel: KonfigurationsDatei=a
Als Konfigurationsdatei wird in diesem Fall also $a.cfg benutzt oder a.cfg, falls $a.cfg nicht vorhanden sein sollte.
KonfigurationsBuchstabe Hier wird noch einmal der Konfigurationsbuchstabe wiederholt, also der Anfangsbuchstabe der Konfigurationsdatei. (Das '$'-Zeichen in $a.cfg zählt nicht mit!)
Beispiel: KonfigurationsBuchstabe=a
IndexParameter Geben Sie hier den Namen der Indexparameterdatei für die Datenbank an.
Beispiel: IndexParameter=cat
AnzeigeParameter Parameterdatei für die Anzeige. Entspricht der Option -p der DOS-Programme.
Beispiel: AnzeigeParameter=d-win
IndexStartwert Begriff, mit auf den beim Erscheinen eines Registers der Auswahlbalken positioniert sein soll. Entspricht der Option -s der DOS-Programme.
Beispiel: IndexStartwert=shakesp
BerechtigungsStufe Die Berechtigungsstufe, die für diese Datenbank gelten soll. Momentan sind nur 0 oder 3 erlaubt. Bei Stufe Null funktioniert PRESTO-W wie ein OPAC-Programm, d.h. es sind keinerlei Veränderungen an den Daten möglich
Beispiel: BerechtigungsStufe=3
ParameterInternAnzeige Parameterdatei für die Kategorieanzeige. Anders als bei den DOS-Programmen ist diese Anzeige nicht fest in das Programm eingebaut. Der Vorteil dieser Lösung ist, daß man hier steuern kann, welche Kategorien der Benutzer zu sehen bekommt.
Beispiel: ParameterInternAnzeige=d-intern
AnzeigeUmschaltungPermanent Hier kann nur Ja oder Nein angegeben werden.
Diese Einstellung wirkt auf die Umschaltung der Titelanzeige in die Kategorieanzeige. Falls hier Ja angegeben ist, wird die Titelanzeige einer Karte permanent auf die Kategorieanzeige umgeschaltet. Sie bleibt also erhalten, selbst wenn man in diesem Fenster einen anderen Datensatz ansteuert. Steht hier Nein oder gibt es diese Anweisung nicht, wird wieder auf die normale Titelanzeige zurückgeschaltet, wenn man im selben Fenster einen neuen Satz ansteuert.

(ho)

Der avanti-Datenbankserver ...

[Auszüge aus der umfangreicheren Dokumentation]

Ganz knapp zusammengefaßt: mit avanti kann jede allegro-Datenbank zu einem Client/Server-System ausgestaltet werden, und zwar mit maßgeschneiderten, leicht zu programmierenden Client-Funktionen.
Damit kein Mißverständnis aufkommt: die bisherigen Programme werden hierdurch nicht abgelöst oder entwertet. Es gibt kein Entweder/Oder: alles kann GLEICHZEITIG laufen. Ein C/S-System arbeitet seiner Natur nach immer indirekt und deshalb weniger schnell und effizient als ein direkt zugreifendes System. Es gibt wichtige Funktionen, wie z.B. das ZEILENweise Rauf- und Runter-Blättern in Registern, die in C/S-Systemen schwierig oder gar nicht zu realisieren sind. (Haben Sie sich noch nie gewundert, warum manche Systeme das nicht können?)

Die avanti-Sprache für Auftragsdateien

Achtung "allegrologen": diese Sprache hat einige ganz andere Aufgaben, aber nicht nur deshalb ist sie völlig anders konstruiert. Sie sollte wesentlich leichter zu erlernen sein, vor allem durch Nicht-"allegrologen". Dies war ein wichtiges Entwicklungsziel. (Vermutlich werden einige stöhnen, "warum konnte denn die Exportsprache nicht genauso einfach sein!!" Sie muß leider extrem kompakt sein (und deshalb kryptisch), weil die Parameter erstens in den Arbeitsspeicher passen müssen, zweitens aber auch schnell arbeiten sollen.)
Die avanti-Sprache muß auch anders sein als die (manchem Leser vermutlich bekannte) Datenbanksprache SQL. Letztere ist konzipiert für relationale Datenbanken. Wollte man sie nachbilden, müßte man zwangsläufig Ausnahmen, Erweiterungen und Abweichungen hinnehmen, denn allegro hat keine relationale Struktur. Das würde eher verwirren als helfen.

Es folgt die Liste der Befehle, die avanti zur Zeit umfaßt. (Der Befehlsumfang wird noch erweitert werden.)
Jedes Befehlswort kann bis auf den ersten Buchstaben verkürzt werden, außer erase und update, die man aus Sicherheitsgründen immer vollständig schreiben muß.
Also: statt write kann man wri oder wr oder auch nur w schreiben. Wichtig: Hinter dem Befehlswort oder -zeichen muß mindestens ein Leerzeichen folgen! Es muß also write newline oder knapp w n heißen, nicht wn .
Kursiv geschriebene Wörter wie filename oder command deuten an, daß an der Stelle eine frei wählbare Angabe des Anwenders zu stehen kommt. Die Befehlswörter müssen so wie angegeben (also in der Regel klein) geschrieben werden.
Wenn bei der Ausführung eines Befehls ein Fehler auftrat, wird die ERROR-Bedingung gesetzt. Mit einem gleich nachfolgenden if-Befehl kann man darauf reagieren:

if error command oder if ok command

command wird ausgeführt, wenn ein Fehler aufgetreten ist bzw. wenn alles ok ist. command kann ein jump-Befehl sein, aber auch eine längere Befehlsfolge, mit ; als Trennzeichen zwischen den Befehlen.

Allgemeine Regeln

Befehlsübersicht

Es gibt 7 Gruppen von Befehlen:

1 Auftrags-Steuerbefehle
2 Suchen, Einlesen, Sortieren, Auflisten
3 Exportieren (Datensätze und Texte in Download-Datei schreiben)
4 Manipulation von Daten im Arbeitsspeicher
5 Speicherfunktionen (Schreiben in die Datenbank)
6 Bedingungsprüfungen und Sprünge
7 Schalter und Einstellungen

Es folgt eine alphabetische Kurzübersicht, wobei die Gruppennummer links angegeben ist:

4 copy Kopiere den aktuellen Satz (d.h. es entsteht ein neuer)
3 download Exportiere den aktuellen Satz
5 erase Lösche den aktuellen Satz (auch aus den Registern)
2 find Ergebnismenge erstellen (Pica-ähnlicher Find-Befehl)
2 get Hole einen Satz (er wird dadurch zum "aktuellen Satz")
2 help Information über die Datenbank ausgeben (Registernamen etc.)
6 if Bedingungen prüfen und nachfolgende Aktion
6 jump Springe zu einem label
2 list Kurzliste der Ergebnismenge ausgeben
4 new Aktuellen Satz als neuen (leeren) Satz behandeln
2 order Sortiere die Ergebnismenge (auf- oder absteigend)
5 put Schreibe den aktuellen Satz in die Datenbank zurück (einschl. aller Registeränderungen)
2 qrix Registerauszug ausgeben
4 read Nächsten Satz aus einer ASCII-Datei oder .ALG-Datei in den aktuellen Satz einlesen
7 set Setze diverse interne Werte und Zustände
5 upload ASCII-Datei als neue Datensätze einlesen und speichern
5 update ASCII-Datei einlesen, Sätze per Primärschlüssel identizieren und ggfls. ersetzen
3 write Schreibe Text und Daten in Download bzw. Errordatei
3 xport Lade Exportparameter / Setze Exportdatei
4 #xxx... Aktionen mit Datenfeldern und Anwendervariablen
1 :marke Label (Sprungmarke)
1 @ Identifikation des Benutzers

Bei den meisten Befehlen gibt es mehrere Optionen oder Unterbefehle. Nur die viel umfangreichere Originaldokumentation stellt den gesamten Funktionsumfang dar. An dieser Stelle sollen vier Beispiele genügen, um einen Eindruck von avanti zu vermitteln:

1. Ergebnismenge bilden, geordnete Kurzliste ausgeben:
(Wir nehmen hier an, daß die Kurzzeilen (.STL-Datei) an der Position 58 eine Jahreszahl enthalten)

find tit berlin? or hamburg? // Sätze suchen, die im Titel "berlin" oder "hamburg" enthalten
order descending 58          // Erg.Menge ordnen, absteigend ab Position 58
list num                     // numerierte Kurzliste ausgeben

2. Ergebnismenge bilden, formatierte Titelliste ausgeben:

xport p p-normal             // Parameter P-NORMAL.APR für Export verwenden
find tit berlin? or hamburg? // Titel suchen, die "berlin" oder "hamburg" enthalten
order asc 1                  // Erg.Menge ordnen, aufsteigend ab Position 1 (Titel)
download set                 // Erg.Menge formatiert ausgeben (mit P-NORMAL.APR)

3. Eine neue Kategorie in jeden Satz einer Ergebnismenge einbauen In alle Sätze mit "mozart, w?" als Person und Titelstichwort "Sinfonie" oder "Konzert/Concert" soll das Schlagwort #31 Wiener Klassik eingebaut werden:
(Man sieht hier, wie eine Ergebnismenge abgearbeitet werden kann)

@3                     // Schreibberechtigung einschalten (Provisorium)
xport p p-normal       // Für downloads sollen die Parameter p-normal.apr
                       //   verwendet werden
find per mozart, w? and (tit sinfo? or konzert? or concert?)

get e first            // erster Satz wird geladen und gesperrt (wegen 'e')
if error jump ende     // wenn es keinen Satz gibt! (Erg.Menge leer / zu groß)
:anfang                // Anfang der Schleife
#31 Wiener Klassik     // diese Kategorie wird eingebaut
put                    // Satz zurückschreiben (dabei wird der Satz entsperrt)
get e next             // nächsten Satz laden und sperren
if noerror j anfang    // falls es einen gab: weiter bei :anfang,
                       // sonst ist die Schleife zu Ende
:ende
download set           // gesamte Ergebnismenge (nach Veränderung!) downloaden
...                    // weitere Befehle oder Ende des Auftrags

4. Eine Ergebnismenge soll gelöscht werden

find ...               // Erg.Menge erstellen
get first              // ersten Satz laden
if error j ende        // Wenn es keinen gab (Erg.Menge leer) Sprung nach :ende

:schleife              // hier beginnt die Schleife
erase                  // aktuell geladenen Satz löschen
get next               // nächsten Satz holen
if ok jump schleife    // wenn es noch einen gab: Sprung nach :schleife

:ende

Solche Aufträge, auch " avanti-Programme" genannt, schickt man mit einem Hilfsprogramm an den Server. Der führt den Auftrag aus und schickt eine Ergebnisdatei zum Auftraggeber zurück. Wenn z.B. der Auftrag job1 heißt, übergibt man ihn mit dem Befehl aj job1 an den Server. Der produziert dann auf dem Verzeichnis des Auftraggebers die Datei job1.dnl. Sobald man diese sieht, weiß man, daß der Job erledigt ist, und in job1.dnl stehen die Ergebnisse. Außerdem entsteht job1.err, in die der Server seine Fehlermeldungen und andere Angaben hineinschreibt.

In der Praxis wird man Aufträge normalerweise nicht mit der Hand schreiben und übergeben, sondern aus anderen Umgebungen heraus, z.B. aus einem HTML/Perl-Skript. Auf diese Weise kann man WWW-Kataloge realisieren. Als Beispiel wird zur Zeit dafür eine Standardlösung erarbeitet, die alle notwendigen Elemente enthält. Man wird dann diese Skripte und Parameter übernehmen und für die eigene Anwendung modifizieren und ausbauen können.

Grenzen, Schranken, Barrieren

Wenn eine Datenbank plötzlich nicht mehr funktioniert, nachdem sie jahrelang ohne Probleme lief, kann die Ursache ein übergelaufenes Faß sein. Es gibt kein schrankenlos liberales System, im Leben nicht und nicht in der Datenwelt. Hier wie dort sind die Grenzen nicht immer leicht zu erkennen, und die Auswirkungen einer Überschreitung können durchaus überraschend sein. Selten in angenehmer Weise, versteht sich, und Verwunderung bis Verärgerung macht sich breit, daß einen "das System" nicht rechtzeitig und unmißverständlich gewarnt oder deutlich sichtbare Grenzpfähle aufgestellt hat. In der Tat, man füllt dauernd Material in diverse Fässer, sieht aber nicht, ob eins davon im nächsten Moment überlaufen wird. Muß man nicht klare und rechtzeitige Warnungen von einem System fordern, von dem man in einiger Hinsicht abhängig wird? Nicht alles ist vorhersehbar, was in der Praxis vorkommt, doch Katastrophen muß man nicht befürchten.
Für das allegro-System wurden nicht von vornherein feste Grenzen abgesteckt. Im Verlauf der Entwicklung ergaben sich immer neue Anforderungen, aber auch neue Sachzwänge, und damit auch Veränderungen. Wir haben es nicht mit einer kleinen Anzahl von Fässern zu tun, die feste Abmessungen hätten, sondern es gibt einen begrenzten Speicherraum, in den alle Fässer zusammen hineinpassen müssen. Wenn ein paar davon besonders groß sind, müssen andere zwangsläufig kleiner sein. Dieser begrenzte Raum sind die unseligen 640 K des DOS-Systems. Diese Barriere, vielleicht die schlimmste Fehleinschätzung der Computergeschichte, wurde von IBM mit dem Entwurf des ersten PC 1983 aufgerichtet. Nicht nur das aktuelle Programm muß in diesen Raum passen, auch die Daten und Teile des Betriebssystems. Das ganze ist eine Optimierungsaufgabe, die mit dem Anwachsen des Systems immer schwieriger wurde. Das ist der entscheidende Grund, warum die DOS-Version kaum noch funktional erweitert werden kann.
Im Handbuch sind eine Reihe von Grenzwerten erwähnt. Sie stehen aber nirgends alle übersichtlich verzeichnet, und außerdem sind die Angaben teilweise überholt. Hier soll der aktuelle Stand dargestellt werden. Bis zur Festschreibung von V15 können sich immer noch Veränderungen ergeben, jedoch werden diese kaum dramatisch ausfallen. Für UNIX und Windows sind die entsprechenden Werte im allgemeinen gleich oder größer oder können nach oben erweitert werden. Nur bei DOS besteht das Problem, daß man nicht alle Werte zugleich auf ihr Maximum setzen kann - dafür ist besagter Raum zu klein. Bei UNIX und Windows gibt es diese Sorgen nicht. Man muß aber bedenken: solange eine Datenbank noch zugleich unter DOS wie UNIX oder Windows benutzbar sein soll, gelten leider die DOS-Grenzen.

Globale Grenzen

Datenbank
Datendateien
Index
LOG-Datei

Grenzwerte im Arbeitsspeicher

In der nachfolgenden Liste sind diejenigen Werte, die der Anwender verändern kann, durch Fettdruck und Typewriter gekennzeichnet. Dort steht der Befehl, den man in der CFG dazu benutzen muß (siehe Anh. A.1.3, m-Befehle).
Tip: Drücken Sie auf dem Anzeigebildschirm [Alt+F7] , dann sehen Sie die aktuellen Einstellungen der folgenden Werte, und Sie können dann erkennen, wo Knappheit droht, z.B. im Parameterspeicher.
Aufnahmespeicher (enthält den aktuellen Datensatz) Datenfelder Kategoriesystem md Abfrageliste Hintergrundspeicher mB Phrasenspeicher mP Parameterspeicher mX Ergebnismenge mr Artikelliste UIF-Texte Dateinamen Indexeinträge

Grenzen in Export-Parameterdateien

Länge der Schlüssel Kurzzeilen Kopfbefehle Zwischenteile Basisparameter Exportzeile

Programmspezifische Grenzen

CockPit SRCH IMPORT ASORT

Export

Exklusive Adressen

Es gibt inzwischen einige Sprungmarken, die für bestimmte Zwecke ausdrücklich reserviert sind. Wir stellen hier eine Liste dieser Sprungmarken zusammen. In der Liste steht I für Indexparameter, E für Exportparameter. Für die Programme aLF und ORDER wurden einige Marken für Sonderaufgaben festgelegt; diese werden hier nicht aufgeführt.

Marke I/E Aufgabe
#-@ I Hier wird der Primärschlüssel fabriziert.
#-0 I Für die Aufbereitung der Kurztitelzeile
#-1
...
#-;
I Die Umcodierung der Benutzereingabe wird an diesen Stellen gemacht. Wenn jemand im Register 7 etwas eintippt, wird dieser Suchbegriff an der Sprungmarke #-7 umgewandelt. (: für Reg.10, ; für Reg.11) (10.2.6.5.1, es muß ic=1 gesetzt sein, damit dies funktioniert, siehe 10.2.1.3)
#-# E Abschnitt zur Programmierung von Globalen Manipulationen (1.5.4)
#-- I Definition von Schlüsseln für die Löschkontrolle (10.2.6.8)
#-` E Flip-Aufbereitung (news 42, S.15, Handbuch V15: 10.2.7)
#- E E Endabschnitt für Listenproduktion (1 Leerzeichen vor dem E, news 38, S.7)

Teilfelder löschen

In der Nr. 42 wurde auf S.12 das Eliminieren von Teilfeldern als neue Funktion beschrieben, in Nr. 41 auf S.5 eine ältere Methode für denselben Zweck. Weil dort ein Druckfehler unterlaufen war (b" <tf> " statt b" <tf> x"), zeigen wir hier eine vereinfachte neue Prozedur, die allerdings erst mit V14c geht. Aufgabe: in einer Globalen Manipulation soll aus #123 das Teilfeld <tf> x entfernt werden. Dazu braucht man diesen Abschnitt:

#-#
#123 +A c" <tf> x" e0   Nur etwas tun, wenn <tf> x in #123 vorkommt
#+-                     sonst nichts machen
#-A
#123 ~x p"#123" M       Teilfeld rausnehmen, Kategorie #123 wieder einordnen

Angebote per WWW und FTP

Jeder Abonnent hat ein Blatt mit den Informationen zum FTP-Angebot erhalten. Der Server 134.169.20.1 hat auch einen "anonymous"-Zugang, auf dem unter anderem die Textdateien der news ab 1990 liegen, und zwar als WordPerfect 5.1, aber auch als PostScript-Dateien. Unter der WWW-Adresse http://www.biblio.tu-bs.de/allegro/ findet man die Texte als HTML-Skripte. Auch die "Ouvertüre" und das "Format '96" liegen dort. Das Systemhandbuch kann dagegen nicht elektronisch verfügbar gemacht werden.

Expertentreffen '97

Noch immer kann der genaue Termin nicht festgelegt werden, doch sind wir so gut wie sicher, im Zeitraum 15.2. bis 15.3.1997 ein Expertentreffen in der vergrößerten UB veranstalten zu können. Damit wir disponieren können, bitten wir schon jetzt um formlose Voranmeldung. Neben dem aktuellen Stand der Entwicklung werden die neueren Client/Server-Anwendungen, insbesondere auf dem Web, zu den Themen gehören. Die Teilnehmerzahl müssen wir vorläufig auf 50 begrenzen, weil wegen der Räumlichkeiten noch keine endgültige Klarheit besteht.

bolero-Treffen

Am 21./22.3.1997 (Fr./Sa.) soll in Berlin ein Seminar für bolero-Anwender und Interessenten stattfinden. Wer sich dazu anmelden möchte, wende sich an Frau Anette Wegelt, UB Greifswald, Tel. (03834) 63342.

WordPerfect 5.1-Datei PostScript-Datei

© 14.10.1996 UB Braunschweig, Bernhard Eversberg (b.eversberg@tu-bs.de)

Fragen bitte an:

ub@tu-bs.de