summaryrefslogtreecommitdiff
path: root/dialog
diff options
context:
space:
mode:
Diffstat (limited to 'dialog')
-rw-r--r--dialog/ls-DIALOG 1548
-rw-r--r--dialog/ls-DIALOG 2844
-rw-r--r--dialog/ls-DIALOG 3416
-rw-r--r--dialog/ls-DIALOG 4741
-rw-r--r--dialog/ls-DIALOG 51412
-rw-r--r--dialog/ls-DIALOG 61186
-rw-r--r--dialog/ls-DIALOG 7460
-rw-r--r--dialog/ls-DIALOG MENUKARTEN MANAGER66
-rw-r--r--dialog/ls-DIALOG MM-gen50
-rw-r--r--dialog/ls-DIALOG decompress153
-rw-r--r--dialog/ls-DIALOG-gen130
-rw-r--r--dialog/ls-MENUKARTE:Archivbin40960 -> 0 bytes
12 files changed, 0 insertions, 6006 deletions
diff --git a/dialog/ls-DIALOG 1 b/dialog/ls-DIALOG 1
deleted file mode 100644
index b4a2408..0000000
--- a/dialog/ls-DIALOG 1
+++ /dev/null
@@ -1,548 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG 1 **
- ** **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-PACKET ls dialog 1 DEFINES
- ecke oben links, balken oben,
- ecke oben rechts, balken rechts,
- ecke unten links, balken links,
- ecke unten rechts, balken unten,
- waagerecht, senkrecht, kreuz,
- cursor on, cursor off,
- clear buffer, clear buffer and count,
- center, invers, page, page up,
- out frame, out menuframe, erase frame,
- std graphic char, ft20 graphic char,
- ibm graphic char, AREA, :=, fill,
- areax, areay, areaxsize, areaysize,
- cursor, get cursor, out, out invers,
-
- out with beam, out invers with beam,
- erase, erase invers, erase with beam:
-TYPE AREA = STRUCT (INT x, y, xsize, ysize);
-LET blank = " ",
- mark ein = ""15"",
- mark aus = ""14"",
- cleol = ""5"";
-TEXT CONST fehlermeldung :: "Unzulässige Größen!";
-TEXT VAR eol := "+", eor := "+", eul := "+", eur := "+",
- bo := "+", br := "+", bl := "+", bu := "+",
- waa := "-", sen := "|", kr := "+",
- cursor sichtbar := "", cursor unsichtbar := "";
-
-TEXT PROC ecke oben links : eol END PROC ecke oben links ;
-TEXT PROC ecke oben rechts: eor END PROC ecke oben rechts ;
-TEXT PROC ecke unten links : eul END PROC ecke unten links ;
-TEXT PROC ecke unten rechts: eur END PROC ecke unten rechts ;
-TEXT PROC balken oben : bo END PROC balken oben ;
-TEXT PROC balken links : bl END PROC balken links ;
-TEXT PROC balken rechts : br END PROC balken rechts ;
-TEXT PROC balken unten : bu END PROC balken unten ;
-
-TEXT PROC waagerecht : waa END PROC waagerecht ;
-TEXT PROC senkrecht : sen END PROC senkrecht ;
-TEXT PROC kreuz : kr END PROC kreuz ;
-PROC ecke oben links (TEXT CONST t): eol := t END PROC ecke oben links ;
-PROC ecke oben rechts (TEXT CONST t): eor := t END PROC ecke oben rechts ;
-PROC ecke unten links (TEXT CONST t): eul := t END PROC ecke unten links ;
-PROC ecke unten rechts (TEXT CONST t): eur := t END PROC ecke unten rechts ;
-
-PROC balken oben (TEXT CONST t): bo := t END PROC balken oben ;
-PROC balken links (TEXT CONST t): bl := t END PROC balken links ;
-PROC balken rechts (TEXT CONST t): br := t END PROC balken rechts ;
-PROC balken unten (TEXT CONST t): bu := t END PROC balken unten ;
-PROC waagerecht (TEXT CONST t): waa := t END PROC waagerecht ;
-PROC senkrecht (TEXT CONST t): sen := t END PROC senkrecht ;
-PROC kreuz (TEXT CONST t): kr := t END PROC kreuz ;
-
-PROC std graphic char:
- ecke oben links ("+"); ecke oben rechts ("+");
- ecke unten links ("+"); ecke unten rechts ("+");
- balken oben ("+"); balken rechts ("+");
- balken links ("+"); balken unten ("+");
- waagerecht ("-"); senkrecht ("|");
- kreuz ("+");
- cursor sichtbar := ""; cursor unsichtbar := ""
-END PROC std graphic char;
-PROC ft20 graphic char:
- ecke oben links (""27"R�"27"S"); ecke oben rechts (""27"RD"27"S");
- ecke unten links (""27"RH"27"S"); ecke unten rechts (""27"RL"27"S");
-
- balken oben (""27"RP"27"S"); balken rechts (""27"RT"27"S");
- balken links (""27"RX"27"S"); balken unten (""27"R\"27"S");
- waagerecht (""27"R`"27"S"); senkrecht (""27"Rd"27"S");
- kreuz (""27"Rh"27"S");
- cursor sichtbar := ""27"-1" ; cursor unsichtbar := ""27"-0" ;
- ft20 statuszeilen aus
-END PROC ft20 graphic char;
-PROC ft 20 statuszeilen aus: out (""27".A") END PROC ft 20 statuszeilen aus;
-PROC ft 20 statuszeilen an : out (""27".�") END PROC ft 20 statuszeilen an ;
-
-PROC ibm graphic char:
- ecke oben links (""201""); ecke oben rechts (""187"");
- ecke unten links (""200""); ecke unten rechts (""188"");
- balken oben (""203""); balken rechts (""185"");
- balken links (""204""); balken unten (""202"");
- waagerecht (""205""); senkrecht (""186"");
- kreuz (""206"");
- cursor sichtbar := "" ; cursor unsichtbar := ""
-END PROC ibm graphic char;
-PROC cursor on : out (cursor sichtbar ) END PROC cursor on ;
-
-PROC cursor off : out (cursor unsichtbar) END PROC cursor off;
-PROC cursor on (TEXT CONST t): cursor sichtbar := t END PROC cursor on ;
-PROC cursor off (TEXT CONST t): cursor unsichtbar := t END PROC cursor off;
-PROC clear buffer:
- REP UNTIL incharety = "" PER
-END PROC clear buffer;
-INT PROC clear buffer and count (TEXT CONST zeichen):
- INT VAR zaehler :: 0;
- TEXT VAR zeichenkette :: "", ch;
- IF zeichen = "" THEN clear buffer; LEAVE clear buffer and count WITH 0 FI;
-
- ermittle die zeichenkette;
- untersuche auf vorhandene zeichen;
- zaehler.
- ermittle die zeichenkette:
- REP
- ch := incharety (1);
- zeichenkette CAT ch
- UNTIL ch = "" PER.
- untersuche auf vorhandene zeichen:
- INT VAR i;
- FOR i FROM 1 UPTO length (zeichenkette) REP
- IF pos (subtext (zeichenkette, i), zeichen) = 1
- THEN zaehler INCR 1
- FI
- PER.
-END PROC clear buffer and count;
-TEXT PROC center (INT CONST xsize, TEXT CONST t):
- TEXT VAR zeile :: compress (t);
-
- zeile := ((xsize - length (zeile)) DIV 2) * blank + zeile;
- zeile CAT (xsize - length (zeile)) * blank;
- zeile
-END PROC center;
-TEXT PROC center (TEXT CONST t):
- center (79, t)
-END PROC center;
-TEXT PROC invers (TEXT CONST t):
- TEXT VAR neu :: mark ein; neu CAT t; neu CAT " "; neu CAT mark aus;
- neu
-END PROC invers;
-PROC page (INT CONST x, y, xsize, ysize):
- INT VAR zeiger;
- IF x + xsize = 80
- THEN in einem streich
- ELSE putze vorsichtig
- FI;
- cursor (x, y).
-
- in einem streich:
- FOR zeiger FROM y UPTO y + ysize - 1 REP
- cursor (x, zeiger); out (cleol)
- PER.
- putze vorsichtig:
- FOR zeiger FROM y UPTO y + ysize - 1 REP
- cursor (x, zeiger); xsize TIMESOUT blank
- PER.
-END PROC page;
-PROC page (AREA CONST a):
- page (a.x, a.y, a.xsize, a.ysize)
-END PROC page;
-PROC page up (INT CONST x, y, xsize, ysize):
- INT VAR zeiger;
- IF x + xsize = 80
- THEN in einem streich
- ELSE putze vorsichtig
-
- FI.
- in einem streich:
- FOR zeiger FROM y + ysize - 1 DOWNTO y REP
- cursor (x, zeiger); out (cleol)
- PER.
- putze vorsichtig:
- FOR zeiger FROM y + ysize - 1 DOWNTO y REP
- cursor (x, zeiger); xsize TIMESOUT blank
- PER.
-END PROC page up;
-PROC page up (AREA CONST a):
- page up (a.x, a.y, a.xsize, a.ysize)
-END PROC page up;
-PROC out frame (INT CONST x, y, xsize, ysize):
- INT VAR zeiger;
- IF x < 1 COR y < 1 COR xsize < 8 COR ysize < 3 COR
- x + xsize > 80 COR y + ysize > 25
-
- THEN LEAVE out frame
- FI;
- male oben;
- male seiten;
- male unten.
- male oben:
- cursor (x, y);
- out (ecke oben links);
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke oben rechts).
- male seiten:
- FOR zeiger FROM 1 UPTO ysize - 2 REP
- cursor (x, y + zeiger); out (senkrecht);
- cursor (x + xsize - 1, y + zeiger); out (senkrecht)
- PER.
- male unten:
- cursor (x, y + ysize - 1);
- out (ecke unten links);
- (xsize - 2) TIMESOUT waagerecht;
-
- out (ecke unten rechts)
-END PROC out frame;
-PROC out frame (AREA CONST a):
- IF a.x - 1 < 1 OR a.y - 1 < 1
- OR a.xsize + 2 > 79 OR a.ysize + 2 > 24
- OR a.x + a.xsize + 1 > 80
- OR a.y + a.ysize + 1 > 25
- THEN LEAVE out frame
- FI;
- out frame (a.x - 1, a.y - 1, a.xsize + 2, a.ysize + 2)
-END PROC out frame;
-PROC out menuframe (INT CONST x, y, xsize, ysize):
- INT VAR i;
- untersuche angaben;
- schreibe rahmen.
- untersuche angaben:
- IF x < 0 COR y < 0 COR x + xsize > 81 COR y + ysize > 26
-
- THEN LEAVE out menuframe
- FI.
- schreibe rahmen:
- IF x = 0 COR y = 0 COR xsize = 81 COR ysize = 26
- THEN zeichne reduzierten rahmen
- ELSE zeichne vollen rahmen
- FI.
- zeichne reduzierten rahmen:
- zeichne oberlinie;
- zeichne unterlinie.
- zeichne oberlinie:
- cursor (1, 2);
- 79 TIMESOUT waagerecht.
- zeichne unterlinie:
- cursor (1, 23);
- 79 TIMESOUT waagerecht.
- zeichne vollen rahmen:
- schreibe kopf; schreibe rumpf; schreibe fuss;
-
- schreibe kopfleiste; schreibe fussleiste.
- schreibe kopf:
- cursor (x, y);
- out (ecke oben links);
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke oben rechts).
- schreibe rumpf:
- FOR i FROM y + 1 UPTO y + ysize - 2 REP
- cursor (x, i); out (senkrecht);
- cursor (x + xsize - 1, i); out (senkrecht)
- PER.
- schreibe fuss:
- cursor (x, y + ysize - 1);
- out (ecke unten links);
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke unten rechts).
-
- schreibe kopfleiste:
- cursor (x, y + 2 ); schreibe balkenlinie.
- schreibe fussleiste:
- cursor (x, y + ysize - 3); schreibe balkenlinie.
- schreibe balkenlinie:
- out (balken links); (xsize - 2) TIMESOUT waagerecht; out (balken rechts).
-END PROC out menuframe;
-PROC out menuframe (AREA CONST a):
- out menuframe (a.x - 1, a.y - 1, a.xsize + 2, a.ysize + 2)
-END PROC out menuframe;
-PROC erase frame (INT CONST x, y, xsize, ysize):
- INT VAR zeiger;
- loesche oben; loesche seiten; loesche unten.
-
- loesche oben:
- cursor (x, y); xsize TIMESOUT blank.
- loesche seiten:
- FOR zeiger FROM 1 UPTO ysize - 2 REP
- cursor (x, y + zeiger); out (blank);
- cursor (x + xsize - 1, y + zeiger); out (blank)
- PER.
- loesche unten:
- cursor (x, y + ysize - 1); xsize TIMESOUT blank.
-END PROC erase frame;
-OP := (AREA VAR ziel, AREA CONST quelle):
- CONCR (ziel) := CONCR (quelle)
-END OP :=;
-PROC fill (AREA VAR ziel, INT CONST a, b, c, d):
- IF a < 1 COR b < 1 COR a > 79 COR b > 24 COR c < 8 COR d < 3
-
- COR c > 79 COR d > 24 COR a + c > 80 COR b + d > 25
- THEN errorstop (fehlermeldung)
- FI;
- ziel.x := a; ziel.y := b; ziel.xsize := c; ziel.ysize := d
-END PROC fill;
-INT PROC areax (AREA CONST a): a.x END PROC areax;
-INT PROC areay (AREA CONST a): a.y END PROC areay;
-INT PROC areaxsize (AREA CONST a): a.xsize END PROC areaxsize;
-INT PROC areaysize (AREA CONST a): a.ysize END PROC areaysize;
-PROC out (TEXT CONST t, INT CONST breite):
- outtext (t, 1, breite)
-
-END PROC out;
-PROC erase (INT CONST breite):
- breite TIMESOUT blank
-END PROC erase;
-PROC cursor (AREA CONST a, INT CONST spa, zei):
- cursor (a.x + spa - 1, a.y + zei - 1)
-END PROC cursor;
-PROC get cursor (AREA CONST a, INT VAR spalte, zeile):
- INT VAR x, y;
- get cursor (x, y);
- spalte := x - a.x + 1; zeile := y - a.y + 1
-END PROC get cursor;
-PROC out (AREA CONST a, INT CONST spa, zei, TEXT CONST t):
- ueberpruefe cursorangaben; positioniere cursor;
- IF text ist zu lang
- THEN verkuerzte ausgabe
-
- ELSE out (t)
- FI.
- ueberpruefe cursorangaben:
- IF spa > xsize COR zei > a.ysize COR spa < 1 COR zei < 1
- THEN LEAVE out
- FI.
- positioniere cursor:
- cursor (a.x + spa - 1, a.y + zei - 1).
- text ist zu lang:
- length (t) > a.xsize - spa + 1.
- verkuerzte ausgabe:
- outsubtext (t, 1, a.xsize - spa + 1)
-END PROC out;
-PROC out (AREA CONST a, INT CONST spa, zei, TEXT CONST t, INT CONST laenge):
- ueberpruefe cursorangaben; positioniere cursor;
- IF laenge ist zu gross
-
- THEN verkuerzte ausgabe
- ELSE outtext (t, 1, laenge)
- FI.
- ueberpruefe cursorangaben:
- IF spa > a.xsize COR zei > a.ysize COR spa < 1 COR zei < 1
- THEN LEAVE out
- FI.
- positioniere cursor:
- cursor (a.x + spa - 1, a.y + zei - 1).
- laenge ist zu gross:
- laenge > a.xsize - spa + 1.
- verkuerzte ausgabe:
- outtext (t, 1, a.xsize - spa + 1)
-END PROC out;
-PROC erase (AREA CONST a, INT CONST spa, zei, INT CONST laenge):
- ueberpruefe cursorangaben; positioniere cursor;
-
- IF laenge ist zu gross
- THEN verkuerzte ausgabe
- ELSE erase (laenge)
- FI.
- ueberpruefe cursorangaben:
- IF spa > a.xsize COR zei > a.ysize COR spa < 1 COR zei < 1
- THEN LEAVE erase
- FI.
- positioniere cursor:
- cursor (a.x + spa - 1, a.y + zei - 1).
- laenge ist zu gross:
- laenge > a.xsize - spa + 1.
- verkuerzte ausgabe:
- erase (a.xsize - spa + 1)
-END PROC erase;
-PROC out invers (AREA CONST a, INT CONST spa, zei, TEXT CONST t):
- ueberpruefe cursorangaben; positioniere cursor;
-
- IF text ist zu lang
- THEN verkuerzte ausgabe
- ELSE out (mark ein); out (t); out (blank); out (mark aus)
- FI.
- ueberpruefe cursorangaben:
- IF spa > (xsize - 4) COR zei > ysize COR spa < 2 COR zei < 1
- THEN LEAVE out invers
- FI.
- positioniere cursor:
- cursor (a.x + spa - 2, a.y + zei - 1).
- text ist zu lang:
- length (t) > a.xsize - spa - 1.
- verkuerzte ausgabe:
- out (mark ein); outsubtext (t, 1, a.xsize - spa - 1);
- out (blank); out (mark aus)
-END PROC out invers;
-
-PROC out invers (AREA CONST a, INT CONST spa, zei,
- TEXT CONST t, INT CONST laenge):
- ueberpruefe cursorangaben; positioniere cursor;
- IF laenge ist zu gross
- THEN verkuerzte ausgabe
- ELSE out (mark ein); outtext (t, 1, laenge); out (blank); out (mark aus)
- FI.
- ueberpruefe cursorangaben:
- IF spa > (a.xsize - 4) COR zei > a.ysize COR spa < 2 COR zei < 1
- THEN LEAVE out invers
- FI.
- positioniere cursor:
- cursor (a.x + spa - 2, a.y + zei - 1).
-
- laenge ist zu gross:
- laenge > a.xsize - spa - 1.
- verkuerzte ausgabe:
- out (mark ein); outsubtext (t, 1, a.xsize - spa - 1);
- out (blank); out (mark aus)
-END PROC out invers;
-PROC erase invers (AREA CONST a, INT CONST spa, zei, INT CONST laenge):
- ueberpruefe cursorangaben; positioniere cursor;
- IF laenge ist zu gross
- THEN verkuerzte ausgabe
- ELSE erase (laenge + 3)
- FI.
- ueberpruefe cursorangaben:
- IF spa > (a.xsize - 4) COR zei > a.ysize COR spa < 2 COR zei < 1
-
- THEN LEAVE erase invers
- FI.
- positioniere cursor:
- cursor (a.x + spa - 2, a.y + zei - 1).
- laenge ist zu gross:
- laenge > a.xsize - spa - 1.
- verkuerzte ausgabe:
- erase ( a.xsize - spa + 2).
-END PROC erase invers;
-PROC out with beam (AREA CONST a, INT CONST spa, zei, TEXT CONST t):
- ueberpruefe cursorangaben; positioniere cursor;
- IF text ist zu lang
- THEN verkuerzte ausgabe
- ELSE out (senkrecht); out (blank); out (blank);
- out (t);
- out (blank); out (blank); out (senkrecht)
-
- FI.
- ueberpruefe cursorangaben:
- IF spa > a.xsize - 7 COR zei > a.ysize COR spa < 4 COR zei < 1
- THEN LEAVE out with beam
- FI.
- positioniere cursor:
- cursor (a.x + spa - 4, a.y + zei - 1).
- text ist zu lang:
- length (t) > a.xsize - spa - 2.
- verkuerzte ausgabe:
- out (senkrecht); out (blank); out (blank);
- outsubtext (t, 1, a.xsize - spa - 2);
- out (blank); out (blank); out (senkrecht)
-END PROC out with beam;
-PROC out with beam (AREA CONST a, INT CONST spa, zei,
-
- TEXT CONST t, INT CONST laenge):
- ueberpruefe cursorangaben; positioniere cursor;
- IF laenge ist zu gross
- THEN verkuerzte ausgabe
- ELSE out (senkrecht); out (blank); out (blank);
- outtext (t, 1,laenge);
- out (blank); out (blank); out (senkrecht)
- FI.
- ueberpruefe cursorangaben:
- IF spa > a.xsize - 7 COR zei > a.ysize COR spa < 4 COR zei < 1
- THEN LEAVE out with beam
- FI.
- positioniere cursor:
- cursor (a.x + spa - 4, a.y + zei - 1).
-
- laenge ist zu gross:
- laenge > a.xsize - spa - 2.
- verkuerzte ausgabe:
- out (senkrecht); out (blank); out (blank);
- outsubtext (t, 1, a.xsize - spa - 2);
- out (blank); out (blank); out (senkrecht)
-END PROC out with beam;
-PROC erase with beam (AREA CONST a, INT CONST spa, zei, INT CONST laenge):
- ueberpruefe cursorangaben; positioniere cursor;
- IF laenge ist zu gross
- THEN verkuerzte ausgabe
- ELSE erase (laenge + 6)
- FI.
- ueberpruefe cursorangaben:
- IF spa > a.xsize - 7 COR zei > a.ysize COR spa < 4 COR zei < 1
-
- THEN LEAVE erase with beam
- FI.
- positioniere cursor:
- cursor (a.x + spa - 4, a.y + zei - 1).
- laenge ist zu gross:
- laenge > a.xsize - spa - 2.
- verkuerzte ausgabe:
- erase (a.xsize - spa + 4).
-END PROC erase with beam;
-PROC out invers with beam (AREA CONST a, INT CONST spa, zei, TEXT CONST t):
- ueberpruefe cursorangaben; positioniere cursor;
- IF text ist zu lang
- THEN verkuerzte ausgabe
- ELSE out (senkrecht); out (blank); out (mark ein);
- out (t);
-
- out (blank); out (mark aus); out (senkrecht)
- FI.
- ueberpruefe cursorangaben:
- IF spa > a.xsize - 7 COR zei > a.ysize COR spa < 4 COR zei < 1
- THEN LEAVE out invers with beam
- FI.
- positioniere cursor:
- cursor (a.x + spa - 4, a.y + zei - 1).
- text ist zu lang:
- length (t) > a.xsize - spa - 2.
- verkuerzte ausgabe:
- out (senkrecht); out (blank); out (mark ein);
- outsubtext (t, 1, a.xsize - spa - 2);
- out (blank); out (mark aus); out (senkrecht)
-
-END PROC out invers with beam;
-PROC out invers with beam (AREA CONST a, INT CONST spa, zei,
- TEXT CONST t, INT CONST laenge):
- ueberpruefe cursorangaben; positioniere cursor;
- IF laenge ist zu gross
- THEN verkuerzte ausgabe
- ELSE out (senkrecht); out (blank); out (mark ein);
- outtext (t, 1, laenge);
- out (blank); out (mark aus); out (senkrecht)
- FI.
- ueberpruefe cursorangaben:
- IF spa > a.xsize - 7 COR zei > a.ysize COR spa < 4 COR zei < 1
-
- THEN LEAVE out invers with beam
- FI.
- positioniere cursor:
- cursor (a.x + spa - 4, a.y + zei - 1).
- laenge ist zu gross:
- laenge > a.xsize - spa - 2.
- verkuerzte ausgabe:
- out (senkrecht); out (blank); out (mark ein);
- outsubtext (t, 1, a.xsize - spa - 2);
- out (blank); out (mark aus); out (senkrecht)
-END PROC out invers with beam;
-END PACKET ls dialog 1;
-
-
diff --git a/dialog/ls-DIALOG 2 b/dialog/ls-DIALOG 2
deleted file mode 100644
index 7fb5d36..0000000
--- a/dialog/ls-DIALOG 2
+++ /dev/null
@@ -1,844 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG 2 **
- ** **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-PACKET ls dialog 2 DEFINES
- some,
- one,
- infix namen,
- ohne praefix,
- not empty:
-LET maxentries = 200;
-LET zeichenstring = ""1""27""3""10""13""12"xo?",
- oben unten return rubout kreuz kringel = ""3""10""13""12"xo",
- q eins neun h = "q19h";
-LET zurueck = ""8"",
- piep = ""7"";
-LET hop = 1,
- esc = 2,
- oben = 3,
- unten = 4,
- return = 5,
- rubout = 6,
-
- kreuz = 7,
- kringel = 8,
- frage = 9;
-LET punkt = ".",
- gleich = "=",
- blank = " ";
-INT VAR x,
- y,
- xsize,
- ysize,
- maxeintraege,
- anzahl,
- erste auswahlzeile,
- virtueller cursor,
- reeller cursor;
-TEXT VAR kennzeile 1,
- kennzeile 2,
- registrierkette :: "";
-BOOL VAR abbruch,
- auswahlende;
-BOUND ROW max entries TEXT VAR eintrag;
-ROW 2 TEXT CONST fehlermeldung :: ROW 2 TEXT : (
-
- "Unzulässige Cursorwerte bei der Auswahl",
- "Fenster für Auswahl zu klein (x < 56 / y < 15)");
-ROW 24 TEXT CONST hinweis :: ROW 24 TEXT : (
- " Bitte warten... Ich sortiere und räume auf!",
- " Info: <?> Fertig: <ESC><q> Abbrechen: <ESC><h>",
- " Zum Weitermachen bitte irgendeine Taste tippen!",
- "Weitere Dateien!",
- "INFORMATIONEN: Auswahl mehrerer Dateien",
- "INFORMATIONEN: Auswahl einer Datei",
- " "15"Positionierungen: "14"",
- " hoch : zum vorausgehenden Namen",
-
- " runter : zum folgenden Namen",
- " HOP hoch : auf den ersten Namen der Seite", (***********)
- " HOP runter : auf den letzten Namen der Seite", (* bitte *)
- " ESC 1 : auf den ersten Namen der Liste", (* diese *)
- " ESC 9 : auf den letzten Namen der Liste", (* Länge *)
- " "15"Auswahl treffen: "14"", (* nicht *)
- " RETURN / x : diesen Namen ankreuzen ", (* über- *)
-
- " RUBOUT / o : Kreuz vor dem Namen loeschen", (* schrei-*)
- " HOP RETURN / HOP x : alle folgende Namen ankreuzen", (* ten! *)
- " HOP RUBOUT / HOP o : alle folgende Kreuze loeschen", (***********)
- " "15"Auswahl verlassen: "14"",
- " ESC q : Auswahl verlassen",
- " ESC h : Auswahl abbrechen",
- " Auswahl m e h r e r e r Dateien durch Ankreuzen",
- " Auswahl e i n e r Datei durch Ankreuzen",
- " Bitte warten... Ich breche die Auswahl ab!"
-
- );
-THESAURUS PROC auswahl (THESAURUS CONST t,
- BOOL CONST mehrere moeglich,
- TEXT CONST t1, t2):
- werte initialisieren;
- namen besorgen;
- bildschirm aufbauen;
- auswaehlen lassen;
- abgang vorbereiten.
- werte initialisieren:
- THESAURUS VAR ausgabe :: empty thesaurus;
- DATASPACE VAR ds := nilspace;
- eintrag := ds;
- kennzeile 1 := t1;
- kennzeile 2 := t2;
- abbruch := FALSE;
-
- erste auswahlzeile := y + 7;
- anzahl := 0;
- maxeintraege := ysize - 11;
- virtueller cursor := 1;
- reeller cursor := 1.
- namen besorgen:
- fische die namen aus dem thesaurus;
- IF kein eintrag vorhanden
- THEN LEAVE auswahl WITH ausgabe
- FI.
- bildschirm aufbauen:
- schreibe kopfzeile;
- gib hinweis aus (kennzeile 1, kennzeile 2);
- gib erklaerungszeile aus (mehrere moeglich);
- baue bildschirm auf (1);
- footnote (x, y, xsize, ysize, hinweis [2]);
-
- schreibe fusszeile;
- reellen cursor setzen .
- schreibe kopfzeile:
- cursor (x, y);
- out(ecke oben links);
- (xsize - 2) TIMESOUT waagerecht;
- out(ecke oben rechts).
- schreibe fusszeile:
- cursor (x, y + ysize - 1);
- out (ecke unten links);
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke unten rechts).
- auswaehlen lassen:
- kreuze an (mehrere moeglich).
- abgang vorbereiten:
- IF abbruch
- THEN change footnote (x, y, xsize, ysize, hinweis [24])
-
- ELSE change footnote (x, y, xsize, ysize, hinweis [ 1])
- FI;
- cursor (x + 1, y + ysize - 1);
- ausgabe erzeugen;
- forget (ds);
- ausgabe.
- fische die namen aus dem thesaurus:
- INT VAR zeiger;
- FOR zeiger FROM 1 UPTO highest entry (t) REP
- IF name (t, zeiger) <> ""
- THEN anzahl INCR 1;
- eintrag [anzahl] := name (t, zeiger)
- FI
- PER.
- kein eintrag vorhanden:
- anzahl = 0.
- ausgabe erzeugen:
- TEXT VAR nummer;
- WHILE registrierkette <> "" REP
-
- nummer := subtext (registrierkette, 1, 3);
- registrierkette := subtext (registrierkette, 5);
- insert (ausgabe, eintrag [ int (nummer)])
- PER.
-END PROC auswahl;
-PROC reellen cursor setzen:
- cursor (x + 1, erste auswahlzeile + reeller cursor - 1);
- out (marke (virtueller cursor, TRUE) + (8 * zurueck))
-END PROC reellen cursor setzen;
-PROC baue bildschirm auf (INT CONST anfang):
- gib kopfzeile aus;
- gib namenstabelle aus;
- gib fusszeile aus;
- loesche ggf restbereich.
-
- gib kopfzeile aus:
- cursor (x, erste auswahlzeile - 1); out (senkrecht);
- IF reeller cursor = virtueller cursor
- THEN (xsize - 2) TIMESOUT punkt
- ELSE (xsize - length (hinweis [4]) - 5) TIMESOUT punkt;
- out (invers (hinweis [4]))
- FI;
- out (senkrecht);
- line.
- gib namenstabelle aus:
- INT VAR zeiger, zaehler :: -1;
- FOR zeiger FROM anfang UPTO grenze REP
- zaehler INCR 1;
- cursor (x, erste auswahlzeile + zaehler);
- out (senkrecht); out (marke (zeiger, FALSE));
-
- outtext (subtext (eintrag [zeiger], 1, xsize - 10), 1, xsize - 10);
- out (senkrecht);
- PER.
- gib fusszeile aus:
- cursor (x, erste auswahlzeile + zaehler + 1);
- out (senkrecht);
- IF NOT ((virtueller cursor + maxeintraege - reeller cursor) < anzahl)
- THEN (xsize - 2) TIMESOUT punkt
- ELSE (xsize - length (hinweis [4]) - 5) TIMESOUT punkt;
- out (invers (hinweis [4]))
- FI;
- out (senkrecht).
- loesche ggf restbereich:
- IF zaehler + 1 < maxeintraege
-
- THEN loesche bildschirmrest
- FI.
- loesche bildschirmrest:
- FOR zeiger FROM restanfang UPTO restende REP
- cursor (x, zeiger); out (senkrecht);
- (xsize - 2) TIMESOUT blank;
- out (senkrecht)
- PER.
- restanfang:
- erste auswahlzeile + zaehler + 2.
- restende:
- erste auswahlzeile + maxeintraege.
- grenze:
- min (anzahl, anfang + max eintraege - 1).
-END PROC baue bildschirm auf;
-TEXT PROC marke (INT CONST zeiger, BOOL CONST mit cursor):
-
- INT VAR platz := nr (zeiger);
- IF platz = 0
- THEN leer
- ELSE mit zahl
- FI.
- mit zahl:
- IF mit cursor
- THEN "==>" + (3 - length (text (platz))) * blank + text (platz) + "x "
- ELSE " " + (3 - length (text (platz))) * blank + text (platz) + "x "
- FI.
- leer:
- IF mit cursor
- THEN "==> o "
- ELSE " o "
- FI.
-END PROC marke;
-INT PROC nr (INT CONST zeiger):
- IF pos (registrierkette, textstring (zeiger)) = 0
- THEN 0
- ELSE (pos (registrierkette, textstring (zeiger)) DIV 4) + 1
-
- FI
-END PROC nr;
-TEXT PROC textstring (INT CONST nr):
- text (nr, 3) + "!"
-END PROC textstring;
-PROC info (BOOL CONST mehrere):
- notiere hinweisueberschrift;
- notiere positionierhinweise;
- IF noch platz vorhanden
- THEN notiere auswahlmoeglichkeiten auf alter seite
- ELSE wechsle auf naechste seite;
- notiere hinweisueberschrift;
- notiere auswahlmoeglichtkeiten auf neuer seite
- FI;
- stelle alten bildschirmzustand wieder her.
- notiere hinweisueberschrift:
-
- cursor (x + 1, y + 1);
- IF mehrere
- THEN out (center(xsize - 2, invers (hinweis [5])))
- ELSE out (center(xsize - 2, invers (hinweis [6])))
- FI;
- cursor (x + 1, y + 2); out ("", xsize - 2).
- notiere positionierhinweise:
- cursor (x + 1, y + 3); out (hinweis [ 7], xsize - 2);
- cursor (x + 1, y + 4); out (hinweis [ 8], xsize - 2);
- cursor (x + 1, y + 5); out (hinweis [ 9], xsize - 2);
- cursor (x + 1, y + 6); out (hinweis [10], xsize - 2);
- cursor (x + 1, y + 7); out (hinweis [11], xsize - 2);
-
- cursor (x + 1, y + 8); out (hinweis [12], xsize - 2);
- cursor (x + 1, y + 9); out (hinweis [13], xsize - 2).
- notiere auswahlmoeglichkeiten auf alter seite:
- cursor (x + 1, y + 10); out ("", xsize - 2);
- cursor (x + 1, y + 11); out (hinweis [14], xsize - 2);
- cursor (x + 1, y + 12); out (hinweis [15], xsize - 2);
- IF mehrere
- THEN gib alle auswahlmoeglichkeiten auf der alten seite an
- ELSE gib eine auswahlmoeglichkeit auf der alten seite an
- FI;
-
- notiere verlassmoeglichkeiten auf der alten seite;
- loesche die restlichen zeilen;
- change footnote (x, y, xsize, ysize, hinweis [3]);
- cursor in ruhestellung;
- clear buffer.
- gib alle auswahlmoeglichkeiten auf der alten seite an:
- cursor (x + 1, y + 13); out (hinweis [16], xsize - 2);
- cursor (x + 1, y + 14); out (hinweis [17], xsize - 2);
- cursor (x + 1, y + 15); out (hinweis [18], xsize - 2).
- gib eine auswahlmoeglichkeit auf der alten seite an:
- cursor (x + 1, y + 13); out ("", xsize - 2);
-
- cursor (x + 1, y + 14); out ("", xsize - 2);
- cursor (x + 1, y + 15); out ("", xsize - 2).
- notiere verlassmoeglichkeiten auf der alten seite:
- cursor (x + 1, y + 16); out ("", xsize - 2);
- cursor (x + 1, y + 17); out (hinweis [19], xsize - 2);
- cursor (x + 1, y + 18); out (hinweis [20], xsize - 2);
- cursor (x + 1, y + 19); out (hinweis [21], xsize - 2).
- loesche die restlichen zeilen:
- IF ysize = 24
- THEN cursor (x + 1, y + 20); out ("", xsize - 2)
- FI.
-
- wechsle auf naechste seite:
- loesche seitenrest;
- change footnote (x, y, xsize, ysize, hinweis [3]);
- cursor in ruhestellung;
- clear buffer;
- pause.
- loesche seitenrest:
- INT VAR zaehler;
- FOR zaehler FROM 10 UPTO ysize - 4 REP
- cursor (x + 1, y + zaehler); out ("", xsize - 2)
- PER.
- notiere auswahlmoeglichtkeiten auf neuer seite:
- cursor (x + 1, y + 3); out (hinweis [14], xsize - 2);
- cursor (x + 1, y + 4); out (hinweis [15], xsize - 2);
- IF mehrere
-
- THEN gib alle auswahlmoeglichkeiten auf der neuen seite an
- ELSE gib eine auswahlmoeglichkeit auf der neuen seite an
- FI;
- notiere verlassmoeglichkeiten auf der neuen seite.
- gib alle auswahlmoeglichkeiten auf der neuen seite an:
- cursor (x + 1, y + 5); out (hinweis [16], xsize - 2);
- cursor (x + 1, y + 6); out (hinweis [17], xsize - 2);
- cursor (x + 1, y + 7); out (hinweis [18], xsize - 2).
- gib eine auswahlmoeglichkeit auf der neuen seite an:
- cursor (x + 1, y + 5); out ("", xsize - 2);
-
- cursor (x + 1, y + 6); out ("", xsize - 2);
- cursor (x + 1, y + 7); out ("", xsize - 2).
- notiere verlassmoeglichkeiten auf der neuen seite:
- cursor (x + 1, y + 8); out ("", xsize - 2);
- cursor (x + 1, y + 9); out (hinweis [19], xsize - 2);
- cursor (x + 1, y + 10); out (hinweis [20], xsize - 2);
- cursor (x + 1, y + 11); out (hinweis [21], xsize - 2);
- cursor in ruhestellung.
- cursor in ruhestellung:
- cursor (x + 1, y + ysize - 2).
- stelle alten bildschirmzustand wieder her:
-
- clear buffer;
- pause;
- gib hinweis aus (kennzeile 1, kennzeile 2);
- gib erklaerungszeile aus (mehrere);
- virtueller cursor := 1;
- reeller cursor := 1;
- baue bildschirm auf (1);
- change footnote (x, y, xsize, ysize, hinweis [2]);
- reellen cursor setzen.
- noch platz vorhanden:
- (ysize - 4) > 18.
-END PROC info;
-PROC kreuze an (BOOL CONST mehrere):
- auswahlende := FALSE;
- REP
- zeichen lesen; zeichen interpretieren
- UNTIL auswahlende PER.
- zeichen lesen:
-
- TEXT VAR zeichen;
- getchar (zeichen).
- zeichen interpretieren:
- SELECT pos (zeichenstring, zeichen) OF
- CASE hop : hop kommando verarbeiten (mehrere)
- CASE esc : esc kommando verarbeiten
- CASE oben : nach oben
- CASE unten : nach unten
- CASE kreuz : ankreuzen; evtl aufhoeren
- CASE return : ankreuzen weiter; evtl aufhoeren
- CASE rubout : auskreuzen weiter
- CASE kringel : auskreuzen
- CASE frage : info (mehrere)
-
- OTHERWISE out (piep)
- END SELECT.
- evtl aufhoeren:
- IF NOT mehrere
- THEN LEAVE kreuze an
- FI.
-END PROC kreuze an;
-PROC hop kommando verarbeiten (BOOL CONST mehrere):
- zweites zeichen lesen;
- zeichen interpretieren.
- zweites zeichen lesen:
- TEXT VAR zweites zeichen;
- getchar(zweites zeichen).
- zeichen interpretieren:
- SELECT pos (oben unten return rubout kreuz kringel, zweites zeichen) OF
- CASE 1 : hop nach oben
- CASE 2 : hop nach unten
-
- CASE 3, 5 : IF mehrere THEN alle darunter ankreuzen FI
- CASE 4, 6 : IF mehrere THEN alle darunter loeschen FI
- OTHERWISE out (piep)
- END SELECT.
- alle darunter ankreuzen:
- INT VAR i;
- FOR i FROM virtueller cursor UPTO anzahl REP
- IF nr (i) = 0
- THEN ankreuzen
- FI
- PER;
- bild aktualisieren ;
- reellen cursor setzen .
- ankreuzen:
- registrierkette CAT textstring (i).
- alle darunter loeschen:
- INT VAR j, position;
- FOR j FROM virtueller cursor UPTO anzahl REP
-
- position := nr (j);
- IF position > 0
- THEN rausschmeissen;
- FI
- PER;
- bild aktualisieren;
- reellen cursor setzen.
- rausschmeissen:
- registrierkette := subtext (registrierkette, 1, (4 * position) - 4) +
- subtext (registrierkette, (4 * position) + 1).
- hop nach oben:
- IF ganz oben
- THEN out (piep)
- ELIF oben auf der seite
- THEN raufblaettern
- ELSE top of page
- FI.
- ganz oben:
- virtueller cursor = 1.
-
- oben auf der seite:
- reeller cursor = 1.
- raufblaettern:
- virtueller cursor DECR max eintraege;
- virtueller cursor := max (virtueller cursor, 1);
- baue bildschirm auf (virtueller cursor);
- reellen cursor setzen.
- top of page:
- loesche marke;
- virtueller cursor DECR (reeller cursor - 1);
- reeller cursor := 1;
- reellen cursor setzen.
- hop nach unten:
- IF ganz unten
- THEN out (piep)
- ELIF unten auf der seite
- THEN runterblaettern
-
- ELSE bottom of page
- FI.
- ganz unten:
- virtueller cursor = anzahl.
- unten auf der seite:
- reeller cursor > max eintraege - 1.
- runterblaettern:
- INT VAR alter virtueller cursor :: virtueller cursor;
- virtueller cursor INCR max eintraege;
- virtueller cursor := min (virtueller cursor, anzahl);
- reeller cursor := virtueller cursor - alter virtueller cursor;
- baue bildschirm auf (alter virtueller cursor + 1);
- reellen cursor setzen.
- bottom of page:
-
- loesche marke;
- alter virtueller cursor := virtueller cursor;
- virtueller cursor INCR (max eintraege - reeller cursor);
- virtueller cursor := min (anzahl, virtueller cursor);
- reeller cursor INCR (virtueller cursor - alter virtueller cursor);
- reellen cursor setzen.
-END PROC hop kommando verarbeiten;
-PROC esc kommando verarbeiten:
- TEXT VAR zweites zeichen;
- getchar (zweites zeichen);
- SELECT pos (q eins neun h, zweites zeichen) OF
- CASE 1 : auswahlende := TRUE
-
- CASE 2 : zeige anfang
- CASE 3 : zeige ende
- CASE 4 : abbruch := TRUE;
- auswahlende := TRUE;
- registrierkette := ""
- OTHERWISE out (piep)
- END SELECT.
- zeige anfang:
- IF virtueller cursor = 1
- THEN out (piep)
- ELIF virtueller cursor = reeller cursor
- THEN loesche marke;
- virtueller cursor := 1;
- reeller cursor := 1;
- reellen cursor setzen
- ELSE virtueller cursor := 1;
-
- reeller cursor := 1;
- baue bildschirm auf (1);
- reellen cursor setzen
- FI.
- zeige ende:
- IF virtueller cursor = anzahl
- THEN out (piep)
- ELIF ende auf bildschirm
- THEN loesche marke;
- reeller cursor INCR (anzahl - virtueller cursor);
- virtueller cursor := anzahl;
- reellen cursor setzen
- ELSE virtueller cursor := anzahl;
- reeller cursor := max eintraege;
-
- baue bildschirm auf (anzahl - (max eintraege - 1));
- reellen cursor setzen
- FI.
- ende auf bildschirm:
- (reeller cursor + anzahl - virtueller cursor) < max eintraege + 1.
-END PROC esc kommando verarbeiten;
-PROC ankreuzen:
- INT VAR platz :: nr (virtueller cursor);
- IF platz <> 0
- THEN out (piep);
- LEAVE ankreuzen
- FI;
- registrierkette CAT textstring (virtueller cursor);
- reellen cursor setzen
-END PROC ankreuzen;
-PROC ankreuzen weiter:
-
- INT VAR platz :: nr (virtueller cursor);
- IF platz <> 0
- THEN out (piep);
- LEAVE ankreuzen weiter
- FI;
- registrierkette CAT textstring (virtueller cursor);
- IF virtueller cursor < anzahl
- THEN nach unten
- FI;
- IF virtueller cursor = anzahl
- THEN reellen cursor setzen
- FI
-END PROC ankreuzen weiter;
-PROC auskreuzen weiter:
- INT VAR position :: nr (virtueller cursor);
- IF position = 0
- THEN out (piep);
- LEAVE auskreuzen weiter
- FI;
- rausschmeissen;
-
- IF virtueller cursor < anzahl
- THEN nach unten
- ELSE loesche marke
- FI;
- bild aktualisieren;
- reellen cursor setzen.
- rausschmeissen:
- registrierkette := subtext (registrierkette, 1, 4 * position - 4) +
- subtext (registrierkette, 4 * position + 1).
-END PROC auskreuzen weiter;
-PROC auskreuzen:
- INT VAR position :: nr (virtueller cursor);
- IF position = 0
- THEN out (piep);
- LEAVE auskreuzen
- FI;
- rausschmeissen;
- loesche marke;
-
- bild aktualisieren;
- reellen cursor setzen.
- rausschmeissen:
- registrierkette := subtext (registrierkette, 1, 4 * position - 4) +
- subtext (registrierkette, 4 * position + 1).
-END PROC auskreuzen;
-PROC bild aktualisieren:
- INT VAR ob, un, i, zaehler :: -1;
- ob := virtueller cursor - reeller cursor + 1;
- un := min (ob + max eintraege - 1, anzahl);
- FOR i FROM ob UPTO un REP
- zaehler INCR 1;
- cursor (x + 1, erste auswahlzeile + zaehler);
- out (marke (i,FALSE)) PER
-
-END PROC bild aktualisieren;
-PROC nach oben:
- IF noch nicht oben (*virtuell*)
- THEN gehe nach oben
- ELSE out (piep)
- FI.
- noch nicht oben:
- virtueller cursor > 1.
- gehe nach oben:
- IF reeller cursor = 1 THEN scroll down ELSE cursor up FI.
- scroll down:
- virtueller cursor DECR 1;
- baue bildschirm auf (virtueller cursor);
- reellen cursor setzen.
- cursor up:
- loesche marke;
- virtueller cursor DECR 1;
- reeller cursor DECR 1;
- reellen cursor setzen
-
-END PROC nach oben;
-PROC nach unten:
- IF noch nicht unten (*virtuell*)
- THEN gehe nach unten
- ELSE out (piep)
- FI.
- noch nicht unten:
- virtueller cursor < anzahl.
- gehe nach unten:
- IF reeller cursor > max eintraege - 1 THEN scroll up ELSE cursor down FI.
- scroll up:
- virtueller cursor INCR 1;
- baue bildschirm auf (virtueller cursor - (max eintraege - 1));
- reellen cursor setzen.
- cursor down:
- loesche marke;
- virtueller cursor INCR 1;
- reeller cursor INCR 1;
-
- reellen cursor setzen
-END PROC nach unten;
-PROC loesche marke:
- out (marke (virtueller cursor, FALSE))
-END PROC loesche marke;
-PROC footnote (INT CONST x, y, xsize, ysize, TEXT CONST text):
- cursor (x, y + ysize - 3);
- out (balken links); (xsize - 2) TIMESOUT waagerecht; out (balken rechts);
- change footnote (x, y, xsize, ysize, text)
-END PROC footnote;
-PROC change footnote (INT CONST x, y, xsize, ysize, TEXT CONST text):
- cursor (x, y + ysize - 2);
- out (senkrecht); outtext (text, 1, xsize - 2); out (senkrecht)
-
-END PROC change footnote;
-PROC gib hinweis aus (TEXT CONST t1, t2):
- cursor (x, y + 1); out (senkrecht);
- out (center (xsize - 2, invers (t1)));
- out (senkrecht);
- cursor (x, y + 2); out (senkrecht);
- out ("", xsize - 2);
- out (senkrecht);
- cursor (x, y + 3); out (senkrecht);
- out (center (xsize - 2, t2));
- out (senkrecht)
-END PROC gib hinweis aus;
-PROC gib erklaerungszeile aus (BOOL CONST mehrere):
-
- cursor (x, y + 4); out (senkrecht);
- out ((xsize - 2) * gleich);
- out (senkrecht);
- cursor (x, y + 5); out (senkrecht);
- IF mehrere
- THEN out (erklaerungszeile mehrere)
- ELSE out (erklaerungszeile eine)
- FI;
- out (senkrecht).
- erklaerungszeile mehrere:
- invers (text 1 + (rest1 * blank)).
- erklaerungszeile eine:
- invers (text 2 + (rest2 * blank)).
-
- text1:
- hinweis [22].
- text2:
- hinweis [23].
- rest1: (***************************)
- xsize - length (text1) - 5. (* durch 'invers' wird ein *)
- (* Blank angehängt und zu- *)
- rest2: (* sätzlich noch durch *)
- xsize - length (text2) - 5. (* 'relativcenter' - außer-*)
-END PROC gib erklaerungszeile aus; (* dem nimmt die Markierung*)
- (* selbst eine Position ein*)
-
- (***************************)
-THESAURUS PROC infix namen (THESAURUS CONST t, TEXT CONST infix):
- THESAURUS VAR tt :: empty thesaurus;
- INT VAR i;
- FOR i FROM 1 UPTO highest entry (t) REP
- TEXT VAR eintrag :: name (t,i);
- IF eintrag enthaelt infix
- THEN insert (tt, eintrag)
- FI
- PER;
- tt.
- eintrag enthaelt infix:
- pos (eintrag, infix) <> 0
-END PROC infix namen;
-THESAURUS PROC infix namen (THESAURUS CONST t, INT CONST dateityp):
-
- THESAURUS VAR tt :: empty thesaurus;
- INT VAR i;
- FOR i FROM 1 UPTO highest entry (t) REP
- TEXT VAR eintrag :: name (t,i);
- IF eintrag enthaelt infix
- THEN insert (tt, eintrag)
- FI
- PER;
- tt.
- eintrag enthaelt infix:
- type (old (eintrag)) = dateityp.
-END PROC infix namen;
-THESAURUS PROC infix namen (THESAURUS CONST t,
- TEXT CONST infix 1, INT CONST dateityp):
- THESAURUS VAR tt :: empty thesaurus;
- INT VAR i;
- FOR i FROM 1 UPTO highest entry (t) REP
-
- TEXT VAR eintrag :: name (t,i);
- IF eintrag enthaelt infix
- THEN insert (tt, eintrag)
- FI
- PER;
- tt.
- eintrag enthaelt infix:
- (pos (eintrag, infix 1) <> 0) AND (type (old (eintrag)) = dateityp).
-END PROC infix namen;
-THESAURUS PROC infix namen (THESAURUS CONST t,
- TEXT CONST infix 1, infix 2):
- THESAURUS VAR tt :: empty thesaurus;
- INT VAR i;
- FOR i FROM 1 UPTO highest entry (t) REP
- TEXT VAR eintrag :: name (t,i);
- IF eintrag enthaelt infix
-
- THEN insert (tt, eintrag)
- FI
- PER;
- tt.
- eintrag enthaelt infix:
- (pos (eintrag, infix 1) <> 0) OR (pos (eintrag, infix 2) <> 0)
-END PROC infix namen;
-THESAURUS PROC infix namen (TEXT CONST infix):
- infix namen (ALL myself, infix)
-END PROC infix namen;
-THESAURUS PROC infix namen (TEXT CONST infix 1, infix 2):
- infix namen (ALL myself, infix 1, infix 2)
-END PROC infix namen;
-THESAURUS PROC ohne praefix (THESAURUS CONST thesaurus, TEXT CONST praefix):
- THESAURUS VAR t :: empty thesaurus;
-
- INT VAR zaehler;
- FOR zaehler FROM 1 UPTO highest entry (thesaurus) REP
- IF name (thesaurus, zaehler) <> ""
- AND pos (name (thesaurus, zaehler), praefix) = 1
- THEN insert (t, subtext (name (thesaurus, zaehler),
- length (praefix) + 1))
- FI;
- PER;
- t
-END PROC ohne praefix;
-BOOL PROC not empty (THESAURUS CONST t):
- INT VAR i;
- FOR i FROM 1 UPTO highest entry (t) REP
- IF name (t, i) <> ""
- THEN LEAVE not empty WITH TRUE
-
- FI
- PER;
- FALSE
-END PROC not empty;
-PROC untersuche bildschirmmasszahlen (TEXT CONST t1, t2):
- IF unzulaessige cursorwerte
- THEN errorstop (fehlermeldung [1])
- ELIF fenster ist zu klein
- THEN errorstop (fehlermeldung [2])
- FI.
- unzulaessige cursorwerte:
- (x + xsize) > 80 COR (y + ysize) > 25 COR x < 1 COR y < 1
- COR xsize > 79 COR ysize > 24.
- fenster ist zu klein:
- (xsize) < 56 COR (ysize) < 15
- COR length (t1) > (xsize - 5) COR length (t2) > (xsize - 5).
-
-END PROC untersuche bildschirmmasszahlen;
-TEXT PROC ggf gekuerzter text (TEXT CONST text):
- IF length (text) > (xsize - 5)
- THEN subtext (text, 1, xsize - 7) + ".."
- ELSE text
- FI
-END PROC ggf gekuerzter text;
-THESAURUS PROC some (INT CONST spa, zei, breite, hoehe,
- THESAURUS CONST t,
- TEXT CONST t1, t2):
- TEXT VAR text 1, text 2;
- x := spa;
- y := zei;
- xsize := breite;
- ysize := hoehe;
- text 1 := ggf gekuerzter text (t1);
-
- text 2 := ggf gekuerzter text (t2);
- untersuche bildschirmmasszahlen (text 1, text 2);
- auswahl (t, TRUE, text 1, text 2)
-END PROC some;
-THESAURUS PROC some (INT CONST spa, zei,
- THESAURUS CONST t,
- TEXT CONST t1, t2):
- some (spa, zei, 79 - spa + 1, 24 - zei + 1, t, t1, t2)
-END PROC some;
-THESAURUS PROC some (THESAURUS CONST t,
- TEXT CONST t1, t2):
- some (1, 1, 79, 24, t, t1, t2)
-END PROC some;
-TEXT PROC one (INT CONST spa, zei, breite, hoehe,
-
- THESAURUS CONST t,
- TEXT CONST t1, t2):
- TEXT VAR text 1, text 2;
- x := spa;
- y := zei;
- xsize := breite;
- ysize := hoehe;
- text 1 := ggf gekuerzter text (t1);
- text 2 := ggf gekuerzter text (t2);
- untersuche bildschirmmasszahlen (text 1, text 2);
- name (auswahl (t, FALSE, text 1, text 2), 1)
-END PROC one;
-TEXT PROC one (INT CONST spa, zei,
- THESAURUS CONST t,
- TEXT CONST t1, t2):
- one (spa, zei, 79 - spa + 1, 24 - zei + 1, t, t1, t2)
-
-END PROC one;
-TEXT PROC one (THESAURUS CONST t, TEXT CONST t1, t2):
- one (1, 1, 79, 24, t, t1, t2)
-END PROC one;
-END PACKET ls dialog 2;
-
-
diff --git a/dialog/ls-DIALOG 3 b/dialog/ls-DIALOG 3
deleted file mode 100644
index 2460820..0000000
--- a/dialog/ls-DIALOG 3
+++ /dev/null
@@ -1,416 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG 3 **
- ** **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-PACKET ls dialog 3 DEFINES
- WINDOW, :=, window,
- show, page, erase,
- line, remaining lines,
- cursor, get cursor,
- out frame, out menuframe,
- out, put, putline, editget,
- get, getline, yes, no,
- edit, center, stop,
- area, areax, areay,
- areaxsize, areaysize:
-LET piep = ""7"",
- cr = ""13"";
-LET janeinkette = "jJyYnN",
- blank = " ",
- niltext = "";
-TYPE WINDOW = STRUCT (AREA fenster,
-
- INT cspalte, czeile, belegbare zeilen,
- BOOL fensterende erreicht);
-ROW 3 TEXT CONST aussage :: ROW 3 TEXT : (
- " 'Window' ungültig!",
- " (j/n) ?",
- " Zum Weitermachen bitte irgendeine Taste tippen!"
- );
-TEXT VAR number word, exit char;
-OP := (WINDOW VAR links, WINDOW CONST rechts):
- CONCR (links) := CONCR (rechts)
-END OP :=;
-WINDOW PROC window (INT CONST x, y, xsize, ysize):
- WINDOW VAR w;
- fill (w.fenster, x, y, xsize, ysize);
- IF fenster ungueltig (w)
-
- THEN errorstop (aussage [1])
- FI;
- initialize (w);
- w
-END PROC window;
-PROC initialize (WINDOW VAR w):
- w.czeile := 1;
- w.cspalte := 1;
- w.fensterende erreicht := FALSE;
- w.belegbare zeilen := areaysize (w.fenster)
-END PROC initialize;
-BOOL PROC fenster ungueltig (WINDOW CONST w):
- IF areax (w.fenster) < 1 COR areax (w.fenster) > 79
- COR areay (w.fenster) < 1 COR areay (w.fenster) > 24
- COR areaxsize (w.fenster) < 6 COR areaysize (w.fenster) < 3
-
- COR areax (w.fenster) + areaxsize (w.fenster) > 80
- COR areay (w.fenster) + areaysize (w.fenster) > 25
- THEN TRUE
- ELSE FALSE
- FI.
-END PROC fenster ungueltig;
-PROC show (WINDOW VAR w):
- zeige rahmen;
- fenster putzen.
- zeige rahmen:
- out frame (w.fenster).
- fenster putzen:
- page (w).
-END PROC show;
-PROC page (WINDOW VAR w):
- initialize (w);
- page (w, FALSE)
-END PROC page;
-PROC page (WINDOW CONST w, BOOL CONST mit rahmen ):
- IF areax (w) = 1 AND areay (w) = 1 AND
-
- areaxsize (w) = 79 AND areaysize (w) = 24
- THEN page;
- ELSE loesche bereich
- FI.
- loesche bereich:
- IF mit rahmen
- THEN page (areax (w) - 1, areay (w) - 1,
- areaxsize (w) + 2, areaysize (w) + 2)
- ELSE page (area (w))
- FI
-END PROC page;
-PROC erase (WINDOW VAR w):
- page (w, TRUE)
-END PROC erase;
-PROC line (WINDOW VAR w):
- w.cspalte := 1;
- IF w.czeile < w.belegbare zeilen
- THEN w.czeile INCR 1;
- ELSE w.czeile := 1;
-
- w.fensterende erreicht := TRUE
- FI;
- cursor (w, w.cspalte, w.czeile)
-END PROC line;
-PROC line (WINDOW VAR w, INT CONST anzahl):
- INT VAR i; FOR i FROM 1 UPTO anzahl REP line (w) PER
-END PROC line;
-INT PROC remaining lines (WINDOW CONST w):
- INT VAR spalte, zeile;
- get cursor (w, spalte, zeile);
- IF spalte = 0 OR zeile = 0
- THEN 0
- ELSE w.belegbare zeilen - w.czeile
- FI
-END PROC remaining lines;
-PROC cursor (WINDOW VAR w, INT CONST spalte, zeile):
- IF spalte < 1 OR zeile < 1 OR spalte > areaxsize (w) OR zeile > areaysize (w)
-
- THEN page (w);
- ELSE w.cspalte := spalte; w.czeile := zeile;
- FI;
- cursor (w.fenster, w.cspalte, w.czeile)
-END PROC cursor;
-PROC get cursor (WINDOW CONST w, INT VAR spalte, zeile):
- IF (w.cspalte < 1) OR (w.cspalte > areaxsize (w.fenster))
- OR
- (w.czeile < 1) OR (w.czeile > areaysize (w.fenster))
- THEN spalte := 0; zeile := 0
- ELSE spalte := w.cspalte; zeile := w.czeile
- FI
-END PROC get cursor;
-PROC out (WINDOW VAR w, TEXT CONST text):
-
- INT VAR restlaenge;
- IF (w.cspalte >= 1) AND (w.cspalte <= areaxsize (w.fenster))
- AND
- (w.czeile >= 1) AND (w.czeile <= w.belegbare zeilen)
- THEN putze ggf fenster;
- cursor (w.fenster, w.cspalte, w.czeile);
- outtext (text, 1, textende);
- setze fenstercursor neu;
- setze ausgabe ggf in naechster zeile fort
- FI.
- putze ggf fenster:
- IF w.fensterende erreicht
- THEN page (w);
- w.fensterende erreicht := FALSE
-
- FI.
- textende:
- restlaenge := areaxsize (w.fenster) - w.cspalte + 1;
- min (length (text), restlaenge).
- setze fenstercursor neu:
- IF length (text) >= restlaenge
- THEN w.cspalte := 1;
- w.czeile INCR 1;
- schlage ggf neue seite auf
- ELSE w.cspalte INCR length (text)
- FI.
- schlage ggf neue seite auf:
- IF w.czeile > w.belegbare zeilen
- THEN page (w);
- w.czeile := 1
- FI.
- setze ausgabe ggf in naechster zeile fort:
-
- IF length (text) > restlaenge
- THEN out (w, subtext (text, restlaenge + 1))
- FI.
-END PROC out;
-PROC out frame (WINDOW VAR w):
- out frame (area (w))
-END PROC out frame;
-PROC out menuframe (WINDOW VAR w):
- out menu frame (area (w))
-END PROC out menuframe;
-PROC put (WINDOW VAR w, TEXT CONST word):
- out (w, word); out (w, blank)
-END PROC put;
-PROC put (WINDOW VAR w, INT CONST number):
- put (w, text (number))
-END PROC put;
-PROC put (WINDOW VAR w, REAL VAR number):
- put (w, text (number))
-
-END PROC put;
-PROC putline (WINDOW VAR w, TEXT CONST textline):
- out (w, textline); line (w)
-END PROC putline;
-PROC editget (WINDOW VAR w, TEXT VAR ausgabe,
- INT CONST max laenge, scroll,
- TEXT CONST sep, res, TEXT VAR exit char):
- INT VAR spalte, zeile;
- ggf zur naechsten zeile;
- get cursor (spalte, zeile); cursor on; cursor (spalte, zeile);
- editget (ausgabe, max laenge, min (scroll, restlaenge),
- sep, res, exitchar);
- get cursor (spalte, zeile); cursor off; cursor (spalte, zeile).
-
- ggf zur naechsten zeile:
- IF restlaenge < 5 THEN line (w) FI.
- restlaenge:
- areaxsize (w.fenster) - w.cspalte - 1.
-END PROC editget;
-PROC editget (WINDOW VAR w, TEXT VAR ausgabe):
- TEXT VAR dummy;
- editget (w, ausgabe, 79, 79, "", "", dummy)
-END PROC editget;
-PROC get (WINDOW VAR w, TEXT VAR word):
- INT VAR spa, zei;
- ggf zur naechsten zeile;
- get cursor (spa, zei); cursor on; cursor (spa, zei);
- REP
- word := "";
- editget (word, maxtextlength, restlaenge, " ", "", exit char);
-
- out (w, subtext (word, 1, restlaenge));
- IF compress (word) <> ""
- THEN echoe exit char (w)
- FI
- UNTIL word <> niltext AND word <> blank PER;
- get cursor (spa, zei); cursor off; cursor (spa, zei);
- delete leading blanks.
- ggf zur naechsten zeile:
- IF restlaenge < 5 THEN line (w) FI.
- restlaenge:
- areaxsize (w.fenster) - w.cspalte - 1.
- delete leading blanks:
- WHILE (word SUB 1) = blank REP word := subtext (word, 2) PER.
-END PROC get;
-PROC get (WINDOW VAR w, TEXT VAR word, TEXT CONST separator):
-
- INT VAR spa, zei;
- ggf zur naechsten zeile;
- get cursor (spa, zei); cursor on; cursor (spa, zei);
- REP
- word := "";
- editget (word, maxtextlength, restlaenge, separator, "", exit char);
- out (w, subtext (word, 1, restlaenge));
- echoe exit char (w);
- UNTIL word <> niltext AND word <> blank PER;
- get cursor (spa, zei); cursor off; cursor (spa, zei).
- ggf zur naechsten zeile:
- IF restlaenge < 5 THEN line (w) FI.
- restlaenge:
- areaxsize (w.fenster) - w.cspalte - 1.
-
-END PROC get;
-PROC get (WINDOW VAR w, TEXT VAR word, INT CONST length):
- INT VAR spa, zei;
- ggf zur naechsten zeile;
- get cursor (spa, zei); cursor on; cursor (spa, zei);
- REP
- word := "";
- editget (word, maxtextlength, laenge, "", "", exit char);
- out (w, subtext (word, 1, laenge));
- echoe exit char (w)
- UNTIL word <> niltext AND word <> blank PER;
- get cursor (spa, zei); cursor off; cursor (spa, zei).
- ggf zur naechsten zeile:
- IF restlaenge < 5 THEN line (w) FI.
-
- restlaenge:
- areaxsize (w.fenster) - w.cspalte - 1.
- laenge:
- min (length, restlaenge).
-END PROC get;
-PROC get (WINDOW VAR w, INT VAR number):
- get (w, number word);
- number := int (number word)
-END PROC get;
-PROC get (WINDOW VAR w, REAL VAR number):
- get (w, number word);
- number := real (number word)
-END PROC get;
-PROC getline (WINDOW VAR w, TEXT VAR textline):
- INT VAR spa, zei;
- ggf zur naechsten zeile;
- get cursor (spa, zei); cursor on; cursor (spa, zei);
- REP
-
- textline := "";
- editget (textline, maxtextlength, restlaenge, "", "", exit char);
- out (w, subtext (word, 1, restlaenge));
- echoe exit char (w);
- UNTIL textline <> niltext AND textline <> blank PER;
- get cursor (spa, zei); cursor off; cursor (spa, zei).
- ggf zur naechsten zeile:
- IF restlaenge < 5 THEN line (w) FI.
- restlaenge:
- areaxsize (w.fenster) - w.cspalte - 1.
-END PROC getline;
-PROC echoe exit char (WINDOW VAR fenster):
- IF exit char = cr
- THEN line (fenster)
-
- ELSE out (fenster, exit char)
- FI
-END PROC echoe exit char;
-TEXT PROC center (WINDOW CONST w, TEXT CONST text):
- IF length (text) >= areaxsize (w.fenster)
- THEN subtext (text, 1, areaxsize (w.fenster))
- ELSE center (areaxsize (w.fenster), text)
- FI
-END PROC center;
-BOOL PROC yes (WINDOW VAR w, TEXT CONST frage):
- TEXT VAR zeichen, interne frage :: frage;
- interne frage CAT aussage [2];
- wechsel ggf auf neue seite;
- out (w, interne frage);
- hole eingabezeichen;
-
- werte zeichen aus.
- wechsel ggf auf neue seite:
- IF remaining lines (w) < 1
- THEN page (w)
- FI.
- hole eingabezeichen:
- cursor on; clear buffer;
- REP
- inchar (zeichen);
- piepse ggf
- UNTIL pos (janeinkette, zeichen) > 0 PER;
- out (w, blank + zeichen);
- cursor off; line (w).
- piepse ggf:
- IF pos (janeinkette, zeichen) = 0 THEN out (piep) FI.
- werte zeichen aus:
- IF pos (janeinkette, zeichen) < 5
- THEN TRUE
- ELSE FALSE
- FI.
-
-END PROC yes;
-PROC edit (WINDOW VAR w, FILE VAR f):
- out frame (w.fenster);
- loesche rechte spalten (w);
- cursor on;
- edit (f, areax (w.fenster), areay (w.fenster),
- areaxsize (w.fenster) - 1, areaysize (w.fenster));
- cursor off
-END PROC edit;
-PROC edit (WINDOW VAR w, TEXT CONST dateiname):
- FILE VAR f :: sequential file (modify, dateiname);
- to line (f, 1);
- edit (w, f)
-END PROC edit;
-PROC show (WINDOW VAR w, FILE VAR f):
- out frame (w.fenster);
- loesche rechte spalten (w);
-
- open editor (groesster editor + 1, f, FALSE,
- areax (w.fenster), areay (w.fenster),
- areaxsize (w.fenster) - 1, areaysize (w.fenster));
- cursor on;
- edit (groesster editor, "eqvw19dpgn"9"",
- PROC (TEXT CONST) std kommando interpreter);
- cursor off
-END PROC show;
-PROC show (WINDOW VAR w, TEXT CONST dateiname):
- FILE VAR f :: sequential file (modify, dateiname);
- to line (f, 1);
- show (w, f)
-END PROC show;
-PROC loesche rechte spalten (WINDOW VAR w):
-
- INT VAR i;
- FOR i FROM 1 UPTO areaysize (w.fenster) REP
- cursor (w, areaxsize (w.fenster) - 2, i); out (3 * blank)
- PER
-END PROC loesche rechte spalten;
-BOOL PROC no (WINDOW VAR w, TEXT CONST frage):
- NOT yes (w, frage)
-END PROC no;
-PROC stop (WINDOW VAR w):
- stop (w, 2)
-END PROC stop;
-PROC stop (WINDOW VAR w, INT CONST zeilenzahl):
- INT VAR i; FOR i FROM 1 UPTO zeilenzahl REP line (w) PER;
- out (w, aussage [3]);
- pause
-END PROC stop;
-AREA PROC area (WINDOW CONST w):
-
- w.fenster
-END PROC area;
-INT PROC areax (WINDOW CONST w):
- areax (w.fenster)
-END PROC areax;
-INT PROC areay (WINDOW CONST w):
- areay (w.fenster)
-END PROC areay;
-INT PROC areaxsize (WINDOW CONST w):
- areaxsize (w.fenster)
-END PROC areaxsize;
-INT PROC areaysize (WINDOW CONST w):
- areaysize (w.fenster)
-END PROC areaysize;
-END PACKET ls dialog 3;
-
-
diff --git a/dialog/ls-DIALOG 4 b/dialog/ls-DIALOG 4
deleted file mode 100644
index e1d38c4..0000000
--- a/dialog/ls-DIALOG 4
+++ /dev/null
@@ -1,741 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG 4 **
- ** **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-PACKET ls dialog 4 DEFINES
- boxinfo,
- boxnotice,
- boxalternative,
- boxyes,
- boxno,
- boxanswer,
- boxone,
- boxanswerone,
- boxsome,
- boxanswersome,
- out footnote,
- erase footnote:
-LET mark ein = ""15"",
- mark aus = ""14"",
- delimiter = ""13"",
- piep = ""7"",
- rechts links esc return = ""2""8""27""13"",
-
- rechts links null return = ""2""8""0""13"" ,
- blank = " ",
- niltext = "",
- janeintasten = "jJyYnN";
-ROW 8 TEXT CONST aussage :: ROW 8 TEXT : (
-" Zum Weitermachen bitte irgendeine Taste tippen!",
-" Ändern: <Pfeile> Bestätigen: <RETURN> Abbruch: <ESC> <h>",
-" Ändern: <Pfeile> Bestätigen: <RETURN> Ja: <j> Nein: <n>",
-" Ändern: <Pfeile> Bestätigen: <RETURN>",
-" Fertig: <RETURN> Zeigen: <ESC><z> Abbruch: <ESC><h>",
-
-" Fertig: <RETURN> Abbruch: <ESC><h>",
-"Ja"13"Nein",
-" Eingabe: "
-);
-PROC boxinfo (WINDOW VAR w, TEXT CONST t,
- INT CONST position, timelimit,
- INT VAR x, y, xsize, ysize):
- INT VAR spa, zei;
- get cursor (w, spa, zei);
- schreibe box (w, t, position, timelimit, x, y, xsize, ysize);
- cursor (w, spa, zei);
-END PROC boxinfo;
-PROC boxinfo (WINDOW VAR w, TEXT CONST t, INT CONST position,
- timelimit, BOOL CONST trennlinie weg):
- INT VAR x, y, xsize, ysize, spa, zei;
-
- get cursor (w, spa, zei);
- schreibe box (w, t, position, timelimit, x, y, xsize, ysize);
- page up (x, y, xsize, ysize);
- IF trennlinie weg
- THEN erase footnote (w, TRUE)
- ELSE erase footnote (w, FALSE)
- FI;
- cursor (w, spa, zei)
-END PROC boxinfo;
-PROC boxinfo (WINDOW VAR w, TEXT CONST t, INT CONST position, timelimit):
- boxinfo (w, t, position, timelimit, TRUE)
-END PROC boxinfo;
-PROC boxinfo (WINDOW VAR w, TEXT CONST t):
- boxinfo (w, t, 5, maxint, TRUE)
-END PROC boxinfo;
-
-PROC boxnotice (WINDOW VAR w, TEXT CONST t, INT CONST position,
- INT VAR x, y, xsize, ysize):
- INT VAR spa, zei;
- get cursor (w, spa, zei);
- schreibe notiz (w, t, position, x, y, xsize, ysize);
- cursor (w, spa, zei)
-END PROC boxnotice;
-INT PROC boxalternative (WINDOW VAR w, TEXT CONST t,
- auswahlliste, zusatztasten,
- INT CONST position, BOOL CONST mit abbruch,
- INT VAR x, y, xsize, ysize):
-
- INT VAR ergebnis, spa, zei;
- get cursor (w, spa, zei);
- schreibe alternativen (w, t, auswahlliste, zusatztasten, position,
- mit abbruch, x, y, xsize, ysize, ergebnis);
- cursor (w, spa, zei);
- ergebnis
-END PROC boxalternative;
-INT PROC boxalternative (WINDOW VAR w, TEXT CONST t, auswahlliste,
- zusatztasten, INT CONST position,
- BOOL CONST mit abbruch, trennlinie weg):
- INT VAR x, y, xsize, ysize, ergebnis, spa, zei;
-
- get cursor (w, spa, zei);
- ergebnis := boxalternative (w, t, auswahlliste, zusatztasten, position,
- mit abbruch, x, y, xsize, ysize);
- page up (x, y, xsize, ysize);
- IF trennlinie weg
- THEN erase footnote (w, TRUE)
- ELSE erase footnote (w, FALSE)
- FI;
- cursor (w, spa, zei);
- ergebnis
-END PROC boxalternative;
-INT PROC boxalternative (WINDOW VAR w, TEXT CONST t,
- auswahlliste, zusatztasten,
- INT CONST position, BOOL CONST mit abbruch):
-
- boxalternative (w, t, auswahlliste, zusatztasten,
- position, mit abbruch, TRUE)
-END PROC boxalternative;
-BOOL PROC boxyes (WINDOW VAR w, TEXT CONST t, INT CONST position,
- INT VAR x, y, xsize, ysize):
- INT VAR spa, zei;
- get cursor (w, spa, zei);
- BOOL CONST wert :: ja (w, t, position, x, y, xsize, ysize);
- cursor (w, spa, zei);
- wert
-END PROC boxyes;
-BOOL PROC boxyes (WINDOW VAR w, TEXT CONST t,
- INT CONST position, BOOL CONST trennlinie weg):
-
- INT VAR x, y, xsize, ysize, spa, zei;
- get cursor (w, spa, zei);
- BOOL VAR wert :: ja (w, t, position, x, y, xsize, ysize);
- page up (x, y, xsize, ysize);
- IF trennlinie weg
- THEN erase footnote (w, TRUE)
- ELSE erase footnote (w, FALSE);
- FI;
- cursor (w, spa, zei);
- wert
-END PROC boxyes;
-BOOL PROC boxyes (WINDOW VAR w, TEXT CONST t, INT CONST position):
- boxyes (w, t, position, TRUE)
-END PROC boxyes;
-BOOL PROC boxno (WINDOW VAR w, TEXT CONST t, INT CONST position,
-
- INT VAR x, y, xsize, ysize):
- NOT boxyes (w, t, position, x, y, xsize, ysize)
-END PROC boxno;
-BOOL PROC boxno (WINDOW VAR w, TEXT CONST t,
- INT CONST position, BOOL CONST trennlinie weg):
- NOT boxyes (w, t, position, trennlinie weg)
-END PROC boxno;
-BOOL PROC boxno (WINDOW VAR w, TEXT CONST t, INT CONST position):
- boxno (w, t, position)
-END PROC boxno;
-TEXT PROC boxanswer (WINDOW VAR w, TEXT CONST t, vorgabe,
- INT CONST position, INT VAR x, y, xsize, ysize):
-
- INT VAR spa, zei;
- TEXT VAR wert;
- get cursor (w, spa, zei);
- wert := hole antwort (w, t, vorgabe, position, FALSE, x, y, xsize, ysize);
- cursor (spa, zei);
- wert
-END PROC boxanswer;
-TEXT PROC boxanswer (WINDOW VAR w, TEXT CONST t, vorgabe,
- INT CONST position, BOOL CONST trennlinie weg):
- INT VAR x, y, xsize, ysize, spa, zei;
- get cursor (w, spa, zei);
- TEXT VAR wert := hole antwort (w, t, vorgabe, position, FALSE,
- x, y, xsize, ysize);
-
- page up (x, y, xsize, ysize);
- IF trennlinie weg
- THEN erase footnote (w, TRUE)
- ELSE erase footnote (w, FALSE)
- FI;
- cursor (w, spa, zei);
- wert
-END PROC boxanswer;
-TEXT PROC boxanswer (WINDOW VAR w, TEXT CONST t, vorgabe,
- INT CONST position):
- boxanswer (w, t, vorgabe, position, TRUE)
-END PROC boxanswer;
-TEXT PROC boxone (WINDOW VAR w, THESAURUS CONST thesaurus,
- TEXT CONST text1, text2, BOOL CONST mit reinigung):
-
- INT VAR spa, zei;
- get cursor (w, spa, zei);
- TEXT VAR wert :: one (areax (w) + 2, areay (w) + 2,
- areaxsize (w) - 4, areaysize (w) - 2,
- thesaurus, text1, text2);
- IF mit reinigung
- THEN page up (areax (w) + 2, areay (w) + 2,
- areaxsize (w) - 4, areaysize (w) - 2);
- erase footnote (w)
- FI;
- cursor (w, spa, zei);
- wert
-END PROC boxone;
-TEXT PROC boxanswerone (WINDOW VAR w, TEXT CONST text, vorgabe,
-
- THESAURUS CONST thesaurus, TEXT CONST t1, t2,
- BOOL CONST mit reinigung, trennlinie weg):
- INT VAR x,y, xsize, ysize, spa, zei;
- get cursor (w, spa, zei);
- TEXT VAR wert := hole antwort (w, text, vorgabe, 5, TRUE,
- x, y, xsize, ysize);
- IF wert = ""27"z"
- THEN lasse auswaehlen
- ELSE uebernimm den wert
- FI;
- cursor (w, spa, zei);
- wert.
- lasse auswaehlen:
- IF mit reinigung
- THEN wert := boxone (w, thesaurus, t1, t2, TRUE )
-
- ELSE wert := boxone (w, thesaurus, t1, t2, FALSE)
- FI.
- uebernimm den wert:
- IF mit reinigung
- THEN page up (x, y, xsize, ysize);
- entferne ggf die trennlinie
- FI.
- entferne ggf die trennlinie:
- IF trennlinie weg
- THEN erase footnote (w, TRUE)
- ELSE erase footnote (w, FALSE)
- FI.
-END PROC boxanswer one;
-TEXT PROC boxanswerone (WINDOW VAR w, TEXT CONST text, vorgabe,
- THESAURUS CONST thesaurus, TEXT CONST t1, t2,
-
- BOOL CONST mit reinigung):
- boxanswerone (w, text, vorgabe, thesaurus, t1, t2, mit reinigung, TRUE)
-END PROC boxanswer one;
-THESAURUS PROC boxsome (WINDOW VAR w, THESAURUS CONST thesaurus,
- TEXT CONST text1, text2,
- BOOL CONST mit reinigung):
- INT VAR spa, zei;
- get cursor (w, spa, zei);
- THESAURUS VAR wert :: some (areax (w) + 2, areay (w) + 2,
- areaxsize (w) - 4, areaysize (w) - 2,
-
- thesaurus, text1, text2);
- IF mit reinigung
- THEN page up (areax (w) + 2, areay (w) + 2,
- areaxsize (w) - 4, areaysize (w) - 2);
- erase footnote (w)
- FI;
- cursor (w, spa, zei);
- wert
-END PROC boxsome;
-THESAURUS PROC boxanswersome (WINDOW VAR w, TEXT CONST text, vorgabe,
- THESAURUS CONST thesaurus,
- TEXT CONST t1, t2,
- BOOL CONST mit reinigung, trennlinie weg):
-
- THESAURUS VAR ergebnis :: empty thesaurus;
- INT VAR x, y, xsize, ysize, spa, zei;
- get cursor (w, spa, zei);
- TEXT VAR wert := hole antwort (w, text, vorgabe, 5, TRUE,
- x, y, xsize, ysize);
- IF wert = ""27"z"
- THEN lasse auswaehlen
- ELSE uebernimm den wert
- FI;
- cursor (w, spa, zei);
- ergebnis.
- lasse auswaehlen:
- IF mit reinigung
- THEN ergebnis := boxsome (w, thesaurus, t1, t2, TRUE )
- ELSE ergebnis := boxsome (w, thesaurus, t1, t2, FALSE)
-
- FI.
- uebernimm den wert:
- IF wert <> niltext
- THEN insert (ergebnis, wert)
- FI;
- IF mit reinigung
- THEN page up (x, y, xsize, ysize);
- entferne ggf die trennlinie
- FI.
- entferne ggf die trennlinie:
- IF trennlinie weg
- THEN erase footnote (w, TRUE)
- ELSE erase footnote (w, FALSE)
- FI.
-END PROC boxanswer some;
-THESAURUS PROC boxanswersome (WINDOW VAR w, TEXT CONST text, vorgabe,
- THESAURUS CONST thesaurus,
-
- TEXT CONST t1, t2,
- BOOL CONST mit reinigung):
- boxanswersome (w, text, vorgabe, thesaurus, t1, t2, mit reinigung, TRUE)
-END PROC boxanswersome;
-PROC out footnote (WINDOW VAR w, BOOL CONST mit trennlinie, TEXT CONST text):
- INT VAR spa, zei;
- get cursor (w, spa, zei);
- IF mit trennlinie
- THEN cursor (w, 1, areaysize (w) - 1);
- areaxsize (w) TIMESOUT waagerecht
- FI;
- cursor (w, 1, areaysize (w));
- outtext (text, 1, areaxsize (w));
-
- cursor (w, spa, zei)
-END PROC out footnote;
-PROC out footnote (WINDOW VAR w, TEXT CONST t):
- out footnote (w, TRUE, t)
-END PROC out footnote;
-PROC erase footnote (WINDOW VAR w, BOOL CONST auch trennlinie):
- INT VAR spa, zei;
- get cursor (w, spa, zei);
- IF auch trennlinie
- THEN cursor (w, 1, areaysize (w) - 1);
- outtext ("", 1, areaxsize (w))
- FI;
- cursor (w, 1, areaysize (w));
- outtext ("", 1, areaxsize (w));
- cursor (w, spa, zei)
-END PROC erase footnote;
-PROC erase footnote (WINDOW VAR w):
-
- erase footnote (w, TRUE)
-END PROC erase footnote;
-PROC schreibe boxtext (WINDOW VAR w, TEXT CONST t,
- INT CONST position, zusatzlaenge,
- mindestbreite, mindesthoehe,
- INT VAR x, y, xsize, ysize):
- ermittle boxbreite und boxhoehe;
- ermittle rahmenwerte;
- schreibe boxkopf;
- schreibe boxrumpf.
- ermittle boxbreite und boxhoehe:
- TEXT VAR intern :: t + delimiter;
- entferne fuehrende delimiter;
- INT VAR anfang :: 1,
-
- ende :: pos (intern, delimiter, anfang) - 1;
- xsize := 0;
- ysize := 0;
- WHILE ende > 0 REP
- ysize INCR 1;
- lege ggf boxbreite fest;
- bestimme neue positionen
- PER.
- entferne fuehrende delimiter:
- WHILE (intern SUB 1) = delimiter REP
- intern := subtext (intern, 2)
- PER.
- lege ggf boxbreite fest:
- IF length (subtext (intern, anfang, ende)) > xsize
- THEN xsize := length (subtext (intern, anfang, ende))
- FI.
- bestimme neue positionen:
-
- anfang := ende + 2;
- ende := pos (intern, delimiter, anfang) - 1.
- ermittle rahmenwerte:
- schlage notwendige groessen auf;
- kill ueberlaengen;
- lege bildschirmpositionen fest.
- schlage notwendige groessen auf:
- IF xsize < mindestbreite
- THEN xsize := mindestbreite
- FI;
- IF ysize < mindesthoehe
- THEN ysize := mindesthoehe
- FI;
- ysize INCR zusatzlaenge;
- ysize INCR 2; (* Für den Rahmen *)
- xsize INCR 2. (* Für den Rahmen *)
- kill ueberlaengen:
-
- IF ysize > (areaysize (w) - 4)
- THEN ysize := areaysize (w) - 4
- FI;
- IF xsize > (areaxsize (w) - 4)
- THEN xsize := areaxsize (w) - 4
- FI.
- lege bildschirmpositionen fest:
- SELECT position OF
- CASE 1: plazierung links oben
- CASE 2: plazierung rechts oben
- CASE 3: plazierung links unten
- CASE 4: plazierung rechts unten
- OTHERWISE plazierung im zentrum
- END SELECT.
- plazierung links oben:
- x := areax (w) + 2;
- y := areay (w) + 2.
-
- plazierung rechts oben:
- x := areax (w) + areaxsize (w) - xsize - 2;
- y := areay (w) + 2.
- plazierung links unten:
- x := areax (w) + 2;
- y := areay (w) + areaysize (w) - ysize - 2.
- plazierung rechts unten:
- x := areax (w) + areaxsize (w) - xsize - 2;
- y := areay (w) + areaysize (w) - ysize - 2.
- plazierung im zentrum:
- x := areax (w) + ((areaxsize (w) - (xsize + 2)) DIV 2) + 1;
- y := areay (w) + ((areaysize (w) - ysize) DIV 2).
- schreibe boxkopf:
-
- cursor (x, y);
- out (ecke oben links);
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke oben rechts).
- schreibe boxrumpf:
- INT VAR i;
- intern := t + delimiter;
- entferne fuehrende delimiter;
- anfang := 1;
- ende := pos (intern, delimiter, anfang) - 1;
- FOR i FROM y + 1 UPTO y + ysize - zusatzlaenge - 2 REP
- cursor (x, i);
- out (senkrecht);
- outtext (subtext (intern, anfang, ende), 1, xsize - 2);
- out (senkrecht);
- anfang := ende + 2;
-
- ende := pos (intern, delimiter, anfang) - 1
- PER
-END PROC schreibe boxtext;
-PROC schreibe boxfuss (WINDOW VAR w,
- INT CONST x, y, xsize, ysize, limit):
- schreibe abschlusszeile;
- out footnote (w, aussage [1]);
- cursor in position und warten.
- schreibe abschlusszeile:
- cursor (x, y + ysize - 1);
- out (ecke unten links);
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke unten rechts).
- cursor in position und warten:
- cursor parken (w);
-
- clear buffer;
- pause (limit)
-END PROC schreibe boxfuss;
-PROC cursor parken (WINDOW VAR w):
- cursor (w, 1, 2)
-END PROC cursor parken;
-PROC schreibe box (WINDOW VAR w, TEXT CONST t,
- INT CONST position, timelimit,
- INT VAR x, y, xsize, ysize):
- schreibe boxtext (w, t, position, 0, 0, 0, x, y, xsize, ysize);
- schreibe boxfuss (w, x, y, xsize, ysize, timelimit)
-END PROC schreibe box;
-PROC schreibe notizfuss (WINDOW VAR w, INT CONST x, y, xsize, ysize):
-
- schreibe abschlusszeile;
- cursor parken (w).
- schreibe abschlusszeile:
- cursor (x, y + ysize - 1);
- out (ecke unten links);
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke unten rechts).
-END PROC schreibe notizfuss;
-PROC schreibe notiz (WINDOW VAR w, TEXT CONST t, INT CONST position,
- INT VAR x, y, xsize, ysize):
- schreibe boxtext (w, t, position, 0, 0, 0, x, y, xsize, ysize);
- schreibe notizfuss (w, x, y, xsize, ysize)
-END PROC schreibe notiz;
-PROC schreibe alternativen (WINDOW VAR w, TEXT CONST t, altzeile, sonst,
-
- INT CONST position, BOOL CONST mit abbruch,
- INT VAR x, y, xsize, ysize, ergebnis):
- ROW 10 STRUCT (TEXT alternat, INT anfang, laenge) VAR altliste;
- normiere alternativen;
- untersuche alternativen;
- schreibe boxtext (w, textintern, position, 2, altbreite,
- 0, x, y, xsize, ysize);
- schreibe alternativenfuss;
- lasse auswaehlen;
- liefere ergebnis.
- textintern:
- IF sonst = janeintasten
- THEN TEXT VAR zwischen;
-
- zwischen := t;
- kuerze um folgende blanks;
- zwischen + "? "
- ELSE t
- FI.
- kuerze um folgende blanks:
- WHILE (zwischen SUB (length (zwischen))) = blank REP
- zwischen := subtext (zwischen , 1, length (zwischen) - 1)
- PER.
- normiere alternativen:
- TEXT VAR altintern :: altzeile;
- altintern CAT delimiter.
- untersuche alternativen:
- INT VAR altanzahl :: 1, altbreite, first :: - 2, anfang :: 1,
- ende :: pos (altintern, delimiter, anfang) - 1;
-
- WHILE ende > 0 AND altanzahl <= 10 REP
- trage alternative ein;
- trage alternativenanfang ein;
- trage alternativenlaenge ein;
- setze neue positionen fest
- PER;
- ermittle gesamtalternativenbreite.
- trage alternative ein:
- altliste [altanzahl].alternat :=
- compress (subtext (altintern, anfang, ende)).
- trage alternativenanfang ein:
- first INCR 3;
- altliste [altanzahl].anfang := first.
- trage alternativenlaenge ein:
-
- altliste [altanzahl].laenge := length (altliste [altanzahl].alternat);
- first INCR altliste [altanzahl].laenge.
- setze neue positionen fest:
- anfang := ende + 2;
- ende := pos (altintern, delimiter, anfang) - 1;
- altanzahl INCR 1.
- ermittle gesamtalternativenbreite:
- altanzahl DECR 1;
- altbreite := altliste [altanzahl].anfang;
- altbreite INCR (altliste [altanzahl].laenge + 3);
- IF altbreite > areaxsize (w) - 6
- THEN LEAVE schreibe alternativen
-
- FI.
- schreibe alternativenfuss:
- schreibe leerzeile;
- schreibe antwortmoeglichkeiten;
- schreibe abschlusszeile;
- IF mit abbruch
- THEN out footnote (w, aussage [2])
- ELSE beruecksichtige ja nein hinweis
- FI.
- schreibe leerzeile:
- cursor (x, y + ysize - 3);
- out (senkrecht);
- (xsize - 2) TIMESOUT blank;
- out (senkrecht).
- schreibe antwortmoeglichkeiten:
- cursor (x, y + ysize - 2);
- out (senkrecht);
- einrueckbreite TIMESOUT blank;
-
- out (antwortleiste);
- rest TIMESOUT blank;
- out (senkrecht).
- einrueckbreite:
- (xsize - 2 - length (antwortleiste)) DIV 2.
- antwortleiste:
- INT VAR zeiger; TEXT VAR ausgabe :: "";
- FOR zeiger FROM 1 UPTO altanzahl REP
- ausgabe CAT altliste [zeiger].alternat;
- ausgabe CAT " "
- PER;
- compress (ausgabe).
- rest:
- xsize - 2 - einrueckbreite - length (antwortleiste).
- schreibe abschlusszeile:
- cursor (x, y + ysize - 1);
- out (ecke unten links);
-
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke unten rechts).
- beruecksichtige ja nein hinweis:
- IF sonst = janeintasten
- THEN out footnote (w, aussage [3])
- ELSE out footnote (w, aussage [4])
- FI.
- lasse auswaehlen:
- INT VAR altzeiger :: 1;
- stelle erste alternative invers dar;
- REP
- hole eingabe;
- werte eingabe aus und reagiere
- UNTIL alternative gefunden PER.
- stelle erste alternative invers dar:
- cursor (x + einrueckbreite, y + ysize - 2);
-
- out (mark ein);
- out (altliste [altzeiger].alternat); out (blank);
- out (mark aus);
- cursor (x + einrueckbreite, y + ysize - 2).
- hole eingabe:
- TEXT VAR moegliche, eingabe;
- IF mit abbruch
- THEN moegliche := rechts links esc return + sonst
- ELSE moegliche := rechts links null return + sonst
- FI;
- clear buffer;
- REP
- inchar (eingabe);
- piepse bei unzulaessiger eingabe
- UNTIL pos (moegliche, eingabe) > 0 PER.
- piepse bei unzulaessiger eingabe:
-
- IF pos (moegliche, eingabe) = 0 THEN out (piep) FI.
- werte eingabe aus und reagiere:
- SELECT pos (moegliche, eingabe) OF
- CASE 1: zur naechsten alternative
- CASE 2: zur vorausgehenden alternative
- CASE 3: esc kommando verarbeiten
- END SELECT.
- zur naechsten alternative:
- loesche aktuelle alternative;
- ermittle rechte alternative;
- stelle neue alternative invers dar.
- zur vorausgehenden alternative:
- loesche aktuelle alternative;
- ermittle linke alternative;
-
- stelle neue alternative invers dar.
- loesche aktuelle alternative:
- cursor (alternativenanfang - 1, y + ysize - 2);
- out (blank);
- out (altliste [altzeiger].alternat);
- out (2 * blank).
- alternativenanfang:
- x + einrueckbreite + altliste [altzeiger].anfang.
- ermittle rechte alternative:
- IF altzeiger = altanzahl
- THEN altzeiger := 1
- ELSE altzeiger INCR 1
- FI.
- ermittle linke alternative:
- IF altzeiger = 1
- THEN altzeiger := altanzahl
-
- ELSE altzeiger DECR 1
- FI.
- stelle neue alternative invers dar:
- cursor (alternativenanfang - 1, y + ysize - 2);
- out (mark ein);
- out (altliste [altzeiger].alternat); out (blank);
- out (mark aus);
- cursor (alternativenanfang - 1, y + ysize - 2).
- esc kommando verarbeiten:
- inchar (eingabe);
- IF eingabe = "h"
- THEN ergebnis := 0;
- LEAVE schreibe alternativen
- ELSE out (piep); eingabe := ""
- FI.
- alternative gefunden:
- pos (moegliche, eingabe) > 3.
-
- liefere ergebnis:
- IF pos (moegliche, eingabe) = 4
- THEN ergebnis := altzeiger
- ELSE ergebnis := 100 + pos (sonst, eingabe)
- FI.
-END PROC schreibe alternativen;
-BOOL PROC ja (WINDOW VAR w, TEXT CONST t, INT CONST position,
- INT VAR x, y, xsize, ysize):
- INT VAR ergebnis;
- schreibe alternativen (w, t, aussage [7], janeintasten, position,
- FALSE, x, y, xsize, ysize, ergebnis);
- SELECT ergebnis OF
- CASE 2, 105, 106: FALSE
- OTHERWISE TRUE
-
- END SELECT.
-END PROC ja;
-TEXT PROC hole antwort (WINDOW VAR w, TEXT CONST t, vorgabe,
- INT CONST position, BOOL CONST mit auswahl,
- INT VAR x, y, xsize, ysize):
- TEXT VAR eingabe :: compress (vorgabe);
- schreibe boxtext (w, t, position, 2, length (aussage [8]) + 12, 2,
- x, y, xsize, ysize);
- schreibe antwortfuss;
- clear buffer;
- REP
- IF eingabe = "break"
- THEN eingabe := ""
- FI;
- lasse eintragen
-
- UNTIL eingabe <> "break" PER;
- liefere ergebnis.
- schreibe antwortfuss:
- schreibe leerzeile;
- schreibe eingabezeile;
- schreibe abschlusszeile;
- IF mit auswahl
- THEN out footnote (w, aussage [5])
- ELSE out footnote (w, aussage [6])
- FI.
- schreibe leerzeile:
- cursor (x, y + ysize - 3);
- out (senkrecht);
- (xsize - 2) TIMESOUT blank;
- out (senkrecht).
- schreibe eingabezeile:
- cursor (x, y + ysize - 2);
- out (senkrecht);
- out (aussage [8]);
-
- (xsize - 2 - length (aussage [8])) TIMESOUT blank;
- out (senkrecht).
- schreibe abschlusszeile:
- cursor (x, y + ysize - 1);
- out (ecke unten links);
- (xsize - 2) TIMESOUT waagerecht;
- out (ecke unten rechts).
- lasse eintragen:
- TEXT VAR exit :: "";
- cursor on;
- cursor (x + length (aussage [8]) + 1, y + ysize - 2);
- IF mit auswahl
- THEN editget (eingabe, maxtextlength, textlaenge, "", "hz", exit)
- ELSE editget (eingabe, maxtextlength, textlaenge, "", "h", exit)
-
- FI;
- cursor off;
- IF exit = ""27"h"
- THEN eingabe := ""
- ELIF mit auswahl AND (exit = ""27"z")
- THEN eingabe := ""27"z"
- ELSE eingabe := compress (eingabe)
- FI.
- textlaenge:
- xsize - 2 - length (aussage [8]).
- liefere ergebnis:
- eingabe.
-END PROC hole antwort;
-END PACKET ls dialog 4;
-
-
diff --git a/dialog/ls-DIALOG 5 b/dialog/ls-DIALOG 5
deleted file mode 100644
index 9902098..0000000
--- a/dialog/ls-DIALOG 5
+++ /dev/null
@@ -1,1412 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG 5 **
- ** **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-PACKET ls dialog 5 DEFINES
- menufootnote, old menufootnote,
- menuinfo,menualternative,
- menuyes, menuno, menuone,
- menusome,menuanswer,
- menuanswerone, menuanswersome,
- install menu, handle menu,
- refresh submenu, deactivate,
- regenerate menuscreen, activate,
- write menunotice, erase menunotice,
- menubasistext, anwendungstext,
- show menuwindow, menuwindowpage,
- menuwindowout, menuwindowget,
- menuwindoweditget, menuwindowedit,
-
- menuwindowshow, menuwindowline,
- menuwindowyes, menuwindowno,
- menuwindowcursor, get menuwindowcursor,
- remaining menuwindowlines,
- menuwindowcenter, menuwindowstop,
- editorinformationen,stdinfoedit,
- menukartenname, current menuwindow,
- reset dialog, only intern, ausstieg,
- direktstart:
-LET systemkuerzel = "ls-DIALOG",
- menutafeltaskname = "ls-MENUKARTEN",
- menutafeltype = 1954,
- menutafelpraefix = "ls-MENUKARTE:",
-
- stdmenukartenname = "ls-MENUKARTE:Archiv",
- versionsnummer = "1.1",
- copyright1 = " (C) 1987/88 Eva Latta-Weber",
- copyright2 = " (C) 1988 ERGOS GmbH";
-LET maxmenus = 6,
- maxmenutexte = 300,
- maxinfotexte = 2000,
- maxhauptmenupunkte = 10,
- maxuntermenupunkte = 15,
- erste untermenuzeile = 3;
-LET blank = " ",
- piep = ""7"",
-
- cleol = ""5"",
- cleop = ""4"",
- trennzeilensymbol = "###",
- bleibt leer symbol = "***",
- hauptmenuluecke = " ";
-LET auswahlstring1 = ""8""2""10""3""13""27"?";
-TYPE MENUPUNKT = STRUCT (TEXT punktkuerzel,
- punktname,
- procname,
- boxtext,
- BOOL aktiv,
- angewaehlt),
-
- EINZELMENU = STRUCT (INT belegt,
- TEXT ueberschrift,
- INT anfangsposition,
- maxlaenge,
- ROW maxuntermenupunkte MENUPUNKT menupunkt,
- INT aktueller untermenupunkt,
- TEXT startprozedurname,
- leaveprozedurname),
- MENU = STRUCT (TEXT menuname,
- INT anzahl hauptmenupunkte,
-
- ROW maxhauptmenupunkte EINZELMENU einzelmenu,
- TEXT menueingangsprozedur,
- menuausgangsprozedur,
- menuinfo,
- lizenznummer,
- versionsnummer,
- INT hauptmenuzeiger,
- untermenuanfang,
- untermenuzeiger),
- INFOTEXT = STRUCT (INT anzahl infotexte,
-
- ROW maxinfotexte TEXT stelle),
- MENUTEXT = STRUCT (INT anzahl menutexte,
- ROW maxmenutexte TEXT platz),
- MENULEISTE = STRUCT (INT belegt, zeigeraktuell, zeigerhintergrund,
- ROW maxmenus MENU menu,
- MENUTEXT menutext,
- INFOTEXT infotext);
-BOUND MENULEISTE VAR menuleiste;
-DATASPACE VAR ds;
-WINDOW VAR menuwindow, schreibfenster, editorinfofenster;
-
-INITFLAG VAR in this task :: FALSE;
-INT VAR anzahl offener menus :: 0;
-INT VAR menunotizx, menunotizxsize,
- menunotizy, menunotizysize,
- menunotizposition;
-TEXT VAR angekoppelte menutafel :: "",
- permanent footnote :: "",
- menunotiztext;
-BOOL VAR menunotiz ist gesetzt :: FALSE,
- nur interne verwendung :: FALSE,
- mit ausstieg :: FALSE;
-REAL VAR zeitpunkt :: clock (1);
-
-ROW 13 TEXT CONST fehlermeldung :: ROW 13 TEXT : (
-"Die Task '" + menutafeltaskname + "' existiert nicht!",
-"Die Menukarte '",
-"' existiert nicht in der Task '" + menutafeltaskname + "'!",
-"' hat falschen Typ/Bezeichnung (keine 'MENUKARTE')!",
-"Das Menu '",
-"' ist nicht in der angekoppelten Menukarte!",
-"Zu viele geoeffnete Menus ( > 2 )!",
-"Kein Menu geoeffnet!",
-"Menu enthaelt keine Menupunkte!",
-"Menupunkt ist nicht im Menu enthalten!",
-"Kein Text vorhanden!",
-"Zugriff unmöglich!",
-
-"Einschränkung unzulässig!"
-);
-ROW 1 TEXT CONST vergleichstext :: ROW 1 TEXT : (
-"gibt es nicht"
-);
-ROW 3 TEXT CONST hinweis :: ROW 3 TEXT : (
-"Info:<ESC><?>/<?> Wahl:<Pfeile> Ausführen:<RETURN> Verlassen:<ESC><q>",
-" Zum Weitermachen bitte irgendeine Taste tippen!",
-"Bitte warten ... Ich räume auf!"
-);
-ROW 3 TEXT CONST infotext :: ROW 3 TEXT : (
-" Für diesen Menupunkt ist (noch) keine "13""13" Funktion eingetragen!",
-" Möchten Sie dieses Menu tatsächlich verlassen",
-" Leider ist zu diesem Menupunkt "13""13" kein Info - Text eingetragen!"
-
- );
-PROC install menu (TEXT CONST menutafelname):
- installmenu (menutafelname, TRUE)
-END PROC install menu;
-PROC install menu (TEXT CONST menutafelname, BOOL CONST mit kennung):
- TEXT VAR letzter parameter;
- IF mit kennung
- THEN zeige menukennung
- FI;
- initialisiere menu ggf;
- IF menutafel noch nicht angekoppelt
- THEN letzter parameter := std;
- hole menutafel;
- kopple menutafel an;
- last param (letzter parameter)
- FI.
- initialisiere menu ggf:
-
- IF NOT initialized (in this task)
- THEN angekoppelte menutafel := "";
- anzahl offener menus := 0;
- menunotiz ist gesetzt := FALSE;
- nur interne verwendung := FALSE
- FI.
- menutafel noch nicht angekoppelt:
- menutafelname <> angekoppelte menutafel.
- hole menutafel:
- IF NOT exists task (menutafeltaskname)
- THEN bereinige situation; cursor on;
- errorstop (fehlermeldung [1])
- FI;
- disable stop;
- fetch (menutafelname, /menutafeltaskname);
-
- IF is error AND pos (errormessage, vergleichstext [1]) > 0
- THEN clear error; enable stop;
- bereinige situation; cursor on;
- errorstop (fehlermeldung [2] + menutafelname +
- fehlermeldung [3])
- ELIF is error
- THEN clear error; enable stop;
- bereinige situation; cursor on;
- errorstop (errormessage)
- ELSE enable stop
- FI.
- kopple menutafel an:
- IF type (old (menutafelname)) = menutafeltype
-
- AND pos (menutafelname,menutafelpraefix) = 1
- THEN forget (ds);
- ds := old (menutafelname);
- menuleiste := ds;
- angekoppelte menutafel := menutafelname;
- forget (menutafelname, quiet)
- ELSE bereinige situation; cursor on;
- errorstop ("'" + menutafelname + fehlermeldung [4])
- FI.
-END PROC install menu;
-PROC only intern (BOOL CONST wert):
- nur interne verwendung := wert
-END PROC only intern;
-
-PROC ausstieg (BOOL CONST wert):
- mit ausstieg := wert
-END PROC ausstieg;
-TEXT PROC menukartenname:
- IF NOT initialized (in this task)
- THEN angekoppelte menutafel := "";
- anzahl offener menus := 0;
- menunotiz ist gesetzt := FALSE;
- FI;
- angekoppelte menutafel
-END PROC menukartenname;
-PROC handle menu (TEXT CONST menuname):
- nur interne verwendung := FALSE;
- mit ausstieg := TRUE;
- handle menu (menuname, "")
-END PROC handle menu;
-
-PROC handle menu (TEXT CONST menuname, ausstiegsproc):
- cursor off;
- IF nur interne verwendung
- THEN oeffne menu (menuname)
- ELSE biete menu an
- FI;
- lasse menupunkte auswaehlen;
- IF nur interne verwendung
- THEN do (ausstiegsproc);
- anzahl offener menus DECR 1;
- IF anzahl offener menus < 1 THEN erase menunotice FI;
- menuleiste.zeigeraktuell := menuleiste.zeigerhintergrund;
- menuwindow := window (1,1,79, 24);
- nur interne verwendung := FALSE;
-
- mit ausstieg := TRUE;
- cursor on
- ELSE schliesse menu;
- leere ggf den bildschirm
- FI.
- biete menu an:
- REAL VAR zwischenzeit :: clock (1) - zeitpunkt;
- IF zwischenzeit < 2.0
- THEN pause (20 - int (10.0 * zwischenzeit))
- FI;
- oeffne menu (menuname).
- leere ggf den bildschirm:
- IF anzahl offener menus < 1
- THEN erase menunotice;
- page; cursor on
- FI.
- lasse menupunkte auswaehlen:
- TEXT VAR kuerzelkette :: "";
-
- starte aktuelle untermenuoperationen;
- REP
- cursor in warteposition;
- ermittle aktuelle kuerzelkette;
- nimm zeichen auf;
- interpretiere zeichen;
- UNTIL menu verlassen gewuenscht PER.
- nimm zeichen auf:
- TEXT CONST erlaubte zeichen ::auswahlstring1 + kuerzelkette;
- TEXT VAR eingabezeichen;
- INT VAR zeichenposition;
- REP
- inchar (eingabezeichen);
- zeichenposition := pos (erlaubte zeichen, eingabezeichen);
- piepse ggf
- UNTIL zeichenposition > 0 PER.
-
- piepse ggf:
- IF zeichenposition = 0 THEN out (piep) FI.
- menu verlassen gewuenscht:
- zeichenposition = 6 AND (zweites zeichen = "q").
- interpretiere zeichen:
- SELECT zeichenposition OF
- CASE 1: gehe einen hauptmenupunkt nach links
- CASE 2: gehe einen hauptmenupunkt nach rechts
- CASE 3: gehe einen untermenupunkt nach unten
- CASE 4: gehe einen untermenupunkt nach oben
- CASE 5: fuehre aktuellen menupunkt aus
- CASE 6: hole esc sequenz
- CASE 7: zeige erklaerungstext im menu an
-
- OTHERWISE werte kuerzeleingabe aus
- END SELECT.
- gehe einen hauptmenupunkt nach links:
- INT VAR anzahl schritte :: 1;
- beende aktuelle untermenuoperationen;
- loesche aktuelles untermenu auf bildschirm;
- loesche alte hauptmenumarkierung;
- anzahl schritte INCR clear buffer and count (""8"");
- ermittle linke menuposition;
- stelle aktuellen hauptmenupunkt invers dar;
- starte aktuelle untermenuoperationen;
- schreibe aktuelles untermenu auf bildschirm.
- gehe einen hauptmenupunkt nach rechts:
-
- anzahl schritte := 1;
- beende aktuelle untermenuoperationen;
- loesche aktuelles untermenu auf bildschirm;
- loesche alte hauptmenumarkierung;
- anzahl schritte INCR clear buffer and count (""2"");
- ermittle rechte menuposition;
- stelle aktuellen hauptmenupunkt invers dar;
- starte aktuelle untermenuoperationen;
- schreibe aktuelles untermenu auf bildschirm.
- loesche alte hauptmenumarkierung:
- erase invers (area (menuwindow), startpos, 1, ueberschriftlaenge);
-
- out (area (menuwindow), startpos, 1, ueberschrifttext).
- startpos:
- aktuelles untermenu.anfangsposition.
- ueberschriftlaenge:
- length (ueberschrifttext).
- ueberschrifttext:
- aktuelles untermenu.ueberschrift.
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- ermittle linke menuposition:
- INT VAR positionszaehler;
- FOR positionszaehler FROM 1 UPTO anzahl schritte REP
-
- drehe die menuposition um einen wert runter
- PER.
- ermittle rechte menuposition:
- FOR positionszaehler FROM 1 UPTO anzahl schritte REP
- drehe die menuposition um einen wert hoch
- PER.
- drehe die menuposition um einen wert runter:
- IF aktuelles menu.hauptmenuzeiger > 1
- THEN aktuelles menu.hauptmenuzeiger DECR 1
- ELSE aktuelles menu.hauptmenuzeiger
- := aktuelles menu.anzahl hauptmenupunkte
- FI.
- drehe die menuposition um einen wert hoch:
-
- IF aktuelles menu.hauptmenuzeiger
- < aktuelles menu.anzahl hauptmenupunkte
- THEN aktuelles menu.hauptmenuzeiger INCR 1
- ELSE aktuelles menu.hauptmenuzeiger := 1
- FI.
- gehe einen untermenupunkt nach unten:
- INT VAR naechster aktiver := folgender aktiver untermenupunkt;
- nimm ummarkierung vor.
- gehe einen untermenupunkt nach oben:
- naechster aktiver := vorausgehender aktiver untermenupunkt;
- nimm ummarkierung vor.
- nimm ummarkierung vor:
- IF ueberhaupt aktive menupunkte vorhanden
-
- THEN demarkiere aktuellen untermenupunkt;
- gehe zum folgenden untermenupunkt;
- markiere aktuellen untermenupunkt
- FI.
- ueberhaupt aktive menupunkte vorhanden:
- (aktuelles untermenu.belegt > 0) CAND (naechster aktiver > 0).
- gehe zum folgenden untermenupunkt:
- aktuelles menu.untermenuzeiger := naechster aktiver.
- stelle aktuellen hauptmenupunkt invers dar:
- out invers (area (menuwindow), startpos, 1, ueberschrifttext).
- fuehre aktuellen menupunkt aus:
-
- IF nur interne verwendung AND mit ausstieg
- THEN kennzeichne als angetickt;
- disable stop;
- do (ausstiegsproc);
- do (menuanweisung);
- aktueller menupunkt.angewaehlt := FALSE;
- IF is error THEN put error; clear error FI;
- enable stop;
- anzahl offener menus DECR 1;
- menuleiste.zeigeraktuell := menuleiste.zeigerhintergrund;
- menuwindow := window (1,1,79, 24);
- nur interne verwendung := FALSE;
-
- cursor on;
- LEAVE handle menu
- ELSE kennzeichne als angetickt;
- fuehre operation aus (menuanweisung);
- nimm kennzeichnung zurueck
- FI.
- kennzeichne als angetickt:
- aktueller menupunkt.angewaehlt := TRUE;
- markiere aktuellen untermenupunkt.
- nimm kennzeichnung zurueck:
- aktueller menupunkt.angewaehlt := FALSE;
- markiere aktuellen untermenupunkt.
- menuanweisung:
- compress (aktueller menupunkt.procname).
- aktueller menupunkt:
-
- aktuelles untermenu.menupunkt [aktuelles menu.untermenuzeiger].
- hole esc sequenz:
- TEXT VAR zweites zeichen;
- inchar (zweites zeichen);
- SELECT pos ("q?$", zweites zeichen) OF
- CASE 1: erfrage abbruch
- CASE 2: zeige menubedienhinweise
- CASE 3: gib info aus
- OTHERWISE out (piep)
- END SELECT.
- erfrage abbruch:
- IF menuno (infotext [2], 5)
- THEN zweites zeichen := "n" (* gleichgültig, nur nicht 'q' *)
- FI.
- zeige menubedienhinweise:
-
- INT VAR gewaehlt;
- REP
- gewaehlt := menualternative ( alttext, altwahl, altzusatz, 5, FALSE);
- erfuelle den wunsch
- UNTIL ausstieg aus bedienhinweisen gewuenscht PER.
- alttext:
- menuleiste.menutext.platz [1].
- altwahl:
- menuleiste.menutext.platz [2].
- altzusatz:
- menuleiste.menutext.platz [3].
- erfuelle den wunsch:
- SELECT gewaehlt OF
- CASE 1,101,106: menuinfo (menuleiste.menutext.platz [4], 5, maxint)
- CASE 2,102,107: menuinfo (menuleiste.menutext.platz [5], 5, maxint)
-
- CASE 3,103,108: menuinfo (menuleiste.menutext.platz [6], 5, maxint)
- CASE 4,104,109: menuinfo (menuleiste.menutext.platz [7], 5, maxint)
- END SELECT.
- ausstieg aus bedienhinweisen gewuenscht:
- gewaehlt = 5 OR gewaehlt = 105 OR gewaehlt = 110.
- gib info aus:
- menuinfo (menuleiste.menutext.platz [20]).
- zeige erklaerungstext im menu an:
- IF compress (erklaerungstext) = ""
- THEN menuinfo (infotext [3])
- ELSE menuinfo (erklaerungstext)
- FI.
- erklaerungstext:
-
- aktueller menupunkt.boxtext.
- werte kuerzeleingabe aus:
- naechster aktiver := pos (kuerzelkette, eingabezeichen);
- nimm ummarkierung vor;
- fuehre aktuellen menupunkt aus.
- starte aktuelle untermenuoperationen:
- ermittle aktuelle kuerzelkette;
- IF startoperation <> ""
- THEN fuehre operation aus (startoperation)
- FI.
- startoperation:
- compress (aktuelles untermenu.startprozedurname).
- ermittle aktuelle kuerzelkette:
- kuerzelkette := "";
- INT VAR kuerzelzeiger;
-
- FOR kuerzelzeiger FROM 1 UPTO aktuelles untermenu.belegt REP
- IF compress (aktuelles punktkuerzel) = ""
- THEN kuerzelkette CAT ""0"" { beliebiger Code der Länge 1 }
- ELSE haenge ggf kuerzel an
- FI
- PER.
- aktuelles punktkuerzel:
- aktuelles untermenu.menupunkt [kuerzelzeiger].punktkuerzel.
- haenge ggf kuerzel an:
- IF betrachteter punkt ist aktiv
- THEN kuerzelkette CAT aktuelles punktkuerzel
- ELSE kuerzelkette CAT ""0""
- FI.
- betrachteter punkt ist aktiv:
-
- aktuelles untermenu.menupunkt [kuerzelzeiger].aktiv.
- beende aktuelle untermenuoperationen:
- kuerzelkette := "".
-END PROC handle menu;
-PROC oeffne menu (TEXT CONST menuname):
- cursor off;
- suche eingestelltes menu;
- IF menu existiert nicht
- THEN cursor on;
- page;
- errorstop (fehlermeldung [5] + menuname + fehlermeldung [6])
- FI;
- anzahl offener menus INCR 1;
- ggf neue seite aufschlagen;
- ueberpruefe anzahl offener menus;
- lege ggf aktuelles menu auf eis;
-
- initialisiere den menubildschirm;
- IF NOT nur interne verwendung
- THEN aktuelles menu.hauptmenuzeiger := 1;
- aktuelles menu.untermenuzeiger := 0;
- aktuelles menu.untermenuanfang := 0;
- FI;
- show menu;
- fuehre ggf menueingangsprozedur aus;
- zeige ggf menukenndaten an.
- suche eingestelltes menu:
- INT VAR i, suchzeiger;
- BOOL VAR gefunden :: FALSE;
- FOR i FROM 1 UPTO menuleiste.belegt REP
- IF menuleiste.menu [i].menuname = menuname
-
- THEN gefunden := TRUE;
- suchzeiger := i;
- FI
- UNTIL menuleiste.menu [i].menuname = menuname PER.
- menu existiert nicht:
- NOT gefunden.
- ueberpruefe anzahl offener menus:
- IF anzahl offener menus > 2
- THEN anzahl offener menus := 0; cursor on;
- errorstop (fehlermeldung [7])
- FI.
- lege ggf aktuelles menu auf eis:
- IF anzahl offener menus = 2
- THEN menuleiste.zeigerhintergrund := menuleiste.zeigeraktuell
- FI;
- menuleiste.zeigeraktuell := suchzeiger.
-
- initialisiere den menubildschirm:
- IF anzahl offener menus = 2
- THEN menuwindow := window (6, 4, 73, 20)
- ELSE menuwindow := window (1, 1, 79, 24);
- FI.
- fuehre ggf menueingangsprozedur aus:
- IF aktuelles menu.menueingangsprozedur <> ""
- THEN fuehre operation aus (aktuelles menu.menueingangsprozedur)
- FI.
- ggf neue seite aufschlagen:
- IF anzahl offener menus = 1 THEN page FI.
- zeige ggf menukenndaten an:
- IF anzahl offener menus = 1 AND aktuelles menu.menuinfo <> bleibt leer symbol
-
- THEN write menunotice (vollstaendiger infotext, 4);
- pause (100);
- erase menunotice
- FI.
- vollstaendiger infotext:
- aktuelles menu.menuinfo +
- aktuelles menu.lizenznummer +
- aktuelles menu.versionsnummer.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
-END PROC oeffne menu;
-PROC show menu:
- ueberpruefe menudaten;
- stelle hauptmenuleiste zusammen;
- zeige hauptmenu an;
- stelle aktuellen hauptmenupunkt invers dar;
- schreibe aktuelles untermenu auf bildschirm;
-
- zeige informationszeile an.
- ueberpruefe menudaten:
- IF anzahl offener menus = 0
- THEN errorstop (fehlermeldung [8])
- ELIF aktuelles menu.anzahl hauptmenupunkte < 1
- THEN errorstop (fehlermeldung [9])
- FI.
- stelle hauptmenuleiste zusammen:
- TEXT VAR hauptmenuzeile :: "";
- INT VAR zeiger;
- hauptmenuzeile CAT aktuelles menu.menuname;
- hauptmenuzeile CAT ":";
- FOR zeiger FROM 1 UPTO aktuelles menu.anzahl hauptmenupunkte REP
- haenge hauptmenupunkt an
-
- PER.
- haenge hauptmenupunkt an:
- hauptmenuzeile CAT hauptmenuluecke;
- hauptmenuzeile CAT hauptmenupunktname.
- hauptmenupunktname:
- aktuelles menu.einzelmenu [zeiger].ueberschrift.
- zeige hauptmenu an:
- page (menuwindow, TRUE);
- out menuframe (area (menuwindow));
- cursor (menuwindow, 1, 1);
- out (menuwindow, hauptmenuzeile).
- stelle aktuellen hauptmenupunkt invers dar:
- cursor (menuwindow, startposition, 1);
- out (menuwindow, invers (ueberschrifttext)).
-
- startposition:
- aktuelles untermenu.anfangsposition - 1.
- ueberschrifttext:
- aktuelles untermenu.ueberschrift.
- zeige informationszeile an:
- write permanent footnote (hinweis [1]).
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC show menu;
-PROC schreibe aktuelles untermenu auf bildschirm:
- ermittle linke obere ecke des untermenukastens;
- wirf untermenu aus;
-
- show menunotice;
- cursor in warteposition.
- ermittle linke obere ecke des untermenukastens:
- aktuelles menu.untermenuanfang := menumitte - halbe menubreite;
- achte auf randextrema.
- menumitte:
- startposition + (length (ueberschrifttext) DIV 2) - 1.
- startposition:
- aktuelles untermenu.anfangsposition.
- ueberschrifttext:
- aktuelles untermenu.ueberschrift.
- halbe menubreite:
- aktuelles untermenu.maxlaenge DIV 2.
- achte auf randextrema:
- gleiche ggf linken rand aus;
-
- gleiche ggf rechten rand aus.
- gleiche ggf linken rand aus:
- IF aktuelles menu.untermenuanfang < 4
- THEN aktuelles menu.untermenuanfang := 4
- FI.
- gleiche ggf rechten rand aus:
- IF (aktuelles menu.untermenuanfang + aktuelles untermenu.maxlaenge) >
- (areaxsize (menuwindow) - 3)
- THEN aktuelles menu.untermenuanfang
- := areaxsize (menuwindow) - aktuelles untermenu.maxlaenge - 3
- FI.
- wirf untermenu aus:
- IF aktuelles menu.untermenuzeiger = 0
-
- THEN aktuelles menu.untermenuzeiger := folgender aktiver untermenupunkt
- FI;
- wirf untermenukopfzeile aus;
- wirf untermenurumpf aus;
- wirf untermenufusszeile aus;
- markiere aktuellen untermenupunkt.
- wirf untermenukopfzeile aus:
- cursor (menuwindow, spalte, anfangszeile);
- out (balken oben); striche; out (balken oben).
- wirf untermenufusszeile aus:
- cursor (menuwindow, spalte, endezeile);
- out (ecke unten links); striche; out (ecke unten rechts).
- spalte:
-
- aktuelles menu.untermenuanfang - 3.
- anfangszeile:
- erste untermenuzeile - 1.
- endezeile:
- erste untermenuzeile + aktuelles untermenu.belegt.
- striche:
- (aktuelles untermenu.maxlaenge + 5) TIMESOUT waagerecht.
- wirf untermenurumpf aus:
- INT VAR laufvar;
- INT CONST aktuelle punktlaenge :: aktuelles untermenu.maxlaenge + 1;
- FOR laufvar FROM 1 UPTO aktuelles untermenu.belegt REP
- wirf eine einzelne menuzeile aus
- PER.
- wirf eine einzelne menuzeile aus:
-
- out with beam (area (menuwindow), menuspalte, menuzeile,
- aktueller punktname, laenge).
- menuspalte:
- aktuelles menu.untermenuanfang.
- menuzeile:
- erste untermenuzeile + laufvar - 1.
- aktueller punktname:
- untermenubezeichnung (laufvar).
- laenge:
- aktuelle punktlaenge.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC schreibe aktuelles untermenu auf bildschirm;
-
-PROC loesche aktuelles untermenu auf bildschirm:
- beende aktuelle untermenuoperationen;
- loesche untermenu auf bildschirm;
- schreibe balken wieder hin;
- aktuelles menu.untermenuzeiger := 1.
- beende aktuelle untermenuoperationen:
- IF leaveoperation <> ""
- THEN fuehre operation aus (leaveoperation)
- FI.
- leaveoperation:
- compress (aktuelles untermenu.leaveprozedurname).
- loesche untermenu auf bildschirm:
- INT VAR laufvar;
- FOR laufvar FROM aktuelles untermenu.belegt + 1 DOWNTO 1 REP
-
- loesche eine einzelne menuzeile
- PER.
- loesche eine einzelne menuzeile:
- erase with beam (area (menuwindow), menuspalte, menuzeile, laenge).
- menuspalte:
- aktuelles menu.untermenuanfang.
- menuzeile:
- erste untermenuzeile + laufvar - 1.
- laenge:
- aktuelles untermenu.maxlaenge + 1.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
- schreibe balken wieder hin:
-
- cursor (menuwindow, spalte, anfangszeile);
- (aktuelles untermenu.maxlaenge + 7) TIMESOUT waagerecht.
- spalte:
- aktuelles menu.untermenuanfang - 3.
- anfangszeile:
- erste untermenuzeile - 1.
-END PROC loesche aktuelles untermenu auf bildschirm;
-PROC markiere aktuellen untermenupunkt:
- IF aktuelles menu.untermenuzeiger <> 0
- THEN laufe ggf zum naechsten aktiven menupunkt;
- out invers with beam (area (menuwindow), menuspalte, menuzeile,
- aktueller punktname, laenge)
-
- FI.
- laufe ggf zum naechsten aktiven menupunkt:
- IF NOT aktuelles untermenu.menupunkt [aktuelles menu.untermenuzeiger].aktiv
- THEN aktuelles menu.untermenuzeiger := folgender aktiver untermenupunkt
- FI.
- menuspalte:
- aktuelles menu.untermenuanfang.
- menuzeile:
- erste untermenuzeile - 1 + aktuelles menu.untermenuzeiger.
- aktueller punktname:
- untermenubezeichnung (aktuelles menu.untermenuzeiger).
- laenge:
- aktuelles untermenu.maxlaenge + 1.
- aktuelles menu:
-
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC markiere aktuellen untermenupunkt;
-PROC demarkiere aktuellen untermenupunkt:
- IF aktuelles menu.untermenuzeiger <> 0
- THEN erase invers (area (menuwindow), menuspalte, menuzeile, laenge);
- out (area (menuwindow), menuspalte, menuzeile,
- aktueller punktname, laenge)
- FI.
- menuspalte:
- aktuelles menu.untermenuanfang.
-
- menuzeile:
- erste untermenuzeile - 1 + aktuelles menu.untermenuzeiger.
- aktueller punktname:
- untermenubezeichnung (aktuelles menu.untermenuzeiger).
- laenge:
- aktuelles untermenu.maxlaenge + 1.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC demarkiere aktuellen untermenupunkt;
-INT PROC folgender aktiver untermenupunkt:
- INT VAR anzahl aktiver menupunkte :: 0;
-
- untersuche anzahl aktiver menupunkte;
- IF kein aktiver menupunkt vorhanden
- THEN 0
- ELIF nur ein aktiver menupunkt vorhanden
- THEN liefere einzigen aktiven menupunkt
- ELSE liefere naechsten aktiven menupunkt
- FI.
- untersuche anzahl aktiver menupunkte:
- INT VAR zaehler, position;
- FOR zaehler FROM 1 UPTO aktuelles untermenu.belegt REP
- IF aktuelles untermenu.menupunkt [zaehler].aktiv
- THEN anzahl aktiver menupunkte INCR 1;
- position := zaehler
-
- FI
- UNTIL anzahl aktiver menupunkte > 1 PER.
- kein aktiver menupunkt vorhanden:
- anzahl aktiver menupunkte = 0.
- nur ein aktiver menupunkt vorhanden:
- anzahl aktiver menupunkte = 1.
- liefere einzigen aktiven menupunkt:
- position.
- liefere naechsten aktiven menupunkt:
- INT VAR interner zeiger;
- stelle internen zeiger auf den naechsten menupunkt;
- WHILE NOT punkt ist aktiv REP
- untersuche naechsten menupunkt
- PER;
- ergebnis.
- stelle internen zeiger auf den naechsten menupunkt:
-
- IF aktuelles menu.untermenuzeiger = letzter untermenupunkt
- THEN interner zeiger := 1
- ELSE interner zeiger := aktuelles menu.untermenuzeiger + 1
- FI.
- letzter untermenupunkt:
- aktuelles untermenu.belegt.
- punkt ist aktiv:
- aktuelles untermenu.menupunkt [interner zeiger].aktiv.
- untersuche naechsten menupunkt:
- IF interner zeiger = letzter untermenupunkt
- THEN interner zeiger := 1
- ELSE interner zeiger INCR 1
- FI.
-
- ergebnis:
- interner zeiger.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC folgender aktiver untermenupunkt;
-INT PROC vorausgehender aktiver untermenupunkt:
- INT VAR anzahl aktiver menupunkte :: 0;
- untersuche anzahl aktiver menupunkte;
- IF kein aktiver menupunkt vorhanden
- THEN 0
- ELIF nur ein aktiver menupunkt vorhanden
- THEN liefere einzigen aktiven menupunkt
-
- ELSE liefere vorausgehenden aktiven menupunkt
- FI.
- untersuche anzahl aktiver menupunkte:
- INT VAR zaehler, position;
- FOR zaehler FROM 1 UPTO aktuelles untermenu.belegt REP
- IF aktuelles untermenu.menupunkt [zaehler].aktiv
- THEN anzahl aktiver menupunkte INCR 1;
- position := zaehler
- FI
- UNTIL anzahl aktiver menupunkte > 1 PER.
- kein aktiver menupunkt vorhanden:
- anzahl aktiver menupunkte = 0.
- nur ein aktiver menupunkt vorhanden:
- anzahl aktiver menupunkte = 1.
-
- liefere einzigen aktiven menupunkt:
- position.
- liefere vorausgehenden aktiven menupunkt:
- INT VAR interner zeiger;
- stelle internen zeiger auf vorausgehenden menupunkt;
- WHILE NOT punkt ist aktiv REP
- untersuche vorausgehenden menupunkt
- PER;
- ergebnis.
- stelle internen zeiger auf vorausgehenden menupunkt:
- IF aktuelles menu.untermenuzeiger <= 1
- THEN interner zeiger := letzter untermenupunkt
- ELSE interner zeiger := aktuelles menu.untermenuzeiger - 1
-
- FI.
- letzter untermenupunkt:
- aktuelles untermenu.belegt.
- punkt ist aktiv:
- aktuelles untermenu.menupunkt [interner zeiger].aktiv.
- untersuche vorausgehenden menupunkt:
- IF interner zeiger = 1
- THEN interner zeiger := letzter untermenupunkt
- ELSE interner zeiger DECR 1
- FI.
- ergebnis:
- interner zeiger.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-
-END PROC vorausgehender aktiver untermenupunkt;
-PROC cursor in warteposition:
- cursor (areax (menuwindow), areay (menuwindow) + 1)
-END PROC cursor in warteposition;
-TEXT PROC untermenubezeichnung (INT CONST position):
- TEXT VAR bezeichnung :: "";
- bezeichnung CAT kennzeichnung;
- bezeichnung CAT punktkennung;
- bezeichnung.
- kennzeichnung:
- IF aktueller menupunkt.aktiv
- AND aktueller menupunkt.angewaehlt
- THEN "*"
- ELIF aktueller menupunkt.aktiv
-
- AND aktueller menupunkt.punktkuerzel <> ""
- THEN aktueller menupunkt.punktkuerzel
- ELIF aktueller menupunkt.aktiv
- AND aktueller menupunkt.punktkuerzel = ""
- THEN blank
- ELSE "-"
- FI.
- punktkennung:
- IF menupunkt ist trennzeile
- THEN strichellinie
- ELSE aktueller menupunkt.punktname
- FI.
- menupunkt ist trennzeile:
- aktueller menupunkt.punktname = (blank + trennzeilensymbol).
- strichellinie:
-
- (aktuelles untermenu.maxlaenge + 1) * "-".
- aktueller menupunkt:
- aktuelles untermenu.menupunkt [position].
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC untermenubezeichnung;
-PROC fuehre operation aus (TEXT CONST operation):
- disable stop;
- IF operation = ""
- THEN menuinfo (infotext [1]);
- LEAVE fuehre operation aus
- FI;
- do (operation);
-
- IF is error
- THEN menuinfo (errormessage, 5);
- clear error
- FI;
- old menufootnote;
- enable stop;
- cursor off
-END PROC fuehre operation aus;
-PROC veraendere aktivierung (TEXT CONST unterpunkt, BOOL CONST eintrag):
- INT VAR unterpunktposition :: 0, zeiger;
- suche unterpunkt;
- aendere aktivierung.
- suche unterpunkt:
- FOR zeiger FROM 1 UPTO untermenuende REP
- IF untermenupunkt = blank + compress (unterpunkt)
- THEN unterpunktposition := zeiger;
- LEAVE suche unterpunkt
-
- FI
- PER;
- LEAVE veraendere aktivierung.
- untermenuende:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].belegt.
- untermenupunkt:
- aktuelles untermenu.menupunkt [zeiger].punktname.
- aendere aktivierung:
- aktuelles untermenu.menupunkt [unterpunktposition].aktiv := eintrag.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC veraendere aktivierung;
-
-PROC veraendere aktivierung (INT CONST punktnummer, BOOL CONST eintrag):
- IF punktnummer >= 1 AND punktnummer <= untermenuende
- THEN aktuelles untermenu.menupunkt [punktnummer].aktiv := eintrag
- FI.
- untermenuende:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].belegt.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC veraendere aktivierung;
-PROC veraendere anwahl (TEXT CONST unterpunkt, BOOL CONST eintrag):
-
- INT VAR unterpunktposition :: 0, zeiger;
- suche unterpunkt;
- aendere anwahl.
- suche unterpunkt:
- FOR zeiger FROM 1 UPTO untermenuende REP
- IF untermenupunkt = blank + compress (unterpunkt)
- THEN unterpunktposition := zeiger;
- LEAVE suche unterpunkt
- FI
- PER;
- enable stop;
- errorstop (fehlermeldung [10]).
- untermenuende:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].belegt.
- untermenupunkt:
- aktuelles untermenu.menupunkt [zeiger].punktname.
-
- aendere anwahl:
- aktuelles untermenu.menupunkt [unterpunktposition].angewaehlt := eintrag.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
- aktuelles untermenu:
- aktuelles menu.einzelmenu [aktuelles menu.hauptmenuzeiger].
-END PROC veraendere anwahl;
-PROC activate (TEXT CONST unterpunkt):
- enable stop;
- veraendere aktivierung (unterpunkt, TRUE)
-END PROC activate;
-PROC activate (INT CONST punktnummer):
- enable stop;
- veraendere aktivierung (punktnummer, TRUE)
-
-END PROC activate;
-PROC deactivate (TEXT CONST unterpunkt):
- enable stop;
- veraendere aktivierung (unterpunkt, FALSE)
-END PROC deactivate;
-PROC deactivate (INT CONST punktnummer):
- enable stop;
- veraendere aktivierung (punktnummer, FALSE)
-END PROC deactivate;
-PROC select (TEXT CONST unterpunkt):
- enable stop;
- veraendere anwahl (unterpunkt, TRUE)
-END PROC select;
-PROC deselect (TEXT CONST unterpunkt):
- enable stop;
- veraendere anwahl (unterpunkt, FALSE)
-END PROC deselect;
-
-PROC schliesse menu:
- IF aktuelles menu.menuausgangsprozedur <> ""
- THEN menufootnote (hinweis [3]);
- fuehre operation aus (aktuelles menu.menuausgangsprozedur)
- FI;
- anzahl offener menus DECR 1;
- IF anzahl offener menus = 1
- THEN aktiviere das auf eis gelegte menu
- FI.
- aktiviere das auf eis gelegte menu:
- menuleiste.zeigeraktuell := menuleiste.zeigerhintergrund;
- menuwindow := window (1, 1, 79, 24);
- show menu.
- aktuelles menu:
- menuleiste.menu [menuleiste.zeigeraktuell].
-
-END PROC schliesse menu;
-PROC refresh submenu:
- schreibe aktuelles untermenu auf bildschirm;
- show menunotice;
-END PROC refresh submenu;
-PROC regenerate menuscreen:
- IF anzahl offener menus = 0
- THEN errorstop (fehlermeldung [8])
- ELIF anzahl offener menus = 1
- THEN page;
- show menu;
- show menunotice
- ELSE zeige erstes menu an;
- zeige zweites menu an;
- show menunotice
- FI.
- zeige erstes menu an:
- INT VAR menuzeiger :: menuleiste.zeigeraktuell;
-
- menuleiste.zeigeraktuell := menuleiste.zeigerhintergrund;
- menuwindow := window (1, 1, 79, 24);
- anzahl offener menus := 1;
- show menu.
- zeige zweites menu an:
- menuleiste.zeigeraktuell := menuzeiger;
- menuwindow := window (6, 4, 73, 20);
- anzahl offener menus := 2;
- show menu.
-END PROC regenerate menuscreen;
-PROC menuinfo (TEXT CONST t, INT CONST position, timelimit):
- boxinfo (menuwindow, t, position, timelimit, FALSE);
- schreibe aktuelles untermenu auf bildschirm;
-
- old menufootnote
-END PROC menuinfo;
-PROC menuinfo (TEXT CONST t, INT CONST position):
- menuinfo (t, position, maxint)
-END PROC menuinfo;
-PROC menuinfo (TEXT CONST t):
- menuinfo (t, 5, maxint)
-END PROC menuinfo;
-INT PROC menualternative (TEXT CONST t, auswahlliste, zusatztasten,
- INT CONST position, BOOL CONST mit abbruch):
- INT VAR ergebnis := boxalternative (menuwindow, t, auswahlliste,
- zusatztasten, position, mit abbruch, FALSE);
-
- schreibe aktuelles untermenu auf bildschirm;
- old menufootnote;
- ergebnis
-END PROC menualternative;
-BOOL PROC menuyes (TEXT CONST frage, INT CONST position):
- BOOL VAR wert := boxyes (menuwindow, frage, position, FALSE);
- schreibe aktuelles untermenu auf bildschirm;
- old menufootnote;
- wert
-END PROC menuyes;
-BOOL PROC menuno (TEXT CONST frage, INT CONST position):
- NOT menuyes (frage, position)
-END PROC menuno;
-TEXT PROC menuone (THESAURUS CONST thes, TEXT CONST t1, t2,
- BOOL CONST mit reinigung):
-
- TEXT CONST wert :: boxone (menuwindow, thes, t1, t2, mit reinigung);
- IF mit reinigung
- THEN schreibe aktuelles untermenu auf bildschirm;
- old menufootnote
- FI;
- wert
-END PROC menuone;
-THESAURUS PROC menusome (THESAURUS CONST thes, TEXT CONST t1, t2,
- BOOL CONST mit reinigung):
- THESAURUS CONST thesaurus :: boxsome (menuwindow, thes, t1, t2,
- mit reinigung);
- IF mit reinigung
- THEN schreibe aktuelles untermenu auf bildschirm;
-
- old menufootnote
- FI;
- thesaurus
-END PROC menusome;
-TEXT PROC menuanswer (TEXT CONST t, vorgabe, INT CONST position):
- TEXT VAR wert :: boxanswer (menuwindow, t, vorgabe, position, FALSE);
- schreibe aktuelles untermenu auf bildschirm;
- old menufootnote;
- wert
-END PROC menuanswer;
-TEXT PROC menuanswerone (TEXT CONST t, vorgabe, THESAURUS CONST thes,
- TEXT CONST t1, t2, BOOL CONST mit reinigung):
- TEXT VAR wert :: boxanswerone (menuwindow, t, vorgabe, thes, t1, t2,
-
- mit reinigung, FALSE)
- IF mit reinigung
- THEN schreibe aktuelles untermenu auf bildschirm;
- old menufootnote
- FI;
- wert
-END PROC menuanswer one;
-THESAURUS PROC menuanswersome (TEXT CONST t, vorgabe, THESAURUS CONST thes,
- TEXT CONST t1, t2, BOOL CONST mit reinigung):
- THESAURUS VAR wert :: boxanswersome (menuwindow, t, vorgabe,
- thes, t1, t2, mit reinigung, FALSE)
-
- IF mit reinigung
- THEN schreibe aktuelles untermenu auf bildschirm;
- old menufootnote
- FI;
- wert
-END PROC menuanswersome;
-PROC menufootnote (TEXT CONST t):
- cursor (menuwindow, 1, areaysize (menuwindow) - 1);
- areaxsize (menuwindow) TIMESOUT waagerecht;
- cursor (menuwindow, 1, areaysize (menuwindow));
- outtext (t, 1, areaxsize (menuwindow))
-END PROC menufootnote;
-PROC old menufootnote:
- menufootnote (permanent footnote)
-END PROC old menufootnote;
-TEXT PROC menubasistext (INT CONST nummer):
-
- IF nummer <= 20
- THEN fehlermeldung [12]
- ELIF nummer > menuleiste.menutext.anzahl menutexte
- THEN fehlermeldung [11]
- ELSE menuleiste.menutext.platz [nummer]
- FI
-END PROC menubasistext;
-TEXT PROC anwendungstext (INT CONST nummer):
- IF nummer > menuleiste.infotext.anzahl infotexte
- THEN fehlermeldung [11]
- ELSE menuleiste.infotext.stelle [nummer]
- FI
-END PROC anwendungstext;
-PROC zeige menukennung:
- IF anzahl offener menus = 0
- THEN zeige angaben und emblem;
-
- FI.
- zeige angaben und emblem:
- ROW 5 WINDOW VAR w;
- w [ 1] := window (40, 3, 30, 9);
- w [ 2] := window (36, 5, 30, 9);
- w [ 3] := window (30, 7, 30, 9);
- w [ 4] := window (22, 9, 30, 9);
- w [ 5] := window (12, 11, 30, 9);
- page;
- show (w [1]); out (w [1], center (w [1], invers (systemkuerzel)));
- show (w [2]); out (w [2], " Version " + versionsnummer);
- show (w [3]); out (w [3], copyright1);
- show (w [4]); out (w [4], copyright2);
- show (w [5]);
-
- cursor (w [5], 1, 2);out (w [5], " lll sssssssss ");
- cursor (w [5], 1, 3);out (w [5], " lll sss sss ");
- cursor (w [5], 1, 4);out (w [5], " lll sss ");
- cursor (w [5], 1, 5);out (w [5], " lll sssssssss ");
- cursor (w [5], 1, 6);out (w [5], " lll sss ");
- cursor (w [5], 1, 7);out (w [5], " lll latta soft sss ");
- cursor (w [5], 1, 8);out (w [5], " lllllllll sssssssss ");
- cursor (79, 24);
-
- zeitpunkt := clock (1);
-END PROC zeige menukennung;
-PROC reset dialog:
- angekoppelte menutafel := "";
- anzahl offener menus := 0
-END PROC reset dialog;
-PROC write permanent footnote (TEXT CONST t):
- permanent footnote := t;
- cursor (menuwindow, 1, areaysize (menuwindow));
- outtext (t, 1, areaxsize (menuwindow))
-END PROC write permanent footnote;
-PROC write menunotice (TEXT CONST t, INT CONST position):
- erase menunotice;
- boxnotice (menuwindow, t, position, menunotizx, menunotizy,
-
- menunotizxsize, menunotizysize);
- menunotiztext := t;
- menunotizposition := position;
- menunotiz ist gesetzt := TRUE
-END PROC write menunotice;
-PROC show menunotice:
- IF menunotiz ist gesetzt
- THEN boxnotice (menuwindow, menunotiztext, menunotizposition,
- menunotizx, menunotizy, menunotizxsize, menunotizysize);
- FI
-END PROC show menunotice;
-PROC erase menunotice:
- INT VAR spa, zei;
- get cursor (spa, zei);
-
- IF menunotiz ist gesetzt
- THEN page up (menunotizx, menunotizy, menunotizxsize, menunotizysize);
- menunotiz ist gesetzt := FALSE;
- cursor (spa, zei)
- FI
-END PROC erase menunotice;
-PROC initialize menuwindow:
- schreibfenster := window (areax (menuwindow) + 1,
- areay (menuwindow) + 3,
- areaxsize (menuwindow) - 2,
- areaysize (menuwindow) - 4)
-END PROC initialize menuwindow;
-
-PROC show menuwindow:
- initialize menuwindow;
- show (schreibfenster);
-END PROC show menuwindow;
-PROC menuwindow page:
- initialize menuwindow;
- page (schreibfenster)
-END PROC menuwindow page;
-PROC menuwindowout (TEXT CONST text):
- out (schreibfenster, text)
-END PROC menuwindow out;
-PROC menuwindowget (TEXT VAR text):
- get (schreibfenster, text)
-END PROC menuwindowget;
-PROC menuwindoweditget (TEXT VAR text):
- editget (schreibfenster, text)
-END PROC menuwindoweditget;
-PROC menuwindowedit (TEXT CONST dateiname):
-
- initialize menuwindow;
- edit (schreibfenster, dateiname)
-END PROC menuwindowedit;
-PROC menuwindowedit (FILE VAR f):
- initialize menuwindow;
- edit (schreibfenster, f)
-END PROC menuwindowedit;
-PROC menuwindowshow (TEXT CONST dateiname):
- initialize menuwindow;
- show (schreibfenster, dateiname)
-END PROC menuwindowshow;
-PROC menuwindowshow (FILE VAR f):
- initialize menuwindow;
- show (schreibfenster, f)
-END PROC menuwindowshow;
-BOOL PROC menuwindowyes (TEXT CONST frage):
- yes (schreibfenster, frage)
-
-END PROC menuwindowyes;
-BOOL PROC menuwindowno (TEXT CONST frage):
- no (schreibfenster, frage)
-END PROC menuwindowno;
-PROC menuwindowline:
- menuwindowline (1)
-END PROC menuwindowline;
-PROC menuwindowline (INT CONST anzahl):
- line (schreibfenster, anzahl)
-END PROC menuwindowline;
-PROC menuwindowcursor (INT CONST spa, zei):
- cursor (schreibfenster, spa, zei)
-END PROC menuwindowcursor;
-PROC get menuwindowcursor (INT VAR spa, zei):
- get cursor (schreibfenster, spa, zei)
-END PROC get menuwindowcursor;
-
-INT PROC remaining menuwindowlines:
- remaining lines (schreibfenster)
-END PROC remaining menuwindowlines;
-TEXT PROC menuwindowcenter (TEXT CONST t):
- center (schreibfenster, t)
-END PROC menuwindowcenter;
-PROC menuwindowstop:
- menuwindowstop (2)
-END PROC menuwindowstop;
-PROC menuwindowstop (INT CONST anzahl):
- stop (schreibfenster, anzahl)
-END PROC menuwindowstop;
-WINDOW PROC current menuwindow:
- initialize menuwindow;
- schreibfenster
-END PROC current menuwindow;
-PROC stdinfoedit (FILE VAR f, INT CONST oberste zeile):
-
- IF oberste zeile < 1 OR oberste zeile > 3
- THEN errorstop (fehlermeldung [13]);
- FI;
- garantiere menukarte;
- cursor (1, oberste zeile); out (cleop);
- cursor (1, 23); out(79 * waagerecht);
- cursor (1, 24); outtext (menubasistext (141), 1, 79);
- editorinfofenster := window (1, oberste zeile + 1, 79, 24 - oberste zeile);
- kommando auf taste legen ("?", "editorinformationen");
- command dialogue (FALSE);
- cursor on; edit (f, 1, oberste zeile, 79, 23 - oberste zeile);
- command dialogue (TRUE);
-
- kommando auf taste legen ("?", "").
- garantiere menukarte:
- TEXT VAR name := compress (menukartenname);
- IF name = ""
- THEN install menu (stdmenukartenname, FALSE)
- FI.
-END PROC stdinfoedit;
-PROC stdinfoedit (FILE VAR f):
- stdinfoedit (f, 1)
-END PROC stdinfoedit;
-PROC stdinfoedit (TEXT CONST dateiname, INT CONST oberste zeile):
- FILE VAR f :: sequential file (modify, dateiname);
- stdinfoedit (f, oberste zeile);
-END PROC stdinfoedit;
-PROC stdinfoedit (TEXT CONST dateiname):
-
- stdinfoedit (dateiname, 1)
-END PROC stdinfoedit;
-PROC editorinformationen:
- BOOL VAR ende gewuenscht :: FALSE; INT VAR z;
- FOR z FROM startwert UPTO 22 REP
- cursor (1, z); out (cleol);
- PER;
- REP
- INT VAR erg := boxalternative (editorinfofenster,
- menubasistext (149),
- menubasistext (150),
- menubasistext (151),
- 5, FALSE, FALSE);
- erfuelle den wunsch
-
- UNTIL ende gewuenscht PER;
- cursor (2, 23); 77 TIMESOUT waagerecht;
- cursor (1, 24); outtext (menubasistext (141), 1, 79).
- startwert:
- areay (editorinfofenster) + 1.
- erfuelle den wunsch:
- SELECT erg OF
- CASE 1, 101, 109: boxinfo (editorinfofenster, menubasistext (142), 5, maxint, FALSE)
- CASE 2, 102, 110: boxinfo (editorinfofenster, menubasistext (143), 5, maxint, FALSE)
- CASE 3, 103, 111: boxinfo (editorinfofenster, menubasistext (144), 5, maxint, FALSE)
- CASE 4, 104, 112: boxinfo (editorinfofenster, menubasistext (145), 5, maxint, FALSE)
-
- CASE 5, 105, 113: boxinfo (editorinfofenster, menubasistext (146), 5, maxint, FALSE)
- CASE 6, 106, 114: boxinfo (editorinfofenster, menubasistext (147), 5, maxint, FALSE)
- CASE 7, 107, 115: boxinfo (editorinfofenster, menubasistext (148), 5, maxint, FALSE)
- CASE 8, 108, 116: ende gewuenscht := TRUE
- OTHERWISE (*tue nichts*)
- END SELECT
-END PROC editorinformationen;
-PROC bereinige situation:
- page;
- forget (ds);
- reset dialog
-END PROC bereinige situation;
-
-PROC direktstart (TEXT CONST procname, BOOL CONST autoloeschen):
- TEXT VAR datname := "Selbststartergenerierungsdatei", letzter := std;
- kopple archivmenukarte an;
- schreibe programm;
- insertiere programm;
- abkoppeln.
- kopple archivmenukarte an:
- install menu (stdmenukartenname, FALSE).
- schreibe programm:
- forget (datname, quiet);
- FILE VAR f :: sequential file (output, datname);
- putline (f, menubasistext (191));
- putline (f, "do (""reset dialog; erase menunotice; " + procname + """);");
-
- putline (f, menubasistext (192));
- IF autoloeschen
- THEN putline (f, menubasistext (193))
- ELSE putline (f, menubasistext (194))
- FI;
- putline (f, menubasistext (195));
- putline (f, menubasistext (196)).
- insertiere programm:
- TEXT VAR t := "insert (""" + datname + """)"; do (t).
- abkoppeln:
- forget (datname, quiet); last param (letzter);
- reset dialog;
- global manager.
-END PROC direktstart;
-END PACKET ls dialog 5;
-
-
diff --git a/dialog/ls-DIALOG 6 b/dialog/ls-DIALOG 6
deleted file mode 100644
index 7d28f7f..0000000
--- a/dialog/ls-DIALOG 6
+++ /dev/null
@@ -1,1186 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG 6 **
- ** Archiv-/Taskhandling **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-PACKET ls dialog 6 DEFINES
- menu archiv notizort setzen,
- menu archiv grundeinstellung,
- menu archiv zieltask einstellen,
- menu archiv zieltask aendern,
- menu archiv reservieren,
- menu archiv neue diskette,
- menu archiv schreiben,
- menu archiv checken,
- menu archiv schreibcheck,
- menu archiv holen,
- menu archiv loeschen,
- menu archiv verzeichnis,
- menu archiv verzeichnis drucken,
- menu archiv initialisieren,
-
- menu archiv reservierung aufgeben,
- archiv:
-LET menukartenname = "ls-MENUKARTE:Archiv";
-LET ack = 0,
- schreiben = 1,
- checken = 2,
- schreibcheck = 3,
- holen = 4,
- loeschen = 5,
- list code = 15,
- reserve code = 19;
-BOOL VAR zieltask ist archivmanager :: TRUE,
- archiv gehoert mir :: FALSE,
- fehlerfall :: FALSE,
- kontakt mit zieltask erfolgt :: FALSE;
-
-TEXT VAR zieltaskname :: "ARCHIVE",
- aktueller archivname :: "";
-INT VAR stationsnummer :: station (myself),
- letzte funktion :: 11,
- notizort :: 3;
-PROC archiv:
- install menu (menukartenname, FALSE);
- handle menu ("ARCHIV")
-END PROC archiv;
-PROC melde zieltaskerror (TEXT CONST meldung):
- IF meldung = menubasistext (47)
- THEN menuinfo (menubasistext (123))
- ELIF meldung = menubasistext (46)
-
- THEN menuinfo (menubasistext (124))
- ELIF pos (meldung, "inkonsistent") > 0
- THEN menuinfo (menubasistext (125))
- ELIF pos (meldung, "Lesen unmoeglich") > 0
- COR pos (meldung, "Schreiben unmoeglich") > 0
- THEN menuinfo (menubasistext (126))
- ELIF pos (meldung, "Archiv heisst") > 0 AND pos (meldung, "?????") > 0
- THEN menuinfo (menubasistext (127))
- ELIF pos (meldung, "Archiv heisst") > 0
- THEN menuinfo (menubasistext (128))
- ELIF pos (meldung, "Schreibfehler") > 0 CAND pos (meldung, "Archiv") > 0
-
- THEN menuinfo (menubasistext (129))
- ELIF pos (meldung, "Lesefehler") > 0
- THEN menuinfo (menubasistext (130))
- ELIF pos (meldung, "Kommando") > 0 AND pos (meldung, "unbekannt") > 0
- THEN menuinfo (menubasistext (131))
- ELIF pos (meldung, "falscher Auftrag fuer Task") > 0
- THEN menuinfo (menubasistext (132))
- ELIF meldung = menubasistext (41)
- THEN menuinfo (menubasistext (133))
- ELIF meldung = menubasistext (42)
- THEN menuinfo (menubasistext (134))
-
- ELIF pos (meldung, "Collector") > 0 AND pos(meldung, "fehlt") > 0
- THEN menuinfo (menubasistext (135))
- ELIF pos (meldung, "kein Zugriffsrecht auf Task") > 0
- THEN menuinfo (menubasistext (132))
- ELIF pos (meldung, "nicht initialisiert") > 0
- THEN menuinfo (menubasistext (136))
- ELIF pos (meldung, "ungueltiger Format-Code") > 0
- THEN menuinfo (menubasistext (137))
- ELSE menuinfo (invers (meldung))
- FI
-END PROC melde zieltaskerror;
-PROC menu archiv notizort setzen (INT CONST wert):
-
- SELECT wert OF
- CASE 1,2,3,4,5 : notizort := wert
- OTHERWISE notizort := 3
- END SELECT
-END PROC menu archiv notizort setzen;
-PROC menu archiv grundeinstellung (INT CONST ort):
- menu archiv zieltask aendern ("ARCHIVE", station (myself), TRUE);
- menu archiv notizort setzen (ort);
- zieltask anzeigen
-END PROC menu archiv grundeinstellung;
-PROC menu archiv zieltask einstellen:
- TEXT VAR taskname :: "";
- INT VAR stationsnr, auswahl;
- BOOL VAR ist amanager;
- erfrage daten;
-
- kontrolliere daten;
- menu archiv zieltask aendern (taskname, stationsnr, ist amanager);
- refresh submenu;
- zieltask anzeigen.
- erfrage daten:
- auswahl := menualternative (menubasistext (51), menubasistext (52),
- menubasistext (53), 5, TRUE);
- SELECT auswahl OF
- CASE 1, 101 : menu archiv zieltask aendern
- ("ARCHIVE", station (myself), TRUE );
- ausstieg
- CASE 2, 102 : menu archiv zieltask aendern
-
- (name (father), station (myself), FALSE);
- ausstieg
- CASE 3, 103 : menu archiv zieltask aendern
- ("PUBLIC", station (myself), FALSE);
- ausstieg
- CASE 4, 104 : handeinstellung
- OTHERWISE ausstieg
- END SELECT.
- ausstieg:
- refresh submenu;
- zieltask anzeigen;
- LEAVE menu archiv zieltask einstellen.
- handeinstellung:
- taskname := menuanswer (menubasistext (81), zieltaskname, 5);
-
- stationsnr := int (menuanswer (menubasistext (82),
- text (station (myself)), 5));
- ist amanager := menuyes (menubasistext (83), 5).
- kontrolliere daten:
- IF compress (taskname) = ""
- OR compress (taskname) = "-"
- OR taskname = name (myself)
- THEN menuinfo (menubasistext (64));
- LEAVE menu archiv zieltask einstellen
- FI.
-END PROC menu archiv zieltask einstellen;
-PROC menu archiv zieltask aendern (TEXT CONST taskname,
-
- INT CONST stationsnr,
- BOOL CONST ist archivmanager):
- menufootnote (menubasistext (21) + menubasistext (23));
- gib ggf archiv frei;
- IF ist archivmanager
- THEN archivmanager einstellen
- ELSE sonstige task einstellen
- FI;
- aktiviere gueltige archivmenupunkte.
- gib ggf archiv frei:
- IF archiv gehoert mir
- THEN archivreservierung aufgeben
- FI.
- archivmanager einstellen:
- zieltask ist archivmanager := TRUE;
-
- zieltaskname := taskname;
- stationsnummer := stationsnr;
- kontakt mit zieltask erfolgt := FALSE;
- aktueller archivname := "";
- archiv gehoert mir := FALSE;
- letzte funktion := 11.
- sonstige task einstellen:
- zieltask ist archivmanager := FALSE;
- zieltaskname := taskname;
- stationsnummer := stationsnr;
- aktueller archivname := "";
- archiv gehoert mir := FALSE;
-
- letzte funktion := 6.
-END PROC menu archiv zieltask aendern;
-PROC menu archiv reservieren:
- TEXT VAR archivname :: "", meldung :: "";
- kontrolliere einstellung;
- menufootnote (menubasistext (21) + menubasistext (24));
- versuche archiv zu reservieren (meldung);
- werte meldung aus;
- archiv anmelden (archivname, meldung, TRUE);
- IF archivname = ""
- THEN behandle archivfehler
- ELSE aktueller archivname := archivname
- FI;
- aktiviere gueltige archivmenupunkte;
-
- refresh submenu;
- zieltask anzeigen.
- kontrolliere einstellung:
- IF NOT zieltask ist archivmanager
- THEN aktiviere gueltige archivmenupunkte;
- refresh submenu;
- LEAVE menu archiv reservieren
- ELIF NOT kontakt mit zieltask erfolgt
- THEN versuche kontakt herzustellen
- FI.
- versuche kontakt herzustellen:
- TEXT VAR fehler :: "";
- IF NOT task ist kommunikativ (fehler)
- THEN melde zieltaskerror (fehler);
- melde rigoros ab;
-
- LEAVE menu archiv reservieren
- ELSE kontakt mit zieltask erfolgt := TRUE
- FI.
- werte meldung aus:
- IF meldung <> ""
- THEN melde zieltaskerror (meldung);
- melde rigoros ab;
- LEAVE menu archiv reservieren
- FI.
- behandle archivfehler:
- melde zieltaskerror (meldung);
- archivreservierung aufgeben;
- melde rigoros ab
-END PROC menu archiv reservieren;
-PROC melde rigoros ab:
- aktueller archivname := "";
- archiv gehoert mir := FALSE;
-
- kontakt mit zieltask erfolgt := FALSE
-END PROC melde rigoros ab;
-PROC versuche archiv zu reservieren (TEXT VAR fehler):
- IF NOT kontakt mit zieltask erfolgt
- THEN fehler := menubasistext (44);
- archiv gehoert mir := FALSE;
- LEAVE versuche archiv zu reservieren
- FI;
- disable stop;
- IF eigene station
- THEN reserve ("beknackter archivename",/zieltaskname )
- ELSE reserve ("beknackter archivename", stationsnummer/zieltaskname)
- FI;
- IF is error
- THEN fehler := errormessage;
-
- melde rigoros ab;
- clear error
- ELSE archiv gehoert mir := TRUE;
- fehler := "";
- FI;
- enable stop
-END PROC versuche archiv zu reservieren;
-PROC archiv anmelden (TEXT VAR archivname, fehler, BOOL CONST mit anfrage):
- ueberpruefe archivbesitz;
- fuehre archivanmeldung aus.
- ueberpruefe archivbesitz:
- IF NOT archiv gehoert mir OR NOT kontakt mit zieltask erfolgt
- THEN fehler := menubasistext (45);
- melde rigoros ab;
- LEAVE archiv anmelden
-
- FI.
- fuehre archivanmeldung aus:
- IF mit anfrage
- THEN frage nach eingelegter diskette und melde an
- ELSE melde archiv unter richtigem namen an
- FI.
- frage nach eingelegter diskette und melde an:
- IF menuyes (menubasistext (84), 5)
- THEN menufootnote (menubasistext (21) + menubasistext (25));
- melde archiv unter richtigem namen an
- ELSE fehler := menubasistext (46);
- aktueller archivname := "";
- LEAVE archiv anmelden
-
- FI.
- melde archiv unter richtigem namen an:
- disable stop;
- IF eigene station
- THEN reserve ("beknackter archivename",/zieltaskname);
- list (/zieltaskname);
- ELSE reserve ("beknackter archivename", stationsnummer/zieltaskname);
- list (stationsnummer/zieltaskname)
- FI;
- IF is error
- THEN fehler := errormessage;
- behandle die fehlermeldung
- ELSE archivname := "beknackter archivename";
- fehler := "";
- enable stop
-
- FI.
- behandle die fehlermeldung:
- IF subtext (fehler, 1, 14) = menubasistext (61)
- CAND subtext (fehler, 16, 20) <> menubasistext (62)
- THEN clear error; enable stop;
- archivname := subtext (fehler, 16, length (fehler) - 1);
- melde archiv nun wirklich richtig an;
- fehler := "";
- enable stop
- ELIF subtext (fehler, 1, 14) = menubasistext (61)
- CAND subtext (fehler, 16, 20) = menubasistext (62)
- THEN clear error; enable stop;
-
- archivname := "";
- fehler := menubasistext (62)
- ELSE clear error; enable stop;
- archivname := ""
- FI.
- melde archiv nun wirklich richtig an:
- IF eigene station
- THEN reserve (archivname,/zieltaskname);
- ELSE reserve (archivname, stationsnummer/zieltaskname)
- FI.
-END PROC archiv anmelden;
-PROC menu archiv neue diskette:
- ueberpruefe reservierung;
- melde neue diskette an.
- ueberpruefe reservierung:
- IF NOT (archiv gehoert mir AND kontakt mit zieltask erfolgt)
-
- THEN melde zieltaskerror (menubasistext (47));
- LEAVE menu archiv neue diskette
- FI.
- melde neue diskette an:
- TEXT VAR archivname :: "", meldung :: "";
- menufootnote (menubasistext (21) + menubasistext (26));
- archiv anmelden (archivname, meldung, FALSE);
- IF archivname = ""
- THEN behandle archivfehler
- ELSE aktueller archivname := archivname
- FI;
- zieltask anzeigen.
- behandle archivfehler:
- melde zieltaskerror (meldung);
- aktueller archivname := "".
-
-END PROC menu archiv neue diskette;
-PROC menu archiv schreiben:
- dateioperation mit zieltask (schreiben);
- regenerate menuscreen
-END PROC menu archiv schreiben;
-PROC menu archiv checken:
- dateioperation mit zieltask (checken);
- regenerate menuscreen
-END PROC menu archiv checken;
-PROC menu archiv schreibcheck:
- dateioperation mit zieltask (schreibcheck);
- regenerate menuscreen
-END PROC menu archiv schreibcheck;
-PROC menu archiv holen:
- dateioperation mit zieltask (holen);
- regenerate menuscreen
-
-END PROC menu archiv holen;
-PROC menu archiv loeschen:
- dateioperation mit zieltask (loeschen);
- regenerate menuscreen
-END PROC menu archiv loeschen;
-PROC dateioperation mit zieltask (INT CONST wahl):
- ueberpruefe kommunikationsbasis und sinnhaftigkeit;
- lasse dateien auswaehlen;
- operiere mit ausgewaehlten dateien.
- ueberpruefe kommunikationsbasis und sinnhaftigkeit:
- IF unzulaessiger zieltaskname
- THEN LEAVE dateioperation mit zieltask
- ELIF zieltaskname = name (myself)
-
- THEN melde zieltaskerror (menubasistext (48));
- LEAVE dateioperation mit zieltask
- ELIF zieltask ist archivmanager AND NOT archiv gehoert mir
- THEN melde zieltaskerror (menubasistext (47));
- LEAVE dateioperation mit zieltask
- ELIF NOT zieltask ist archivmanager
- AND (wahl = checken OR wahl = schreibcheck)
- THEN gib hinweis auf unmoeglich;
- LEAVE dateioperation mit zieltask
- ELIF NOT zieltask ist archivmanager
-
- THEN stelle kontakt mit zieltask her
- ELIF wahl < schreiben OR wahl > loeschen
- THEN LEAVE dateioperation mit zieltask
- FI.
- stelle kontakt mit zieltask her:
- TEXT VAR fehler :: "";
- IF task ist kommunikativ (fehler)
- THEN kontakt mit zieltask erfolgt := TRUE
- ELSE melde zieltaskerror (fehler);
- LEAVE dateioperation mit zieltask
- FI.
- gib hinweis auf unmoeglich:
- menuinfo (menubasistext (121) + taskname + menubasistext (122)).
-
- taskname:
- IF eigene station
- THEN zieltaskname
- ELSE text (stationsnummer) + "/" + zieltaskname
- FI.
- lasse dateien auswaehlen:
- THESAURUS VAR angekreuzte;
- disable stop;
- IF wahl = schreiben OR wahl = schreibcheck
- THEN angekreuzte := menusome (ALL myself, operationshinweis,
- ankreuzhinweis, FALSE)
- ELSE angekreuzte := menusome (zieltaskthesaurus, operationshinweis,
- ankreuzhinweis, FALSE)
-
- FI;
- fehlerbehandlung.
- zieltaskthesaurus:
- IF eigene station
- THEN ALL /zieltaskname
- ELSE ALL (stationsnummer/zieltaskname)
- FI.
- ankreuzhinweis:
- menubasistext (91) + operationskennzeichnung (wahl) + menubasistext (92).
- operationshinweis:
- operationsbezeichnung (wahl) + zieltaskhinweis.
- operiere mit ausgewaehlten dateien:
- bereite bildschirm vor;
- steige ggf bei leerem thesaurus aus;
- IF wahl = schreiben OR wahl = schreibcheck
- THEN zuerst loeschen
-
- FI;
- IF wahl = schreibcheck
- THEN fehlerfall := FALSE;
- dateioperation ausfuehren (angekreuzte, schreiben, FALSE);
- IF NOT fehlerfall
- THEN dateioperation ausfuehren (angekreuzte, checken, TRUE)
- FI
- ELSE dateioperation ausfuehren (angekreuzte, wahl, TRUE)
- FI.
- bereite bildschirm vor:
- show menuwindow.
- steige ggf bei leerem thesaurus aus:
- IF NOT not empty (angekreuzte)
- THEN menuwindowline (2);
- menuwindowout (menubasistext (94));
-
- menuwindowstop;
- LEAVE dateioperation mit zieltask
- FI.
- zuerst loeschen:
- menuwindowout (menuwindowcenter (menubasistext (21) + menubasistext (31)));
- menuwindowline;
- IF not empty (angekreuzte)
- THEN disable stop;
- THESAURUS CONST zu loeschende ::
- angekreuzte / zieltaskthesaurus;
- fehlerbehandlung;
- biete ggf dateien zum loeschen an
- ELSE menuwindowpage
- FI.
- biete ggf dateien zum loeschen an:
-
- IF not empty (zu loeschende)
- THEN menuwindowout (menuwindowcenter (invers (menubasistext (108))));
- menuwindowline;
- menuwindowout (menuwindowcenter (menubasistext (109)));
- menuwindowline (2);
- dateien rausschmeissen
- ELSE menuwindowpage
- FI.
- dateien rausschmeissen:
- command dialogue (FALSE);
- biete dateien einzeln zum loeschen an;
- menuwindowpage;
- command dialogue (TRUE).
- biete dateien einzeln zum loeschen an:
-
- INT VAR z, index;
- FOR z FROM 1 UPTO highest entry (zu loeschende) REP
- disable stop;
- IF name (zu loeschende, z) <> ""
- THEN stelle frage und fuehre aus
- FI;
- fehlerbehandlung
- PER.
- stelle frage und fuehre aus:
- IF menuwindowyes ("'" + name (zu loeschende, z) + "' "
- + menubasistext (111))
- THEN erase (name (zu loeschende, z), task (zieltaskname))
- ELSE menuwindowout (menubasistext (110));
- menuwindowline;
-
- delete (angekreuzte, name (zu loeschende, z), index);
- pause (20)
- FI.
- fehlerbehandlung:
- IF is error
- THEN regenerate menuscreen;
- melde zieltaskerror (errormessage);
- clear error; enable stop;
- LEAVE dateioperation mit zieltask
- FI.
-END PROC dateioperation mit zieltask;
-PROC dateioperation ausfuehren (THESAURUS CONST angekreuzte,
- INT CONST wahl,
- BOOL CONST mit schlussbemerkung):
-
- INT VAR spalte :: 1, zeile :: 3, k, anzahl :: 0;
- menuwindowout (menuwindowcenter (invers (operationsbezeichnung (wahl)
- + zieltaskhinweis)));
- command dialogue (FALSE);
- fuehre einzelne operationen aus;
- command dialogue (TRUE);
- IF mit schlussbemerkung
- THEN schreibe schlussbemerkung
- ELSE menuwindowpage
- FI.
- fuehre einzelne operationen aus:
- FOR k FROM 1 UPTO highest entry (angekreuzte) REP
- IF name (angekreuzte, k) <> ""
-
- THEN disable stop;
- bildschirmausgabe;
- operation ausfuehren;
- anzahl INCR 1;
- fehlerbehandlung
- FI
- PER.
- bildschirmausgabe:
- spalte := 1;
- IF remaining menuwindowlines < 2
- THEN menuwindowpage; zeile := 1
- ELSE zeile INCR 1
- FI;
- menuwindowcursor (spalte, zeile);
- ergaenzter dateiname.
- ergaenzter dateiname:
- INT VAR windowcolumn, windowrow;
- SELECT wahl OF
- CASE schreiben : menuwindowout (menubasistext (105) + dateiname)
-
- CASE checken : get menuwindowcursor (windowcolumn, windowrow);
- menuwindowout (dateiname + menubasistext (106));
- menuwindowcursor (windowcolumn, windowrow);
- CASE holen : menuwindowout (menubasistext (107) + dateiname)
- END SELECT.
- dateiname:
- " """ + name (angekreuzte, k) + """ ".
- operation ausfuehren:
- IF eigene station
- THEN fuehre eigenstationoperation aus
- ELSE fuehre fremdstationoperation aus
- FI.
-
- fuehre eigenstationoperation aus:
- SELECT wahl OF
- CASE schreiben : save (name (angekreuzte, k), /zieltaskname)
- CASE checken : check (name (angekreuzte, k), /zieltaskname);
- bestaetige
- CASE holen : ueberschreiben erfragen eigene station
- CASE loeschen : loeschen erfragen eigene station
- END SELECT.
- ueberschreiben erfragen eigene station:
- IF exists (name (angekreuzte, k))
- THEN menuwindowline;
- IF menuwindowyes (dateiname + menubasistext (112))
-
- THEN zeile INCR 2;
- menuwindowline;
- forget (name (angekreuzte, k), quiet);
- fetch (name (angekreuzte, k), /zieltaskname)
- FI
- ELSE fetch (name (angekreuzte, k), /zieltaskname)
- FI.
- loeschen erfragen eigene station:
- IF menuwindowyes (dateiname + menubasistext (111))
- THEN erase (name (angekreuzte, k), /zieltaskname)
- FI.
- fuehre fremdstationoperation aus:
- SELECT wahl OF
- CASE schreiben : save (name (angekreuzte, k), ziel)
-
- CASE checken : check (name (angekreuzte, k), ziel); bestaetige
- CASE holen : ueberschreiben erfragen fremde station
- CASE loeschen : loeschen erfragen fremde station
- END SELECT.
- ueberschreiben erfragen fremde station:
- IF exists (name (angekreuzte, k))
- THEN menuwindowline;
- IF menuwindowyes (dateiname + menubasistext (112))
- THEN zeile INCR 2;
- menuwindowline;
- forget (name (angekreuzte, k), quiet);
-
- fetch (name (angekreuzte, k), ziel)
- FI
- ELSE fetch (name (angekreuzte, k), ziel)
- FI.
- loeschen erfragen fremde station:
- IF menuwindowyes (dateiname + menubasistext (111))
- THEN erase (name (angekreuzte, k), ziel)
- FI.
- ziel:
- stationsnummer/zieltaskname.
- bestaetige:
- IF NOT is error
- THEN menuwindowout (dateiname + menubasistext (114))
- FI.
- schreibe schlussbemerkung:
- IF remaining menuwindowlines < 7
- THEN menuwindowpage; menuwindowline
-
- ELSE menuwindowline (2)
- FI;
- IF anzahl > 0
- THEN menuwindowout (menubasistext (93) +
- operationskennzeichnung (wahl))
- ELSE menuwindowout (menubasistext (94))
- FI;
- menuwindowstop.
- fehlerbehandlung:
- IF is error
- THEN fehlerfall := TRUE;
- regenerate menuscreen;
- melde zieltaskerror (errormessage);
- clear error; enable stop;
- LEAVE dateioperation ausfuehren
- FI.
-END PROC dateioperation ausfuehren;
-
-TEXT PROC operationsbezeichnung (INT CONST nr):
- SELECT nr OF
- CASE schreiben : menubasistext (95)
- CASE checken : menubasistext (97)
- CASE schreibcheck : menubasistext (99)
- CASE holen : menubasistext (101)
- CASE loeschen : menubasistext (103)
- OTHERWISE ""
- END SELECT
-END PROC operationsbezeichnung;
-TEXT PROC operationskennzeichnung (INT CONST nr):
- SELECT nr OF
- CASE schreiben : menubasistext (96)
- CASE checken : menubasistext (98)
-
- CASE schreibcheck : menubasistext (100)
- CASE holen : menubasistext (102)
- CASE loeschen : menubasistext (104)
- OTHERWISE ""
- END SELECT
-END PROC operationskennzeichnung;
-BOOL PROC not empty (THESAURUS CONST t):
- INT VAR i;
- FOR i FROM 1 UPTO highest entry (t) REP
- IF name (t, i) <> ""
- THEN LEAVE not empty WITH TRUE
- FI
- PER;
- FALSE
-END PROC not empty;
-TEXT PROC zieltaskhinweis:
- IF zieltaskname = "ARCHIVE"
- THEN "(" + menubasistext (78) + ")"
-
- ELIF zieltaskname = name (father)
- THEN "(" + menubasistext (79) + ")"
- ELSE menubasistext (80) + zieltaskname + ")"
- FI
-END PROC zieltaskhinweis;
-PROC menu archiv verzeichnis:
- forget("Interne Dateiliste bei Archivoperation", quiet);
- ueberpruefe kommunikationsbasis;
- liste dateien der zieltask auf;
- regenerate menuscreen.
- ueberpruefe kommunikationsbasis:
- IF unzulaessiger zieltaskname
- THEN LEAVE menu archiv verzeichnis
- ELIF zieltaskname = name (myself)
-
- THEN LEAVE ueberpruefe kommunikationsbasis
- ELIF zieltask ist archivmanager AND NOT archiv gehoert mir
- THEN melde zieltaskerror (menubasistext (47));
- LEAVE menu archiv verzeichnis
- ELIF NOT zieltask ist archivmanager
- THEN stelle kontakt mit zieltask her
- FI.
- stelle kontakt mit zieltask her:
- TEXT VAR fehler :: "";
- IF task ist kommunikativ (fehler)
- THEN kontakt mit zieltask erfolgt := TRUE
- ELSE melde zieltaskerror (fehler);
-
- LEAVE menu archiv verzeichnis
- FI.
- liste dateien der zieltask auf:
- erstelle liste;
- gib liste aus;
- forget ("Interne Dateiliste bei Archivoperation", quiet).
- erstelle liste:
- menufootnote (menubasistext (21) + menubasistext (28));
- FILE VAR f :: sequential file (output, "Interne Dateiliste bei Archivoperation");
- disable stop;
- IF eigene station
- THEN list (f, /zieltaskname)
- ELSE list (f, stationsnummer/zieltaskname)
- FI;
- IF is error
-
- THEN melde zieltaskerror (errormessage);
- forget ("Interne Dateiliste bei Archivoperation", quiet);
- clear error; enable stop;
- LEAVE menu archiv verzeichnis
- FI;
- enable stop.
- gib liste aus:
- modify (f);
- IF NOT (zieltaskname = name (myself))
- THEN to line (f, 1);
- insert record (f);
- notiere kopfzeile;
- headline (f, menubasistext (43));
- ELSE entferne eigenen namen aus der liste
- FI;
-
- to line (f, 1);
- cursor on; menuwindowshow (f); cursor off.
- notiere kopfzeile:
- IF zieltask ist archivmanager
- THEN write record (f, headline (f));
- ELSE write record (f, zieltaskbezeichnung)
- FI.
- entferne eigenen namen aus der liste:
- TEXT VAR zeile :: ""; INT VAR i;
- FOR i FROM lines (f) DOWNTO 1 REP
- to line (f, i);
- read record (f, zeile);
- IF pos (zeile, "Interne Dateiliste bei Archivoperation") > 0
- THEN delete record (f);
-
- LEAVE entferne eigenen namen aus der liste
- FI
- PER
-END PROC menu archiv verzeichnis;
-PROC menu archiv verzeichnis drucken:
- forget ("Interne Dateiliste bei Archivoperation", quiet);
- ueberpruefe kommunikationsbasis;
- erstelle listing;
- drucke listing aus.
- ueberpruefe kommunikationsbasis:
- IF unzulaessiger zieltaskname
- THEN LEAVE menu archiv verzeichnis drucken
- ELIF zieltaskname = name (myself)
- THEN LEAVE ueberpruefe kommunikationsbasis
-
- ELIF zieltask ist archivmanager AND NOT archiv gehoert mir
- THEN melde zieltaskerror (menubasistext (47));
- LEAVE menu archiv verzeichnis drucken
- ELIF NOT zieltask ist archivmanager
- THEN stelle kontakt mit zieltask her
- FI.
- stelle kontakt mit zieltask her:
- TEXT VAR fehler :: "";
- IF task ist kommunikativ (fehler)
- THEN kontakt mit zieltask erfolgt := TRUE
- ELSE melde zieltaskerror (fehler);
- LEAVE menu archiv verzeichnis drucken
-
- FI.
- erstelle listing:
- LET dummy name pos = 18;
- FILE VAR listfile; INT VAR i; TEXT VAR record :: "";
- TEXT CONST head :: 70 * "=", end :: 70 * "-";
- IF menuno (menubasistext (90), 5)
- THEN LEAVE menu archiv verzeichnis drucken
- FI;
- menufootnote (menubasistext (21) + menubasistext (29));
- disable stop;
- listfile := sequential file (output, "Interne Dateiliste bei Archivoperation");
- IF eigene station
- THEN list (listfile, /zieltaskname)
- ELSE list (listfile, stationsnummer/zieltaskname)
-
- FI;
- IF is error
- THEN melde zieltaskerror (errormessage);
- forget ("Interne Dateiliste bei Archivoperation", quiet);
- clear error; enable stop;
- LEAVE menu archiv verzeichnis drucken
- FI;
- enable stop.
- drucke listing aus:
- schreibe dateikopf;
- loesche dummy names;
- schreibe fuss;
- drucke und loesche listing.
- schreibe dateikopf:
- modify (listfile);
- to line (listfile, 1);
- FOR i FROM 1 UPTO 6 REP insert record (listfile) PER;
-
- to line (listfile, 1);
- write record (listfile, "#type (""elanlist"")#"); down (listfile);
- write record (listfile, "#start (2.5,0.0)##limit (20,5)#"
- + "#pagelength (26.0)#"); down (listfile);
- write record (listfile, head); down (listfile);
- schreibe erkennungszeile; down (listfile);
- write record (listfile, " Listing vom " + date + ", "
- + time of day + " Uhr"); down (listfile);
- write record (listfile, head).
-
- schreibe erkennungszeile:
- IF zieltask ist archivmanager
- THEN write record (listfile, "Archiv: " + headline (listfile))
- ELSE write record (listfile, "Task : " + taskbezeichnung)
- FI.
- taskbezeichnung:
- IF eigene station
- THEN zieltaskname
- ELSE text (stationsnummer) + "/" + zieltaskname
- FI.
- loesche dummy names:
- to line (listfile, 8);
- WHILE NOT eof (listfile) REP
- read record (listfile, record);
- IF (record SUB dummy name pos) = "-"
-
- OR pos (record, "Interne Dateiliste bei Archivoperation") > 0
- THEN delete record (listfile)
- ELSE down (listfile)
- FI
- PER.
- schreibe fuss:
- output (listfile);
- putline (listfile, end).
- drucke und loesche listing:
- menufootnote (menubasistext (21) + menubasistext (30));
- disable stop;
- print ("Interne Dateiliste bei Archivoperation");
- IF is error
- THEN melde zieltaskerror (errormessage);
- clear error; enable stop;
-
- forget ("Interne Dateiliste bei Archivoperation", quiet);
- LEAVE menu archiv verzeichnis drucken
- FI;
- enable stop;
- forget ("Interne Dateiliste bei Archivoperation", quiet)
-END PROC menu archiv verzeichnis drucken;
-TEXT PROC zieltaskbezeichnung:
- IF eigene station
- THEN menubasistext (77) + taskbezeichnung
- ELSE menubasistext (76) + text (stationsnummer) + " " +
- menubasistext (77) + zieltaskname
- FI.
- taskbezeichnung:
- IF zieltaskname = "ARCHIVE"
-
- THEN menubasistext (78)
- ELIF zieltaskname = name (father)
- THEN menubasistext (79) + " (" + zieltaskname + ")"
- ELSE zieltaskname
- FI
-END PROC zieltaskbezeichnung;
-BOOL PROC unzulaessiger zieltaskname:
- IF compress (zieltaskname) = "" OR compress (zieltaskname) = "-"
- THEN TRUE
- ELSE FALSE
- FI
-END PROC unzulaessiger zieltaskname;
-PROC menu archiv initialisieren:
- TEXT VAR archivname :: "", meldung :: "";
- klaere zieltaskart;
- formatiere ggf;
-
- initialisiere ggf.
- klaere zieltaskart:
- IF NOT zieltask ist archivmanager
- THEN menuinfo (menubasistext (121) + zieltaskname +
- menubasistext (122));
- LEAVE menu archiv initialisieren
- FI.
- formatiere ggf:
- IF menuyes (menubasistext (85), 5)
- THEN nimm archiv in beschlag;
- fuehre formatierung aus
- FI.
- nimm archiv in beschlag:
- stelle archivbesitz sicher;
- IF aktueller archivname <> ""
- THEN archivname := aktueller archivname
-
- ELSE archivname := menubasistext (75)
- FI;
- IF eigene station
- THEN reserve (archivname,/zieltaskname)
- ELSE reserve (archivname, stationsnummer/zieltaskname)
- FI;
- aktueller archivname := archivname;
- archiv gehoert mir := TRUE;
- zieltask anzeigen.
- stelle archivbesitz sicher:
- IF NOT archiv gehoert mir OR NOT kontakt mit zieltask erfolgt
- THEN versuche kommunikation;
- versuche archiv zu reservieren (meldung);
- werte meldung aus
-
- FI.
- versuche kommunikation:
- TEXT VAR fehler :: "";
- IF NOT task ist kommunikativ (fehler)
- THEN melde zieltaskerror (fehler);
- melde rigoros ab;
- LEAVE menu archiv initialisieren
- ELSE kontakt mit zieltask erfolgt := TRUE
- FI.
- werte meldung aus:
- IF meldung <> ""
- THEN melde zieltaskerror (meldung);
- aktueller archivname := "";
- zieltask anzeigen;
- LEAVE menu archiv initialisieren
- FI.
-
- fuehre formatierung aus:
- INT VAR auswahl :: menualternative (menubasistext (54),
- menubasistext (55),
- menubasistext (56), 5, TRUE);
- IF auswahl = 0
- THEN LEAVE fuehre formatierung aus
- FI;
- IF auswahl > 100
- THEN auswahl DECR 100
- FI;
- command dialogue (FALSE);
- disable stop;
- menufootnote (menubasistext (21) + menubasistext (27));
- IF eigene station
- THEN formatiere auf eigener station
-
- ELSE formatiere auf fremder station
- FI;
- IF is error
- THEN melde zieltaskerror (errormessage);
- clear error; enable stop;
- command dialogue (TRUE);
- LEAVE formatiere ggf
- ELSE enable stop;
- command dialogue (TRUE);
- aktiviere gueltige archivmenupunkte;
- refresh submenu;
- zieltask anzeigen
- FI.
- formatiere auf eigener station:
- IF auswahl < 5
- THEN format (auswahl, /zieltaskname)
-
- ELSE format (/zieltaskname)
- FI.
- formatiere auf fremder station:
- IF auswahl < 5
- THEN format (auswahl, stationsnummer/zieltaskname)
- ELSE format (stationsnummer/zieltaskname)
- FI.
- initialisiere ggf:
- stelle archivbesitz sicher;
- archiv anmelden (archivname, meldung, FALSE);
- IF archivname <> ""
- THEN aktueller archivname := archivname;
- archiv gehoert mir := TRUE;
- aktiviere gueltige archivmenupunkte;
- refresh submenu;
-
- zieltask anzeigen;
- frage nach ueberschreiben
- ELIF meldung = menubasistext (63) OR meldung = menubasistext (62)
- THEN frage nach initialisieren
- ELSE melde zieltaskerror (meldung);
- aktueller archivname := "";
- zieltask anzeigen;
- LEAVE menu archiv initialisieren
- FI.
- frage nach ueberschreiben:
- IF menuyes (menubasistext (86) + archivname + menubasistext (87), 5)
- THEN erfrage neuen namen und initialisiere
-
- ELSE LEAVE menu archiv initialisieren
- FI.
- frage nach initialisieren:
- IF menuyes (menubasistext (88), 5)
- THEN erfrage neuen namen und initialisiere
- ELSE LEAVE menu archiv initialisieren
- FI.
- erfrage neuen namen und initialisiere:
- TEXT VAR neuer name := compress(menuanswer (menubasistext (89),
- aktueller archivname, 5));
- IF neuer name <> ""
- THEN archivname := neuer name
- ELIF neuer name = "" AND archivname = ""
-
- THEN archivname := menubasistext (75)
- FI;
- command dialogue (FALSE);
- disable stop;
- IF eigene station
- THEN reserve (archivname, /zieltaskname);
- clear (/zieltaskname)
- ELSE reserve (archivname, stationsnummer/zieltaskname);
- clear (stationsnummer/zieltaskname)
- FI;
- IF is error
- THEN melde zieltaskerror (errormessage);
- clear error; enable stop;
- command dialogue (TRUE);
- melde rigoros ab;
-
- archivreservierung aufgeben;
- aktiviere gueltige archivmenupunkte;
- refresh submenu;
- zieltask anzeigen;
- LEAVE menu archiv initialisieren
- ELSE enable stop; command dialogue (TRUE);
- aktueller archivname := archivname;
- archiv gehoert mir := TRUE;
- aktiviere gueltige archivmenupunkte;
- refresh submenu;
- zieltask anzeigen
- FI
-END PROC menu archiv initialisieren;
-PROC archive (TEXT CONST archive name,task, INT CONST station):
-
- call (reserve code, archive name, station/task)
-END PROC archive;
-PROC menu archiv reservierung aufgeben:
- IF archiv gehoert mir
- THEN menufootnote (menubasistext (21) + menubasistext (22));
- archivreservierung aufgeben;
- FI;
- erase menunotice;
- old menufootnote
-END PROC menu archiv reservierung aufgeben;
-PROC archivreservierung aufgeben:
- command dialogue (FALSE);
- disable stop;
- IF eigene station
- THEN release (/zieltaskname)
- ELSE release (stationsnummer/zieltaskname);
-
- FI;
- IF is error
- THEN clear error
- FI;
- enable stop;
- command dialogue (TRUE);
- archiv gehoert mir := FALSE;
- aktueller archivname := ""
-END PROC archivreservierung aufgeben;
-BOOL PROC eigene station:
- IF stationsnummer = 0 OR stationsnummer = station (myself)
- THEN TRUE
- ELSE FALSE
- FI
-END PROC eigene station;
-PROC aktiviere gueltige archivmenupunkte:
- IF zieltask ist archivmanager AND NOT archiv gehoert mir
- THEN aktiviere nur grundfunktionen
-
- ELSE aktiviere alle momentan gueltigen punkte
- FI.
- aktiviere alle momentan gueltigen punkte:
- IF letzte funktion = 11
- THEN activate (1); activate (2);
- activate (4); activate (5); activate (6); activate (7); activate (8);
- activate (10); activate (11);
- activate (13); activate (14);
- ELIF letzte funktion = 6
- THEN deactivate (1); deactivate (2);
- activate (4); deactivate (5); deactivate (6); activate (7); activate (8);
-
- activate (10); activate (11);
- deactivate (13); activate (14);
- FI.
- aktiviere nur grundfunktionen:
- activate (1); deactivate (2);
- deactivate (4); deactivate (5); deactivate (6); deactivate (7); deactivate (8);
- deactivate (10); deactivate (11);
- activate (13); activate (14).
-END PROC aktiviere gueltige archivmenupunkte;
-PROC zieltask anzeigen:
- IF zieltask ist archivmanager
- THEN schreibe taskname und archivname
- ELSE schreibe taskname
-
- FI.
- schreibe taskname:
- write menunotice (menubasistext (59) + ""13"" + name der task, notizort).
- schreibe taskname und archivname:
- write menunotice (menubasistext (59) + ""13"" + name der task +
- ""13"" + menubasistext (60) + ""13"" + archivname,
- notizort).
- name der task:
- IF zieltaskname = "ARCHIVE" AND eigene station
- THEN " " + menubasistext (71)
- ELIF zieltaskname = "PUBLIC" AND eigene station
- THEN " " + menubasistext (72)
-
- ELIF zieltaskname = name (father)
- THEN " " + menubasistext (73)
- ELSE " " + ggf gekuerzter zieltaskname
- FI.
- ggf gekuerzter zieltaskname:
- TEXT VAR interner name;
- IF eigene station
- THEN interner name := zieltaskname;
- ELSE interner name := text (stationsnummer) + "/" + zieltaskname
- FI;
- IF length (interner name) < 20
- THEN ""15"" + interner name + " "14""
- ELSE ""15"" + subtext (interner name, 1 , 18) + ".." + " "14""
- FI.
-
- archivname:
- IF NOT archiv gehoert mir OR aktueller archivname = ""
- THEN " " + menubasistext (74)
- ELSE " "15"" + ggf gekuerzter archivname + " "14""
- FI.
- ggf gekuerzter archivname:
- IF eigene station AND length (aktueller archivname) > 20
- THEN subtext (aktueller archivname, 1, 18) + ".."
- ELIF NOT eigene station AND length (aktueller archivname) > 17
- THEN subtext (aktueller archivname, 1, 15) + ".."
- ELSE aktueller archivname
- FI.
-
-END PROC zieltask anzeigen;
-BOOL PROC task ist kommunikativ (TEXT VAR fehler):
- INT VAR antwort;
- DATASPACE VAR dummy space := nilspace;
- IF zieltask ist archivmanager
- THEN schicke reservierungscode
- ELSE schicke listcode
- FI.
- schicke reservierungscode:
- disable stop;
- IF eigene station
- THEN pingpong (/zieltaskname, reserve code, dummy space, antwort);
- ELSE pingpong (stationsnummer/zieltaskname, reserve code,
- dummy space, antwort)
-
- FI;
- werte antwort aus.
- schicke listcode:
- disable stop;
- IF eigene station
- THEN pingpong (/zieltaskname, list code, dummy space, antwort);
- ELSE pingpong (stationsnummer/zieltaskname, list code,
- dummy space, antwort)
- FI;
- werte antwort aus.
- werte antwort aus:
- IF is error
- THEN clear error
- FI;
- BOUND TEXT VAR inhalt := dummy space;
- enable stop;
- IF antwort = 0 THEN fehler := ""
- ELIF antwort = -1 THEN fehler := menubasistext (41)
-
- ELIF antwort = -2 THEN fehler := menubasistext (42)
- ELSE fehler := inhalt
- FI;
- forget (dummy space);
- IF antwort = ack
- THEN kontakt mit zieltask erfolgt := TRUE; TRUE
- ELSE kontakt mit zieltask erfolgt := FALSE; FALSE
- FI
-END PROC task ist kommunikativ;
-END PACKET ls dialog 6;
-
-
diff --git a/dialog/ls-DIALOG 7 b/dialog/ls-DIALOG 7
deleted file mode 100644
index bc43410..0000000
--- a/dialog/ls-DIALOG 7
+++ /dev/null
@@ -1,460 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG 7 **
- ** Dateihandling **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-PACKET ls dialog 7 DEFINES
- menu dateien verzeichnis,
- menu dateien loeschen,
- menu dateien drucken,
- menu dateien kopieren,
- menu dateien umbenennen,
- menu dateien speicherplatz,
- menu dateien aufraeumen:
-LET filetype = 1003,
- maxlaenge = 60,
- breite = 40,
- niltext = "";
-TEXT CONST dateibez :: "Dateiliste bei internen Operationen";
-PROC menu dateien verzeichnis:
- forget (dateibez, quiet);
- liste dateien auf;
-
- regenerate menuscreen.
- liste dateien auf:
- erstelle liste;
- gib liste aus;
- forget (dateibez, quiet).
- erstelle liste:
- menufootnote (menubasistext (21) + menubasistext (28));
- FILE VAR f :: sequential file (output, dateibez);
- list (f); modify (f);
- headline (f, menubasistext (43));
- to line (f, 1); insert record (f);
- write record (f, menubasistext (161));
- entferne eigenen namen aus der liste.
- entferne eigenen namen aus der liste:
- TEXT VAR zeile :: ""; INT VAR i;
-
- FOR i FROM lines (f) DOWNTO 1 REP
- to line (f, i); read record (f, zeile);
- IF pos (zeile, dateibez) > 0
- THEN delete record (f);
- LEAVE entferne eigenen namen aus der liste
- FI
- PER.
- gib liste aus:
- to line (f, 1); cursor on; menuwindowshow (f); cursor off
-END PROC menu dateien verzeichnis;
-PROC menu dateien loeschen:
- lasse dateien auswaehlen;
- loesche ausgewaehlte dateien;
- regenerate menuscreen.
- lasse dateien auswaehlen:
- IF NOT not empty (ALL myself)
-
- THEN noch keine datei;
- LEAVE menu dateien loeschen
- ELSE biete auswahl an
- FI.
- biete auswahl an:
- THESAURUS VAR angekreuzte :=
- menuanswersome ( center (breite, invers (menubasistext(162))) +
- menubasistext (163), "", ALL myself,
- menubasistext (162), menubasistext (91) +
- menubasistext (104) + menubasistext (92), FALSE).
- loesche ausgewaehlte dateien:
- show menuwindow;
- steige ggf bei leerem thesaurus aus;
-
- menuwindowout (menuwindowcenter (invers (menubasistext (162))));
- menuwindowline (2);
- command dialogue (FALSE);
- fuehre einzelne operation aus;
- command dialogue (TRUE);
- schlage ggf neue seite auf;
- menuwindowout (menubasistext (93) + menubasistext (104));
- menuwindowstop.
- fuehre einzelne operation aus:
- INT VAR k;
- FOR k FROM 1 UPTO highest entry (angekreuzte) REP
- IF name (angekreuzte, k) = niltext
- THEN LEAVE fuehre einzelne operation aus
-
- ELIF NOT exists (name (angekreuzte, k))
- THEN menuwindowout (" """ + name (angekreuzte, k) + """");
- menuwindowline;
- menuwindowout (menubasistext (188)); menuwindowline;
- LEAVE fuehre einzelne operation aus
- ELSE disable stop;
- IF menuwindowyes (" """ + name (angekreuzte, k) + """ "
- + menubasistext (111))
- THEN forget (name (angekreuzte, k), quiet)
- FI;
-
- fehlerbehandlung
- FI
- PER.
- steige ggf bei leerem thesaurus aus:
- IF NOT not empty (angekreuzte)
- THEN menuwindowline (2);
- menuwindowout (menubasistext (94));
- menuwindowstop;
- regenerate menuscreen;
- LEAVE menu dateien loeschen
- FI.
- schlage ggf neue seite auf:
- IF remaining menuwindowlines < 7
- THEN menuwindowpage; menuwindowline
- ELSE menuwindowline (2)
- FI.
- fehlerbehandlung:
- IF is error
-
- THEN regenerate menuscreen;
- menuinfo (invers (errormessage));
- clear error; enable stop;
- LEAVE menu dateien loeschen
- FI
-END PROC menu dateien loeschen;
-PROC menu dateien drucken:
- lasse programme auswaehlen;
- drucke programme;
- regenerate menuscreen.
- lasse programme auswaehlen:
- IF NOT not empty (ALL myself)
- THEN noch keine datei;
- LEAVE menu dateien drucken
- ELSE biete auswahl an
- FI.
- biete auswahl an:
-
- THESAURUS VAR angekreuzte :=
- menuanswersome ( center (breite, invers (menubasistext(164))) +
- menubasistext (163), "", ALL myself,
- menubasistext (164), menubasistext (91) +
- menubasistext (165) + menubasistext (92), FALSE).
- drucke programme:
- show menuwindow;
- steige ggf bei leerem thesaurus aus;
- menuwindowout (menuwindowcenter (invers (menubasistext (164))));
- menuwindowline (2);
- command dialogue (FALSE);
-
- fuehre einzelne operation aus;
- command dialogue (TRUE);
- schlage ggf neue seite auf;
- menuwindowout (menubasistext (93) + menubasistext (165));
- menuwindowstop.
- fuehre einzelne operation aus:
- INT VAR k;
- FOR k FROM 1 UPTO highest entry (angekreuzte) REP
- IF name (angekreuzte, k) = niltext
- THEN LEAVE fuehre einzelne operation aus
- ELIF NOT exists (name (angekreuzte, k))
- THEN menuwindowout (" """ + name (angekreuzte, k) + """");
-
- menuwindowline;
- menuwindowout (menubasistext (188)); menuwindowline;
- LEAVE fuehre einzelne operation aus
- ELSE disable stop;
- menuwindowout ( " """ + name (angekreuzte, k) + """ "
- + menubasistext (166));
- menuwindowline;
- print (name (angekreuzte, k));
- fehlerbehandlung
- FI
- PER.
- steige ggf bei leerem thesaurus aus:
- IF NOT not empty (angekreuzte)
-
- THEN menuwindowline (2);
- menuwindowout (menubasistext (94));
- menuwindowstop;
- regenerate menuscreen;
- LEAVE menu dateien drucken
- FI.
- schlage ggf neue seite auf:
- IF remaining menuwindowlines < 7
- THEN menuwindowpage; menuwindowline
- ELSE menuwindowline (2)
- FI.
- fehlerbehandlung:
- IF is error
- THEN regenerate menuscreen;
- menuinfo (invers (errormessage));
- clear error; enable stop;
-
- LEAVE menu dateien drucken
- FI.
-END PROC menu dateien drucken;
-PROC menu dateien kopieren:
- ermittle alten dateinamen;
- erfrage neuen dateinamen;
- kopiere ggf die datei.
- ermittle alten dateinamen:
- IF NOT not empty (ALL myself)
- THEN noch keine datei;
- LEAVE menu dateien kopieren
- ELSE hole den namen
- FI.
- hole den namen:
- TEXT VAR alter name :=
- menuanswerone ( center (breite, invers (menubasistext(167))) +
- menubasistext (163), "", ALL myself,
-
- menubasistext (167), menubasistext (168) +
- menubasistext (169) + menubasistext (170), TRUE);
- IF alter name = niltext
- THEN LEAVE menu dateien kopieren
- ELIF NOT exists (alter name)
- THEN menuinfo (menubasistext (188));
- LEAVE menu dateien kopieren
- FI.
- erfrage neuen dateinamen:
- TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).
- ausgabe:
- ueberschrift + menubasistext (171) + bisheriger name
-
- + menubasistext (172).
- ueberschrift:
- center (maxlaenge, invers (menubasistext (167))) + ""13""13"".
- bisheriger name:
- ""13""13" " + invers (alter name) + ""13""13"".
- kopiere ggf die datei:
- IF neuer name = niltext
- THEN menuinfo (invers (menubasistext (173)));
- LEAVE menu dateien kopieren
- ELIF exists (neuer name)
- THEN mache vorwurf;
- LEAVE menu dateien kopieren
- ELSE copy (alter name, neuer name)
-
- FI.
- mache vorwurf:
- menuinfo (menubasistext (174)).
-END PROC menu dateien kopieren;
-PROC menu dateien umbenennen:
- ermittle alten dateinamen;
- erfrage neuen dateinamen;
- benenne ggf die datei um.
- ermittle alten dateinamen:
- IF NOT not empty (ALL myself)
- THEN noch keine datei;
- LEAVE menu dateien umbenennen
- ELSE hole den namen
- FI.
- hole den namen:
- TEXT VAR alter name :=
- menuanswerone ( center (breite, invers (menubasistext(175))) +
-
- menubasistext (163), "", ALL myself,
- menubasistext (175), menubasistext (168) +
- menubasistext (176) + menubasistext (170), TRUE);
- IF alter name = niltext
- THEN LEAVE menu dateien umbenennen
- ELIF NOT exists (alter name)
- THEN menuinfo (menubasistext (188));
- LEAVE menu dateien umbenennen
- FI.
- erfrage neuen dateinamen:
- TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).
- ausgabe:
-
- ueberschrift + menubasistext (171) + bisheriger name
- + menubasistext (177).
- ueberschrift:
- center (maxlaenge, invers (menubasistext (175))) + ""13""13"".
- bisheriger name:
- ""13""13" " + invers (alter name) + ""13""13"".
- benenne ggf die datei um:
- IF neuer name = niltext
- THEN menuinfo (invers (menubasistext (173)));
- LEAVE menu dateien umbenennen
- ELIF exists (neuer name)
- THEN mache vorwurf;
- LEAVE menu dateien umbenennen
-
- ELSE rename (alter name, neuer name)
- FI.
- mache vorwurf:
- menuinfo (menubasistext (174)).
-END PROC menu dateien umbenennen;
-PROC menu dateien speicherplatz:
- lasse dateinamen auswaehlen;
- ermittle den speicherplatz;
- regenerate menuscreen.
- lasse dateinamen auswaehlen:
- IF NOT not empty (ALL myself)
- THEN noch keine datei;
- LEAVE menu dateien speicherplatz
- ELSE biete auswahl an
- FI.
- biete auswahl an:
- THESAURUS VAR angekreuzte :=
-
- menuanswersome ( center (breite, invers (menubasistext(178))) +
- menubasistext (163), "", ALL myself,
- menubasistext (178), menubasistext (179), FALSE).
- ermittle den speicherplatz:
- show menuwindow;
- steige ggf bei leerem thesaurus aus;
- menuwindowout (menuwindowcenter (invers (menubasistext (178))));
- menuwindowline (2);
- command dialogue (FALSE);
- fuehre einzelne operation aus;
- command dialogue (TRUE);
- schlage ggf neue seite auf;
-
- menuwindowout (menubasistext (180));
- menuwindowstop.
- fuehre einzelne operation aus:
- INT VAR k;
- FOR k FROM 1 UPTO highest entry (angekreuzte) REP
- IF name (angekreuzte, k) = niltext
- THEN LEAVE fuehre einzelne operation aus
- ELIF NOT exists (name (angekreuzte, k))
- THEN menuwindowout (" """ + name (angekreuzte, k) + """");
- menuwindowline;
- menuwindowout (menubasistext (188)); menuwindowline;
- LEAVE fuehre einzelne operation aus
-
- ELSE disable stop;
- menuwindowout ( " """ + name (angekreuzte, k) + """ "
- + menubasistext (181)
- + speicherplatz (name (angekreuzte, k)));
- menuwindowline;
- fehlerbehandlung
- FI
- PER.
- steige ggf bei leerem thesaurus aus:
- IF NOT not empty (angekreuzte)
- THEN menuwindowline (2);
- menuwindowout (menubasistext (94));
- menuwindowstop;
- regenerate menuscreen;
-
- LEAVE menu dateien speicherplatz
- FI.
- schlage ggf neue seite auf:
- IF remaining menuwindowlines < 7
- THEN menuwindowpage; menuwindowline
- ELSE menuwindowline (2)
- FI.
- fehlerbehandlung:
- IF is error
- THEN regenerate menuscreen;
- menuinfo (invers (errormessage));
- clear error; enable stop;
- LEAVE menu dateien speicherplatz
- FI.
-END PROC menu dateien speicherplatz;
-TEXT PROC speicherplatz (TEXT CONST dateiname):
-
- DATASPACE VAR ds :: old (dateiname);
- INT CONST platz :: storage (ds);
- forget (ds);
- " " + text (platz) + menubasistext (182)
-END PROC speicherplatz;
-PROC menu dateien aufraeumen:
- lasse dateinamen auswaehlen;
- raeume die dateien auf;
- regenerate menuscreen.
- lasse dateinamen auswaehlen:
- IF NOT not empty (ALL myself)
- THEN noch keine datei;
- LEAVE menu dateien aufraeumen
- ELSE biete auswahl an
- FI.
- biete auswahl an:
- THESAURUS VAR angekreuzte :=
-
- menuanswersome ( center (breite, invers (menubasistext(183))) +
- menubasistext (163), "", ALL myself,
- menubasistext (183), menubasistext (91) +
- menubasistext (184) + menubasistext (92), FALSE).
- raeume die dateien auf:
- show menuwindow;
- steige ggf bei leerem thesaurus aus;
- menuwindowout (menuwindowcenter (invers (menubasistext (183))));
- menuwindowline (2);
- command dialogue (FALSE);
- fuehre einzelne operation aus;
-
- command dialogue (TRUE);
- schlage ggf neue seite auf;
- menuwindowout (menubasistext (93) + menubasistext (184));
- menuwindowstop.
- fuehre einzelne operation aus:
- INT VAR k;
- FOR k FROM 1 UPTO highest entry (angekreuzte) REP
- IF name (angekreuzte, k) = niltext
- THEN LEAVE fuehre einzelne operation aus
- ELIF NOT exists (name (angekreuzte, k))
- THEN menuwindowout (" """ + name (angekreuzte, k) + """");
- menuwindowline;
- menuwindowout (menubasistext (188)); menuwindowline;
-
- LEAVE fuehre einzelne operation aus
- ELIF dateityp ist ok
- THEN disable stop;
- menuwindowline;
- menuwindowout ( " """ + name (angekreuzte, k) + """ "
- + menubasistext (185) );
- menuwindowline; menuwindowout (" ");
- reorganize (name (angekreuzte, k));
- fehlerbehandlung
- ELSE menuwindowout ( " """ + name (angekreuzte, k) + """ "
- + menubasistext (186))
-
- FI
- PER.
- dateityp ist ok:
- type (old (name (angekreuzte, k))) = filetype.
- steige ggf bei leerem thesaurus aus:
- IF NOT not empty (angekreuzte)
- THEN menuwindowline (2);
- menuwindowout (menubasistext (94));
- menuwindowstop;
- regenerate menuscreen;
- LEAVE menu dateien aufraeumen
- FI.
- schlage ggf neue seite auf:
- IF remaining menuwindowlines < 7
- THEN menuwindowpage; menuwindowline
- ELSE menuwindowline (2)
-
- FI.
- fehlerbehandlung:
- IF is error
- THEN regenerate menuscreen;
- menuinfo (invers (errormessage));
- clear error; enable stop;
- LEAVE menu dateien aufraeumen
- FI.
-END PROC menu dateien aufraeumen;
-PROC noch keine datei:
- menuinfo (menubasistext ( 187))
-END PROC noch keine datei;
-END PACKET ls dialog 7;
-
-
diff --git a/dialog/ls-DIALOG MENUKARTEN MANAGER b/dialog/ls-DIALOG MENUKARTEN MANAGER
deleted file mode 100644
index a6fcb1f..0000000
--- a/dialog/ls-DIALOG MENUKARTEN MANAGER
+++ /dev/null
@@ -1,66 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG **
- ** MENUKARTEN-MANAGER **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-PACKET ls dialog manager DEFINES
- ls dialog manager:
-LET fetch code = 11,
- save code = 12,
- exists code = 13,
- list code = 15,
- continue code = 100;
-LET mm taskname = "ls-MENUKARTEN",
- gibt es schon = "Die Task 'ls-MENUKARTEN' existiert schon!",
- verweis = "Unzulässiger Zugriff auf die Task 'ls-MENUKARTEN'!";
-PROC ls dialog manager:
- stelle richtigen tasknamen ein;
- global manager
- (PROC (DATASPACE VAR, INT CONST, INT CONST, TASK CONST) ls dialog manager)
-
-END PROC ls dialog manager;
-PROC stelle richtigen tasknamen ein:
- IF name (myself) <> mm taskname
- THEN nimm umbenennung vor
- FI.
- nimm umbenennung vor:
- IF NOT exists task (mm taskname)
- THEN rename myself (mm taskname)
- ELSE errorstop (gibt es schon)
- FI.
-END PROC stelle richtigen tasknamen ein;
-PROC ls dialog manager (DATASPACE VAR ds, INT CONST order, phase,
- TASK CONST order task):
- IF order task = supervisor
- OR order = fetch code
-
- OR order = save code
- OR order = exists code
- OR order = list code
- OR order = continue code
- THEN free manager (ds, order, phase, order task)
- ELSE errorstop (verweis)
- FI
-END PROC ls dialog manager;
-END PACKET ls dialog manager;
-
-
diff --git a/dialog/ls-DIALOG MM-gen b/dialog/ls-DIALOG MM-gen
deleted file mode 100644
index 213a826..0000000
--- a/dialog/ls-DIALOG MM-gen
+++ /dev/null
@@ -1,50 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG **
- ** MENUKARTEN MANAGER **
- ** Generator-Programm **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-LET dateiname = "ls-DIALOG MENUKARTEN MANAGER",
- archivname = "gs-dialog";
-gib bildschirmhinweis;
-hole generatordatei vom archiv;
-insertiere die datei;
-do ("ls dialog manager").
-gib bildschirmhinweis:
- page;
- putline (" "15"ls-DIALOG MENUKARTEN MANAGER - Generierung "14"").
-hole generatordatei vom archiv:
- IF NOT exists (dateiname)
- THEN cursor (1, 5); out (""4"");
- putline ("Bitte warten... Ich hole eine Datei von der Diskette!");
- archive (archivname);
-
- fetch (dateiname, archive);
- release (archive)
- FI.
-insertiere die datei:
- cursor (1, 5); out (""4"");
- putline ("Bitte warten... Ich insertiere!");
- check off; insert (dateiname); check on;
- forget ("ls-DIALOG MM/gen", quiet);
- forget (dateiname, quiet).
-
-
diff --git a/dialog/ls-DIALOG decompress b/dialog/ls-DIALOG decompress
deleted file mode 100644
index fdda0d6..0000000
--- a/dialog/ls-DIALOG decompress
+++ /dev/null
@@ -1,153 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG - DECOMPRESS **
- ** **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-PACKET ls dialog decompress DEFINES
-
- komprimiere,
- dekomprimiere:
-
-LET verweis = "Angegebene Datei existiert nicht!",
- falscher typ = "Angegebenen Datei hat falschen Typ!",
- filetype = 1003;
-
-PROC komprimiere (TEXT CONST dateiname):
- INT VAR zeiger;
- ueberpruefe existenz;
- ueberpruefe dateityp;
- initialisiere;
- FOR zeiger FROM 1 UPTO 24 REP
- getline (ein, eingabezeile);
- putline (aus, eingabezeile);
- PER;
- WHILE NOT eof (ein) REP
- getline (ein, eingabezeile);
- zaehler INCR 1; cout (zaehler);
- zwischenzeile := abgeschnitten (eingabezeile);
- haenge zeilentrenner an;
- haenge zwischenzeile an ausgabezeile;
- schreibe ausgabezeile ggf weg
- PER;
- schreibe ausgabezeile weg;
- mache ausgabedatei zur eingabedatei.
-
- ueberpruefe existenz:
- IF NOT exists (dateiname)
- THEN errorstop (verweis);
- FI.
-
- ueberpruefe dateityp:
- IF type (old (dateiname)) <> filetype
- THEN errorstop (falscher typ)
- FI.
-
- initialisiere:
- FILE VAR ein := sequential file (input, dateiname);
- FILE VAR aus := sequential file (output, "KOMPRIM");
- maxlinelength (aus, 600);
- INT VAR zaehler :: 1;
- TEXT VAR eingabezeile :: "", zwischenzeile :: "", ausgabezeile :: "".
-
- haenge zeilentrenner an:
- IF zwischenzeile <> ""
- THEN zwischenzeile CAT "
-"
- FI.
-
- haenge zwischenzeile an ausgabezeile:
- ausgabezeile CAT zwischenzeile.
-
- schreibe ausgabezeile ggf weg:
- IF length (ausgabezeile) > 500
- THEN schreibe ausgabezeile weg
- FI.
-
- schreibe ausgabezeile weg:
- IF ausgabezeile <> ""
- THEN putline (aus, ausgabezeile);
- ausgabezeile := ""
- FI.
-
-mache ausgabedatei zur eingabedatei:
- forget (dateiname, quiet);
- rename ("KOMPRIM", dateiname).
-END PROC komprimiere;
-
-TEXT PROC abgeschnitten (TEXT CONST zeile):
- TEXT VAR t :: zeile;
- WHILE (t SUB length (t)) = " " REP
- t := subtext (t, 1, length (t) - 1)
- PER;
- t
-END PROC abgeschnitten;
-
-PROC dekomprimiere (TEXT CONST dateiname):
- INT VAR zeiger;
- ueberpruefe existenz;
- ueberpruefe dateityp;
- initialisiere;
- FOR zeiger FROM 1 UPTO 24 REP
- getline (ein, eingabezeile);
- putline (aus, eingabezeile);
- PER;
- WHILE NOT eof (ein) REP
- getline (ein, eingabezeile);
- zerlege zeile
- PER;
- forget (dateiname, quiet);
- rename ("DEKOMPRIM", dateiname).
-
- ueberpruefe existenz:
- IF NOT exists (dateiname)
- THEN errorstop (verweis)
- FI.
-
- ueberpruefe dateityp:
- IF type (old (dateiname)) <> filetype
- THEN errorstop (falscher typ)
- FI.
-
- initialisiere:
- FILE VAR ein := sequential file (input, dateiname);
- FILE VAR aus := sequential file (output, "DEKOMPRIM");
- INT VAR zaehler :: 1;
- TEXT VAR eingabezeile :: "", ausgabezeile :: "".
-
- zerlege zeile:
- WHILE eingabezeile <> "" REP
- nimm das erste stueck und schreibe es weg;
- entferne den zeilentrenner
- PER.
-
- nimm das erste stueck und schreibe es weg:
- ausgabezeile := subtext (eingabezeile, 1, pos (eingabezeile, "
-") - 1);
- putline (aus, ausgabezeile);
- zaehler INCR 1;
- cout (zaehler).
-
- entferne den zeilentrenner:
- eingabezeile := subtext (eingabezeile, pos (eingabezeile, "
-") + 2).
-END PROC dekomprimiere;
-END PACKET ls dialog decompress;
-
diff --git a/dialog/ls-DIALOG-gen b/dialog/ls-DIALOG-gen
deleted file mode 100644
index b5c7867..0000000
--- a/dialog/ls-DIALOG-gen
+++ /dev/null
@@ -1,130 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-DIALOG **
- ** GENERATORPROGRAMM **
- ** Version 1.2 **
- ** **
- ** (Stand: 04.11.88) **
- ** **
- ** **
- ** Autor: Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld **
- ** **
- ** Copyright (C) 1988 ERGOS GmbH, Siegburg **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-LET mm taskname = "ls-MENUKARTEN",
- datei 1 = "ls-DIALOG 1",
- datei 2 = "ls-DIALOG 2",
- datei 3 = "ls-DIALOG 3",
- datei 4 = "ls-DIALOG 4",
- datei 5 = "ls-DIALOG 5",
- datei 6 = "ls-DIALOG 6",
- datei 7 = "ls-DIALOG 7",
- menukarte = "ls-MENUKARTE:Archiv";
-PROC stelle existenz des mm sicher:
- cursor (1, 5); out (""4"");
- IF NOT exists (task (mm taskname))
- THEN errorstop ("Unbedingt erst den 'MENUKARTEN-MANAGER' generieren!");
- FI
-
-END PROC stelle existenz des mm sicher;
-PROC vom archiv (TEXT CONST datei):
- cursor (1,5); out (""4"");
- out (" """); out (datei); putline (""" wird geholt.");
- fetch (datei, archive)
-END PROC vom archiv;
-PROC hole (TEXT CONST datei):
- IF NOT exists (datei) THEN vom archiv (datei) FI
-END PROC hole;
-PROC in (TEXT CONST datei):
- hole (datei);
- cursor (1, 5); out (""4"");
- out (" """); out (datei); out (""" wird übersetzt: ");
- insert (datei);
- forget (datei, quiet);
-END PROC in;
-
-PROC schicke (TEXT CONST datei):
- cursor (1, 5); out (""4"");
- out (" """); out(datei);
- out (""" wird zum MENUKARTEN-MANAGER geschickt!");
- command dialogue (FALSE);
- save (datei, task (mm taskname));
- command dialogue (TRUE);
- forget (datei, quiet)
-END PROC schicke;
-INT VAR size, used;
-BOOL VAR einzeln;
-storage (size, used);
-einzeln := size - used < 500;
-forget ("ls-DIALOG/gen", quiet);
-wirf kopfzeile aus;
-stelle existenz des mm sicher;
-hole die dateien;
-insertiere die dateien;
-
-mache global manager aus der task.
-wirf kopfzeile aus:
- page;
- putline (" "15"ls-DIALOG - Automatische Generierung "14"").
-hole die dateien:
- IF NOT exists (datei 1) COR NOT exists (datei 2)
- COR NOT exists (datei 3) COR NOT exists (datei 4)
- COR NOT exists (datei 5) COR NOT exists (datei 6)
- COR NOT exists (datei 7) COR NOT exists (menukarte)
- THEN hole dateien vom archiv
- FI.
-hole dateien vom archiv:
- cursor (1,3);
- IF yes ("Ist das Archiv angemeldet und die 'ls-DIALOG' - Diskette eingelegt")
-
- THEN lese ein
- ELSE line (2);
- errorstop ("Ohne die Diskette kann ich das System nicht generieren!")
- FI.
-lese ein:
- cursor (1, 3); out (""4"");
- out (" "15"Bitte die Diskette eingelegt lassen! "14"");
- IF NOT einzeln
- THEN hole (datei 1);
- hole (datei 2);
- hole (datei 3);
- hole (datei 4);
- hole (datei 5);
- hole (datei 6);
- hole (datei 7);
- hole (menukarte);
- cursor (1, 3); out(""4"");
-
- out (" "15"Die Diskette wird nicht mehr benötigt! "14"");
- release (archive)
- FI.
-insertiere die dateien:
- check off;
- in (datei 1);
- in (datei 2);
- in (datei 3);
- in (datei 4);
- in (datei 5);
- in (datei 6);
- in (datei 7);
- schicke (menukarte);
- IF einzeln THEN release (archive) FI;
- check on.
-mache global manager aus der task:
- global manager.
-
-
-
-
-
diff --git a/dialog/ls-MENUKARTE:Archiv b/dialog/ls-MENUKARTE:Archiv
deleted file mode 100644
index c859d22..0000000
--- a/dialog/ls-MENUKARTE:Archiv
+++ /dev/null
Binary files differ