summaryrefslogtreecommitdiff
path: root/app/gs.hamster/1.1/src/ls-Herbert und Robbi 3
blob: e5db4088e157775371dfcf498635afe739cfbc7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
(* 
        
          ********************************************************* 
          ********************************************************* 
          **                                                     ** 
          **               ls-Herbert und Robbi 3                ** 
          **                                                     ** 
          **                     Version 1.1                     ** 
          **                                                     ** 
          **                  (Stand: 30.03.88)                  ** 
          **                                                     ** 
          **                                                     ** 
          **         Autor: Wolfgang Weber, Bielefeld            ** 
          **                                                     ** 
          **                                                     ** 
          ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld ** 
          **                                                     ** 
          ** Copyright (C) 1988 ERGOS GmbH, Siegburg             ** 
          **                                                     ** 
          ********************************************************* 
          ********************************************************* 
 
                                                                           *) 
 
PACKET ls herbert und robbi 3  DEFINES{}  hamsterbefehlsauskunft,{}  hamsterlaufauskunft,{}  hamsterlandschaftsauskunft,{}  hamsterlandschaft verzeichnis,{}  hamsterlandschaft neu erstellen,{}  hamsterlandschaft ansehen,{}  hamsterlandschaft drucken,{}  hamsterlandschaft kopieren,{}  hamsterlandschaft umbenennen,{}  hamsterlandschaft loeschen,{}  hamsterprogramm verzeichnis,{}  hamsterprogramm neu erstellen,{}  hamsterprogramm ansehen,{}  hamsterprogramm kopieren,{}  hamsterprogramm umbenennen,{}
  hamsterprogramm loeschen,{}  hamsterprogramm drucken,{}  hamster laufen lassen,{}  hamsterinteraktiv laufen lassen,{}  hamster, roboter:{}LET  menukarte       = "ls-MENUKARTE:Herbert und Robbi",{}     praefix         = "Flaeche:",{}     flaechentype    =       1007,{}     niltext         =         "",{}     maxlaenge       =         60,{}     maxnamenslaenge =         50;{}TEXT VAR flaechenname :: "",{}         programmname :: "";{}INITFLAG VAR in this task :: FALSE;{}PROC initialize hamster:{}
  IF NOT initialized (in this task){}     THEN flaechenname := "";{}          programmname := ""{}  FI{}END PROC initialize hamster;{}PROC hamster:{}  sei ein hamster;{}  initialize hamster;{}  install menu (menukarte);{}  handle  menu ("HAMSTER"){}END PROC hamster;{}PROC roboter:{}  sei ein roboter;{}  initialize  hamster;{}  install menu (menukarte);{}  handle  menu ("ROBOTER");{}END PROC roboter;{}PROC hamsterlaufauskunft:{}  menuinfo (laufauskunftstext){}END PROC hamsterlaufauskunft;{}PROC hamsterlandschaftsauskunft:{}
  menuinfo (landschaftsauskunftstext){}END PROC hamsterlandschaftsauskunft;{}PROC hamsterbefehlsauskunft:{}  menuinfo (befehlsauskunftstext);{}  menuinfo (testauskunftstext 1);{}  IF testauskunftstext 2 <> ""{}     THEN menuinfo (testauskunftstext 2){}  FI{}END PROC hamsterbefehlsauskunft;{}PROC hamsterlandschaft verzeichnis:{}  THESAURUS VAR landschaften ::{}  ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{}  forget ("Interne Thesaurusdateiliste", quiet);{}  FILE VAR f :: sequential file (output, "Interne Thesaurusdateiliste");{}
  f FILLBY landschaften;{}  headline (f, anwendungstext (204)); modify (f);{}  to line (f, 1); insert record (f); write record (f, kenntext);{}  to line (f, 2); insert record (f);{}  to line (f, 1); menuwindowshow (f);{}  forget ("Interne Thesaurusdateiliste", quiet);{}  regenerate menuscreen.{}  kenntext:{}    IF ist hamster THEN anwendungstext (121) ELSE anwendungstext (151) FI.{}END PROC hamsterlandschaft verzeichnis;{}PROC hamsterprogramm verzeichnis:{}  THESAURUS VAR programme :: ALL myself - infix namen (ALL myself, praefix, flaechentype);{}
  forget ("Interne Thesaurusdateiliste", quiet);{}  FILE VAR f :: sequential file (output, "Interne Thesaurusdateiliste");{}  f FILLBY programme;{}  headline (f, anwendungstext (204)); modify (f);{}  to line (f, 1); insert record (f); write record (f, anwendungstext (181));{}  to line (f, 2); insert record (f);{}  to line (f, 1); menuwindowshow (f);{}  forget ("Interne Thesaurusdateiliste", quiet);{}  regenerate menuscreen{}END PROC hamsterprogramm verzeichnis;{}PROC hamsterlandschaft neu erstellen:{}
  hole flaechenname;{}  kontrolliere den flaechennamen;{}  kommandomodus;{}  landschaft (flaechenname);{}  regenerate menuscreen.{}  hole flaechenname:{}    IF ist hamster{}       THEN flaechenname := menuanswer (anwendungstext (101) +{}                                        anwendungstext (102), "", 5){}       ELSE flaechenname := menuanswer (anwendungstext (131) +{}                                        anwendungstext (132), "", 5){}    FI.{}  kontrolliere den flaechennamen:{}    IF   flaechenname = niltext{}
         THEN LEAVE hamsterlandschaft neu erstellen{}    ELIF length (flaechenname) > maxnamenslaenge{}         THEN meckere zu langen namen an;{}              flaechenname := niltext;{}              LEAVE hamsterlandschaft neu erstellen{}    ELIF exists (praefix + flaechenname){}         THEN meckere existierende flaeche an;{}              LEAVE hamsterlandschaft neu erstellen{}    FI{}END PROC hamsterlandschaft neu erstellen;{}PROC hamsterprogramm neu erstellen:{}  hole programmname;{}  kontrolliere den programmnamen;{}
  command dialogue (FALSE);{}  cursor on;{}  stdinfoedit (programmname);{}  cursor off;{}  command dialogue (TRUE);{}  regenerate menuscreen.{}  hole programmname:{}    programmname := menuanswer (anwendungstext (161) +{}                                anwendungstext (162), "", 5).{}  kontrolliere den programmnamen:{}    IF   programmname = niltext{}         THEN LEAVE hamsterprogramm neu erstellen{}    ELIF length (programmname) > maxnamenslaenge{}         THEN meckere zu langen namen an;{}              programmname := niltext;{}
              LEAVE hamsterprogramm neu erstellen{}    ELIF exists (programmname){}         THEN meckere existierendes programm an;{}              LEAVE hamsterprogramm neu erstellen{}    FI{}END PROC hamsterprogramm neu erstellen;{}PROC hamsterlandschaft ansehen:{}  IF flaechenname <> niltext CAND exists (praefix + flaechenname){}     THEN frage nach dieser flaeche{}     ELSE lasse flaeche auswaehlen{}  FI;{}  kommandomodus;{}  landschaft (flaechenname);{}  regenerate menuscreen.{}  frage nach dieser flaeche:{}
    IF menuno (ueberschrift + text 1 + name + text 2, 5){}       THEN lasse flaeche auswaehlen{}    FI.{}  ueberschrift:{}    IF ist hamster{}       THEN center (maxlaenge, invers (anwendungstext (105))) + ""13""13""{}       ELSE center (maxlaenge, invers (anwendungstext (135))) + ""13""13""{}   FI.{}  text 1:{}    IF ist hamster THEN anwendungstext (103) ELSE anwendungstext (133) FI.{}  name:{}    ""13""13" " + invers (flaechenname) + ""13""13"".{}  text 2:{}    IF ist hamster THEN anwendungstext (104) ELSE anwendungstext (134) FI.{}
  lasse flaeche auswaehlen:{}    THESAURUS VAR verfuegbare;{}    verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{}    IF NOT not empty (verfuegbare){}       THEN noch keine flaeche;{}            LEAVE hamsterlandschaft ansehen{}       ELSE biete auswahl an{}    FI.{}  biete auswahl an:{}    IF ist hamster{}       THEN flaechenname := menuone (verfuegbare, anwendungstext (105),{}                                     anwendungstext (106), FALSE){}       ELSE flaechenname := menuone (verfuegbare, anwendungstext (135),{}
                                     anwendungstext (136), FALSE){}    FI;{}    IF flaechenname = niltext{}       THEN regenerate menuscreen;{}            LEAVE hamsterlandschaft ansehen{}    FI.{}END PROC hamsterlandschaft ansehen;{}PROC hamsterprogramm ansehen:{}  IF programmname <> niltext CAND exists (programmname){}     THEN frage nach diesem programm{}     ELSE lasse programm auswaehlen{}  FI;{}  cursor on;{}  stdinfoedit (programmname);{}  cursor off;{}  regenerate menuscreen.{}  frage nach diesem programm:{}
    IF menuno (ueberschrift + anwendungstext (163) + name{}                            + anwendungstext (164), 5){}       THEN lasse programm auswaehlen{}    FI.{}  ueberschrift:{}    center (maxlaenge, invers (anwendungstext (165))) + ""13""13"".{}  name:{}    ""13""13" " + invers (programmname) + ""13""13"".{}  lasse programm auswaehlen:{}    THESAURUS VAR verfuegbare;{}    verfuegbare  := ALL myself - infix namen (ALL myself, praefix, flaechentype);{}    IF NOT not empty (verfuegbare){}       THEN noch kein programm;{}
            LEAVE hamsterprogramm ansehen{}       ELSE biete auswahl an{}    FI.{}  biete auswahl an:{}    programmname := menuone (verfuegbare, anwendungstext (165),{}                             anwendungstext (166), FALSE);{}    IF programmname = niltext{}       THEN regenerate menuscreen;{}            LEAVE hamsterprogramm ansehen{}    FI.{}END PROC hamsterprogramm ansehen;{}PROC hamsterlandschaft drucken:{}  lasse flaechen auswaehlen;{}  drucke flaechen;{}  regenerate menuscreen.{}  lasse flaechen auswaehlen:{}
    THESAURUS VAR verfuegbare;{}    verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{}    IF NOT not empty (verfuegbare){}       THEN noch keine flaeche;{}            LEAVE hamsterlandschaft drucken{}       ELSE biete auswahl an{}    FI.{}  biete auswahl an:{}    IF ist hamster{}       THEN verfuegbare := menusome (verfuegbare, anwendungstext (107),{}                                     anwendungstext (108), FALSE){}       ELSE verfuegbare := menusome (verfuegbare, anwendungstext (137),{}
                                     anwendungstext (138), FALSE){}    FI.{}  drucke flaechen:{}    show menuwindow;{}    steige ggf bei leerem thesaurus aus;{}    menuwindowout (menuwindowcenter (invers (bezeichnung)));{}    menuwindowline (2);{}    command dialogue (FALSE);{}    fuehre einzelne operationen aus;{}    command dialogue (TRUE);{}    schlage ggf neue seite auf;{}    menuwindowout (schlussbemerkung);{}    menuwindowstop.{}  bezeichnung:{}    IF ist hamster THEN anwendungstext (107) ELSE anwendungstext (137) FI.{}
  schlussbemerkung:{}    IF ist hamster THEN anwendungstext (110) ELSE anwendungstext (140) FI.{}  fuehre einzelne operationen aus:{}    INT VAR k;{}    FOR k FROM 1 UPTO highest entry (verfuegbare) REP{}      IF name (verfuegbare, k) <> ""{}         THEN disable stop;{}              menuwindowout ( " """ + name (verfuegbare, k) + """ "{}                                    + anwendungstext (201));{}              menuwindowline;{}              drucke landschaft (name (verfuegbare, k));{}              fehlerbehandlung{}
      FI{}    PER.{}  steige ggf bei leerem thesaurus aus:{}    IF NOT not empty (verfuegbare){}       THEN menuwindowline (2);{}            IF ist hamster{}               THEN menuwindowout (anwendungstext (109)){}               ELSE menuwindowout (anwendungstext (139)){}            FI;{}            menuwindowstop;{}            regenerate menuscreen;{}            LEAVE hamsterlandschaft 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 hamsterlandschaft drucken{}    FI.{}END PROC hamsterlandschaft drucken;{}PROC hamsterprogramm drucken:{}  lasse programme auswaehlen;{}  drucke programme;{}  regenerate menuscreen.{}  lasse programme auswaehlen:{}    THESAURUS VAR verfuegbare;{}    verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype);{}
    IF NOT not empty (verfuegbare){}       THEN noch kein programm;{}            LEAVE hamsterprogramm drucken{}       ELSE biete auswahl an{}    FI.{}  biete auswahl an:{}    verfuegbare := menusome (verfuegbare, anwendungstext (167),{}                             anwendungstext (168), FALSE).{}  drucke programme:{}    show menuwindow;{}    steige ggf bei leerem thesaurus aus;{}    menuwindowout (menuwindowcenter (invers (anwendungstext (167))));{}    menuwindowline (2);{}    command dialogue (FALSE);{}
    fuehre einzelne operationen aus;{}    command dialogue (TRUE);{}    schlage ggf neue seite auf;{}    menuwindowout (anwendungstext (170));{}    menuwindowstop.{}  fuehre einzelne operationen aus:{}    INT VAR k;{}    FOR k FROM 1 UPTO highest entry (verfuegbare) REP{}      IF name (verfuegbare, k) <> ""{}         THEN disable stop;{}              menuwindowout ( " """ + name (verfuegbare, k) + """ "{}                                    + anwendungstext (201));{}              menuwindowline;{}
              print (name (verfuegbare, k));{}              fehlerbehandlung{}      FI{}    PER.{}  steige ggf bei leerem thesaurus aus:{}    IF NOT not empty (verfuegbare){}       THEN menuwindowline (2);{}            menuwindowout (anwendungstext (169));{}            menuwindowstop;{}            regenerate menuscreen;{}            LEAVE hamsterprogramm 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 hamsterprogramm drucken{}    FI.{}END PROC hamsterprogramm drucken;{}PROC hamsterlandschaft kopieren:{}  ermittle alten flaechennamen;{}  erfrage neuen flaechennamen;{}  kopiere ggf die flaeche.{}  ermittle alten flaechennamen:{}    IF NOT not empty (bestand){}       THEN noch keine flaeche;{}            LEAVE hamsterlandschaft kopieren{}
       ELSE biete auswahl an{}    FI.{}  biete auswahl an:{}    TEXT VAR alter name := menuone ( bestand, text1, text2, TRUE);{}    IF alter name = niltext{}       THEN LEAVE hamsterlandschaft kopieren{}    FI.{}  bestand:{}    ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix).{}  text1:{}    IF ist hamster THEN anwendungstext (111) ELSE anwendungstext (141) FI.{}  text2:{}    IF ist hamster THEN anwendungstext (112) ELSE anwendungstext (142) FI.{}  erfrage neuen flaechennamen:{}
    TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).{}  ausgabe:{}     ueberschrift + hinweis auf alt + bisheriger name + aufforderung.{}  ueberschrift:{}    IF ist hamster{}       THEN center (maxlaenge, invers (anwendungstext (111))) + ""13""13""{}       ELSE center (maxlaenge, invers (anwendungstext (141))) + ""13""13""{}    FI.{}  hinweis auf alt:{}    IF ist hamster THEN anwendungstext (113) ELSE anwendungstext (143) FI.{}  bisheriger name:{}    ""13""13" " + invers (alter name) + ""13""13"".{}
  aufforderung:{}    anwendungstext (202).{}  kopiere ggf die flaeche:{}    IF   neuer name = niltext{}         THEN menuinfo (invers (anwendungstext (192)));{}              LEAVE hamsterlandschaft kopieren{}    ELIF exists (praefix + neuer name){}         THEN mache vorwurf;{}              LEAVE hamsterlandschaft kopieren{}       ELSE copy (praefix + alter name, praefix + neuer name){}    FI.{}  mache vorwurf:{}    IF ist hamster{}       THEN menuinfo (anwendungstext (193)){}       ELSE menuinfo (anwendungstext (194)){}
    FI.{}END PROC hamsterlandschaft kopieren;{}PROC hamsterprogramm kopieren:{}  ermittle alten programmnamen;{}  erfrage neuen programmnamen;{}  kopiere ggf das programm.{}  ermittle alten programmnamen:{}    IF NOT not empty (bestand){}       THEN noch kein programm;{}            LEAVE hamsterprogramm kopieren{}       ELSE biete auswahl an{}    FI.{}  biete auswahl an:{}    TEXT VAR alter name := menuone ( bestand, anwendungstext (171),{}                                     anwendungstext (172), TRUE);{}
    IF alter name = niltext{}       THEN LEAVE hamsterprogramm kopieren{}    FI.{}  bestand:{}    ALL myself - infix namen (ALL myself, praefix, flaechentype).{}  erfrage neuen programmnamen:{}    TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).{}  ausgabe:{}     ueberschrift + anwendungstext (173) + bisheriger name{}                  + anwendungstext (202).{}  ueberschrift:{}    center (maxlaenge, invers (anwendungstext (171))) + ""13""13"".{}  bisheriger name:{}    ""13""13" " + invers (alter name) + ""13""13"".{}
  kopiere ggf das programm:{}    IF   neuer name = niltext{}         THEN menuinfo (invers (anwendungstext (192)));{}              LEAVE hamsterprogramm kopieren{}    ELIF exists (neuer name){}         THEN mache vorwurf;{}              LEAVE hamsterprogramm kopieren{}       ELSE copy (alter name, neuer name){}    FI.{}  mache vorwurf:{}    menuinfo (anwendungstext (195)).{}END PROC hamsterprogramm kopieren;{}PROC hamsterlandschaft umbenennen:{}  ermittle alten flaechennamen;{}  erfrage neuen flaechennamen;{}
  benenne ggf die flaeche um.{}  ermittle alten flaechennamen:{}    IF NOT not empty (bestand){}       THEN noch keine flaeche;{}            LEAVE hamsterlandschaft umbenennen{}       ELSE biete auswahl an{}    FI.{}  biete auswahl an:{}    TEXT VAR alter name := menuone ( bestand, text1, text2, TRUE);{}    IF alter name = niltext{}       THEN LEAVE hamsterlandschaft umbenennen{}    FI.{}  bestand:{}    ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix).{}  text1:{}    IF ist hamster THEN anwendungstext (114) ELSE anwendungstext (144) FI.{}
  text2:{}    IF ist hamster THEN anwendungstext (115) ELSE anwendungstext (145) FI.{}  erfrage neuen flaechennamen:{}    TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).{}  ausgabe:{}     ueberschrift + hinweis auf alt + bisheriger name + aufforderung.{}  ueberschrift:{}    IF ist hamster{}       THEN center (maxlaenge, invers (anwendungstext (114))) + ""13""13""{}       ELSE center (maxlaenge, invers (anwendungstext (144))) + ""13""13""{}    FI.{}  hinweis auf alt:{}    IF ist hamster THEN anwendungstext (116) ELSE anwendungstext (146) FI.{}
  bisheriger name:{}    ""13""13" " + invers (alter name) + ""13""13"".{}  aufforderung:{}    IF ist hamster THEN anwendungstext (117) ELSE anwendungstext (147) FI.{}  benenne ggf die flaeche um:{}    IF   neuer name = niltext{}         THEN menuinfo (invers (anwendungstext (192)));{}              LEAVE hamsterlandschaft umbenennen{}    ELIF exists (praefix + neuer name){}         THEN mache vorwurf;{}              LEAVE hamsterlandschaft umbenennen{}    ELSE rename (praefix + alter name, praefix + neuer name);{}
         flaechenname := neuer name{}    FI.{}  mache vorwurf:{}    IF ist hamster{}       THEN menuinfo (anwendungstext (193)){}       ELSE menuinfo (anwendungstext (194)){}    FI.{}END PROC hamsterlandschaft umbenennen;{}PROC hamsterprogramm umbenennen:{}  ermittle alten programmnamen;{}  erfrage neuen programmnamen;{}  benenne ggf das programm um.{}  ermittle alten programmnamen:{}    IF NOT not empty (bestand){}       THEN noch kein programm;{}            LEAVE hamsterprogramm umbenennen{}       ELSE biete auswahl an{}
    FI.{}  biete auswahl an:{}    TEXT VAR alter name := menuone ( bestand, anwendungstext (174),{}                                     anwendungstext (175), TRUE);{}    IF alter name = niltext{}       THEN LEAVE hamsterprogramm umbenennen{}    FI.{}  bestand:{}    ALL myself - infix namen (ALL myself, praefix, flaechentype).{}  erfrage neuen programmnamen:{}    TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5).{}  ausgabe:{}     ueberschrift + anwendungstext (176) + bisheriger name{}                  + anwendungstext (177).{}
  ueberschrift:{}    center (maxlaenge, invers (anwendungstext (174))) + ""13""13"".{}  bisheriger name:{}    ""13""13" " + invers (alter name) + ""13""13"".{}  benenne ggf das programm um:{}    IF   neuer name = niltext{}         THEN menuinfo (invers (anwendungstext (192)));{}              LEAVE hamsterprogramm umbenennen{}    ELIF exists (neuer name){}         THEN mache vorwurf;{}              LEAVE hamsterprogramm umbenennen{}       ELSE rename (alter name, neuer name);{}            programmname := neuer name{}
    FI.{}  mache vorwurf:{}    menuinfo (anwendungstext (195)).{}END PROC hamsterprogramm umbenennen;{}PROC hamsterlandschaft loeschen:{}  lasse flaechen auswaehlen;{}  loesche flaechen;{}  regenerate menuscreen.{}  lasse flaechen auswaehlen:{}    THESAURUS VAR verfuegbare;{}    verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{}    IF NOT not empty (verfuegbare){}       THEN noch keine flaeche;{}            LEAVE hamsterlandschaft loeschen{}       ELSE biete auswahl an{}
    FI.{}  biete auswahl an:{}    IF ist hamster{}       THEN verfuegbare := menusome (verfuegbare, anwendungstext (118),{}                                     anwendungstext (119), FALSE){}       ELSE verfuegbare := menusome (verfuegbare, anwendungstext (148),{}                                     anwendungstext (149), FALSE){}    FI.{}  loesche flaechen:{}    show menuwindow;{}    steige ggf bei leerem thesaurus aus;{}    menuwindowout (menuwindowcenter (invers (bezeichnung)));{}    menuwindowline (2);{}
    command dialogue (FALSE);{}    fuehre einzelne operationen aus;{}    command dialogue (TRUE);{}    schlage ggf neue seite auf;{}    menuwindowout (schlussbemerkung);{}    menuwindowstop.{}  bezeichnung:{}    IF ist hamster THEN anwendungstext (118) ELSE anwendungstext (148) FI.{}  schlussbemerkung:{}    IF ist hamster THEN anwendungstext (120) ELSE anwendungstext (150) FI.{}  fuehre einzelne operationen aus:{}    INT VAR k;{}    FOR k FROM 1 UPTO highest entry (verfuegbare) REP{}      IF name (verfuegbare, k) <> ""{}
         THEN disable stop;{}              IF menuwindowyes (" """ + name (verfuegbare, k) + """ "{}                                      + anwendungstext (203)){}                 THEN forget (praefix + name (verfuegbare, k), quiet){}              FI;{}              fehlerbehandlung{}      FI{}    PER;{}    flaechenname := "".{}  steige ggf bei leerem thesaurus aus:{}    IF NOT not empty (verfuegbare){}       THEN menuwindowline (2);{}            IF ist hamster{}               THEN menuwindowout (anwendungstext (109)){}
               ELSE menuwindowout (anwendungstext (139)){}            FI;{}            menuwindowstop;{}            regenerate menuscreen;{}            LEAVE hamsterlandschaft 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 hamsterlandschaft loeschen{}    FI.{}END PROC hamsterlandschaft loeschen;{}PROC hamsterprogramm loeschen:{}  lasse programme auswaehlen;{}  loesche programme;{}  regenerate menuscreen.{}  lasse programme auswaehlen:{}    THESAURUS VAR verfuegbare;{}    verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype);{}    IF NOT not empty (verfuegbare){}       THEN noch kein programm;{}            LEAVE hamsterprogramm loeschen{}       ELSE biete auswahl an{}    FI.{}
  biete auswahl an:{}    verfuegbare := menusome (verfuegbare, anwendungstext (178),{}                             anwendungstext (179), FALSE).{}  loesche programme:{}    show menuwindow;{}    steige ggf bei leerem thesaurus aus;{}    menuwindowout (menuwindowcenter (invers (anwendungstext (178))));{}    menuwindowline (2);{}    command dialogue (FALSE);{}    fuehre einzelne operationen aus;{}    command dialogue (TRUE);{}    schlage ggf neue seite auf;{}    menuwindowout (anwendungstext (180));{}
    menuwindowstop.{}  fuehre einzelne operationen aus:{}    INT VAR k;{}    FOR k FROM 1 UPTO highest entry (verfuegbare) REP{}      IF name (verfuegbare, k) <> ""{}         THEN disable stop;{}              IF menuwindowyes (" """ + name (verfuegbare, k) + """ "{}                                      + anwendungstext (203)){}                 THEN forget (name (verfuegbare, k), quiet){}              FI;{}              fehlerbehandlung{}      FI{}    PER;{}    programmname := "".{}  steige ggf bei leerem thesaurus aus:{}
    IF NOT not empty (verfuegbare){}       THEN menuwindowline (2);{}            menuwindowout (anwendungstext (169));{}            menuwindowstop;{}            regenerate menuscreen;{}            LEAVE hamsterprogramm 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 hamsterprogramm loeschen{}    FI.{}END PROC hamsterprogramm loeschen;{}PROC hamsterinteraktiv laufen lassen:{}  frage nach neuer flaeche;{}  cursor on;{}  IF ist hamster{}     THEN hamsterinter (flaechenname){}     ELSE roboterinter (flaechenname){}  FI;{}  programmname := "PROTOKOLL";{}  cursor off;{}  regenerate menuscreen.{}  frage nach neuer flaeche:{}    IF menuyes (ueberschrift + fragetext, 5){}       THEN lasse flaeche auswaehlen{}       ELSE weise auf landschaftsgestaltung hin;{}
            LEAVE hamsterinteraktiv laufen lassen{}    FI.{}  ueberschrift:{}    IF ist hamster{}       THEN center (laenge, invers (anwendungstext (122))) + ""13""13""{}       ELSE center (laenge, invers (anwendungstext (152))) + ""13""13""{}    FI.{}  fragetext:{}    IF ist hamster{}       THEN center (laenge, anwendungstext (123)){}       ELSE center (laenge, anwendungstext (153)){}    FI.{}  laenge:{}    IF ist hamster{}       THEN max (length (anwendungstext (122)),{}                 length (anwendungstext (123))) + 5{}
       ELSE max (length (anwendungstext (152)),{}                 length (anwendungstext (153))) + 5{}    FI.{}  lasse flaeche auswaehlen:{}    THESAURUS VAR verfuegbare;{}    verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{}    IF ist hamster{}       THEN flaechenname := menuone (verfuegbare, anwendungstext (122),{}                                     anwendungstext (106), FALSE){}       ELSE flaechenname := menuone (verfuegbare, anwendungstext (152),{}                                     anwendungstext (136), FALSE){}
    FI;{}    IF flaechenname = niltext{}       THEN weise auf landschaftsgestaltung hin;{}            regenerate menuscreen;{}            LEAVE hamsterinteraktiv laufen lassen{}    FI.{}  weise auf landschaftsgestaltung hin:{}    WINDOW VAR mfenster := current menuwindow;{}    IF ist hamster{}       THEN boxinfo (mfenster, anwendungstext (124), 5, maxint){}       ELSE boxinfo (mfenster, anwendungstext (154), 5, maxint){}    FI.{}END PROC hamsterinteraktiv laufen lassen;{}PROC hamster laufen lassen:{}
  programmname ermitteln;{}  BOOL VAR namen eingesetzt :: FALSE;{}  untersuche programmdatei auf flaechennamen;{}  page;{}  geschwindigkeit (5);{}  cursor on;{}  lauf (programmname);{}  cursor off;{}  IF namen eingesetzt{}     THEN entferne flaechennamen aus programmdatei{}  FI;{}  regenerate menuscreen.{}  programmname ermitteln:{}    IF programmname <> niltext CAND exists (programmname){}       THEN frage nach diesem programm{}       ELSE lasse programm auswaehlen{}    FI.{}  frage nach diesem programm:{}
    IF menuno (ueberschrift + anwendungstext (163) + name + anwendungstext (164), 5){}       THEN lasse programm auswaehlen{}    FI.{}  ueberschrift:{}    IF ist hamster{}       THEN center (maxlaenge, invers (anwendungstext (125))) + ""13""13""{}       ELSE center (maxlaenge, invers (anwendungstext (155))) + ""13""13""{}    FI.{}  name:{}    ""13""13" " + invers (programmname) + ""13""13"".{}  lasse programm auswaehlen:{}    THESAURUS VAR verfuegbare;{}    verfuegbare  := ALL myself - infix namen (ALL myself, praefix, flaechentype);{}
    IF ist hamster{}       THEN programmname := menuone (verfuegbare, anwendungstext (125),{}                                     anwendungstext (166), TRUE){}       ELSE programmname := menuone (verfuegbare, anwendungstext (155),{}                                     anwendungstext (166), TRUE){}    FI;{}    IF programmname = niltext{}       THEN LEAVE hamster laufen lassen{}    FI.{}  untersuche programmdatei auf flaechennamen:{}    FILE VAR a :: sequential file (modify, programmname);{}    TEXT VAR zeile;{}
    to line (a, 1);{}    REP{}      read record (a, zeile);{}      zeile := compress (zeile);{}      IF NOT eof (a) THEN down (a) FI{}    UNTIL zeile <> "" OR eof (a) PER;{}    IF pos (zeile, "landschaft") = 0 AND pos (zeile, "arbeitsfeld") = 0{}       THEN ermittle flaechennamen;{}            setze flaechennamen in datei ein{}    FI.{}  ermittle flaechennamen:{}    IF flaechenname <> ""{}       THEN frage nach altem flaechennamen{}       ELSE lasse flaeche auswaehlen{}    FI.{}  frage nach altem flaechennamen:{}
    IF ist hamster{}       THEN frage nach alter landschaft{}       ELSE frage nach altem arbeitsfeld{}    FI.{}  frage nach alter landschaft:{}    IF menuno (ueberschrift + anwendungstext (103){}                    + fname + anwendungstext (104), 5){}       THEN lasse flaeche auswaehlen{}    FI.{}  frage nach altem arbeitsfeld:{}    IF menuno (ueberschrift + anwendungstext (133){}                    + fname + anwendungstext (134), 5){}       THEN lasse flaeche auswaehlen{}    FI.{}  fname:{}    ""13""13" " + invers (flaechenname) + ""13""13"".{}
  lasse flaeche auswaehlen:{}    verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix);{}    IF ist hamster{}       THEN flaechenname := menuone (verfuegbare, anwendungstext (125),{}                                     anwendungstext (106), FALSE){}       ELSE flaechenname := menuone (verfuegbare, anwendungstext (155),{}                                     anwendungstext (136), FALSE){}    FI;{}    IF flaechenname = niltext{}       THEN regenerate menuscreen;{}            landschaftsfehler anzeigen;{}
            LEAVE hamster laufen lassen{}    FI.{}  landschaftsfehler anzeigen:{}    IF ist hamster{}       THEN menuinfo (anwendungstext (124)){}       ELSE menuinfo (anwendungstext (154)){}    FI.{}  setze flaechennamen in datei ein:{}    to line (a, 1);{}    zeile := "landschaft (""" + flaechenname + """);";{}    insert record (a);{}    write record (a, zeile);{}    namen eingesetzt := TRUE.{}  entferne flaechennamen aus programmdatei:{}    FILE VAR b :: sequential file (modify, programmname);{}
    to line (b, 1);{}    REP{}      read record (b, zeile);{}      IF pos (zeile, "landschaft") = 0 AND pos (zeile, "arbeitsfeld") = 0{}         THEN IF NOT eof (b) THEN down (b) FI{}      FI{}    UNTIL zeile <> "" OR eof (b) PER;{}    IF pos (zeile, "landschaft") > 0 OR pos (zeile, "arbeitsfeld") > 0{}       THEN delete record (b){}    FI{}END PROC hamster laufen lassen;{}PROC meckere zu langen namen an:{}  menuinfo (anwendungstext (191)){}END PROC meckere zu langen namen an;{}PROC meckere existierende flaeche an:{}
  IF ist hamster{}     THEN menuinfo (anwendungstext (193)){}     ELSE menuinfo (anwendungstext (194)){}  FI{}END PROC meckere existierende flaeche an;{}PROC meckere existierendes programm an:{}  menuinfo (anwendungstext (195)){}END PROC meckere existierendes programm an;{}PROC noch keine flaeche:{}  IF ist hamster{}     THEN menuinfo (anwendungstext (196)){}     ELSE menuinfo (anwendungstext (197)){}  FI{}END PROC noch keine flaeche;{}PROC noch kein programm:{}  menuinfo (anwendungstext (198)){}
END PROC noch kein programm;{}END PACKET ls herbert und robbi 3;{}