Individuelle Datenbankanwendungen mit GEM-Flair - die neuen Hochsprachen-Schnitt-stellen machen's möglich. TOS stellt Ihnen die SQL-Library für Omikron-Basic, die dB-MAN-C-Library für Turbo-C und DBPROG für SPC-Modula-2 vor.
Von Michael Bernards und Martin Backschat
Jeder, der sich mit Datenbanken beschäftigt, ist schon mal über den Namen »dBase« gestolpert. Dieses sehr leistungsfähige Programm beherrscht seit Jahren die Datenbankszenerie auf dem MS-DOS-Sektor. Auf dem ST ist dBMAN der bei weitem verbreitetste Vertreter des dBase-Standards. Seit kurzem bietet Computer Mai nun die dB-MAN-C-Lib für Turbo-C an. Diese Bibliothek erlaubt Ihnen, die Datenbankfunktionen von dBMAN in eigene C-Programme einzubinden. C-Lib ist eine fast identische Umsetzung der dBC-III-Library für C-Compiler unter MS-DOS. Dies macht auch die mitgelieferte Dokumentation deutlich, die für die dBC-III-Library geschrieben wurde. Die wenigen Änderungen, die bei der Übertragung auf den ST entstanden, sind in einer Textdatei auf Diskette aufgezählt. Auf der Diskette befinden sich die dazugehörigen Header-Dateien und ein Programmbeispiel, das alle Routinen demonstriert. Zudem erhalten Sie noch eine schnelle Library für BCD-Arithmetik.
Die dBMAN-C-Lib stellt dem Programmierer fast 40 Funktionen zur Verfügung. So lassen sich Datenbanken und Indexdateien anlegen, öffnen und schließen. Auf einzelne Datensätze greifen Sie sequentiell oder über einen Schlüssel zu -durch eine zusätzliche Index-Datei, wie sie dBase oder dBMAN erzeugen.
Außerdem existieren Funktionen, um die Struktur einer beliebigen Datenbank und die Anzahl der vorhandenen Datensätze zu ermitteln. Zum Lesen eines Datensatzes bietet die Library vier Varianten. Zum einen erhalten Sie den Datensatz direkt über die Datensatznummer. Zweitens läßt sich ein Datensatz über die Schlüsselsuche ermitteln. In einer Datenbank, die beispielsweise Adressen enthält und über den Namen indiziert ist, suchen Sie mit dem Aufruf einer einzigen Funktion der Library etwa einen »Hans Meier«. Sie erhalten den Datensatz dann in einem Puffer zurück.
Mit den letzten beiden Varianten lesen Sie den nächsten bzw. den vorherigen Datensatz. Die Reihenfolge ist dabei nicht physikalisch (sequentiell), sondern über eine Indexdatei festgelegt. Somit brauchen Sie sich auch nicht mehr um die Sortierung zu kümmern. Steht der richtige Datensatz im Speicher, lesen Sie mit speziellen Routinen die einzelnen Felder aus. Die dBMAN-C-Lib bietet für alle Datentypen Konvertierungsroutinen. Den so ermittelten Datensatz können Sie nun auf das gewünschte Ausgabemedium schicken. Um die Datensätze in absteigend sortierter Reihenfolge zu erhalten, ermitteln Sie mit einer C-Lib-Funktion den letzten Schlüssel einer Indexdatei und arbeiten sich rückwärts durch die Datenbank.
Die Bibliothek bietet auch Funktionen, um eigene Datenbanken zu erzeugen und mit eigenen Indexdateien zu versehen. Darüberhinaus lassen sich Datensätze an-hängen, einfügen und löschen. Datensätze werden logisch oder physikalisch gelöscht. Die erste Methode markiert lediglich den Datensatz als gelöscht. Erst die PACK-Funktion entfernt diese markierten Datensätze physikalisch. Leider enthält die Library nicht alle Funktionen des dBMAN bzw. dBASE. Wollen Sie beispielsweise die Datenbank sortieren (dBMAN-Befehl SORT), so bleibt Ihnen nichts anderes übrig, als selbst Hand anzulegen. Ebenso ist auch die Suche ohne Indexdatei in der Library nicht vorgesehen.
Die dBMAN-C-Lib ist ein sehr leistungsfähiges Werkzeug zur Einbindung von Datenbanken in eigene C-Programme. Besonders Programmierer, die zu einem so verbreiteten Datenbanksystem wie dBASE lil/dBMAN kompatibel sein möchten, kommen auf dem Atari ST um die dBMAN-C-Library nicht herum. Der Preis von 1498 Mark für die Single-User-Version und 1998 Mark für die Multi-User-Version mag sehr hoch erscheinen und spricht bestimmt nicht den Hobby-Programmierer an, aber die Leistungsfähigkeit rechtfertigt den Preis zumindest teilweise.
Name: dBMAN C-Lib
Sprache: Turbo-C
Hersteller: Computer Mai
Preis: 1498/1998 Mark
Stärken: Zugriff auf dBASE III- und dBMAN-Datejen □ BCD-Library □ einfach zu installieren und handzuhaben
Schwächen: Hoher Preis
Fazit: Leistungsfähige Spracherweiterung für den professionellen Einsatz.
Der LIBRARY-Befehl des Omikron-Basic gestattet es, den Sprachumfang um ein bestimmtes Gebiet zu erweitern. So stellt Omikron beispielsweise Spracherweiterungen für spezielle Mathematik- und MIDI-Anwendungen bereit. Um auch der Anforderung an eine Programmiersprache in Sachen Datenbankprogrammierung gerecht zu werden, hat Omikron nun die SQL-Library veröffentlicht. Diese erlaubt dem Programmierer auf einfachste Art, eigene Datenbankprojekte unter Omikron-Basic zu schreiben. Mit den leistungsstarken Befehlen entstehen komplexe relationale Datenbanken.
Der Begriff »SQL« (Structured Query Language) bezeichnet eine normierte Datenbankabfragesprache, die bereits erfolgreich auf verschiedenen Computersystemen implementiert ist. So steht Ihnen SQL über die Datenbanksysteme »Oracle«, >Quint/SQL«, »INGRES« und »Regent Base 2« zur Verfügung. Der Vorteil eines einheitlichen Dialektes liegt auf der Hand: Programme lassen sich ohne große Probleme zwischen SQL-Implementationen austauschen.
Die SQL-Library für Omikron-Basic benötigt den SQL-Interpreter, der als eigenständiges Programm im Lieferumfang enthalten ist. Dieser Kern benötigt über 300 KByte Speicher und enthält die Funktionen, die für den Betrieb unter SQL nötig sind. Die Library stellt lediglich ein Interface zwischen Basic und dem SQL-Kern dar.
Alle Kommandos von SQL halten sich an ein striktes Konzept, das die Reihenfolge der Befehlskomponenten und ihre Kombinierbarkeit genauestens festlegt. Jedes SQL-Kommando besteht aus mehreren Komponenten. Als erstes kommt die Befehlsbezeichnung, die aussagt, um welche Art von Kommando es sich handelt. So gibt es Befehle zur Erzeugung von Datenbanken und Indizes, zum Einfügen eines neuen Datensatzes, zur Selektion, Ändern, Löschen eines Datensatzes, zur Datenbank-Sortierung und zum Zusammenfügen mehrerer Dateien. Nach der Befehlsbezeichnung folgen die Feldnamen einer oder mehrerer Tabellen, auf die sich das Kommando beziehen soll. Bei vielen Befehlen lassen sich außerdem Bedingungen angeben, welche die Wirkung des Befehls auf bestimmte Einträge einschränkt. Die WHERE-Bedingung verknüpft beispielsweise mehrere Felder durch Vergleichsoperatoren. Die Anweisung SELECT * FROM TelBuch WHERE Vorwahl = MAX(Vorwahl); besagt:
Die Einbindung der Library in ein Basic-Programm ist ebenso leicht wie die Programmierung einer Datenbankanwendung. Das folgende Listing stellt beispielsweise ein Gerüst für ein SQL-Programm dar:
LIBRARY Sql_Lib,"OM-SQL.LIB"
Sql_Init(20)
' eigene Initialisierungen,
' wie Felder dimensionieren...
Sql_Eof=0
WHILE NOT Sql_Eof
Sql "SELECT TName, FName FROM Fields WHERE FName='F*';"
IF NOT Sql_Eof THEN
PRINT "Tabelle: ";Sql$(0),
PRINT "Feld: ";Sql$(1)
ENDIF
WEND
Über die SQL-Library lassen sich leistungsstarke Datenbankprogramme entwickeln. Auch Einsteiger können nach kurzer Einarbeitungszeit bereits eigene Projekte verwirklichen. Das über 100 Seiten umfassende Handbuch weist Einsteiger in die Datenbankprogrammierung ein und enthält eine ausführliche Befehlsreferenz. Für den Preis von 298 Mark ist die SQL-Library ein günstiger Einstieg in eine leistungsfähige Datenbankabfragesprache mit Verwandten auf nahezu allen Computersystemen.
Name: SQL-Library
Sprache: Omikron-Basic
Hersteller: Omikron
Preis: 298 Mark
Stärken: Hält sich an SQL-Standard □ einfache Basic-Einbindung □ ausführliches Handbuch
Schwächen: SQL-Kern belegt 300 KByte
Fazit: Leistungsfähige und einfach zu bedienende SQL-Implementation
Zum bekannten Datenbanksystem »Adimens« gibt es für verschiedene Sprachen sogenannte AdiProg-Programmierschnittstellen, um die Funktionen der Datenbank für eigene Anwendungen verfügbar zu machen. Diese Systeme gibt für alle wichtigen Hochsprachen. Für das SPC-Modula-2 gibt es jetzt das DBPROG von Advanced Applications Viczena.
Diese Implementation stellt dem Programmierer eine Fülle nützlicher Funktionen zur Verfügung, um Datenbankanwendungen zu entwickeln. Die Datenbankstruktur legen Sie zunächst mit dem beigelegten »Init«-Programm an. Darin geben Sie die Merkmale und Schlüsselworte der Datenbank an und legen die Datei Verbindungen fest. Mit Hilfe der Programmierschnittstelle schreiben Sie eigene Anwendungen, die Datensätze einfügen, verändern und löschen, Listen erzeugen und etwa eine Serienbriefverwaltung verwirklichen. DBPROG besteht aus verschiedenen Funktionsebenen. Die unterste Ebene stellen die »Dbs«-Routinen und der eigentliche Adi-Kern namens »KERN.IMG« dar. Dieser Kern enthält Funktionen zur Bearbeitung von Datenbanken und Erzeugung von Masken und Listen unter dem Multitasking-Fenstersystem SSWiS. Er umfaßt etwa 65 KByte und wird erst zur Laufzeit eingebunden (nachgeladen). Das hat den Vorteil, daß das eigentliche Programm kompakt bleibt. Andererseits lädt die Anwendung stets die vollen 65 KByte nach, auch wenn sie nur einige Funktionen benötigt. Die »Dbs«-Routinen stellen die direkte Verbindung zum C-Kern des DBPROG her. Sie erlauben z. B. das Öffnen einer Datenbank, Suchen und Einlesen von Datensätzen in Puffer etc.
Ein weiterer Bestandteil von DBPROG ist das Modulpaket »WP-Prog«. Dabei handelt es sich um ein System von sechs hierarchisch aufeinander aufbauenden Modulen, die auf verschiedenen Ebenen die Bearbeitung von Texten unterstützen und die Sie auch unabhängig vom DBPROG benutzen können. Die Module benutzen dabei das Format des Textverarbeitungsprogramms »1st Word Plus« (Versionen 2 und 3) oder ASCII.
Mit den Funktionen der untersten Ebene »WPCode« konvertieren Sie zwischen den verschiedenen Formaten. Zur Auswahl stehen u. a. das Signum-, TeX- und Timeworks-Format. Mit den Funktionen von »WPParam« konfigurieren Sie alle Einstellungen, die Sie sonst in 1st Word Plus festlegen. So z. B. Seitenlängen, Lineale, Fußnoten etc. »WPPrint« erlaubt das Schreiben und Lesen von Wordplus-Dokumenten. Die Funktionen unterstützen alle Formate und Schriftarten, Grafiken, sowie das GEM Scrap-Directory. »WPFStr« enthält verschiedene Routinen, mit denen Sie Textzeilen formatieren. Mit den höheren Routinen des WPProg lassen sich z. B. Serienbriefe anfertigen und im Wordplus-Format ausdrucken. Weitere Module erzeugen automatisch einen Index.
Das »ListLib«-Modul stellt einen Listengenerator zur Verfügung, der einfache Prozeduren anbietet, um in SSWiS-Fenstern Datensätze oder andere Informationen in Form einer Liste auszugeben. Um eigene Vorstellungen vom Aussehen einer Maske zu verwirklichen, steht das Modul »MaskWindows« zur Verfügung. MaskWindows enthält Mechanismen zur Verwaltung von Masken in SSWiS-Fenstern. So definieren Sie damit Objekte wie Titel, Einträge und Knöpfe. Es lassen sich auch selbst definierte Objekte einbinden, z. B. unterlegte Grafiken oder GEM-Objekte.
Die Kernroutinen von DBPROG verwalten Datensätze in Datenpuffern. Diese muß der Anwender selbst dynamisch erzeugen und verwalten. Um einzelne Einträge aus einem Datensatz zu extrahieren, sind komplizierte Konvertierungen mit den niedrigen »Dbs«-Routinen notwendig, die zudem nicht die Unterschiede zwischen C und Modula-2 berücksichtigen. EasyProg erlaubt es nun, gänzlich auf Datenpuffer zu verzichten. Zu Beginn einer Anwendung erklären Sie mit Connect-Prozeduren, welche Modula-Variablen mit welchen Merkmalen einer Datei verbunden werden sollen. Dabei korrespondiert jeder Typ, der im mitgelieferten IN-IT-Programm zu definieren ist, mit einem Modula-Typ. So repräsentiert z. B. der Typ »Geldbetrag« in Modula den Datentyp LONGREAL. Alle Funktionen der Kernroutinen, sowie nützliche Erweiterungen bietet EasyProg in entsprechend vereinfachter Form an. So rufen Sie z. B. zum Einlesen eines Datensatzes nur noch »Access« (ohne Parameter) auf. Denn durch die Connect-Prozeduren legen Sie bereits fest, wohin die Daten geladen werden.
Das »EasyMake«-Modul automatisiert die bei EasyProg vorzunehmenden Verbindungen (Connections). Dazu geben Sie als Parameter lediglich die zu benutzende Datenbank an. Daraus erzeugt Easy-Make dann ein DEFINITION- und ein IMPLEMENTATION-Modul und compiliert diese bei Bedarf sofort. Das Definitions-Modul enthält RECORD-Deklarationen, die den Dateidefinitionen aus dem INIT-Programm entsprechen. In der Implementation werden die Connections vorgenommen, sowie Prozeduren zum Öffnen und Schließen der Datenbank erzeugt. Das Anwendungsprogramm importiert dann einfach die so erzeugten Strukturen und Daten und operiert mit Variablen, die genau so heißen, wie die in »INIT« erzeugten Merkmale. Deswegen müssen die Merkmalsnamen der Modula-Syntax entsprechen. Ein Feld namens »Straße« ist nicht erlaubt bzw. müßte in der erzeugten Modula-Definition z. B. in »Strasse« umbenannt werden. Leider konvertiert EasyMake die Namen noch nicht automatisch.
Das Modul »XProg« ist nützlich, um beliebige Datenbanken zu bearbeiten, bei denen die Anwendung daher unabhängig von deren Struktur arbeiten muß. Der Clou dabei: Es macht für alle weiteren Module keinen Unterschied, ob die Datensatz-Variablen manuell, mit EasyMake oder mit XProg entstanden sind: Sie erfragen unter EasyProg einfach die Variable, die mit einem Merkmal der Datenbank verbunden wurde.
Mit »EasyCalc« werten Sie einen algebraischen Term aus. EasyCalc enthält alle Funktionen der Math-Lib des SPC-Modula, spezielle Rundungsfunktionen und einige andere. Sie können sich in der Rechnung auch auf Merkmale aus Dateien beziehen. Dies geschieht entweder unter Angabe der Datei-und Merkmalsnummer oder durch den Item-Namen, z. B. »[Bezuege]+[MWSt]*100«. Das Modul MultiSort beherrscht eine Mehrfachsortierung auf bis zu vier Ebenen. Die zu sortierenden Merkmale müssen dabei noch nicht einmal Schlüsselfelder sein. Allerdings benötigt jeder Datensatz der Liste 364 Byte Verwaltungsinformation - ein echter Speicherfresser.
Das Handbuch geht ausführlich auf das Konzept des DBPROG ein und stellt die wichtigsten Funktionen mit Beispielen vor. Das Referenzkapitel beschreibt alle Funktionen auf einheitliche Weise.
Alles in allem macht die SPC-DB-PROG für SPC-Modula-2 einen sehr guten Eindruck. Dank der vielen nützlichen Module (WPProg, MaskManager etc.) ist die Verwirklichung einer leistungsfähigen Datenbankanwendung und Serienbriefverwaltung ein Kinderspiel. Auch der Preis von 248 Mark ist nicht zu hoch angesetzt. Der Hersteller wird voraussichtlich ab Ende '90 DBPROG auch auf den PC/ AT unter dem dBASE- und Novell-Kern anbieten.
Name: DBPROG
Sprache: SPC-Modula-2
Hersteller: Advanced Application Viczena
Preis: 248 Mark
Stärken: Viele nützliche Funktionen und Module □ gute Einbindung in das Modula und das SSWiS-Konzept □ niedriger Preis
Schwächen: Benötigt sehr viel Speicherplatz
Fazit: Eine sehr preiswerte und leistungsfähige Datenbankprogrammierschnittstelle für Modula-2.
Bezugsquellen:
Computer Mai, Metzstr. 19, 8000 München
Omikron, Karl-Kirchner-Str. 46, 7534 Birkenfeld 2
Advanced Applications Viczena, Sperlingweg 19, 7500 Karlsruhe 31