UB BRAUNSCHWEIG
Symbolfoto
  • Impressum
  • Startseite
  • allegro-C von A-Z
  • Druckversion


Sprachverwirrung

Wie redet man mit dem allegro-System?

 

Dateityp

Aufgabe

allegro-eigene Sprachen

 

 

Konfiguration

CFG

Struktur der Datensätze und -felder

Exportsprache

?PR, ?PI, ?PT

Ausgabe von Daten

Importsprache

?IM

Konvertierung von Fremddaten

INI-Datei

ini

Einstellungen für Windows-Programme

Makrosprache FLEX

flx

Makros für a99/alcarta und avanti

Sonstiges

frm, vw

Formulare, ViewListen, Phrasen ...

Fremdsprachen

 

 

C und C++

C, cpp

Quellprogramme

Batch (Stapelprogramme)

BAT

Stapelprogramme (DOS)

Skriptsprachen

php, pl, py, js

Skripte für Web-Anwendungen

Textauszeichnung

rtf, htm, html

Texte und Hilfesystem

SQL

 

Sprache f. relationale Datenbanken

XML

xml

Universelles Datendefinitionssystem

 

Zu den Dateitypen: Großbuchstaben bedeuten: kommt auch schon im DOS-System vor, Kleinbuchstaben: nur Windows oder UNIX (avanti). Das Fragezeichen steht für den Konfigurationsbuchstaben. Standard: A. Die realen Dateinamen sind alle komplett in Kleinbuchstaben gehalten und folgen der 8.3-Konvention, um jedes potentielle Ärgernis im Keim auszuschalten.

Einleitung

Wer mit allegro anfängt, stößt nach kurzer Zeit auf die Notwendigkeit, dem System dies und das "mitzuteilen", um es zu bestimmten Aktionen oder Verhaltensweisen zu veranlassen oder Eigenschaften einzustellen. Nicht alles, was allegro kann, ist mit Buttons und über Menüs steuerbar, obwohl sich Einsteiger schon über deren große Zahl wundern. Jenseits dieser Bedienelemente, dicht unter der Oberfläche, beginnt die Welt der Befehls- und Programmiersprachen, im weitesten Sinne.

Programmiersprachen sind mit natürlichen Sprachen nicht vergleichbar! Das Wort "Sprache" ist dafür im Grunde unpassend. Ihre Ausdrucksfähigkeit ist sehr begrenzt und starr. Deshalb gibt es nicht einebestimmte Programmiersprache, mit der man alles programmieren könnte, sondern es gibt eine babylonische Vielfalt - leider. Denn dieser Umstand macht den Umgang mit Computern zu einer abstrakten, komplexen und daher äußerst lernintensiven Sache. Jedenfalls dann, wenn man mit den Standards und Grundfunktionen nicht auskommt, mit den Buttons und Menüs also, die der Softwarelieferant vorgesehen hat. In diesem Beitrag wird deshalb versucht, im scheinbaren Labyrinth wenigstens eine Ordnung erkennbar zu machen. Das Ganze ist keine "Black Box", und dieser Beitrag soll dies klarmachen.

Hier ist zusammengestellt, welche Arten von "Sprachen" es im Zusammenhang mit allegro gibt und wofür sie gut sind. Nicht jede davon muß der mündige Anwender kennen. Doch je höher die Ansprüche,  je ausgefallener die Sonderwünsche, umso mehr Kenntnisse wird man brauchen. Einige der Sprachen sind allgemein verbreitet und bekannt. Aber es gibt auch welche, die speziell für allegro entwickelt wurden. Diese werden im Systemhandbuch beschrieben.

Grundvoraussetzung allen Programmierens ist, daß man mit einem Editorumgehen kann. Das ist ein Programm zum Bearbeiten von ganz normalen Textdateien, denn alle (Quell-)Programme sind solche Dateien. Mit dem allegro-Kernsystem kommt ein Editor namens X.EXE, der für alle Arbeiten an den verschiedenen hier beschriebenen Programmen eingesetzt werden kann. Sie können aber auch einen anderen Editor verwenden. Nur nicht WinWord, das ist eine andere Kategorie: Programme sind keine Word-Dokumente. Wichtig ist, daß der Editor mit dem DOS-Zeichencode arbeitet, denn wegen der noch immer gepflegten Kompatibilität zwischen DOS- und Windows-Programme müssen die diversen Dateien die DOS-Codierung verwenden.

Ein solcher Editor, frei verfügbar und empfehlenswert, ist WinVi:  http://www.winvi.de/de/


1. C und C++

Dies sind die Sprachen, in denen das Kernsystem programmiert ist. Die DOS-Programme sind in C, die des Windows-Systems und avanti sind in C++ geschrieben. Die neueren Programme beruhen auf einer sog. "Klassenbibliothek" in C++. Das ist ein Baukastensystem von Grundfunktionen, mit denen man beliebig komplizierte und umfangreiche Programme zusammensetzen kann, so z.B. eben a99 und avanti. Wer selber in C++ programmiert, könnte theoretisch die Klassenbibliothek einsetzen, um aus eigenen Programmen heraus auf allegro-Datenbanken zuzugreifen. Soviel Zeit hat aber kaum jemand...

Normalanwender sehen davon nichts und brauchen es nicht zu wissen. Sie sehen höchstens einmal die EXE-Dateien auf dem Programmverzeichnis: das sind die eigentlichen, ausführbaren Programme, z.B. PRESTO.EXE (DOS-Hauptprogramm) und a99.exe (Windows-Hauptprogramm). Die in C oder C++ geschriebenen Texte (sog. Quellprogramme) werden nicht zugänglich gemacht - niemand braucht sie außer der Entwicklungsabteilung.

2. Batch : Stapelprogramme

Das Betriebssystem MS-DOS verfügte von Anfang an über eine recht primitive Befehlssprache. Sie wird noch immer zum Starten von Programmen benutzt und besonders dann, wenn mehrere Programme hintereinander ablaufen sollen - das ist dann ein Stapel von Befehlen (engl. batch). Typisch ist das für Listenproduktionen. Normalanwender kommen aber heute ohne Kenntnisse der Batch-Programmierung aus: was man braucht, wird alles mitgeliefert und automatisch in Betrieb gesetzt.

Unter UNIX entspricht dem die sog. "Shell", wobei es mehrere verschiedene gibt. Diese sind viel mächtiger als Batch, aber auch weniger leicht zu lernen, da abstrakter.

Die allegro-Programme können in Stapelprogramme eingebaut werden, z.B. um komplizierte Listenproduktionen zu automatisieren. Einige Vorgänge, z.B. die Erneuerung von Indexdateien, werden mit Hilfe von Stapelprogrammen durchgeführt, die aber der Normalanwender nicht sieht und nicht kennen muß. Sie verbergen sich hinter Menüs, die den automatischen Stapellauf veranlassen, wie z.B. das Menü zum Organisieren. Das DOS-System wird gestartet mit einer Stapeldatei namens CP.BAT.
Um alle notwendigen Einstellungen vorzunehmen, gibt es ein System von "Optionen", die in die Programmaufrufe einzubauen sind. Beschrieben ist dies in
Kap. 12.

Beispiel für einen Programmaufruf: Geben Sie in einem DOS-Fenster auf dem Verzeichnis c:\allegro dieses ein:

presto -a3 -ddemo2 -n1

Dann sieht man plötzlich die Demo-Datenbank vor sich. Das "CockPit" gibt solche Befehle automatisch. wenn man es mit CP.BAT gestartet hat.

 
3. Skriptsprachen : Der Schlüssel zum Internet

Diese tragen Namen wie Perl, Python, PHP, ASP u.a. Sie werden hauptsächlich eingesetzt, um CGI-Programme zu schreiben. CGI ist keine Programmiersprache, sondern ein Verfahren, mit dem aus einer HTML-Web-Datei heraus auf dem Webserver ein Programm gestartet werden kann. Das wird gebraucht bei jeder Art von Datenbankanbindungen. Für die Web-Anbindung von allegro-Datenbanken kann man jede Skriptsprache einsetzen, die auf dem Server einsetzbar ist. Damit werden dann hauptsächlich Befehle an den avanti-Datenbankserver übermittelt, die Ergebnisse entgegengenommen und, eingebaut in eine HTML-Seite, an den Nutzer zurückgeliefert.

Die meisten der allegro-Web-Anbindungen sind mit Hilfe von Perl programmiert (Methoden acwww25 und populo), neuerdings wird zunehmend PHP eingesetzt (Methode "RuckZuck mit PHP". Dieser Text enthält Beispiele.)

JavaScript hat eine andere Daseinsberechtigung: anders als Perl, Python und PHP (die auf dem Webserver arbeiten), läuft es im PC des Nutzers ab. Es dient deshalb hauptsächlich dazu, auf Eingaben des Nutzers sofort zu reagieren, bevor z.B. ein Formularinhalt an den Server abgeschickt wird. So ist es auch im RuckZuck-Paket.

Jede der Skriptsprachen ist angewiesen auf gute Kenntnisse in der Textauszeichnungssprache HTML. Siehe dazu Punkt 9.

 

4. Konfiguration

Die interne Struktur einer allegro-Datenbank ist nicht in die Programme fest eingebaut! Jede Datenbank braucht deswegen eine Konfigurationsdatei (Typ .CFG, Standard ist die mitgelieferte Datei $A.CFG).

In der Konfigurationsdatei steht hauptsächlich, welche Felder es in einem Datensatz geben kann, ob diese Felder wiederholbar sind und ob sie in sich durch Unterfelder (Teilfelder) strukturiert werden können. Die Datei $A.CFG enthält das sog. A-Schema, auch bekannt als Konsolidiertes Format". Es ist nicht mit MAB oder MARC, den gängigen Austauschformaten, verwandt. Denn diese sind für normale Katalogdatenbanken nicht besonders gut geeignet. Es gibt für D bzw. U die Konfigurationen D.CFG bzw. U.CFG, doch existieren dafür nur wenige Export- und Import-Parameterdateien (siehe 6. und 7.), und darauf kommt es an.

Daneben enthält eine Konfiguration noch viele andere Details, die für das Funktionieren wichtig sind, die aber nicht bei jeder Datenbank gleich sein können. Dazu gehört auch die sog. "Abfrageliste", mit der beim DOS-Programm PRESTO die Dateneingabe unterstützt wird. Die CFG-Sprache wird im Anhang A des Handbuchs beschrieben.

 

5. Exportsprache

Jede Art der Ausgabe von Daten nach außen wird als "Export" bezeichnet. Das gilt auch für die Anzeige von Datensätzen am Bildschirm und sogar für die Erstellung der Indexdateien (!) und der Kurztiteldatei für Ergebnislisten.

Mit der Exportsprache schreibt man Export-Parameterdateien(Typen .APR, .API, .APT). Das sind Vorschriften für das Programm, was es mit den Daten machen soll. Weil es hierbei eine große Vielfalt von Details gibt, ist die Exportsprache außerordentlich umfangreich und daher nicht schnell zu lernen. Sie ist vollständig dokumentiert im Kap.10 des Systemhandbuchs. Kleine Beispiele von 10 verschiedenen Typen sind im Handbuch abgedruckt, große

Einfache Beispiele: D-0.APR für eine schlichte DOS-Satzanzeige, INDX.API für eine elementare Indexierung.

Komplexe Beispiele sind die mitgelieferten Dateien D-1.APR für die DOS-Datenanzeige, D-WRTF.APR für die Windows-Satzanzeige, und CAT.API für die Indexierung.

Zwar wird die Exportsprache manchmal als die schwierigste von allen empfunden, ihr Grundprinzip ist jedoch das einfachste. Die kürzeste mögliche Export-Parameterdatei sieht so aus:

#20

Das ist alles! Es bedeutet: bitte Feld #20 ausgeben. Kein Befehlswort, keine geschweiften Klammern, kein Semikolon, nur die Nummer. Daß viele Parameterdateien sehr kompliziert sind, liegt weniger an der Sprache als an der Vielfalt bibliographischer Daten und an den komplexen Wünschen der Anwender - was diesen oftmals nicht bewußt ist.

Einen Einstieg in die Exportsprache bietet eine einfache Einführung, mehr finden Sie in einem Text über Hintergründe.

 

6. Importsprache

Wenn Fremddaten übernommen werden sollen, muß man sie umwandeln ("konvertieren"). Denn Daten aus fremden Systemen sehen in jedem Fall anders aus. Manchmal sind die Unterschiede minimal, aber meistens ist die Struktur gänzlich anders als die eigene. Die Importsprache dient dazu, genau beschreiben zu können, wie eine Fremdstruktur aussieht, und genau angeben zu können, was damit geschehen soll. Das muß meistens Feld für Feld in vielen Einzelschritten geschehen. Die Vorschriften zur Umwandlung einer bestimmten Fremdstruktur werden zusammengefaßt in einer Import-Parameterdatei. Beispiel: MAB2.AIM. Diese und etliche andere werden mitgeliefert.

Programmierer haben aber auch die Möglichkeit, Fremddaten mit anderen Programmiersprachen, z.B. Perl, in allegro-Daten umzuwandeln, denn die allegro-Struktur ist genau dokumentiert.

Die Importsprache wird im Kapitel 11 des Handbuchs beschrieben. Ausgeführt wird die Arbeit vom DOS-Programm IMPORT.EXE. Dieses wandelt nur um, es mischt nicht in die Datenbank ein! Das macht das Programm UPDATE.EXE oder a99.exe (mit der FLEX-Funktion update). Importieren ist also immer ein zweistufiger Vorgang.

 

7. INI-Datei

Hier kann man nun wirklich nicht von einer "Sprache" reden! Es ist nur eine Sammlung von Kommandos, die dem Programm a99 bzw. alcarta alles mitteilen, was es über eine konkrete Datenbank wissen muß, damit es sie öffnen und eine Sitzung beginnen kann.Für jede Datenbank kann es mehrere INI-Dateien mit unterschiedlichen Einstellungen, z.B. Berechtigungen, geben. Als Vorlage für eine neue INI-Datei kann man A99.INI nehmen, in der alle Kommandos kommentiert sind.

 

8. Makrosprache

Die Makrosprache der Windows-Programme und von avanti heißt FLEX. Damit kann man Vorgänge aller Art automatisieren und dann per Knopfdruck oder Mausklick aufrufbar machen. Das  ist quasi die oberste Ebene des Programmierens. Dieses System ist so mächtig, daß nun die Programme a99 und alcarta nicht mehr durch immer neue Buttons und Menüpunkte erweitert werden müssen, sondern neue Funktionen werden mit FLEXen eingerichtet, und das können erfahrene Anwender für ihre Zwecke selber tun oder modifizieren!. Sogar die kompletten Funktionen für Ausleihe, Erwerbung und Zeitschriftenverwaltung wurden mit FLEX geschrieben. Menüs werden dann als RTF-Textdateien erstellt, in denen durch besondere "Auszeichnungen" die FLEX-Aufrufe eingebettet sind:

 

9. Textauszeichnung

Für a99/alcarta : RTF

Die Hilfetexte des Windows-Systems sind RTF-Dateien, auch der Text, den Sie gerade lesen: die Datei heißt "sprachen.rtf". (Es gibt gute Gründe, warum hier nicht HTML verwendet wird.) Diese Art von Textdateien kann auch mit WinWord erstellt und damit eingelesen werden. Es gibt jedoch eine Reihe von Möglichkeiten, in RTF-Dateien zusätzliche Dinge einzubetten: sog. "Flips", die so aussehen wie Hyperlinks (meistens blau und unterstrichen), dahinter stecken aber dann meistens FLEXe, also Makros, die durch Anklicken ausgelöst werden können. Das ist die Technik, mit der man neue Menüs für a99/alcarta erstellen kann. Ein FLEX kann z.B. auch ein Stapelprogramm (siehe oben) starten.

Jeden Hilfetext kann man sich auch so ansehen, wie er "wirklich" aussieht. Dazu gibt man im Schreibfeld den Befehl  hname.rtf ein. Normalerweise braucht man nur ".rtf" an den Namen anzuhängen, der im Schreibfeld (unter diesem Textfenster) sowieso angezeigt wird! Dann sehen Sie die Auszeichnungen und am Ende die wichtigen Zeilen für die Flips. Schauen Sie sich als Beispiel die Datei table.rtf an, einmal mit Auszeichnung, einmal normal (ohne Auszeichnung).

Und noch mehr: Man kann eine RTF-Datei auch direkt hier im Anzeigefenster bearbeiten und wieder speichern! Dazu ist es aber sehr wichtig, die Datei mit .rtf geladen zu haben (der Hintgergrund ist dann gelb), sonst gehen die Flipzeilen verloren (die werden nur sichtbar, wenn man .rtf an den Namen gehängt hat).

Empfehlung: Bearbeiten Sie RTF-Dateien entweder direkt im Anzeigefenster oder nehmen Sie wordpad.exe als Editor. Mit WinWord geht's zwar auch, aber die RTF-Dateien werden dann ungeheuer groß und funktionieren u.U. gar nicht.

Mit WinWord kann man erste Entwürfe einer neuen RTF-Datei machen, aber den Feinschliff macht man damit nicht.

Wenn Sie ein eigenes Menü machen wollen: Nehmen Sie eins der vorhandenen, z.B. das für die Tabellenerzeugung oder das für die Exportfunktionen, und ändern Sie für Ihre Zwecke alles.

Für Web-Anbindung : HTML

Als Textauszeichnungsverfahren für Web-Zugänge wird natürlich HTMLbenutzt, denn RTF ist dort nicht verwendbar. Das typische für Web-Datenbankzugänge ist, daß die HTML-Dateien dynamisch erstellt werden: jedes Bild, das der Endnutzer sieht, ist eine neue Datei, die nirgendwo gespeichert ist und nur für diesen einen Moment entstanden ist. Die Erstellung wird durch die verwendete Skriptsprache, durch FLEX oder durch die Exportsprache geleistet, oft durch alle drei zusammen. Wer Web-Zugänge gestaltet, bewegt sich daher in einem vierdimensionalen Raum. Und das ist nicht jedermanns Sache. Das Paket PHPAC umfaßt einen vollständigen Satz von PHP-, HTM- und APR-Dateien, der unmittelbar für Datenbanken mit A-Schema einsetzbar ist. Als einfachste Muster gibt es in dem Paket die Dateien ask.htm (fragt vom Nutzer eine Nummer ab) und show.php (nimmt die Nummer entgegen, sucht den Satz heraus und zeigt daraus bestimmte Datenfelder an). Dieses instruktive Grundmuster ist nicht nur für das A-Schema anwendbar.

 

10. Sonstiges

Es gibt noch so einige Dateien, die man nicht als Programme bezeichnen kann, mit denen aber den Programmen etwas mitgeteilt wird. Da sind etwa die

  • Formulardateien (Typ .frm), in denen steht, welche Eingabe- und Verarbeitungsformulare der Nutzer haben soll und was für Felder darin vorkommen.
  • ViewListen (Typ .vw): ein sehr mächtiges Konzept zum Präsentieren umfangreicher Auswahlen, Menüs und anderer Listen. Beispiele sind QUICK.VW (Schnellwahl wichtiger Funktionen)
  • Phrasendateien, in denen Textbausteine stehen, die sich der Nutzer selber angelegt hat, aber auch die Belegung der acht "Flip-Buttons" unter dem Auswahlfeld. Normalerweise heißt die Datei phrase.a99 und liegt auf dem Startverzeichnis des Nutzers.
  • ·UIF-Dateien (User Interface Files), in denen die Beschriftungen der Buttons, die Menüzeilen und die Fehlermeldungen stehen. Die UIF-Datei für das Programm a99, das Sie gerade benutzen, heißt UIFEGER (bzw. UIFEENG, wenn Sie in Englisch arbeiten).

Im Online-Hilfesystem gibt es einen Komplett-Überblick aller Dateien, in dem Sie sich über alles informieren können.

 

11. Und SQL?

SQL ist dier bekannteste Sprache für den Umgang mit relationalen Datenbanken. allegro-C ist kein relationales System, es hat sogar mit dem Konzept sehr wenig Ähnlichkeit (sonst hätte man sich die Entwicklung ja sparen können.) Mehr zu dem Thema in einer Vergleichenden Gegenüberstellung.

Viele der Aufgaben, die SQL löst, z.B: das Suchen, Ändern, Einbringen von neuen Daten, werden bei allegro in adäquater Weise durch die Makrosprache FLEX gelöst.

 

12. Und XML?

Damit hat allegro nicht direkt etwas zu tun. Sicher, XML wird als Datenwerkzeug der Zukunft allenthalben gepriesen. XML allein ist aber wertlos, es müssen Werkzeuge hinzutreten, die eine XML-Struktur definieren (DTD oder XML-Schema - das würde einer Konfiguration entsprechen) und die mit den in XML strukturierten Daten etwas anfangen können. Für letzteren Zweck wäre XSLT (incl. XPATH) einzusetzen, eine Art Exportsprache, mit der man aus korrekten XML-Daten vielerlei Endprodukte verfertigen kann. XSLT kann weniger und mehr als die Exportsprache, je nach Sichtweise und Problemstellung, es ist aber vollkommen anders. XSLT-Skripte haben ein viel größeres Volumen als Exportparameter, sind scheinbar Klartext und doch weniger durchsichtig, weil viel abstrakter und indirekter.
Nimmt man alle notwendigen Dinge zusammen, so haben diese einen Umfang, der den des allegro-Systemhandbuchs um ein Mehrfaches übertrifft. Das Handbuchkapitel 10 über die Exportsprache hat z.B. 60 Seiten, ein umfassendes Handbuch für XSLT bringt es leicht auf an die 1.000.
XML ist nach unserer Ansicht nicht für den Gebrauch innerhalb einer Datenbank und schon gar nicht für das manuelle Eingeben von Daten geeignet. Dafür wurde es ja auch nicht entwickelt. Es ist für das Strukturieren von komplexen Dokumenten und für die Datenkommunikation gedacht. Das Exportieren von Daten mit XML-Tags jedoch, sowie auch das Umwandeln (Importieren) von XML-strukturierten Dateien ist für allegro ein normaler Export bzw. Import (siehe oben). Was man dafür braucht, sind Export- bzw. Import-Parameterdateien oder auch Skripte in Perl o.a., keine neuen Programme oder Komponenten. Ab V24.4 gibt es eine sehr einfache Methode zum Produzieren von XML-Exportdaten.
XML arbeitet mit Unicode als Zeichencodierung. allegro-Anwender können Unicode-Daten exportieren bzw. importieren! Es ist seit V23.2 auch möglich, Unicode innerhalb der Datenbank zu verwenden.



B. Eversberg 2009-02-27




[i] zuletzt aktualisiert: 08.04.2011
Email: ub@tu-bs.de