diff --git a/WEGA/contrib/ingres/dbs/demo/bank/cursor.c b/WEGA/contrib/ingres/dbs/demo/bank/cursor.c new file mode 100644 index 0000000..e199997 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/cursor.c @@ -0,0 +1,128 @@ +# include +# include "cursor.h" + +static int blinking_on; +static int revers_on; +static int underline_on; +static int bold_on; +static int cursor_on; + + +on_blinking() +{ + if (blinking_on++) + return; + printf(ON_BLINKING); +} + +off_blinking() +{ + if (--blinking_on) + return; + printf(OFF_BLINKING); +} + +on_revers() +{ + if (revers_on++) + return; + printf(ON_REVERS); +} + +off_revers() +{ + if (--revers_on) + return; + printf(OFF_REVERS); +} + +on_underline() +{ + if (underline_on++) + return; + printf(ON_UNDERLINE); +} + +off_underline() +{ + if (--underline_on) + return; + printf(OFF_UNDERLINE); +} + +on_bold() +{ + if (bold_on++) + return; + printf(ON_BOLD); +} + +off_bold() +{ + if (--bold_on) + return; + printf(OFF_BOLD); +} + +cursor(line, col) +register int line; +register int col; +{ + printf(CURSOR, line, col); +} + +on_cursor() +{ + if (cursor_on++) + return; + printf(ON_CURSOR); +} + +off_cursor() +{ + if (--cursor_on) + return; + printf(OFF_CURSOR); +} + +cls(line1, col1, line2, col2) +register int line1; +register int col1; +register int line2; +register int col2; +{ + printf(CLS, line1, col1, line2, col2); +} + +box(line1, col1, line2, col2) +int line1; +int col1; +int line2; +int col2; +{ + register int l; + register int c; + + cls(line1, col1, line2, col2); + off_cursor(); + on_revers(); + on_blinking(); + + for (l = line1; l <= line2; l++) + { + cursor(l, col1); + if (l == line1 || l == line2) + for (c = col1; c <= col2; c++) + putchar(' '); + else + { + putchar(' '); + cursor(l, col2); + putchar(' '); + } + } + + off_blinking(); + off_revers(); + on_cursor(); +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/print.c b/WEGA/contrib/ingres/dbs/demo/bank/print.c new file mode 100644 index 0000000..13a2761 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/print.c @@ -0,0 +1,61 @@ +# include + +# define PR_BGN 15 +# define PR_END 25 + +static int print; +static int abort; + +pr_init() +{ + register int i; + + abort = 0; + for (i = PR_BGN; i < PR_END; i++) + cls(i, 1, i, 47); + cursor(print = PR_BGN, 1); + on_bold(); +} + +pr_line() +{ + register int i; + + if (print == PR_END) + { + print = PR_BGN; + if (go_on()) + { + abort = 1; + return (1); + } + for (i = PR_BGN; i < PR_END; i++) + cls(i, 1, i, 47); + } + cursor(print, 1); + print++; + return (0); +} + +pr_end() +{ + if (!abort) + go_on(); + off_bold(); + cls(24, 48, 24, 80); +} + +static go_on() +{ + register int c; + + cursor(24, 48); + on_revers(); + printf("continue/abort"); + off_revers(); + printf(" "); + fflush(stdout); + while ((c = getchar()) > 0 && c != '\n') + continue; + return (c > 0); +} diff --git a/WEGA/contrib/ingres/dbs/demo/bank/util.c b/WEGA/contrib/ingres/dbs/demo/bank/util.c new file mode 100644 index 0000000..381bddb --- /dev/null +++ b/WEGA/contrib/ingres/dbs/demo/bank/util.c @@ -0,0 +1,204 @@ +# include + +struct cmd +{ + char *cmd_msg; + int (*cmd_func)(); +}; + +extern int relclose(); +extern int new_name(); +extern int new_vorname(); +extern int new_ort(); +extern int new_str(); +extern int new_bank(); +extern int new_kunde(); +extern int new_konto(); +extern int new_grund(); +extern int new_buchung(); +extern int auszug(); +extern int auszuege(); +extern int mahnung(); + +struct cmd Cmd[] = +{ + "Ende", relclose, + "Eingabe Vorname", new_vorname, + "Eingabe Name", new_name, + "Eingabe Strasse", new_str, + "Eingabe Ort", new_ort, + "Eingabe Grund", new_grund, + "Eingabe Bank", new_bank, + "Eingabe Kunde", new_kunde, + "Eingabe Konto", new_konto, + "Eingabe Buchung", new_buchung, + "Ausgabe Kontoauszug", auszug, + "Ausgabe Kontoauszuege", auszuege, + "Mahnungen", mahnung, +}; +int Cmds = sizeof Cmd / sizeof (struct cmd); + + +menue() +{ + register struct cmd *c; + register int i; + char buf[36]; + +try_again: + cls(1, 1, 24, 80); + box(1, 48, Cmds + 4, 80); + on_underline(); + cursor(2, 54); + printf(" "); + off_underline(); + for (i = 0, c = Cmd; i < Cmds; i++, c++) + { + cursor(i + 3, 50); + on_revers(); + printf("%2d", i); + off_revers(); + printf(" "); + on_underline(); + printf(" %-23s", c->cmd_msg); + off_underline(); + } + + cursor(1, 1); + on_revers(); + printf(" \n"); + printf(" Auswahl \n"); + printf(" Vorname \n"); + printf(" Name \n"); + printf(" Strasse \n"); + printf(" Ort \n"); + printf(" PLZ \n"); + printf(" Grund \n"); + printf(" Plus \n"); + printf(" Bank \n"); + printf(" Konto \n"); + printf(" Betrag \n"); + printf(" "); + off_revers(); + input(2, buf); + if ((i = atoi(buf)) >= Cmds) + { + error("ungueltige Auswahl"); + goto try_again; + } + cls(25, 1, 25, 80); + c = &Cmd[i]; + on_revers(); + on_blinking(); + cursor(i + 3, 50); + printf("%2d", i); + off_blinking(); + off_revers(); + (*c->cmd_func)(); + if (!i) + { + cls(1, 1, 25, 80); + cursor(1, 1); + exit(0); + } +} + +new_datum() +{ + extern long datum; + extern long time(); + + time(&datum); +} + +input(line, buf) +int line; +char *buf; +{ + register int len; + register int c; + register char *p; + + cursor(line, 1); + on_revers(); + on_blinking(); + putchar(' '); + cursor(line, 11); + putchar(' '); + off_blinking(); + off_revers(); + cls(line, 13, line, 47); + cursor(line, 13); + on_cursor(); + fflush(stdout); + p = buf; + len = 36; + while (--len) + { + if ((c = getchar()) <= 0 || c == '\n') + break; + *p++ = c; + } + *p = 0; + if (c > 0 && c != '\n') + { + cls(24, 1, 24, 80); + cursor(24, 1); + while ((c = getchar()) > 0 && c != '\n') + continue; + cls(24, 1, 24, 80); + } + off_cursor(); + cursor(line, 1); + on_revers(); + putchar(' '); + cursor(line, 11); + putchar(' '); + off_revers(); + return (p - buf); +} + +error(msg) +register char *msg; +{ + register int i; + extern short Batch; + + on_revers(); + on_blinking(); + if (!Batch) + { + cursor(25, 1); + for (i = 1; i <= 79; i++) + putchar(' '); + cursor(25, 15); + } + printf("%s", msg); + if (Batch) + putchar('\n'); + off_blinking(); + off_revers(); + fflush(stdout); +} + +struct byte +{ + char byte0; + char byte1; + char byte2; + char byte3; +}; + +hash_konto(konto) +register struct byte *konto; +{ + char b0; + char b1; + + b0 = konto->byte0; + b1 = konto->byte1; + konto->byte0 = konto->byte3; + konto->byte1 = konto->byte2; + konto->byte2 = b1; + konto->byte3 = b0; +}