ING_DB
This commit is contained in:
parent
48edad2e85
commit
f24cd0c773
|
|
@ -0,0 +1,797 @@
|
|||
AMX(DABA) DABA16 AMX(DABA)
|
||||
|
||||
NAME
|
||||
amx - Einbettung der Datenmanipulationssprache AMX in "C"
|
||||
|
||||
BESCHREIBUNG
|
||||
|
||||
Einleitung
|
||||
|
||||
Die Sprache AMX stellt ein Interface zur Einbettung von Da-
|
||||
tenbankzugriffen in "C"-Programme dar und ist leicht erlern-
|
||||
bar.
|
||||
|
||||
Es werden eine Laufzeitbibliothek, i.allg. .../lib/libamx.a,
|
||||
und DABA-MUTOS-Kommandos (i.allg. amx(mutos)) bereitge-
|
||||
stellt. Durch ein solches Kommando (z.B. amx) werden bei
|
||||
entsprechend spezifizierten Optionen (Flags) ein DABA-
|
||||
Praecompiler fuer AMX und der C-Compiler "cc" (einschliess-
|
||||
lich Linker) aufgerufen. Der Praecompiler erzeugt ein guel-
|
||||
tiges C-Programm, das mit dem C-Compiler uebersetzt wird.
|
||||
Anschliessend werden die fuer die Datenbankaktionen notwen-
|
||||
digen Objektmoduln aus der Laufzeitbibliothek eingebunden.
|
||||
|
||||
|
||||
|
||||
In AMX-Programmen ist das parallele Arbeiten mehrerer Nutzer
|
||||
in den gleichen Relationen unterstuetzt.
|
||||
|
||||
Die Vorteile bei der Benutzung dieser AMX-Sprache bestehen
|
||||
in der Moeglichkeit der Realisierung laufzeiteffektiver Pro-
|
||||
gramme, in der Formulierbarkeit von Transaktionen und in ei-
|
||||
ner rekursiven Anwendbarkeit. Letzteres bedeutet, dass z.B.
|
||||
Wiederfinden und Aendern geschachtelt benutzbar sind. Aus-
|
||||
serdem sind prozedurale Probleme, z.B. die totale
|
||||
Mengenbedarfsermittlung (totale Stuecklistenaufloesung),
|
||||
elegant loesbar.
|
||||
|
||||
Alle (auch temporaere) Relationen (einschliesslich aller da-
|
||||
tenbankspezifischen Namen), die in AMX-Programmen verarbei-
|
||||
tet werden sollen, muessen zur Uebersetzungszeit bereits
|
||||
existieren. Das bedeutet, dass sie vorher mit IQL, EQL oder
|
||||
"creater" (creater(mutos)) erstellt werden muessen.
|
||||
|
||||
Mit AMX-Programmen manipulierte Relationen sind mit IQL, EQL
|
||||
oder auch AMX weiterhin bearbeitbar.
|
||||
|
||||
Uebersicht
|
||||
|
||||
Alle tupelorientierten AMX-Anweisungen sind ausschliesslich
|
||||
auf eine einzige Relation anwendbar.
|
||||
|
||||
Die Sprache AMX hat als maechtigste Operation das Bereit-
|
||||
stellen von Werten spezifizierter Domaenen aus einer u.U.
|
||||
selektierten Tupelmenge einer Relation (Wiederfinden) (re-
|
||||
trieve).
|
||||
|
||||
Die Recherche (Wiederfinden) kann alle Daten der Relation
|
||||
umfassen oder durch Selektionsbedingungen (Qualifiktionen)
|
||||
eingeschraenkt werden.
|
||||
|
||||
In einer retrieve-Anweisung kann eine Qualifikation und muss
|
||||
eine Auswahl spezifizierter oder aller Domaenen als
|
||||
target_list (Ergebnis- oder Zielliste) angegeben werden.
|
||||
Eine solche Ergebnisliste besitzen ausser der retrieve nur
|
||||
die append und die replace Anweisung.
|
||||
|
||||
Nach einer erfolgreichen Recherche, die eine Tupelmenge
|
||||
(mindestens ein Tupel) bereitstellt, wird fuer jedes dieser
|
||||
Tupel eine Aktion ausgefuehrt.
|
||||
|
||||
Die anderen tupelorientierten AMX-Anweisungen beziehen sich
|
||||
immer nur auf ein Tupel.
|
||||
|
||||
|
||||
|
||||
Es sind das Ersetzen der Werte der Domaenen eines Tupels
|
||||
(Ersetzen) (replace), das Loeschen eines Tupels (Loeschen)
|
||||
(delete), das Anzeigen eines Tupels (print) bzw. das Erzeu-
|
||||
gen eines neuen Tupels (Zufuegen zu einer Relation) (ap-
|
||||
pend), aus der Menge vorher mit "retrieve" selektierter Tu-
|
||||
pel, moeglich.
|
||||
|
||||
Des weiteren ist das Zufuegen eines neuen Tupels zur Rela-
|
||||
tion ohne vorherige Selektion nutzbar (append).
|
||||
|
||||
Es gibt weiterhin AMX-Anweisungen fuer das Eroeffnen einer
|
||||
spezifizierten Datenbank entweder mit exklusiver (alleini-
|
||||
ger) Benutzung (daba oder exclusive), ohne Sperrung oder mit
|
||||
geteilter Benutzung (shared) sowie fuer das Eroeffnen (open)
|
||||
bzw. das Schliessen (close) einer Relation.
|
||||
|
||||
Sollen in einem AMX-Programm miteinander in logischer Bezie-
|
||||
hung stehende Datenmanipulationen (i.allg. in mehreren Rela-
|
||||
tionen) ausgefuehrt werden, ist es zur Erhaltung der Date-
|
||||
nintegritaet erforderlich, Transaktionen zu formulieren.
|
||||
Eine Transaktion ist eine Folge von AMX-Anweisungen als lo-
|
||||
gische Arbeitseinheit. Es gibt jeweils eine Anweisung zur
|
||||
Spezifikation des Transaktionsbeginns (use), des Transak-
|
||||
tionsendes (commit), sowie des Abbrechens einer Transaktion
|
||||
und das Ruecksetzen (abort) und fuer das Behandeln einer
|
||||
Verklemmung (if (deadlock)).
|
||||
|
||||
Bei Transaktionsbeginn sind die beteiligten Relationen und
|
||||
die Art ihrer Benutzung (alleinig (exclusive), geteilt
|
||||
(shared) oder ohne Sperrung (nolock)) spezifizierbar. Aus-
|
||||
serdem ist u.a. das Sperrniveau (Seitensperrung (page) oder
|
||||
Relationssperrung (table)) angebbar.
|
||||
|
||||
Des weiteren sind Anweisungen zur vorzeitigen Beendigung
|
||||
eine Wiederfindungszyklusses (endretrieve), zur vorzeitigen
|
||||
Beendigung einer Tupelverarbeitung im Wiederfindungszyklus
|
||||
(nextretrieve), zum Bereitstellen der Gesamt-Tupelanzahl ei-
|
||||
ner Relation (tuplecount) sowie der maximalen Tupellaenge
|
||||
der Relation (tuplelength), und eine Leeranweisung (;) ver-
|
||||
fuegbar.
|
||||
|
||||
Neben den durch "C" bereitgestellten und von AMX unter-
|
||||
stuetzten Datentypen short (2), int (2 bei 16 Bit- und 4 bei
|
||||
32-Bit Rechnern), long(4) , float(4), double(8), char * und
|
||||
char [] (1-255) sind durch AMX zusaetzlich die mit den
|
||||
DABA-Datentypen uebereinstimmenden Typen
|
||||
|
||||
i1, i2, i4, f4, und f8
|
||||
|
||||
verfuegbar.
|
||||
|
||||
Einschraenkungen
|
||||
|
||||
Die Geschwindigkeit der AMX-Zugriffe erfordert einige Ein-
|
||||
schraenkungen. AMX gestattet Datenveraenderungen und Wie-
|
||||
derfinden ausschliesslich in Basis-Nutzerrelationen (nicht
|
||||
in Sichten!). Das Wiederfinden in Index-Nutzerrelationen
|
||||
wird unterstuetzt. Die Katalogrelationen sind, entsprechend
|
||||
definierte Befugnisse vorausgesetzt, lesbar.
|
||||
|
||||
Da nur die in einem AMX-Programm konkret benoetigten Zu-
|
||||
griffsroutinen eingebunden werden, sind keine Universallo-
|
||||
esungen, z.B. universelle Druckprogramme, realisierbar.
|
||||
|
||||
Aus dem Dargelegten ergibt sich ebenfalls, dass die Nutzer-
|
||||
relationen nicht mit AMX erstellt werden koennen. Bevor ein
|
||||
AMX-Programm uebersetzt werden kann, muessen die in diesem
|
||||
Programm spezifizierten Relationen bereits mit IQL, EQL oder
|
||||
dem DABA-MUTOS-Kommandos "creater" (creater(mutos)) erstellt
|
||||
worden sein.
|
||||
|
||||
Da nur die in einem AMX-Programm benoetigten Zugriffsrouti-
|
||||
nen zu den Relationen, entsprechend den konkreten Bedingun-
|
||||
gen, zugriffsoptimiert in das ausfuehrbare Programm einge-
|
||||
bunden werden, ist nach jeder Modifikation der Relations-
|
||||
struktur (modify(ql), modifyr(mutos), index(ql) bzw.
|
||||
indexr(mutos), destroy(ql) bzw. destroyr(mutos) und crea-
|
||||
te(ql) bzw. creater(mutos), eine Neuuebersetzung des AMX-
|
||||
Programmes notwendig!
|
||||
|
||||
Eine Relation, die durch ein AMX-Programm verarbeitet werden
|
||||
soll, darf keine definierten Integritaetsbedingungen besit-
|
||||
zen! Als Befugnisse einer solchen Relation duerfen aus-
|
||||
schliesslich operationelle Befugnisse (append, retrieve, de-
|
||||
lete, replace oder all) ohne jede Qualifikation definiert
|
||||
worden sein!
|
||||
|
||||
Werden mehrere Objektmodule zu einem ausfuehrbaren Programm
|
||||
verbunden, darf nur einer dieser Objektmodule AMX-
|
||||
Anweisungen enthalten!
|
||||
|
||||
Konvertierungen zwischen numerischen und Zeichenkettenwerten
|
||||
(und umgekehrt) werden nicht unterstuetzt. Numerische Kon-
|
||||
vertierungen erfolgen ohne Unter- bzw. Ueberlaufkontrolle.
|
||||
|
||||
Vergleiche von Zeichenkettenwerten zwischen Domaenen und Va-
|
||||
riablen werden in der Laenge der Domaene ausgefuehrt, z.B.
|
||||
liefert der Variablenwert "Automat" den Wert "Auto" fuer die
|
||||
Datenbankaktion, wenn die zugehoerige Domaene den DABA-
|
||||
Datentyp "c4" hat.
|
||||
|
||||
Uebersetzung
|
||||
|
||||
AMX-Anweisungen, im Anwendungsprogramm durch ein besonde-
|
||||
res Praefixsymbol "##" gekennzeichnet, werden durch den
|
||||
Voruebersetzer (Praeprozessor) syntaktisch und semantisch
|
||||
ueberprueft und in Prozeduraufrufe der hoeheren Programm-
|
||||
iersprache uebersetzt. Vorbild fuer diesen Loesungsansatz
|
||||
war EQL des DABA.
|
||||
|
||||
"C"-Anweisungen werden unveraendert in das "C"-Programm ko-
|
||||
piert.
|
||||
|
||||
Damit ein AMX-Quellprogramm vom AMX-Compiler verarbeitet
|
||||
werden kann, muss das File, in dem es enthalten ist, den
|
||||
File-Namenssuffix ".x" (z.B. prog.x) besitzen.
|
||||
|
||||
Der AMX-Compiler holt sich alle Informationen zu den Rela-
|
||||
tionen und Domaenen aus den Systemkatalogen (Katalogrelatio-
|
||||
nen) der Datenbank und entlastet somit den Anwender von der
|
||||
Angabe dieser Details und den Fehlern, die an dieser Stelle
|
||||
gemacht werden koennen. Durch diesen Ansatz ist eine weit-
|
||||
gehende Quelltextunabhaengigkeit von der Struktur der Daten-
|
||||
bank gesichert.
|
||||
|
||||
Bei der Zugriffspfadoptimierung werden die vorhandenen In-
|
||||
dizes voll herangezogen. Wenn der AMX-Programmierer es for-
|
||||
dert, ist eine davon abweichende Zugriffsgestaltung spezifi-
|
||||
zierbar.
|
||||
|
||||
Aenderungen sind nur in Nutzerrelationen gestattet, die Sy-
|
||||
stemkataloge und Indizes werden durch AMX aktualisiert.
|
||||
|
||||
Eine Aenderung der Speicherungsstruktur einer Relation er-
|
||||
fordert, wie bereits betont, keine Aenderung des AMX-
|
||||
Quellprogramms, wohl aber dessen neue Uebersetzung.
|
||||
|
||||
Wenn der AMX-Compiler ein AMX-Programm uebersetzen soll, ar-
|
||||
beitet dieser als Nutzer "daba". Damit das erzeugte "C"-
|
||||
Programm in das aktuelle Arbeits-Directory geschrieben wer-
|
||||
den kann, muss deshalb "daba" in diesem Directory die
|
||||
Schreiberlaubnis besitzen.
|
||||
|
||||
Die Spezifikation des AMX-Quell-Files erfolgt, wie ueblich,
|
||||
entweder als absoluter Pfadname oder relativ zum aktuellen
|
||||
Arbeit-Directory.
|
||||
|
||||
|
||||
|
||||
|
||||
Das durch den AMX-Compiler erzeugte AMX-Programm besitzt den
|
||||
Filemodus oktal "6755" und ist dem Nutzer daba und der Grup-
|
||||
pe daba zugeordnet. Es ist z.B. beim Kopieren eines AMX-
|
||||
Programmes darauf zu achten, dass dieser Filemodus erhalten
|
||||
bleibt.
|
||||
|
||||
Zur Fehlererkennung beimm Compilieren ist folgendes zu be-
|
||||
merken. Nach Erkennung eines Fehlers wird die Uebersetzung
|
||||
erst nach drei als richtig erkannten syntaktischen Einheiten
|
||||
(Token, Morpheme) fortgesetzt, sodass eine zweite Ueberset-
|
||||
zung Fehler erzeugen kann, die in der ersten nicht gemeldet
|
||||
wurden. Die zu jedem Fehler mit ausgegebene Zeilennummer ist
|
||||
nicht immer exakt. Sie kann sich auf eine der vorherigen
|
||||
Zeilen beziehen, wenn der Fehler am Zeilenende erkannt wur-
|
||||
de, da der Compiler immer eine syntaktische Einheit voraus
|
||||
liest.
|
||||
Wird ein Fehler festgestellt, ist in dem oben genannten Fall
|
||||
der Zeilenzaehler aber schon um eins (oder mehr, bei Zeilen
|
||||
ohne syntaktische Einheiten) hochgezaehlt. Bei einigen syn-
|
||||
taktischen Fehler ist eine Angabe der Fehlerursache aeus-
|
||||
serst schwierig.
|
||||
Aufgrund der einfachen Syntax von AMX wurde auf eine detail-
|
||||
lierte Fehlererkennung verzichtet und der Anwender muss den
|
||||
erzeugten Fehler
|
||||
|
||||
"syntax error"
|
||||
selbst deuten.
|
||||
|
||||
Namenskonventionen
|
||||
|
||||
Fuer Datenbankbegriffe (ql(iql)) und auch bezueglich der
|
||||
Grenzwerte gelten die gleichen Bedingungen wie in den an-
|
||||
deren DABA-Interfaces. Es sei nochmals daran erinnert, dass
|
||||
die Namen der Systemrelationen:
|
||||
|
||||
"relation" Verwaltung der Relationen
|
||||
"attribute" Verwaltung der Domaenen
|
||||
"indexes" Verwaltung der Indizes
|
||||
"integrities" Verwaltung der definierten Integritaeten
|
||||
"protect" Verwaltung der vergebenen Zugriffsrechte
|
||||
"tree" Verwaltung der voruebersetzten Datenbank-
|
||||
aktionen
|
||||
"references" Verwaltung von Beziehungen zwischen
|
||||
Relationen
|
||||
|
||||
als Namen von Nutzerrelationen gesperrt sind.
|
||||
|
||||
|
||||
|
||||
|
||||
Alle Namen (Datenbank, Relationen, Domaenen) sind maximal 12
|
||||
Zeichen lang und bestehen aus den Zeichen "[a-z_0-9]", wobei
|
||||
der Name nicht mit einer Ziffer "[0-9]" beginnen darf (siehe
|
||||
ql(iql)). Der AMX-Compiler konvertiert bei Namen grosse
|
||||
Buchstaben "[A-Z]" automatisch in kleine "[a-z]".
|
||||
|
||||
Durch die Laufzeitbibliothek werden eine Reihe von Objekten
|
||||
definiert, die alle mit "AA" beginnen. Der Anwendungspro-
|
||||
grammierer hat zu gewaehrleisten, dass diese Objekte nicht
|
||||
ueberdefiniert werden. Er sollte Namen, die mit "AA" begin-
|
||||
nen, generell vermeiden.
|
||||
|
||||
AMX-Programm
|
||||
|
||||
Jedes AMX-Programm besteht aus "C"-Anweisungen und eingebet-
|
||||
teten AMX-Anweisungen, die vom AMX-Praeprozessor verarbeitet
|
||||
werden.
|
||||
|
||||
Alle AMX-Anweisungen sind durch das AMX-Kommandopraefix, das
|
||||
aus zwei Nummernzeichen "##" am Zeilenanfang gebildet wird,
|
||||
gekennzeichnet.
|
||||
|
||||
|
||||
|
||||
|
||||
"C"-Variablen, die in AMX-Anweisungen verwendet werden, sind
|
||||
ebenfalls durch "##" zu kennzeichnen.
|
||||
|
||||
Wie bereits dargelegt, sind die "C"-Variablentypen und zu-
|
||||
saetzlich "i1", "i2", "i4", "f4" und "f8" verfuegbar.
|
||||
|
||||
Alle Variablen sind global zu deklarieren!
|
||||
|
||||
Die erste Anweisung im AMX-Quellprogramm muss eine der An-
|
||||
weisungen zum Eroeffnen der Datenbank (exclusive, daba, no-
|
||||
lock oder shared) sein.
|
||||
|
||||
Die erste auszufuehrende Funktion, anstelle von "main", muss
|
||||
die Funktion "amx" sein. Fuer diese Funktion sind die glei-
|
||||
chen Parameter wie bei "main" spezifizierbar (amx() ohne Pa-
|
||||
rameter).
|
||||
|
||||
Jede Relation muss vor ihrer Verwendung eroeffnet und kann
|
||||
nach Beendigung der Verarbeitung geschlossen werden. Durch
|
||||
die MUTOS Funktion "exit" werden alle noch eroeffneten Rela-
|
||||
tionen geschlossen, nachdem die entsprechenden noch ausste-
|
||||
henden Ausgaben erfolgt sind.
|
||||
|
||||
|
||||
|
||||
Zur Bildung syntaktischer Konstruktionen werden zur Darstel-
|
||||
lung einer Auswahl oder Wiederholung die folgenden Metasym-
|
||||
bole verwendet:
|
||||
|
||||
| : Alternative.
|
||||
|
||||
[ ] : wahlweiser Ausdruck, kann entfallen.
|
||||
|
||||
{ } : mindestens einmalige Wiederholung,
|
||||
mehrere Elemente werden durch ein Komma "," getrennt.
|
||||
|
||||
Als syntaktische Variable werden u.a. die folgenden verwen-
|
||||
det:
|
||||
|
||||
dbname = Datenbankname
|
||||
c_code = C-Anweisung
|
||||
c_decl = Deklaration einer C-Variablen
|
||||
relname = Relationsname
|
||||
c_var = C-Variablenname
|
||||
domname = Domaenenname bzw. Domaenennummer
|
||||
const = int-Konstante | long-Konstante
|
||||
| double-Konstante | "string"-Konstante
|
||||
|
||||
|
||||
|
||||
Sprachbeschreibung
|
||||
|
||||
Das Folgende ist eine Beschreibung der allgemeinen Syntax
|
||||
der Sprache AMX und der syntaktischen Klassen aus denen die
|
||||
Teile der AMX-Anweisungen gebildet werden. Die einzelnen
|
||||
Anweisungen werden ebenfalls hier erlaeutert.
|
||||
|
||||
Kennzeichnung der AMX-Anweisungen
|
||||
|
||||
Alle AMX-Anweisungen beginnen mit "##" am Zeilenanfang. Nur
|
||||
diese Anweisungen werden im folgenden behandelt. Alle an-
|
||||
deren Anweisungen sind "C"-Anweisungen die den Regeln des
|
||||
"C"-Compilers unterliegen.
|
||||
|
||||
Die erste AMX-Anweisung im Programm
|
||||
|
||||
Die erste AMX-Anweisung in einem AMX-Programm muss das Ero-
|
||||
effnen einer Datenbank sein.
|
||||
|
||||
Ist keine Sperrung der Datenbank vorgesehen, ist die Anwei-
|
||||
sung:
|
||||
|
||||
## nolock [ flags ] dbname [ with deadlock ]
|
||||
|
||||
zu verwenden.
|
||||
|
||||
Soll eine Datenbank alleinig benutzt werden, sind die Anwei-
|
||||
sungen:
|
||||
|
||||
## daba [ flags ] dbname [ with deadlock ]
|
||||
|
||||
oder
|
||||
|
||||
## exclusive [ flags ] dbname [ with deadlock ]
|
||||
|
||||
zu benutzen.
|
||||
|
||||
Bei geteilter Nutzung ist:
|
||||
|
||||
## shared [ flags ] dbname [ with deadlock ]
|
||||
|
||||
zu verwenden.
|
||||
|
||||
Die wahlweisen Flags haben folgende Bedeutung:
|
||||
|
||||
-uname Erlaubt es, sich als Nutzer mit dem Login-Namen
|
||||
name auszugeben. Das AMX-Programm arbeitet dann
|
||||
mit den Datenbankbefugnissen des entsprechenden
|
||||
Nutzers. Nur der DBA und der DABA-
|
||||
Systemverantwortliche duerfen dieses Flag benut-
|
||||
zen.
|
||||
|
||||
+bufno Ist die Spezifikation zusaetzlich verfuegbaren
|
||||
DABA-Puffer. Normalerweise werden nur insgesamt
|
||||
drei Puffer bereitgestellt. Bei paralleler Arbeit
|
||||
mit mehreren Relationen (Indexrelationen muessen
|
||||
mit gezaehlt werden!), sollte jeder Relation
|
||||
mindestens ein Puffer zugeordnet werden. Empfeh-
|
||||
lenswert sind zwei Puffer pro Relation.
|
||||
|
||||
Die Spezifikation with deadlock bedeutet, dass Deadlocks
|
||||
(Totsperren) auftreten koennen, die der Nutzer selbst abfan-
|
||||
gen will.
|
||||
|
||||
Kommentar
|
||||
|
||||
Kommentare sind innerhalb von AMX-Anweisungen in der C-
|
||||
ueblichen Notation zugelassen und duerfen nicht geschachtelt
|
||||
werden:
|
||||
|
||||
## . . . /* Kommentar */ . . .
|
||||
|
||||
|
||||
|
||||
|
||||
Deklaration von C-Variablen
|
||||
|
||||
"C"-Variable, die in einer AMX-Anweisung verwendet werden
|
||||
sollen, sind unbedingt durch "##" zu kennzeichnen. Folgende
|
||||
"C"-Typen werden unterstuetzt:
|
||||
|
||||
- short
|
||||
- int
|
||||
- long
|
||||
- float
|
||||
- double
|
||||
- char *
|
||||
- char []
|
||||
|
||||
|
||||
Ausserdem sind die DABA-Typen i1, i2, i4, f4 und f8 zugelas-
|
||||
sen.
|
||||
|
||||
Folgende Speicherklassen werden unterstuetzt:
|
||||
|
||||
- auto
|
||||
- extern
|
||||
- static
|
||||
|
||||
|
||||
Relationseroeffnung
|
||||
|
||||
Die Anweisung:
|
||||
|
||||
## open relation
|
||||
|
||||
eroeffnet die Relation relname fuer die weitere Verarbei-
|
||||
tung.
|
||||
Die Relation relname muss eine Primaer- bzw. Basisrelation
|
||||
sein, d.h. es ist nicht moeglich, explizit eine Indexrela-
|
||||
tion zu eroeffnen.
|
||||
|
||||
Durch die open Anweisung werden automatisch alle zur Rela-
|
||||
tion gehoerigen Indizes miteroeffnet.
|
||||
Die Relation relname darf keine Sicht (View) sein, und es
|
||||
duerfen keine Integritaetsbedingungen bzw. nur operationelle
|
||||
Befugnisse (append, replace, retrieve, delete oder all) ohne
|
||||
jede Qualifikation auf ihr definiert sein. Die Systemkata-
|
||||
loge relation , attribute und indexes werden durch den Start
|
||||
eines AMX-Programms automatisch eroeffnet. Sie duerfen vom
|
||||
Nutzer nicht explizit eroeffnet werden.
|
||||
Recherchen sind auf alle Relationen zugelassen, d.h. auf
|
||||
Basis-, Indexrelationen und Katalogen.
|
||||
Aenderungen und Einfuegungen sind nur auf Basisrelationen
|
||||
zulaessig, fuer die das Programm die Aenderungsbefugnis (de-
|
||||
lete, append, replace) hat.
|
||||
|
||||
## close relname
|
||||
|
||||
Die close Anweisung schliesst die Relation relname fuer die
|
||||
weitere Verarbeitung. Es koennen nur Relationen geschlossen
|
||||
werden, die zuvor durch die open Anweisung eroeffnet wurden.
|
||||
Die Beendigung eines Programms ( exit ) schliesst automati-
|
||||
sch alle eroeffneten Relationen und Kataloge.
|
||||
|
||||
## tuplecount relname c_var
|
||||
|
||||
Die tuplecount-Anweisung weist der C-Variable c_var als Wert
|
||||
die Anzahl der Tupel der Relation relname zu. C_var muss
|
||||
von numerischem Typ und als long (oder besser i4 ) definiert
|
||||
worden sein.
|
||||
|
||||
## tuplelength relname c_var
|
||||
|
||||
Die tuplelength-Anweisung weist der C-Variablen c_var als
|
||||
Wert die Laenge eines Tupels zu und sollte als short ( oder
|
||||
besser als i2 ) definiert sein.
|
||||
|
||||
|
||||
|
||||
Die Anzahl der Tupel einer Relation und ihre Laenge sind die
|
||||
einzigen verfuegbaren variablen Kataloginformationen fuer
|
||||
ein AMX-Programm. Auf Umwegen kann so die Anzahl der Aende-
|
||||
rungen in einer Relation bestimmt werden:
|
||||
|
||||
. . .
|
||||
## long old, new;
|
||||
. . .
|
||||
## tuplecount rel old
|
||||
{ Neueinfuegungen }
|
||||
## tuplecount rel new
|
||||
printf("# of updates", new - old);
|
||||
. . .
|
||||
|
||||
Ergebnisliste
|
||||
|
||||
In der retrieve, der replace und der append Anweisung kann
|
||||
eine Domaenenauswahl in Form einer target_list (Ergebnis-
|
||||
oder Zielliste) spezifiziert werden.
|
||||
|
||||
Die target_list ist eine durch Kommas separierte Liste von
|
||||
Domaenenzuordnungen (dom_assign). Sie muss in runde Klam-
|
||||
mern eingeschlossen werden und mindestens eine Domaenenspe-
|
||||
zifikation enthalten.
|
||||
|
||||
Eine Domaenenzuordnung der Ergebnisliste besteht aus:
|
||||
|
||||
$domname = value.
|
||||
|
||||
Sie weist der Domaene domname den Wert value zu. Dabei
|
||||
kennzeichnet das Dollar-Zeichen $ den Domaenennamen.
|
||||
Als domname kann auch eine Domaenennummer ( attid des attri-
|
||||
bute Kataloges) spezifiziert werden.
|
||||
Bei den Zuweisungen von numerischen zu numerischen Typen
|
||||
werden die notwendigen Konvertierungen ohne Ueberlauf- bzw.
|
||||
Unterlaufkontrolle vorgenommen.
|
||||
Zuweisungen von numerischen zu Zeichenkettenwerten und um-
|
||||
gekehrt sind nicht zulaessig.
|
||||
Durch die explizite Kennzeichnung von Domaenennamen durch
|
||||
das Zeichen "$" werden im Gegensatz zu EQL Konflikte mit dem
|
||||
Namen von C-Variablen vermieden.
|
||||
Die Referenzierung von Domaenen ueber ihre interne Nummer
|
||||
(Reihenfolge vom create(ql)) kann sinnvoll bei einer vekto-
|
||||
risierten Verarbeitung sein.
|
||||
|
||||
Ein Wert value kann der aktuelle Wert der C-Variablen c_var,
|
||||
eine in C uebliche Konstante const oder eine Domaenenzuord-
|
||||
nung sein. Ein Wert kann der aktuelle Wert der Domaene (Do-
|
||||
maenenzuordnung) (gekennzeichnet durch das Dollarzeichen)
|
||||
$domname sein. Diese Form des Wertes kann nur im Aktions-
|
||||
teil der Recherche angegeben werden und setzt eine ueber-
|
||||
geordnete retrieve Anweisung voraus, aus dem der Wert fuer
|
||||
die Domaene domname geholt werden kann.
|
||||
|
||||
Die retrieve-Anweisung
|
||||
|
||||
|
||||
## [ over over_relname ] retrieve ret_relname [ qual ] [ (
|
||||
target_list ) ]
|
||||
|
||||
Die retrieve Anweisung zur Recherche ist die maechtigste
|
||||
AMX-Anweisung, sie uebernimmt die Zugriffspfadoptimierung
|
||||
und ermoeglicht eine rekursive Verarbeitung, da innerhalb
|
||||
einer Recherche eine weitere Recherche aufgerufen werden
|
||||
kann.
|
||||
|
||||
Die over Klausel gestattet die Zuweisung des Zugriffspfades
|
||||
ueber die Relation over_relname fuer die Recherche und damit
|
||||
die Ausschaltung der Zugriffspfadoptimierung im AMX-
|
||||
Compiler.
|
||||
|
||||
Over_relname muss die wiederzufindende Relation selbst oder
|
||||
ein Index von ret_relname sein. Ist over_relname ein Index
|
||||
und wird durch die Selektion qual keinem Schluessel von
|
||||
over_relname ein Wert zugewiesen, wird der Zugriffspfad ue-
|
||||
ber die Primaerrelation rel_relname gewaehlt, da eine Re-
|
||||
cherche ueber die gesamte Relation und ueber einen Index un-
|
||||
sinning ist.
|
||||
|
||||
Die retrieve Klausel ( retrieve ret_relname ) adressiert die
|
||||
zu suchende Relation ret_relname.
|
||||
|
||||
Qualifikation
|
||||
|
||||
Die Recherche kann durch eine Qualifikation qual als Spezi-
|
||||
fikation einer Selektion eingeschraenkt werden, wodurch die
|
||||
relevanten Tupel selektiert werden.
|
||||
Die Selektion ist eine Einschraenkung des Wertebereichs ein-
|
||||
zelner (oder aller) Domaenen.
|
||||
Mehrere Einschraenkungen werden durch "and" getrennt.
|
||||
Eine Qualifikation qual hat maximal zwei Klausel pro Doma-
|
||||
enenname. Eine Klausel besteht aus einer Domaenenspezifika-
|
||||
tion (einem Domaenennamen domname, gekennzeichnet durch ein
|
||||
Dollarzeichen "$" davor), einem Vergleichsoperator und einem
|
||||
Wert value. Domname gibt die einzuschraenkende Domaene und
|
||||
value den Wert der Einschraenkung an. Fuer die Spezifika-
|
||||
tion von value gilt das in "Ergebnisliste" dargelegte.
|
||||
|
||||
|
||||
|
||||
Es sind die Vergleichsoperatoren:
|
||||
|
||||
"=", "==", "<", "<=", ">", ">=", "!="
|
||||
|
||||
zulaessig.
|
||||
Wird eine Domaene doppelt eingeschraenkt, sind folgende zu-
|
||||
laessige Kombinationen zu beachten:
|
||||
|
||||
"<[=]" und ">[=]"
|
||||
"<[=]" und "!="
|
||||
">[=]" und "!="
|
||||
|
||||
Die Reihenfolge der Einschraenkungen fuer eine Domaene ist
|
||||
in folgender Art einzuhalten:
|
||||
|
||||
"<[=]" --> ">[=]" --> "!="
|
||||
|
||||
Alle zugewiesenen Bedingungen und Werte der angebenen Ein-
|
||||
schraenkungen werden beim Einlauf in die Recherche gekel-
|
||||
lert, sodass z.B. eine Aenderung des Wertes einer verwende-
|
||||
ten C-Variablen keinen Einfluss auf die Selektion hat.
|
||||
|
||||
|
||||
|
||||
|
||||
Ergebnisliste der retrieve-Anweisung
|
||||
|
||||
Die Ergebnisliste ( target_list ) zur Spezifikation der Do-
|
||||
maenenauswahl (Projektionsoperation des DBBS) ist wahlweise.
|
||||
|
||||
Aktion
|
||||
|
||||
Die Aktion, die bei jedem gefundenen Tupel duchlaufen werden
|
||||
soll, ist durch den Einschluss der ##{ und der ##} Anweisun-
|
||||
gen, die unmittelbar der ## retrieve Anweisung folgen soll-
|
||||
ten, zu spezifizieren. Zwischen diesen Anweisungen koennen
|
||||
beliebige AMX-Anweisungen und C-Anweisungen stehen. Die Ak-
|
||||
tion kann leer sein, allerdings muessen die Klammern ange-
|
||||
geben sein.
|
||||
Es ist wichtig zu wissen, dass innerhalb der Aktion die Do-
|
||||
maenenwerte des gefundenen Tupel immer vorhanden sind und
|
||||
sich nicht aendern.
|
||||
Eine Aktion fuer ein Tupel kann vorzeitig beendet werden.
|
||||
Es ist moeglich, durch die Anweisung
|
||||
|
||||
## nextretrieve
|
||||
|
||||
zur Verabeitung des naechsten Tupels ueberzugehen oder durch
|
||||
|
||||
## endretrieve
|
||||
|
||||
die Aktion (Recherche) zu beenden.
|
||||
|
||||
Variablenzuweisung
|
||||
|
||||
Eine Zuweisung weist der C-Variablen c_var den aktuellen
|
||||
Wert der Domaene domname zu.
|
||||
|
||||
c_var = $domname
|
||||
|
||||
Bei den Zuweisungen von numerischen zu numerischen Typen
|
||||
werden die notwendigen Konvertierungen ohne Ueberlauf-
|
||||
bzw. Unterlaufkontrolle vorgenommen.
|
||||
Zuweisungen von numerischen zu Zeichenkettenwerten und um-
|
||||
gekehrt sind nicht zulaessig.
|
||||
|
||||
Die print-Anweisung
|
||||
|
||||
## print ([{ domname }])
|
||||
|
||||
Die print-Anweisung gibt die Werte der, durch eine oeffnende
|
||||
"(" und eine schliessende runde Klammer ")", begrenzten Li-
|
||||
ste der Domaenen in einem Standardformat nach Standardoutput
|
||||
aus.
|
||||
Die Liste enthaelt eine durch Kommas "," getrennte Aufza-
|
||||
ehlung der auszugebenden Domaenen. Eine leere Liste "()"
|
||||
gibt die Werte aller Domaenen aus.
|
||||
|
||||
Das Standardformat enthaelt den Namen und den Wert der Doma-
|
||||
ene in folgender Form:
|
||||
|
||||
"%12s: %?\n", domname, value
|
||||
|
||||
? == Format der auszugebenden Domaene
|
||||
|
||||
Die delete-Anweisung
|
||||
|
||||
## delete
|
||||
|
||||
Eine delete-Anweisung loescht das innerhalb der laufenden
|
||||
Recherche gefundene aktuelle Tupel aus der Relation. In-
|
||||
nerhalb der Aktion bleibt das aktuelle Tupel mit seinen Wer-
|
||||
ten erhalten.
|
||||
Eventuell vorhandene Indizes werden automatisch aktuali-
|
||||
siert.
|
||||
|
||||
Die replace-Anweisung
|
||||
|
||||
## replace (target_list)
|
||||
|
||||
Die replace Anweisung gestattet die Aenderung von Werten
|
||||
einzelner (oder aller) Domaenen eines wiedergefundenen Tu-
|
||||
pels.
|
||||
Eine Unterscheidung von Schluessel- und Nichtschluesseldoma-
|
||||
enen ist nicht zu beachten.
|
||||
Die Aenderungen werden durch die Projektions target_list
|
||||
spezifiziert.
|
||||
|
||||
Es ist zu beachten, dass die Aenderungen in einem gesonder-
|
||||
tem Puffer ausgefuehrt werden, das aktuell gefundene Tupel
|
||||
also innerhalb der Aktion unveraendert bleibt.
|
||||
Eventuell vorhandene Indizes werden, falls noetig, auto-
|
||||
matisch aktualisiert. Eine Aktualsierung entfaellt z.B.,
|
||||
wenn eine identische Aenderung (geaendertes == Ursprungstu-
|
||||
pel) ausgefuehrt wurde oder wenn die geaenderten Domaenen
|
||||
nicht Bestandteil des Index sind und sich die Tupeladresse
|
||||
TID nicht geaendert hat.
|
||||
|
||||
Die append-Anweisung
|
||||
|
||||
## append [ relname ] (target-list)
|
||||
|
||||
Die append Anweisung mit der Spezifikation relname fuegt ein
|
||||
neues Tupel in die Relation relname ein. Die nicht in der
|
||||
target_list spezifizierten Domaenen der Relation relname
|
||||
werden mit einem Nullwert initialisiert, alle numerischen
|
||||
Domaenen bekommen den Wert 0.
|
||||
Den Zeichenkettendomaenen wird eine mit Leerzeichen gefuell-
|
||||
te Zeichenkette zugewiesen.
|
||||
|
||||
Die append Anweisung ohne relname fuegt ein neues Tupel in
|
||||
die Relation ein. Sie kann nur innerhalb einer Recherche ge-
|
||||
nutzt werden. Durch die Projektion target_list werden den
|
||||
aufgefuehrten Domaenen Werte zugewiesen.
|
||||
Alle nicht angebenen Domaenen erhalten den Wert aus dem ak-
|
||||
tuell gefundenen Tupel der laufenden Recherche.
|
||||
|
||||
Es ist zu beachten, dass die Aenderungen in einem gesonder-
|
||||
ten Puffer ausgefuehrt werden, also das aktuell gefundene
|
||||
Tupel unveraendert bleibt. Eventuell vorhandene Indizes
|
||||
werden automatisch aktualisiert.
|
||||
|
||||
Arbeit mit Transaktionen
|
||||
|
||||
Zur Arbeit mit Transaktionen stehen die AMX-Anweisungen use,
|
||||
commit, abort und if (deadlock) bereit.
|
||||
|
||||
## use ( use_rel [, ...] )
|
||||
|
||||
Use spezifiziert den Beginn einer Transaktion. den Beginn
|
||||
einer Transaktion. Use_rel wird wie folgt angegeben:
|
||||
|
||||
[ exclusive | shared | nolock | + ] relname [
|
||||
|
||||
with [ level = page | table ]
|
||||
|
||||
[ readlock = exclusive | shared | nolock ]
|
||||
|
||||
[ maxlock = int ]
|
||||
|
||||
[ timeout = int ] ]
|
||||
|
||||
Exclusive oder + bedeuten exklusive (alleinige), das Weglas-
|
||||
sen oder shared eine geteilte Benutzung. Die geteilte Be-
|
||||
nutzung und nolock (kein Sperren) sind nur fuer Leseopera-
|
||||
tionen, exklusive Benutzung fuer Schreiboperationen anwend-
|
||||
bar.
|
||||
|
||||
Level kennzeichnet das Sperrniveau page (Seitensperren) oder
|
||||
table (Relationsperren).
|
||||
|
||||
Readlock ist nur fuer Leseoperationen anwendbar und kenn-
|
||||
zeichnet die Art der Lesesperren.
|
||||
|
||||
|
||||
Maxlock spezifiziert die maximale Anzahl der Sperren ( -1 :
|
||||
unbegrenzt) und timeout die Zeit (in Sekunden), bis eine
|
||||
Rueckkehr vom DBBS erfolgt sein muss ( - 1 : warten, bis
|
||||
verfuegbar).
|
||||
|
||||
Nur, wenn beim Eroeffnen der Datenbank with deadlock spezi-
|
||||
fiziert wurde, sind die folgenden Anweisungen nutzbar.
|
||||
|
||||
## if ( bd deadlock ) { stmt_list }
|
||||
|
||||
Mit dieser Anweisung kann abgetestet werden, ob ein Deadlock
|
||||
aufgetreten ist. Diese Anweisung ist unmittelbar nach use,
|
||||
retrieve, append, replace oder delete anzuordnen. Wenn ein
|
||||
Deadlock aufgetreten ist, wird die Anweisungsfolge stmt_list
|
||||
abgearbeitet werden, was i.allg. die Anweisung abort sein
|
||||
wird.
|
||||
|
||||
## abort
|
||||
|
||||
Diese Anweisung beendet eine Transaktion zwangsweise und
|
||||
setzt die Datenbank auf den Stand vor Beginn der Transaktion
|
||||
zurueck.
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
EQC(MUTOS) DABA16 EQC(MUTOS)
|
||||
|
||||
NAME
|
||||
eqc - Aufruf des EQL-Praecompilers
|
||||
|
||||
UEBERSICHT
|
||||
eqc [ -d ] [ -f ] [ -r ] file.q {file.q}
|
||||
|
||||
BESCHREIBUNG
|
||||
EQL (Eingebettete QL) ist eine Sprache zur Einbettung von
|
||||
Datenbankanfragen der Sprache QL in eine Wirts-
|
||||
Programmiersprache.
|
||||
|
||||
EQL besteht aus der EQL-Laufzeitbibliothek, die die Schnitt-
|
||||
stelle zur Datenbank realisiert (Call- Interface), und einem
|
||||
Praecompiler zur Uebersetzung eines Programms mit eingebet-
|
||||
teten QL-Anweisungen in gueltige Anweisungen der Programm-
|
||||
iersprache C.
|
||||
Das Call-Interface ist fuer alle Programmiersprachen ver-
|
||||
fuegbar; ein Praecompiler existiert zur Zeit nur fuer die
|
||||
Programmiersprache C.
|
||||
|
||||
Compilation
|
||||
|
||||
Der Praecompiler wird durch das Kommando:
|
||||
|
||||
eqc {flags} file1.q {flags} file2.q ...
|
||||
|
||||
aufgerufen, wobei filen.q die Quelleingabe-Files sind, deren
|
||||
Namen mit .q enden muessen. Die Ausgabe wird auf das File
|
||||
`filen.c' geschrieben.
|
||||
|
||||
Folgende Flags koennen gesetzt werden:
|
||||
|
||||
-d Generiert Code zum Quelltext des Files mit Name und
|
||||
Zeilennummer, die bei auftretenden Laufzeit-Fehlern an-
|
||||
gezeigt werden. Das ist zum Analysieren der Fehler
|
||||
nuetzlich, benoetigt aber mehr Platz.
|
||||
|
||||
-f Erzeugt Code, bei dem "Output"- und "Input"-Files
|
||||
gewoehnlich die gleiche Zeilennummer haben, um die C-
|
||||
Diagnose-Mitteilungen leichter interpretieren zu ko-
|
||||
ennen. Manchmal muss EQL versuchen, Anfragen in mehrere
|
||||
Zeilen zu zerlegen, um einen Zeilenueberlauf des C-
|
||||
Praeprozessors zu vermeiden. Dann verschiebt es C-Code
|
||||
einige Zeilen nach vorn. Mit der -f Flagspezifikation
|
||||
erfolgt das nicht. C-Code steht in der richtigen Zeile
|
||||
und Reihenfolge. Entsprechend kann die Zeile des
|
||||
Quellcodes mit der Zeile der C-Diagnose uebereinstim-
|
||||
men.
|
||||
|
||||
-r Setzt Flags auf Standardwerte zurueck. Das wird
|
||||
verwendet, um andere Flags fuer Files aus der Argument-
|
||||
liste zu unterdruecken.
|
||||
|
||||
Die Ausgabe-Files koennen dann mittels des C-Compilers uebersetzt
|
||||
werden:
|
||||
|
||||
cc file1.c file2.c ... -lq
|
||||
|
||||
Die Schreibweise -lq fordert die EQL-Laufzeit-Bibliothek an.
|
||||
|
||||
Die Bibliothek libq.a muss zur Angabe der Option -lq in
|
||||
/lib/libq.a oder /usr/lib/libq.a vorhanden sein, d.h. sie muss
|
||||
bei der Installation aus
|
||||
|
||||
/.../daba/lib/libq.a
|
||||
dorthin kopiert werden.
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
IQLI(DABA) DABA16 IQLI(DABA)
|
||||
|
||||
NAME
|
||||
IQLI - Interaktives QL-Interface von DABA
|
||||
|
||||
BESCHREIBUNG
|
||||
Das interaktive QL-Interface (IQL) von DABA ist nach dem
|
||||
Aufruf von iql (iql(mutos)) verfuegbar.
|
||||
|
||||
In IQL stehen die Datenbanksprache QL, die Terminal-
|
||||
Monitor-Kommando-Unterstuetzung und die Makro-Unterstuetzung
|
||||
bereit.
|
||||
|
||||
Die Sprache QL wird durch das DBBS, die Terminal-Monitor-
|
||||
Kommandos und die Makros werden durch den Terminal-Monitor
|
||||
realisiert.
|
||||
|
||||
Fuer eine Einarbeitung ist zu empfehlen, sich zuerst mit den
|
||||
Terminal-Monitor-Kommandos und der QL-Sprache zu beschaefti-
|
||||
gen.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SIEHE AUCH
|
||||
ql(iql), monitor(iql), macros(iql), iql(mutos)
|
||||
|
|
@ -0,0 +1,614 @@
|
|||
MONITOR(IQL) DABA16 MONITOR(IQL)
|
||||
|
||||
NAME
|
||||
monitor - interaktiver Terminal-Monitor
|
||||
|
||||
BESCHREIBUNG
|
||||
Der Terminal-Monitor realisiert zusammen mit dem DBBS das
|
||||
interaktive Interface (Nutzeroberflaeche) IQL von DABA.
|
||||
|
||||
Der Monitor stellt einen Monitor-Puffer, die Terminal-
|
||||
Monitor-Kommando-Unterstuetzung und die Makrounterstuetzung
|
||||
(Makroprozessor) (macros(iql)) nach seinem Start bereit.
|
||||
Die von der Monitor-Kommando-Unterstuetzung verarbeiteten
|
||||
Monitor-Kommandos erlauben u.a. in Zusammenarbeit mit einem
|
||||
Editor und dem Makro-Prozessor die Manipulation des Inhaltes
|
||||
des Monitor-Puffers. Dieser manipulierte Inhalt wird dem
|
||||
DBBS als QL-Anfragenstapel uebergeben und von diesem ver-
|
||||
arbeitet. Ausserdem gestatten die Kommandos einen vorueber-
|
||||
gehenden Wechsel der interaktiven Umgebung (Shell bzw. Edi-
|
||||
tor).
|
||||
|
||||
Die Monitor-Kommandos gestatten in vom Nutzer vorgefertigten
|
||||
Kommandofiles (Monitor-Programme als Include-Files) eine Ab-
|
||||
laufsteuerung. Diese Files (aber auch Terminal-Eingaben) ko-
|
||||
ennen Monitor-Kommandos, Makro-Anweisungen und als wichtig-
|
||||
ste QL-Anweisungen (bzw. Text, aus dem mittels Makro-
|
||||
Substitution QL-Anweisungen erzeugt werden) enthalten.
|
||||
|
||||
Zusammenstellung der Monitor-Kommandos
|
||||
|
||||
Der Monitor-Puffer kann mit Monitor-Kommandos:
|
||||
|
||||
- geloescht (\reset, \r),
|
||||
- editiert (Aufruf eines Editors) (\editor, \edit, \ed,
|
||||
\e),
|
||||
- angezeigt (\list, \l oder \print, \p),
|
||||
- durch Terminal-Eingaben ersetzt (Eingabe nach \go
|
||||
und Autoloeschfunktion "ein")
|
||||
oder ergaenzt (Eingabe nach \append, \a oder \e, \l
|
||||
bzw. \p),
|
||||
- durch den Inhalt eines MUTOS-File ersetzt (\include,
|
||||
\read, \i)
|
||||
oder ergaenzt (\include, \read, \i nach \a, \l bzw.
|
||||
\p) bzw.
|
||||
- in ein MUTOS-File geschrieben (\write, \w)
|
||||
|
||||
werden.
|
||||
|
||||
Ausserdem gibt es Monitor-Kommandos fuer:
|
||||
|
||||
- die Flucht in eine MUTOS-Shell (\shell, \sh, \s),
|
||||
- den Ausgang aus DABA (\quit, \q),
|
||||
- die Verarbeitung eines sich im Puffer befindlichen
|
||||
Monitor-Makros durch den Makroprozessor (\eval, \v),
|
||||
- das Anzeigen von Uhrzeit und Datum (\date, \time, \d),
|
||||
- das Anzeigen von Komponentenbeschreibungen des Handbuches
|
||||
in Lang- oder Kurzform (\H bzw. \h),
|
||||
- das Aendern des Arbeits-Directory (\chdir, \cd),
|
||||
- das Setzen von Sprungmarken (\mark, \k),
|
||||
- das Verzweigen zu einer Sprungmarke (\branch, \b)
|
||||
(bedingt oder unbedingt),
|
||||
- die Uebergabe des Inhaltes des Monitor-Puffers (QL-
|
||||
Anfragenstapel) zur Verarbeitung durch das DBBS (\go, \g)
|
||||
- und zur Aenderung des Kommandokennzeichens (\monitor, \m).
|
||||
|
||||
|
||||
Nachrichten und Eingabe-Aufforderungen (Prompts)
|
||||
|
||||
Um den Nutzer ueber den Status des Monitors und des Anfragenpuf-
|
||||
fers zu informieren, gibt der Terminal-Monitor verschiedene Nach-
|
||||
richten aus.
|
||||
|
||||
Wenn DABA bereit ist, Eingaben zu akzeptieren, wird die Nachricht
|
||||
"DABA>" angezeigt. Das bedeutet, dass der Anfragenpuffer leer
|
||||
ist.
|
||||
|
||||
Die Nachricht "DABA:" erscheint, wenn der Anfragenpuffer nicht
|
||||
leer ist.
|
||||
|
||||
In jedem Falle wird der Nutzer durch einen Stern "*" (Prompt) auf
|
||||
der naechsten Zeile zur Eingabe aufgefordert.
|
||||
|
||||
Die Ausgaben "DABA>" bzw. "DABA:" und "*" werden bei einer "-s"-
|
||||
Option unterdrueckt.
|
||||
|
||||
Der Monitor schreibt den Eingabetext in den Monitor-Puffer, je
|
||||
nach eingestelltem Terminalmodus entweder sofort (cbreak-Modus)
|
||||
oder erst nach <nl> (echo-Modus), dann sind Korrekturen vor <nl>
|
||||
mit <kill> oder <erase> moeglich.
|
||||
Bei der Eingabe werden alle Zeichen mit Ausnahme von <tab>, <nl>
|
||||
und <escape>, die kleiner als oktal 040 sind, in Blanks konver-
|
||||
tiert, wobei die Warnung:
|
||||
|
||||
Zeichen 0xx konvertiert in Blank
|
||||
|
||||
erscheint.
|
||||
|
||||
|
||||
|
||||
|
||||
Nachdem die Eingabe in den Monitor-Puffer uebernommen wurde, kann
|
||||
sie dort nur noch durch \edit editiert oder der gesamte Puffer
|
||||
durch \reset geloescht werden.
|
||||
|
||||
Bei der Uebernahme der Eingabe in den Monitor-Puffer filtert der
|
||||
Terminal-Monitor die Monitor-Kommandos aus und fuehrt diese so-
|
||||
fort aus.
|
||||
|
||||
Das Monitor-Kommando \go (oder \g) uebergibt den Inhalt des
|
||||
Monitor-Puffers an den Parser des DBBS, der die QL-Anweisungen
|
||||
analysiert und zur Ausfuehrung weitergibt. Bei einer Bearbeitung
|
||||
der Anfrage (bzw. Anfragenstapels) erscheint die Meldung:
|
||||
|
||||
DABA . . .
|
||||
|
||||
(nicht bei "-s"-Flag), wodurch signalisiert wird, dass der Moni-
|
||||
tor auf die Beantwortung der Anfrage wartet.
|
||||
|
||||
Wird ein \edit- oder ein \shell-Kommando spezifiziert, erscheint
|
||||
die Nachricht:
|
||||
|
||||
>>"Aufrufparameter"
|
||||
|
||||
So ergeben z.B. die Eingaben "\ed", "\sh" und "\sh ls -l die
|
||||
Nachrichten ">>/bin/ed", ">>sh" und ">>ls -l". Im interaktiven
|
||||
Modus des Editors (Eingabe: "\edit") bzw. der Shell (Eingabe:
|
||||
"\sh") erscheinen anschliessend die Standard-Prompts dieser Pro-
|
||||
gramme.
|
||||
|
||||
Nach einem \go-Monitor-Kommando (oder \eval) wird der Anfragen-
|
||||
puffer standardmaessig (Autoloeschfunktion "ein") zur Loeschung
|
||||
vorgemerkt. Wenn unmittelbar anschliessend eine andere Anfrage
|
||||
eingegeben wird, erfolgt das Loeschen des Puffers. Es erfolgt
|
||||
nicht, wenn unmittelbar nach der Bearbeitung des Anfragenstapels
|
||||
(\go) bzw. nach \eval die Vormerkung zum Loeschen durch die Kom-
|
||||
mandos \append, \print, \list oder \edit aufgehoben wurde.
|
||||
|
||||
Nach der Eingabe:
|
||||
help teile
|
||||
\go
|
||||
print teile
|
||||
enthaelt der Anfragenpuffer:
|
||||
print teile
|
||||
Die Eingabe :
|
||||
help teile
|
||||
\go
|
||||
\print
|
||||
print teile
|
||||
ergibt als Inhalt des Anfragenpuffer :
|
||||
help teile
|
||||
print teile
|
||||
|
||||
Ist die Autoloeschfunktion ausgeschaltet ("aus"), wird jede neue
|
||||
Anfrage an den Inhalt des Monitor-Puffers angehangen, sodass vor
|
||||
einer Neueingabe der Puffer stets explizit mit dem \reset-
|
||||
Kommando zu loeschen ist.
|
||||
|
||||
Monitor-Kommandos
|
||||
|
||||
Ein Monitor-Kommando besteht aus dem Kommandopraefix (Standard:
|
||||
\), dem Namen des Monitor-Kommandos und wahlweisen Parametern als
|
||||
Argument des Kommandos. Zwischen diesen Bestandteilen sind als
|
||||
Trennzeichen entweder Leerzeichen oder Tabulatorzeichen erlaubt
|
||||
(nach Kommandopraefix) bzw. notwendig (ansonsten).
|
||||
|
||||
Einige Terminal-Monitor-Kommandos enthalten nach dem Kommandona-
|
||||
men bis zum Zeilenende ein Argument (u.U. aus mehreren Woertern)
|
||||
(z.B. Filenamen). Diese Kommandos duerfen auf der Zeile kein
|
||||
weiteres Kommando beinhalten. Die maximale ausgewertete Laenge
|
||||
des Argumentes dieser Kommandos betraegt 100 Byte. Es ist zu be-
|
||||
achten, dass das Argument dieser Kommandos ueber den Makro-
|
||||
Prozessor ausgewertet wird!
|
||||
|
||||
|
||||
|
||||
Kommandos ohne Parameter koennen auf der Zeile aneinandergereiht
|
||||
werden.
|
||||
|
||||
Durch
|
||||
\date\go\date
|
||||
wird die Zeit vor und nach der Ausfuehrung des Inhaltes des An-
|
||||
fragenpuffers angezeigt.
|
||||
Nachfolgend werden die Kommandos im Detail beschrieben, wobei al-
|
||||
le Kommandos keinen Parameter haben duerfen, bei denen er in der
|
||||
Erlaeuterung nicht erwaehnt wird.
|
||||
|
||||
\h
|
||||
\help Anzeige einer Komponenten-Kurzbeschreibung (Name als
|
||||
Parameter) bzw. der Kurzfassung des Inhaltsver-
|
||||
zeichnisses der Komponenten (ohne Parameter).
|
||||
|
||||
\H
|
||||
\HELP Anzeige einer Komponentenbeschreibung (Name als Para-
|
||||
meter) bzw. des Inhaltsverzeichnisses der Kompo-
|
||||
nenten (ohne Parameter).
|
||||
|
||||
\m
|
||||
\monitor Ersetzen des \-Zeichens (Monitor-Kommandopraefix)
|
||||
Ein Parameter ist das neue Terminal-Monitor-
|
||||
Kommandopraefix. Wenn er fehlt, wird der Standard
|
||||
(\) eingestellt.
|
||||
|
||||
Nach einer Neudefinition des Monitor-Praefixes
|
||||
sind u.U. bestehende Kommando-Files (Include-
|
||||
Files) nicht mehr abarbeitbar!
|
||||
|
||||
\r
|
||||
\reset Loeschen des Monitor-Puffers (Ruecksetzen des Anfra-
|
||||
genpuffers). Danach ist der Inhalt des Anfragen-
|
||||
puffers unwiederbringlich verloren.
|
||||
|
||||
\p
|
||||
\print Anzeigen des Anfragenpuffers. Der Inhalt des Anfra-
|
||||
genpuffers wird (ohne Veraenderung durch den
|
||||
Makro-Prozessor) am Terminal des Nutzers ange-
|
||||
zeigt.
|
||||
|
||||
\l
|
||||
\list Anzeigen des aktuellen Anfragenstapels, nach der
|
||||
Makro-Verarbeitung. Nebeneffekte bei der Arbeit
|
||||
des Makro-Prozessors, wie z.B. die Makro-
|
||||
Definition, werden ausgefuehrt. Dem Makroprozes-
|
||||
sor wird der Inhalt des Monitor-Puffers ueberge-
|
||||
ben, dem der Makro {begintrap} vorangestellt und
|
||||
der Makro {endtrap} nachgestellt werden. Damit
|
||||
wird dem Nutzer angezeigt, welcher Text dem Parser
|
||||
des DBBS bei einem \go-Kommandos uebergeben werden
|
||||
wuerde. Es ist zu beachten, dass bei wiederholter
|
||||
Anwendung durch die vorherige Definition von Sub-
|
||||
stitutionsmakros andere Ergebnisse auftreten ko-
|
||||
ennen.
|
||||
|
||||
\v
|
||||
\eval Der Makro-Prozessor verarbeitet den Anfragenpuffer und
|
||||
ersetzt seinen Inhalt durch das Ergebnis der
|
||||
Makro-Verarbeitung. Definierte Makros werden in
|
||||
die Makro-Tabelle des Makro-Prozessors uebernommen
|
||||
und sind damit aktiviert.
|
||||
|
||||
Im Unterschied zum \list-Kommando erfolgen kein
|
||||
Einbeziehen der Makros {begintrap} und {endtrap}
|
||||
und keine Anzeige am Terminal. Auf Standard-
|
||||
Output wirkende Ausgaben der Makros {dump}, {type}
|
||||
und {read...} werden ausgefuehrt.
|
||||
|
||||
Das \eval-Kommando ist das fuer die Abarbeitung
|
||||
von Funktionsmakros zu bevorzugende Kommando.
|
||||
|
||||
\e
|
||||
\ed
|
||||
\edit
|
||||
\editor Eintritt in einen der MUTOS-Text-Editoren (z.B. "ed"
|
||||
als Standard-Text-Editor). Wird "ed" benutzt, ist
|
||||
ein "w"- gefolgt von einem "q"-ed-Kommando ein-
|
||||
zugeben, um die Steuerung an DABA zurueckzugeben.
|
||||
Wird ein File-Name als Parameter spezifiziert, er-
|
||||
folgt ein Aufruf zum Editieren dieses File und
|
||||
nicht der Aufruf eines anderen Editors!
|
||||
Wurde in einem der Start-Files der Makro
|
||||
"{editor}" definiert, wird er benutzt, um den
|
||||
Pfadnamen eines spezifizierten Editors (z.B. "vi"
|
||||
oder "em") einzugeben. Standardmaessig (ohne
|
||||
"{editor}"-Makro) wird als Pfadname "/bin/ed" be-
|
||||
nutzt.
|
||||
|
||||
Innnerhalb des Editors darf kein "e"-
|
||||
Kommandoaufruf erfolgen. Wenn er irrtuemlich doch
|
||||
erfolgte, geht der Name des Anfragenpuffers ver-
|
||||
loren.
|
||||
|
||||
\g
|
||||
\go Verarbeitet die aktuelle Anfrage (Anfragenstapel). Der
|
||||
Inhalt des Puffers wird vom Makro-Prozessor ver-
|
||||
arbeitet, DABA uebergeben und ausgefuehrt. Bei
|
||||
den tupelorientierten QL-Anweisungen "retrieve",
|
||||
"replace", "append" und "delete" wird der Makro
|
||||
{tuplecount} mit der Anzahl der bearbeiteten Tupel
|
||||
definiert (an den Nutzer zurueckgegeben). Dem
|
||||
Parser wird vom Makro-Prozessor der Inhalt des Mo-
|
||||
nitorpuffers uebergeben, dem der Makro {begintrap}
|
||||
voran und der Makro {endtrap} nachgestellt werden.
|
||||
Es ist darauf zu achten, dass nach der Verarbei-
|
||||
tung durch den Makro-Prozessor, dem DBBS aus-
|
||||
schliesslich QL-Anweisungen uebergeben werden
|
||||
(u.U. Bereinigen des Puffers).
|
||||
|
||||
\a
|
||||
\append Anfuegen der folgenden Eingaben an den Anfragenpuf-
|
||||
fer. Nach Eingabe eines \a wird die automatische
|
||||
Loeschunterstuetzung des Anfragenpuffers (falls
|
||||
sie "ein" war) ausgeschaltet und damit der Anfra-
|
||||
genpuffer nicht zurueckgesetzt (kein reset).
|
||||
|
||||
\d
|
||||
\time
|
||||
\date Anzeigen der aktuellen Tageszeit und des Datums.
|
||||
|
||||
\s
|
||||
\sh
|
||||
\shell Flucht in eine MUTOS-Shell. Wurde der {shell}-Makro
|
||||
definiert, wird dieses Shell-Programm zur aktiven
|
||||
Shell. Wenn nicht, wird "/bin/sh" aktiv.
|
||||
|
||||
Der Aufruf des \shell-Monitor-Kommandos kann mit
|
||||
oder ohne Parameter erfolgen.
|
||||
|
||||
Ein Aufruf ohne Parameter startet die Shell inter-
|
||||
aktiv. Danach kann wie unter einer normalen, dem
|
||||
Terminal zugeordneten Shell gearbeitet werden, bis
|
||||
diese entsprechend den Konventionen (z.B.
|
||||
Control-z oder Control-d ) verlassen wird und eine
|
||||
Rueckkehr zum Monitor erfolgt.
|
||||
|
||||
Sind Parameter spezifiziert, werden diese als Auf-
|
||||
ruf eines einzigen MUTOS-Programmes (1.Parameter
|
||||
ist der Shell-Kommandoname (Filename des auszu-
|
||||
fuehrendes Files), die weiteren Parameter sind die
|
||||
dem Kommando zu uebergebenden Parameter) verstan-
|
||||
den, das unter Steuerung der aktiven Shell abzu-
|
||||
arbeiten ist. Anschliessend erfolgt automatisch
|
||||
die Rueckkehr zum Monitor. Wenn z.B. "\shell ls
|
||||
-l" spezifiziert wird, erfolgt die Anzeige des In-
|
||||
haltes des Arbeits-Directory in der Langform und
|
||||
anschliessend sofort die Rueckkehr zum Terminal-
|
||||
Monitor.
|
||||
|
||||
\q
|
||||
\quit Ausgang aus DABA (Verlassen des IQL-Interfaces).
|
||||
|
||||
\cd
|
||||
\chdir Aendern des Arbeits-Directory fuer den Monitor in ein
|
||||
benanntes Directory (Parameter).
|
||||
|
||||
\i
|
||||
\include
|
||||
\read Umschalten der Eingabe auf ein benanntes File (Parame-
|
||||
ter). Backslash-Zeichen im File (Include-File)
|
||||
werden wie bei der Eingabe vom Terminal behandelt.
|
||||
|
||||
Ohne Parameter wird die entsprechende Programmebe-
|
||||
ne verlassen. In der Basis-Terminal-Ebene ent-
|
||||
spricht die Wirkung dem \quit-Kommando.
|
||||
|
||||
Die maximale Schachtelungstiefe ist 5 (generie-
|
||||
rungsabhaengig).
|
||||
|
||||
Ist in einem Include-File ein \read-Kommando mit
|
||||
dem Zeichen "-" spezifiziert erfolgt die Meldung
|
||||
"<Eingabe>" und zwischenzeitlich (bis <EOF>) ist
|
||||
das Terminal die Eingabe. Anschliessend wird die
|
||||
Eingabe aus dem Include-File fortgesetzt.
|
||||
|
||||
|
||||
\w
|
||||
\write Schreiben des Inhaltes des Anfragenpuffers in ein be-
|
||||
nanntes File (Parameter). Der File-Modus eines
|
||||
neu erstellten Files ist oktal "0644".
|
||||
|
||||
\b
|
||||
\branch Springen (Verzweigen der Steuerung) bedingt (Frage-
|
||||
zeichen, Ausdruck und Marke als Parameter) oder
|
||||
unbedingt (Marke als Parameter) innerhalb eines
|
||||
Include-File (s.a. Abschnitt "Springen").
|
||||
|
||||
\k
|
||||
\mark Setzen einer Sprungmarke (Parameter). Diese ist die
|
||||
Zielangabe eines auszufuehrenden \branch-
|
||||
Kommandos.
|
||||
|
||||
\<irgendein anderes Zeichen>
|
||||
Ignoriert irgendeine spezielle Bedeutung des nach-
|
||||
folgenden Zeichens. Das erlaubt, das "\" als li-
|
||||
terales Zeichen einzugeben (ql(iql). Es ist wich-
|
||||
tig zu bemerken, dass Backslash-Folgen manchmal
|
||||
durch den Makro-Prozessors verloren gehen. Des-
|
||||
halb sind zwei Backslash zu schreiben, wenn einer
|
||||
zu senden ist.
|
||||
|
||||
Makros
|
||||
|
||||
Eine ganaue Beschreibung der Makros ist in (macros(iql)) zu
|
||||
finden.
|
||||
|
||||
Springen
|
||||
|
||||
Die \branch und \mark Kommandos erlauben ein beliebiges
|
||||
Springen innerhalb eines Include-File. Dem \mark Kommando
|
||||
muss eine Marke folgen. Dem \branch kann eine Marke folgen
|
||||
(entspricht einem unbedingten Sprung), oder es folgt ein
|
||||
Ausdruck, dem ein Fragezeichen ("?") vorangeht und eine Mar-
|
||||
ke folgt (bedingter Sprung). Der Sprung wird ausgefuehrt,
|
||||
wenn der Ausdruck groesser als Null ist.
|
||||
|
||||
Das Kommando :
|
||||
|
||||
\branch ?{tuplecount}<=0 notups
|
||||
|
||||
|
||||
|
||||
|
||||
verzweigt zur Marke "notups", wenn der Makro "{tuplecount}"
|
||||
kleiner oder gleich Null ist (keine relevanten Tupel).
|
||||
|
||||
Die Ausdruecke, die im \branch spezifizierbar sind, haben
|
||||
folgende Einschraenkungen.
|
||||
|
||||
Die Operatoren +, -, *, /, <=, >=, <, >, =, and != sind, wie
|
||||
ueblich definiert. Der linke, einstellige Operator "!" kann
|
||||
fuer eine logische Negation benutzt werden. Leerzeichen
|
||||
(Blanks) innerhalb des Ausdruckes sind nicht erlaubt, da ein
|
||||
Leerzeichen den Ausdruck beendet. Folgende Besonderheiten
|
||||
sind zu beachten:
|
||||
|
||||
- Ueberfluessige Endklammern werden ignoriert.
|
||||
|
||||
- Ueberfluessige Anfangsklammern ergeben Null aus
|
||||
Ausdruckswert.
|
||||
|
||||
- Ein leerer Ausdruck bekommt den Wert Null.
|
||||
|
||||
- Nur ein nicht akzeptiertes Zeichen als Ausdruck hat den
|
||||
Wert Null.
|
||||
|
||||
- Der Wert eines Zeichens, dass kein Operator ist wird Null.
|
||||
|
||||
- Die Division durch Null ergibt den Wert Null.
|
||||
|
||||
|
||||
Wenn das \branch-Kommando als Eingabetext vom Terminal ge-
|
||||
geben wurde, wird das abgelehnt ("Kein Sprung am Terminal").
|
||||
|
||||
Aus einem Include-File wird zuerst ein vorhandener Ausdruck
|
||||
ausgewertet und bei einem Wert groeser Null ein Sprung ver-
|
||||
sucht.
|
||||
|
||||
Wird eine Marke gefunden, wird mit der dieser Marke folgen-
|
||||
den Textposition die Eingabe des Textes fortgesetzt.
|
||||
|
||||
Ist keine Marke gefunden worden, wird, falls der Makro {de-
|
||||
fault} definiert wurde, zu dieser dort definierten Marke ge-
|
||||
sprungen.
|
||||
|
||||
Andernfalls wird eine Meldung ausgegeben ("? Label ...").
|
||||
|
||||
IQL-Start
|
||||
|
||||
Beim IQL-Start (iql(mutos)) wird zuerst eine bei allen
|
||||
DABA-MUTOS-Kommandos ausgefuehrte Startprozedur durchlaufen.
|
||||
Dabei wird auf das MUTOS-File /etc/passwd zugegriffen und
|
||||
der Eintrag des Nutzers "daba" gelesen. Aus diesem Eintrag
|
||||
wird der Pfadname des Home-Directory gemerkt. Mit diesem
|
||||
Pfadnamen (durch .../ gekennzeichnet) sind alle nachfolgen-
|
||||
den DABA-Files lokalisierbar. Mit dem Nutzercode des auf-
|
||||
rufenden Nutzers wird im File .../sys/etc/users ein Nutzer-
|
||||
eintrag gelesen. Ist ein solcher nicht vorhanden, ist der
|
||||
Nutzer nicht autorisiert DABA anzuwenden. Aus dem Nutzer-
|
||||
eintrag wird ermittelt, ob der Nutzer berechtigt ist, die
|
||||
spezifizierte Datenbank zu nutzen. Wenn ja, erfolgt eine
|
||||
Pruefung auf das Vorhandensein dieser Datenbank. Anschlies-
|
||||
send werden die spezifizierten Optionen (Flags) auf Gueltig-
|
||||
keit geprueft. Danach erfolgt entsprechend der Prozessta-
|
||||
belle im vorliegenden Falle das Laden des DBBS und des
|
||||
Terminal-Monitor-Programmes.
|
||||
|
||||
Initialisierung
|
||||
|
||||
Nach Ablauf der allgemeinen Startprozedur steht das DBBS zur
|
||||
Arbeit bereit, und es beginnt eine Startprozedur des
|
||||
Terminal-Monitors (Initialisierung), bevor dieser seinen Ar-
|
||||
beitszyklus beginnt.
|
||||
|
||||
Erstens werden vom Monitor-Programm die Makros {pathname},
|
||||
{usercode}, {database} und {tuplecount} (macros(iql)) defi-
|
||||
niert, sodass sie fuer die Nutzung bereitstehen.
|
||||
|
||||
Zweitens wird das allgemeine Initialisierungs- oder Start-
|
||||
File (startup(files)) gelesen und verarbeitet. Dieses File
|
||||
ist vorgesehen, um z.B. mittels Makrodefinitionen den fuer
|
||||
alle Nutzer anwendbaren Standard-Editor und die Standard-
|
||||
Shell zu definieren.
|
||||
|
||||
Ist im Nutzereintrag des Files "users" (users(files)) ein
|
||||
nutzerspezifisches Start-File (Standard-Filename: ".ql")
|
||||
spezifiziert, wird drittens dieses gelesen und verarbeitet.
|
||||
Diese File kann die speziellen Spezifikationen des Nutzers
|
||||
enthalten. So kann z.B. in diesem File ein nutzerspezifi-
|
||||
scher Editor bzw. eine Shell definiert werden. Es ist aber
|
||||
auch moeglich, mit den Spezifikationen vorbereitende nut-
|
||||
zerspezifische Arbeiten auszufuehren.
|
||||
|
||||
Am Ende der Initialisierung wird die Steuerung standardma-
|
||||
essig an das Nutzerterminal uebergeben.
|
||||
|
||||
Flags
|
||||
|
||||
Die Arbeitsweise des Terminal-Monitors wird durch folgende
|
||||
Optionen (Flags) beim Aufruf des interaktiven Interface IQL
|
||||
(iql(mutos)) gesteuert:
|
||||
|
||||
-d Anzeige (keine Anzeige) des Inhaltes des "dayfile" (day-
|
||||
file(files)) (Standard: Anzeige).
|
||||
-s Anzeige (keine Anzeige, "schweigendes Arbeiten") von
|
||||
Monitor-Nachrichten (Standard: Anzeige). Das -s
|
||||
Flag unterdrueckt alle Nachrichten (ausser Fehler-
|
||||
nachrichten) des Monitors, einschliesslich der
|
||||
Login- und Logout-Nachrichten sowie die Ausgabe
|
||||
des "dayfile"-Inhaltes (entspricht -d Flag "ein")
|
||||
und die Ausgabe der Eingabeaufforderungen
|
||||
(Prompts).
|
||||
-/+a Autoloeschfunktion (automatisches Loeschen des
|
||||
Terminal-Monitorpuffers) "aus" ("ein") (Standard:
|
||||
"ein"). Das -a Flag unterdrueckt die automatische
|
||||
Loeschfunktion (nach \go bzw. \eval), sodass der
|
||||
Anfragenpuffer nicht automatisch geloescht wird.
|
||||
Die Wirkung ist so, als wuerde stets ein \append
|
||||
nach jedem \go eingegeben werden.
|
||||
|
||||
Fuer den Nutzer bedeutet dies, dass vor jeder neu
|
||||
eingegebenen Anfrage der Anfragenpuffer explizit
|
||||
durch \reset geloescht werden muss.
|
||||
|
||||
Das -I Flag gestattet, zum IQL-Start ein Include-File einzuzie-
|
||||
hen. Wurde das -I Flag mit einem Filenamen spezifiziert, wird
|
||||
dieses File abgearbeitet, Standard-Input bleibt aber dem Terminal
|
||||
zugeordnet.
|
||||
|
||||
Standardmaessig arbeitet der Terminal-Monitor in der Basis-
|
||||
Terminal-Ebene (Eingaben von Standard-Input). Wenn ein Include-
|
||||
File eingezogen wurde, erfolgt die Arbeit des Terminal-Monitors
|
||||
durch das Include-File gesteuert, und das File ist die Quelle des
|
||||
Eingabetextes. Werden aus dem Include-File neue Include-Files
|
||||
eingezogen, kann das als neue Programmebene betrachtet werden.
|
||||
Der Ruecksprung in die uebergeordnete Programmebene erfolgt durch
|
||||
ein "include" ohne Operanden.
|
||||
|
||||
Erfolgte eine Fileumlenkung (Standard-Input einem File zugeord-
|
||||
net), werden alle Eingaben aus diesem File erwartet.
|
||||
|
||||
Die Ausgaben des Monitors erfolgen stets auf Standard-Output
|
||||
(i.allg. dem Terminal zugeordnet). Die Eingaben der Funktions-
|
||||
makros {read} und {readdefine} (macros(iql)) werden in allen Pro-
|
||||
grammebenen von Standard-Input erwartet.
|
||||
|
||||
Unterbrechungen
|
||||
|
||||
Wenn der Terminal-Monitor auf das Ende der Bearbeitung einer An-
|
||||
frage durch das DBBS wartet, besteht die Moeglichkeit, die Arbeit
|
||||
des DBBS durch ein Unterbrechungssignal (Control-c) zu unterbre-
|
||||
chen, um die Steuerung dem Monitor zuruueckzugeben. Achtung, bei
|
||||
der Bearbeitung von QL-Anweisungen, die die Datenbank veraendern,
|
||||
ist eine Unterbrechung nicht angebracht (obwohl das DBBS fuer
|
||||
"normale" Unterbrechungen nicht unterbrechbar ist)!
|
||||
|
||||
Eine Unterbrechung waehrend der Arbeit mit einem Include-File
|
||||
fuehrt zur Rueckkehr in die Basis-Terminal-Ebene.
|
||||
|
||||
Ein <EOF> in einer unter der Basis-Terminal-Ebene liegenden Pro-
|
||||
grammebene fuehrt zur Rueckkehr in die darueber liegenden Pro-
|
||||
grammebene. Ein <EOF> in der Basis-Terminal-Ebene entspricht dem
|
||||
\quit-Kommando.
|
||||
|
||||
Fehler
|
||||
|
||||
Die Kommandos \edit und \shell erfordern das Erzeugen eines neuen
|
||||
Prozesses (Betriebssystem-Kommandos "fork" und "exec") . Gelingt
|
||||
das nicht, erfolgen die Fehlermeldungen "edit: fork" bzw.
|
||||
"shell: fork". Gelingt es nicht, die in den Makros {editor} bzw.
|
||||
{shell} spezifizierten Programme zu laden, wird der Makro {error-
|
||||
cout} auf den Wert -1 gesetzt und der Makro {exectrap} ausge-
|
||||
fuehrt. Als Ergebnis werden die Fehlermeldungen "edit: exec"
|
||||
bzw. "shell: exec" ausgegeben.
|
||||
|
||||
|
||||
|
||||
|
||||
Liefern die Editor- bzw. Shell-Programme einen Rueckkehrwert ver-
|
||||
schieden von Null, wird der Makro {exectrap} ausgefuehrt.
|
||||
|
||||
Bei einem \go-Kommando kann die Fehlermeldung "go: open 1" aus-
|
||||
gegeben werden, wenn die Eroeffnung des Monitor-Puffers nicht ge-
|
||||
lingt.
|
||||
|
||||
Bei einer ueber der maximal zugelassenen Schachtelungstiefe er-
|
||||
folgenden \include-Kommando wird die Fehlermeldung "Mehr als 5
|
||||
INCLUDE'S" ausgegeben.
|
||||
|
||||
Wurde ein \write-Kommando spezifiziert koennen die Fehlermeldun-
|
||||
gen "unakzeptabler file name ..." und "create WRITE-file ..." er-
|
||||
scheinen.
|
||||
|
||||
SIEHE AUCH
|
||||
daba(mutos), macros(iql), ql(iql),
|
||||
|
||||
DIAGNOSE
|
||||
DABA> Eine neue Anfrage kann begonnen werden.
|
||||
|
||||
DABA: Die vorherige Anfrage ist beendet, jedo-
|
||||
ch enthaelt der Puffer einen Inhalt. Der
|
||||
Monitor besitzt wieder die Steuerung.
|
||||
|
||||
DABA . . . Die Anfrage wird von DABA bearbeitet.
|
||||
|
||||
>>ed Es wird im MUTOS-Text-Editor gearbeitet.
|
||||
|
||||
>>sh Es wird zwischenzeitlich in der MUTOS-
|
||||
Shell gearbeitet.
|
||||
|
||||
Zeichen 0xx konvertiert in Blank
|
||||
DABA hat ein nichtdruckbares ASCII-
|
||||
Zeichen (oktal 0xx) in Blank umgewan-
|
||||
delt. Diese Nachricht zeigt an, dass
|
||||
eine solche Konvertierung fuer das Zei-
|
||||
chen (0xx) erfolgte.
|
||||
FEHLERQUELLEN
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
RC(MUTOS) DABA16 RC(MUTOS)
|
||||
|
||||
NAME
|
||||
rc - REPORT-Compiler
|
||||
|
||||
UEBERSICHT
|
||||
rc {[ flags ] file}
|
||||
|
||||
BESCHREIBUNG
|
||||
|
||||
Der Report-Compiler rc uebersetzt ein oder mehrere Report-
|
||||
Quell-Files in Report-Code-Files (uebersetzte Report-
|
||||
Anweisungen). Ein Report-Code-File wird zur Steuerung der
|
||||
Report-Generierung mit rg verwendet.
|
||||
|
||||
Das Quell-File enthaelt Report-Anweisungen und wahlweise
|
||||
Domaenen-Beschreibungen (z.B. durch rd (rd(mutos)) mit dem
|
||||
Flag -r erstellt). Ist letzteres der Fall, wird ein
|
||||
Domaenen-Beschreibungs-File erzeugt.
|
||||
|
||||
Flags:
|
||||
|
||||
-c Nur Uebersetzen, keine Codeerzeugung
|
||||
-i Eingabe von Standard-Input
|
||||
-l automatische Umwandlung der Klein- in Grossbuchstaben
|
||||
-o Ausgabe des Report-Code-Files r_code
|
||||
-s Unterdrueckung des Uebersetzungsprotokolls
|
||||
-v Ausgabe des Uebersetzungsprotokolls
|
||||
|
||||
BEISPIELE
|
||||
/* Uebersetze das Quell-File "pers_r" und
|
||||
erzeuge das Report-Code-File "r_code" */
|
||||
rc -o pers_r
|
||||
|
||||
SIEHE AUCH
|
||||
rp_desc(mutos), rg(mutos), rd(mutos), report(mutos),
|
||||
report(daba)
|
||||
|
||||
|
||||
DIAGNOSE
|
||||
Im Laufzeitprotokoll (auf Standard-Output) werden selbst-
|
||||
erklaerende Hinweise gegeben.
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
RD(MUTOS) DABA16 RD(MUTOS)
|
||||
|
||||
NAME
|
||||
rd - Erstellen eines Domaenen-Beschreibungs-Files oder eines
|
||||
Reportskelettes
|
||||
|
||||
UEBERSICHT
|
||||
rd [ flags ] dbname relname [file]
|
||||
|
||||
BESCHREIBUNG
|
||||
|
||||
Rd erstellt ohne flags aus der Relation relname der Daten-
|
||||
bank dbname ein Domaenen-Beschreibungs(Description)-File.
|
||||
Fehlt der Parameter file (Ausgabe-File), wird der Name desc
|
||||
gewaehlt.
|
||||
|
||||
Bei Spezifikation eines -r Flags wird ein Skelett eines Re-
|
||||
portprogrammes erzeugt. Das ist ein Report-Quellcode-File,
|
||||
das sowohl die Domaenen-Beschreibung als auch das Skelett
|
||||
einiger Report-Quellcode-Anweisungen enthaelt.
|
||||
|
||||
Flags:
|
||||
|
||||
-o Ausgabe auf Standard-Output (anstelle eines Files)
|
||||
-r Ausgabe eines Skelett-Reportprogramms einschliesslich der
|
||||
Domaenen-Beschreibungen. Fehlt das Argument file wird
|
||||
der Name report gewaehlt.
|
||||
|
||||
SIEHE AUCH
|
||||
rc(mutos), rp_desc(mutos), rg(mutos), report(mutos),
|
||||
report(daba)
|
||||
|
||||
BEISPIELE
|
||||
rd dt personal
|
||||
|
||||
rd -o dt teile > teile_d
|
||||
|
||||
rd dt teile teile_d
|
||||
|
||||
/*Reportskelett*/
|
||||
rd -r dt personal
|
||||
|
||||
rd -r dt personal pers_r
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,80 @@
|
|||
RETRIEVE(QL) DABA16 RETRIEVE(QL)
|
||||
|
||||
NAME
|
||||
retrieve - Wiederfinden (Suchen) von Tupel aus einer Rela-
|
||||
tion
|
||||
|
||||
UEBERSICHT
|
||||
retrieve [into relname ] (target_list) [where qual ]
|
||||
|
||||
retrieve unique (target_list) [where qual ]
|
||||
|
||||
BESCHREIBUNG
|
||||
Retrieve stellt alle Tupel bereit, die die Qualifikation er-
|
||||
fuellen und zeigt sie entweder am Terminal (Standardausgabe)
|
||||
an oder speichert sie in eine neue Relation. Wurde into mit
|
||||
relname nicht spezifiziert, werden doppelte Tupel nicht aus-
|
||||
geblendet. Wenn relname spezifiziert wurde, wird das Ergeb-
|
||||
nis der Anfrage mit diesem Namen in eine neue Relation ge-
|
||||
speichert.
|
||||
|
||||
Eine Relation mit diesem Namen und dem Anwender als
|
||||
Relations-Eigentuemer darf nicht bereits existieren. Der
|
||||
retrieve Anwender wird zum Eigentuemer der neuen Relation.
|
||||
Die Relation wird die Domaenen-Namen besitzen, die in der
|
||||
target_list als result_attnames spezifiziert wurden. Die
|
||||
neue Relation wird vom System fuer sieben Tage geschuetzt,
|
||||
falls der Nutzer nicht explizit durch eine save Anweisung
|
||||
das Schutzdatum der Relation verlaengert.
|
||||
|
||||
Wenn das Schluesselwort unique spezifiziert wird, werden die
|
||||
Tupel nach der Reihenfolge der angegebenenen Domaenen sor-
|
||||
tiert und doppelte Tupel vor der Anzeige entfernt.
|
||||
|
||||
|
||||
Das Schluesselwort all kann benutzt werden, um alle Domaenen
|
||||
wiederzufinden.
|
||||
|
||||
Wenn kein Ergebnis-Relations-Name relname spezifiziert wur-
|
||||
de, wird das Ergebnis der Anfrage am Terminal angezeigt und
|
||||
nicht gespeichert. Doppelte Tupel werden bei einer Anzeige
|
||||
am Terminal nicht entfernt.
|
||||
|
||||
Das Format, in dem die Domaenen angezeigt werden, kann zum
|
||||
Zeitpunkt des iql-Aufrufes definiert werden (iql(mutos)).
|
||||
|
||||
Wenn eine Ergebnis-Relation spezifiziert wurde, erfolgt
|
||||
standardmaessig eine Modifikation der Ergebnis-Relation in
|
||||
die Speicherungsstruktur "cheapsort", wobei doppelte Tupel
|
||||
entfernt werden.
|
||||
|
||||
Wenn die Standardstruktur "cheapsort" nicht gewuenscht wird,
|
||||
kann der Nutzer zum Zeitpunkt des iql-Aufrufes diese Stan-
|
||||
dardannahme mit dem -r Flag ueberschreiben (iql(mutos)).
|
||||
|
||||
Nur der Relations-Eigentuemer und Anwender mit retrieve Be-
|
||||
fugnis koennen die Anweisung nutzen.
|
||||
|
||||
|
||||
BEISPIEL[E]
|
||||
/* Finde alle Beschaeftigten, die mehr als ihr
|
||||
Leiter verdienen */
|
||||
|
||||
range of p is personal
|
||||
range of l is personal
|
||||
retrieve (p.name) where p.leiter = l.name
|
||||
and p.gehalt > l.gehalt
|
||||
|
||||
/* Finde alle Domaenen fuer Personen,
|
||||
die mehr als das Durchschnittsgehalt verdienen */
|
||||
|
||||
retrieve into temp (p.all) where p.gehalt > avg(p.gehalt)
|
||||
|
||||
/* Wiederfinden der Beschaeftigtennamen, sortiert */
|
||||
|
||||
retrieve unique (p.name)
|
||||
|
||||
SIEHE AUCH
|
||||
iql(mutos), modify(ql), permit(ql), ql(iql), range(ql),
|
||||
save(ql)
|
||||
FEHLERQUELLEN
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
RP_DESC(MUTOS) DABA16 RP_DESC(MUTOS)
|
||||
|
||||
NAME
|
||||
rp_desc - Drucken eines Domaenen-Beschreibungs-Files
|
||||
|
||||
UEBERSICHT
|
||||
rp_desc [desc-file]
|
||||
|
||||
BESCHREIBUNG
|
||||
Der Parameter desc-file muss angegeben werden, wenn der
|
||||
Standard-File-Name desc nicht zutrifft.
|
||||
|
||||
|
||||
Rp_desc druckt ein Domaenen-Beschreibungs-File, das durch rd
|
||||
(rd(mutos)) oder rc (rc(mutos)) aus einem Report-Quellcode-
|
||||
File einschliesslich Domaenen-Beschreibung erzeugt wurde, in
|
||||
lesbarer Form.
|
||||
|
||||
Dieses File enthaelt eine Tabelle, die die Beschreibung der
|
||||
Domaenen eines Tupels darstellt und vom Report-Generator zur
|
||||
Lokalisation der Domaenen eines Tupel benutzt wird.
|
||||
|
||||
In der Tabelle beschreibt jede Zeile eine Domaene. Die
|
||||
Spalten enthalten die Domaenenreihenfolge (mit 1 beginnend),
|
||||
den Domaenentyp, die Domaenenlaenge und die Verschiebung
|
||||
(Offset, mit 0 beginnend) der Domaene vom Tupelanfang.
|
||||
|
||||
BEISPIELE
|
||||
rp_desc pers_d
|
||||
rp_desc > beispiel
|
||||
cat beispiel
|
||||
|
||||
| field | type | len | off |
|
||||
|~~~~~~~|~~~~~~~|~~~~~~~|~~~~~~~|
|
||||
| | | | |
|
||||
| | | | |
|
||||
|~~~~~~~|~~~~~~~|~~~~~~~|~~~~~~~|
|
||||
| | | | |
|
||||
|
||||
SIEHE AUCH
|
||||
rc(mutos), rd(mutos), rg(mutos), report(mutos), report(daba)
|
||||
|
|
@ -0,0 +1,379 @@
|
|||
KOMPONENTENUEBERSICHT(DABA) DABA16 KOMPONENTENUEBERSICHT(DABA)
|
||||
|
||||
AMXI(DABA) - Einbettung der Datenmanipulationssprache AMX in
|
||||
"C"
|
||||
|
||||
|
||||
EQL(DABA) - Eingebettetes QL-Interface
|
||||
|
||||
|
||||
IQLI(DABA) - Interaktives QL-Interface von DABA
|
||||
|
||||
|
||||
REPORTI(DABA) - Reportunterstuetzung
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
KOMPONENTENUEBERSICHT(IQL) DABA16 KOMPONENTENUEBERSICHT(IQL)
|
||||
|
||||
MACROS(IQL) - Makro-Unterstuetzung des Terminal-Monitors
|
||||
|
||||
|
||||
MONITOR(IQL) - interaktiver Terminal-Monitor
|
||||
|
||||
|
||||
QL(IQL) - DABA-Anfragesprache (Query Language)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
KOMPONENTENUEBERSICHT(QL) DABA16 KOMPONENTENUEBERSICHT(QL)
|
||||
|
||||
APPEND(QL) - Anfuegen (Einfuegen) neuer Tupel an die Rela-
|
||||
tion
|
||||
|
||||
append [to] relname (target_list) [where qual]
|
||||
|
||||
COPY(QL) - Kopieren von Daten zwischen Relation und MUTOS-
|
||||
File
|
||||
|
||||
copy relname (domname = format {, domname = format })
|
||||
|
||||
direction "filename"
|
||||
|
||||
CREATE(QL) - Erstellen einer neuen Relation
|
||||
|
||||
create relname (domname1 = format {, domname2 = format
|
||||
})
|
||||
|
||||
DEFINE(QL) - Definieren Sicht, Befugnisse oder Integritaets-
|
||||
bedingungen
|
||||
|
||||
define view name (target_list) [ where qual ]
|
||||
|
||||
define permit oplist on tuple_variable [ (attlist) ] to
|
||||
name [ at term ] [ from time to time ]
|
||||
[ on day to day ] [ where qual ]
|
||||
|
||||
define integrity on tuple_variable is qual
|
||||
|
||||
DELETE(QL) - Loeschen von Tupel aus einer Relation
|
||||
|
||||
delete tuple_variable [where qual]
|
||||
|
||||
DESTROY(QL) - Zerstoeren einer bestehenden Relation
|
||||
|
||||
destroy relname { , relname }
|
||||
|
||||
destroy [ permit | integrity ] relname
|
||||
[ integer { , integer } | all ]
|
||||
|
||||
HELP(QL) - Anzeigen von Nutzungs- oder Datenbank-
|
||||
Informationen
|
||||
|
||||
help [ relname ] [ "[komponentenname]" ]
|
||||
{, relname}{, "[komponentenname]"}
|
||||
|
||||
help view relname {, relname}
|
||||
|
||||
help permit relname {, relname}
|
||||
|
||||
help integrity relname {, relname}
|
||||
|
||||
INDEX(QL) - Erstellen eines Sekundaerindex ueber eine Rela-
|
||||
tion
|
||||
|
||||
index on relname is indexname (domain1 { ,domain2 })
|
||||
|
||||
MODIFY(QL) - Modifizieren der Speicherungsstruktur einer Re-
|
||||
lation
|
||||
|
||||
modify relname [ to storage_structure [ on key1
|
||||
[ : sortorder ] { , key_n [ : sortorder ] } ]
|
||||
[ where [ fillfactor = n ]
|
||||
[ , minpages = n ] [ , maxpages = n ] ] ]
|
||||
|
||||
PERMIT(QL) - Zufuegen von Befugnissen zu einer Relation
|
||||
|
||||
define permit oplist on tuple_variable [ (attlist) ]
|
||||
|
||||
to name [ at term ] [ from time to time ]
|
||||
|
||||
[ on day to day ] [ where qual ]
|
||||
|
||||
PRINT(QL) - Drucken von Relationen
|
||||
|
||||
print relname {, relname}
|
||||
|
||||
RANGE(QL) - Deklarieren einer Variablen (Tupelvariablen) ue-
|
||||
ber einer Relation
|
||||
|
||||
range [ [ of ] tuple_variable is relname ]
|
||||
|
||||
REPLACE(QL) - Ersetzen von Domaenen-Werten in einer Relation
|
||||
|
||||
replace tuple_variable (target_list) [where qual]
|
||||
|
||||
RETRIEVE(QL) - Wiederfinden (Suchen) von Tupel aus einer Re-
|
||||
lation
|
||||
|
||||
retrieve [[into] relname ] (target_list) [where qual ]
|
||||
|
||||
retrieve unique (target_list) [where qual ]
|
||||
|
||||
SAVE(QL) - Verlaengern des Schutzdatums einer Relation
|
||||
|
||||
save relname until month day year
|
||||
|
||||
VIEW(QL) - Definieren einer Sicht (virtuellen Relation)
|
||||
|
||||
define view name (target_list) [ where qual ]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
KOMPONENTENUEBERSICHT(MUTOS) DABA16 KOMPONENTENUEBERSICHT(MUTOS)
|
||||
|
||||
AMX(MUTOS) - AMX-Compiler
|
||||
|
||||
amx [ flags ] file.x
|
||||
|
||||
amxf [ flags ] file.x
|
||||
|
||||
samx [ flags ] file.x
|
||||
|
||||
oamx [ flags ] file.x
|
||||
|
||||
oamxf [ flags ] file.x
|
||||
|
||||
COPYDB(MUTOS) - Kopieren einer Datenbank
|
||||
|
||||
copydb [ -uname ] dbname directory { relname }
|
||||
|
||||
COPYR(MUTOS) - Kopieren von Daten zwischen Relation und
|
||||
MUTOS-File
|
||||
|
||||
copyr [ flags ] dbname relname { domname format })
|
||||
into/from file
|
||||
|
||||
CREATDB(MUTOS) - Erstellen einer Datenbank
|
||||
|
||||
creatdb [ -uname ] [ -e ] [ -m ] [ -/+c ]
|
||||
[ -/+q ] [ -1 | -2 | -4 | -8 ] dbname
|
||||
|
||||
|
||||
CREATER(MUTOS) - Erstellen einer neuen Relation
|
||||
|
||||
creater [ flags ] dbname relname { domname format }
|
||||
|
||||
DESTROYDB(MUTOS) - Zerstoeren einer bestehenden Datenbank
|
||||
|
||||
destroydb [ -s ] [ -m ] dbname
|
||||
|
||||
DESTROYR(MUTOS) - Zerstoeren einer bestehenden Relation
|
||||
|
||||
destroyr [ flags ] dbname { [ permit | integrity ] rel-
|
||||
name [ integer { , integer } | all ] }
|
||||
|
||||
EQC(MUTOS) - Aufruf des EQL-Praecompilers
|
||||
|
||||
eqc [ -d ] [ -f ] [ -r ] file.q {file.q}
|
||||
|
||||
HELPR(MUTOS) - Anzeigen von Informationen ueber die Relatio-
|
||||
nen der Datenbank
|
||||
|
||||
helpr [ flags ] dbname [ [ integrity | permit | view ]
|
||||
{relname} | all ]
|
||||
|
||||
INDEXR(MUTOS) - Erstellen eines Sekundaerindex ueber eine
|
||||
Relation
|
||||
|
||||
indexr [ flags ] dbname prim_rel index_rel { domname }
|
||||
|
||||
IQL (MUTOS) - Aufruf des interaktiven Ql-Interface des DBBS
|
||||
DABA16
|
||||
|
||||
iql [ flags ] dbname [ process_table ]
|
||||
|
||||
MANR(MUTOS) - Anzeigen der Komponentenbeschreibungen
|
||||
|
||||
manr {komponentenname}
|
||||
|
||||
MODIFYR(MUTOS) - Modifizieren der
|
||||
|
||||
modifyr [ flags ] dbname relname [ storage_strukture
|
||||
{ domname [ :sortorder ] } ]
|
||||
|
||||
PRINTR(MUTOS) - Drucken von Relationen
|
||||
|
||||
printr [ flags ] dbname { relname }
|
||||
|
||||
PURGE(MUTOS) - Zerstoeren verfallener und temporaerer Rela-
|
||||
tionen
|
||||
|
||||
purge [ -f ] [ -p ] [ -a ] [ -s ] [ -w ] { dbname }
|
||||
|
||||
RC(MUTOS) - REPORT-Compiler
|
||||
|
||||
rc {[ flags ] file}
|
||||
|
||||
RD(MUTOS) - Erstellen eines Domaenen-Beschreibungs-Files
|
||||
oder eines Reportskelettes
|
||||
|
||||
rd [ flags ] dbname relname [file]
|
||||
|
||||
REFR(MUTOS) - Anzeige einer Komponenten-Kurzbeschreibung
|
||||
|
||||
refr { komponentenname }
|
||||
|
||||
REPORT MUTOS() - DABA-Reportunterstuetzung
|
||||
|
||||
|
||||
rc {[ flags ] file }
|
||||
|
||||
rd [ flags ] dbname [ file ]
|
||||
|
||||
rg [ flags ]
|
||||
|
||||
rp_desc [ desc_file ]
|
||||
|
||||
|
||||
RESTORE(MUTOS) - Wiederherstellen nach einem DBBS- oder
|
||||
MUTOS-Absturz
|
||||
|
||||
restore [ -s ] [ -a ] [ -f ] [ +/-p ] [ +/-w ]
|
||||
[ -S ] [ -P ] { dbname }
|
||||
|
||||
RG(MUTOS) - REPORT-Generator (Interpreter)
|
||||
|
||||
rg [ flags ]
|
||||
|
||||
RP_DESC(MUTOS) - Drucken eines Domaenen-Beschreibungs-Files
|
||||
|
||||
rp_desc [desc-file]
|
||||
|
||||
SAVER(MUTOS) - Verlaengern des Schutzdatums einer Relation
|
||||
|
||||
saver [ flags ] dbname relname month day year
|
||||
|
||||
SYSMOD(MUTOS) - Modifizieren (Optimieren) der Systemrelatio-
|
||||
nen
|
||||
|
||||
sysmod [ flags ] dbname { relname }
|
||||
|
||||
USERSETUP(MUTOS) - Erstelle Nutzer-File
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
KOMPONENTENUEBERSICHT(FILES) DABA16 KOMPONENTENUEBERSICHT(FILES)
|
||||
|
||||
DAYFILE(FILES) - DABA-Login-Nachrichten
|
||||
|
||||
|
||||
DBTMPLT(FILES) - Datenbank-Spezifikation(Template)
|
||||
|
||||
|
||||
ERROR(FILES) - Files mit DABA-Fehlernachrichten
|
||||
|
||||
|
||||
LIBAMX(FILES) - AMX-Laufzeit-Bibliothek
|
||||
|
||||
|
||||
LIBQ(FILES) - EQL Laufzeit-Bibliothek
|
||||
|
||||
|
||||
STARTUP(FILES) - DABA-Start-File
|
||||
|
||||
|
||||
USERS(FILES) - DABA-Nutzerverzeichnis
|
||||
|
||||
|
||||
|
||||
|
||||
KOMPONENTENUEBERSICHT(ERROR) DABA16 KOMPONENTENUEBERSICHT(ERROR)
|
||||
|
||||
EINFUEHRUNG(ERROR) - Einfuehrung in die Fehlernachrichten
|
||||
|
||||
|
||||
PARSER(ERROR) - Zusammenstellung der Parser-
|
||||
Fehlernachrichten
|
||||
|
||||
Fehlernummern 2000 - 2999.
|
||||
|
||||
QRYMOD(ERROR) - Zusammenstellung der Fehlernachrichten der
|
||||
Anfragenmodifikation
|
||||
|
||||
Fehlernummern 3000 - 3999.
|
||||
|
||||
OVQP(ERROR) - Zusammenstellung der Fehlernachrichten des
|
||||
Ein-Variablen-Anfragenprozessors
|
||||
|
||||
Fehlernummern 4000 - 4499.
|
||||
|
||||
DECOMP(ERROR) - Zusammenstellung der Fehlernachrichten der
|
||||
Dekomposition
|
||||
|
||||
Fehlernummern 4500 - 4999.
|
||||
|
||||
DBU(ERROR) - Zusammenstellung der Fehlernachrichten der Da-
|
||||
tenbankdienste
|
||||
|
||||
Fehlernummern 5000 - 5999
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
RP_DESC(MUTOS) DABA16 RP_DESC(MUTOS)
|
||||
|
||||
NAME
|
||||
rp_desc - Drucken eines Domaenen-Beschreibungs-Files
|
||||
|
||||
UEBERSICHT
|
||||
rp_desc [desc-file]
|
||||
|
||||
BESCHREIBUNG
|
||||
Der Parameter desc-file muss angegeben werden, wenn der
|
||||
Standard-File-Name desc nicht zutrifft.
|
||||
|
||||
|
||||
BEISPIELE
|
||||
rp_desc pers_d
|
||||
rp_desc > beispiel
|
||||
cat beispiel
|
||||
|
||||
| field | type | len | off |
|
||||
|~~~~~~~|~~~~~~~|~~~~~~~|~~~~~~~|
|
||||
| | | | |
|
||||
| | | | |
|
||||
|~~~~~~~|~~~~~~~|~~~~~~~|~~~~~~~|
|
||||
| | | | |
|
||||
|
||||
SIEHE AUCH
|
||||
rc(mutos), rd(mutos), rg(mutos), report(mutos), report(daba)
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
SAVE(QL) DABA16 SAVE(QL)
|
||||
|
||||
NAME
|
||||
save - Verlaengern des Schutzdatums einer Relation
|
||||
|
||||
UEBERSICHT
|
||||
save relname until month day year
|
||||
|
||||
BESCHREIBUNG
|
||||
Save wird benutzt, um das Schutzdatum ueber die standard-
|
||||
maessigen 7 Tage hinaus zu verlaengern.
|
||||
|
||||
month ist der Monat (1,2,...12), day der Tag (1,2,3...) und
|
||||
year das Jahr (...1988,1989...).
|
||||
|
||||
|
||||
BEISPIEL[E]
|
||||
/* Schuetzen der Relation "personal" bis Ende Februar 1987 */
|
||||
save personal until 2 28 1987
|
||||
|
||||
SIEHE AUCH
|
||||
create(ql), purge(mutos), retrieve(ql), saver(mutos)
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
SAVER(MUTOS) DABA16 SAVER(MUTOS)
|
||||
|
||||
NAME
|
||||
saver - Verlaengern des Schutzdatums einer Relation
|
||||
|
||||
UEBERSICHT
|
||||
saver [ flags ] dbname relname month day year
|
||||
|
||||
BESCHREIBUNG
|
||||
Die Aussagen zu save(ql) gelten auch fuer saver(mutos).
|
||||
|
||||
Sie sind jedoch um Folgendes zu ergaenzen:
|
||||
|
||||
Flags:
|
||||
|
||||
-uname erlaubt es, sich als Nutzer mit dem Login-Namen
|
||||
name auszugeben (iql(mutos)).
|
||||
|
||||
+/-w Warten oder kein Warten auf die Nutzbarkeit
|
||||
der Datenbank dbname (iql(mutos)).
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
STARTUP(FILES) DABA16 STARTUP(FILES)
|
||||
|
||||
NAME
|
||||
.../sys/etc/startup - DABA-Start-File
|
||||
|
||||
BESCHREIBUNG
|
||||
Dieses File wird durch den DABA-Terminal-Monitor zum Login-
|
||||
Zeitpunkt gelesen. Es wird vor dem Start-File gelesen, das
|
||||
im File "users" spezifiziert werden kann. Der Hauptzweck
|
||||
besteht darin, einen neuen Standard-Editor und/oder eine
|
||||
Standard-Shell fuer den Aufruf durch das \e oder das \s
|
||||
Monitor-Kommando zu definieren.
|
||||
|
||||
Diese Spezifikationen sind Standard-Spezifikationen und gel-
|
||||
ten fuer alle Nutzer. Durch Spezifikationen des File
|
||||
"users" koennen sie ueberschrieben werden.
|
||||
|
||||
SIEHE AUCH
|
||||
monitor(iql), users(files)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
SYSMOD(MUTOS) DABA16 SYSMOD(MUTOS)
|
||||
|
||||
NAME
|
||||
sysmod - Modifizieren (Optimieren) der Systemrelationen
|
||||
|
||||
UEBERSICHT
|
||||
sysmod [ flags ] dbname { relname }
|
||||
|
||||
BESCHREIBUNG
|
||||
Sysmod modifiziert die relation-, attribute-, integrities-,
|
||||
protect-, tree-, references- und indexes- Systemrelationen
|
||||
in optimale Speicherungsstrukturen, wenn nicht wenigstens
|
||||
einer der Parameter relation, attribute, integrities, pro-
|
||||
tect, tree, references, oder indexes fuer die Systemrelatio-
|
||||
nen relname spezifiziert wurde. Wurden diese Parameter an-
|
||||
gegeben, werden nur die entsprechenden Systemrelationen mo-
|
||||
difiziert.
|
||||
Die Systemrelationen werden so modifiziert, dass eine maxi-
|
||||
male Zugriffsleistung bei der Nutzung von DABA erreicht
|
||||
wird.
|
||||
Der Anwender muss der Datenbankadministrator (DBA) der spe-
|
||||
zifizierten Datenbank oder der DABA-Systemverantwortliche
|
||||
(Verwendung des -s Flags) sein.
|
||||
|
||||
Sysmod sollte abgearbeitet werden, wenn die Datenbank er-
|
||||
stellt wurde. Danach sollte es periodisch angewendet wer-
|
||||
den, um eine groesstmoegliche Zugriffsleistung zu erhalten.
|
||||
Wenn einige Relationen und Sekundaerindizes erstellt
|
||||
und/oder zerstoert wurden, ist sysmod des oefteren abzuar-
|
||||
beiten.
|
||||
|
||||
SIEHE AUCH
|
||||
modify(ql), modifyr(mutos), restore(mutos)
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
toc range eqc restore
|
||||
append replace helpr rg
|
||||
copy retrieve indexr rp_desc
|
||||
create save iql saver
|
||||
define view manr sysmod
|
||||
delete amx modifyr usersetup
|
||||
destroy copydb printr dayfile
|
||||
help copyr purge error
|
||||
index creatdb rc startup
|
||||
integrity creater rd users
|
||||
modify destroydb refr
|
||||
print destroyr report
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
USERS(FILES) DABA16 USERS(FILES)
|
||||
|
||||
NAME
|
||||
.../sys/etc/users - DABA-Nutzerverzeichnis
|
||||
|
||||
BESCHREIBUNG
|
||||
Dieses File enthaelt die Nutzerinformationen in Feldern, die
|
||||
durch den Doppelpunkt separiert werden. Es gibt folgende
|
||||
Felder:
|
||||
|
||||
0. Nutzername, direkt entnommen aus dem /etc/passwd File.
|
||||
1. Nutzercode, zugeordnet durch den DABA-
|
||||
Systemverantwortlichen. Es muss ein eindeutiger Code
|
||||
aus zwei Zeichen(Character) sein.
|
||||
2. MUTOS-Nutzeridentifikator. Er muss mit dem Eintrag im
|
||||
File /etc/passwd -ubereinstimmen.
|
||||
3. MUTOS-Gruppenidentifikator (gleiche Bemerkung).
|
||||
4. Statuswort in oktaler Darstellung. Erlaubte Bit-Werte
|
||||
sind:
|
||||
|
||||
0000001 creatdb
|
||||
Befugnis zur Erzeugung von Datenbanken
|
||||
0000002 direct update
|
||||
Befugnis zum Ueberschreiben der Stapelaenderung
|
||||
(Aenderund des Hintergrundes).
|
||||
0000004 update os system catalogs
|
||||
Befugnis zum Aendern der Systemkataloge
|
||||
0000020 trace flag
|
||||
Befugnis zur Benutzung der Trace-Flags
|
||||
0000100 proctabs
|
||||
Befugnis zur Benutzung der Prozesstabellen
|
||||
0000200 =proctab form
|
||||
Berechtigung zur Benutzung von undefinierten
|
||||
Prozesstabellen der Form "=file"
|
||||
(file ist eine Prozesstabelle im Verzeichnis
|
||||
.../sys/etc).
|
||||
0100000 DABA superuser
|
||||
Kennzeichen des DABA-Systemverantwortlicher
|
||||
|
||||
5. Eine Liste von automatisch gesetzter Flags fuer diesen
|
||||
Nutzer.
|
||||
6. Die fuer diesen Nutzer anwendbare Prozesstabelle.
|
||||
7. Ein Initialisierungs-File, das durch den DABA-Terminal-
|
||||
Monitor zum Login-Zeitpunkt gelesen wird.
|
||||
8. Kommentarfeld.
|
||||
9. Komma separierte Liste von Datenbanken. Wenn die Liste
|
||||
nicht vorhanden ist, kann der Nutzer jede Datenbank be-
|
||||
nutzen. Wenn sie mit einem "-" beginnt, kann der Nutzer
|
||||
jede Datenbank, ausser den nachfolgend spezifizierten
|
||||
benutzen. Andernfalls kann der Nutzer nur die spezifi-
|
||||
zierten Datenbanken benutzen.
|
||||
|
||||
WARNUNG: Das Erteilen der Befugnis, spezielle Prozesstabel-
|
||||
len zu benutzen, ist gleichbedeutend mit dem Ausschalten des
|
||||
Schutzsystems fuer diesen Nutzer.
|
||||
|
||||
BEISPIEL[E]
|
||||
daba:aa:5:2:177777:-d:=special:/mnt/daba/.ql::
|
||||
gast:ah:35:1:000000:::::demo.gast
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
USERSETUP(MUTOS) DABA16 USERSETUP(MUTOS)
|
||||
|
||||
NAME
|
||||
usersetup - Erstelle Nutzer-File
|
||||
|
||||
UEEBERSICHT
|
||||
usersetup [ - ]
|
||||
|
||||
BESCHREIBUNG
|
||||
Das /etc/passwd File wird gelesen und zur Erstellung des
|
||||
DABA-Nutzer-Verzeichnis verwendet, das in ...sys/etc/users
|
||||
abgelegt ist. Wenn das Flag - gesetzt wird, wird das Ergeb-
|
||||
nis nach Standardoutput geschrieben.
|
||||
|
||||
Die Struktur des DABA-Nutzer-Files ist in users(files) be-
|
||||
schrieben. Der Nutzername, sowie die Nutzer- und Gruppeni-
|
||||
dentifikatoren werden so initialisiert, dass sie mit den
|
||||
korrespondierenden Eintrittspunkten im /etc/passwd File
|
||||
identisch sind. Das Status-Feld wird auf 000000 initiali-
|
||||
siert, ausgenommen fuer den Nutzer daba, bei dem alle Bits
|
||||
gesetzt sind (alle Berechtigungen). Als Initialisierungs-
|
||||
File wird das File .ql im Home-Directory (User's Login-
|
||||
Directory) des Nutzers eingetragen. Das Feld fuer den
|
||||
"DABA"- Nutzercode wird mit einem aufsteigenden Code, begin-
|
||||
nend mit 'aa' gefuellt. Alle anderen Felder werden mit Null
|
||||
initialisiert.
|
||||
|
||||
Nach dem Ablauf von usersetup kann das Nutzerverzeichnis
|
||||
editiert werden. Bei Nutzern, die eine spezielle Berecht-
|
||||
igung erhalten sollen, ist das Statusfeld zu aendern
|
||||
|
||||
Falls DABA-Nutzer nach Erstellung des DABA-
|
||||
Nutzerverzeichnisses im File /etc/passwd zugefuegt oder ge-
|
||||
loescht werden, ist es notwendig, das Nutzerverzeichnis zu
|
||||
editieren, um diese Aenderung einzuarbeiten. Das Kommando
|
||||
usersetup kann nur einmal ausgefuehrt werden, um das Nutzer-
|
||||
verzeichnis zu initialisieren.
|
||||
|
||||
FILES
|
||||
.../sys/etc/users
|
||||
/etc/passwd
|
||||
|
||||
BEISPIEL[E]
|
||||
usersetup soll befaehigen, das users -File auf einen Aus-
|
||||
gangsstand zu bringen.
|
||||
Der Nutzer mit dem Login-Namen "neumann" kann zum Beispiel
|
||||
durch folgendes Kommando im DABA-Nutzerverzeichnis aufgenom-
|
||||
men werden:
|
||||
|
||||
usersetup -|fgrep neumann >> .../sys/etc/users
|
||||
|
||||
SIEHE AUCH
|
||||
iql(mutos), users(file)
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
VIEW(QL) DABA16 VIEW(QL)
|
||||
|
||||
NAME
|
||||
view - Definieren einer Sicht (virtuellen Relation)
|
||||
|
||||
UEBERSICHT
|
||||
define view name (target_list) [ where qual ]
|
||||
|
||||
BESCHREIBUNG
|
||||
Die Syntax der view Anweisung ist die der retrieve into An-
|
||||
weisung fast identisch. Die Daten werden jedoch physisch
|
||||
abgelet. Stattdessen wird die Definition gespeichert.
|
||||
Wenn die Sicht mit dem Namen name spaeter benutzt wird,
|
||||
erfolgt die Konvertierung der Anfrage, um mit den in
|
||||
der target_list spezifizierten Domaenen zu operieren.
|
||||
|
||||
|
||||
BEISPIEL[E]
|
||||
range of p is personal
|
||||
range of a is abt
|
||||
define view persabt (pname = p.name, p.gehalt, aname =
|
||||
a.name)
|
||||
where p.leiter = a.leiter
|
||||
|
||||
|
||||
SIEHE AUCH
|
||||
retrieve(ql), destroy(ql)
|
||||
Loading…
Reference in New Issue