diff options
Diffstat (limited to 'dialog')
| -rw-r--r-- | dialog/ls-DIALOG 1 | 548 | ||||
| -rw-r--r-- | dialog/ls-DIALOG 2 | 844 | ||||
| -rw-r--r-- | dialog/ls-DIALOG 3 | 416 | ||||
| -rw-r--r-- | dialog/ls-DIALOG 4 | 741 | ||||
| -rw-r--r-- | dialog/ls-DIALOG 5 | 1412 | ||||
| -rw-r--r-- | dialog/ls-DIALOG 6 | 1186 | ||||
| -rw-r--r-- | dialog/ls-DIALOG 7 | 460 | ||||
| -rw-r--r-- | dialog/ls-DIALOG MENUKARTEN MANAGER | 66 | ||||
| -rw-r--r-- | dialog/ls-DIALOG MM-gen | 50 | ||||
| -rw-r--r-- | dialog/ls-DIALOG decompress | 153 | ||||
| -rw-r--r-- | dialog/ls-DIALOG-gen | 130 | ||||
| -rw-r--r-- | dialog/ls-MENUKARTE:Archiv | bin | 40960 -> 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:ArchivBinary files differ deleted file mode 100644 index c859d22..0000000 --- a/dialog/ls-MENUKARTE:Archiv +++ /dev/null | 
