ING_DB
This commit is contained in:
parent
be1ca80d22
commit
240e81e137
|
|
@ -0,0 +1,575 @@
|
||||||
|
.th CL \*(RR 3.10.89 4
|
||||||
|
.sh UEBERSICHT
|
||||||
|
Die Abbildung von \*(RR Da\%ten\%banken
|
||||||
|
auf Relationen in \*(II Da\%ten\%banken
|
||||||
|
und umgekehrt wird formal durch
|
||||||
|
die Da\%ten\%bank\%ver\%bindungssprache
|
||||||
|
CL (Connection Language) definiert.
|
||||||
|
Die CL Syntax ist einfach
|
||||||
|
und schnell zu erlernen.
|
||||||
|
Die Da\%ten\%bankverbindungssprache CL
|
||||||
|
ist eine zei\%len\%orientierte Spra\%che,
|
||||||
|
die formal (Syntax)
|
||||||
|
und informal (Semantik) ein\%ge\%f\*uhrt wird.
|
||||||
|
.br
|
||||||
|
CL Pro\%gram\%me werden in DBI
|
||||||
|
(Data Bases Interface)
|
||||||
|
Textfiles ab\%ge\%legt,
|
||||||
|
die interpretierend von
|
||||||
|
CDB(\*(RR),
|
||||||
|
RDB(\*(RR) und
|
||||||
|
WDB(\*(RR) abgearbeitet werden.
|
||||||
|
.br
|
||||||
|
DBI-Textfiles k\*onnen mit einem
|
||||||
|
\*(UU Texteditor erstellt bzw. ge\*andert werden.
|
||||||
|
Bei der Erstellung kann
|
||||||
|
DB(\*(RR) eine zeitersparende Hilfe sein.
|
||||||
|
.sh SYNTAX
|
||||||
|
Die formale Beschreibung erfolgt in Form von Regeln (R).
|
||||||
|
Die rechte Seite der Regel gibt den Regelname an
|
||||||
|
und die linke Seite die Regelaufl\*osung.
|
||||||
|
Beide Seiten werden durch das Zeichen : getrennt.
|
||||||
|
Regelnamen werden immer mit klei\%nen,
|
||||||
|
nicht weiter aufgel\*oste Konstanten
|
||||||
|
immer mit gro\*sen Buch\%sta\%ben geschrieben.
|
||||||
|
Alle Regeln (und Alternativen) wer\%den durchnummeriert,
|
||||||
|
um einfache Bez\*uge herstellen zu k\*on\%nen.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 1) CL\ \ \ \ \ \ \ \ \ \ \ :\ {line}
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
R1 besagt,
|
||||||
|
da\*s die CL aus einer nicht leeren Menge ({})
|
||||||
|
von Zeilen (line) besteht.
|
||||||
|
Die geschweiften Klammern sind syn\%tak\%tische Metasymbole,
|
||||||
|
die eine 1 bis n-malige Wie\%der\%holung angeben.
|
||||||
|
Der Name line ist ein Regelname,
|
||||||
|
also durch wei\%te\%re Regeln noch aufzul\*osen.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 2) line\ \ \ \ \ \ \ \ \ :\ NL
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 3) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ dbi_line
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Eine Zeile kann leer sein
|
||||||
|
(R2: nur aus dem Zeichen NL be\%ste\%hend;
|
||||||
|
NL ist eine Konstante,
|
||||||
|
die das Zeilenendezeichen (newline) repr\*asentiert)
|
||||||
|
oder eine Schnitt\%stel\%len\%de\%fi\%ni\%tions\%zeile
|
||||||
|
(R3: dbi_line) sein.
|
||||||
|
Die Alternative wird durch das syntaktische Metazeichen |
|
||||||
|
am Anfang von R3 dargestellt.
|
||||||
|
Leerzeilen k\*onnen \*uberall stehen
|
||||||
|
und sollen daher nicht weiter betrachtet werden.
|
||||||
|
Schnittstellendefinitioszeilen wer\%den der Einfachheit halber
|
||||||
|
im folgendem Zeilen genannt.
|
||||||
|
Alle Zeilen haben einen allgemeinen Aufbau.
|
||||||
|
Sie d\*urfen maximal 255 Zeichen lang sein
|
||||||
|
und beginnen mit einem Zei\%len\%kennzeichen
|
||||||
|
gefolgt von einer Menge von Fel\%dern,
|
||||||
|
die durch ei\%nen Seperator (sep)
|
||||||
|
voneinander getrennt sind.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 4) sep\ \ \ \ \ \ \ \ \ \ :\ {space}
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 5) space\ \ \ \ \ \ \ \ :\ TAB\ |\ BLANK
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Ein Seperator kann aus vielen (R4)
|
||||||
|
Tabulatoren oder Leer\%zei\%chen (R5)
|
||||||
|
in beliebiger Reihenfolge gebildet werden.
|
||||||
|
.s1
|
||||||
|
Es werden 8 verschiedene Zeilentypen unterschieden:
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 6) dbi_line\ \ \ \ \ :\ comment_line
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 7) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ dbd_line
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 8) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ field_line
|
||||||
|
.lp +8 8
|
||||||
|
(R\ 9) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ db_line
|
||||||
|
.lp +8 8
|
||||||
|
(R10) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ tab_line
|
||||||
|
.lp +8 8
|
||||||
|
(R11) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ dom_line
|
||||||
|
.lp +8 8
|
||||||
|
(R12) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ ref_line
|
||||||
|
.lp +8 8
|
||||||
|
(R13) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ cmd_line
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R14) comment_line\ :\ ':'\ sep\ COMMENT\ NL
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die Konstante ':' stellt das Zeichen : dar,
|
||||||
|
sie ist das Zei\%len\%kenn\%zei\%chen der Kommentarzeile
|
||||||
|
(R14: comment_line).
|
||||||
|
Die Konstante COM\%MENT ist ein beliebiger Kommentartext,
|
||||||
|
der durch den Seperator sep vom Zeilenkennzeichen zu trennen ist
|
||||||
|
und durch das Zeilenendezeichen NL beendet wird.
|
||||||
|
Kom\%men\%tar\%zeilen k\*onnen \*uberall stehen
|
||||||
|
und sollen daher nicht weiter betrachtet werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R15) dbd_line\ \ \ \ \ :\ '2'\ |\ '3'\ sep\ DBD_NAME\ NL
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Eine \*(RR Da\%ten\%bank\%zeile
|
||||||
|
(R15: dbd_line)
|
||||||
|
wird durch die \*(RR Versionsnummer
|
||||||
|
(2 f\*ur \*(R2
|
||||||
|
bzw. 3 f\*ur \*(R3/4)
|
||||||
|
als Zeilenkennzeichen eingeleitet,
|
||||||
|
sie hat ein Feld.
|
||||||
|
.br
|
||||||
|
Das Feld DBD_NAME ist der
|
||||||
|
\*(UU Filename der \*(RR Da\%ten\%bank.
|
||||||
|
.s1
|
||||||
|
Die angegebene Da\%ten\%bank mu\*s
|
||||||
|
zur Abarbeitungszeit von DB(\*(RR) und RDB(\*(RR)
|
||||||
|
im \*(UU Filesystem existieren.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R16) field_line\ \ \ :\ 'F'\ sep\ F_NO\ sep\ F_NAME\ sep\ F_TYP
|
||||||
|
.lp +8 8
|
||||||
|
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ [sep\ F_DEC]\ NL
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Eine (\*(RR) Feldzeile
|
||||||
|
(R16: field_line)
|
||||||
|
wird durch das Zeilenkennzeichen F eingeleitet,
|
||||||
|
sie hat 3 oder 4 Felder.
|
||||||
|
.br
|
||||||
|
Das Feld F_NO ist die Nummer des \*(RR Feldes,
|
||||||
|
sie darf zwischen 0 .. Feldanzahl-1 der Da\%ten\%bank liegen.
|
||||||
|
.br
|
||||||
|
Das Feld F_NAME ist der Name des \*(RR Feldes,
|
||||||
|
er darf aus dem Zei\%chen\%satz [A-Z:0-9] gebildet werden
|
||||||
|
und maximal 10 Zeichen lang sein.
|
||||||
|
.br
|
||||||
|
Das Feld F_TYP ist die Typ-/L\*angenangabe des \*(RR Feldes.
|
||||||
|
.br
|
||||||
|
Das Feld F_DEC ist die Anzahl der Dezimalstellen des \*(RR Feldes.
|
||||||
|
Ist F_DEC==0,
|
||||||
|
kann die Angabe des Feldes entfallen
|
||||||
|
(die Metazeichen [] geben die wahlweise Verwendung
|
||||||
|
der syn\%tak\%tischen Konstruktion an).
|
||||||
|
.s1
|
||||||
|
Folgende Wer\%te f\*ur F_TYP und F_DEC sind zul\*assig:
|
||||||
|
.s1
|
||||||
|
.in 13
|
||||||
|
.nf
|
||||||
|
F_TYP F_DEC
|
||||||
|
-------------------------------------------
|
||||||
|
Cl 0 0 < l < 255
|
||||||
|
D8 0
|
||||||
|
I4 0 nur f\*ur \*(RR Satznummer
|
||||||
|
L1 0
|
||||||
|
M10 0 nur \*(R3/4
|
||||||
|
Nl d 0 <= d < l < 21
|
||||||
|
.fi
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Das Feld F_NO==0 ist die \*(RR Satznummer,
|
||||||
|
ein Feld das we\%der im \*(RR Datensatz
|
||||||
|
noch in den \*(RR Feld\%de\%fi\%ni\%tionen erscheint.
|
||||||
|
Dieses Feld mu\*s den Namen F_NAME==#
|
||||||
|
und den in\%ter\%nen Da\%ten\%typ F_TYP==I4
|
||||||
|
(32-bit Integer) erhalten.
|
||||||
|
.br
|
||||||
|
Das Feld F_NO==1 ist die \*(RR L\*oschmarkierung,
|
||||||
|
ein Feld das im \*(RR Datensatz,
|
||||||
|
nicht aber in den \*(RR Feld\%de\%fi\%ni\%tionen erscheint.
|
||||||
|
Dieses Feld mu\*s den Namen F_NAME==*
|
||||||
|
und den Da\%ten\%typ F_TYP==C1 erhalten.
|
||||||
|
.br
|
||||||
|
Beide Felder sind imagin\*are Felder,
|
||||||
|
die aber in beiden Rich\%tun\%gen \*ubernommen werden k\*onnen.
|
||||||
|
Die eigentlichen \*(RR Felder beginnen
|
||||||
|
also mit der Nummer F_NO==2.
|
||||||
|
.s1
|
||||||
|
Das angegebene Feld mu\*s
|
||||||
|
zur Abarbeitungszeit von DB(\*(RR) und RDB(\*(RR)
|
||||||
|
in der \*(RR Da\%ten\%bank
|
||||||
|
mit den gleichen Werten f\*ur F_NO, F_TYP und F_DEC existieren.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R17) db_line\ \ \ \ \ \ :\ 'I'\ sep\ DB_NAME\ NL
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Eine \*(II Da\%ten\%bank\%zeile
|
||||||
|
(R17: db_line)
|
||||||
|
wird durch das Zeilenkennzeichen I eingeleitet,
|
||||||
|
sie hat ein Feld.
|
||||||
|
.br
|
||||||
|
Das Feld DB_NAME ist der Name der \*(II Da\%ten\%bank,
|
||||||
|
er darf aus dem Zei\%chen\%satz [a-z_0-9] gebildet werden
|
||||||
|
und maximal 12 Zeichen lang sein.
|
||||||
|
.s1
|
||||||
|
Die angegebene Da\%ten\%bank mu\*s
|
||||||
|
zur Abarbeitungszeit von CDB(\*(RR),
|
||||||
|
RDB(\*(RR) und WDB(\*(RR)
|
||||||
|
im \*(II System existieren.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R18) tab_line\ \ \ \ \ :\ 'T'\ sep\ TAB_NAME\ NL
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Eine (\*(II) Tabellenzeile
|
||||||
|
(R18: tab_line)
|
||||||
|
wird durch das Zeilenkennzeichen T eingeleitet,
|
||||||
|
sie hat ein Feld.
|
||||||
|
.br
|
||||||
|
Das Feld TAB_NAME ist der Name der \*(II Tabelle (Re\%la\%tion),
|
||||||
|
er darf aus dem Zei\%chen\%satz [a-z_0-9] gebildet werden
|
||||||
|
und maximal 12 Zeichen lang sein.
|
||||||
|
.s1
|
||||||
|
Die angegebene Relation mu\*s
|
||||||
|
zur Abarbeitungszeit von RDB(\*(RR) und WDB(\*(RR)
|
||||||
|
in der \*(II Da\%ten\%bank existieren.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R19) dom_line\ \ \ \ \ :\ 'D'\ sep\ D_NO\ sep\ D_NAME\ sep\ D_TYP\ NL
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Eine (\*(II) Dom\*anzeile
|
||||||
|
(R19: dom_line)
|
||||||
|
wird durch das Zeilenkennzeichen D eingeleitet,
|
||||||
|
sie hat 3 Felder.
|
||||||
|
.br
|
||||||
|
Das Feld D_NO ist die Nummer der \*(II Dom\*ane,
|
||||||
|
sie darf zwischen 1 .. Dom\*ananzahl der Relation liegen.
|
||||||
|
.br
|
||||||
|
Das Feld D_NAME ist der Name der \*(II Dom\*ane,
|
||||||
|
er darf aus dem Zei\%chen\%satz [a-z_0-9] gebildet werden
|
||||||
|
und maximal 12 Zeichen lang sein.
|
||||||
|
.br
|
||||||
|
Das Feld D_TYP ist die Typ-/L\*angenangabe der \*(II Dom\*ane.
|
||||||
|
.br
|
||||||
|
.s1
|
||||||
|
Folgende Wer\%te f\*ur D_TYP sind zul\*assig:
|
||||||
|
.s1
|
||||||
|
.in 13
|
||||||
|
.nf
|
||||||
|
D_TYP
|
||||||
|
-------------------------------------------
|
||||||
|
cn 0 < n < 256
|
||||||
|
fn n==4 || n==8
|
||||||
|
in n==1 || n==2 || n==4
|
||||||
|
.fi
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die angegebene Dom\*ane mu\*s
|
||||||
|
zur Abarbeitungszeit von RDB(\*(RR) und WDB(\*(RR)
|
||||||
|
in der \*(II Relation
|
||||||
|
mit den gleichen Werten f\*ur D_NO und D_TYP existieren.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R20) ref_line\ \ \ \ \ :\ '@'\ sep\ F_NO\ sep\ D_NO\ NL
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Eine Zuordnungszeile
|
||||||
|
(R20: ref_line)
|
||||||
|
wird durch das Zei\%len\%kennzeichen @ eingeleitet,
|
||||||
|
sie hat 2 Felder.
|
||||||
|
.br
|
||||||
|
Das Feld F_NO ist die Nummer des \*(RR Feldes,
|
||||||
|
sie darf zwischen 0 .. Feldanzahl-1 der Da\%ten\%bank liegen.
|
||||||
|
.br
|
||||||
|
Das Feld D_NO ist die Nummer der \*(II Dom\*ane,
|
||||||
|
sie darf zwischen 1 .. Dom\*ananzahl der Relation liegen.
|
||||||
|
.br
|
||||||
|
Die Zuordnungszeile definiert,
|
||||||
|
welches \*(RR Feld
|
||||||
|
in welche \*(II Dom\*ane geladen werden soll
|
||||||
|
und umgekehrt.
|
||||||
|
Hinter den \*(RR Feldern und \*(II Dom\*anen
|
||||||
|
verbergen sich Werte, die umgeladen werden sollen.
|
||||||
|
Diese Werte sind allgemein als Typen
|
||||||
|
(F_TYP/F_DEC und D_TYP) definiert,
|
||||||
|
Folgende Typ\%zu\%ord\%nun\%gen wer\%den unterst\*utzt:
|
||||||
|
.s1
|
||||||
|
.in 13
|
||||||
|
.nf
|
||||||
|
\*(RR \*(II
|
||||||
|
----------------------------------------------------
|
||||||
|
Cl (0 < l < 255) cn (0 < n < 256)
|
||||||
|
D c8
|
||||||
|
L c1
|
||||||
|
Nl.d (0 <= d < l < 21) i1 || i2 || i4 || f4 || f8
|
||||||
|
M (nur \*(R3/4) keine Zuordnung m\*oglich
|
||||||
|
I4 (Satznummer) i4
|
||||||
|
C1 (Loeschmarkierung) c1
|
||||||
|
.fi
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Bei der Zuordnung von \*(RR Feldern
|
||||||
|
zu \*(II Dom\*anen gilt,
|
||||||
|
da\*s jeweils nur ein Feld einer Dom\*ane zugewiesen wer\%den kann.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(R21) cmd_line\ \ \ \ \ :\ 'R'\ sep\ COMMAND\ NL
|
||||||
|
.lp +8 8
|
||||||
|
(R22) \ \ \ \ \ \ \ \ \ \ \ \ \ |\ 'W'\ sep\ COMMAND\ NL
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Eine Kom\%man\%do\%zei\%le
|
||||||
|
(R21|R22: cmd_line)
|
||||||
|
wird entweder durch das Zei\%len\%kennzeichen R
|
||||||
|
oder W eingeleitet,
|
||||||
|
sie hat 1 Feld.
|
||||||
|
.br
|
||||||
|
Das Feld COMMAND ist der Kom\%man\%do\%text,
|
||||||
|
des auszuf\*uhrenden Kom\%man\%dos.
|
||||||
|
.br
|
||||||
|
Die R-Kom\%man\%do\%zei\%len (R21)
|
||||||
|
werden durch RDB(\*(RR)
|
||||||
|
und die W-Kom\%man\%do\%zei\%len (R22)
|
||||||
|
durch WDB(\*(RR) ausgef\*uhrt.
|
||||||
|
.sh SEMANTIK
|
||||||
|
Die bisherige Syntax mu\*s
|
||||||
|
um die Regeln der Reihenfolge
|
||||||
|
der verschiedenen Zeilen erweitert werden.
|
||||||
|
.br
|
||||||
|
Die informale Beschreibung erfolgt in Form von Regeln (S).
|
||||||
|
.br
|
||||||
|
Wie schon bekannt,
|
||||||
|
k\*onnen Leer- und Kommentarzeilen
|
||||||
|
an al\%len Stellen des DBI-Textfiles eingef\*ugt werden,
|
||||||
|
wo Zeilen stehen d\*urfen.
|
||||||
|
Sie sollen bei der Darstellung der se\%man\%tischen Regeln
|
||||||
|
nicht mehr erw\*ahnt werden.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 1) DBI\ \ \ \ \ \ \ \ \ \ :\ [before]\ \*(rr\ \*(ii\ [after]
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Ein DBI-Text gliedert sich in 4 Abschnitte:
|
||||||
|
.lp +16 8
|
||||||
|
before Kom\%man\%do\%teil vor der Konvertierung (S2)
|
||||||
|
.lp +16 8
|
||||||
|
\*(rr \*(RR Da\%ten\%bank\%teil (S3)
|
||||||
|
.lp +16 8
|
||||||
|
\*(ii \*(II Da\%ten\%bank\%teil (S5)
|
||||||
|
.lp +16 8
|
||||||
|
after Kom\%man\%do\%teil nach der Konvertierung (S9)
|
||||||
|
.i0
|
||||||
|
Die Kom\%man\%do\%teile vor bzw. nach der Konvertierung sind wahl\%weise,
|
||||||
|
d.h. sie k\*onnen entfallen.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 2) before\ \ \ \ \ \ \ :\ {cmd_line}
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Der Kom\%man\%do\%teil vor der Konvertierung
|
||||||
|
besteht aus einer be\%liebigen Menge
|
||||||
|
von R-Kom\%man\%do\%zei\%len (R21) bzw.
|
||||||
|
W-Kom\%man\%do\%zei\%len (R22).
|
||||||
|
.br
|
||||||
|
Die R-Kom\%man\%do\%zei\%len (R21)
|
||||||
|
werden durch RDB(\*(RR)
|
||||||
|
und die W-Kom\%man\%do\%zei\%len (R22)
|
||||||
|
durch WDB(\*(RR) ausgef\*uhrt.
|
||||||
|
Ein Kommando kann ein Programm mit Argumenten
|
||||||
|
oder eine shell-Prozedur mit Argumenten sein.
|
||||||
|
.br
|
||||||
|
In DB(\*(RR) sind Beispiele zur Verwendung
|
||||||
|
des Kom\%man\%do\%teils angegeben.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 3) \*(rr\ \ \ \ \ \ :\ dbd_line\ fields
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Der \*(RR Da\%ten\%bank\%teil beschreibt vollst\*andig
|
||||||
|
die \*(RR Da\%ten\%bank.
|
||||||
|
Sie wird durch eine \*(RR Da\%ten\%bank\%zei\%le (R15: dbd_line)
|
||||||
|
und den Feldteil (S4: fields) definiert.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 4) fields\ \ \ \ \ :\ {field_line}
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die \*(RR Felder werden durch
|
||||||
|
eine Menge von Feldzeilen (R16: field_line) definiert.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 5) \*(ii\ \ \ \ \ \ \ \ \ :\ db_line\ {relation}
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Der \*(II Da\%ten\%bank\%teil beschreibt vollst\*andig
|
||||||
|
die \*(II Da\%ten\%bank.
|
||||||
|
Sie wird durch eine \*(II Da\%ten\%bank\%zei\%le (R17: db_line)
|
||||||
|
und eine Menge von (\*(II) Ta\%bel\%len\%tei\%len (S6: relation) definiert.
|
||||||
|
Jeder Ta\%bel\%len\%tei\%l be\%schreibt genau eine \*(II Relation.
|
||||||
|
Es sind maximal 5 Ta\%bel\%len\%tei\%le zul\*assig.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 6) relation\ \ \ \ \ :\ tab_line\ doms\ refs
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Der (\*(II) Ta\%bel\%len\%tei\%l beschreibt vollst\*andig
|
||||||
|
eine \*(II Relation.
|
||||||
|
Sie wird durch eine Tabellenzeile (R18: tab_line),
|
||||||
|
den Dom\*anteil(S7: doms)
|
||||||
|
und den Zuordnungsteil (S8: refs) definiert.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 7) doms\ \ \ \ \ \ \ \ \ :\ {dom_line}
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die \*(II Dom\*anen werden durch
|
||||||
|
eine Menge von Dom\*anzeilen (R19: dom_line) definiert.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 8) refs\ \ \ \ \ \ \ \ \ :\ {ref_line}
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Die Zuordnungen werden durch
|
||||||
|
eine Menge von Zuordnungszeilen (R20: ref_line) definiert.
|
||||||
|
.s1
|
||||||
|
.lp +8 8
|
||||||
|
(S\ 9) after\ \ \ \ \ \ \ \ :\ {cmd_line}
|
||||||
|
.i0
|
||||||
|
.s1
|
||||||
|
Der Kom\%man\%do\%teil nach der Konvertierung
|
||||||
|
besteht aus einer be\%liebigen Menge
|
||||||
|
von R-Kom\%man\%do\%zei\%len (R21) bzw.
|
||||||
|
W-Kom\%man\%do\%zei\%len (R22).
|
||||||
|
.br
|
||||||
|
Die R-Kom\%man\%do\%zei\%len (R21)
|
||||||
|
werden durch RDB(\*(RR)
|
||||||
|
und die W-Kom\%man\%do\%zei\%len (R22)
|
||||||
|
durch WDB(\*(RR) ausgef\*uhrt.
|
||||||
|
Ein Kommando kann ein Programm mit Argumenten
|
||||||
|
oder eine shell-Prozedur mit Argumenten sein.
|
||||||
|
.br
|
||||||
|
In DB(\*(RR) sind Beispiele zur Verwendung
|
||||||
|
des Kom\%man\%do\%teils angegeben.
|
||||||
|
.bp
|
||||||
|
.sh BEISPIEL
|
||||||
|
Folgender DBI-Text soll die syntaktischen
|
||||||
|
und semantischen Regeln erl\*autern.
|
||||||
|
.s1
|
||||||
|
.nf
|
||||||
|
1 R echo START \*(R2 ==> \*(II
|
||||||
|
2 W echo START \*(II ==> \*(R2
|
||||||
|
3 2 pers.dbd
|
||||||
|
4 F 0 # I4
|
||||||
|
5 F 1 * C1
|
||||||
|
6 F 2 NUM N5
|
||||||
|
7 F 3 NAME C20
|
||||||
|
8 I \*(rr
|
||||||
|
9 T personal
|
||||||
|
10 D 1 num i2
|
||||||
|
11 D 2 name c20
|
||||||
|
12 @ 2 1
|
||||||
|
13 @ 3 2
|
||||||
|
14 R echo ENDE \*(R2 ==> \*(II
|
||||||
|
15 W echo ENDE \*(II ==> \*(R2
|
||||||
|
.fi
|
||||||
|
.s1
|
||||||
|
Folgend sollen alle Zeilen den
|
||||||
|
syntaktischen und semantischen Regeln zugeordnet werden:
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ 1-15 (S1) DBI-text
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ 1-\ 2 (S2) Kommandoteil vor der Konvertierung
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 1 (R21) Kommando f\*ur RDB(\*(RR),
|
||||||
|
.br
|
||||||
|
gibt den Text "START \*(R2 ==> \*(II"
|
||||||
|
nach dem Start der Konvertierung aus.
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 2 (R22) Kommando f\*ur WDB(\*(RR),
|
||||||
|
.br
|
||||||
|
gibt den Text "START \*(II ==> \*(R2"
|
||||||
|
nach dem Start der Konvertierung aus.
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ 3-\ 7 (S3) \*(RR Da\%ten\%bank\%teil
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 3 (R15) \*(RR Da\%ten\%bank\%zeile,
|
||||||
|
f\*ur die \*(RR Da\%ten\%bank,
|
||||||
|
die sich in dem \*(UU file pers.dbd be\%fin\%det.
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ 4-\ 7 (S4) Feld\%teil
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 4 (R16) Feldzeile,
|
||||||
|
f\*ur das Feld 0/# mit dem Typ I4
|
||||||
|
(\*(RR Satznummer).
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 5 (R16) Feldzeile,
|
||||||
|
f\*ur das Feld 1/* mit dem Typ C1
|
||||||
|
(\*(RR L\*oschmarkierung).
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 6 (R16) Feldzeile,
|
||||||
|
f\*ur das Feld 2/NUM mit dem Typ N5
|
||||||
|
(Angestelltennummer).
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 7 (R16) Feldzeile,
|
||||||
|
f\*ur das Feld 3/NAME mit dem Typ C20
|
||||||
|
(Angestelltenname).
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ 8-13 (S5) \*(II Da\%ten\%bank\%teil
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 8 (R17) \*(II Da\%ten\%bank\%zeile,
|
||||||
|
w\*ahlt die Da\%ten\%bank \*(rr aus.
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ 9-13 (S6) Tabellen\%teil
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ \ 9 (R18) Tabellen\%zeile
|
||||||
|
f\*ur die Relation personal der Da\%ten\%bank \*(rr.
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ 10-11 (S7) Dom\*an\%teil
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ 10 (R19) Dom\*anzeile,
|
||||||
|
f\*ur die Dom\*ane 1/num mit dem Typ i2
|
||||||
|
(Angestelltennummer).
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ 11 (R19) Dom\*anzeile,
|
||||||
|
f\*ur die Dom\*ane 2/name mit dem Typ c20
|
||||||
|
(Angestelltenname).
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ 12-13 (S8) Zuordnungs\%teil
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ 12 (R20) Zuordnungszeile,
|
||||||
|
korreliert das Feld 2 (NUM/N5)
|
||||||
|
mit der \*(II Dom\*ane 1 (num/i2).
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ 13 (R20) Zuordnungszeile,
|
||||||
|
korreliert das Feld 3 (NAME/C20)
|
||||||
|
mit der \*(II Dom\*ane 2 (name/c20).
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ 14-15 (S9) Kommandoteil nach der Konvertierung
|
||||||
|
.s1
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ 14 (R21) Kommando f\*ur RDB(\*(RR),
|
||||||
|
.br
|
||||||
|
gibt den Text "ENDE \*(R2 ==> \*(II"
|
||||||
|
nach dem Ende der Konvertierung aus.
|
||||||
|
.lp +12 12
|
||||||
|
Zeile\ \ \ \ 15 (R22) Kommando f\*ur WDB(\*(RR),
|
||||||
|
.br
|
||||||
|
gibt den Text "ENDE \*(II ==> \*(R2"
|
||||||
|
nach dem Ende der Konvertierung aus.
|
||||||
|
.i0
|
||||||
Loading…
Reference in New Issue