From d2a508602b2cce9b83b144642ea63afec987a646 Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Mon, 19 Jun 1989 12:46:32 +0000 Subject: [PATCH] ING_DB --- WEGA/contrib/ingres/dbs/ing_doc/teil3/deck3 | 72 + WEGA/contrib/ingres/dbs/ing_doc/teil3/doc3_aa | 1944 +++++++++++++++++ WEGA/contrib/ingres/dbs/ing_doc/teil3/inhalt3 | 72 + 3 files changed, 2088 insertions(+) create mode 100644 WEGA/contrib/ingres/dbs/ing_doc/teil3/deck3 create mode 100644 WEGA/contrib/ingres/dbs/ing_doc/teil3/doc3_aa create mode 100644 WEGA/contrib/ingres/dbs/ing_doc/teil3/inhalt3 diff --git a/WEGA/contrib/ingres/dbs/ing_doc/teil3/deck3 b/WEGA/contrib/ingres/dbs/ing_doc/teil3/deck3 new file mode 100644 index 0000000..c6034bf --- /dev/null +++ b/WEGA/contrib/ingres/dbs/ing_doc/teil3/deck3 @@ -0,0 +1,72 @@ + + + + + + + ############################################################################ + ############################################################################ + ## ## + ## ## + ## ## + ## ## + ## ## + ## ### # # ##### ###### ###### ## + ## # ## # # # # # # # ## + ## # # # # # # # # # ## + ## # # # # # #### # # ###### ## + ## # # # # # # # # # # ## + ## # # ## # # # # # # ## + ## ### # # ##### ####### ###### ###### ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ###### ####### ### ## + ## # # # # ## + ## # # # # ## + ## ###### ##### # ###### ## + ## # # # # ## + ## # # # # ## + ## ###### ####### ### ## + ## ## + ## ## + ## ##### ###### ### ####### # ####### ## + ## # # # # # # # # ## + ## # # # # # # # ## + ## ##### ###### # ##### # ##### ## + ## # # # # # # ## + ## # # # # # # # ## + ## ##### # ### ####### ####### ####### ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ## + ## ## + ############################################################################ + ############################################################################ + + + + + + + + + + + + + + Juni 19, 1989 + + diff --git a/WEGA/contrib/ingres/dbs/ing_doc/teil3/doc3_aa b/WEGA/contrib/ingres/dbs/ing_doc/teil3/doc3_aa new file mode 100644 index 0000000..cc1e671 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/ing_doc/teil3/doc3_aa @@ -0,0 +1,1944 @@ + + + + Beispiele - 320 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + _3._1. TTTTeeeerrrrmmmmiiiinnnnkkkkoooonnnnttttrrrroooolllllllleeee ******** + + + + + + + + + + + + + _3._1._1. VVVVoooorrrrbbbbeeeemmmmeeeerrrrkkkkuuuunnnngggg + + Um sich sinnvoll in ein UNIX -System einzuordnen, sollte das + Prinzip des "Werkzeugkastens" auch in der Anwenderebene + durchgestanden werden - na"mlich kleine Programme mit exakt + abgegrenzten Leistungen zu schaffen und diese zu einem Paket + verbinden. Nachfolgend wird auszugsweise ein Projekt vor- + gestellt, das die Nutzung von AMX und ZIP veranschaulicht. + + Als Bedingungen seien gestellt: + Die Terminkontrolle ist schirmorientiert zu lo"sen. Bei + Bedarf ko"nnen Protokolle gedruckt werden. Die zu kontrol- + lierende Einheit besteht aus einer Basis-Massnahme und + keiner oder beliebig vielen Festlegungen. Wa"hrend des Kon- + trollvorganges sollen die Basis-Massnahmen gezeigt + (entsprechend vorzugebender Eingrenzungen), gea"ndert oder + als realisiert markiert werden - Festlegungen sollen + gezeigt, korrigiert, als realisiert markiert oder neu + hinzugefu"gt werden. Neben der Mo"glichkeit u"ber Zieltermine + zu recherchieren, kann nach dem Kreis der, fu"r die Reali- + sierung der Massnahme Verantwortlichen (Gruppe oder + Einzelperson) oder nach dem Kreis, der eine Massnahme + ausgelo"st hat (Gruppe oder Einzelperson) - gegenu"ber dem der + recherchierende Leiter also rechenschaftspflichtig ist - + eingegrenzt werden. Es existiert eine Nomenklatur, die + Struktureinheiten ordnet bzw. gruppiert. + + _3._1._2. RRRReeeellllaaaattttiiiioooonnnneeeennnn + + Innerhalb der Datenbank tttteeeerrrrkkkkoooonnnn werden folgende Relationen + verwendet: + bbbbaaaassssiiiissss entha"lt die Basis-Massnahmen. U"ber die Massnahme- + Nummer mmmmnnnnrrrr werden die dazugeho"rigen Festlegungen identi- + fiziert. vvvvoooonnnnggggrrrruuuupppp gibt Auskunft, durch welche Struk- + tureinheit (auch u"bergeordnete Organe) die Massnahme veran- + lasst wurde (Gruppe), vvvvoooonnnnppppaaaarrrrtttt grenzt innerhalb der Gruppe + auf einen konkreten Partner ein. aaaannnnggggrrrruuuupppp bzw. aaaannnnppppaaaarrrrtttt geben + an, wer die Massnahme verantwortlich zu realisieren hat + (Gruppe bzw. Partner). eeeeddddaaaatttt ist das Rechnerdatum, zu dem + die Massnahme erfasst wurde und tttteeeerrrrmmmmiiiinnnn der vorgegebene + Zieltermin. Die Angabe ffffeeeessssttttaaaannnnzzzz gilt als Hinweis auf die + aktuelle Anzahl von Festlegungen, ist der Wert -1 sind alle + Festlegungen realisiert (Hinweis zum Austragen). Der + eigentliche Text wird vierzeilig in ttttxxxx1111........ttttxxxx4444 abgelegt. + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 321 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + + + Relation: basis + --------- P8000 / EVK Olbernhau + Besitzer: kodir + Tupellaenge: 218 + Verfallsdatum: Tue Jan 1 00:00:00 1991 + Tupelanzahl: 131 + Speicherstruktur: HEAP + Pages: 1 + 46 + Relationentyp: Nutzerrelation + + Domaenname Typ Laenge Schluessel + -------------------------------------------- + mnr i 4 + edat i 4 + vongrup i 2 + vonpart i 2 + angrup i 2 + anpart i 2 + tx1 c 49 + tx2 c 49 + tx3 c 49 + tx4 c 49 + termin i 4 + festanz i 2 + -------------------------------------------- + + + ffffeeeessssttttllll entha"lt die zur Basis-Massnahme geho"rigen + Festlegungen. ffffnnnnrrrr nummeriert innerhalb der Massnahme- + Nummer, vvvvggggrrrruuuupppp und vvvvppppaaaarrrrtttt geben die Verantwortlichkeit und + kkkkggggrrrruuuupppp bzw. kkkkppppaaaarrrrtttt die Kontrollpflicht an. Mit rrrreeeeaaaalllliiiissss wird + ein Kennzeichen fu"r gegebene Realisierung (=1) gesetzt. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 322 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + + + Relation: festl + --------- P8000 / EVK Olbernhau + Besitzer: kodir + Tupellaenge: 216 + Verfallsdatum: Tue Jan 1 00:00:00 1991 + Tupelanzahl: 26 + Speicherstruktur: HEAP + Pages: 1 + 11 + Relationentyp: Nutzerrelation + + Domaenname Typ Laenge Schluessel + -------------------------------------------- + mnr i 4 + fnr i 2 + tx1 c 49 + tx2 c 49 + tx3 c 49 + tx4 c 49 + termin i 4 + vgrup i 2 + vpart i 2 + kgrup i 2 + kpart i 2 + realis i 2 + -------------------------------------------- + + + ppppaaaarrrrttttnnnn entha"lt die Nomenklatur und Bezeichnungen der Struk- + tureinheiten, die an der Terminkontrolle teilhaben. Mit ggggrrrruuuupppp + wird eine Gruppe, mit ffffeeeeiiiinnnn ein Partner bestimmt. + + + Relation: partn + --------- P8000 / EVK Olbernhau + Besitzer: kodir + Tupellaenge: 28 + Verfallsdatum: Tue Jan 1 00:00:00 1991 + Tupelanzahl: 56 + Speicherstruktur: HEAP + Pages: 1 + 1 + Relationentyp: Nutzerrelation + + Domaenname Typ Laenge Schluessel + -------------------------------------------- + grup i 2 + fein i 2 + bez c 24 + -------------------------------------------- + + + mmmmaaaaffffeeeennnnrrrr ist eine tempora"re Relation, die jeweils alle + Massnahme-Nummern, sich qualifizierender Tupel der Relation + bbbbaaaassssiiiissss bzw. die dazugeho"rigen Festlegungs-Nummern der Rela- + tion ffffeeeessssttttllll entha"lt. + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 323 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + + + Relation: mafenr + --------- P8000 / EVK Olbernhau + Besitzer: kodir + Tupellaenge: 6 + Verfallsdatum: Tue Jan 1 00:00:00 1991 + Tupelanzahl: 0 + Speicherstruktur: HEAP + Pages: 1 + 0 + Relationentyp: Nutzerrelation + + Domaenname Typ Laenge Schluessel + -------------------------------------------- + mnr i 4 + fnr i 2 + -------------------------------------------- + + + _3._1._3. SSSStttteeeeuuuueeeerrrrpppprrrrooooggggrrrraaaammmmmmmm + + Um die relativ langen Zeilen der Quellprogramme noch eini- + germassen u"bersichtlich darstellen zu ko"nnen, wurden nach- + folgend \t durch drei Leerzeichen ersetzt. + + Das Hauptmenue steht in der Prozedur hhhhaaaauuuuppppttttmmmm....cccc.... Hier das + Hauptprogramm: + + + /* Hauptmenue zur Terminkontrolle in hauptm.c */ + /* Pfadname in cmd.c definiert */ + + # include + # include + # include "/z/zip/inkeys.h" + + char command[65]; + + main() + { + char *cmd(); + + initzip(); + + if (!system(cmd("part"))) goto fehler; + for (;;) + { + switch(hauptm()) + { + case 1: + while (system(cmd("kontr"))) + { + system(cmd("teko")); + system(cmd("delmaf")); + } + system(cmd("fanze")); + break; + case 2: + system(cmd("eiko")); + system(cmd("fanze")); + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 324 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + break; + case 3: + while (system(cmd("druw"))) + { + system("modifyr terkon mafenr heapsort mnr fnr"); + system("nq -nb newpg"); + if (!system(cmd("druk"))) + { + perror("Systemfehler"); + sleep(5); + break; + } + clear(); refresh(); + } + system(cmd("delmaf")); + break; + case 4: + system(cmd("nomenkl")); + if (!system(cmd("part"))) goto fehler; + break; + case 5: + crmode(); noecho(); + clear(); + refresh(); + nocrmode(); echo(); + endwin(); + exit(0); + default: + goto fehler; + } + } + fehler: + crmode(); noecho(); + clear(); + refresh(); + nocrmode(); echo(); + endwin(); + printf("*** System-Fehler ***\n"); + exit(-1); + } + + iiiinnnniiiittttzzzziiiipppp(((()))) ist eine Prozedur aus libzip.a, die die Initia- + lisierung des Paketes ccccuuuurrrrsssseeeessss und des Paketes zzzziiiipppp veranlasst. + Die Auswahl erfolgt u"ber die Prozedur hauptm(), indem die + gewu"nschte Zeile mit der Kursortaste (|v) angefahren und mit + -> angeklickt wird. Um einen U"berblick bezu"glich der Lei- + stung der einzelnen Programme zu verschaffen wird nachfol- + gend die Menue-Prozedur hhhhaaaauuuuppppttttmmmm....cccc gezeigt: + + + + /* Hauptmenue zur Terminkontrolle */ + + # include + # include "/z/zip/inkeys.h" + + # define Fragen 5 + # define Beginn 5 + + extern char *SO, *SE; + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 325 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + hauptm() + { + static char *men[] = { + "? Kontrolle von Faelligkeiten mit Aenderungsmoeglichkeit.. ", + "? Erfassung neuer Basis-Massnahmen (auch mit Festlegungen) ", + "? Druck von Protokollen (auch mit Eingrenzungen).......... ", + "? Aenderung und Ergaenzung der Nomenklatur (Partner)...... ", + "? Beendigung der Arbeit................................... " + }; + int inp; + int aus; + int zl, sp, spa; + char buf[80]; + + crmode(); + clear(); + datum(12, 5); + move(2, 5); + addstr("TERMINKONTROLLE Hauptmenue"); + zl = Beginn; sp = 5; + for (inp = 0; inp < Fragen; inp++) + { + move(zl+inp, sp); + strcpy(buf, SO); + strcat(buf, men[inp]); + strcat(buf, SE); + addstr(buf); + } + move(zl, sp-1); + refresh(); + noecho(); + + for (;;) + { + aus = 0; + switch(inp = ZZgetchx()) + { + + case CCdo: + getyx(stdscr, zl, spa); + if (zl < (Fragen+Beginn-1)) move(++zl, spa); + break; + case CCup: + getyx(stdscr, zl, spa); + if (zl > Beginn) move(--zl, spa); + break; + case CCri: + nocrmode(); echo(); + aus = zl - Beginn + 1; + move(zl, sp+1); + addstr(men[aus-1]); + refresh(); + return(aus); + default : + continue; + } + refresh(); + } + } + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 326 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + Mit der Prozedur hauptm() wird eine Leistung beschrieben, + die in der Regel die ZIP-Prozedur menzip() ausfu"hrt - der + einzige Unterschied besteht darin, dass das fu"hrende + Fragezeichen nach dem Anklicken durch die nachfolgende + Zeichenkette (normale Darstellung) u"berschrieben wird. Die + Pointer *SO und *SE stammen aus der termcap und realisieren + das Ein- und Ausschalten einer inversen Darstellung der + Terminalausgabe. ZZZZZZZZggggeeeettttcccchhhhxxxx(((()))) bietet die Mo"glichkeit, in der + termcap definierte Steuerfolgen auszuwerten - hier CCdo + (Cursor down), CCup (Cursor up) usw. - und entsprechende + Reaktionen des Programms zu gestalten. Die Prozedur steht in + libzip.a, die entsprechenden Definitionen zu CCdo, CCup usw. + in inkeys.h. Mit getyx() aus curses la"sst sich die aktuelle + Kursorposition auf dem Standard-Screen (stdscr) erfragen und + auf die nachfolgenden beiden Parameter zuru"ckschreiben. + + _3._1._4. KKKKoooonnnnttttrrrroooollllllll----MMMMeeeennnnuuuueeee + + Das Programm tttteeeekkkkoooo wird nach dem Programm kkkkoooonnnnttttrrrr gerufen. Mit- + tels kontr wird eine Abfrage zur Qualifikation (Eingrenzung) + der Massnahmen bzw. Festlegungen realisiert. Es entsteht + die Relation mmmmaaaaffffeeeennnnrrrr,,,, die eingangs alle eingegrenzten Mass- + nahmen anbietet. Wird teko durch einen Abbruch vorzeitig + verlassen, ist diese Relation mit delmaf wieder zu lo"schen. + tttteeeekkkkoooo wird nachfolgend komplett gezeigt, Bezugspunkte fu"r + Erla"uterungen werden laufend nummeriert (n) und als Kommen- + tar gekennzeichnet. + + + tttteeeekkkkoooo....xxxx:::: + + ## shared terkon + + /* Menue 1 - Kontr.-Menue: Eingangsrelation mafenr aus kontr */ + /* Kontrolle von Festlegungen und Basis-Massnahmen; */ + /* Basis-Massnahmen koennen geaendert, Festlegungen geaendert*/ + /* und neue hinzugefuegt werden; */ + + # include + + ## long MNR; + ## int GRUP; + ## int FEIN; + ## int FNR; + ## char BEZ[24]; + ## char TX1[49]; + ## char TX2[49]; + ## char TX3[49]; + ## char TX4[49]; + ## long EDAT; + ## long TERMIN; + ## int VGRUP; + ## int VPART; + ## int AGRUP; + ## int APART; + ## int FESTL; + ## int REALIS; + + char DATUM[9]; + char SLE[15]; + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 327 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + char ANTW[2]; + char mess[25]; + int VON; + int clr; + int zl, sp; + int anzfest; + + amx() + { + /* (1) */ + static char *bas[] = { + "Weiter.............. ", + "Realisiert.......... ", + "Aendern............. ", + "Festl. zeigen/aend.. ", + "Festlegungen zufueg. ", + "Abbruch............. " + }; + static char *fest[] = { + "Weiter.............. ", + "Realisiert.......... ", + "Aendern............. ", + "Festlegungen zufueg. " + }; + static char *festzu[] = { + "Festlegungen zufueg. ", + "Abbruch............. " + }; + + int c; + int d; + int flag; + int flagm; + int flagf; + int end_fl; + int bas_fl; + int maxfnr; + int t_count; + long old_mnr; + + + initzip(); + + ## open basis + ## open partn + ## open festl + ## open mafenr + + ## use (+basis,partn,+festl,+mafenr) + + zyk: + + end_fl = 0; + ## scan mafenr (MNR=$mnr, FNR=$fnr) + ## { + ++end_fl; + ## } + if (!end_fl) + { + /* (2) */ + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 328 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + melde(); + goto end; + } + if (MNR == old_mnr) goto zyfest; + clr = 0; + flag = 0; + + ## scan basis $mnr=MNR (TX1=$tx1,TX2=$tx2,TX3=$tx3,TX4=$tx4, + ## TERMIN=$termin,VGRUP=$vongrup, + ## VPART=$vonpart,AGRUP=$angrup,APART=$anpart,FESTL=$festanz) + ## { + ++flag; + anzfest = FESTL; + /* (3) */ + abas(); + getyx(stdscr, zl, sp); + move(2, 52); + if (anzfest == -1) + sprintf(mess, "Festlegungen realisiert"); + else + sprintf(mess, "%2d Festlegung(en) ! ", anzfest); + addstr(mess); + refresh(); + move(zl, sp); + c = menzip(bas, 6, 3, 52); + switch(c) + { + case 2: /* B.-M. loeschen vorbereiten */ + ZZbeep(); + okay(1,0); + if (ANTW[0] == 'j' || ANTW[0] == 'J') + { + ZZbeep(); + FESTL = -1; + } + break; + case 3: /* B.-M. korrigieren */ + dbas(); /* Bereich fuer B.-M. loeschen */ + /* (5) */ + if (!ebas()) c = 1; + break; + default: + break; + } + if (c == 2 || c == 3) + { + ## replace ($mnr=MNR,$tx1=TX1,$tx2=TX2,$tx3=TX3,$tx4=TX4, + ## $termin=TERMIN,$vongrup=VGRUP,$edat=EDAT, + ## $vonpart=VPART,$angrup=AGRUP,$anpart=APART,$festanz=FESTL) + } + + ## } + switch(c) + { + case 6: goto end; + case 1: + case 2: + case 3: + ## scan mafenr $mnr=MNR + ## { + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 329 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + ## delete + ## } + goto zyk; + default : + break; + + } + d = 0; + flagf = 0; + zyfest: + switch(c) + { + case 4: + if (FNR) /* Ueber Festl. recherchiert */ + { + ## scan mafenr $mnr=MNR (FNR=$fnr) + ## { + + ## scan festl $mnr=MNR, $fnr=FNR (TX1=$tx1,TX2=$tx2,TX3=$tx3, + ## TX4=$tx4,TERMIN=$termin,VGRUP=$vgrup, + ## VPART=$vpart,AGRUP=$kgrup,APART=$kpart,REALIS=$realis) + ## { + dfest(); + afest(); + d = menzip(fest, 4, 13, 52); + switch(d) + { + case 1: break; + case 2: ZZbeep(); + okay(1,0); + if (ANTW[0] == 'j' || ANTW[0] == 'J') + { + ZZbeep(); + REALIS = 1; + } + case 3: if (!REALIS) kfest(); + ## replace ($mnr=MNR,$fnr=FNR,$tx1=TX1,$tx2=TX2,$tx3=TX3, + ## $tx4=TX4,$termin=TERMIN,$vgrup=VGRUP, + ## $vpart=VPART,$kgrup=AGRUP,$kpart=APART,$realis=REALIS) + break; + case 4: c = 5; + goto zyfest; + } + ## } + ## delete + ## } + } + else /* Keine Festl.-Nr.: Recherche BMn. */ + { + ++flagf; + ## scan festl $mnr=MNR (FNR=$fnr,TX1=$tx1,TX2=$tx2,TX3=$tx3, + ## TX4=$tx4,TERMIN=$termin,VGRUP=$vgrup, + ## VPART=$vpart,AGRUP=$kgrup,APART=$kpart,REALIS=$realis) + ## { + dfest(); + afest(); + d = menzip(fest, 4, 13, 52); + switch(d) + { + case 1: break; + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 330 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + case 2: REALIS = 1; + case 3: if (!REALIS) kfest(); + ## replace ($mnr=MNR,$fnr=FNR,$tx1=TX1,$tx2=TX2,$tx3=TX3, + ## $tx4=TX4,$termin=TERMIN,$vgrup=VGRUP, + ## $vpart=VPART,$kgrup=AGRUP,$kpart=APART,$realis=REALIS) + break; + case 4: c = 5; + goto zyfest; + } + ## } + } + break; + case 5: + ++flagf; + zyzuf: if (d == 4) + { + maxfnr = 1; + ## scan festl $mnr=MNR (FESTL=$fnr) + ## { + if (FESTL > maxfnr) maxfnr = FESTL; + ## } + } + TX1[0] = '\0'; + TX2[0] = '\0'; + TX3[0] = '\0'; + TX4[0] = '\0'; + FNR = maxfnr + 1; + kfest(); + ## append festl ($mnr=MNR,$fnr=FNR,$tx1=TX1,$tx2=TX2,$tx3=TX3, + ## $tx4=TX4,$termin=TERMIN,$vgrup=VGRUP, + ## $vpart=VPART,$kgrup=AGRUP,$kpart=APART,$realis=REALIS) + if ((d = menzip(festzu, 2, 13, 52)) == 1) + { + d = 4; + goto zyzuf; + } + break; + default: break; + } + if (flagf) + { + ## scan mafenr $mnr=MNR + ## { + ## delete + ## } + flagf = 0; + } + goto zyk; + + end: + + ## commit + + ## close partn + ## close basis + ## close festl + ## close mafenr + + } + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 331 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + /* (4) */ + ks_part() + { + + ## scan partn $grup=GRUP, $fein=FEIN (BEZ=$bez) + ## { + ## } + } + + + Die Datenbank wird fu"r mehrere Nutzer gleichzeitig geo"ffnet + (shared). Dabei sind die Relationen bbbbaaaassssiiiissss,,,, ffffeeeessssttttllll und mmmmaaaaffffeeeennnnrrrr + zum Lesen und Schreiben sowie ppppaaaarrrrttttnnnn nur zum Lesen verfu"gbar + (use). Die lokalen Vereinbarungen ((((1111)))) repra"sentieren + jeweils ein Menue, das mit menzip() zur Anzeige kommt. + + Die Prozedur mmmmeeeellllddddeeee(((()))) bei ((((2222)))) teilt bei den Phasen, die + mehrere Sekunden keine Vera"nderungen am Bildschirm veran- + lassen, mit, dass der Rechner arbeitet. Die Prozedur + beinhaltet lediglich eine Positionierung mit move(), nachdem + vorher mit getyx() die aktuelle Kursor-Position gesichert + wurde und gibt die Zeichenkette IIIIcccchhhh aaaarrrrbbbbeeeeiiiitttteeee!!!! mit addstr() + aus - die Prozeduren entstammen curses. + + + /* Ausschrift einer Meldung am Bildschirm */ + + # include + + melde() + { + int zl, sp; + + getyx(stdscr, zl, sp); + move(15, 1); + addstr(" Ich arbeite ! "); + refresh(); + move(zl, sp); + } + + Die Prozedur aaaabbbbaaaassss(((()))) bei ((((3333)))) fasst einige Positionierungen + und ZIP-Prozeduren zusammen. + + + + /* Anzeige Basis-Massnahmen */ + + # include + + extern int GRUP, VGRUP, FEIN, VPART, AGRUP, APART; + extern long TERMIN; + extern char DATUM[9]; + extern char SLE[15]; + extern int clr; + extern int anzfest; + extern char mess[25]; + + abas() + { + emnr(clr++, 0); + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 332 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + tocdat(&TERMIN, DATUM); + dfest(); + strcpy(SLE, "Basis-Massn."); + bas(clr, -1); + tobdat(DATUM, &TERMIN); + move(8, 0); + refresh(); + strcpy(SLE, "Aufgst. durch"); + GRUP = VGRUP; + FEIN = VPART; + ks_part(); + kvekop(clr, 0); + strcpy(SLE, "Realis. durch"); + GRUP = AGRUP; + FEIN = APART; + ks_part(); + kvekop(clr, 0); + APART = FEIN; + refresh(); + } + + abas() soll die Basis-Massnahmen entsprechend der, in der + Relation mafenr vorgegebenen Reihenfolge anzeigen. Um dies + etwas zu verdeutlichen, sehen wir uns den Aufbau der oberen + Ha"lfte des Bildschirms an: + + + + +-----------------------------------------------------------+ + Massnahme-Nr.: 9999999999 >>>> TERMINKONTROLLE <<<< + + Text Basis-Massn. : 1 Festlegung(en) ! + >aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aa< +--------------------+ + >aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aa< |Weiter..............| + >aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aa< |Realisiert..........| + >aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aa< |Aendern.............| + Termin(tt.mm.jj) : 28.02.89< |Festl. zeigen/aend..| + .Aufgst. durch > Partner: Kombinatsd.. |Festlegungen zufueg.| + .Realis. durch > Partner: Direktor T.. |Abbruch.............| + +--------------------+ + +-----------------------------------------------------------+ + + + Die Abbildung wurde nicht vo"llig korrekt wiedergegeben, weil + eine Breite von 80 Zeichen den rechten Rand beim Druck zu + weit u"berschreitet. Das invers zu zeigende Menue aus der + Zeichenkettenvariablen ****bbbbaaaassss wurde gerahmt dargestellt. In + der Regel wird der untere Teil des Bildschirms - sofern + Festlegungen vorhanden sind - beim Anklicken der 4. Zeile + des Menues mit der analogen Darstellung zur Festlegung + gefu"llt. Das Menue 'Weiter' zeigt die na"chste Massnahme. Das + Anklicken von 'Realisiert' ist mit einer Ru"ckversicherung + verbunden - die Frage OOOOkkkkaaaayyyy ((((jjjj////nnnn))))???? muss mit 'j' beantwortet + werden, bevor die Massnahme tatsa"chlich zum Lo"schen markiert + wird. Ein Piepton (ZZbeep()) besta"tigt die Lo"schvormerkung. + + Zuru"ck zu abas(). ccccuuuurrrrsssseeeessss....hhhh wurde eingezogen, um die Makros + aus curses mmmmoooovvvveeee(((()))) und rrrreeeeffffrrrreeeesssshhhh(((()))) verfu"gbar zu haben. Die + Prozedur eeeemmmmnnnnrrrr(((()))) ist aus ZIP entstanden und zeigt die + Massnahme-Nr. an. Der Erarbeitungsweg wird gezeigt. + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 333 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + Mit dem Editor ist folgendes File eeeemmmmnnnnrrrr____mmmm zu erstellen: + + + + Massnahme-Nr.: #999999999 >>>> TERMINKONTROLLE <<<< + + + Die Erzeugung des Quell- und Objektcodes erfolgt mit dem + Aufruf: + + zip -l ../LIBTERM emnr + + Die Maskenidentifikation '_m' darf nicht im Aufruf angegeben + sein, sonst wird der gesamte Name als Basisname interpre- + tiert. Im Dialog antworten sie in dieser Reihenfolge: + l + MNR + n + + Zur Verdeutlichung wird das entstehende _i-File gezeigt, das + fu"r eventuelle Modifikationen genutzt werden kann und u"ber + den stattgefundenen Dialog informiert. + + + emnr -l ../LIBTERM + long MNR n n + + + ttttooooccccddddaaaatttt(((()))) wandelt die intern u"bliche long-Darstellung (Zeit, + Datum) in die normale Darstellung des Datums (tt.mm.jj). + ddddffffeeeesssstttt(((()))) lo"scht auf dem Bildschirm den Bereich, auf dem + Festlegungen dargestellt werden, um zu vermeiden, dass eine + mo"glicherweise von der vorausgegangenen Massnahme abgebil- + dete Festlegung stehen bleibt. Die ZIP-Prozedur bbbbaaaassss(((()))) rea- + lisiert die Anzeige der na"chsten 6 Zeilen, wobei das 2. + Argument '-1' die Prozedur veranlasst, unabha"ngig von einer + gewu"nschten Korrekturart, die Variablen nur auszuschreiben. + Die Maske bbbbaaaassss____mmmm sieht so aus: + + + Text #aaaaaaaaaaaa: + >#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa< + >#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa< + >#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa< + >#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa< + Termin(tt.mm.jj) : #aaaaaaa< + + + Aus dem _i-File wird ersichtlich, welche Variablen verwendet + und wie sie behandelt werden sollen: + + + bas -a 2 -pl ../LIBTERM + char SLE[15] n n + char TX1[49] j n + char TX2[49] j n + char TX3[49] j n + char TX4[49] j n + char DATUM[9] j testdat() w + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 334 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + Die Maske wird auf dem Bildschirm nach der 2. Zeile + angeha"ngt (-a 2) und die Variable DATUM[9] einer Pru"fung mit + tttteeeessssttttddddaaaatttt(((()))) unterzogen (gu"ltiges Datum) - diese Pru"fung wird + nur bei einer Korrektur des alten Wertes angestossen. ttttoooobbbb---- + ddddaaaatttt(((()))) ist die Umkehrung von tocdat(). + + Mit rrrreeeeffffrrrreeeesssshhhh(((()))) werden die, auf der Speicherfla"che stdscr vor- + genommenen A"nderungen sichtbar gemacht - dieser Algorithmus + hilft, insgesamt ein ruhiges Abbilden auf dem Schirm zu + realisieren und die Kursorbewegungen zu optimieren. Die + Prozedur kkkkssss____ppppaaaarrrrtttt(((()))) - es geht noch um abas() - stammt aus + teko.x (4). AMX-Statements ko"nnen nicht in separat zu + u"bersetzenden Prozeduren verwendet werden, der AMX-Compiler + generiert ein main(). Das gezeigte Beispiel weist auf eine + sehr effiziente Anwendung von AMX hin, mit der differen- + zierte und relativ komplizierte Einsatzfa"lle lo"sbar sind. + ks_part() sucht zum angegebenen Schlu"ssel fu"r GRUP und FEIN + die Bezeichnung aus der Relation partn. Die Ausgabe der + Bezeichnung erfolgt mit kkkkvvvveeeekkkkoooopppp(((()))).... Im Gegensatz zu bas() + kann kvekop() nicht durch eine fest eingestellte Zeilennum- + mer zur Positionierung u"bersetzt werden, da es zweimal bei + Basis-Massnahmen und zweimal bei Festlegungen benutzt wird. + Fu"r solche Anwendungsfa"lle ist die Option -z von ZIP + gedacht, wie am Beispiel nocheinmal gezeigt werden soll: + + + .#aaaaaaaaaaaaa >Partner: #aaaaaaaaaaaaaaaaaaaaaaa + + + Aus kvekop_i wird der Aufruf deutlich: + + + kvekop -zl ../LIBTERM + char SLE[15] n n + char BEZ[24] n n + + + + Nachdem abas() abgearbeitet ist, wird u"ber die Anzahl der + Festlegungen informiert. Die Verwendung von curses schliesst + direkte Ausgaben auf den Schirm (printf()) aus, deshalb + erfolgt erst der Aufbau der Zeichenkette mit sprintf() und + anschliessend die Ausgabe mittels addstr(). + + mmmmeeeennnnzzzziiiipppp(((()))) ist in das Paket ZIP eingegliedert und gestattet + eine freie Postionierung eines Menues - das seitliche Aus- + rutschen der Zeichenketten bei U"berschreitung der Spalte 80 + wird nicht kontrolliert, ebenso sollte die Spalte 80 selbst + nicht benutzt werden, weil einige Terminaldriver dort + eigenwillig reagieren. Die Argumente fu"r menzip() haben + folgende Bedeutung: + + 1.Argument:Variable, in der die auszugebende Zeichenkette + definiert ist. + + 2.Argument:Zeilenzahl des Menues; + + 3.Argument:Zeilennummer des Bildschirms, ab der das Menue + geschrieben werden soll, zusammen mit der Spaltennummer + ergibt das die linke obere Ecke des Menues. + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 335 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + 4.Argument:Spaltennummer des Bildschirms, mit 1 beginnend. + + Sofern das benutzte Terminal invers schreiben kann, wird das + Menue so ausgegeben und die angeklickte Zeile auf normal + gewandelt. + + Mit der Prozedur eeeebbbbaaaassss(((()))) (5) ko"nnen Basismassnahmen korri- + giert werden, insoweit unterscheidet sie sich von abas(). + Durch die Korrektur ist ausserdem denkbar, dass wa"hrend + einer Eingabe mit zweimal Interrupt (bspw. DEL) abgebrochen + wird und der Ru"ckkehrcode der ZIP-Prozedur im Hauptprogramm + behandelt werden muss. Nachfolgend die Prozedur: + + /* Erfassung oder Korrektur von Basis-Massnahmen */ + + # include + + extern int GRUP, VGRUP, FEIN, VPART, APART, VON, AGRUP; + extern long TERMIN; + extern char DATUM[9]; + extern char SLE[15]; + extern char ANTW[2]; + extern int clr, anzfest; + extern char mess[25]; + + ebas() + { + tocdat(&TERMIN, DATUM); + move(1, 0); + emnr(clr, 0); + wdh: + strcpy(SLE, "Basis-Massn."); + if (!bas(clr, 1)) return(0); + tobdat(DATUM, &TERMIN); + move(2, 52); + sprintf(mess, "%2d Festlegung(en)!", anzfest); + addstr(mess); + move(8, 0); + refresh(); + strcpy(SLE, "Aufgst. durch"); + GRUP = VGRUP; + VON = 0; + if (!verkog(clr, 0)) return(0); + VGRUP = GRUP; + VON = 1; + FEIN = VPART; + if (!verkop(clr, 0)) return(0); + VPART = FEIN; + strcpy(SLE, "Realis. durch"); + GRUP = AGRUP; + VON = 0; + move(10, 0); + refresh(); + if (!verkog(clr, 0)) return(0); + AGRUP = GRUP; + FEIN = APART; + VON = 1; + if (!verkop(clr, 0)) return(0); + APART = FEIN; + okay(1, 0); + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 336 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + if (ANTW[0] == 'n' || ANTW[0] == 'N') goto wdh; + else ZZbeep(); + return(1); + } + + Innerhalb von ebas() sind die ZIP-Prozeduren vvvveeeerrrrkkkkoooogggg(((()))) fu"r + die Eingabe des Gruppenschlu"ssels und vvvveeeerrrrkkkkoooopppp(((()))) fu"r die + Eingabe des Partnerschlu"ssels interessant, weil hier u"ber + eine Hilfe (Eingabe von ?) aus der Relation partn die + Schlu"sseltabelle fu"r Gruppen bzw. Partner innerhalb der + gewa"hlten Gruppe angezeigt werden ko"nnen. Als Beispiel wird + verkog() vorgestellt: + + Maske: + + #aaaaaaaaaaaaaa > Gruppe: #9 + + verkog_i: + + -zhl ../LIBTERM verkog + char SLE[15] n n + int GRUP j n s_part() p + + + Die Hilfe wird in diesem Fall u"ber ssss____ppppaaaarrrrtttt(((()))) realisiert. + + /* Nutzt das File 'partner' aus 'part.x', zeigt fuer Hilfe + ** die Gruppenuebersicht bzw. die Partner zur Gruppe an ! + */ + + # include + + extern int GRUP; + extern int VON; + + s_part() + { + FILE *fp, *fopen(); + int zl = 8; + int count = 14; + int fein, grup; + char bez[24]; + char buf[29]; + + if ((fp = fopen("/z/ing_db/work/termin/partner", "r")) == NULL) + { + echo(); nocrmode(); + perror("partner not found"); + exit(0); + } + while (fscanf(fp, "%d %d ", &grup, &fein) != EOF) + { + if (fgets(bez, 24, fp) == NULL) break; + if (!VON) + { + if (!fein) + { + move(zl, 50); addstr(" "); + sprintf(buf,"%2d %s", grup, bez); + move(zl, 51); addstr(buf); + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 337 - AAAAMMMMXXXX////ZZZZIIIIPPPP + + + } + else continue; + } + else + { + if (GRUP == grup) + { + move(zl, 50); addstr(" "); + sprintf(buf, "%2d %s", fein, bez); + move(zl, 51); addstr(buf); + } + else continue; + } + ++zl; + if (!(--count)) + { + refresh(); + getchar(zl); + zl = 8; + count = 14; + } + } + refresh(); + fclose(fp); + } + + Der scan() aus ks_part() ko"nnte auf den ersten Blick + eigentlich auch hier genutzt werden, analog mu"sste anstelle + des fscanf() die Prozedur ks_part() stehen und die in der + Qualifikation geforderten Werte in einer Schleife aktuali- + siert werden. Allerdings wa"re die Formulierung der Qualifi- + kation '$grup=GRUP, $fein=FEIN' zu differenzieren und damit + drei scan() erforderlich. Die Kopie der Relation partn in + ein UNIX -File ist in diesem Fall doch der geringere + Aufwand. Da maximal 14 Zeilen, beginnend ab 6, geschrieben + werden ko"nnen, wird mit getchar(zl) die Ausgabe gestoppt und + nach Eingabe eines beliebigen Zeichens fortgesetzt. + + Einige wesentliche Dinge sind damit erkla"rt. Da der Rahmen + des Anwenderhandbuches durch weitergehende Beschreibungen + gesprengt wu"rde, muss hier das Kapitel abgebrochen werden. + + + + + + + + + + + + + + + + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 338 - RRRREEEEPPPPOOOORRRRTTTT + + + _3._2. RRRReeeeppppoooorrrrtttt----GGGGeeeennnneeeerrrraaaattttoooorrrr **** + + + + + + + + + + + + + _3._2._1. AAAArrrrbbbbeeeeiiiittttsssslllliiiisssstttteeeennnn + + Unter dem Begriff Arbeitslisten sollen Druckbilder verstan- + den werden, die ein bescheidenes Mass an Daten beno"tigen, + die aber fu"r die manuelle Erstellung von U"bersichten eine + grosse Hilfe sind, wenn sie sich relativ schnell erzeugen + lassen. Ha"ufig trifft man diese Situation auch dann an, + wenn bestimmte Unterlagen zur U"bernahme von Daten auf einen + Rechner notwendig sind und die Erstellung entsprechender + Prima"rbelege nicht lohnt bzw. zu aufwendig ist. + + Folgende Relationen sollen verwendet werden: + + + + Relation: fbbz + --------- K 1630 / EVK Olbernhau + Besitzer: ing_db + Tupellaenge: 43 + Verfallsdatum: Mon Jan 1 00:00:00 1990 + Tupelanzahl: 23 + Speicherstruktur: HEAP + Pages: 1 + 2 + Relationentyp: Nutzerrelation + + Domaenname Typ Laenge Schluessel + -------------------------------------------- + bn i 2 + stbn i 4 + knr i 2 + bez c 35 + -------------------------------------------- + + + + + + + + + + + + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 339 - RRRREEEEPPPPOOOORRRRTTTT + + + + + + Relation: kbz + --------- K 1630 / EVK Olbernhau + Besitzer: ing_db + Tupellaenge: 54 + Verfallsdatum: Mon Jan 1 00:00:00 1990 + Tupelanzahl: 23 + Speicherstruktur: HEAP + Pages: 1 + 16 + Relationentyp: Nutzerrelation + + Domaenname Typ Laenge Schluessel + -------------------------------------------- + knr i 2 + kbez c 15 + bn i 2 + bez c 35 + -------------------------------------------- + + + Aus beiden Relationen kann mit retrieve eine neue Relation + lllliiiissssttttkkkk erzeugt und mittels replace und modify so umgestaltet + werden , dass sie als Ausgangsrelation fu"r nachfolgende Auf- + gaben dient. Die Arbeitsliste, die mit dem Programm erzeugt + wird, ist nach Betrieben und Kreisen geordnet. Die Kopfin- + formationen ko"nnen bei Bedarf gegebenenfalls auch mit dem + Editor in die vorbereiteten Felder von listk_o eingetragen + werden, sofern sich hierbei eine ha"ufige A"nderung notwendig + macht. + + ------------------------------------------------------------ + define report krbbz + with columns 122 + all lines 66 + lines 58 + big + define hn = 1 + define bn = 2 + define bez = 3 + + define #hn = integer 2 + define #bn = integer 2 + define #bez = char 35 + + as + proc 1 + set var 0 = 37 + repeat 8 + col var 0 ':' + set var 0 = var 0 + 12 + endr + new line + return + + on pagebegin do + 'ARBEITSLISTEN NACH KREISEN GEORDNET' + col 45 + date + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 340 - RRRREEEEPPPPOOOORRRRTTTT + + + col 80 + '* NUR FUER DEN DIENSTGEBRAUCH *' + new line 2 + col 3 + 'BETRIEBSBEZEICHNUNG' + col 37 + ': PLAN :ARB.-AUFTR.: IST ' + ': PLAN : V. IST :' + col 109 + ':' + col 121 + ':' + new line + col 10 + '** KREISBEZEICHNUNG' + col 37 + ': BM : BM : MON ' + ': KUM. BM : KUM. BM :' + col 109 + ':' + col 121 + ':' + new line + '-' 121 + endo + + for all do + for one do + if value 2 <> 99 then + integer length 2 value 2 + col 3 + else + col 10 + endi + char value 3 + call 1 + '-' 121 + new line + if groupend 1 then + call 1 + col 37 + '-' 85 + new line + endi + endo + enda + + call 1 + new line + col 37 + ; + ------------------------------------------------------------ + + Die entstehende Liste ist ein Ausschnitt und soll nur den + prinzipiellen Aufbau darstellen. + + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 341 - RRRREEEEPPPPOOOORRRRTTTT + + + + + ARBEITSLISTEN NACH KREISEN GEORDNET DATUM: ===> + + BETRIEBSBEZEICHNUNG : PLAN :ARB.-AUFTR.: + ** KREISBEZEICHNUNG : BM : BM : + ------------------------------------------------------------- + 7 HOLZWAREN GROSSHARTMANSDORF : : : + ------------------------------------------------------------- + ** BRAND-ERBISDORF : : : + ------------------------------------------------------------- + 17 RAUM- U. TAFELSCHMUCK GAHLENZ : : : + ------------------------------------------------------------- + 21 WERK-KUNST GRUENHAINICHEN : : : + ------------------------------------------------------------- + ** FLOEHA : : : + . + . + . + + ------------------------------------------------------------- + 25 KOMBINAT EVK OLBERNHAU : : : + + ==================== ===> + + + + _3._2._2. SSSSooooffffttttwwwwaaaarrrreeeekkkkaaaattttaaaalllloooogggg + + In der Datenbank hhhhaaaarrrrddddssssoooofffftttt gibt es die beiden Relationen + aaaannnnsssscccchhhhrrrriiiifffftttt und ssssoooofffftttt1111:::: + + + + Relation: anschrift + --------- K 1630 / EVK Olbernhau + Besitzer: ing_db + Tupellaenge: 200 + Verfallsdatum: Mon Jan 1 00:00:00 1990 + Tupelanzahl: 165 + Speicherstruktur: compressed HEAP + Pages: 1 + 37 + Relationentyp: Nutzerrelation + + Domaenname Typ Laenge Schluessel + -------------------------------------------- + bn i 4 + ans1 c 40 + ans2 c 40 + ans3 c 30 + ort c 30 + plz c 5 + kubez c 48 + beznr c 3 + -------------------------------------------- + + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 342 - RRRREEEEPPPPOOOORRRRTTTT + + + + + + Relation: soft1 + --------- K 1630 / EVK Olbernhau + Besitzer: ing_db + Tupellaenge: 159 + Verfallsdatum: Mon Jan 1 00:00:00 1990 + Tupelanzahl: 186 + Speicherstruktur: HEAP + Pages: 1 + 61 + Relationentyp: Nutzerrelation + + Domaenname Typ Laenge Schluessel + -------------------------------------------- + bnr i 4 + lnr i 2 + titel c 10 + aufg i 2 + deskr c 65 + rtyp c 8 + bsyst c 8 + prspr c 8 + dbspr c 8 + pfterm i 2 + nutzbg i 2 + ppznr c 13 + regnr c 19 + aufw i 2 + projzt i 2 + nnkost i 2 + nutz i 2 + -------------------------------------------- + + + Aus einer u"bergeordneten Shell-Prozedur wird die Prozedur + ccccaaaallll____ssssaaaacccchhhhgggg gerufen. Diese Prozedur verwendet zwei Files zur + direkten Steuerung von ING_DB . Sofern keine C-Statements + fu"r eine Komandofolge gebraucht werden und das entsprechende + Menue relativ selten benutzt wird, ist das ein sehr + eleganter Weg zur Ablaufsteuerung. Die beiden Files + ssssaaaacccchhhhgggg____iiiinnnn1111 und ssssaaaacccchhhhgggg____iiiinnnn2222 fungieren als Eingabefiles fu"r + ING_DB . + + + ------------------------------------------------------------- + + quel hardsoft < sachg_in1 + rd hardsoft sachg + mv desc sachg_d + quel hardsoft < sachg_in2 + rg -dsachg_d -isachg_r -fsachg_f -osachg_o + + ------------------------------------------------------------- + + Zuerst das File sachg_in1 - aus den Relationen aaaannnnsssscccchhhhrrrriiiifffftttt und + ssssoooofffftttt1111 sollen einige Spalten herausgezogen werden, in eine + tempora"re Relation ssssaaaacccchhhhgggg gespeichert und nach der Betriebs- + nummer und Aufgabe - als Gruppierungsbegriffe - sortiert + werden. Mit ccccooooppppyyyy iiiinnnnttttoooo wird anschliessend ein UNIX -File + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 343 - RRRREEEEPPPPOOOORRRRTTTT + + + erzeugt. Da in der Shell-Prozedur noch ein Deskription File + zu erzeugen ist, muss das destroy-Kommando in einem zweiten + Eingabefile stehen. + + ------------------------------------------------------------- + + range of a is anschrift + range of s is soft1 + retrieve into sachg (s.bnr, a.kubez, s.titel, s.aufg) \ + where s.bnr=a.bn + \p\g + modify sachg() to heapsort on bnr, aufg + \p\g + copy sachg() into "/mnt/ing_db/work/kag/sachg_f" + \p\g + \q + + ------------------------------------------------------------ + + Das Eingabefile ssssaaaacccchhhhgggg____iiiinnnn2222 hat lediglich die Aufgabe, die + Relation ssssaaaacccchhhhgggg wieder zu loschen, da sie bei einem weiteren + Lauf zu diesem Menue sto"rt. + + ------------------------------------------------------------ + + destroy sachg + \p\g + \q + --------------------------------------------------------------- + + Das Report Programm listet betriebsweise aus, welche + Software nach Aufgaben geordnet verfu"gbar ist. Der Pro- + grammtitel soll in der entsprechenden Spalte erscheinen, + wobei nur dann eine neue Zeile eingerichtet werden darf, + wenn mehrere Titel zu einem Sachgebiet (Aufgabe) auftreten. + Die Kurzbezeichnung zum Betrieb ist auf zwei Zeilen zu ver- + teilen. + -------------------------------------------------------------- + + report sachg_r + with + columns 130 + lines 57 + all lines 66 + big + + /* Prozeduren */ + define position = 1 + define b_spalte = 2 + + /* Variable */ + define v_pos = 1 + + /* Domaenen */ + define s_bnr = 1 + define s_kubez = 2 + define s_titel = 3 + define s_aufg = 4 + + define #s_bnr = integer 4 + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 344 - RRRREEEEPPPPOOOORRRRTTTT + + + define #s_kubez = char 48 + define #s_titel = char 10 + define #s_aufg = integer 2 + + as + + on pagebegin do + 'ARBEITSKREIS >>>COMPUTEREINSATZ IN DER SBW<<<' + 'BEZIRKSGELEITETE INDUSTRIE' + \115 date 0 + '*' 7 + ' SOFTWARE NACH SACHGEBIETEN ' + '*' 7 + \114 'Seite: ' integer @3 page + \n + 'BETRIEB' \n + \10 + 'GRUMI ' + 'INVEST ' + 'MATERIAL ' + 'AKR ' + 'LEISTUNG ' + 'WAREN ' + 'KOSTEN ' + 'FINANZEN ' + 'NUTZEN ' + 'BES./ANAL ' + 'BERICHTSW.' + 'SONSTIGES ' \n + \10 + ':=========' 12 \n2 + end + + proc position + if #s_aufg > 0 then + set $v_pos = #s_aufg + else + set $v_pos = 12 + end if + set $v_pos *= 10 + col $v_pos + char @10 #s_titel + return + + proc b_spalte + \10 ':' + \20 ':' + \30 ':' + \40 ':' + \50 ':' + \60 ':' + \70 ':' + \80 ':' + \90 ':' + \100 ':' + \110 ':' + \120 ':' + return + + on batchline do call b_spalte end + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 345 - RRRREEEEPPPPOOOORRRRTTTT + + + for all do + for one do + if groupbegin s_bnr then + \n + char batch 24 @48 #s_kubez + \n2 + end if + if ! groupend s_aufg then + \n + end if + call position + if groupend s_aufg then + \n + \10 + ':..............' 12 + \n + if line > 56 then \n4 end if + end if + end one + end all + ; + + + ------------------------------------------------------------ + + Die Druckliste ist etwa 127 Zeichen breit, um einen Einblick + zur Gestaltung zu geben, wurde bei Spalte 60 abgebrochen. + Es werden nur 40 Originaldruckzeilen gezeigt. Da das File + ssssaaaacccchhhhgggg____oooo im ASCII-Format vorliegt, ist die Aufbereitung mit + dem Editor mu"helos mo"glich, ebenso wie das Einfu"gen in den + Quelltext dieses Kapitels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + + + + + Beispiele - 346 - RRRREEEEPPPPOOOORRRRTTTT + + + ------------------------------------------------------------- + + ARBEITSKREIS >>>COMPUTEREINSATZ IN DER SBW<<< BEZIRKSGELEITET + + ****** SOFTWARE NACH SACHGEBIETEN ****** + BETRIEB + GRUMI INVEST MATERIAL AKR LEISTUNG WA + :=========:=========:=========:=========:=========:= + + KOMBINAT ERZGEBIRGISCHE + VOLKSKUNST OLBERNHAU : : : : + + AKR + :=========:=========:=========:=========:=========:= + + KOMBINAT ELEKTROGERAETE + FUERSTENWALDE : : : : + + GRUMI + BILANZ + DPA + HOLZERF + MFOKO + MP1801V + MWA146 + MWKBIL AKR SORTPLA RE + :.........:.........:.........:.........:.........:. + + VEB ELSTERMODE + ELSTERWERDA : : : : + + LISTEW1 LEIRE + :.........:.........:.........:.........:.........:. + + INGENEURBUERO + U.RATIONALIS.COTTBUS : : : : + + MARKE + :.........:.........:.........:.........:.........:. + + ------------------------------------------------------------ + + + + + + + + + + + + + + + + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + + diff --git a/WEGA/contrib/ingres/dbs/ing_doc/teil3/inhalt3 b/WEGA/contrib/ingres/dbs/ing_doc/teil3/inhalt3 new file mode 100644 index 0000000..621891f --- /dev/null +++ b/WEGA/contrib/ingres/dbs/ing_doc/teil3/inhalt3 @@ -0,0 +1,72 @@ + + + + + + + IIIInnnnhhhhaaaallllttttssssvvvveeeerrrrzzzzeeeeiiiicccchhhhnnnniiiissss TTTTeeeeiiiillll3333 + + 3.1. Terminkontrolle ** .................................... 320 + + 3.1.1. Vorbemerkung ........................................ 320 + + 3.1.2. Relationen .......................................... 320 + + 3.1.3. Steuerprogramm ...................................... 323 + + 3.1.4. Kontroll-Menue ...................................... 326 + + 3.2. Report-Generator * .................................... 338 + + 3.2.1. Arbeitslisten ....................................... 338 + + 3.2.2. Softwarekatalog ..................................... 341 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ING_DB 6.3/3 Juni 19, 1989 UUUUNNNNIIIIXXXX + +