From afd4c3c448381f6eb706090911a15c162fdaf8af Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 9 Oct 2016 11:28:19 +0200 Subject: Decompress source files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit EUMEL’s TEXT dataspaces wastes a lot of storage space. Some files were therefore “compressed” by storing them as a single line, reducing overhead significantly. --- hamster/ls-Herbert und Robbi 3 | 963 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 904 insertions(+), 59 deletions(-) (limited to 'hamster/ls-Herbert und Robbi 3') 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; + -- cgit v1.2.3