(* ********************************************************* ********************************************************* ** ** ** ls-Herbert und Robbi 3 ** ** ** ** Version 1.1 ** ** ** ** (Stand: 30.03.88) ** ** ** ** ** ** Autor: Wolfgang Weber, Bielefeld ** ** ** ** ** ** Copyright (C) 1987, 1988 Eva Latta-Weber, Bielefeld ** ** ** ** Copyright (C) 1988 ERGOS GmbH, Siegburg ** ** ** ********************************************************* ********************************************************* *) PACKET ls herbert und robbi 3 DEFINES hamsterbefehlsauskunft, hamsterlaufauskunft, hamsterlandschaftsauskunft, hamsterlandschaft verzeichnis, hamsterlandschaft neu erstellen, hamsterlandschaft ansehen, hamsterlandschaft drucken, hamsterlandschaft kopieren, hamsterlandschaft umbenennen, hamsterlandschaft loeschen, hamsterprogramm verzeichnis, hamsterprogramm neu erstellen, hamsterprogramm ansehen, hamsterprogramm kopieren, hamsterprogramm umbenennen, hamsterprogramm loeschen, hamsterprogramm drucken, hamster laufen lassen, hamsterinteraktiv laufen lassen, hamster, roboter: LET menukarte = "ls-MENUKARTE:Herbert und Robbi", praefix = "Flaeche:", flaechentype = 1007, niltext = "", maxlaenge = 60, maxnamenslaenge = 50; TEXT VAR flaechenname :: "", programmname :: ""; INITFLAG VAR in this task :: FALSE; PROC initialize hamster: IF NOT initialized (in this task) THEN flaechenname := ""; programmname := "" FI END PROC initialize hamster; PROC hamster: sei ein hamster; initialize hamster; install menu (menukarte); handle menu ("HAMSTER") END PROC hamster; PROC roboter: sei ein roboter; initialize hamster; install menu (menukarte); handle menu ("ROBOTER"); END PROC roboter; PROC hamsterlaufauskunft: menuinfo (laufauskunftstext) END PROC hamsterlaufauskunft; PROC hamsterlandschaftsauskunft: menuinfo (landschaftsauskunftstext) END PROC hamsterlandschaftsauskunft; PROC hamsterbefehlsauskunft: menuinfo (befehlsauskunftstext); menuinfo (testauskunftstext 1); IF testauskunftstext 2 <> "" THEN menuinfo (testauskunftstext 2) FI END PROC hamsterbefehlsauskunft; PROC hamsterlandschaft verzeichnis: THESAURUS VAR landschaften :: ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix); forget ("Interne Thesaurusdateiliste", quiet); FILE VAR f :: sequential file (output, "Interne Thesaurusdateiliste"); f FILLBY landschaften; headline (f, anwendungstext (204)); modify (f); to line (f, 1); insert record (f); write record (f, kenntext); to line (f, 2); insert record (f); to line (f, 1); menuwindowshow (f); forget ("Interne Thesaurusdateiliste", quiet); regenerate menuscreen. kenntext: IF ist hamster THEN anwendungstext (121) ELSE anwendungstext (151) FI. END PROC hamsterlandschaft verzeichnis; PROC hamsterprogramm verzeichnis: THESAURUS VAR programme :: ALL myself - infix namen (ALL myself, praefix, flaechentype); forget ("Interne Thesaurusdateiliste", quiet); FILE VAR f :: sequential file (output, "Interne Thesaurusdateiliste"); f FILLBY programme; headline (f, anwendungstext (204)); modify (f); to line (f, 1); insert record (f); write record (f, anwendungstext (181)); to line (f, 2); insert record (f); to line (f, 1); menuwindowshow (f); forget ("Interne Thesaurusdateiliste", quiet); regenerate menuscreen END PROC hamsterprogramm verzeichnis; PROC hamsterlandschaft neu erstellen: hole flaechenname; kontrolliere den flaechennamen; kommandomodus; landschaft (flaechenname); regenerate menuscreen. hole flaechenname: IF ist hamster THEN flaechenname := menuanswer (anwendungstext (101) + anwendungstext (102), "", 5) ELSE flaechenname := menuanswer (anwendungstext (131) + anwendungstext (132), "", 5) FI. kontrolliere den flaechennamen: IF flaechenname = niltext THEN LEAVE hamsterlandschaft neu erstellen ELIF length (flaechenname) > maxnamenslaenge THEN meckere zu langen namen an; flaechenname := niltext; LEAVE hamsterlandschaft neu erstellen ELIF exists (praefix + flaechenname) THEN meckere existierende flaeche an; LEAVE hamsterlandschaft neu erstellen FI END PROC hamsterlandschaft neu erstellen; PROC hamsterprogramm neu erstellen: hole programmname; kontrolliere den programmnamen; command dialogue (FALSE); cursor on; stdinfoedit (programmname); cursor off; command dialogue (TRUE); regenerate menuscreen. hole programmname: programmname := menuanswer (anwendungstext (161) + anwendungstext (162), "", 5). kontrolliere den programmnamen: IF programmname = niltext THEN LEAVE hamsterprogramm neu erstellen ELIF length (programmname) > maxnamenslaenge THEN meckere zu langen namen an; programmname := niltext; LEAVE hamsterprogramm neu erstellen ELIF exists (programmname) THEN meckere existierendes programm an; LEAVE hamsterprogramm neu erstellen FI END PROC hamsterprogramm neu erstellen; PROC hamsterlandschaft ansehen: IF flaechenname <> niltext CAND exists (praefix + flaechenname) THEN frage nach dieser flaeche ELSE lasse flaeche auswaehlen FI; kommandomodus; landschaft (flaechenname); regenerate menuscreen. frage nach dieser flaeche: IF menuno (ueberschrift + text 1 + name + text 2, 5) THEN lasse flaeche auswaehlen FI. ueberschrift: IF ist hamster THEN center (maxlaenge, invers (anwendungstext (105))) + ""13""13"" ELSE center (maxlaenge, invers (anwendungstext (135))) + ""13""13"" FI. text 1: IF ist hamster THEN anwendungstext (103) ELSE anwendungstext (133) FI. name: ""13""13" " + invers (flaechenname) + ""13""13"". text 2: IF ist hamster THEN anwendungstext (104) ELSE anwendungstext (134) FI. lasse flaeche auswaehlen: THESAURUS VAR verfuegbare; verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix); IF NOT not empty (verfuegbare) THEN noch keine flaeche; LEAVE hamsterlandschaft ansehen ELSE biete auswahl an FI. biete auswahl an: IF ist hamster THEN flaechenname := menuone (verfuegbare, anwendungstext (105), anwendungstext (106), FALSE) ELSE flaechenname := menuone (verfuegbare, anwendungstext (135), anwendungstext (136), FALSE) FI; IF flaechenname = niltext THEN regenerate menuscreen; LEAVE hamsterlandschaft ansehen FI. END PROC hamsterlandschaft ansehen; PROC hamsterprogramm ansehen: IF programmname <> niltext CAND exists (programmname) THEN frage nach diesem programm ELSE lasse programm auswaehlen FI; cursor on; stdinfoedit (programmname); cursor off; regenerate menuscreen. frage nach diesem programm: IF menuno (ueberschrift + anwendungstext (163) + name + anwendungstext (164), 5) THEN lasse programm auswaehlen FI. ueberschrift: center (maxlaenge, invers (anwendungstext (165))) + ""13""13"". name: ""13""13" " + invers (programmname) + ""13""13"". lasse programm auswaehlen: THESAURUS VAR verfuegbare; verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype); IF NOT not empty (verfuegbare) THEN noch kein programm; LEAVE hamsterprogramm ansehen ELSE biete auswahl an FI. biete auswahl an: programmname := menuone (verfuegbare, anwendungstext (165), anwendungstext (166), FALSE); IF programmname = niltext THEN regenerate menuscreen; LEAVE hamsterprogramm ansehen FI. END PROC hamsterprogramm ansehen; PROC hamsterlandschaft drucken: lasse flaechen auswaehlen; drucke flaechen; regenerate menuscreen. lasse flaechen auswaehlen: THESAURUS VAR verfuegbare; verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix); IF NOT not empty (verfuegbare) THEN noch keine flaeche; LEAVE hamsterlandschaft drucken ELSE biete auswahl an FI. biete auswahl an: IF ist hamster THEN verfuegbare := menusome (verfuegbare, anwendungstext (107), anwendungstext (108), FALSE) ELSE verfuegbare := menusome (verfuegbare, anwendungstext (137), anwendungstext (138), FALSE) FI. drucke flaechen: show menuwindow; steige ggf bei leerem thesaurus aus; menuwindowout (menuwindowcenter (invers (bezeichnung))); menuwindowline (2); command dialogue (FALSE); fuehre einzelne operationen aus; command dialogue (TRUE); schlage ggf neue seite auf; menuwindowout (schlussbemerkung); menuwindowstop. bezeichnung: IF ist hamster THEN anwendungstext (107) ELSE anwendungstext (137) FI. schlussbemerkung: IF ist hamster THEN anwendungstext (110) ELSE anwendungstext (140) FI. fuehre einzelne operationen aus: INT VAR k; FOR k FROM 1 UPTO highest entry (verfuegbare) REP IF name (verfuegbare, k) <> "" THEN disable stop; menuwindowout ( " """ + name (verfuegbare, k) + """ " + anwendungstext (201)); menuwindowline; drucke landschaft (name (verfuegbare, k)); fehlerbehandlung FI PER. steige ggf bei leerem thesaurus aus: IF NOT not empty (verfuegbare) THEN menuwindowline (2); IF ist hamster THEN menuwindowout (anwendungstext (109)) ELSE menuwindowout (anwendungstext (139)) FI; menuwindowstop; regenerate menuscreen; LEAVE hamsterlandschaft drucken FI. schlage ggf neue seite auf: IF remaining menuwindowlines < 7 THEN menuwindowpage; menuwindowline ELSE menuwindowline (2) FI. fehlerbehandlung: IF is error THEN regenerate menuscreen; menuinfo (invers (errormessage)); clear error; enable stop; LEAVE hamsterlandschaft drucken FI. END PROC hamsterlandschaft drucken; PROC hamsterprogramm drucken: lasse programme auswaehlen; drucke programme; regenerate menuscreen. lasse programme auswaehlen: THESAURUS VAR verfuegbare; verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype); IF NOT not empty (verfuegbare) THEN noch kein programm; LEAVE hamsterprogramm drucken ELSE biete auswahl an FI. biete auswahl an: verfuegbare := menusome (verfuegbare, anwendungstext (167), anwendungstext (168), FALSE). drucke programme: show menuwindow; steige ggf bei leerem thesaurus aus; menuwindowout (menuwindowcenter (invers (anwendungstext (167)))); menuwindowline (2); command dialogue (FALSE); fuehre einzelne operationen aus; command dialogue (TRUE); schlage ggf neue seite auf; menuwindowout (anwendungstext (170)); menuwindowstop. fuehre einzelne operationen aus: INT VAR k; FOR k FROM 1 UPTO highest entry (verfuegbare) REP IF name (verfuegbare, k) <> "" THEN disable stop; menuwindowout ( " """ + name (verfuegbare, k) + """ " + anwendungstext (201)); menuwindowline; print (name (verfuegbare, k)); fehlerbehandlung FI PER. steige ggf bei leerem thesaurus aus: IF NOT not empty (verfuegbare) THEN menuwindowline (2); menuwindowout (anwendungstext (169)); menuwindowstop; regenerate menuscreen; LEAVE hamsterprogramm drucken FI. schlage ggf neue seite auf: IF remaining menuwindowlines < 7 THEN menuwindowpage; menuwindowline ELSE menuwindowline (2) FI. fehlerbehandlung: IF is error THEN regenerate menuscreen; menuinfo (invers (errormessage)); clear error; enable stop; LEAVE hamsterprogramm drucken FI. END PROC hamsterprogramm drucken; PROC hamsterlandschaft kopieren: ermittle alten flaechennamen; erfrage neuen flaechennamen; kopiere ggf die flaeche. ermittle alten flaechennamen: IF NOT not empty (bestand) THEN noch keine flaeche; LEAVE hamsterlandschaft kopieren ELSE biete auswahl an FI. biete auswahl an: TEXT VAR alter name := menuone ( bestand, text1, text2, TRUE); IF alter name = niltext THEN LEAVE hamsterlandschaft kopieren FI. bestand: ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix). text1: IF ist hamster THEN anwendungstext (111) ELSE anwendungstext (141) FI. text2: IF ist hamster THEN anwendungstext (112) ELSE anwendungstext (142) FI. erfrage neuen flaechennamen: TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5). ausgabe: ueberschrift + hinweis auf alt + bisheriger name + aufforderung. ueberschrift: IF ist hamster THEN center (maxlaenge, invers (anwendungstext (111))) + ""13""13"" ELSE center (maxlaenge, invers (anwendungstext (141))) + ""13""13"" FI. hinweis auf alt: IF ist hamster THEN anwendungstext (113) ELSE anwendungstext (143) FI. bisheriger name: ""13""13" " + invers (alter name) + ""13""13"". aufforderung: anwendungstext (202). kopiere ggf die flaeche: IF neuer name = niltext THEN menuinfo (invers (anwendungstext (192))); LEAVE hamsterlandschaft kopieren ELIF exists (praefix + neuer name) THEN mache vorwurf; LEAVE hamsterlandschaft kopieren ELSE copy (praefix + alter name, praefix + neuer name) FI. mache vorwurf: IF ist hamster THEN menuinfo (anwendungstext (193)) ELSE menuinfo (anwendungstext (194)) FI. END PROC hamsterlandschaft kopieren; PROC hamsterprogramm kopieren: ermittle alten programmnamen; erfrage neuen programmnamen; kopiere ggf das programm. ermittle alten programmnamen: IF NOT not empty (bestand) THEN noch kein programm; LEAVE hamsterprogramm kopieren ELSE biete auswahl an FI. biete auswahl an: TEXT VAR alter name := menuone ( bestand, anwendungstext (171), anwendungstext (172), TRUE); IF alter name = niltext THEN LEAVE hamsterprogramm kopieren FI. bestand: ALL myself - infix namen (ALL myself, praefix, flaechentype). erfrage neuen programmnamen: TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5). ausgabe: ueberschrift + anwendungstext (173) + bisheriger name + anwendungstext (202). ueberschrift: center (maxlaenge, invers (anwendungstext (171))) + ""13""13"". bisheriger name: ""13""13" " + invers (alter name) + ""13""13"". kopiere ggf das programm: IF neuer name = niltext THEN menuinfo (invers (anwendungstext (192))); LEAVE hamsterprogramm kopieren ELIF exists (neuer name) THEN mache vorwurf; LEAVE hamsterprogramm kopieren ELSE copy (alter name, neuer name) FI. mache vorwurf: menuinfo (anwendungstext (195)). END PROC hamsterprogramm kopieren; PROC hamsterlandschaft umbenennen: ermittle alten flaechennamen; erfrage neuen flaechennamen; benenne ggf die flaeche um. ermittle alten flaechennamen: IF NOT not empty (bestand) THEN noch keine flaeche; LEAVE hamsterlandschaft umbenennen ELSE biete auswahl an FI. biete auswahl an: TEXT VAR alter name := menuone ( bestand, text1, text2, TRUE); IF alter name = niltext THEN LEAVE hamsterlandschaft umbenennen FI. bestand: ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix). text1: IF ist hamster THEN anwendungstext (114) ELSE anwendungstext (144) FI. text2: IF ist hamster THEN anwendungstext (115) ELSE anwendungstext (145) FI. erfrage neuen flaechennamen: TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5). ausgabe: ueberschrift + hinweis auf alt + bisheriger name + aufforderung. ueberschrift: IF ist hamster THEN center (maxlaenge, invers (anwendungstext (114))) + ""13""13"" ELSE center (maxlaenge, invers (anwendungstext (144))) + ""13""13"" FI. hinweis auf alt: IF ist hamster THEN anwendungstext (116) ELSE anwendungstext (146) FI. bisheriger name: ""13""13" " + invers (alter name) + ""13""13"". aufforderung: IF ist hamster THEN anwendungstext (117) ELSE anwendungstext (147) FI. benenne ggf die flaeche um: IF neuer name = niltext THEN menuinfo (invers (anwendungstext (192))); LEAVE hamsterlandschaft umbenennen ELIF exists (praefix + neuer name) THEN mache vorwurf; LEAVE hamsterlandschaft umbenennen ELSE rename (praefix + alter name, praefix + neuer name); flaechenname := neuer name FI. mache vorwurf: IF ist hamster THEN menuinfo (anwendungstext (193)) ELSE menuinfo (anwendungstext (194)) FI. END PROC hamsterlandschaft umbenennen; PROC hamsterprogramm umbenennen: ermittle alten programmnamen; erfrage neuen programmnamen; benenne ggf das programm um. ermittle alten programmnamen: IF NOT not empty (bestand) THEN noch kein programm; LEAVE hamsterprogramm umbenennen ELSE biete auswahl an FI. biete auswahl an: TEXT VAR alter name := menuone ( bestand, anwendungstext (174), anwendungstext (175), TRUE); IF alter name = niltext THEN LEAVE hamsterprogramm umbenennen FI. bestand: ALL myself - infix namen (ALL myself, praefix, flaechentype). erfrage neuen programmnamen: TEXT VAR neuer name :: menuanswer (ausgabe, alter name, 5). ausgabe: ueberschrift + anwendungstext (176) + bisheriger name + anwendungstext (177). ueberschrift: center (maxlaenge, invers (anwendungstext (174))) + ""13""13"". bisheriger name: ""13""13" " + invers (alter name) + ""13""13"". benenne ggf das programm um: IF neuer name = niltext THEN menuinfo (invers (anwendungstext (192))); LEAVE hamsterprogramm umbenennen ELIF exists (neuer name) THEN mache vorwurf; LEAVE hamsterprogramm umbenennen ELSE rename (alter name, neuer name); programmname := neuer name FI. mache vorwurf: menuinfo (anwendungstext (195)). END PROC hamsterprogramm umbenennen; PROC hamsterlandschaft loeschen: lasse flaechen auswaehlen; loesche flaechen; regenerate menuscreen. lasse flaechen auswaehlen: THESAURUS VAR verfuegbare; verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix); IF NOT not empty (verfuegbare) THEN noch keine flaeche; LEAVE hamsterlandschaft loeschen ELSE biete auswahl an FI. biete auswahl an: IF ist hamster THEN verfuegbare := menusome (verfuegbare, anwendungstext (118), anwendungstext (119), FALSE) ELSE verfuegbare := menusome (verfuegbare, anwendungstext (148), anwendungstext (149), FALSE) FI. loesche flaechen: show menuwindow; steige ggf bei leerem thesaurus aus; menuwindowout (menuwindowcenter (invers (bezeichnung))); menuwindowline (2); command dialogue (FALSE); fuehre einzelne operationen aus; command dialogue (TRUE); schlage ggf neue seite auf; menuwindowout (schlussbemerkung); menuwindowstop. bezeichnung: IF ist hamster THEN anwendungstext (118) ELSE anwendungstext (148) FI. schlussbemerkung: IF ist hamster THEN anwendungstext (120) ELSE anwendungstext (150) FI. fuehre einzelne operationen aus: INT VAR k; FOR k FROM 1 UPTO highest entry (verfuegbare) REP IF name (verfuegbare, k) <> "" THEN disable stop; IF menuwindowyes (" """ + name (verfuegbare, k) + """ " + anwendungstext (203)) THEN forget (praefix + name (verfuegbare, k), quiet) FI; fehlerbehandlung FI PER; flaechenname := "". steige ggf bei leerem thesaurus aus: IF NOT not empty (verfuegbare) THEN menuwindowline (2); IF ist hamster THEN menuwindowout (anwendungstext (109)) ELSE menuwindowout (anwendungstext (139)) FI; menuwindowstop; regenerate menuscreen; LEAVE hamsterlandschaft loeschen FI. schlage ggf neue seite auf: IF remaining menuwindowlines < 7 THEN menuwindowpage; menuwindowline ELSE menuwindowline (2) FI. fehlerbehandlung: IF is error THEN regenerate menuscreen; menuinfo (invers (errormessage)); clear error; enable stop; LEAVE hamsterlandschaft loeschen FI. END PROC hamsterlandschaft loeschen; PROC hamsterprogramm loeschen: lasse programme auswaehlen; loesche programme; regenerate menuscreen. lasse programme auswaehlen: THESAURUS VAR verfuegbare; verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype); IF NOT not empty (verfuegbare) THEN noch kein programm; LEAVE hamsterprogramm loeschen ELSE biete auswahl an FI. biete auswahl an: verfuegbare := menusome (verfuegbare, anwendungstext (178), anwendungstext (179), FALSE). loesche programme: show menuwindow; steige ggf bei leerem thesaurus aus; menuwindowout (menuwindowcenter (invers (anwendungstext (178)))); menuwindowline (2); command dialogue (FALSE); fuehre einzelne operationen aus; command dialogue (TRUE); schlage ggf neue seite auf; menuwindowout (anwendungstext (180)); menuwindowstop. fuehre einzelne operationen aus: INT VAR k; FOR k FROM 1 UPTO highest entry (verfuegbare) REP IF name (verfuegbare, k) <> "" THEN disable stop; IF menuwindowyes (" """ + name (verfuegbare, k) + """ " + anwendungstext (203)) THEN forget (name (verfuegbare, k), quiet) FI; fehlerbehandlung FI PER; programmname := "". steige ggf bei leerem thesaurus aus: IF NOT not empty (verfuegbare) THEN menuwindowline (2); menuwindowout (anwendungstext (169)); menuwindowstop; regenerate menuscreen; LEAVE hamsterprogramm loeschen FI. schlage ggf neue seite auf: IF remaining menuwindowlines < 7 THEN menuwindowpage; menuwindowline ELSE menuwindowline (2) FI. fehlerbehandlung: IF is error THEN regenerate menuscreen; menuinfo (invers (errormessage)); clear error; enable stop; LEAVE hamsterprogramm loeschen FI. END PROC hamsterprogramm loeschen; PROC hamsterinteraktiv laufen lassen: frage nach neuer flaeche; cursor on; IF ist hamster THEN hamsterinter (flaechenname) ELSE roboterinter (flaechenname) FI; programmname := "PROTOKOLL"; cursor off; regenerate menuscreen. frage nach neuer flaeche: IF menuyes (ueberschrift + fragetext, 5) THEN lasse flaeche auswaehlen ELSE weise auf landschaftsgestaltung hin; LEAVE hamsterinteraktiv laufen lassen FI. ueberschrift: IF ist hamster THEN center (laenge, invers (anwendungstext (122))) + ""13""13"" ELSE center (laenge, invers (anwendungstext (152))) + ""13""13"" FI. fragetext: IF ist hamster THEN center (laenge, anwendungstext (123)) ELSE center (laenge, anwendungstext (153)) FI. laenge: IF ist hamster THEN max (length (anwendungstext (122)), length (anwendungstext (123))) + 5 ELSE max (length (anwendungstext (152)), length (anwendungstext (153))) + 5 FI. lasse flaeche auswaehlen: THESAURUS VAR verfuegbare; verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix); IF ist hamster THEN flaechenname := menuone (verfuegbare, anwendungstext (122), anwendungstext (106), FALSE) ELSE flaechenname := menuone (verfuegbare, anwendungstext (152), anwendungstext (136), FALSE) FI; IF flaechenname = niltext THEN weise auf landschaftsgestaltung hin; regenerate menuscreen; LEAVE hamsterinteraktiv laufen lassen FI. weise auf landschaftsgestaltung hin: WINDOW VAR mfenster := current menuwindow; IF ist hamster THEN boxinfo (mfenster, anwendungstext (124), 5, maxint) ELSE boxinfo (mfenster, anwendungstext (154), 5, maxint) FI. END PROC hamsterinteraktiv laufen lassen; PROC hamster laufen lassen: programmname ermitteln; BOOL VAR namen eingesetzt :: FALSE; untersuche programmdatei auf flaechennamen; page; geschwindigkeit (5); cursor on; lauf (programmname); cursor off; IF namen eingesetzt THEN entferne flaechennamen aus programmdatei FI; regenerate menuscreen. programmname ermitteln: IF programmname <> niltext CAND exists (programmname) THEN frage nach diesem programm ELSE lasse programm auswaehlen FI. frage nach diesem programm: IF menuno (ueberschrift + anwendungstext (163) + name + anwendungstext (164), 5) THEN lasse programm auswaehlen FI. ueberschrift: IF ist hamster THEN center (maxlaenge, invers (anwendungstext (125))) + ""13""13"" ELSE center (maxlaenge, invers (anwendungstext (155))) + ""13""13"" FI. name: ""13""13" " + invers (programmname) + ""13""13"". lasse programm auswaehlen: THESAURUS VAR verfuegbare; verfuegbare := ALL myself - infix namen (ALL myself, praefix, flaechentype); IF ist hamster THEN programmname := menuone (verfuegbare, anwendungstext (125), anwendungstext (166), TRUE) ELSE programmname := menuone (verfuegbare, anwendungstext (155), anwendungstext (166), TRUE) FI; IF programmname = niltext THEN LEAVE hamster laufen lassen FI. untersuche programmdatei auf flaechennamen: FILE VAR a :: sequential file (modify, programmname); TEXT VAR zeile; to line (a, 1); REP read record (a, zeile); zeile := compress (zeile); IF NOT eof (a) THEN down (a) FI UNTIL zeile <> "" OR eof (a) PER; IF pos (zeile, "landschaft") = 0 AND pos (zeile, "arbeitsfeld") = 0 THEN ermittle flaechennamen; setze flaechennamen in datei ein FI. ermittle flaechennamen: IF flaechenname <> "" THEN frage nach altem flaechennamen ELSE lasse flaeche auswaehlen FI. frage nach altem flaechennamen: IF ist hamster THEN frage nach alter landschaft ELSE frage nach altem arbeitsfeld FI. frage nach alter landschaft: IF menuno (ueberschrift + anwendungstext (103) + fname + anwendungstext (104), 5) THEN lasse flaeche auswaehlen FI. frage nach altem arbeitsfeld: IF menuno (ueberschrift + anwendungstext (133) + fname + anwendungstext (134), 5) THEN lasse flaeche auswaehlen FI. fname: ""13""13" " + invers (flaechenname) + ""13""13"". lasse flaeche auswaehlen: verfuegbare := ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix); IF ist hamster THEN flaechenname := menuone (verfuegbare, anwendungstext (125), anwendungstext (106), FALSE) ELSE flaechenname := menuone (verfuegbare, anwendungstext (155), anwendungstext (136), FALSE) FI; IF flaechenname = niltext THEN regenerate menuscreen; landschaftsfehler anzeigen; LEAVE hamster laufen lassen FI. landschaftsfehler anzeigen: IF ist hamster THEN menuinfo (anwendungstext (124)) ELSE menuinfo (anwendungstext (154)) FI. setze flaechennamen in datei ein: to line (a, 1); zeile := "landschaft (""" + flaechenname + """);"; insert record (a); write record (a, zeile); namen eingesetzt := TRUE. entferne flaechennamen aus programmdatei: FILE VAR b :: sequential file (modify, programmname); to line (b, 1); REP read record (b, zeile); IF pos (zeile, "landschaft") = 0 AND pos (zeile, "arbeitsfeld") = 0 THEN IF NOT eof (b) THEN down (b) FI FI UNTIL zeile <> "" OR eof (b) PER; IF pos (zeile, "landschaft") > 0 OR pos (zeile, "arbeitsfeld") > 0 THEN delete record (b) FI END PROC hamster laufen lassen; PROC meckere zu langen namen an: menuinfo (anwendungstext (191)) END PROC meckere zu langen namen an; PROC meckere existierende flaeche an: IF ist hamster THEN menuinfo (anwendungstext (193)) ELSE menuinfo (anwendungstext (194)) FI END PROC meckere existierende flaeche an; PROC meckere existierendes programm an: menuinfo (anwendungstext (195)) END PROC meckere existierendes programm an; PROC noch keine flaeche: IF ist hamster THEN menuinfo (anwendungstext (196)) ELSE menuinfo (anwendungstext (197)) FI END PROC noch keine flaeche; PROC noch kein programm: menuinfo (anwendungstext (198)) END PROC noch kein programm; END PACKET ls herbert und robbi 3;