Adimens-Prog C für Atari ST

Nach dem Datenbankprogramm Adimens und der dBase-ähnlichen Datenbankkommandosprache Aditalk erschien nun auch die Produktlinie Adimens Prog für die Entwicklungspakete Mark Williams C, CCD-Pascal und GFA-BASIC. Bei Adimens-Prog handelt es sich um eine Befehlsumgebung, mit der die Datenbankprogrammierung unterstützt wird, wie auch um erweiterte Hilfsfunktionen zur Programmierung der GEM-Umgebung. Der Verlag Markt & Technik vertreibt das 2 Disketten enthaltende Paket mit einem deutschen Handbuch, das 392 Seiten umfaßt.

Adimens-Prog ist keine Neuentwicklung für den ATARI ST. Die Adimens Datenbank existiert schon einige Jahre auf UNIX, VAX und MSDOS-Systemen. Aus diesem Grund ist auch die Zweiteilung des Handbuches in einen GEM-PROG und einen PROG-Teil zu verstehen. Der vordere kleinere GEMPROG-Teil behandelt auf 84 Seiten u.a. die 65 GEMPROG Funktionen. Der hintere Teil behandelt neben Grundsätzlichem auf 296 Seiten 36 PROG-Funktionen (eigentliche Datenbankzugriffe) und 104 Utility-Funktionen.

GEMPROG

Im GEMPROG-Teil werden zuerst die aus Adimens und Aditalk bekannten Programme Init (Datenbankdefinition). DRC (GEM-Maskenerstellung) und REORG (Reorganisieren der Datenbank) erklärt. Mit diesen von Adimens ST und Aditalk bekannten Programmen ist es möglich, die eigenen Datenbanken unabhängig vom eigentlichen Benutzerprogramm zu erstellen bzw. zu warten. Das Programm INIT liefert neben den internen Strukturen auch die Deklarationen (Konstanten [Filenamen und Merkmalsnamen] und die Typen [structs]) zum direkten Einbinden in das Benutzerprogramm.

Der Programmierer hat auf diese Weise die Möglichkeit einer recht einfachen Erstellung und Änderung der Datenbank ohne allzu großen Programmieraufwand.

Auch kann die Datenbankstruktur hinsichtlich ihrer Funktionstüchtigkeit in Adimens oder Aditalk getestet werden. Es ist lediglich zu beachten, daß in Adimens-PROG einzelne Zeichen (z.B. Space) nicht Bestandteil von Merkmalsnamen sein dürfen, dies wird jedoch schon im INIT-Programm überprüft.

Danach folgt die Beschreibung der einzelnen GEMPROG-Funktionen. Diese besteht aus Aufruf (incl. Datentypen), Beschreibung der Parameter, bei einigen Funktionen mit einem kurzen Beispiel. Bei einigen Funktionen ist die Beschreibung etwas zu dünn ausgefallen. So muß bei der Funktion INIT RESOURCE (zum Initialisieren der GEMPROG-spezifi-schen Resourcen) im gleichen Directory die unveränderte Datei GEMPROG.RSC vorhanden sein. Dies läßt meiner Meinung nach dem Programmierer zuwenig Spielraum für eigene Gestaltung, denn in dieser Datei ist auch der Adimens-Desktop abgelegt und kann danach mit draw desktop gezeichnet werde. Hier wäre eine Aufspaltung in mehrere Teilfunktionen eventuell günstiger gewesen. Gleiches gilt für die Funktion OPEN DATA BASE, die die Resourcen der Datenbank (Icons) initialisiert. Nach diesen beiden Funktionsaufrufen hat man quasi den Adimens-Exec Bildschirm. Der INIT RESOURCE Aufruf ist grundsätzlich nötig, um GEMPROG-Funktionen aufrufen zu können, und der OPEN DATA BASE-Aufruf erledigt das Einlesen der Masken und Link-Datei. Ohne die letztere Funktion wären sämtliche Maskenfunktionen (List GEM Mask, Read GEM Mask etc.) nicht mehr lauffähig. Andere Funktionen, die diese Nebentätigkeiten erledigen, existieren nicht. Dies führt im Endeffekt dazu, daß der Programmierer entweder weitgehend auf die GEMPROG-Funktionen verzichtet oder eine der Adimens-Execoberfläche sehr ähnliche Benutzeroberfläche in sein Programm integriert. Es ist z.B. nur durch Kunstgriffe möglich, auf das Zeichen aller Dateiicons bei OPEN DATABASE zu verzichten.

Wesentlich offener präsentieren sich dagegen Funktionen, die die sogenannten Soft Keys (d.h. auf dem Bildschirm dargestellte Funktionstasten) verwalten. Es existiert eine einfache Funktion, mit deren Hilfe in einer Zeile sämtliche Belegungstexte gesetzt werden können und eine zum Zeichen aller oder einer einzelnen Funktionstaste. Auch die von Adimens bekannten Berechnungen über eine Datei hinweg sind als Bibliotheksfunktionen integriert. Damit können in einer von außerhalb des Programms (über Tastatur oder von einer Datei) eingegebenen Rechendefinition z.B. in einem Fibu-Programm, Mehrwertsteuerbeträge automatisch nachgerechnet bzw. korrigiert wie auch in einem Lagerverwaltungsprogramm die Bestände automatisch auf den neuesten Stand gebracht werden. Nicht nur die vorgegebene Reihenfolge der Merkmale (bei der Eingabe) kann durch eine vorgegebene Funktion verändert werden, sondern es können wie bei Adimens einzelne Merkmale ausgeblendet werden. Genauso wie man eine bestimmte Rechenformel auf seine Datensätze einwirken lassen kann, ist es möglich, bestimmte Ausschlußwahlbedingungen zu treffen. Diese können auch von außen getroffen oder eingelesen werden. Mittels einer einfach anzuwendenden Funktion kann man dann seinen gesamten Datenbestand auf dieses Kriterium testen. Dies läßt sich zum Beispiel gut dazu verwenden, um in einer Adreßverwaltung bestimmte Personengruppen herauszufil-tem. Das Anzeigen von Schlüssel und Datei in der Infozeile und von freiem Speicher, Heap und einer frei definierbaren Zeile in der Infobox unten rechts (siehe Adimens-Exec) wird ebenfalls durch vorgegebene Funktionen übernommen.

Daneben ist eine ganze Sammlung allgemein verwendbarer Funktionen vorhanden. Neben 4 Funktionen zum Setzen und Löschen von Objektstatus und Flags sind 6 Funktionen zur Dialogboxverwaltung vorhanden, die die Arbeit mit Dialogboxen noch weiter vereinfachen. Es handelt sich hierbei um integrierte Funktionen der AES-Funktionen formdo, objcdraw und objcchange. Auch existieren einfache Funktionen zur Überwachung des Druckers, zum Senden von Strings oder einzelner Zeichen. Das Bewegen und Zeichnen von Desktopobjekten wird von vorgegebenen Funktionen übernommen.

Das INIT-Modul, Adimens-Anwendern sicherlich gut bekannt.

ADIMENS-PROG

Zu Beginn werden allgemeine Zusammenhänge über das Konzept der Datenbank erklärt, so die Stellung eines Datenbanksystems in einem Rechner-Programmsystem wie auch das Gesamtkonzept von Prog. Prog ist demnach ein für spezielle Anwendungen zur Verfügung gestelltes Werkzeug von , das auch zur Entwicklung und Wartung von EXEC. PRG Verwendung findet. Die Endprodukte von Prog stehen somit parallel zum Exec-Programm.

Neben einer alphabetischen Auflistung aller PROG-Funktionen findet man hier auch ein Schaubild über Funktionszustände der Datenbank. Dieses Schaubild ist sehr wichtig. Aus ihm geht hervor, zu welchem Zeitpunkt ein Zugriff auf die Datenbank neu initialisiert werden muß, oder welche Funktionen auf einen Satz positionieren. Anhand kurzer Programmierbeispiele wird sehr schön das Zusammenspiel verschiedener Datenbankfunktionen erläutert. Es werden detailliert die Strukturen der Datenfiles und Schlüsselfiles offengelegt. Es werden ausführlich Begriffe wie Merkmalsnummer, Sortiermerkmal oder Datensatzvariable erläutert. Die PROG-Bibliothek bietet einen großen Umfang an Funktionen zur Programmierung der Datenbankschnittstelle. Es sind Funktionen vorhanden zum Ansprechen der Datenbank, zum Suchen mit Schlüssel, Positionen, Verändern zum Löschen von Datensätzen. Diese werden auch mit TOS-Maskenbildschirmen unterstützt (nicht identisch mit den Dialogboxmasken aus GEMPROG). Diese Masken sind mit den Masken identisch, wie sie in Aditalk erscheinen sie werden primär durch das INIT-Pro-gramm in ihrem Aussehen definiert. Aber auch Statusinformationen, Fehlercodes oder das Nullsetzen des Datenbankpuffers geschieht über vorgegebene Funktionen.

Utility-Bibliothek

Diese Bibliotheken enthalten alle Hilfsroutinen, die zur Hintergrundarbeit notwendig sind. Zum großen Teil bauen die Funktionen aufeinander auf. Die einfachsten Funktionen manipulieren Speicherbereiche, allozieren Speicher oder wandeln Datentypen ineinander um. Allein schon die Verwendung der landesspezifischen Country-Info-Struktur mit den entsprechenden Routinen zur Einstellung der landesspezifischen Darstellungsweisen läßt erkennen, daß man hier in die Toolbox professioneller Softwareentwickler greifen kann. Es existieren Funktionen zum Lesen von Inhaltsverzeichnissen, zur Bearbeitung von Dateien, zur Eingabe über Tastatur, zur Ausgabe primär über den Bildschirm, Routinen zur Auswahl von Elementen einer Liste, zu Operationen mit Mengen (Maskenelementen), zur Funktionstastensteuerung auf TOS-Bildschirm) und eine große Anzahl [26] von Stringoperationen. Es >ind einfache Funktionen wie das Aneinanderhängen oder Kopieren von Strings wie auch Funktionen zum Löschen oder Kopieren von Teilstrings vorhanden. Ebenso gibt es Funktionen zum Testen zweier Strings auf Gleichheit bzw. zum Sortieren entsprechend ihrer lexikographischen Reihenfolge. Konvertierungen in z.B. Groß- oder Kleinbuchstaben sind natürlich auch vorhanden. Diese Stringmanipulationen lassen kaum noch Wünsche offen. Die recht aufwendigen Dialogroutinen dürften nur für TOS-Programmierer interessant sein. Bei den abgedruckten Headerfiles sollte vor allem das abgedruckte Headerfile import.h Beachtung finden, hier wird nämlich die gesamte Programmiersprache C in eine Art Pascal umdefiniert. Um das abgedruckte Listing von miniexec.c (Schmalspurversion von Exec V.2.2) überhaupt verstehen zu können, ist das Verständnis dieser Umdefinition wesentlich. Das gesamte Listing von miniexec.c zeichnet sich primär durch eine praktisch fehlende Kommentierung aus, trotzdem ist es übersichtlich programmiert und zu verstehen. Des weiteren wird der Sourcetext für eine TOS-Applikation mitgeliefert, primär wohl, um die Ein-/Ausgabeoperationen und die Maskenverwaltung aus der PROG-Bibliothek zu veranschaulichen.

Zusammenfassung

Die Erklärungen zu den Funktionen sind gerade im PROG-Teil des Handbuches sehr umfassend und ausführlich. Man ist beim Erstellen einer Datenbank auf das Vorhandensein eines INIT-Programmes und bei der Wartung auf das Vorhandensein eines REORG-Programmes angewiesen. Bei Verwendung von GEM-PROG-Routinen benötigt man zusätzlich noch das DRC-Programm und das File GEMPROG.RSC. Es existiert keine Funktion zum Erstellen einer Datenbank. Wenn nun kommerzielle Software mit diesem Paket entwickelt wird, gibt es für die Vertriebsform zwei Möglichkeiten. Entweder man gibt das entwickelte Programm ohne die Hilfsprogramme ab und weist auf das Vorhandensein dieser Programme in Adimens ST oder Aditalk ST hin, oder man bezahlt an die ADI-Software GmbH eine Lizenzgebühr in Höhe von 1800.- DM für die Weitergabe einer unbegrenzten Anzahl dieser Programme. Welche Regelung bevorzugt wird, muß jeder mit sich selbst ausmachen. Bei der Verwendung von GEMPROG-Routinen fällt auf, daß eine wünschenswerte Flexibilität noch bei manchen Funktionen fehlt. Je weiter man sich vom Adimens look-alike Desktop entfernt, desto stärker steigt der Programmieraufwand. Es ist zum Beispiel nicht einzusehen, warum das Einlesen der Datenbankmasken und der LNK-Datei mit dem Zeichen von Desktop-Icons in eine Funktion verpackt sein muß. Einige PROG-Funktionen und viele Utility-Funktionen sind nur in einer TOS-Umgebung sinnvoll einzusetzen und in einer GEM-Umgebung eigentlich überflüssig.

Bezugsadresse:

Markt & Technik Hans-Pinsel-Str. 2 8013 Haar b. München


Joachim Welters
Aus: ST-Computer 11 / 1988, Seite 145

Links

Copyright-Bestimmungen: siehe Über diese Seite