summaryrefslogtreecommitdiff
path: root/hamster/ls-Herbert und Robbi 3
diff options
context:
space:
mode:
Diffstat (limited to 'hamster/ls-Herbert und Robbi 3')
-rw-r--r--hamster/ls-Herbert und Robbi 3963
1 files changed, 904 insertions, 59 deletions
diff --git a/hamster/ls-Herbert und Robbi 3 b/hamster/ls-Herbert und Robbi 3
index e5db408..7a1da20 100644
--- a/hamster/ls-Herbert und Robbi 3
+++ b/hamster/ls-Herbert und Robbi 3
@@ -22,63 +22,908 @@
*)
-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;{}
+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;
+