summaryrefslogtreecommitdiff
path: root/hamster
diff options
context:
space:
mode:
Diffstat (limited to 'hamster')
-rw-r--r--hamster/ls-Herbert und Robbi 1984
-rw-r--r--hamster/ls-Herbert und Robbi 2139
-rw-r--r--hamster/ls-Herbert und Robbi 3929
-rw-r--r--hamster/ls-Herbert und Robbi-gen142
-rw-r--r--hamster/ls-MENUKARTE:Herbert und Robbibin94720 -> 0 bytes
5 files changed, 0 insertions, 2194 deletions
diff --git a/hamster/ls-Herbert und Robbi 1 b/hamster/ls-Herbert und Robbi 1
deleted file mode 100644
index 9b3ff72..0000000
--- a/hamster/ls-Herbert und Robbi 1
+++ /dev/null
@@ -1,984 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-Herbert und Robbi 1 **
- ** **
- ** 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 1 DEFINES
- sei ein hamster, ist hamster,
- sei ein roboter, ist roboter,
- landschaft, arbeitsfeld,
- vor, links um, nimm, gib,
- korn da, werkstueck da,
- backen leer, behaelter leer,
- vorn frei, lauf,
- hamsterinter, roboterinter,
- geschwindigkeit, taste,
- befehlssatz erweitern,
- befehlssatz ist erweitert,
- drucke landschaft,
- hamster druckerstart einstellen,
- hamster drucker xstart,
-
- hamster drucker ystart,
- hamster landschaftsschrifttyp einstellen,
- hamster landschaftsschrifttyp,
- druckereinstellung fuer flaechenausdruck,
- landschaftsauskunftstext,
- testauskunftstext 1, testauskunftstext 2,
- befehlsauskunftstext, laufauskunftstext,
- kommandomodus, hamstermodus,
- zeige landschaft, lege landschaft ab:
-TYPE LOCATION = STRUCT (INT x, y);
-LET menukarte = "ls-MENUKARTE:Herbert und Robbi",
- richtung = ""3""8""10""2"",
-
- erscheinungsform = "A<V>",
- praefix = "Flaeche:",
- flaechentype = 1007,
- neutral = 0,
- erzeuge = 1,
- hamsterlauf = 2,
- interaktiv = 3,
- kommandostufe = 99,
- west = ""8"",
- ost = ""2"",
- cleol = ""5"",
- piep = ""7"",
-
- mark ein = ""15"",
- mark aus = ""14"",
- escape = ""27"",
- blank = " ",
- niltext = "",
- hindernis = "#",
- korn = "o",
- hinderniskachel = "##",
- blankkachel = " .",
- kornkachel = " o",
- protokollname = "PROTOKOLL";
-LET max x = 40,
-
- max y = 23;
-LET FLAECHE = ROW max x ROW max y INT;
-LET LANDSCHAFT = STRUCT (INT xpos, ypos, blickrichtung,
- anzahl koerner, FLAECHE flaeche);
-LET HAMSTER = STRUCT (LOCATION stelle, INT koerner, form);
-BOUND LANDSCHAFT VAR aktuelle landschaft;
-FLAECHE VAR land;
-HAMSTER VAR hamster;
-FILE VAR protokoll;
-INT CONST besetzt :: -1,
- frei :: 0;
-
-TEXT CONST kornsymbole ::
- "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
-INT CONST maxkornzahl :: LENGTH kornsymbole;
-BOOL VAR hamster eingestellt :: TRUE,
- befehlssatz erweitert :: FALSE;
-TEXT VAR eingabezeichen :: niltext,
- archivlandschaftsname :: niltext,
- hinderniszeichen :: "\#\#",
- schrifttyp :: niltext;
-INT VAR verzoegerungsfaktor :: 5,
-
- modus :: kommandostufe,
- a, b, c, d;
-REAL VAR xstart :: 0.0,
- ystart :: 0.0;
-WINDOW VAR fenster :: window (1, 1, 79, 24);
-INITFLAG VAR in this task :: FALSE;
-OP := (LOCATION VAR l, LOCATION CONST r):
- l.x := r.x; l.y := r.y
-END OP :=;
-PROC initialize hamstersystem:
- IF NOT initialized (in this task)
- THEN install menu (menukarte);
- FI
-END PROC initialize hamstersystem;
-
-PROC sei ein hamster:
- hamster eingestellt := TRUE
-END PROC sei ein hamster;
-BOOL PROC ist hamster:
- hamster eingestellt
-END PROC ist hamster;
-PROC sei ein roboter:
- hamster eingestellt := FALSE
-END PROC sei ein roboter;
-BOOL PROC ist roboter:
- NOT hamster eingestellt
-END PROC ist roboter;
-PROC hole landschaft (TEXT CONST name):
- aktuelle landschaft := old (praefix + name);
- land := aktuelle landschaft.flaeche;
- hamster.form := aktuelle landschaft.blickrichtung;
-
- hamster.stelle.x := aktuelle landschaft.xpos;
- hamster.stelle.y := aktuelle landschaft.ypos;
- hamster.koerner := aktuelle landschaft.anzahl koerner
-END PROC hole landschaft;
-PROC lege landschaft ab (TEXT CONST name):
- IF exists (praefix + name)
- THEN forget (praefix + name, quiet)
- FI;
- aktuelle landschaft := new (praefix + name);
- aktuelle landschaft.flaeche := land;
- aktuelle landschaft.blickrichtung := hamster.form;
- aktuelle landschaft.xpos := hamster.stelle.x;
-
- aktuelle landschaft.ypos := hamster.stelle.y;
- aktuelle landschaft.anzahl koerner := hamster.koerner;
- type( old(praefix + name), flaechentype)
-END PROC lege landschaft ab;
-PROC hamstermodus:
- modus := neutral
-END PROC hamstermodus;
-PROC kommandomodus:
- modus := kommandostufe
-END PROC kommandomodus;
-PROC erzeugemodus:
- modus := erzeuge
-END PROC erzeugemodus;
-PROC intermodus:
- modus := interaktiv
-END PROC intermodus;
-PROC laufmodus:
- modus := hamsterlauf
-
-END PROC laufmodus;
-BOOL PROC vorn frei:
- kontrolliere modus;
- LOCATION VAR hier :: hamster.stelle;
- SELECT hamster.form OF
- CASE 1: IF hamster.stelle.y < 2 THEN protestiere FI;
- hier.y DECR 1
- CASE 2: IF hamster.stelle.x < 2 THEN protestiere FI;
- hier.x DECR 1
- CASE 3: IF hamster.stelle.y >= max y THEN protestiere FI;
- hier.y INCR 1
- CASE 4: IF hamster.stelle.x >= max x THEN protestiere FI;
- hier.x INCR 1
- OTHERWISE modus := kommandostufe;
-
- IF ist hamster
- THEN errorstop(nachricht( 7))
- ELSE errorstop(nachricht(14))
- FI
- END SELECT;
- IF modus = erzeuge
- THEN TRUE
- ELSE land[hier.x] [hier.y] <> besetzt
- FI
-END PROC vorn frei;
-BOOL PROC korn da:
- kontrolliere modus;
- kornzahl > 0
-END PROC korn da;
-INT PROC kornzahl:
- land [hamster.stelle.x] [hamster.stelle.y]
-END PROC kornzahl;
-BOOL PROC werkstueck da:
- korn da
-END PROC werkstueck da;
-BOOL PROC backen leer:
-
- kontrolliere modus;
- hamster.koerner <= 0 AND (modus = hamsterlauf OR modus = interaktiv)
-END PROC backen leer;
-BOOL PROC behaelter leer:
- backen leer
-END PROC behaelter leer;
-PROC protestiere:
- IF modus = erzeuge
- THEN out(piep); eins zurueck
- ELSE verzoegere 10 mal; zeige("X"); verzoegere 10 mal;
- kommandomodus;
- IF ist hamster
- THEN errorstop(nachricht( 6))
- ELSE errorstop(nachricht(13))
- FI;
- FI.
- eins zurueck:
-
- SELECT hamster.form OF
- CASE 1: hamster.stelle.y INCR 1
- CASE 2: hamster.stelle.x INCR 1
- CASE 3: hamster.stelle.y DECR 1
- CASE 4: hamster.stelle.x DECR 1
- OTHERWISE kommandomodus;
- IF ist hamster
- THEN errorstop(nachricht( 7))
- ELSE errorstop(nachricht(14))
- FI;
- END SELECT.
- verzoegere 10 mal:
- INT VAR j;
- FOR j FROM 1 UPTO 10 REP
- verzoegere
- PER
-END PROC protestiere;
-
-PROC verzoegere:
- IF modus <> hamsterlauf
- THEN LEAVE verzoegere
- FI;
- eingabezeichen := incharety (verzoegerungsfaktor);
- IF eingabezeichen = escape
- THEN kommandomodus;
- IF ist hamster
- THEN errorstop(nachricht( 4))
- ELSE errorstop(nachricht(11))
- FI
- ELIF eingabezeichen = "-" THEN verlangsame
- ELIF eingabezeichen = "+" THEN beschleunige
- ELIF eingabezeichen = "?" THEN boxinfo (fenster, laufauskunftstext,
- 5, maxint, a, b, c, d);
-
- cursor on; zeige landschaft
- ELIF pos ("0123456789", eingabezeichen) > 0
- THEN geschwindigkeit (int (eingabezeichen))
- FI.
- verlangsame:
- IF verzoegerungsfaktor > 31 THEN (* lass es dabei *)
- ELIF verzoegerungsfaktor < 1
- THEN verzoegerungsfaktor INCR 1
- ELSE verzoegerungsfaktor INCR verzoegerungsfaktor
- FI.
- beschleunige:
- IF verzoegerungsfaktor < 1
- THEN verzoegerungsfaktor := -1
- ELSE verzoegerungsfaktor := verzoegerungsfaktor DIV 2
-
- FI
-END PROC verzoegere;
-PROC geschwindigkeit (INT CONST faktor):
- SELECT faktor OF
- CASE 0 : verzoegerungsfaktor := 20000;
- CASE 1 : verzoegerungsfaktor := 50;
- CASE 2 : verzoegerungsfaktor := 20;
- CASE 3 : verzoegerungsfaktor := 10;
- CASE 4 : verzoegerungsfaktor := 8;
- CASE 5 : verzoegerungsfaktor := 5;
- CASE 6 : verzoegerungsfaktor := 2;
- CASE 7 : verzoegerungsfaktor := 1;
- CASE 8 : verzoegerungsfaktor := 0;
- CASE 9 : verzoegerungsfaktor := -1;
-
- OTHERWISE (*belasse es dabei*)
- END SELECT
-END PROC geschwindigkeit;
-PROC vor:
- kontrolliere modus;
- IF vorn frei
- THEN zeige(kachel);
- bilde neue hamsterkoordinaten;
- zeige(erscheinungsform SUB hamster.form);
- verzoegere
- ELSE modus := kommandostufe;
- zeige("X");
- IF ist hamster
- THEN errorstop(nachricht(1))
- ELSE errorstop(nachricht(8))
- FI
- FI.
- kachel:
- INT CONST z :: land [hamster.stelle.x] [hamster.stelle.y];
-
- IF z = besetzt THEN hinderniskachel
- ELIF z = frei THEN blankkachel
- ELSE kornkachel
- FI.
- bilde neue hamsterkoordinaten:
- SELECT hamster.form OF
- CASE 1 :hamster.stelle.y DECR 1
- CASE 2 :hamster.stelle.x DECR 1
- CASE 3 :hamster.stelle.y INCR 1
- CASE 4 :hamster.stelle.x INCR 1
- OTHERWISE modus:=kommandostufe;
- IF ist hamster
- THEN errorstop(nachricht( 7))
- ELSE errorstop(nachricht(14))
-
- FI
- END SELECT.
-END PROC vor;
-PROC nimm:
- kontrolliere modus;
- IF korn da
- THEN variiere kornzahl (-1);
- IF kornzahl < 1 THEN zeige (ost + blank) FI
- ELSE modus := kommandostufe;
- zeige("X");
- IF ist hamster
- THEN errorstop(nachricht(2))
- ELSE errorstop(nachricht(9))
- FI
- FI;
- verzoegere
-END PROC nimm;
-PROC gib:
- kontrolliere modus;
- IF backen leer
- THEN modus := kommandostufe;
- zeige ("X");
-
- IF ist hamster
- THEN errorstop(nachricht( 3))
- ELSE errorstop(nachricht(10))
- FI
- ELSE variiere kornzahl (+1);
- zeige(ost + korn)
- FI;
- verzoegere
-END PROC gib;
-PROC links um:
- kontrolliere modus;
- hamster.form := hamster.form MOD 4 + 1;
- (* da hamster.form der Werte 1,2,3,4 faehig ist und linksdreht *)
- zeige (subjekt);
- verzoegere.
- subjekt:
- erscheinungsform SUB hamster.form.
-END PROC links um;
-PROC variiere kornzahl (INT CONST delta):
-
- IF delta * delta <> 1
- THEN LEAVE variiere kornzahl
- FI; (* als delta kommen nur +1 und -1 vor *)
- INT VAR k;
- IF kornzahl = -1 AND delta = 1
- THEN k := 1
- ELSE k := kornzahl + delta
- FI;
- IF k <= 0
- THEN land [hamster.stelle.x] [hamster.stelle.y] := frei
- ELSE land [hamster.stelle.x] [hamster.stelle.y] := min (k,maxkornzahl)
- FI;
- IF modus = hamsterlauf OR modus = interaktiv
- THEN hamster.koerner DECR delta
- FI
-END PROC variiere kornzahl;
-PROC kontrolliere modus:
-
- initialize hamstersystem;
- SELECT modus OF
- CASE neutral : erzeugemodus;
- landschaft;
- laufmodus
- CASE erzeuge,
- interaktiv,
- hamsterlauf: (* nichts *)
- OTHERWISE kommandomodus;
- line;
- IF ist hamster
- THEN sage(anwendungstext (21));pause(20);
- errorstop(nachricht( 5))
- ELSE sage(anwendungstext (22));pause(20);
-
- errorstop(nachricht(12))
- FI
- END SELECT
-END PROC kontrolliere modus;
-PROC zeige (TEXT CONST was):
- cursor (2 * hamster.stelle.x - 1, hamster.stelle.y);
- IF hamster.stelle.x >= max x AND hamster.stelle.y > max y
- THEN out ((was SUB 1)); out(west)
- ELSE out(was); (LENGTH was) TIMESOUT west
- FI.
-END PROC zeige;
-PROC sage (TEXT CONST aussage):
- cursor(1,24); out(aussage + cleol)
-END PROC sage;
-TEXT PROC nachricht (INT CONST nummer):
-
- inv (text (anwendungstext (nummer), 65)) + piep
-END PROC nachricht;
-TEXT PROC inv (TEXT CONST text):
- TEXT VAR aus :: mark ein + text + blank + mark aus;
- aus
-END PROC inv;
-PROC zeige landschaft:
- initialize hamstersystem;
- INT VAR y;
- FOR y FROM 1 UPTO max y REP
- setze zeile zusammen;
- cursor (1,y); out (zeile)
- PER;
- cursor(1,24); out(cleol);
- IF modus = interaktiv
- THEN gib befehlszeile aus
- FI;
- zeige hamster; cursor on.
- setze zeile zusammen:
- TEXT VAR zeile :: niltext;
-
- INT VAR x;
- FOR x FROM 1 UPTO max x REP
- zeile CAT kachel
- PER.
- kachel:
- INT CONST z :: land [x] [y];
- IF z = besetzt THEN hinderniskachel
- ELIF z = frei THEN blankkachel
- ELSE kornkachel
- FI.
- gib befehlszeile aus:
- cursor(1,1); write(cleol); write (anwendungstext (62))
-END PROC zeige landschaft;
-PROC zeige hamster:
- zeige (erscheinungsform SUB hamster.form)
-END PROC zeige hamster;
-PROC landschaft (TEXT CONST kandidat):
-
- initialize hamstersystem;
- archivlandschaftsname := kandidat;
- IF exists (praefix + kandidat)
- CAND type (old (praefix + kandidat)) = flaechentype
- THEN behandle existierende landschaft
- ELIF exists (praefix + kandidat)
- THEN forget (praefix + kandidat, quiet);
- behandle neue landschaft
- ELSE behandle neue landschaft
- FI.
- behandle existierende landschaft:
- hole landschaft (kandidat);
- SELECT modus OF
- CASE hamsterlauf,
- interaktiv,
-
- neutral : zeige landschaft;
- laufmodus
- CASE erzeuge : modifiziere eventuell
- CASE kommandostufe : modifiziere landschaft
- OTHERWISE errorstop (anwendungstext (15))
- END SELECT.
- behandle neue landschaft:
- SELECT modus OF
- CASE hamsterlauf,
- interaktiv,
- neutral,
- erzeuge : erschaffe landschaft;
- modifiziere landschaft;
- zeige landschaft;
-
- laufmodus
- CASE kommandostufe : erschaffe landschaft;
- modifiziere landschaft;
- OTHERWISE errorstop (anwendungstext (15))
- END SELECT.
- modifiziere eventuell:
- IF ist hamster
- THEN IF boxyes (fenster, anwendungstext (41), 5, a, b, c, d)
- THEN cursor on; modifiziere landschaft
- FI
- ELSE IF boxyes (fenster, anwendungstext (42), 5, a, b, c, d)
- THEN cursor on; modifiziere landschaft
-
- FI
- FI;
- zeige landschaft.
- erschaffe landschaft:
- INT VAR j;
- FOR j FROM 1 UPTO max y REP
- INT VAR k;
- FOR k FROM 1 UPTO max x REP
- land [k] [j] := frei
- PER
- PER;
- hamster.form := 4;
- hamster.stelle.x := 20;
- hamster.stelle.y := 12;
- hamster.koerner := 0.
-END PROC landschaft;
-PROC landschaft:
- initialize hamstersystem;
- IF ist hamster
- THEN landschaft (erfragter landschaftsname (anwendungstext (36)))
-
- ELSE landschaft (erfragter landschaftsname (anwendungstext (37)))
- FI
-END PROC landschaft;
-TEXT PROC erfragter landschaftsname (TEXT CONST satz):
- TEXT VAR landschaftsname :: archivlandschaftsname;
- REP
- page; line (3); out (satz + cleol); line (2);
- editget (landschaftsname);
- landschaftsname := compress (landschaftsname);
- IF landschaftsname = niltext
- THEN line (2); out (anwendungstext (18) + piep);
- line (2); out (anwendungstext (38)); pause
- FI
-
- UNTIL landschaftsname <> niltext PER;
- landschaftsname
-END PROC erfragter landschaftsname;
-PROC arbeitsfeld (TEXT CONST kandidat):
- landschaft (kandidat)
-END PROC arbeitsfeld;
-PROC arbeitsfeld:
- landschaft
-END PROC arbeitsfeld;
-PROC modifiziere landschaft:
- INT CONST modalibi :: modus;
- erzeugemodus;
- zeige landschaft;
- informiere;
- zeige hamster;
- nimm ein eingabezeichen;
- WHILE nicht endewunsch REP
- erfuelle fortschreibungswunsch;
- nimm ein eingabezeichen
- PER;
-
- erfrage koernerzahl;
- lege landschaft ab (archivlandschaftsname);
- modus := modalibi.
- nimm ein eingabezeichen:
- inchar (eingabezeichen).
- nicht endewunsch:
- pos ("hH", eingabezeichen) = 0.
- erfuelle fortschreibungswunsch:
- INT CONST r :: pos (richtung, eingabezeichen)
- IF r > 0
- THEN IF hamster.form = r
- THEN vor
- ELSE hamster.form := r;
- zeige hamster
- FI
- ELIF eingabezeichen = "?" THEN boxinfo (fenster, landschaftsauskunftstext,
-
- 5, maxint, a, b, c, d);
- cursor on; zeige landschaft; informiere
- ELIF eingabezeichen = "k" THEN kopiere landschaft;
- zeige landschaft; informiere
- ELIF eingabezeichen = "g" THEN gib
- ELIF eingabezeichen = "n" THEN IF korn da THEN nimm ELSE out (piep) FI
- ELIF eingabezeichen = "z" THEN zeige (text (kornzahl, 2))
- ELIF eingabezeichen = hindernis
- THEN land [hamster.stelle.x] [hamster.stelle.y] := besetzt; vor
-
- ELIF eingabezeichen = blank
- THEN land [hamster.stelle.x] [hamster.stelle.y] := frei; vor
- ELSE out (piep)
- FI.
- kopiere landschaft:
- TEXT VAR kopie;
- IF NOT not empty (alle landschaften)
- THEN IF ist hamster
- THEN boxinfo (fenster, anwendungstext (196), 5, maxint)
- ELSE boxinfo (fenster, anwendungstext (197), 5, maxint)
- FI
- ELSE lasse original auswaehlen
- FI.
- lasse original auswaehlen:
-
- IF ist hamster
- THEN kopie := boxone (fenster, alle landschaften,
- anwendungstext (23), anwendungstext (24),
- FALSE)
- ELSE kopie := boxone (fenster, alle landschaften,
- anwendungstext (25), anwendungstext (26),
- FALSE)
- FI;
- cursor on; hole landschaft (kopie).
- alle landschaften:
- ohne praefix (infix namen (ALL myself, praefix, flaechentype), praefix).
-
- erfrage koernerzahl:
- TEXT VAR eingabe; BOOL VAR ist ok; INT VAR zahl;
- cursor (1,23); 79 TIMESOUT waagerecht;
- REP
- ist ok := TRUE;
- IF ist hamster
- THEN eingabe := boxanswer (fenster, anwendungstext (43),
- text (hamster.koerner),
- 5, a, b, c, d)
- ELSE eingabe := boxanswer (fenster, anwendungstext (44),
- text (hamster.koerner),
-
- 5, a, b, c, d)
- FI;
- disable stop;
- IF eingabe = "" THEN eingabe := "0" FI;
- zahl := int (eingabe);
- IF zahl < 0 OR zahl > maxint THEN ist ok := FALSE FI;
- IF is error THEN ist ok := FALSE; clear error FI;
- enable stop;
- UNTIL last conversion ok AND ist ok PER;
- cursor on;
- hamster.koerner := zahl.
- informiere:
- cursor (1,1);
- IF ist hamster
- THEN out (anwendungstext (27))
-
- ELSE out (anwendungstext (28))
- FI
-END PROC modifiziere landschaft;
-PROC lauf (TEXT CONST dateiname):
- initialize hamstersystem;
- IF NOT exists (dateiname)
- THEN errorstop (anwendungstext (16) + dateiname + anwendungstext (17))
- FI;
- hamstermodus;
- disable stop;
- run (dateiname);
- kommandomodus;
- cursor (1, 24);
- IF is error
- THEN IF length (errormessage) > 1
- THEN sage (errormessage); pause;
- FI
- ELSE sage (anwendungstext (29)); pause; konserviere landschaft
-
- FI;
- clear error;
- enable stop
-END PROC lauf;
-PROC lauf:
- lauf (last param)
-END PROC lauf;
-PROC konserviere landschaft:
- TEXT VAR neuer landschaftsname;
- IF ist hamster
- THEN stelle landschaftsfrage
- ELSE stelle arbeitsfeldfrage
- FI; cursor on.
- stelle landschaftsfrage:
- IF boxyes (fenster, anwendungstext (45), 5)
- THEN bewahre landschaft auf
- FI.
- stelle arbeitsfeldfrage:
- IF boxyes (fenster, anwendungstext (46), 5)
- THEN bewahre landschaft auf
-
- FI.
- bewahre landschaft auf:
- neuer landschaftsname := archivlandschaftsname + ".x";
- lege landschaft ab (neuer landschaftsname);
- gib hinweis auf neuen namen.
- gib hinweis auf neuen namen:
- IF ist hamster
- THEN boxinfo (fenster, anwendungstext (30)
- + inv (neuer landschaftsname), 5, maxint, a, b, c, d)
- ELSE boxinfo (fenster, anwendungstext (31)
- + inv (neuer landschaftsname), 5, maxint, a, b, c, d)
- FI
-END PROC konserviere landschaft;
-
-PROC hamsterinter (TEXT CONST landschaftsname):
- initialize hamstersystem;
- sei ein hamster;
- steuere interaktiv (landschaftsname);
- cursor on
-END PROC hamsterinter;
-PROC hamsterinter:
- initialize hamstersystem;
- hamsterinter (erfragter landschaftsname (anwendungstext (39)))
-END PROC hamsterinter;
-PROC roboterinter (TEXT CONST landschaftsname):
- initialize hamstersystem;
- sei ein roboter;
- steuere interaktiv (landschaftsname);
- cursor on
-END PROC roboterinter;
-PROC roboterinter:
-
- initialize hamstersystem;
- roboterinter (erfragter landschaftsname (anwendungstext (40)))
-END PROC roboterinter;
-PROC steuere interaktiv (TEXT CONST landschaftsname):
- forget (protokollname, quiet);
- protokoll := sequential file (output, protokollname);
- intermodus;
- landschaft (landschaftsname);
- TEXT VAR befehl :: niltext, letzter befehl :: niltext;
- REP
- arbeiten
- PER.
- arbeiten:
- intermodus;
- hole befehl;
- fuehre befehl aus.
- hole befehl:
- TEXT VAR befehlszeichen;
-
- TEXT CONST befehlskette :: "vlngpeVLNGPE";
- INT VAR befehlsposition;
- zeige (hamsterform);
- cursor (1,24);
- IF ist hamster
- THEN out (cleol + anwendungstext (32) + letzter befehl)
- ELSE out (cleol + anwendungstext (33) + letzter befehl)
- FI;
- cursor(24,24);
- inchar (befehlszeichen);
- befehlsposition := pos(befehlskette,befehlszeichen);
- IF befehlsposition = 0
- THEN out(piep);
- LEAVE arbeiten
- FI;
- SELECT befehlsposition OF
-
- CASE 1, 7: befehl := "vor";
- out("vor");
- letzter befehl := "vor"
- CASE 2, 8: befehl := "links um";
- out("links um");
- letzter befehl := "links um"
- CASE 3, 9: befehl := "nimm";
- out("nimm");
- letzter befehl := "nimm"
- CASE 4,10: befehl := "gib";
- out("gib");
- letzter befehl := "gib"
-
- CASE 5,11: out("protokoll");
- letzter befehl := "protokoll";
- FILE VAR p :: sequential file (modify,protokollname);
- headline(p, protokollname + " (Verlassen: <ESC><q>)");
- cursor on; show(p); cursor off;
- zeige landschaft; befehl := "";
- output(protokoll);
- LEAVE arbeiten
- CASE 6,12: out("ende"); kommandomodus; befehl := "";
- LEAVE steuere interaktiv
-
- END SELECT.
- hamsterform:
- erscheinungsform SUB hamster.form.
- fuehre befehl aus:
- BOOL VAR korrekt;
- disable stop;
- do (befehl);
- cursor (1,24);
- korrekt := NOT is error;
- IF is error
- THEN IF errormessage > ""
- THEN out (inv (text (errormessage, 65)) + piep);
- pause(30);
- FI;
- clear error
- FI;
- IF korrekt AND befehl <> ""
- THEN protokolliere (befehl)
- FI;
- enable stop;
-
-END PROC steuere interaktiv;
-PROC protokolliere (TEXT CONST befehl):
- putline (protokoll, befehl + ";")
-END PROC protokolliere;
-PROC drucke landschaft (TEXT CONST landschaftsname):
- initialize hamstersystem;
- ROW max y TEXT VAR drucklandschaft;
- BOUND LANDSCHAFT VAR al;
- INT VAR i, hamsterx, hamstery;
- TEXT VAR hamsterzeichen;
- landschaftsdatei holen;
- drucklandschaft erzeugen;
- hamster in drucklandschaft einsetzen;
- druckdatei erzeugen;
- disable stop;
- TEXT VAR datname := std;
-
- do ("print (""druckdatei"")");
- IF is error
- THEN menuinfo (inv (errormessage));
- clear error;
- FI;
- last param (datname);
- enable stop;
- druckdatei loeschen;
- cursor on.
- landschaftsdatei holen:
- IF exists (praefix + landschaftsname) AND
- (type (old (praefix + landschaftsname)) = flaechentype)
- THEN hole landschaft;
- ELSE LEAVE drucke landschaft
- FI.
- hole landschaft:
- al := old (praefix + landschaftsname);
- hamsterx := al.xpos;
-
- hamstery := al.ypos;
- hamsterzeichen := erscheinungsform SUB al.blickrichtung.
- drucklandschaft erzeugen:
- TEXT VAR zeile; INT VAR x;
- FOR i FROM 1 UPTO max y REP
- zeile := "";
- FOR x FROM 1 UPTO maxx REP
- zeile erzeugen
- PER;
- drucklandschaft[i] := zeile
- PER.
- zeile erzeugen:
- INT CONST zeichen :: al.flaeche [x] [i];
- IF zeichen = besetzt THEN zeile CAT hinderniszeichen
- ELIF zeichen = frei THEN zeile CAT " ."
-
- ELSE zeile CAT " o"
- FI.
- hamster in drucklandschaft einsetzen:
- change (drucklandschaft [hamstery], hamsterx*2-1, hamsterx*2-1,
- hamsterzeichen).
- druckdatei erzeugen:
- FILE VAR p::sequential file(output, "druckdatei");
- INT VAR blankzahl;
- line(p);
- putline(p,"#type (""" + schrifttyp + """)#");
- putline(p,"#start(" + text(xstart) + "," + text(ystart) + ")#");
- putline(p,"#limit(20.8)#");
- blankzahl := ( 80 - (8 + length (landschaftsname))) DIV 2;
-
- putline(p, blankzahl * " " + praefix + landschaftsname + " ");
- putline(p, "  ");
- FOR i FROM 1 UPTO maxy REP
- putline(p, drucklandschaft[i] + " ")
- PER.
- druckdatei loeschen:
- forget("druckdatei", quiet)
-END PROC drucke landschaft;
-PROC drucke landschaft:
- initialize hamstersystem;
- IF ist hamster
- THEN drucke landschaft (erfragter landschaftsname (anwendungstext (36)))
- ELSE drucke landschaft (erfragter landschaftsname (anwendungstext (37)))
- FI;
- cursor on
-
-END PROC drucke landschaft;
-PROC druckereinstellung fuer flaechenausdruck:
- initialize hamstersystem;
- page;
- IF ist hamster
- THEN putline (center (invers (anwendungstext (71))))
- ELSE putline (center (invers (anwendungstext (72))))
- FI;
- line (3);
- put (anwendungstext (73));
- editget (schrifttyp);
- line (2);
- schrifttyp := compress (schrifttyp);
- putline (anwendungstext (74));
- putline (anwendungstext (75)); line (2);
- putline (anwendungstext (76) + text (xstart) + "," + text (ystart) +
-
- anwendungstext (77)); line;
- put (anwendungstext (78)); get (xstart); line;
- put (anwendungstext (79)); get (ystart); line (2);
- IF yes (anwendungstext (80) + hinderniszeichen + anwendungstext (81))
- THEN line;
- put (anwendungstext (82)); inchar (hinderniszeichen); line (2);
- hinderniszeichen CAT hinderniszeichen;
- IF hinderniszeichen = "##"
- THEN hinderniszeichen := "\#\#"
- FI
- FI;
- line;
- put (anwendungstext (83))
-END PROC druckereinstellung fuer flaechenausdruck;
-
-PROC hamster druckerstart einstellen (REAL CONST xpos, ypos):
- xstart := xpos; ystart := ypos
-END PROC hamster druckerstart einstellen;
-REAL PROC hamster drucker xstart:
- xstart
-END PROC hamster drucker xstart;
-REAL PROC hamster drucker ystart:
- ystart
-END PROC hamster drucker ystart;
-PROC hamster landschaftsschrifttyp einstellen (TEXT CONST typ):
- schrifttyp := typ
-END PROC hamster landschaftsschrifttyp einstellen;
-TEXT PROC hamster landschaftsschrifttyp:
- schrifttyp
-END PROC hamster landschaftsschrifttyp;
-
-PROC drucke arbeitsfeld (TEXT CONST arbeitsfeldname):
- drucke landschaft (arbeitsfeldname)
-END PROC drucke arbeitsfeld;
-PROC drucke arbeitsfeld:
- drucke landschaft
-END PROC drucke arbeitsfeld;
-TEXT PROC taste:
- eingabezeichen
-END PROC taste;
-TEXT PROC landschaftsauskunftstext:
- initialize hamstersystem;
- IF ist hamster
- THEN anwendungstext (52)
- ELSE anwendungstext (53)
- FI
-END PROC landschaftsauskunftstext;
-TEXT PROC laufauskunftstext:
- initialize hamstersystem;
-
- anwendungstext (51)
-END PROC laufauskunftstext;
-TEXT PROC befehlsauskunftstext:
- initialize hamstersystem;
- IF ist hamster
- THEN anwendungstext (54)
- ELSE anwendungstext (55)
- FI
-END PROC befehlsauskunftstext;
-TEXT PROC testauskunftstext 1:
- initialize hamstersystem;
- IF befehlssatz erweitert
- THEN langer testauskunftstext
- ELSE kurzer testauskunftstext
- FI.
- kurzer testauskunftstext:
- IF ist hamster
- THEN anwendungstext (56)
- ELSE anwendungstext (57)
-
- FI.
- langer testauskunftstext:
- IF ist hamster
- THEN anwendungstext (58)
- ELSE anwendungstext (60)
- FI.
-END PROC testauskunftstext 1;
-TEXT PROC testauskunftstext 2:
- initialize hamstersystem;
- IF befehlssatz erweitert
- THEN eintragung
- ELSE niltext
- FI.
- eintragung:
- IF ist hamster
- THEN anwendungstext (59)
- ELSE anwendungstext (61)
- FI
-END PROC testauskunftstext 2;
-PROC befehlssatz erweitern (BOOL CONST status):
- befehlssatz erweitert := status
-
-END PROC befehlssatz erweitern;
-BOOL PROC befehlssatz ist erweitert:
- befehlssatz erweitert
-END PROC befehlssatz ist erweitert;
-END PACKET ls herbert und robbi 1;
-
-
diff --git a/hamster/ls-Herbert und Robbi 2 b/hamster/ls-Herbert und Robbi 2
deleted file mode 100644
index a8ce067..0000000
--- a/hamster/ls-Herbert und Robbi 2
+++ /dev/null
@@ -1,139 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-Herbert und Robbi 2 **
- ** **
- ** 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 2 DEFINES
- rechts frei,
- links frei,
- hinten frei,
- korn vorn, werkstueck vorn,
- korn links, werkstueck links,
- korn rechts, werkstueck rechts,
- korn hinten, werkstueck hinten:
-BOOL PROC rechts frei:
- rechts um;
- IF vorn frei
- THEN links um; TRUE
- ELSE links um; FALSE
- FI
-END PROC rechts frei;
-BOOL PROC links frei:
- links um;
- IF vorn frei
- THEN rechts um; TRUE
- ELSE rechts um; FALSE
-
- FI
-END PROC links frei;
-BOOL PROC hinten frei:
- kehrt;
- IF vorn frei
- THEN kehrt; TRUE
- ELSE kehrt; FALSE
- FI
-END PROC hinten frei;
-BOOL PROC korn vorn:
- IF vorn frei
- THEN untersuche feld vor dir
- ELSE FALSE
- FI.
- untersuche feld vor dir:
- vor;
- IF korn da
- THEN mache vorwaertsgehen rueckgaengig; TRUE
- ELSE mache vorwaertsgehen rueckgaengig; FALSE
- FI.
- mache vorwaertsgehen rueckgaengig:
- kehrt; vor; kehrt
-END PROC korn vorn;
-
-BOOL PROC korn links:
- links um;
- IF vorn frei
- THEN untersuche feld links
- ELSE rechts um; FALSE
- FI.
- untersuche feld links:
- vor;
- IF korn da
- THEN mache linkswende rueckgaengig; TRUE
- ELSE mache linkswende rueckgaengig; FALSE
- FI.
- mache linkswende rueckgaengig:
- kehrt; vor; links um
-END PROC korn links;
-BOOL PROC korn rechts:
- rechts um;
- IF vorn frei
- THEN untersuche feld rechts
- ELSE links um; FALSE
- FI.
- untersuche feld rechts:
-
- vor;
- IF korn da
- THEN mache rechtswende rueckgaengig; TRUE
- ELSE mache rechtswende rueckgaengig; FALSE
- FI.
- mache rechtswende rueckgaengig:
- kehrt; vor; rechts um
-END PROC korn rechts;
-BOOL PROC korn hinten:
- kehrt;
- IF vorn frei
- THEN untersuche feld hinter dir
- ELSE kehrt; FALSE
- FI.
- untersuche feld hinter dir:
- vor;
- IF korn da
- THEN mache kehrtwende rueckgaengig; TRUE
- ELSE mache kehrtwende rueckgaengig; FALSE
- FI.
-
- mache kehrtwende rueckgaengig:
- kehrt; vor
-END PROC korn hinten;
-PROC kehrt:
- links um; links um
-END PROC kehrt;
-PROC rechts um:
- links um; links um; links um
-END PROC rechts um;
-BOOL PROC werkstueck vorn:
- korn vorn
-END PROC werkstueck vorn;
-BOOL PROC werkstueck links:
- korn links
-END PROC werkstueck links;
-BOOL PROC werkstueck rechts:
- korn rechts
-END PROC werkstueck rechts;
-BOOL PROC werkstueck hinten:
- korn hinten
-END PROC werkstueck hinten;
-END PACKET ls herbert und robbi 2;
-
-befehlssatz erweitern (TRUE)
-
-
diff --git a/hamster/ls-Herbert und Robbi 3 b/hamster/ls-Herbert und Robbi 3
deleted file mode 100644
index 7a1da20..0000000
--- a/hamster/ls-Herbert und Robbi 3
+++ /dev/null
@@ -1,929 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** 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;
-
-
diff --git a/hamster/ls-Herbert und Robbi-gen b/hamster/ls-Herbert und Robbi-gen
deleted file mode 100644
index 6104fe3..0000000
--- a/hamster/ls-Herbert und Robbi-gen
+++ /dev/null
@@ -1,142 +0,0 @@
-(*
-
- *********************************************************
- *********************************************************
- ** **
- ** ls-Herbert und Robbi **
- ** GENERATORPROGRAMM **
- ** 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 **
- ** **
- *********************************************************
- *********************************************************
-
- *)
-
-LET mm taskname = "ls-MENUKARTEN",
- datei1 = "ls-Herbert und Robbi 1",
- datei2 = "ls-Herbert und Robbi 2",
- datei3 = "ls-Herbert und Robbi 3",
- menukarte = "ls-MENUKARTE:Herbert und Robbi";
-PROC stelle existenz des mm sicher:
- cursor (1, 5); out (""4"");
- IF NOT exists (task (mm taskname))
- THEN errorstop ("Unbedingt erst den 'MENUKARTEN MANAGER' generieren!");
- FI
-END PROC stelle existenz des mm sicher;
-PROC vom archiv (TEXT CONST datei):
- cursor (1,5); out (""4"");
-
- out (" """); out (datei); putline (""" wird geholt.");
- fetch (datei, archive)
-END PROC vom archiv;
-PROC hole (TEXT CONST datei):
- IF NOT exists (datei) THEN vom archiv (datei) FI
-END PROC hole;
-PROC in (TEXT CONST datei):
- hole (datei);
- cursor (1, 5); out (""4"");
- out (" """); out (datei); out (""" wird übersetzt: ");
- insert (datei);
- forget (datei, quiet);
-END PROC in;
-PROC schicke (TEXT CONST datei):
- cursor (1, 5); out (""4"");
- out (" """); out(datei);
- out (""" wird zum MENUKARTEN-MANAGER geschickt!");
-
- command dialogue (FALSE);
- save (datei, task (mm taskname));
- command dialogue (TRUE);
- forget (datei, quiet)
-END PROC schicke;
-INT VAR size, used;
-BOOL VAR einzeln, mit erweiterung :: FALSE;
-storage (size, used);
-einzeln := size - used < 500;
-forget ("ls-Herbert und Robbi/gen", quiet);
-wirf kopfzeile aus;
-stelle existenz des mm sicher;
-hole die dateien;
-insertiere die dateien;
-mache global manager aus der task.
-wirf kopfzeile aus:
- page;
- putline (" "15"ls-Herbert und Robbi - Automatische Generierung "14"");
-
- line (2);
- putline (" Bitte beantworten Sie noch die folgende Frage:");
- line;
- put(" Sollen neben den 'Standardtests' auch die folgenden 'Tests':");
- line (2);
- putline(" Für den Hamster: Für den Roboter:");
- putline(" links frei links frei");
- putline(" rechts frei rechts frei");
- putline(" hinten frei hinten frei");
- putline(" korn vorn werkstueck vorn");
-
- putline(" korn links werkstueck links");
- putline(" korn rechts werkstueck rechts");
- putline(" korn hinten werkstueck hinten");
- line;
- IF yes(" zur Verfügung gestellt werden")
- THEN mit erweiterung := TRUE
- FI.
-hole die dateien:
- IF NOT exists (datei 1)
- COR NOT exists (datei 3)
- COR NOT exists (menukarte)
- THEN hole dateien vom archiv; LEAVE hole die dateien
-
- FI;
- IF mit erweiterung AND NOT exists (datei 2)
- THEN hole dateien vom archiv
- FI.
-hole dateien vom archiv:
- cursor (1,3); out (""4"");
- IF yes ("Ist das Archiv angemeldet und die Diskette eingelegt")
- THEN lese ein
- ELSE line (2);
- errorstop ("Ohne die Diskette kann ich das System nicht generieren!")
- FI.
-lese ein:
- cursor (1, 3); out (""4"");
- out (" "15"Bitte die Diskette eingelegt lassen! "14"");
- IF NOT einzeln
- THEN hole (datei 1);
-
- hole (datei 3);
- hole (menukarte);
- IF mit erweiterung
- THEN hole (datei 2)
- FI;
- cursor (1, 3); out(""4"");
- out (" "15"Die Diskette wird nicht mehr benötigt! "14"");
- release (archive)
- FI.
-insertiere die dateien:
- check off;
- cursor (1, 3); out(""4"");
- out (" "15"Die Diskette wird nicht mehr benötigt! "14"");
- in (datei 1);
- IF mit erweiterung
- THEN in (datei 2)
-
- FI;
- in (datei 3);
- schicke (menukarte);
- IF einzeln THEN release (archive) FI;
- check on.
-mache global manager aus der task:
- global manager.
-
-
diff --git a/hamster/ls-MENUKARTE:Herbert und Robbi b/hamster/ls-MENUKARTE:Herbert und Robbi
deleted file mode 100644
index 2e9629c..0000000
--- a/hamster/ls-MENUKARTE:Herbert und Robbi
+++ /dev/null
Binary files differ