ING_DB
This commit is contained in:
parent
4699d7877a
commit
78520c3aca
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
|
|
@ -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
|
||||
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue