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+
- zeigt Existenz des Befehles an. Wenn bei beiden Programmen der * steht, so stimmen die Kommandos auch in ihrer weiteren Syntax weitgehend miteinander
ĂŒberein.
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 |
* |
* |
& |
* |
* |