This commit is contained in:
Oliver Lehmann 1989-06-16 12:51:46 +00:00
parent 4699d7877a
commit 78520c3aca
6 changed files with 9576 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,648 @@
Anwendung - 311 - RRRReeeeppppoooorrrrtttt
_2._6._1_7. SSSScccchhhhlllluuuu""""sssssssseeeellllwwwwoooorrrrtttteeee
all end linebegin repeat
and enda lineend report
as endc lines return
batch endi m_day scale
batchline endo minut second
before endr mod set
big endw month space
bit exp new switch
byte false next terminal
call for norm then
case from not time
char graphic null to
clear groupbegin oct true
col groupend on tuple
column hex one value
columns hour or var
complement if out w_day
date ignore page while
day in pagebegin with
dec integer pageend word
default is_dst pic y_day
define last point year
do length proc
else line real
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
Anwendung - 312 - ZZZZIIIIPPPP
_2._7. EEEEiiiinnnnggggaaaabbbbeeeeggggeeeennnneeeerrrraaaattttoooorrrr ZZZZIIIIPPPP
---- VVVVeeeerrrrssss.... 2222....1111 ****
_2._7._1. EEEEiiiinnnnlllleeeeiiiittttuuuunnnngggg
Der vorliegende Eingabegenerator ist den Bedingungen von
UNIX -Versionen angepasst, fu"r die eine tttteeeerrrrmmmmccccaaaapppp und das
Softwarepaket ccccuuuurrrrsssseeeessss verfu"gbar sind. Da ZIP als Hilfe fu"r
die Eingabe und Anzeige von Daten in der Umgebung von AMX-
und EQUEL-Programmen entworfen wurde, soll nachfolgend die
Anwendung auch an solchen Beispielen gezeigt werden.
Die Erstellung einer ZIP-Prozedur erfolgt in drei Schritten:
1. Mit dem Editor wird eine Maske entworfen, die deckungs-
gleich spa"ter auf dem Bildschirm abzubilden ist. Varia-
blenfelder werden durch # eingeleitet, die Anzahl der
nachfolgenden Zeichen bis zum Leerzeichen bzw. Newline
(auch EOF) oder einem beliebigen Begrenzungszeichen
legt die Stelligkeit fest (einschliesslich #). Bei
Gleitkommazahlen bestimmt der Punkt die Konver-
tierungsvorschrift.
2. Die Textmaske (Filename: vorgeschlagenes Postfix _m)
wird einschliesslich mo"glicher steuernder Flags als
Argument fu"r das Kommando zzzziiiipppp angegeben und ein C-
Quellfile generiert.
3. Die Verbindung zwischen Maske und Variablen ergibt sich
aus dem Dialog. Die Flags -hp ziehen zusa"tzliche Fragen
fu"r Hilfen bzw. Pru"fungen nach sich. Der C-Compiler
wird automatisch gerufen, bei Flag -l erfolgt die
Einordnung in eine Arbeitsbibliothek.
Bei Verwendung des Flag -z wird ein Zeilenoffset ausgegeben.
Er berechnet sich aus der Anzahl der Newlines + EOF im Aus-
gangsfile. Mit diesem Offset soll der Entwurf des Gesamt-
bildes auf dem Schirm kontrolliert werden.
Bevor eine ZIP-Prozedur im Programm genutzt werden kann, ist
die Initialisierungsprozedur iiiinnnniiiittttzzzziiiipppp(((()))) zu rufen - sie ini-
tialisiert auch die Verwendbarkeit der ccccuuuurrrrsssseeeessss -Makros bzw.
Prozeduren. Die u"blichen Ausgaben zu stdout (printf, write,
putchar usw.) du"rfen innerhalb des Gu"ltigkeitsbereiches des
sogenannten "Standard-Screen" (stdscr) nicht verwendet wer-
den, weil dann Konsistenzprobleme auftreten. Dafu"r stehen
die curses-Makros (addstr(), addch()) zur Verfu"gung.
AAAAnnnnmmmmeeeerrrrkkkkuuuunnnngggg:::: Zum Binden des gesamten Programmes (AMX, EQC
u.a.) sind die Bibliotheken libcurses.a und libzip.a einzu-
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
Anwendung - 313 - ZZZZIIIIPPPP
ziehen.
Die direkte Einordnung des Generators in das Datenbanksystem
unter Nutzung der System-Relation "attribute" ist vorla"ufig
nicht geplant. Die Praxis zeigt, dass die Eingabe und
Korrektur aller Doma"nen in einem Menue die Ausnahme ist -
als weiteres Problem steht dann, in welcher Reihenfolge die
Fu"hrungstexte den Spalten zugeordnet werden sollten. Hierzu
wa"re wieder ein Dialog oder eine Zuordnung in der Phase des
Editierens der Maske notwendig. Es ist in der Regel so,
dass erst in Abha"ngigkeit vom Wert des Schlu"ssels entweder
vom Programm oder vom Bedienenden entschieden wird, wie sich
der weitere Ablauf gestaltet ("append", "replace" oder
"delete") bzw. die Doma"nen anderer Relationen einzubeziehen
sind.
_2._7._2. RRRReeeeaaaalllliiiissssiiiieeeerrrruuuunnnngggg
ZIP wird durch "make all" im Directory "../../src/zip"
installiert. Das Kommando zip wird in "../../bin" eingeord-
net. Ruft man zip ohne Parameter, wird eine Kurzinformation
zur Anwendung gegeben (in "../../man/zip"). Im Directory
"../src/zip" ist ein Directory "tut" enthalten, an dem man
sich analog dieser Dokumentation orientieren kann.
Die verwendete Relation "anschrift" hat folgende Struktur:
Relation: anschrift
---------
Besitzer: ing_db
Tupellaenge: 199
Verfallsdatum: Wed Mar 30 15:21:36 1988
Tupelanzahl: 99
Speicherstruktur: ISAM
Relationentyp: Nutzerrelation
Domaenname Typ Laenge Schluessel
-------------------------------------------
bn i 4 1
ans1 c 40
ans2 c 40
ans3 c 30
ort c 30
plz c 5
kubez c 48
bezirk i 2
-------------------------------------------
Zur Veranschaulichung der Verfahrensweise folgendes AMX-
Programm:
-------------------------------------------------------------
## shared hardsoft
/* Eingabe und Korrektur von Anschriften */
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
Anwendung - 314 - ZZZZIIIIPPPP
## long BN;
## char ANS1[40]; /* 1.Zeile Anschrift */
## char ANS2[40]; /* 2.Zeile Anschrift */
## char ANS3[30]; /* 3.Zeile Anschrift, Strasse/Psf. */
## char ORT[30]; /* Ort */
## char PLZ[5]; /* Postleitzahl */
## char KUBEZ[48]; /* Kurzbezeichnung Anschrift */
## int BEZIRK; /* individueller Bezirksschluessel */
amx()
{
int flag;
int clr;
int zl;
initzip(); /*Initialisierung von curses und zip*/
## open anschrift
do
{
BN = 0;
ANS1[0] = ANS2[0] = ANS3[0] = ORT[0] = '\0';
PLZ[0] = '\0';
KUBEZ[0] = '\0';
clr = 0;
if (!ansbn(clr++, 0)) break; /*Schirm wird gloescht,*/
if (!BN) break; /*dr anschliessend erhoeht*/
flag = 0;
## scan anschrift $bn=BN (ANS1=$ans1,ANS2=$ans2,ANS3=$ans3,
## ORT=$ort,PLZ=$plz,KUBEZ=$kubez,BEZIRK=$bezirk)
## {
++flag;
if (!ansein(clr, 1)) break; /*kein Schirm loeschen,*/
/*alle Variablen erst anzeigen*/
## replace ($bn=BN,$ans1=ANS1,$ans2=ANS2,$ans3=ANS3,
## $ort=ORT,$plz=PLZ,$kubez=KUBEZ,$bezirk=BEZIRK)
## }
if (!flag)
{
if (!ansein(clr, 1)) continue;
## append anschrift ($bn=BN,$ans1=ANS1,$ans2=ANS2,
## $ans3=ANS3,$ort=ORT,$plz=PLZ,$kubez=KUBEZ,$bezirk=BEZIRK)
}
}
while (BN);
## commit
## close anschrift
}
-------------------------------------------------------------
Als Eingabe- bzw. Korrekturprozeduren kommen ansbn() und
ansein() vor. Mit der Trennung in zwei Masken bzw.
Prozeduren wird vermieden, dass ansein() bei BN = 0 noch
Werte abfordert und das gleiche Programm zum Anfu"gen neuer
Tupel bzw. zum A"ndern vorhandener Verwendung findet. Im
ersten Schritt werden die Masken aaaannnnssssbbbbnnnn____mmmm und aaaannnnsssseeeeiiiinnnn____mmmm mit
dem Editor aufgestellt, dabei ist zu beachten, dass in den
Zeilen, bei denen mit Fu"hrungstexten begonnen wird, ganz
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
Anwendung - 315 - ZZZZIIIIPPPP
links kein Leerzeichen steht - fu"hrende Leerzeichen werden
nicht ausgegeben:
MMMMaaaasssskkkkeeee aaaannnnssssbbbbnnnn____mmmm::::
Erfassg./Korr. von Anschriften ==> Abbruch: Betriebsnummer = 0
Betriebsnummer(8-St.): #9999999<
MMMMaaaasssskkkkeeee aaaannnnsssseeeeiiiinnnn____mmmm::::
Anschrift-Betriebsbezeichnung1: #aaaaaaaaaaaaaaaaaaaaaaaaa..a<
..........Betriebsbezeichnung2: #aaaaaaaaaaaaaaaaaaaaaaaaa..a<
..........Strasse/Nr. : #aaaaaaaaaaaaaaaaaaaaaaaaaaaa<
..........Ort : #aaaaaaaaaaaaaaaaaaaaaaaaaaaa<
..........Postleitzahl : #aaa<
Kurzbezeichnung: #aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<
Bezirk : #9<
In den ersten beiden Zeilen wurden, um eine bessere Darstel-
lung zu erreichen, einige a ausgeblendet (entspricht ..).
AAAAbbbbllllaaaauuuuffff::::
Der Eingabe-Generator wird mit
zzzziiiipppp -pl LIBTUT ansbn
gerufen.
Darstellung des Dialogs:
-------------------------------------------------------------
+--------------------------------+
| EINGABE-GENERATOR >>> ZIP <<< |
| Version 2.1 (curses) 01.02.89 |
| EVK Olbernhau |
+--------------------------------+
Der Abfragezyklus bezieht sich jeweils auf eine Variable!
Zur Orientierung werden die Texte der Maske mit ausgegeben.
Erfassg./Korr. von Anschriften ==> Abbruch: Betriebsnummer = 0
Betriebsnummer(8-St.):
>>>Datentyp (i/l/c/f/d) > l
>>>vereinbarter Name (Feld mit []) > BN
>>>mit Korrekturmoeglichkeit?(j/n) > j
>>>Name Pruefprozedur mit () u.Arg.> przk()
>>>Pruef-Art:Zei.=z/Wort=w > w
>>>Hilfe einordnen? (j/n) > j
>>>Hilfe-Art: Text=t / Prozedur=p > t
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
Anwendung - 316 - ZZZZIIIIPPPP
>>>Name File f. Hilfe-Text m. (z,s) > bnhlp(3,15)
9999999<
Okay? >j
-------------------------------------------------------------
Zur Orientierung im Dialog gibt ZIP alle Fu"hrungstexte
entsprechend der Textmaske mit aus.
Parallel zum Dialog wird das File ansbn_i angelegt:
-pl LIBTUT ansbn
long BN j przk() w bnhlp(3,15) t
Die Pru"fung der Statistik-Betriebsnummer erledigt die
Prozedur przk():
-------------------------------------------------------------
/* Pruefziffernkontrolle Modul 11 (8-stellig) */
przk(pn) long *pn;
{
long nr;
int bew[8];
int erg, sg, i, divr, anr, pz, p;
nr = *pn;
bew[0] = 0;
bew[1] = 4;
bew[2] = 8;
bew[3] = 5;
bew[4] = 10;
bew[5] = 9;
bew[6] = 7;
bew[7] = 3;
p = nr % 10;
sg = 0;
for (i = 0; i < 8; i++ )
{
anr = nr % 10;
erg = anr * bew[i];
sg = sg + erg;
nr = nr / 10;
}
divr = sg % 11;
switch(divr)
{
case 0 : pz = 5;
break;
case 2 : pz = 4;
break;
case 3 : pz = 9;
break;
case 4 : pz = 3;
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
Anwendung - 317 - ZZZZIIIIPPPP
break;
case 5 : pz = 8;
break;
case 6 : pz = 2;
break;
case 7 : pz = 7;
break;
case 8 : pz = 1;
break;
case 9 : pz = 6;
break;
default: pz = 0;
}
if (p == pz) return(1);
else return(0);
}
-------------------------------------------------------------
Der Ru"ckkehrcode dieser Prozedur, die ebenfalls in LIBTUT
steht, wird ausgewertet (1 ist TRUE, 0 ist FALSE). Der
Return-Code 0 veranlasst nach einem Hupton zur erneuten
Eingabe (Kursor auf Feldanfang), die Eingabe von
Fragezeichen (?) fu"hrt zur Ausgabe der Hilfe "pruefzif-
ferngesichert" - der Text dazu steht im File bnhlp, das bei
der Generierung eingezogen wird. Die Prozedur ansein() wird
mit
zip -a 3 -hl LIBTUT ansein
generiert. Der Dialog la"uft wie folgt ab:
-------------------------------------------------------------
+--------------------------------+
| EINGABE-GENERATOR >>> ZIP <<< |
| Version 2.1 (curses) 01.02.89 |
| EVK Olbernhau |
+--------------------------------+
Der Abfragezyklus bezieht sich jeweils auf eine Variable!
Zur Orientierung werden die Texte der Maske mit ausgegeben.
Anschrift-Betriebsbezeichnung1:
>>>Datentyp (i/l/c/f/d) > c
>>>vereinbarter Name (Feld mit []) > ANS1[40]
>>>mit Korrekturmoeglichkeit?(j/n) > j
>>>Hilfe einordnen? (j/n) > n
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<
>>>Datentyp (i/l/c/f/d) > c
>>>vereinbarter Name (Feld mit []) > ANS2[40]
>>>mit Korrekturmoeglichkeit?(j/n) > j
>>>Hilfe einordnen? (j/n) > n
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<
>>>Datentyp (i/l/c/f/d) > c
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
Anwendung - 318 - ZZZZIIIIPPPP
>>>vereinbarter Name (Feld mit []) > ANS3[30]
>>>mit Korrekturmoeglichkeit?(j/n) > j
>>>Hilfe einordnen? (j/n) > n
aaaaaaaaaaaaaaaaaaaaaaaaaaaa<
>>>Datentyp (i/l/c/f/d) > c
>>>vereinbarter Name (Feld mit []) > ORT[30]
>>>mit Korrekturmoeglichkeit?(j/n) > j
>>>Hilfe einordnen? (j/n) > n
aaaaaaaaaaaaaaaaaaaaaaaaaaaa<
>>>Datentyp (i/l/c/f/d) > c
>>>vereinbarter Name (Feld mit []) > PLZ[5]
>>>mit Korrekturmoeglichkeit?(j/n) > j
>>>Hilfe einordnen? (j/n) > n
aaa<
Kurzbezeichnung:
>>>Datentyp (i/l/c/f/d) > c
>>>vereinbarter Name (Feld mit []) > KUBEZ[48]
>>>mit Korrekturmoeglichkeit?(j/n) > j
>>>Hilfe einordnen? (j/n) > n
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<
>>>Datentyp (i/l/c/f/d) > i
>>>vereinbarter Name (Feld mit []) > BEZIRK
>>>mit Korrekturmoeglichkeit?(j/n) > j
>>>Hilfe einordnen? (j/n) > j
>>>Hilfe-Art: Text=t / Prozedur=p > t
>>>Name File f. Hilfe-Text m.(z,s) > bezhlp(15,3)
9<
Okay? >>j
-------------------------------------------------------------
Die nach > stehenden Eingaben sind jeweils mit <CR> (Car-
riage Return) abzuschliessen.
Folgendes i-File entsteht:
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
Anwendung - 319 - ZZZZIIIIPPPP
-a 3 -hl LIBTUT ansein
char ANS1[40] j n n
char ANS2[40] j n n
char ANS3[30] j n n
char ORT[30] j n n
char PLZ[5] j n n
char KUBEZ[48] j n n
int BEZIRK j n bezhlp(15,3) t
Es wa"re denkbar, die PLZ mit "isdigit()" zu pru"fen, in
Abweichung zu oben entstu"nde das i-File:
-a 3 -phl LIBTUT ansein
char ANS1[40] j n n
char ANS2[40] j n n
char ANS3[30] j n n
char ORT[30] j n n
char PLZ[5] j isdigit() z
char KUBEZ[48] j n n
int BEZIRK j n bezhlp(15,3) t
Beachten sie, dass \t als Trennzeichen steht. Bei
A"nderungen im *_i-File du"rfen die Trennzeichen nicht ver-
sehentlich gelo"scht werden!
Es wird bei der Erzeugung der Ein-/Ausgabe-Prozedur davon
ausgegangen, dass die C-Variablen an Spalten bestimmter
Relationen u"bergeben bzw. von diesen u"bernommen werden.
Deshalb sind die C-Variablen grundsa"tzlich global dekla-
riert, entsprechend erwartet die erzeugte Prozedur eine glo-
bale Deklaration zur Wert-U"bergabe/-U"bernahme. Fu"r alle zu
realisierenden Konvertierungen werden die Prozeduren (im
Sinne von Parameter-Prozeduren) aus /usr/lib/libzip.a
verwendet. Die manuelle Ersetzung der Funktionsprozeduren
aus der Standard-Bibliothek von C (libc.a) fu"hrt zu Fehlern.
Die Reihenfolge der Objekte in der Arbeits-Bibliothek (hier
LIBTUT) spielt eine Rolle, sofern Pru"fprozeduren verwendet
werden (nach der ZIP-Prozedur !). Die Arbeits-Bibliothek
muss im Bindekommando vor /usr/lib/libzip.a stehen.
Pruefprozeduren werden in Anlehnung an die Funktionen aus
"ctype" (isdigit(), isascii() usw.) so gestaltet, dass der
Rueckkehrcode 1 fuer TRUE und 0 fu"r FALSE liefert. Das gilt
sowohl fu"er Prozeduren die zeichenweise (z) als auch fu"r
solche, die wortweise (w) pru"fen. Das header-File <ctype.h>
wird fu"r ZIP-Prozeduren standardma"ssig eingezogen.
Als kleine zusa"tzliche Hilfe von ZIP steht eine Menue-
Prozedur mmmmeeeennnnzzzziiiipppp(((()))) zur Verfu"gung, die ein im main() verein-
bartes Zeichenkettenfeld auf wa"hlbaren Positionen invers
ausgibt und die angeklickte Zeile (1..n) als Ru"ckkehrwert
liefert (s. Teil III, Beispiel "Terminkontrolle").
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX

View File

@ -0,0 +1,288 @@
IIIInnnnhhhhaaaallllttttssssvvvveeeerrrrzzzzeeeeiiiicccchhhhnnnniiiissss TTTTeeeeiiiillll2222
1. ......................................................... 1
2. Anwenderdokumentation
ING_DB 6.3/3 - Teil II .................... 162
2.1. Anwendung der QUEL * .................................. 163
2.2. Arbeit mit Datenbanken * .............................. 203
2.2.1. Vorbemerkung * ...................................... 203
2.2.2. Erzeugung neuer Relationen mit QUEL ................. 204
2.2.3. Das Kopieren von Daten aus und in eine
Datenbank ...................................... 206
2.2.3.2. Typische Fehler ................................... 210
2.2.3.3. Spezielle Mo"glichkeiten ........................... 211
2.2.3.3.1. Physische Kopie (bulk copy) ..................... 211
2.2.3.3.2. Pseudodoma"nen (Dummy Domains) ................... 211
2.2.3.3.3. Abschneiden (Truncation) ........................ 212
2.2.3.3.4. Spezielle Begrenzer (Specifing Delimitors) ...... 213
2.2.3.3.5. Aufhebung der Begrenzer (Quoting) ............... 213
2.2.4. Speicherstrukturen fu"r Relationen ................... 213
2.2.4.2. Heap .............................................. 214
2.2.4.3. Hash .............................................. 214
2.2.4.4. Isam .............................................. 214
2.2.4.5. Spezifizierung der Speicherstruktur ............... 215
2.2.4.6. Haupt-(primary) und
U"berlauf-(overflow) Seiten .................... 215
2.2.4.7. Spezifizierung des Freiraumes
auf einer Seite (free space) ................. 215
2.2.4.8. Verdichtung (compression) ......................... 216
2.2.4.9. Zwei Varianten zu einem Problem ................... 217
2.2.4.10. Vergleich von heap, hash und isam ................ 220
2.2.4.11. U"berlauf-Seiten .................................. 220
2.2.4.12. Eindeutige Schlu"ssel ............................. 221
2.2.4.13. Systemkataloge ................................... 221
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
2.2.5. Sekunda"rindizes ..................................... 222
2.2.6. Wiederherstellung (Recovery) und
Aktualisierung (Update) ....................... 224
2.2.6.2. Deferred Update und Batch Update .................. 224
2.2.6.2.2. Beseitigung der Auswirkung von Systemfehlern .... 224
2.2.6.3. Die Verhinderung endloser Queries ................. 225
2.2.6.3.1. Beschleunigung der A"nderungszeiten
von Sekunda"rindizes .......................... 225
2.2.6.3.2. Abschalten des deferred update .................. 225
2.2.6.4. Restore ........................................... 226
2.2.6.5. Purge ............................................. 227
2.3. Zugriffsmethoden und **
Datenlokalisierung .......................... 229
2.3.1. Einleitung .......................................... 229
2.3.2. Grundkonzepte von ING_DB ............................ 229
2.3.2.2. Schlu"sselbegriff von ING_DB ....................... 230
2.3.2.3. Seitenketten ...................................... 231
2.3.3. Zugriffstechniken von ING_DB ........................ 232
2.3.3.2. Heapsort .......................................... 232
2.3.3.3. Hash .............................................. 233
2.3.3.4. Isam .............................................. 234
2.3.4. Die Gestaltung des Datenbankfilesystems
fu"r ING_DB ......................................... 236
2.3.4.2. Bewertung des Relationennamens .................... 237
2.4. Monitor ** ............................................ 238
2.4.1. Einfu"hrung .......................................... 238
2.4.2. Modifikationen durch Optionen ....................... 238
2.4.3. Startvorgang und Arbeitszyklus ...................... 238
2.4.4. Arbeit mit dem Monitor-Puffer ....................... 240
2.4.5. Synchrone Beendigung und
asynchrone Unterbrechung .................... 241
2.4.6. Struktur der Monitor-Kommandos ...................... 242
2.4.7. Beschreibung der Monitor-Kommandos .................. 243
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
- 2 - IIIINNNNHHHHAAAALLLLTTTT
2.4.7.1. Append ............................................ 243
2.4.7.2. Branch ............................................ 243
2.4.7.3. Chdir ............................................. 245
2.4.7.4. Editor ............................................ 246
2.4.7.5. Go ................................................ 247
2.4.7.6. Help .............................................. 248
2.4.7.7. Include und Read .................................. 248
2.4.7.8. Mark .............................................. 249
2.4.7.9. List .............................................. 250
2.4.7.10. Monitor .......................................... 250
2.4.7.11. Print ............................................ 250
2.4.7.12. Quit ............................................. 251
2.4.7.13. Reset ............................................ 251
2.4.7.14. Shell ............................................ 251
2.4.7.15. Time und Date .................................... 252
2.4.7.16. Eval ............................................. 252
2.4.7.17. Write ............................................ 253
2.5. AMX ** ................................................ 254
2.5.1. Einleitung .......................................... 254
2.5.2. Entwurf ............................................. 254
2.5.3. Umgebung ............................................ 257
2.5.4. Compilation ......................................... 259
2.5.5. Begriffe ............................................ 259
2.5.6. Syntaktische Regeln ................................. 261
2.5.7. Grammatik ........................................... 262
2.5.8. Sprachbeschreibung .................................. 263
2.5.9. Selektion ........................................... 266
2.5.10. Projektion ......................................... 266
2.5.11. Aktion ............................................. 266
2.6. Report-Generator * .................................... 269
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX
- 3 - IIIINNNNHHHHAAAALLLLTTTT
2.6.1. Vorbemerkung ........................................ 269
2.6.2. Arbeitsschritte ..................................... 269
2.6.3. Typ ,La"nge ,Offset .................................. 270
2.6.4. Aufbau der Listendefinition ......................... 273
2.6.5. Vorschub und Positionierkommandos ................... 276
2.6.6. Ausgabe konstanter Zeichenketten .................... 277
2.6.7. Eingabe von Zeichenketten u"ber Terminal ............. 278
2.6.8. Bereitstellung der Tupelwerte ....................... 279
2.6.9. Systemvariable ...................................... 288
2.6.10. Systemkonstante, Datum, Uhrzeit .................... 289
2.6.11. Ausgabe von numerischen Werten ..................... 290
2.6.11.1. Ausgabe als Integer-Zahl ......................... 290
2.6.11.2. Ausgabe als Real-Zahl ............................ 292
2.6.11.3. Pseudographische Ausgabe ......................... 293
2.6.12. Ausgabe von Zeichenkettenwerten .................... 294
2.6.13. Ausgabe von Werten als Bina"r-, Oktal-
oder Hexadezimalzahl im Byte- oder Wortformat . 295
2.6.14. Wertzuweisungen zu Systemvariablen -
arithmetische Ausdru"cke ....................... 296
2.6.15. Boolesche Variablen und Ausdru"cke .................. 297
2.6.16. Steuerung der Programmabarbeitung .................. 299
2.6.16.2. Zyklus ........................................... 299
2.6.16.3. Fallauswahl ...................................... 300
2.6.16.4. Prozeduren ....................................... 301
2.6.16.5. Seitengestaltung ................................. 302
2.6.16.6. Gruppenwechselprogrammierung ..................... 305
2.6.17. Schlu"sselworte ..................................... 311
2.7. Eingabegenerator ZIP
- Vers. 2.1 * ................................. 312
2.7.1. Einleitung .......................................... 312
2.7.2. Realisierung ........................................ 313
ING_DB 6.3/3 Juni 16, 1989 UUUUNNNNIIIIXXXX