Datenbanksystem dBMAN V: Die fünfte Dimension

Zur Zeit bricht eine wahre Flut von Datenbankschemen über die ST-Gemeinde herein. Nachdem erst vor wenigen Wochen Adimens in der Version 2.3 getestet wurde, sind nun zwei weitere Systeme in neuen Versionen auf den Markt gekommen. Regent Base II wird an anderer Stelle besprochen werden, hier wollen wir uns mit der Version 5 (V) von dBMAN auseinandersetzen.

Kompatibel

dBMAN ist ein sehr mächtiges Datenbanksystem. Es ist weitgehendst dBase III+-kompatibel, bietet aber noch eine große Anzahl zusätzlicher Funktionen. Außer für den ST gibt es auch noch Versionen für verschiedene andere Rechnersysteme: für PCs, Apples’ Macintosh, den AMIGA und UNIX-Systeme. Dank der eingebauten 4GL (4th Generation Language = Programmiersprache der 4. Generation) ist die Programmierung der Datenbank systemunabhängig; ein Programm, das auf einem PC erstellt wurde, läuft auch auf einem ATARI oder einer UNIX-Maschine. Diese Unabhängigkeit ist wichtig, denn die Entwicklung der Rechner geht weiter, und wer weiß, vielleicht ziert in drei Jahren beim heutigen ST-Benutzer die UNIX-Maschine TT den Schreibtisch?

dBMAN ist für professionelle Anwender konzipiert. Eine Kostprobe der Möglichkeiten, die dBMAN bietet, gibt die Finanzbuchhaltung fibuMAN, die mit dBMAN erstellt wurde. Sie wurde in einer früheren Ausgabe der ST-Computer vorgestellt.

Auch der Preis von knapp unter 1000 DM für dBMAN zeigt, für wen dieses Programm gedacht ist. Die Zielgruppe ist der kleine oder mittelständische Betrieb, der den ST als preiswertes aber leistungsstarkes System einsetzt. Jemand, der bereit ist, sich in die Programmierung einzuarbeiten, sollte allerdings vorhanden sein.

dBMAN ist in erster Linie ein Programmierwerkzeug und für Computerlaien daher nicht zu empfehlen, es sei denn, man läßt sich seine fertige Anwendung erstellen. Mit dBMAN ist es möglich, einen Großteil der dBASE III-Anwendungen für PCs auf dem ATARI zu benutzen, wenn man an die Quelltexte herankommt. Siehe zur Kompatibilität mit dBase auch Tabelle 1. Der Grad der dBase III-Kompatibilität ist bei dBMAN einstellbar. So kann man etwa festlegen, ob die Dateien im dBase-Format geschrieben werden sollen oder nicht. Ist maximale dBase-Kompatibilität eingeschaltet, ist zum Beispiel auch die Eingabe illegaler Datumsangaben möglich. Diese werden dann vor der Speicherung in ein korrektes Datum umgerechnet. Soviel zunächst zum Schlagwort dBase-Kompatibilität.

Technische Daten

dBMAN kennt fünf Datentypen; Zeichenkette, Datum, logischen Wert, Zahl, Memofeld. Die ersten vier Typen sind verständlich, aber Memofelder sind eine nette Zugabe. Dieser Datentyp besteht aus Feldern variabler (!) Länge, bis zu 64k Größe, die beliebige Texte enthalten können. Die Hilfefunktion von dBMAN arbeitet mit einer solchen Datei. Memofelder werden nicht in der Datenbankdatei selbst gespeichert, sondern in einer zusätzlichen Datei abgelegt. In der Datenbank wird nur ein Zeiger auf das Memofeld gesetzt. Durch Memofelder wird auch die Verarbeitung von großen Textmengen mit einer Datenbank möglich. Leider ist es technisch nicht machbar, einen Index über Memofelder zu erstellen. so daß die Suche nach einer Textstelle schon mal einige Zeit dauern kann, je nach Datenmenge.

Unter dBMAN stehen 10 Dateibereiche zur Verfügung, in denen je eine Datei geöffnet werden kann. Eine Datei darf bis zu 2 Milliarden Datensätze zu je maximal 4000 Bytes in maximal 128 Datenfeldern enthalten. Für den ST gibt es noch kein Speichermedium, das einen solchen Datenwust verkraftet. Zu jeder Datei dürfen beliebig viele Indexdateien geöffnet werden.

Wie in den älteren Versionen von dBMAN stehen immer noch 4 Variablenbereiche zur Verfügung. Allerdings ist jetzt die Größe dieser Bereiche in einer Konfigurationsdatei für dBMAN einstellbar. Zunächst gibt es zwei Bereiche für globale Variablen. Variablen, die dem ersten Bereich zugeordnet werden, haben kein Präfix. Variablen des zweiten Bereiches haben das Präfix ‘X.’. Die lokalen Variablen haben entweder das Präfix ‘Y.’ oder ‘Z‘ Diese zunächst etwas verwirrende Aufteilung bietet große Vorteile. Variablen, die in einer Prozedur als lokal mit dem Präfix ‘Y.’ definiert werden, stehen in einer nachgeordneten Prozedur als Variablen des ‘Z.’-Bereiches zur Verfügung (vgl. Programm-Beispiel 1). Problematisch wird die Sache durch die Kompatibilität zu dBase III. dBase kennt dieses Zuordnen von Variablen zu Bereichen nicht und verwendet keine Präfixe. Aus diesem Grund sollte man immer alle Variablen, die man nicht mit Präfix verwenden möchte, deklarieren, bevor man sie verwendet. Zur Deklaration benutzt man die reservierten Worte PUBLIC und PRIVATE, entsprechend dem Datentyp, den man verwenden möchte.

Zur internen Darstellung von Zahlen verwendet dBMAN BCD-Arithmetik (binär kodierte Dezimalzahlen), was Rundungsfehler weitgehend vermeidet. Die Genauigkeit beträgt 15 signifikante Stellen. Eine Befehlszeile oder eine Zeichenkettenvariable kann maximal 236 Zeichen enthalten.

...
*----------
PROCEDURE Mutter

* Bildschirm löschen 
Erase Screen

* Variable definieren
y.var = "Hallo"

* Wert anzeigen (angezeigt wird 'Hallo')
@ 10, 10 SAY y.var

* Unterprogramm aufrufen 
Do Tochter

* Wert noch einmal anzeigen (angezeigt wird 'Guten Tag')
@ 11, 10 SAY y.var

* Ende Mutter 
RETURN
*----------
PROCEDURE Tochter

* Wert ändern
z.var = "Guten Tag"

* Ende Tochter 
RETURN
*----------
...

Beispiellisting für eine Anwendung in dBMAN

Systemkomponenten

dBMAN ist ein Datenverwaltungsprogramm und ein Entwicklungssystem für Datenbankanwendungen zugleich. Es besteht folglich aus mehreren Komponenten.

Zunächst ist da der Interpreter, das eigentliche Programm zur Datenmanipulation. Hier kann man direkt Befehle ausführen und Daten verwalten. Es ist möglich, andere Systemkomponenten und externe Programme aufzurufen. Besonders hervorzuheben ist beim Interpreter die Vielzahl der zusätzlichen Funktionen, die die Erstellung anwenderfreundlicher Prozeduren sehr gut unterstützen.

Der zweite Teil des Systems ist der Programmeditor. Man kann entweder den integrierten Editor oder einen externen wie z.B. Tempus benutzen. Die Firma MAI, die dBMAN vertreibt, bietet diesen in einer leicht angepaßten Form als Zusatzprogramm an.

Ferner verfügt dBMAN noch über einen Masken- und einen sehr mächtigen Report-Generator. So ist es mit dem Maskengenerator beispielsweise möglich, eine Bildschirmmaske zu erstellen, die man zum Ändern von Daten mit dem Befehl ‘EDIT’ benutzt. Dabei werden dann nur die ausgewählten Felder angezeigt. Die Dateien, die der Maskengenerator erstellt, kann man in eigene Anwendungsprogramme einbinden. Mit dem Reportgenerator kann man komfortabel gestaltete Ausgabelisten und auch Etiketten erzeugen. Dabei ist ein Zugriff auf mehrere Dateien gleichzeitig möglich. Eine Erstellung von Listen per selbstgeschriebenem Programm kann in den allermeisten Fällen entfallen. dBMAN wird im Paket mit dem GREASED LIGHTNING-Compiler geliefert. Vergleicht man die Ausführungszeiten von Programmen vor und nach der Compilierung, glaubt man tatsächlich, den ‘geölten Blitz’ vor sich zu haben. So braucht dBMAN zum Hochzählen einer Variablen immerhin 2 Minuten und 38 Sekunden, während die Laufzeitmaschine nur 18 Sekunden braucht. Diese Werte sind natürlich extrem, denn den Zugriff auf die Laufwerke kann auch der schönste Compiler nicht beschleunigen. Dennoch lohnt das Compilieren fertiger Anwendungen immer.

Bild 1: Arbeitsbildschirm des Assistenten. Mausoberfläche für dBMAN.

Dokumentation

Zum Test lag dBMAN in der Version 5.10 H vor. Die Dokumentation war noch in Englisch. Das Paket besteht im Gegensatz zu früher nicht mehr aus einem Schuber mit Einlegeseiten, sondern aus zwei gebundenen Handbüchern, die mit den Disketten in Folie eingeschweißt sind. Mir persönlich gefallen die Schuber besser, sie sind stabiler, und eine aufgeschlagene Seite bleibt aufgeschlagen, während das Buch immer wieder zuklappt. Die Einteilung in zwei Handbücher ergibt sich aus dem universellen Konzept von dBMAN. Das ca. 350 Seiten starke Referenzhandbuch enthält eine kurze Einführung und eine Vorstellung der wichtigsten Möglichkeiten des Systems. Dann folgen jeweils in alphabetischer Reihenfolge die Befehle und die Funktionen. Das Referenzhandbuch hat für alle Versionen von dBMAN Gültigkeit. Im etwa 70seitigen Supplement stehen die ATARI-spezifischen Dinge wie Installation, Tastatur-, Bildschirmbelegung und noch einmal eine schrittweise Einführung in die Datenverwaltung mit dBMAN.

Beide Bücher sind stabil gebunden, haben ein sauberes Schriftbild und sind übersichtlich aufgebaut. Leider ist das Referenzhandbuch an vielen Stellen sehr sparsam mit Beispielen ausgestattet. Es ist mit dBMAN zum Beispiel möglich, eine Art von Fenstern (nein, keine GEM-Fenster) zu verwalten. Die nötigen Befehle werden zwar erklärt, aber auf die Reihenfolge der Befehle, die entscheidend ist, muß der Programmierer selber kommen. Allerdings steht laut Auskunft der Firma MAI ein deutsches Handbuch kurz vor der Vollendung. Dieses soll reichhaltiger mit Hilfestellungen ausgestattet sein.

Dennoch ist die Lektüre der Handbücher dringend anzuraten, und das Referenzhandbuch sollte beim Arbeiten mit dBMAN ständig in greifbarer Nähe liegen, besonders, wenn man gerade programmiert.

Platzbedarf

Im Prinzip läuft dBMAN auf einem ST mit mindestens 480k freiem Speicher und einem Laufwerk. So steht es auf der Verpackung. 480k freien (!) Speicher hat man aber erst im 1040er, und doppelseitig sollte das Laufwerk auch sein. Trotzdem ist der Gebrauch einer Festplatte eigentlich unabdingbar. Wenn man den Report-Generator sowie die Hilfsdateien und den Assistenten mitinstalliert, belegt das System weit über 1 Megabyte Speicherplatz und paßt somit nicht mehr auf eine Diskette. Auch mit dem Speicherplatz im Rechner hat man so seine Probleme. 1 MByte Speicher reicht normalerweise aus, nur bei der Programmentwicklung kann man manchmal Probleme kriegen, womit wir bei den Fehlern der getesteten Version wären.

Bild 2: Ein Arbeitsbildschirm aus dem Reportgenerator

Bugs

Als fleißiger Mensch habe ich mich natürlich sofort hingesetzt und einige Anwendungen entworfen, die größte ungefähr 20k. Dabei habe ich einen externen Editor (Tempus) eingesetzt. Beim fleißigen Austesten trat dabei ein unangenehmer Fehler auf. Wurde der Editor direkt aus dBMAN aufgerufen, so passierte es, daß man die Befehlsdatei plötzlich in mehrfacher Ausfertigung auf der Platte stehen hatte. Unangenehm, aber nicht lebensgefährlich. Einfach dBMAN verlassen, und die Kopien bis auf die neueste löschen.

Nach längeren Programmiersessions (4-5 Stunden) traten auch beim MEGA 4 Probleme mit dem Speicherplatz auf. Offensichtlich enthält die Speicherverwaltung noch einen Fehler, der belegten Platz nicht wieder korrekt freigibt. Dieser Fehler führte bei mir auch mindestens einmal zu Bomben. Leider war die Situation nicht reproduzierbar. Aber auch hier gibt es ein einfaches ‘Heilmittel’. Während der Kaffeepausen dBMAN verlassen und danach neu starten. Außerdem trat der Fehler nur während der Programmentwicklung auf, wo ständig verschiedene Programme aus dBMAN aufgerufen wurden. Beim normalen Betrieb dürfte nichts passieren. Ansonsten machte das Programm einen zuverlässigen und sehr guten Eindruck.

Support

Bei einem Programm wie dBMAN sind Fragen nicht zu vermeiden. Es ist also wichtig, einen kompetenten Ansprechpartner zu haben. Bei der Firma MAI ist man da in guten Händen. Bei meinen' Problemanrufen bekam ich immer eine sinnvolle und passende Auskunft, die mir bei meinen Problemen half. Auch bekam ich während des Tests eine neue Revision der Software, in der verschiedene kleine Bugs beseitigt worden waren. Man sollte nicht vergessen, solche Leistungen bezahlt man im Kaufpreis von 998,- DM mit.

Bild 3: Ein Arbeitsbildschirm aus dem Screengenerator

Fazit

Mit dBMAN erhält man ein leistungsfähiges Werkzeug zur Erstellung von Datenbankanwendungen. Die Kompatibilität zu dBase III+ öffnet den Weg zu einer Vielzahl fertiger Quellcodes, die oft auch als Public Domain (PC-SIG) erhältlich sind. Die Änderungen gegenüber dBase erleichtern die Erstellung eigener anwenderfreundlicher Routinen. Der mitgelieferte Compiler sorgt für die nötige Geschwindigkeit im täglichen Einsatz, und der gute Support der Vertriebsfirma läßt auch hoffen, daß die noch verbliebenen Fehler in der Software bald vergessen sind, und daß das deutsche Handbuch noch besser, sprich ausführlicher, als das amerikanische Vorbild wird.

Ausblick

Von dBMAN gibt es auch eine netzwerkfähige Version mit File- und Record-locking und allen sonstigen notwendigen Fähigkeiten. Damit werden wir uns auf jeden Fall noch beschäftigen. Für Anwender von Turbo-C wird hoffentlich bald eine Bibliothek erscheinen, die etwa 80 Grundfunktionen von dBMAN für dieses C bereitstellt. Der Programmierung von GEM-Anwendungen mit den Datenverwaltungsfähigkeiten von dBMAN steht dann nichts mehr im Wege. Was uns sonst noch erwartet? Spätestens am letzten Augustwochenende werden wir es in Düsseldorf auf der ATARI-Show sehen.

CSM

Bezugsadresse:

Computer MAI Weißenburger Platz 1 8000 München

In der Anzeige der Firma Computer Mai für das Programm Analyse wurde leider ein falscher Preis angegeben. Der Preis beträgt 129.- DM.

* Laufzeitvergleich dBMAN - Greased Lightning
* Dieses Programm benötigt unter
* dBMAN             2:38 min
* Greased Lightning 0:18 min

* Alles zurücksetzen 
CLEAR ALL

* Globale Variable definieren (hier eigentlich ziemlich sinnlos) 
PUBLIC CNT

* Anfangszeit nehmen 
t1 = TIME()
? t1

* Ein bischen was tun 
cnt = 0
DO WHILE cnt < 10000 
    INC cnt 
ENDDO

* Endzeit nehmen 
t2 = TIME()
? t2

Differenz ausgeben 
? TIMESUB(t2,t1)

* Benutzereingabe abwarten 
WAIT

*Ende
RETURN

Vergleichsliste zur Kompatibilität von dBMAN und dBase III+

Befehlsworte dBMAN dBase III+
ACCEPT * *
APPEND * *
APPEND FROM * *
APPEND RECORD TO *
APPEND TO *
ASSIGN *
ASSIST DO ASSIST *
AVERAGE * *
BEEP *
BROWSE * *
CALL *
CANCEL * *
CHANGE =EDIT *
CLEAR * *
CLEAR ALL * *
CLEAR GETS * *
CLEAR MEMORY * *
CLEAR SCREEN *
CLOSE * *
COMPARE TO
CONTINUE * *
COPY * *
COPY FILE * *
COPY STRUCTURE * *
COPY STRUCTURE EXTENDED *
COPYREC *
COUNT * *
CREATE * *
CREATE FROM * *
CREATE LABEL * *
CREATE QUERY *
CREATE REPORT * *
CREATE SCREEN ->MODIFY SCREEN *
CREATE VIEW *
CREATE VIEW FROM ENVIRONMENT *
DELETE * *
DIR * *
DISPLAY * *
DISPLAY FILE = DIR DISPLAY HISTORY *
DISPLAY MEMORY * *
DISPLAY STATUS *
DISPLAY STRUCTURE * *
DO * *
DO CASE * *
DO WHILE * *
EDIT * *
EJECT * *
ENCRYPT *
ERASE * *
EXIT * *
EXPORT *
FIND * *
FOR * *
FORMFEED *
GO * *
GOTO * *
HELP F10 *
IF * *
IGNORE *
IMPORT *
INDEX * *
INPUT * *
INSERT *
JOIN * *
LABEL FORM * *
LIST * *
LIST MEMORY * *
LIST STATUS *
LIST STRUCTURE * *
LOAD *
LOCATE * *
LOOP * *
MODIFY COMMAND * *
MODIFY FIELDNAME *
MODIFY LABEL * *
MODIFY QUERY *
MODIFY REPORT * *
MODIFY PROTECT *
MODIFY SCREEN * *
MODIFY STRUCTURE * *
MODIFY VIEW *
MODINDEX *
NOTE * *
ON ERROR * *
ON ESCAPE * *
ON KEY * *
PACK * *
PARAMETERS * *
PAUSE * SUSPEND
PRIVATE * *
PROCEDURE * *
PUBLIC * *
QUIT * *
READ * *
RECALL * *
REFRESH GET *
REINDEX * *
RELEASE * *
RENAME * *
REPLACE * *
REPORT FORM * *
RESTORE * *
RESTORE SCREEN *
RESUME * *
RETRY * *
RETURN * *
RUN * *
RW *
SAVE * *
SAVE SCREEN *
SEEK * *
SELECT * *
SET ALTERNATE * *
SET BELL *
SET BOTTOM MARGIN *
SET BREAK *
SET CARRY *
SET CATALOG *
SET CENTURY * *
SET COLOR *
SET CONFIRM * *
SET CONSOLE * *
SET DATE * *
SET DB3 *
SET DEBUG *
SET DECIMALS *
SET DEFAULT * *
SET DELETED * *
SET DELIMITERS * *
SET DEVICE * *
SET DOHISTORY *
SET ECHO *
SET ENCRYPT *
SET ERRCODE TO *
SET ESCAPE * *
SET EXACT * *
SET FIELDS *
SET FILTER *
SET FIXED *
SET FOOTER *
SET FORMAT * *
SET FUNCTION *
SET GROUP *
SET HEADING * *
SET HELP *
SET HISTORY SET LOGFILE *
SET INDEX *
SET INTENSITY *
SET LINECOUNT *
SET LOGFILE TO * SET HISTORY
SET MARGIN * *
SET MEMOWIDTH * *
SET MENUS *
SET MESSAGE * *
SET ORDER *
SET PAGENO *
SET PATH * *
SET PRINT * *
SET PRINTER * *
SET PROCEDURE * *
SET PUBLIC *
SET RELATION * *
SET SAFETY * *
SET SCOREBOARD *
SET STATUS *
SET STEP *
SET TALK * *
SET TITLE *
SET TOP MARGIN *
SET TOPFORM *
SET TYPEAHEAD *
SET UNIQUE * *
SET VIEW *
SHOP *
SKIP * *
SORT * *
STORE * *
SUM * *
SUSPEND * *
TEXT * *
TOTAL * *
TYPE *
UNINDEX *
UNPEND *
UPDATE * *
USE * *
VIEW *
WAIT * *
WHILE * *
ZAP * *
! *
&& *
* * *
? * *
?? * *
@...CLEAR * *
@...GET * *
@...SAY * *
@...TO * *
Funktionen dBMAN dBase III +
ABS * *
ALIAS *
APPROX *
ASC RANK *
AT * *
BAR *
BOF * *
BOX *
CDOW *
CENTER *
CHKKEY *
CHR * *
CMONTH * *
COL * *
COMSTAT *
CTOD * *
DATE * *
DAY * *
DBF * *
DELAY *
DELETED * *
DELREC * DELETED
DFLTDRV *
DISKSPACE *
DOW * *
DRAWLINE *
DTOC * *
DTOK *
DTOS *
DUPCHAR *
EOF * *
ERRCMD *
ERRCODE *
ERRLINE *
ERROR * *
ERRPRG *
ESC *
EXP * *
EXTRACT
EXTRACT2 *
FIELD * *
FIELDTYE *
FILE * *
FILENAME *
FILESIZE *
FKLABEL *
FKMAX *
FMENU *
FOUND *
FRAC *
FRAME *
GETENV *
GETNAME *
GETNO *
HMENU *
IIF * *
MFC *
IIFD *
IIFL *
IIFN *
INDEXNAME *
INKEY * *
INSET
INT * *
ISALPHA * *
ISCOLOR * *
ISLOWER * *
ISUPPER * *
KEYSTROKES *
LASTKEY *
LASTREC *
LEFT * *
LEN * *
LN *
LOG * *
LOGIN *
LOGOUT *
LONGYEAR *
LOWER * *
LPAD *
LTOC *
LTON *
LTRIM * *
LUPDATE * *
MAX * *
MIDSTR *
MESSAGE *
MIN * *
MOD * *
MODCHAR *
MONTH * *
NDX * *
NDXKEY *
NLIST *
NRANGE
NTOL *
NTOTIME *
ONKEY *
OS * *
PAGENO *
PCOL * *
PMENU *
POPWIND *
PRNFLG *
PRNSTAT *
PROW * *
PUSHWIND *
RANK * ASC
READKEY * *
RECCOUNT * *
RECEIVE *
RECLEN *
RECNO * *
RECSIZE * *
REPLICATE * *
RESTSCREEN *
RIGHT * *
ROUND * *
ROW * *
RTJUST *
RTRIM TRIM *
SAMEMONTH *
SAMEWEEK *
SAVESCREEN *
SCROLL *
SELECTED *
SMENU *
SOUNDEX *
SPACE * *
SQRT * *
SRCH *
STK *
STR * *
STUFF * *
SUBSTR * *
TIME * *
TIMEADD *
TIMESUB *
TIMETON *
TOKENS *
TOMONEY *
TONAME *
TRANSFORM * *
TRAP *
TRAPFILE *
TRIM * *
TYPE * *
UPPER * *
USERSTAT *
VAL * *
VERASE *
VERSION * *
VGET *
VMENU *
VSAY *
WCOLMAX *
WINDOW *
WOY *
WROWMAX *
YEAR * *
& * *


Links

Copyright-Bestimmungen: siehe Über diese Seite