diff --git a/WEGA/contrib/ingres/dbs/data/base/adr/adr ii b/WEGA/contrib/ingres/dbs/data/base/adr/adr ii new file mode 100644 index 0000000..8caae07 Binary files /dev/null and b/WEGA/contrib/ingres/dbs/data/base/adr/adr ii differ diff --git a/WEGA/contrib/ingres/dbs/data/base/adr/adr.ii b/WEGA/contrib/ingres/dbs/data/base/adr/adr.ii new file mode 100644 index 0000000..8caae07 Binary files /dev/null and b/WEGA/contrib/ingres/dbs/data/base/adr/adr.ii differ diff --git a/WEGA/contrib/ingres/dbs/data/base/adr/attribute.ii b/WEGA/contrib/ingres/dbs/data/base/adr/attribute.ii new file mode 100644 index 0000000..4f5e9ea Binary files /dev/null and b/WEGA/contrib/ingres/dbs/data/base/adr/attribute.ii differ diff --git a/WEGA/contrib/ingres/dbs/data/base/adr/dis ii b/WEGA/contrib/ingres/dbs/data/base/adr/dis ii new file mode 100644 index 0000000..cc7689e Binary files /dev/null and b/WEGA/contrib/ingres/dbs/data/base/adr/dis ii differ diff --git a/WEGA/contrib/ingres/dbs/data/base/adr/dis.ii b/WEGA/contrib/ingres/dbs/data/base/adr/dis.ii new file mode 100644 index 0000000..cc7689e Binary files /dev/null and b/WEGA/contrib/ingres/dbs/data/base/adr/dis.ii differ diff --git a/WEGA/contrib/ingres/dbs/demo/amx/01.x b/WEGA/contrib/ingres/dbs/demo/amx/01.x new file mode 100644 index 0000000..298c42a --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/01.x @@ -0,0 +1,50 @@ +/* +** Es sollen alle Angaben zu allen Angestellten recherchiert werden. +** +** +** Datenbank `dt' mit dem C-Programm verbinden +*/ +## shared Dt +/* +** Die C-Variable name wird als Austauschvariable zwischen +** dem C-Programm und der Datenbank deklariert +*/ +## char *name; +/* +** Das Hauptprogramm muss `amx' und nicht `main' heissen ! +*/ +amx(argc, argv) +int argc; +char **argv; +{ +/* +** Wenn das Programm mit einem Argument gerufen wird, +** wird das Argument als Bedingung fuer die auszuwaehlende +** Saetze genommen, ansonsten `*', das heisst alle. +*/ + name = (argc == 1)? "*": argv[1]; +/* +** Relation `personal' fuer die Benutzung eroeffnen. +*/ +## open Personal +/* +** Hole alle Saetze aus der Relation `personal', fuer die +** das Feld `name' den Wert der C-Variablen `name' hat. +*/ +## retrieve Personal $Name == name +## { +/* +** Es folgt die Aktion, die fuer jeden entsprechend der +** Bedingung gefunden Satz ausgefuert wird, hier das +** Ausgeben des vollstaendigen Satzes. +*/ + printf("------------\n"); +## print () +## } +/* +** Schliessen der Relation `personal'. +*/ +## close Personal + printf("------------\n"); + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/02.x b/WEGA/contrib/ingres/dbs/demo/amx/02.x new file mode 100644 index 0000000..56d738b --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/02.x @@ -0,0 +1,15 @@ +/* +** Es sollen die Namen aller Angestellten recherchiert werden. +*/ +## shared Dt +## char *name; +amx(argc, argv) +int argc; +char **argv; +{ + name = (argc == 1)? "*": argv[1]; +## open Personal +## retrieve Personal $Name == name { print ($Name) } +## close Personal + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/03.x b/WEGA/contrib/ingres/dbs/demo/amx/03.x new file mode 100644 index 0000000..ee3b3dc --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/03.x @@ -0,0 +1,53 @@ +/* +** Es sollen die Namen aller Angestellten und ihre Leiter recherchiert werden. +** +** Jeder Angestellte besitzt eine Angestelltennummer `num' und einen +** Leiter `leiter'. Die spezielle Leiternummer `0' bedeuted, dass der +** Angestellte keinen Leiter besitzt, ansonsten verweist die Leiternummer +** `leiter' auf einen Angestellten, der diese Nummer als Angestellten- +** nummer `num' hat. +*/ +## shared Dt +## char name[21]; +## i2 leiter; +## char *name_arg; +amx(argc, argv) +int argc; +char **argv; +{ + name_arg = (argc == 1)? "*": argv[1]; +## open Personal +/* +** Das Feld `name' wird fuer jeden entsprechend der Bedingung gefundenen +** Datensatz in die C-Variable `name' geladen, ebenso das Feld `leiter' +** in die C-Variable `leiter'. Anschliessend wird die Aktion ausgefuehrt. +*/ +## retrieve Personal $Name == name_arg (name = $Name, leiter = $Leiter) +## { + printf("Angestellter %-20s ", name); + if (leiter == 0) + { +/* +** Wenn die Leiternummer `0' ist, muss es ein +** Direktor sein und ich finde keinen Leiter +** fuer ihn. +*/ + printf("Direktor\n"); +## nextretrieve + } +/* +** Ich finde den Leiter des gerade gefundenen Angestellten, +** indem ich die Nummer seines Leiters als Bedingung fuer +** eine neue Recherche in der Relation `personal' nehme. +** Gesucht wird der Angestellte der als Nummer die Nummer +** hat, die der gefundene Angestellte als Leiternummer +** hatte. +*/ +## retrieve Personal $Num == $Leiter (name = $Name) +## { + printf("Leiter %s\n", name); +## } +## } +## close Personal + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/04.x b/WEGA/contrib/ingres/dbs/demo/amx/04.x new file mode 100644 index 0000000..957e729 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/04.x @@ -0,0 +1,38 @@ +/* +** Es sollen alle Angestellten und alle ihre Leiter recherchiert werden. +*/ +## shared Dt +## i2 leiter; +## char name[21]; +## char *name_arg; +amx(argc, argv) +int argc; +char **argv; +{ + name_arg = (argc == 1)? "*": argv[1]; +## open Personal +## retrieve Personal $Name == name_arg (name = $Name, leiter = $Leiter) +## { + suche_leiter(); +## } +## close Personal + fflush(stdout); +} +/* +** `suche_leiter' sucht rekursiv nach dem Leiter eines Angestellten, +** bis dieser der Direktor ist, das heisst, der Angestellte als +** Leiternummer eine `0' hat. +*/ +suche_leiter() +{ + printf("%-20s ", name); + if (leiter == 0) + { + putchar('\n'); + return; + } +## retrieve Personal $Num == leiter (name = $Name, leiter = $Leiter) +## { + suche_leiter(); +## } +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/05.x b/WEGA/contrib/ingres/dbs/demo/amx/05.x new file mode 100644 index 0000000..7596c41 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/05.x @@ -0,0 +1,79 @@ +/* +** Es soll die Stellung aller Angestellten bestimmt werden. +** +** Die Stellung kann sein: +** Direktor Der Angestellte hat keinen Leiter. +** Leiter Der Angestellte hat einen Leiter und Unterstellte. +** Angestellter Der Angestellte hat keine Unterstellte. +** +** Gleichzeitig soll die Anzahl der Direktoren, Leiter und +** Angestellten gezaehlt werden. +*/ +## shared Dt +## i2 leiter; +## char name[21]; +## char *name_arg; +amx(argc, argv) +int argc; +char **argv; +{ + register int unterstellte; + register int direktor_zaehler; + register int leiter_zaehler; + register int angestellten_zaehler; + name_arg = (argc == 1)? "*": argv[1]; + direktor_zaehler = leiter_zaehler = angestellten_zaehler = 0; +## open Personal +## retrieve Personal $Name == name_arg (name = $Name, leiter = $Leiter) +## { + printf("%-20s ", name); + if (leiter == 0) + { +/* +** Wir haben einen Direktor gefunden ! +*/ + printf("Direktor\n"); + direktor_zaehler++; +## nextretrieve + } +/* +** Mit der Variable `unterstellte' soll bestimmt werden, +** ob wir den eben gefundenen Angestellten auch als Leiter +** bei einem beliebigen anderen Angestellten finden. +*/ + unterstellte = 0; +## retrieve Personal $Leiter == $Num +## { +/* +** Ein gefundener Unterstellter reicht uns, wir +** brechen die Suche nach weiteren ab ! +*/ + unterstellte++; +## endretrieve +## } + if (unterstellte) + { +/* +** Wir haben Unterstellte gefunden, als muss der +** Angestellte ein Leiter sein, die Direktoren +** haben wir ja schon abgehandelt. +*/ + printf("Leiter\n"); + leiter_zaehler++; + } + else + { +/* +** Die Angestellten bleiben uebrig. +*/ + printf("Angestellter\n"); + angestellten_zaehler++; + } +## } +## close Personal + printf("TOTAL:\t%3d\n", direktor_zaehler + leiter_zaehler + angestellten_zaehler); + printf("\t%3d Direktoren\n", direktor_zaehler); + printf("\t%3d Leiter\n", leiter_zaehler); + printf("\t%3d Angestellte\n", angestellten_zaehler); + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/06.x b/WEGA/contrib/ingres/dbs/demo/amx/06.x new file mode 100644 index 0000000..080d1cd --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/06.x @@ -0,0 +1,48 @@ +/* +** Wir moechten die Betriebsstruktur (Unterstellungsverhaeltnisse) +** recherchieren. +*/ +## shared Dt +## i2 leiter; +## char name[21]; + int niveau; +amx(argc, argv) +int argc; +char **argv; +{ +/* +** Wird kein Argument gegeben, liefert `atoi()' den Wert `0'. +*/ + leiter = atoi(argv[1]); +## open Personal +/* +** Ausgangspunkt der Betriebsstruktur ist der Direktor, also die +** Leiternummer `0'. +*/ +## retrieve Personal $Leiter == leiter (name = $Name, leiter = $Num) +## { + suche_mitarbeiter(); +## } +## close Personal + fflush(stdout); +} +/* +** `suche_mitarbeiter' sucht rekursiv alle Unterstellten eines Angestellten. +*/ +suche_mitarbeiter() +{ + register int i; +/* +** Die C-Variable `niveau' verwaltet die Unterstellungstiefe, +** un optische Einrueckungen vornehmen zu koennen. +*/ + niveau++; + for (i = niveau - 1; i; --i) + putchar('\t'); + printf("%-20s %4d\n", name, leiter); +## retrieve Personal $Leiter == leiter (name = $Name, leiter = $Num) +## { + suche_mitarbeiter(); +## } + --niveau; +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/07.x b/WEGA/contrib/ingres/dbs/demo/amx/07.x new file mode 100644 index 0000000..deba3df --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/07.x @@ -0,0 +1,12 @@ +## shared Dt +## char *farbe; +amx(argc, argv) +int argc; +char **argv; +{ + farbe = (argc == 1)? "grau": argv[1]; +## open Teile +## retrieve Teile $Farbe == farbe { print ($Tname, $Farbe) } +## close Teile + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/08.x b/WEGA/contrib/ingres/dbs/demo/amx/08.x new file mode 100644 index 0000000..c45f610 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/08.x @@ -0,0 +1,18 @@ +## shared Dt +## i2 menge; +## i2 gewicht; +## char *tname; +amx(argc, argv) +int argc; +char **argv; +{ + tname = (argc == 1)? "*": argv[1]; +## open Teile +## retrieve Teile $Tname == tname (menge = $Menge, gewicht = $Gewicht) +## { +## print ($Tname, $Tnum) + printf("%12s:\t%d\n", "tot", menge * gewicht); +## } +## close Teile + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/11.x b/WEGA/contrib/ingres/dbs/demo/amx/11.x new file mode 100644 index 0000000..00d6f7c --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/11.x @@ -0,0 +1,12 @@ +## shared Dt +## i2 lnum; +amx(argc, argv) +int argc; +char **argv; +{ + lnum = (argc == 1)? 122: atoi(argv[1]); +## open Lieferung +## retrieve Lieferung $Lnum == lnum { print ($Tnum) } +## close Lieferung + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/12.x b/WEGA/contrib/ingres/dbs/demo/amx/12.x new file mode 100644 index 0000000..1fff0e9 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/12.x @@ -0,0 +1,19 @@ +## shared +1 Dt +## i2 lnum; +amx(argc, argv) +int argc; +char **argv; +{ + lnum = (argc == 1)? 122: atoi(argv[1]); +## open Teile +## open Lieferung +## use (shared Lieferung, shared Teile) +## retrieve Lieferung $Lnum == lnum +## { +## retrieve Teile $Tnum == $Tnum { print ($Tname) } +## } +## commit +## close Teile +## close Lieferung + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/13.x b/WEGA/contrib/ingres/dbs/demo/amx/13.x new file mode 100644 index 0000000..27ca910 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/13.x @@ -0,0 +1,19 @@ +## shared +1 Dt +## char *tname; +amx(argc, argv) +int argc; +char **argv; +{ + tname = (argc == 1)? "Zentraleinheit": argv[1]; +## open Teile +## open Lieferung +## use (shared Lieferung, shared Teile) +## retrieve Teile $Tname == tname +## { +## retrieve Lieferung $Tnum == $Tnum { print ($Lnum) } +## } +## commit +## close Teile +## close Lieferung + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/14.x b/WEGA/contrib/ingres/dbs/demo/amx/14.x new file mode 100644 index 0000000..c662be8 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/14.x @@ -0,0 +1,24 @@ +## shared Dt +## char *name; +amx(argc, argv) +int argc; +char **argv; +{ + register int c; + name = (argc == 1)? "*": argv[1]; +## open Personal +## use (exclusive Personal) +## retrieve Personal $Name == name +## { +## print () + printf("STREICHEN ?\t"); + fflush(stdout); + if ((c = getchar()) == 'y') +## delete + while (c && c != '\n') + c = getchar(); +## } +## commit +## close Personal + fflush(stdout); +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/15.x b/WEGA/contrib/ingres/dbs/demo/amx/15.x new file mode 100644 index 0000000..6ffcbf8 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/15.x @@ -0,0 +1,13 @@ +## shared Dt +## i2 leiter; +amx(argc, argv) +int argc; +char **argv; +{ + leiter = (argc == 1)? 129: atoi(argv[1]); +## open Personal +## use (exclusive Personal) +## retrieve Personal $Leiter == leiter { print ($Name); delete } +## commit +## close Personal +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/17.x b/WEGA/contrib/ingres/dbs/demo/amx/17.x new file mode 100644 index 0000000..7496f25 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/17.x @@ -0,0 +1,18 @@ +## shared Dt +## char *name; +## i2 num; +## i2 leiter; +amx(argc, argv) +int argc; +char **argv; +{ + name = (argc == 1)? "Unfug, Ulli": argv[1]; + num = (argc < 3)? 12: atoi(argv[2]); + leiter = (argc < 4)? 157: atoi(argv[3]); +## open Personal +## use (exclusive Personal) +## retrieve Personal $Name == name +## { replace ($Num = num, $Leiter = leiter) } +## commit +## close Personal +} diff --git a/WEGA/contrib/ingres/dbs/demo/amx/18.x b/WEGA/contrib/ingres/dbs/demo/amx/18.x new file mode 100644 index 0000000..38780fa --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/amx/18.x @@ -0,0 +1,23 @@ +## shared Dt +## f8 gehalt; +## char *name; +amx(argc, argv) +int argc; +char **argv; +{ + name = (argc == 1)? "*": argv[1]; +/* +** Hier wird ueberprueft, ob der Ausfuehrende des Programms +** auch der Uebersetzende war. +*/ +## permit user +## open Personal +## use (exclusive Personal) +## retrieve Personal $Name == name (gehalt = $Gehalt) +## { + gehalt *= 1.1; +## replace ($Gehalt = gehalt) +## } +## commit +## close Personal +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/.save b/WEGA/contrib/ingres/dbs/demo/bank/.save new file mode 100644 index 0000000..e69de29 diff --git a/WEGA/contrib/ingres/dbs/demo/bank/auszug.x b/WEGA/contrib/ingres/dbs/demo/bank/auszug.x new file mode 100644 index 0000000..53e000a --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/auszug.x @@ -0,0 +1,154 @@ +## import "menue.x" + +# define MAX_AUSZUG 20 + +struct auszug +{ + long a_datum; + short a_betrag; + short a_no_grund; +}; + +auszug() +{ + char buf[36]; + + while (!input(11, buf)) + pr_kunde(); + konto = atol(buf); + pr_auszug(); +} + + +auszuege() +{ + register int cnt; + + for ( ; ; ) + { + cnt = 0; +## retrieve buchung +## ( +## konto = $konto +## ) +## { + cnt++; + break; +## } + if (!cnt) + return; + pr_auszug(); + } +} + + +pr_auszug() +{ + register struct auszug **ap; + register struct auszug *a; + register int i; + register int j; + struct auszug abuf[MAX_AUSZUG]; + struct auszug *apbuf[MAX_AUSZUG]; + extern int cmpa(); + extern char *ctime(); + + if (get_konto()) + { + error("ungueltige Kontonummer"); + return; + } + get_bank(); + get_kunde(); + get_name(); + get_vorname(); + get_str(); + get_ort(); + cls(1, 1, 25, 80); + on_revers(); + cursor(1, 1); + for (i = 0; i < 80; i++) + putchar(' '); + cursor(2, 1); + for (i = 0; i < 80; i++) + putchar(' '); + cursor(1, 1); + printf("KONTOAUSZUG #%ld# %s %s", konto, bank, ctime(&datum)); + cursor(2, 1); + printf("NEUER SALDO %ld", saldo); + off_revers(); + cursor(3, 1); + on_bold(); + printf("%s, %s aus %s %s, %d", name, vorname, str, ort, plz); + off_bold(); + i = 0; + a = abuf; + ap = apbuf; +## use (+buchung) +## retrieve buchung $konto == konto +## ( +## datum = $datum, +## betrag = $betrag, +## no_grund = $no_grund +## ) +## { + a->a_datum = datum; + a->a_betrag = betrag; + a->a_no_grund = no_grund; + *ap++ = a++; +## delete + if (i++ == MAX_AUSZUG) + break; +## } +## commit + if (!i) + { + error("keine Kontoauszuege vorhanden"); + goto done; + } + qsort(apbuf, i, sizeof (struct auszug *), cmpa); + on_revers(); + cursor(4, 1); + for (j = 0; j < 80; j++) + putchar(' '); + cursor(4, 1); + printf("UMSAETZE %-35s BUCHUNGSDATUM", "BUCHUNGSTEXT"); + off_revers(); + cursor(5, 1); + ap = apbuf; + while (i--) + { + a = *ap++; + no_grund = a->a_no_grund; + get_grund(); + if (!plus) + on_blinking(); + printf("%8d", a->a_betrag); + if (!plus) + off_blinking(); + printf(" %-35s %s", grund, ctime(&a->a_datum)); + a++; + } +done: + if (Batch) + return; + cursor(2, 60); + on_revers(); + on_blinking(); + printf("continue"); + off_blinking(); + off_revers(); + fflush(stdout); + while ((i = getchar()) > 0 && i != '\n') + continue; +} + + +cmpa(a, b) +register struct auszug *a; +register struct auszug *b; +{ + if (a->a_datum == b->a_datum) + return (0); + return (a->a_datum < b->a_datum); +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/bank.x b/WEGA/contrib/ingres/dbs/demo/bank/bank.x new file mode 100644 index 0000000..d13c66b --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/bank.x @@ -0,0 +1,70 @@ +## import "menue.x" + +pr_bank() +{ + pr_init(); +## retrieve bank +## ( +## bank = $bank +## ) +## { + if (pr_line()) + break; + printf("%s", bank); +## } + pr_end(); +} + + +get_bank() +{ + register int rc; + + rc = 1; +## retrieve bank $no_bank == no_bank +## ( +## no_str = $no_str, +## no_ort = $no_ort, +## bank = $bank +## ) +## { + rc = 0; + break; +## } + return (rc); +} + + +new_bank() +{ + while (!input(10, bank)) + pr_bank(); + no_bank = 0; +## use (+bank) +## retrieve bank $bank == bank +## ( +## no_bank = $no_bank, +## no_str = $no_str, +## no_ort = $no_ort +## ) +## { + break; +## } + if (!no_bank) + { +## tuplecount bank no_bank + no_bank++; +## commit + new_str(); + new_ort(); +## use (+bank) +## append bank +## ( +## $no_bank = no_bank, +## $no_str = no_str, +## $no_ort = no_ort, +## $bank = bank +## ) + } +## commit +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/buchung.x b/WEGA/contrib/ingres/dbs/demo/bank/buchung.x new file mode 100644 index 0000000..ea45b24 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/buchung.x @@ -0,0 +1,69 @@ +## import "menue.x" + +new_buchung() +{ + register int i; + register long l; + char buf[36]; + extern long atol(); + extern long time(); + + if (Batch) + { +## tuplecount konto konto + konto = l = rand() % konto + 1; + hash_konto(&konto); + i = (rand() % l) * 7; + if (l > i) + { + if (l > 500 || time((char *) 0) & 01) + pr_auszug(); + else + new_konto(); + } + betrag = rand() % 1000 + 1; + on_revers(); + printf("\n%d Konto ", Batch); + off_revers(); + printf("%5ld\n", konto); + printf(" Betrag %5d\n", betrag); + } + else + { + while (!input(11, buf)) + pr_kunde(); + konto = atol(buf); + input(12, buf); + betrag = atoi(buf); + } + new_datum(); + new_grund(); + if (!plus) + betrag = -betrag; +## use (+buchung, +konto) +## retrieve konto $konto == konto +## ( +## saldo = $saldo +## ) +## { + saldo += betrag; +## append buchung +## ( +## $konto = konto, +## $datum = datum, +## $betrag = betrag, +## $no_grund = no_grund +## ) +## replace +## ( +## $saldo = saldo, +## $datum = datum +## ) +## } +## commit + if (Batch && saldo < 0 && Mahnung++ == 10) + { + Mahnung = 0; + mahnung(); + } +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/grund.x b/WEGA/contrib/ingres/dbs/demo/bank/grund.x new file mode 100644 index 0000000..9556a64 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/grund.x @@ -0,0 +1,79 @@ +## import "menue.x" + +pr_grund() +{ + pr_init(); +## retrieve grund +## ( +## plus = $plus, +## grund = $grund +## ) +## { + if (pr_line()) + break; + printf("%c%s", plus? ' ': '-', grund); +## } + pr_end(); +} + + +get_grund() +{ + register int rc; + + rc = 1; +## retrieve grund $no_grund == no_grund +## ( +## plus = $plus, +## grund = $grund +## ) +## { + rc = 0; + break; +## } + return (rc); +} + + +new_grund() +{ + char buf[36]; + + if (Batch) + { +## tuplecount grund no_grund + no_grund = rand() % no_grund + 1; + get_grund(); + printf(" Grund %c%s\n", plus? ' ': '-', grund); + return; + } + while (!input(8, grund)) + pr_grund(); + no_grund = 0; +## use (+grund) +## retrieve grund $grund == grund +## ( +## no_grund = $no_grund, +## plus = $plus +## ) +## { + break; +## } + if (!no_grund) + { +## tuplecount grund no_grund + no_grund++; +## commit + input(9, buf); + if (plus = atoi(buf)) + plus = 1; +## use (+grund) +## append grund +## ( +## $no_grund = no_grund, +## $plus = plus, +## $grund = grund +## ) + } +## commit +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/konto.x b/WEGA/contrib/ingres/dbs/demo/bank/konto.x new file mode 100644 index 0000000..e757ad7 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/konto.x @@ -0,0 +1,45 @@ +## import "menue.x" + +get_konto() +{ + register int rc; + + rc = 1; +## retrieve konto $konto == konto +## ( +## konto = $konto, +## saldo = $saldo, +## datum = $datum, +## no_bank = $no_bank +## ) +## { + rc = 0; + break; +## } + return (rc); +} + + +new_konto() +{ + new_kunde(); + if (Batch) + { +## tuplecount bank no_bank + no_bank = rand() % no_bank + 1; + get_bank(); + printf(" Bank %5d %s\n", no_bank, bank); + } + else + new_bank(); + new_datum(); +## use (+konto) +## append konto +## ( +## $konto = konto, +## $saldo = 0, +## $datum = datum, +## $no_bank = no_bank +## ) +## commit +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/kunde.x b/WEGA/contrib/ingres/dbs/demo/bank/kunde.x new file mode 100644 index 0000000..54191e6 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/kunde.x @@ -0,0 +1,90 @@ +## import "menue.x" + +pr_kunde() +{ + pr_init(); +## retrieve kunde +## ( +## no_name = $no_name, +## no_vorname = $no_vorname, +## konto = $konto +## ) +## { + if (pr_line()) + break; + get_name(); + get_vorname(); + printf("%-12.s %-12.s %ld", name, vorname, konto); +## } + pr_end(); +} + + +get_kunde() +{ + register int rc; + + rc = 1; +## retrieve kunde $konto == konto +## ( +## no_name = $no_name, +## no_vorname = $no_vorname, +## no_str = $no_str, +## no_ort = $no_ort +## ) +## { + rc = 0; + break; +## } + return (rc); +} + + +new_kunde() +{ + if (Batch) + { +## tuplecount name no_name + no_name = rand() % no_name + 1; + get_name(); + on_revers(); + printf("\n%d Name ", Batch); + off_revers(); + printf("%5d %s\n", no_name, name); +## tuplecount vorname no_vorname + no_vorname = rand() % no_vorname + 1; + get_vorname(); + printf(" Vorname %5d %s\n", no_vorname, vorname); +## tuplecount str no_str + no_str = rand() % no_str + 1; + get_str(); + printf(" Strasse %5d %s\n", no_str, str); +## tuplecount ort no_ort + no_ort = rand() % no_ort + 1; + get_ort(); + printf(" PLZ %5d\n", plz); + printf(" Ort %5d %s\n", no_ort, ort); + } + else + { + new_name(); + new_vorname(); + new_str(); + new_ort(); + } +## use (+kunde) +## tuplecount kunde konto + konto++; + hash_konto(&konto); +## append kunde +## ( +## $konto = konto, +## $no_name = no_name, +## $no_vorname = no_vorname, +## $no_str = no_str, +## $no_ort = no_ort +## ) +## commit + if (Batch) + printf(" Konto %5ld\n", konto); +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/name.x b/WEGA/contrib/ingres/dbs/demo/bank/name.x new file mode 100644 index 0000000..55fb529 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/name.x @@ -0,0 +1,60 @@ +## import "menue.x" + +pr_name() +{ + pr_init(); +## retrieve name +## ( +## name = $name +## ) +## { + if (pr_line()) + break; + printf("%s", name); +## } + pr_end(); +} + + +get_name() +{ + register int rc; + + rc = 1; +## retrieve name $no_name == no_name +## ( +## name = $name +## ) +## { + rc = 0; + break; +## } + return (rc); +} + + +new_name() +{ + while (!input(4, name)) + pr_name(); + no_name = 0; +## use (+name) +## retrieve name $name == name +## ( +## no_name = $no_name +## ) +## { + break; +## } + if (!no_name) + { +## tuplecount name no_name + no_name++; +## append name +## ( +## $no_name = no_name, +## $name = name +## ) + } +## commit +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/ort.x b/WEGA/contrib/ingres/dbs/demo/bank/ort.x new file mode 100644 index 0000000..0509e68 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/ort.x @@ -0,0 +1,67 @@ +## import "menue.x" + +pr_ort() +{ + pr_init(); +## retrieve ort +## ( +## plz = $plz, +## ort = $ort +## ) +## { + if (pr_line()) + break; + printf("%4d %s", plz, ort); +## } + pr_end(); +} + + +get_ort() +{ + register int rc; + + rc = 1; +## retrieve ort $no_ort == no_ort +## ( +## plz = $plz, +## ort = $ort +## ) +## { + rc = 0; + break; +## } + return (rc); +} + + +new_ort() +{ + char buf[36]; + + while (!input(6, ort)) + pr_ort(); + input(7, buf); + plz = atoi(buf); + no_ort = 0; +## use (+ort) +## retrieve ort $plz == plz and $ort == ort +## ( +## no_ort = $no_ort +## ) +## { + break; +## } + if (!no_ort) + { +## tuplecount ort no_ort + no_ort++; +## append ort +## ( +## $no_ort = no_ort, +## $plz = plz, +## $ort = ort +## ) + } +## commit +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/str.x b/WEGA/contrib/ingres/dbs/demo/bank/str.x new file mode 100644 index 0000000..8c22422 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/str.x @@ -0,0 +1,60 @@ +## import "menue.x" + +pr_str() +{ + pr_init(); +## retrieve str +## ( +## str = $str +## ) +## { + if (pr_line()) + break; + printf("%s", str); +## } + pr_end(); +} + + +get_str() +{ + register int rc; + + rc = 1; +## retrieve str $no_str == no_str +## ( +## str = $str +## ) +## { + rc = 0; + break; +## } + return (rc); +} + + +new_str() +{ + while (!input(5, str)) + pr_str(); + no_str = 0; +## use (+str) +## retrieve str $str == str +## ( +## no_str = $no_str +## ) +## { + break; +## } + if (!no_str) + { +## tuplecount str no_str + no_str++; +## append str +## ( +## $no_str = no_str, +## $str = str +## ) + } +## commit +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/vorname.x b/WEGA/contrib/ingres/dbs/demo/bank/vorname.x new file mode 100644 index 0000000..99ac36d --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/vorname.x @@ -0,0 +1,60 @@ +## import "menue.x" + +pr_vorname() +{ + pr_init(); +## retrieve vorname +## ( +## vorname = $vorname +## ) +## { + if (pr_line()) + break; + printf("%s", vorname); +## } + pr_end(); +} + + +get_vorname() +{ + register int rc; + + rc = 1; +## retrieve vorname $no_vorname == no_vorname +## ( +## vorname = $vorname +## ) +## { + rc = 0; + break; +## } + return (rc); +} + + +new_vorname() +{ + while (!input(3, vorname)) + pr_vorname(); + no_vorname = 0; +## use (+vorname) +## retrieve vorname $vorname == vorname +## ( +## no_vorname = $no_vorname +## ) +## { + break; +## } + if (!no_vorname) + { +## tuplecount vorname no_vorname + no_vorname++; +## append vorname +## ( +## $no_vorname = no_vorname, +## $vorname = vorname +## ) + } +## commit +} diff --git a/WEGA/contrib/ingres/dbs/demo/dbsr/ot.x b/WEGA/contrib/ingres/dbs/demo/dbsr/ot.x new file mode 100644 index 0000000..ff2e0db --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/dbsr/ot.x @@ -0,0 +1,44 @@ +## shared Dbsr + + int count; +## char kenn[2]; +## char t[31]; +## i2 m; + +amx() +{ + register int cnt; + long old; + long new; + char buf[BUFSIZ]; + extern long time(); + + setbuf(stdout, buf); + printf("DBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("Ermittlung aller Endprodukte\n\n"); + fflush(stdout); + +## open Teile +## open Inf + old = time((char *) 0); +## retrieve Teile (kenn = $Kenn, t = $T, m = $M) +## { + cnt = 0; +## retrieve Inf $Ut == $T +## { + cnt++; + break; +## } + if (cnt) + continue; + printf("%s %s %4d\n", kenn, t, m); + fflush(stdout); + count++; +## } + new = time((char *) 0); + printf("\nEXECUTE %ld sec\n", new - old); + printf("TUPLECOUNT %d\n", count); + fflush(stdout); +## close Inf +## close Teile +} diff --git a/WEGA/contrib/ingres/dbs/demo/dbsr/ot_t.x b/WEGA/contrib/ingres/dbs/demo/dbsr/ot_t.x new file mode 100644 index 0000000..eeec0ba --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/dbsr/ot_t.x @@ -0,0 +1,47 @@ +## shared Dbsr + + int count; +## char ot[14]; + +amx() +{ + register int i; + long old; + long new; + char buf[BUFSIZ]; + extern long time(); + + setbuf(stdout, buf); + printf("DBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("Konsistenzcheck Inf.Ot --> Teile.T\n\n"); + fflush(stdout); + +## open Teile +## open Inf + old = time((char *) 0); +## retrieve Inf (ot = $Ot) +## { + count++; + i = 0; +## retrieve Teile $T == $Ot +## { + i++; +## } + if (!i) + { + printf("ot = %s LOST\n", ot); + fflush(stdout); + } + if (i != 1) + { + printf("ot = %s has %d entries\n", ot, i); + fflush(stdout); + } +## } + new = time((char *) 0); + printf("\nEXECUTE %ld sec\n", new - old); + printf("TUPLECOUNT %d\n", count); + fflush(stdout); +## close Inf +## close Teile +} diff --git a/WEGA/contrib/ingres/dbs/demo/dbsr/ota.x b/WEGA/contrib/ingres/dbs/demo/dbsr/ota.x new file mode 100644 index 0000000..e58187e --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/dbsr/ota.x @@ -0,0 +1,43 @@ +## shared Dbsr + + int count; +## char t[31]; +## i2 m; + +amx() +{ + register int cnt; + long old; + long new; + char buf[BUFSIZ]; + extern long time(); + + setbuf(stdout, buf); + printf("DBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("Ermittlung aller Endprodukte die Unterteile haben\n\n"); + fflush(stdout); + +## open Teile +## open Inf + old = time((char *) 0); +## retrieve Teile $Kenn == "a" (t = $T, m = $M) +## { + cnt = 0; +## retrieve Inf $Ut == $T +## { + cnt++; + break; +## } + if (cnt) + continue; + printf("%s %4d\n", t, m); + fflush(stdout); + count++; +## } + new = time((char *) 0); + printf("\nEXECUTE %ld sec\n", new - old); + printf("TUPLECOUNT %d\n", count); + fflush(stdout); +## close Inf +## close Teile +} diff --git a/WEGA/contrib/ingres/dbs/demo/dbsr/otbc.x b/WEGA/contrib/ingres/dbs/demo/dbsr/otbc.x new file mode 100644 index 0000000..fd847f7 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/dbsr/otbc.x @@ -0,0 +1,43 @@ +## shared Dbsr + + int count; +## char t[31]; +## i2 m; + +amx() +{ + register int cnt; + long old; + long new; + char buf[BUFSIZ]; + extern long time(); + + setbuf(stdout, buf); + printf("DBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("Ermittlung aller Endprodukte die keine Unterteile haben\n\n"); + fflush(stdout); + +## open Teile +## open Inf + old = time((char *) 0); +## retrieve Teile $Kenn != "a" (t = $T, m = $M) +## { + cnt = 0; +## retrieve Inf $Ut == $T +## { + cnt++; + break; +## } + if (cnt) + continue; + printf("%s %4d\n", t, m); + fflush(stdout); + count++; +## } + new = time((char *) 0); + printf("\nEXECUTE %ld sec\n", new - old); + printf("TUPLECOUNT %d\n", count); + fflush(stdout); +## close Inf +## close Teile +} diff --git a/WEGA/contrib/ingres/dbs/demo/dbsr/stl.x b/WEGA/contrib/ingres/dbs/demo/dbsr/stl.x new file mode 100644 index 0000000..e669f1f --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/dbsr/stl.x @@ -0,0 +1,62 @@ +## shared Dbsr + + int count; + int lev; +## char ot[14]; +## char ut[14]; +## char name[31]; +## char me[3]; + +amx() +{ + long old; + long new; + char buf[BUFSIZ]; + extern long time(); + + setbuf(stdout, buf); + printf("DBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("Strukturstueckliste\n"); + fflush(stdout); + +## open Teile +## open Inf + old = time((char *) 0); +## retrieve Teile $Kenn == "a" (ot = $T, name = $Name) +## { + lev = 0; + printf("\n*** ALLE STRUKTURLISTEN ***\n"); + printf("\nStueckliste %s %s\n", ot, name); + printf("\n\tAufl.St.\t Gegenst.Nr. Gegenst.Bez. ME\n\n"); + fflush(stdout); + stl_structure(); +## } +## close Inf +## close Teile + new = time((char *) 0); + printf("\nEXECUTE %ld sec\n", new - old); + fflush(stdout); +} + + +stl_structure() +{ + register int i; + + lev++; +## retrieve Inf $Ot == ot (ut = $Ut) +## { +## retrieve Teile $T == ut (name = $Name, me = $Me) +## { + putchar('\t'); + for (i = lev; i; --i) + putchar('.'); + printf("%d\t\t", lev); + printf("%13s %30s %2s\n", ut, name, me); + fflush(stdout); +## } + AAsmove(ut, ot); + stl_structure(); +## } + --lev; +} diff --git a/WEGA/contrib/ingres/dbs/demo/dbsr/stl1.x b/WEGA/contrib/ingres/dbs/demo/dbsr/stl1.x new file mode 100644 index 0000000..2591fc3 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/dbsr/stl1.x @@ -0,0 +1,58 @@ +## shared Dbsr + + int count; + int lev; +## char ot[14]; +## char ut[14]; +## char name[31]; +## char me[3]; + +amx() +{ + long old; + long new; + char buf[BUFSIZ]; + extern long time(); + + setbuf(stdout, buf); + printf("DBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("einstufige Strukturstueckliste\n"); + fflush(stdout); + +## open Teile +## open Inf + old = time((char *) 0); +## retrieve Teile $Kenn == "a" (ot = $T, name = $Name) +## { + lev = 0; + printf("\n*** einstufige STRUKTURLISTEN ***\n"); + printf("\nStueckliste %s %s\n", ot, name); + printf("\n\tAufl.St.\t Gegenst.Nr. Gegenst.Bez. ME\n\n"); + fflush(stdout); + stl_structure(); +## } +## close Inf +## close Teile + new = time((char *) 0); + printf("\nEXECUTE %ld sec\n", new - old); +} + +stl_structure() +{ + register int i; + + lev++; +## retrieve Inf $Ot == ot (ut = $Ut) +## { +## retrieve Teile $T == ut (name = $Name, me = $Me) +## { + putchar('\t'); + for (i = lev; i; --i) + putchar('.'); + printf("%d\t\t", lev); + printf("%13s %30s %2s\n", ut, name, me); + fflush(stdout); +## } +## } + --lev; +} diff --git a/WEGA/contrib/ingres/dbs/demo/dbsr/tot.x b/WEGA/contrib/ingres/dbs/demo/dbsr/tot.x new file mode 100644 index 0000000..7c2fb57 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/dbsr/tot.x @@ -0,0 +1,121 @@ +## shared Dbsr + +## int lev; +## char ot[14]; +## char ut[14]; +## char name[31]; +## char me[3]; +## int m; +## int menge; +## int meng; + + int count; + int mengen[20]; + char titname[31]; + char titnr[13]; + +amx() +{ + long old; + long new; + char buf[BUFSIZ]; + extern long time(); + + setbuf(stdout, buf); + printf("DBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("Strukturstueckliste fuer das Teil Nr. 10 (20 Stueck)\n"); + fflush(stdout); + +## open Total +## open Teile +## open Inf + old = time((char *) 0); + +## use (exclusive Total, shared Teile, shared Inf) +## retrieve Total { delete } +## retrieve Teile $T == "0000000000010" (ot = $T, name = $Name, me = $Me) +## { + lev = 0; + menge = 20; + mengen[lev] = 20; + printf("\nStueckliste %-s %-s\n", ot, name); + printf("\n\tAufl.St.\t Gegenst.Nr. Gegenst.Bez.\t\t ME Menge\n"); + fflush(stdout); + AAsmove(ot, ut); + AAsmove(ut, titnr); + AAsmove(name, titname); + app(); + AAsmove(ut, ot), + + stl_structure(); +## } + printtot(); +## commit +## close Inf +## close Total +## close Teile + new = time((char *) 0); + printf("\nEXECUTE %ld sec\n", new - old); + fflush(stdout); +} + + +stl_structure() +{ + register int i; + + lev++; +## retrieve Inf $Ot == ot (ut = $Ut, m = $M) +## { + menge = mengen[--lev] * m; + mengen[++lev] = menge; +## retrieve Teile $T == ut (name = $Name, me = $Me) +## { + putchar('\t'); + for (i = lev; i; --i) + putchar('.'); + printf("%d\t\t", lev); + printf("%13s %-30s %-2s %5d\n", ut, name, me, menge); + fflush(stdout); + app(); +## } + AAsmove(ut, ot); + stl_structure(); +## } + --lev; +} + + +app() +{ + register int count; + register int i; + + count = 0; + i++; +## retrieve Total $T == ut (meng = $Menge) +## { + count++; + menge += meng; +## replace ($Menge = menge) +## } + if (!count) +## append Total +## ($Lev = lev, $T = ut, $Name = name, $Menge = menge, $Me = me) +} + + +printtot() +{ + printf("\n\tDBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("\tTotale Stueckliste fuer das Teil Nr. 10 (20 Stueck)\n"); + printf("\n\tStueckliste %-s %-s\n", titnr, titname); + printf("\n\t Gegenst.Nr. Gegenst.Bez. ME Menge\n"); + fflush(stdout); +## retrieve Total $T != "0000000000010" +## (ut = $T, name = $Name, menge = $Menge, me = $Me) +## { + printf("\t%13s %-30s %-2s %5d\n", ut, name, me, menge); + fflush(stdout); +## } +} diff --git a/WEGA/contrib/ingres/dbs/demo/dbsr/ut_t.x b/WEGA/contrib/ingres/dbs/demo/dbsr/ut_t.x new file mode 100644 index 0000000..01b4b18 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/dbsr/ut_t.x @@ -0,0 +1,47 @@ +## shared Dbsr + + int count; +## char ut[14]; + +amx() +{ + register int i; + long old; + long new; + char buf[BUFSIZ]; + extern long time(); + + setbuf(stdout, buf); + printf("DBS/R-DEMONSTRATIONSBEISPIEL:\n"); + printf("Konsistenzcheck Inf.Ut --> Teile.T\n\n"); + fflush(stdout); + +## open Teile +## open Inf + old = time((char *) 0); +## retrieve Inf (ut = $Ut) +## { + count++; + i = 0; +## retrieve Teile $T == $Ut +## { + i++; +## } + if (!i) + { + printf("ut = %s LOST\n", ut); + fflush(stdout); + } + if (i != 1) + { + printf("ut = %s has %d entries\n", ut, i); + fflush(stdout); + } +## } + new = time((char *) 0); + printf("\nEXECUTE %ld sec\n", new - old); + printf("TUPLECOUNT %d\n", count); + fflush(stdout); +## close Inf +## close Teile +}