From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- .../doc/A5 - Doku: gs-MP BAP - Inhaltsverzeichnis | 50 ++ .../1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 1 | 119 ++++ .../1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 2 | 302 +++++++++ .../1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 3 | 237 +++++++ .../1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 4 | 638 +++++++++++++++++++ .../1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 5 | 699 +++++++++++++++++++++ .../1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 6 | 53 ++ app/gs.mp-bap/1.1/doc/gs-MP BAP handbuch.impressum | 104 +++ app/gs.mp-bap/1.1/source-disk | 1 + app/gs.mp-bap/1.1/src/ls-MENUKARTE:MP-BAP | Bin 0 -> 79872 bytes app/gs.mp-bap/1.1/src/ls-MP BAP 1 | 119 ++++ app/gs.mp-bap/1.1/src/ls-MP BAP 2 | 126 ++++ app/gs.mp-bap/1.1/src/ls-MP BAP-gen | 30 + 13 files changed, 2478 insertions(+) create mode 100644 app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Inhaltsverzeichnis create mode 100644 app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 1 create mode 100644 app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 2 create mode 100644 app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 3 create mode 100644 app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 4 create mode 100644 app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 5 create mode 100644 app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 6 create mode 100644 app/gs.mp-bap/1.1/doc/gs-MP BAP handbuch.impressum create mode 100644 app/gs.mp-bap/1.1/source-disk create mode 100644 app/gs.mp-bap/1.1/src/ls-MENUKARTE:MP-BAP create mode 100644 app/gs.mp-bap/1.1/src/ls-MP BAP 1 create mode 100644 app/gs.mp-bap/1.1/src/ls-MP BAP 2 create mode 100644 app/gs.mp-bap/1.1/src/ls-MP BAP-gen (limited to 'app/gs.mp-bap/1.1') diff --git a/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Inhaltsverzeichnis b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Inhaltsverzeichnis new file mode 100644 index 0000000..9507802 --- /dev/null +++ b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Inhaltsverzeichnis @@ -0,0 +1,50 @@ +#limit (11.5)##pagelength (16.5)##pageblock# +#start (1.8,0.0)# +Inhaltsverzeichnis + + +1 Was kann gs-MP BAP 3 + +2 Allgemeines zum Simulationsprogramm 6 +2.1 Entstehung 6 +2.2 Beschreibung des Programmkerns 7 + - ein Simulationslauf +2.3 Das Teilprogramm 'Materialprüfung' 9 +2.4 Das Teilprogramm 'Bildschirmarbeitsplatz' 10 +2.5 Hinweise zum Einsatz des Programmsystems 12 +2.6 Erfahrungen mit dem Programmsystem 13 +2.7 Hinweise auf Arbeitsmaterial 14 + +3 Installation von gs-MP BAP 16 +3.1 Voraussetzungen 16 +3.2 Lieferumfang 16 +3.3 Installation 17 +3.4 Organisation des Task - Systems 19 +3.5 Direktstart des Systems 20 + +4 Eine kleine Beispielsitzung 22 +4.1 Aufruf von 'Bildschirmarbeitsplatz' (BAP) 22 +4.2 Einstellung von Simulationsparametern 23 +4.3 Ein Simulationslauf 26 +4.4 Die Simulationsauswertung/das Protokoll 28 +4.5 Hinweise zur Protokollauswertung 36 +4.5.1 Der Bewertungsfaktor 36 +4.5 2 Fehlerzeichenhäufigkeit in den Werkstücken 38 +4.5 3 Fehlerhafte Auswertungen 38 + +5 Beschreibung der Menufunktionen 40 +5.1 Kurzhinweise zur Bedienung der Menus 40 +5.2 Menufunktionen z. Oberbegriff 'Simulation' 44 +5.3 Menufunktionen z. Oberbegriff 'Parameter' 48 +5.4 Menufunktionen z. Oberbegriff 'Konfiguration' 56 +5.5 Menufunktionen z. Oberbegriff 'Dateien' 58 +5.6 Menufunktionen z. Oberbegriff 'Archiv' 60 + +6 Hinweise für den Systembetreuer 61 + + + + + + + diff --git a/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 1 b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 1 new file mode 100644 index 0000000..e418764 --- /dev/null +++ b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 1 @@ -0,0 +1,119 @@ +#type ("12.lq")##limit (11.0)##pagelength (16.5)##block# +#start (2.0,0.0)# +#page (3)# +#headodd# +#center#gs-MP BAP#right#% + +#end# +#headeven# +%#center#gs-MP BAP + +#end# +#center#1 + +#center#Was +#center#kann +#center#gs-MP BAP + + + #on("b")#gs-MP BAP#off("b")# ist ein Programm, mit dem die Arbeit +an einem Bildschirmarbeitsplatz unter ganz unter­ +schiedlichen Aspekten simuliert werden kann. Vom +Benutzer wird dabei verlangt, eine Art "Kontrolltä­ +tigkeit am Bildschirm" auszuüben. Während dieser +Arbeit werden Daten über den Arbeitsverlauf erfaßt, +die (später) ausgewertet werden können. + #on("b")#gs-MP BAP#off("b")# ist so gestaltet, daß es für ganz un­ +terschiedliche Zwecke eingesetzt werden kann. Es +ist möglich, sämtliche Simulationsparameter den +eigenen Wünschen und der jeweiligen Situation an­ +zupassen. Daneben besteht die Möglichkeit, die Si­ +mulationsprotokolle offensichtlich oder "heimlich" +zu erfassen. + #on("b")#gs-MP BAP#off("b")# kann dazu benutzt werden, um Anwendern +lediglich die Belastungen eines Bildschirmarbeits­ +platzes an einem Beispiel darzulegen; es ist aber +genauso möglich, ihm eindrucksvoll aufzuzeigen, wie +eine Kontrolle am Bildschirmarbeitsplatz - ohne +sein Wissen - erfolgen kann. Auf der Basis dieser +Erfahrungen lassen sich dann ganz neue Fragestel­ +lungen thematisieren (Möglichkeiten/Befugnis der/ +zur Kontrolle am (Bildschirm-) Arbeitsplatz; Daten­ +schutz; Betriebsvereinbarungen zu Computerarbeits­ +plätzen und vieles mehr). + Durch die Möglichkeit, die Simulationsparameter +vielfältig zu variieren, können verschiedenste Un­ +tersuchungen mit dem Programm durchgeführt werden: +Angefangen von Untersuchungen zur Konzentrations­ +fähigkeit bei unterschiedlichen Umgebungsbedingun­ +gen (z.B. Lichtverhältnisse, Musik am Arbeitsplatz, +etc.), über Untersuchungen zum optimalen Arbeits­ +phasen - Pausen - Rhythmus (z.B. zur Fragestellung, +ob lange Arbeitsphasen mit langen Pausen günstiger +sind als kurze Arbeitsphasen mit immer wieder ein­ +gestreuten kleineren Pausen oder umgekehrt - wenn +die Gesamtzeit konstant ist), bis hin zu Untersu­ +chungen zur Ergonomie von Computerarbeitsplätzen +(z.B. hinsichtlich der Tastaturbelegung, Nützlich­ +keit eines eigenen Cursorblockes, etc.). + Anhand der aufgezeigten Möglichkeiten wird +sicher deutlich, daß der Einsatz des Programms +nicht auf den Informatikunterricht beschränkt ist. +Ebensogut ist, bei entsprechender Fragestellung, +ein Einsatz im gesellschafts- / sozialwissenschaft­ +lichen Unterricht, im Biologieunterricht, in den +kaufmännischen Lernbereichen oder im Technikunter­ +richt denkbar. Das Programm ist auch für die Aufar­ +beitung verschiedener Fragestellungen bei der Vor- +und Nachbereitung von Betriebspraktika geeignet. + Um all diese Möglichkeiten auch den Ausbildern +offenzuhalten, die keinerlei Vorerfahrungen mit +Computern haben, aber dieses Programm einsetzen +möchten, ist die Simulationsumgebung so komforta­ +bel, daß jeder Benutzer innerhalb weniger Minuten +das gesamte Programmsystem überblicken und bedienen +kann. + +- Durch die Einbettung in die komfortable Benut­ + zerschnittstelle #on("b")#gs-DIALOG#off("b")#, sind nur noch wenige + Betriebssystemkommandos zur Bedienung des Sy­ + stems notwendig. + +- Der Benutzer kann jederzeit Informationen über + die Bedienung des Menusystems und die Wirkung + der einzelnen Menufunktionen anfordern, die ihm + daraufhin in den aktuellen Bildschirm eingeblen­ + det werden. + +- Dem Benutzer wird ständig angezeigt, welche Mög­ + lichkeiten der Bedienung bestehen, welche Tasten + wirksam sind und welche Wirkung deren Betätigung + hat. Menufunktionen, deren Wirkungen zu bestimm­ + ten Zeitpunkten sinnlos oder fehlerhaft wären, + werden "inaktiviert", d.h. sind dem Benutzer gar + nicht erst zugänglich. + +- Die Auswertung der Simulationsprotokolle erfolgt + vom Menu aus durch einfaches Ankreuzen der ge­ + wünschten Protokolldateien. Es besteht sowohl + die Möglichkeit, die Auswertungen auf dem Bild­ + schirm anzeigen als auch über den Drucker ausge­ + ben zu lassen. + +- Die Festlegung der Simulationsparameter ist kin­ + derleicht. Die aktuell eingestellten Werte kön­ + nen jederzeit eingesehen werden. Zur Einstellung + werden umfangreiche Informationen und Hilfen + ausgegeben. Eine Fehlbedienung ist ausgeschlos­ + sen. + +- In das System ist eine komfortable Archivbehand­ + lung integriert, so daß auch für den Computer­ + laien die Konservierung der Simulationsergebnis­ + se auf einfachste Weise möglich ist. + +- Bei auftretenden Fehlern erhält der Benutzer + konkrete, verständliche Fehlermeldungen, die + zumeist mit einem Zusatz versehen sind, wie die + "Situation bereinigt werden kann". + diff --git a/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 2 b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 2 new file mode 100644 index 0000000..b063ea3 --- /dev/null +++ b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 2 @@ -0,0 +1,302 @@ +#limit (11.0)##pagelength (16.5)##block# +#start (2.0,0.0)# +#page (6)# +#headodd# +#center#gs-MP BAP#right#% + +#end# +#headeven# +%#center#gs-MP BAP + +#end# +#center#2 + +#center#Allgemeines +#center#zum +#center#Simulationsprogramm + + +2.1 Entstehung + + Das Simulationsprogramm #on("b")#gs-MP BAP#off("b")# basiert auf +einer Idee von Hartmut Spenn und Mene Wolf, die +eine Unterrichtsreihe mit dem Titel "Der gläserne +Arbeiter" im Rahmen der Materialien zur Lehrerfort­ +bildung in Nordrhein Westfalen (Neue Technologien, +informations- und kommunikationstechnologische In­ +halte im Wahlpflichtunterricht der Klassen 9/10) +beschrieben und dazu ein Grundprogramm für den C64 +in COMAL geschrieben haben. + Dieses Grundprogramm diente einmal als Ausgangs­ +punkt für #on("b")#gs-MP BAP#off("b")#. Allerdings wuchsen die An­ +sprüche an das System immer mehr, so daß eine Reihe +weiterer Funktionen hinzugefügt wurden. Ein wesent­ +liches Ziel war es, ein Simulationsprogramm zur +Verfügung zu stellen, daß umfangreiche Variations­ +möglichkeiten - ohne jegliche Programmierkenntnisse +- bietet; ein Programm, das selbst von einem völli­ +gen Computerlaien innerhalb weniger Minuten über­ +blickt und sicher bedient werden kann. + + Erst als die komfortable Benutzerschnittstelle +#on("b")#gs-DIALOG#off("b")# zur Verfügung stand, konnte dieses Ziel +erreicht werden. Heute präsentiert sich Ihnen ein +Programmsystem, in dem Sie jede Programmfunktion +von einem Menu aus wählen können. Durch Informa­ +tionstexte, die Sie jederzeit abrufen können, und +durch die Bedienungshinweise werden Sie sicher +durch das Programmsystem geführt. Sie haben komfor­ +table Möglichkeiten, die Simulationsparameter zu +variieren. Das Programmsystem ist gegen Fehlbedie­ +nungen mehrfach abgesichert. + + +2.2 Beschreibung des Programmkerns + - ein Simulationslauf + + Mit #on("b")#gs-MP BAP#off("b")# kann die Arbeit an einem Bild­ +schirmarbeitsplatz simuliert werden. Der Benutzer +übt am Bildschirm eine Art "Kontrolltätigkeit" aus. +Die Interpretation dieser Tätigkeit ist offen: So +kann man sich vorstellen, daß "Werkstücke" auf dem +Bildschirm angezeigt werden, die auf Fehler hin +untersucht werden sollen; dabei muß jeder gefundene +Fehler markiert werden. Der Benutzer kann sich auch +vorstellen, er sei bei einer Tageszeitung beschäf­ +tigt und habe die aus der Redaktion eingehenden +Artikel auf Tippfehler hin zu untersuchen - natür­ +lich müssen die Tippfehler "verbessert" werden. +Andere Interpretationen sind denkbar. + Das Grundprinzip des Simulationslaufes ist recht +einfach - ein typischer Bildschirm könnte so ausse­ +hen: +#free (9.5)# + Im oberen Bereich des Bildschirms werden alle +Daten angezeigt, die der Benutzer während des Simu­ +lationslaufes benötigt. Links oben sind alle Tasten +angegeben, die für die Handhabung des Programms +notwendig sind. Rechts oben wird der Benutzer über +die Simulationszeiten und das festgelegte 'Fehler­ +zeichen' informiert. + Im unteren Bereich des Bildschirms wird ein +rechteckiger Block ausgegeben, der sich aus ver­ +schiedenen Zeichen (z.B. Buchstaben, Ziffern, Son­ +derzeichen) zusammensetzt. Der Benutzer hat jetzt +die Aufgabe, die Blöcke daraufhin zu untersuchen, +ob in ihnen das angegebene Fehlerzeichen auftaucht. + Entdeckt er solche Zeichen im Block auf dem +Bildschirm, so ist es seine Aufgabe, den Cursor +(Lichtfleck) auf dem Bildschirm mit Hilfe festge­ +legter Tasten an die entsprechende Position zu +steuern und eine 'Ausbesserung' (Kennzeichnung/ +Korrektur) vorzunehmen. Ist der Benutzer der Mei­ +nung, alle Fehlerzeichen bearbeitet zu haben, so +kann er den nächsten Block (das nächste Werkstück/ +den nächsten Artikel) durch Tippen einer festgeleg­ +ten Taste anfordern. + Die Arbeit ist dabei streng in 'Arbeitsphasen' +und 'Pausen' eingeteilt - der Rhythmus wird aber +vom Programm und nicht vom Benutzer bestimmt. Wäh­ +rend des Simulationslaufes werden alle wesentlichen +Kenndaten protokolliert. Diese können später ausge­ +wertet werden. + In unserem konkreten Beispiel hat der Benutzer +nach dem Fehlerzeichen 'F' zu suchen. Er hat insge­ +samt 34 Minuten zu arbeiten; dabei ist seine Ar­ +beitszeit eingeteilt in 3 Arbeitsphasen zu je 10 +Minuten mit zwei dazwischenliegenden Pausen von je +2 Minuten. + Zur Bedienung des Systems kann er die (Cursor-) +Pfeiltasten , , und +benutzen; damit kann er den Lichtfleck innerhalb +des Zeichen-Blocks bewegen. Zur Ausbesserung dient +die -Taste. Mit der -Taste kann er je­ +weils die neuen Werkstücke (Artikel) zur Bearbei­ +tung anfordern. + + +2.3 Das Teilprogramm 'Materialprüfung' (MP) + + Gemeinsamer Bestandteil beider Programmteile ist +der sogenannte "Simulationslauf" - ein eben ge­ +schilderter Arbeitsprozeß am Bildschirm. Diesem +Simulationslauf gehen im Teilprogramm 'Materialprü­ +fung' (MP) jedoch noch umfangreiche Informationen +voraus, die dem Benutzer die anschließend zu ver­ +richtende Tätigkeit detailliert erläutern. Gleich +nach Aufruf des Programmteils wird der Benutzer +noch nach einer "Identifikation" gefragt und aufge­ +fordert, z.B. den Vor- und Nachnamen einzugeben. +Die hier eingegebene Kennung ist auch Bestandteil +des Namens des Protokolls, das über den dann fol­ +genden Simulationslauf angelegt wird. + Am Ende des Simulationslaufes wird dem Benutzer, +sofern das System entsprechend konfiguriert ist, +eine 'Kurzauswertung' seiner Arbeit auf dem Bild­ +schirm präsentiert. Zusätzlich wird - ohne daß der +Benutzer es merkt - das angelegte Protokoll in die +Vatertask geschickt und in der eigenen Task ge­ +löscht. + + +2.4 Das Teilprogramm 'Bildschirmarbeitsplatz' + (BAP) + + Nach Aufruf des Teilprogramms erscheint auf dem +Bildschirm ein Menu, von dem aus eine Vielzahl von +Funktionen gewählt werden kann. Natürlich ist es +auch von hier aus möglich, einen oben beschriebenen +Simulationslauf zu starten. Im Gegensatz zum Pro­ +grammteil 'Materialprüfung' wird hier aber auf die +umfangreichen Informationen zur Handhabung des +Systems verzichtet und zum Abschluß auch keine Pro­ +tokolldatei zur Vatertask geschickt - die Proto­ +kolldatei verbleibt in der eigenen Task. + Daneben können vom Menu aus auch Protokolldatei­ +en ausgewertet werden. Sie können dabei noch ent­ +scheiden, ob Sie die Auswertungen auf dem Bild­ +schirm angezeigt oder aber auf dem angeschlossenen +Drucker ausgegeben haben möchten. + Weiterhin können Sie sämtliche Simulationspara­ +meter vom Menu aus Ihren Wünschen gemäß einstellen. +So ist es möglich, die Breite und Höhe des Werk­ +stücks zu variieren und zu entscheiden, ob die +Werkstücke "normal" oder "invers" dargestellt wer­ +den sollen. Sie können das 'Fehlerzeichen' festle­ +gen und überhaupt die Zeichen bestimmen, aus denen +die Werkstücke aufgebaut werden. Daneben haben Sie +noch die Möglichkeit, zu bestimmen, welche Tasten +auf der Tastatur welche Funktion beim Simulations­ +lauf haben sollen. + Sie legen von hier aus auch fest, in wie viele +Arbeitsphasen die Arbeitszeit unterteilt wird und +wie lange eine einzelne Arbeitsphase und die zwi­ +schen den Arbeitsphasen liegende Pause dauern sol­ +len. Auch hinsichtlich der Bewertung können Sie +Festlegungen treffen - nach dem von Ihnen hier ein­ +gestellten Wertungsschlüssel werden nämlich die +Protokolldateien ausgewertet. + Ihnen obliegt es auch, zu bestimmen, ob mit je­ +der Protokollauswertung die umfangreichen Erläute­ +rungen ausgegeben werden sollen und ob der Benutzer +am Ende eines Simulationslaufes eine 'Kurzauswer­ +tung' über seine Arbeit auf dem Bildschirm erhalten +soll oder nicht. + Zusätzlich werden Ihnen noch eine Reihe von Mög­ +lichkeiten zur Datei- und Archivbehandlung angebo­ +ten. So können Sie komfortabel Dateien löschen, +kopieren, umbenennen, etc., Dateien auf Diskette +konservieren oder gespeicherte Dateien von dort +holen und vieles mehr. + + +2.5 Hinweise zum Einsatz des Programmsystems + + Aus den Beschreibungen in 2.3 und 2.4 ist Ihnen +sicher schon die unterschiedliche Absicht, die hin­ +ter den beiden Programmteilen steckt, klar gewor­ +den. Die beiden Programmteile richten sich nämlich +auch an ganz unterschiedliche Nutzergruppen. + Das Teilprogramm 'Materialprüfung' (MP) ist vor­ +nehmlich für den 'unerfahrenen'/'unbefangenen' Be­ +nutzer gedacht. Ihm werden nämlich umfangreiche +Informationen ausgegeben. Mit diesem Programmteil +ist eben auch die "heimliche" Erfassung der Simula­ +tionsdaten möglich. Dieser Teil des Programms wird +sicherlich dann Anwendung finden, wenn die Fragen +um die Möglichkeiten und Gefahren der Kontrolle am +(Bildschirm-) Arbeitsplatz im Vordergrund der Be­ +trachtungen stehen. + Das Teilprogramm 'Bildschirmarbeitsplatz' (BAP) +hat zumindest zwei ganz unterschiedliche Einsatz­ +aspekte: + + Einerseits dient es dem Lehrer/Ausbilder dazu, +die gewünschten Simulationsparameter für das Teil­ +programm 'Materialprüfung' einzustellen. Die aktu­ +elle Einstellung, die mit dem Teilprogramm 'Bild­ +schirmarbeitsplatz' getroffen wurde, ist in der +jeweilgen Task gültig, in der die Einstellung vor­ +genommen wurde. Die Einstellung wird aber auch von +allen Sohntasks übernommen, die sich nach der je­ +weiligen Einstellung neu anmelden. Darüber hinaus +dient dieses Teilprogramm dem Lehrer/Ausbilder +dazu, die (ihm zugestellten) Simulationsprotokolle +auszuwerten. + Andererseits hat das Teilprogramm 'Bildschirm­ +arbeitsplatz' auch einen "eigenen Charakter": +Gerade bei den schon oben angesprochenen Untersu­ +chungen (zur Konzentrationsfähigkeit in Abhängikeit +von verschiedenen Faktoren, zur Bedeutung der Ar­ +beitsphasen-Pausen-Rhythmen, zur 'Ergonomie am Ar­ +beitsplatz', etc.) bietet sich hier ein schneller, +komfortabler Wechsel zwischen Parametereinstellung +und Simulationsläufen - ohne unnötigen Zeitverlust; +erst recht, wenn mehrere Simulationsläufe aufeinan­ +der folgen. + + +2.6 Erfahrungen mit dem Programmsystem + + Das Programmsystem wurde bereits in verschiede­ +nen Klassen/ Kursen ab der Jahrgangsstufe 8 einge­ +setzt, und zwar in verschiedenen Fachbereichen und +Schulformen. Die Akzeptanz ist sehr hoch; die Hand­ +habung des Programmsystems bereitete selbst Kolle­ +gen, die noch nie zuvor an einem Computer gesessen +hatten, keinerlei Schwierigkeiten. Von der Hand­ +habung des Programms her ist deshalb sicher auch +keine Alteruntergrenze hinsichtlich der "Eignung" +anzugeben. + Jedoch scheint eine Bearbeitung mit den oben +angegebenen Zielsetzungen erst auf dem Erfahrungs­ +horizont der Jahrgangsstufe 8 sinnvoll zu sein. +Eine Bearbeitung der Fragestellungen in der von +Hartmut Spenn und Mene Wolf (siehe Kapitel 2.7) +vorgeschlagenen Tiefe scheint allerdings erst am +Ende der Jahrgangsstufe 9 bzw. in der Jahrgangsstu­ +fe 10 erreichbar. + Besonders interessant scheint der Einsatz bei +der Vor- bzw. Nachbereitung von Betriebspraktika zu +sein. Durch die unmittelbare Berührung mit den +"neuen Technologien am Arbeitsplatz" ist das Inter­ +esse an der Bearbeitung entsprechender Fragestel­ +lungen sehr hoch und eine Sensibilisierung für die +angesprochenen Problematiken zu erreichen. + Die angegebenen Fragestellungen im Zusammenhang +mit diesem Programmsystem können auch Thema einer +Projektwoche/von Projekttagen sein. Besonders be­ +währt hat sich hier die Zusammenarbeit mit Kollegen +aus dem gesellschafts-/sozialwissenschaftlichen +Bereich. Ein Unterrichtsgang, z.B. in einen Super­ +markt mit modernen Scannerkassen, bei einer Tages­ +zeitung (Kleinanzeigenaufnahme am Freitag-Vormit­ +tag) o.ä., bei dem die "im Hintergrund (möglicher­ +weise) ablaufenden Prozesse" bewußt gemacht werden, +kann das Vorhaben noch abrunden. + Zum Einsatz in der Sekundarstufe II liegen erst +wenige Erfahrungen vor. Mit Sicherheit bietet das +Programm einen "anderen", interessanten Einstieg in +den Informatikunterricht der Jahrgangsstufe 11 und +kann auch bei der Aufarbeitung entsprechender Fra­ +gestellungen zu späteren Zeitpunkten herangezogen +werden. Erfahrungen aus anderen Fachbereichen lie­ +gen (noch) nicht vor. + + +2.7 Hinweise auf Arbeitsmaterial + + Ausdrücklich sei an dieser Stelle auf die Ausar­ +beitung von Hartmut Spenn und Mene Wolf hingewie­ +sen: + +Spenn, Hartmut; Wolf, Mene; Der gläserne Arbeiter, + Elektronische Leistungs- und Verhaltenskon­ + trolle am Arbeitsplatz + in: Landesinstitut für Schule und Weiterbildung + (Hrsg.), Materialien zur Lehrerfortbildung + in Nordrhein-Westfalen, Heft 4, Neue Tech­ + nologien - Informations- und Kommunuika­ + tionstechnologische Inhalte im Wahlpflicht­ + unterricht der Klassen 9/10, Soest, 1986. + diff --git a/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 3 b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 3 new file mode 100644 index 0000000..f589a93 --- /dev/null +++ b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 3 @@ -0,0 +1,237 @@ +#limit (11.0)##pagelength (16.5)##block##pageblock# +#start (2.0,0.0)# +#page (16)# +#headodd# +#center#gs-MP BAP#right#% + +#end# +#headeven# +%#center#gs-MP BAP + +#end# +#center#3 + +#center#Installation +#center#von +#center#gs-MP BAP + + + Bevor Sie #on("b")#gs-MP BAP#off("b")# auf Ihrem Computer benutzen +können, müssen Sie das Programm zunächst installie­ +ren. Wenn #on("b")#gs-MP BAP#off("b")# auf Ihrem System schon zur Ver­ +fügung steht, können Sie dieses Kapitel ruhig über­ +springen. + + +3.1 Voraussetzungen + + Um #on("b")#gs-MP BAP#off("b")# auf Ihrem Computer betreiben zu +können, muß das EUMEL-Betriebssystem installiert +sein. #on("b")#gs-MP BAP#off("b")# setzt die Multi-User-Version voraus +und ist lauffähig ab Version 1.7.5. #on("b")#gs-MP BAP#off("b")# setzt +weiterhin voraus, daß auf Ihrem Computer bereits +das Programm #on("b")#gs-DIALOG#off("b")# installiert ist. + + +3.2 Lieferumfang + + #on("b")#gs-MP BAP#off("b")# wird auf einer Diskette geliefert, die +alle notwendigen Programme enthält (die Installa­ +tion von #on("b")#gs-DIALOG#off("b")# wird dabei vorausgesetzt!). Um +den Inhalt der Diskette feststellen zu können, +starten Sie Ihr System und bringen es dazu, daß +'gib kommando:' erscheint. Dann legen Sie die Dis­ +kette ein und geben das Kommando: + + archive("gs-MP BAP");list(archive); + release(archive) + + Anschließend erscheint eine Übersicht der auf +dem Archiv vorhandenen Programme. Folgende Program­ +me sollten sich in der Übersicht befinden: + + "gs-MP BAP 1" + "gs-MP BAP 2" + "gs-MENUKARTE:MP-BAP" + "gs-MP BAP/gen" + + Eventuell können noch weitere Namen auf der Dis­ +kette vorhanden sein. Wenn Sie den Inhalt der Dis­ +kette kontrolliert haben und diese Programme auf +der Diskette vorhanden sind, können Sie #on("b")#gs-MP BAP#off("b")# +installieren. + Sollten Sie statt der Übersicht eine Fehlermel­ +dung erhalten, überprüfen Sie bitte, ob die Disket­ +te das richtige Format besitzt oder ob Ihr Disket­ +tenlaufwerk Probleme macht. Sollten dagegen Pro­ +gramme fehlen, so reklamieren Sie die Diskette. + + +3.3 Installation + + #on("b")#gs-MP BAP#off("b")# muß in einer Task installiert werden, +in der bereits das Programm #on("b")#gs-DIALOG#off("b")# zur Verfügung +steht. Alle Söhne und Enkel der neuen Task können +anschließend auf die Programme (Materialprüfung / +Bildschirmarbeitsplatz) zugreifen. Richten Sie also +eine Task als Sohn der Task ein, in der auf Ihrem +Computer bereits #on("b")#gs-DIALOG#off("b")# installiert ist. Wir +nehmen hier an, daß #on("b")#gs-DIALOG#off("b")# in der Task 'MENU' +installiert ist und die neue Task den Namen 'MP +BAP' erhalten soll. (Sie können für die Task auch +einen beliebigen anderen Namen wählen): + +#on("b")# + (Supervisor - Taste) +#off("b")# + + --> gib supervisor kommando: +#on("b")# + begin ("MP BAP","MENU") +#off("b")# + + --> gib kommando: + + (Arbeiten mehrere Personen mit dem Computer, +dann ist es sinnvoll, diese Task vor unbefugtem +Zugriff durch ein Passwort zu schützen. Wie das +gemacht wird, können Sie in Ihrem EUMEL-Benutzer­ +handbuch erfahren.) + + Legen Sie dann die Archivdiskette ein, auf der +sich #on("b")#gs-MP BAP#off("b")# befindet, und geben Sie das folgende +Kommando: + +#on("b")# + archive("gs-MP BAP") + + fetch("gs-MP BAP/gen",archive) + + run +#off("b")# + + Sie haben damit das Generatorprogramm gestartet. +Beantworten Sie die Frage, ob Sie das Archiv ange­ +meldet und die Diskette eingelegt haben, mit 'ja' +durch Tippen der Taste . + Daraufhin wird die Installation automatisch +durchgeführt. Lassen Sie während des gesamten Vor­ +gangs die Archivdiskette eingelegt. Sie erhalten +einen Hinweis, wenn die Diskette entnommen werden +kann! Die Generierung ist beendet, wenn der EUMEL- +Eingangsbildschirm erscheint. Die Task, in der die +Generierung stattfindet, wird automatisch zur Mana­ +gertask, das heißt, daß Söhne von ihr eingerichtet +werden können. + Richten Sie sich gleich eine Sohntask (z.B mit +dem Namen 'mp bap') ein, dann können Sie das System +sofort ausprobieren. Gehen Sie dazu folgendermaßen +vor: + +#on("b")# + (Supervisor - Taste) +#off("b")# + + --> gib supervisor kommando: +#on("b")# + begin ("mp bap","MP BAP") +#off("b")# + + --> gib kommando: + +Mit dem Kommando + +#center##on("b")#mp bzw. bap #off("b")# + +können Sie nun das Programm + +#center#'Materialprüfung' bzw. 'Bildschirmarbeitsplatz' + +aufrufen. + + +3.4 Organisation des Task - Systems + + Wollen Sie unter anderem das Teilprogramm 'Ma­ +terialprüfung' (MP) nutzen, so sollten Sie beden­ +ken, daß die dabei entstehenden Simulationsproto­ +kolle in die Vatertask geschickt werden. Die Vater­ +task sollte sich daher ständig im Wartezustand be­ +finden, um die Protokolle auch aufnehmen zu können. +So kann es sinnvoll sein, eine 'Zwischentask' ein­ +zurichten, damit auch andere ungestört mit dem Si­ +mulationsprogramm arbeiten können. Gehen Sie dazu +etwa folgendermaßen vor: + In der Task 'mp bap', in der Sie bisher gearbei­ +tet haben, geben Sie bei 'gib kommando:' den Be­ +fehl: + + #on("b")#global manager #off("b")# + + Sie gestatten dadurch, daß Söhne dieser Task +eingerichtet werden können. Auf dem Bildschirm er­ +scheint der EUMEL-Eingangsbildschirm. + Alle Anwender (Schüler) melden sich dann als +Sohn der Task 'mp bap' an: + + #on("b")#begin ("Anwender1", "mp bap") #off("b")# + #on("b")#begin ("Anwender2", "mp bap") #off("b")# + #on("b")#begin ("Anwender3", "mp bap") #off("b")# + ... + + Die Simulationsprotokolle finden Sie dann an­ +schließend in der Task 'mp bap'. + + +3.5 Direktstart des Systems + (Steht erst ab gs-DIALOG Version 1.1 zur Ver­ + fügung) + + In den Kapitel 3.3/3.4 haben wir Ihnen gezeigt, +wie sie Sohntasks einrichten und hier durch das +Kommando 'mp' bzw. 'bap' das System aufrufen kön­ +nen. Wenn Sie immer nur mit einer Modellvariante +arbeiten oder vor dem Benutzer die 'gib komman­ +do:'-Ebene verbergen wollen, können Sie das System +auch so einrichten, daß sich sofort nach Einrichten +des Arbeitsbereichs das Menusystem meldet. Für den +Anfänger kann das die Arbeit durchaus erleichtern. + Gehen Sie dazu in die Task, unterhalb der die +Sohntasks eingerichtet werden sollen: + +#on("b")# + (Supervisor - Taste) + +#off("b")# + --> gib supervisor kommando: +#on("b")# + continue ("mp bap") +#off("b")# + + --> gib kommando: +#on("b")# + direktstart ("mp", TRUE) +#off("b")# + + Durch das Kommando haben Sie festgelegt, daß +sich alle Sohntasks direkt mit dem Programm 'Mate­ +rialprüfung' melden. Möchten Sie lieber mit 'Bild­ +schirmarbeitsplatz' arbeiten, ist nur 'mp' durch +'bap' zu ersetzen. In diesem Falle meldet sich das +System gleich mit dem BAP-Menu. + Durch den zweiten Parameter 'TRUE' legen Sie +fest, daß in den Sohntasks nach Verlassen des Menus +die jeweilige Task automatisch gelöscht wird. Statt +'TRUE' können Sie hier auch den Wert 'FALSE' ein­ +tragen. Dann wird nach Verlassen des Menus ange­ +fragt, ob die Task gelöscht werden soll. Wird die +Frage bejaht, wird gelöscht - sonst wird die Task +abgekoppelt (break) und kann durch 'continue' wie­ +der angekoppelt werden. + Anmerkung: In der Task, in der Sie das Kommando +'direktbefehl' gegeben haben, sollte nicht das Kom­ +mando 'monitor' gegeben werden, da Sie durch dieses +Kommando auch diese Task zu einer Task machen, die +sich direkt mit dem Menu meldet und ggf. bei Ver­ +lassen des Menus automatisch gelöscht wird! + diff --git a/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 4 b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 4 new file mode 100644 index 0000000..6236d91 --- /dev/null +++ b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 4 @@ -0,0 +1,638 @@ +#limit (11.0)##pagelength (16.5)##block##pageblock# +#start (2.0,0.0)# +#page (22)# +#headodd# +#center#gs-MP BAP#right#% + +#end# +#headeven# +%#center#gs-MP BAP + +#end# +#center#4 + +#center#Eine +#center#kleine +#center#Beispielsitzung + + +4.1 Aufruf von 'Bildschirmarbeitsplatz' (BAP) + + Wenn Sie, wie in Kapitel 3 beschrieben, eine +Sohntask der Task eingerichtet haben, in der #on("b")#gs-MP +BAP#off("b")# installiert ist, und dort bei 'gib kommando:' +den Befehl: + + #on("b")#bap #off("b")# + +geben, erscheint - nach dem #on("b")#gs-DIALOG#off("b")#-Eingangsbild­ +schirm - das folgende Menu: + +#on("b")# +BAP: Simulation Parameter Konfiguration Dateien Archiv ++-------------------------------+----------------------------------------- +| s Simulation ausführen | +| --------------------------- | +| a Auswertung auf Bildschirm | +| d Drucken von Auswertungen | ++-------------------------------+ + + + + + + + + + +-------------------------------------------------------------------------- +Info:/ Wahl: Ausführen: Verlassen: +#off("b")# + +4.2 Einstellung von Simulationsparametern + + Bevor Sie eine Neueinstellung von Simulations­ +parametern vornehmen, sollten Sie sich einen Über­ +blick über die zur Zeit eingestellten Werte ver­ +schaffen. Zwar wäre es möglich, gleich einen Simu­ +lationslauf zu starten, doch müßten Sie dann gleich +34 Minuten arbeiten - denn standardmäßig ist das +Simulationssystem auf 3 Arbeitsphasen von je 10 +Minuten Dauer und zwei dazwischenliegende Pausen +von je 2 Minuten eingestellt. + Wenn Sie sich die Einstellung anzeigen lassen +wollen, müssen Sie das Pull-Down-Menu wechseln. +Gehen Sie als durch Tippen der Pfeiltaste +zum Oberbegriff 'Parameter'. Dadurch wird das fol­ +gende Pull-Down-Menu aufgeschlagen: + +#on("b")# +BAP: Simulation Parameter Konfiguration Dateien Archiv +-------+---------------------------+-------------------------------------- + | e Einstellung anzeigen | + | s Standardwerte | + | ----------------------- | + | b Breite des Werkstücks | + | h Höhe des Werkstücks | + | i Invers-/Normal | + | z Zeichensatz | + | f Fehlerzeichen | + | t Tastenbelegung | + | ----------------------- | + | a Anzahl Arbeitsphasen | + | d Dauer Arbeitsphase | + | p Pausendauer | + | ----------------------- | + | w Wertungsschlüssel | + +---------------------------+ + +-------------------------------------------------------------------------- +Info:/ Wahl: Ausführen: Verlassen: +#off("b")# + +Nach Tippen der Taste (für 'Einstellung anzei­ +gen') erscheint der folgende Bildschirm: + +#on("b")# ++-----------------------------------++-----------------------------------+ +| || Wertungsschlüssel | +| Breite : 15 Zeichen || Bewertungs- | +| Höhe : 12 Zeichen || faktor | +| Darstellung : normal || | +| Zeichensatz : A...Z (26 Zeichen)||1.0| + | +| Fehlerzeichen: F || | + | +| || | + | +| Nach rechts : || | + | +| Nach links : || | + | +| Nach oben : ||0.5| + | +| Nach unten : || | + | +| Ausbesserung : || | + | +| Nächstes : || | + | +| || | + | +| Anzahl der Arbeitsphasen: 3 ||0.0+--|--|--|--|--|--|--|--|--|--| | +| Dauer einer Arbeitsphase: 10 min || 0.0 0.5 1.0| +| Dauer einer Pause : 2 min || | +| || Ausbesserungsrate| +| Simulationsgesamtdauer : 34 min || | ++-----------------------------------++-----------------------------------+ +-------------------------------------------------------------------------- +Zum Weitermachen irgendeine Taste tippen! +#off("b")# + + Oben links wird das "Aussehen" der Werkstücke +auf dem Bildschirm beschrieben. Nach diesen Angaben +sind die Werkstücke 15 Zeichen breit und 12 Zeichen +hoch. Sie werden auf dem Bildschirm normal (nicht +invers) dargestellt. Die Werkstücke werden aus den +Großbuchstaben 'A ... Z' zusammengesetzt, wobei 'F' +das Fehlerzeichen ist, nach dem gesucht werden +soll. + Der Cursor kann mit den Pfeiltasten (, +, und ) innerhalb des Werk­ +stücks bewegt werden. Steht der Cursor auf einem +Fehlerzeichen, so verschwindet es, wenn die - +Taste getippt wird. Nach Tippen der -Taste +erscheint das nächste Werkstück auf dem Bildschirm. + Darunter sind die Informationen angegeben, die +uns eigentlich interessieren: Die Anzahl/Zeiten für +Arbeitsphasen und Pausen. Sie sollen die Simula­ +tionszeiten jetzt so verändern, daß die Gesamtsimu­ +lationszeit 3 Minuten beträgt. Wählen Sie dazu zu­ +erst die Menufunktion 'Anzahl Arbeitsphasen' durch +Tippen der Taste . Dann erscheint auf dem Bild­ +schirm folgendes Bild: + +#on("b")# ++-------------------------++-------------------------------------------+ +| Informationen || Anzahl Arbeitsphasen festlegen: | +| || | +| Kleinster Wert: 2 || Anzahl Arbeitsphasen neu festlegen (j/n)? | +| Größter Wert: 20 || | +| || | +| Eingestellter Wert: 3 || | ++-------------------------++-------------------------------------------+ + + + + +-------------------------------------+ + | Simulationszeiten: | + | | + | Anzahl der Arbeitsphasen: 3 | + | Dauer einer Arbeitsphase: 10 min | + | Dauer einer Pause : 2 min | + | | + | Simulationsgesamtdauer : 34 min | + +-------------------------------------+ + + + Wenn Sie die im Fenster oben rechts gestellte +Frage bejahen (Taste tippen), ändert sich der +Fensterinhalt: + +#on("b")# ++-------------------------++---------------------------------------------+ +| Informationen || Anzahl Arbeitsphasen festlegen: | +| || | +| Kleinster Wert: 2 ||Mit den Pfeilen und den Wert| +| Größter Wert: 20 ||einstellen. Eingabe mit abschließen.| +| || | +| Eingestellter Wert: 3 ||Bitte die Anzahl der Arbeitsphasen: 3 | ++-------------------------++---------------------------------------------+ + + Bestimmt ist Ihnen schon klar, was zu tun ist: +Mit der Pfeiltaste stellen Sie den +kleinstmöglichen Wert (2) ein - anschließend tippen +Sie die -Taste. Schauen Sie auf das Fenster +ganz unten - jetzt hätten Sie nur noch 24 Minuten +zu arbeiten. Bevor Sie die anderen Parameter ein­ +stellen, bestätigen Sie bitte, daß Sie mit der An­ +zahl der Arbeitsphasen einverstanden sind. + Gehen Sie jetzt ebenso vor, um die 'Dauer (ei­ +ner) Arbeitsphase' und die 'Pausendauer' einzustel­ +len - eine Beschreibung dazu ist sicher überflüs­ +sig. + Rechts im Fenster ist noch der 'Wertungsschlüs­ +sel' angegeben - seine Bedeutung erläutern wir aber +erst in Zusammenhang mit der Auswertung der Simula­ +tionsprotokolle. + + +4.3 Ein Simulationslauf + + So, jetzt können Sie zum Ausprobieren einen kur­ +zen Simulationslauf starten. Gehen Sie dazu zurück +zum Pull-Down-Menu ganz links und wählen Sie hier +die Menufunktion 'Simulation ausführen'. Zunächst +werden Sie nach einer "Identifikation" gefragt. +Geben Sie z.B. Ihren Namen ein und tippen Sie an­ +schließend die -Taste. Auf dem Bildschirm +erscheinen oben alle Informationen, die Sie während +der Simulation benötigen; darunter erscheint der +Hinweis, daß mit dem nächsten Tastendruck die erste +Arbeitsphase beginnt. Wenn das erste Werkstück auf +dem Bildschirm erscheint, sieht das z.B. so aus: + +#on("b")# ++-------------------------------+ +-------------------------------------+ +| Nach rechts : | | Anzahl der Arbeitsphasen: 3 | +| Nach links : | | Dauer einer Arbeitsphase: 10 min | +| Nach oben : | | Dauer einer Pause : 2 min | +| Nach unten : | | Simulationsgesamtdauer : 34 min | +| Ausbesserung : | | | +| Nächstes : | | Fehlerzeichen : F | ++-------------------------------+ +-------------------------------------+ + + GFMKLPDRFGTZQAL + RTWOJLMNVWQHTRS + PZBFVDDSWWAFGBD + EWWQAKGHHJINMPA + WSSDEKLJNHHGTFD + GGTEWLVCXFFRPTR + TREKGLMNTREFGTW + TRWFGLMBVCCDSAQ + HGFRWZTCXYAASWW + MNNBHGTREWQKJLO + CCXSDRFGHKLPOZR + RWPPKHJUUZTFDSE + + + Nun dürfen Sie einmal zeigen, was Sie können. +Bitte achten Sie darauf, daß Sie in jeder Arbeits­ +phase mindestens ein Werkstück bearbeiten - sonst +könnte es später zu Fehlern bei der Auswertung kom­ +men. Sie sollen sich ja auch nicht ausruhen, son­ +dern arbeiten! + Pausen werden Ihnen auf dem Bildschirm ange­ +zeigt. Auch wenn Sie weiterarbeiten wollen - um die +Pausen kommen Sie nicht herum! Am Ende einer Pause +wird ein Hinweis auf das Pausenende ausgegeben. + Nach der letzten Arbeitsphase erhalten Sie eine +Kurzauswertung des aktuellen Simualtionslaufes auf +den Bildschirm (wenn Ihnen das nicht gefällt, kön­ +nen Sie das später auch abschalten). Zur Erläute­ +rung der angegebenen Daten in der 'Kurzauswertung' +sehen Sie bitte das folgende Kapitel. + + +4.4 Die Simulationsauswertung/das Simulations­ + protokoll + + Wenn Sie wollen, können Sie das Protokoll, das +über Ihre Arbeit angefertigt wurde, gleich auswer­ +ten lassen. Wählen Sie dazu die Menufunktion 'Aus­ +wertung auf Bildschirm' (im gleichen Pull-Down- +Menu). Ihnen werden jetzt alle Protokolle, die sich +in Ihrer Task befinden, zur Auswahl angeboten. +Wahrscheinlich ist es zur Zeit nur eine Protokoll­ +datei. + Jetzt sehen Sie auch, warum von Ihnen vor Simu­ +lationsbeginn eine "Identifikation" erbeten wurde. +Sie ist Bestandteil des Protokollnamens - danach +können Sie nämlich die Protokolle zuordnen. Verwen­ +den Sie mehrfach die gleiche Identifikation, so +werden die Protokolle in der Reihenfolge ihrer An­ +lage durchnumeriert. + Wenn Sie den/die Dateinamen angekreuzt haben +(z.B. mit ) und die Auswahl durch +verlassen, werden die angekreuzten Protokolldateien +ausgewertet und anschließend auf dem Bildschirm +angezeigt. + Das Protokoll ist jeweils nach folgendem Schema +aufgebaut: Zunächst werden Datum und Uhrzeit des +Simulationslaufs ausgegeben; anschließend alle +Kenndaten der Simulation, so daß daraus die gesamte +Konfiguration des Simulationssystems rekonstruier­ +bar ist. Es folgt die "Gesamtauswertung" des Simu­ +lationslaufes, die identisch ist mit der auf dem +Bildschirm angezeigten 'Kurzauswertung'. Die Ge­ +samtauswertung erfolgt nach den gleichen Grundsät­ +zen wie die sich anschließenden Auswertungen der +einzelnen Werkstücke (es werden hier nur die ggf. +angefallenen Pausenüberschreitung(en) mit in die +Beurteilung einbezogen). + Das Protokoll ist durch die angehängten Bemer­ +kungen nahezu selbsterklärend. Damit Sie sich einen +Eindruck verschaffen können, haben wir auf den +nächsten Seiten ein ausgewertetes Protokoll abge­ +druckt. Bitte studieren Sie es eingehend - insbe­ +sondere die Anmerkungen am Ende des Protokolls: + + + + + + +#on("b")# + gs-Protokoll: TEST - Auswertung + =============================== +Datum : 03.09.87 Uhrzeit (zu Beginn): 10:21 + + Kenndaten der Werkstückbearbeitung: + =================================== +Nach rechts : Anzahl der Arbeitsphasen: 3 +Nach links : Dauer einer Arbeitsphase: 10 min +Nach oben : Dauer einer Pause : 2 min +Nach unten : Simulationsgesamtdauer : 34 min +Ausbesserung : +Nächstes : Fehlerzeichen : F + +Werkstückbreite : 15 Zeichen +Werkstückhöhe : 12 Zeichen +Anzahl Zeichen pro Werkstück : 180 Zeichen +Umfang des Zeichensatzes : A ... Z ( 26 Zeichen) + + Beispielwerkstück: + ------------------ + QQSEUZSTABQBZWI + UKZVNYPHCPLQMGH + NDJZPCMOOPQQICL + ARELRDKUOOZWOIE + NASIPRLRQUKJHGN + YJJVKIGWCJOLRTL + FXSZBOBIBKQPYXN + JJFKFMEVALZNDPU + VTWWIHKWRMPMHZP + CSSFZBOSACLARKQ + WAAIMHJELLFKIWA + XLNHUCZRVXOXHRL + + + + G e s a m t a u s w e r t u n g: + ================================ +Anzahl der vollständig bearbeiteten Werkstücke : 51 +Anzahl der Zeichen pro Werkstück : 180 +Anzahl der insgesamt untersuchten Zeichen : 9180 + +Anzahl der Bedienfehler : 3 + +Anzahl der vorgegebenen Fehler : 363 +Anzahl der Fehlerkorrekturen : 304 +Arbeitszeit (incl. Pausenüberschreitungen) : 1792.5 sec +Anzahl bearbeiteter Zeichen pro Sekunde : 5.1 + +Ausbesserungsrate : 0.8 +Bewertungsfaktor : 0.8 + +Gesamtbewertung (incl. Pausenüberschreitungen) : 4.3 +================================================ ======== +Arbeitszeit (ohne Pausenüberschreitungen) : 1788.5 sec +Anzahl bearbeiteter Zeichen pro Sekunde : 5.1 +Gesamtbewertung (ohne Pausenüberschreitungen) : 4.3 +================================================ ======== + + + Einzelauswertung der Werkstücke: + ================================ + +Werk- | Anzahl | Vorge- | Anzahl | Benö- | Zei- | Aus- |Bewer- | Bewer- +stück- | Be- | gebene | Kor- | tigte | chen | bes- |tungs- | tungs- +nummer | dien- | Feh- | rek- | Zeit | pro | se- |faktor | zahl + | feh- | ler- | turen | [sec] | Se- | rungs-| | + | ler | zahl | | | kunde | rate | | +-------------------------------------------------------------------------- + | | | | | | | | + 1 | 0 | 5 | 3 | 45.6 | 3.9 | 0.6 | 0.6 | 2.4 + 2 | 0 | 10 | 6 | 33.5 | 5.4 | 0.6 | 0.6 | 3.2 + 3 | 0 | 5 | 4 | 35.7 | 5.0 | 0.8 | 0.8 | 4.0 + 4 | 0 | 3 | 3 | 33.9 | 5.3 | 1.0 | 1.0 | 5.3 + 5 | 0 | 10 | 7 | 38.0 | 4.7 | 0.7 | 0.7 | 3.3 + 6 | 0 | 5 | 4 | 37.2 | 4.8 | 0.8 | 0.8 | 3.9 + 7 | 0 | 9 | 8 | 36.9 | 4.9 | 0.9 | 0.9 | 4.3 + 8 | 0 | 5 | 4 | 31.7 | 5.7 | 0.8 | 0.8 | 4.5 + 9 | 0 | 4 | 3 | 27.3 | 6.6 | 0.8 | 0.8 | 4.9 + 10 | 0 | 6 | 6 | 33.3 | 5.4 | 1.0 | 1.0 | 5.4 + 11 | 0 | 3 | 3 | 25.0 | 7.2 | 1.0 | 1.0 | 7.2 + 12 | 0 | 6 | 3 | 28.6 | 6.3 | 0.5 | 0.5 | 3.1 + 13 | 0 | 11 | 10 | 37.9 | 4.7 | 0.9 | 0.9 | 4.3 + 14 | 0 | 4 | 4 | 38.3 | 4.7 | 1.0 | 1.0 | 4.7 + 15 | 0 | 11 | 8 | 39.3 | 4.6 | 0.7 | 0.7 | 3.3 + 16 | 0 | 5 | 4 | 28.4 | 6.3 | 0.8 | 0.8 | 5.1 + 17 | 0 | 4 | 4 | 36.4 | 4.9 | 1.0 | 1.0 | 4.9 + 18 | 0 | 15 | 14 | 44.9 | 4.0 | 0.9 | 0.9 | 3.7 + + PAUSE ---> Überzogen um 2.2 sec + + 19 | 0 | 3 | 3 | 38.9 | 4.6 | 1.0 | 1.0 | 4.6 + 20 | 0 | 11 | 10 | 40.2 | 4.5 | 0.9 | 0.9 | 4.1 + 21 | 0 | 8 | 7 | 34.7 | 5.2 | 0.9 | 0.9 | 4.5 + 22 | 0 | 7 | 5 | 30.3 | 5.9 | 0.7 | 0.7 | 4.2 + 23 | 0 | 4 | 4 | 33.9 | 5.3 | 1.0 | 1.0 | 5.3 + 24 | 0 | 7 | 7 | 39.5 | 4.6 | 1.0 | 1.0 | 4.6 + 25 | 0 | 6 | 4 | 28.1 | 6.4 | 0.7 | 0.7 | 4.3 + 26 | 0 | 11 | 10 | 34.8 | 5.2 | 0.9 | 0.9 | 4.7 + 27 | 0 | 11 | 9 | 34.2 | 5.3 | 0.8 | 0.8 | 4.3 + 28 | 0 | 10 | 8 | 35.0 | 5.1 | 0.8 | 0.8 | 4.1 + 29 | 0 | 9 | 8 | 36.4 | 4.9 | 0.9 | 0.9 | 4.4 + 30 | 0 | 8 | 7 | 34.8 | 5.2 | 0.9 | 0.9 | 4.5 + 31 | 0 | 10 | 8 | 36.2 | 5.0 | 0.8 | 0.8 | 4.0 + 32 | 0 | 10 | 10 | 44.0 | 4.1 | 1.0 | 1.0 | 4.1 + 33 | 0 | 8 | 8 | 44.4 | 4.1 | 1.0 | 1.0 | 4.1 + 34 | 0 | 4 | 3 | 35.6 | 5.1 | 0.8 | 0.8 | 3.8 + + PAUSE ---> Überzogen um 1.8 sec + + 35 | 0 | 8 | 8 | 42.7 | 4.2 | 1.0 | 1.0 | 4.2 + 36 | 1 | 8 | 8 | 45.3 | 4.0 | 1.0 | 1.0 | 4.0 + 37 | 0 | 5 | 5 | 34.3 | 5.2 | 1.0 | 1.0 | 5.2 + 38 | 0 | 5 | 4 | 27.9 | 6.5 | 0.8 | 0.8 | 5.2 + 39 | 0 | 10 | 8 | 39.5 | 4.6 | 0.8 | 0.8 | 3.6 + 40 | 1 | 7 | 6 | 35.5 | 5.1 | 0.9 | 0.9 | 4.3 + 41 | 0 | 3 | 3 | 29.5 | 6.1 | 1.0 | 1.0 | 6.1 + 42 | 0 | 5 | 5 | 30.2 | 6.0 | 1.0 | 1.0 | 6.0 + 43 | 0 | 6 | 3 | 28.0 | 6.4 | 0.5 | 0.5 | 3.2 + 44 | 0 | 5 | 4 | 30.2 | 6.0 | 0.8 | 0.8 | 4.8 + 45 | 0 | 5 | 4 | 33.1 | 5.4 | 0.8 | 0.8 | 4.4 + 46 | 0 | 8 | 7 | 33.7 | 5.3 | 0.9 | 0.9 | 4.7 + 47 | 0 | 9 | 7 | 32.2 | 5.6 | 0.8 | 0.8 | 4.3 + 48 | 0 | 9 | 8 | 37.5 | 4.8 | 0.9 | 0.9 | 4.3 + 49 | 0 | 4 | 4 | 32.0 | 5.6 | 1.0 | 1.0 | 5.6 + 50 | 0 | 9 | 7 | 34.8 | 5.2 | 0.8 | 0.8 | 4.0 + 51 | 1 | 9 | 4 | 29.2 | 6.2 | 0.4 | 0.4 | 2.7 + | | | | | | | | +========================================================================== + +( 52 | 0 | 7 | 7 | 35.9 | 5.0 | 1.0 | 1.0 | 5.0) + + Anmerkungen: + ============= + + - Das zuletzt bearbeitete Werkstück (in der obigen Tabelle unterhalb + der letzten Trennlinie in Klammern angegeben) wurde nicht vollstän- + dig innerhalb der zur Verfügung stehenden Zeit bearbeitet. + Aus diesem Grunde wird es bei der Auswertung (Gesamtwertung) nicht + berücksichtigt! + + - Bei der Auflistung der Daten der einzelnen Werkstücke sind auch die + Pausen eingetragen, so daß sich die einzelnen Arbeitsphasen erken- + nen und miteinander vergleichen lassen. Die dabei notierten Zeiten + geben die Pausenüberschreitungen an. Diese Zeiten bleiben bei der + Betrachtung der einzelnen Werkstücke unberücksichtigt, fließen aber + in die Gesamtauswertung ein! + + - Die Anzahl der Bedienfehler ist ein Maß für die Sicherheit im Um- + gang mit dem System. Bei den weiteren Auswertungen bleibt die Be- + dienfehlerzahl allerdings unberücksichtigt! + + - Die 'Vorgegebene Fehlerzahl', die 'Anzahl Korrekturen' und die 'Be- + nötigte Zeit [sec]' wurden bei der Bearbeitung des Werkstücks er- + faßt. Auf diesen Daten beruhen die folgenden Auswertungen! + + - Da die Werkstücke ganz unterschiedliche Größen haben können, eignet + sich die 'Benötigte Zeit [sec]', die für die Bearbeitung eines je- + den Werkstücks ermittelt wird, als Maß für die "Arbeitsgeschwindig- + keit" nicht! Stattdessen wird ermittelt, wie viele Zeichen pro Se- + kunde "bearbeitet" wurden: + + Anzahl Zeichen pro Werkstück + Zeichen pro Sekunde = ---------------------------- + Benötigte Zeit [sec] + + Die 'Anzahl Zeichen pro Werkstück' kann aus der Werkstückbreite und + Werkstückhöhe ermittelt werden: + + Anzahl Zeichen pro Werkstück = Werkstückbreite * Werkstückhöhe + + - Aus der (zufällig) 'Vorgegebenen Fehlerzahl' und der 'Anzahl Kor- + rekturen' wird die 'Ausbesserungsrate' ermittelt: + + Anzahl Korrekturen + Ausbesserungsrate = ---------------------- + Vorgegebene Fehlerzahl + + Die Ausbesserungsrate gibt an, welcher Anteil der vorhandenen Feh- + ler ausgebessert wurde. Sie ist ein Maß für die Güte der verrichte- + ten Arbeit. + + - Der 'Bewertungsfaktor' ist abhängig von der 'Ausbesserungsrate'. Er + läßt sich aus dem folgenden Diagramm entnehmen: + + Bewertungs- + faktor + + 1.0| + + | + + | + + | + + | + + 0.5| + + | + + | + + | + + | + + 0.0+--|--|--|--|--|--|--|--|--|--| + 0.0 0.5 1.0 + Ausbesserungsrate + + + In diesem Diagramm ist festgelegt, wie die einzelnen 'Ausbesse- + rungsraten' bewertet werden. + + - Am Ende wird die 'Bewertungszahl' folgendermaßen ermittelt: + + Bewertungszahl = Zeichen pro Sekunde * Bewertungsfaktor + + Da der 'Bewertungsfaktor' nur Werte zwischen 0 und 1 annehmen kann, + ist die 'Bewertungszahl' ein Wert zwischen 0 und der 'Zeichen pro + Sekunde'. Die "Arbeitsleistung" war um so größer, je höher die 'Be- + wertungszahl ist. + +Eine weitere Kommentierung des Protokolls dürfte +sich wohl erübrigen, wenn Sie die Anmerkungen in­ +tensiv studiert haben. + + +4.5 Hinweise zur Protokollauswertung + +4.5.1 Der Bewertungsfaktor + + Sie haben sich sicher über den sogenannten 'Be­ +wertungsfaktor' gewundert, der an verschiedenen +Stellen genannt wird - aber bisher unberücksichtigt +blieb. In den bisher aufgezeigten Situationen war +der Bewertungsfaktor identisch mit der 'Ausbesse­ +rungsrate'. Warum dieser Faktor gesondert einge­ +führt wurde, möchten wir an einem kleinen Beispiel +erläutern: + Wenn Ihnen der Auswertalgorithmus vor dem Simu­ +lationslauf bekannt gewesen wäre und Sie die Ab­ +sicht gehabt hätten, eine möglichst hohe Bewer­ +tungszahl zu erzielen, wäre folgende "Arbeitsstra­ +tegie" erfolgversprechend gewesen: + Sobald ein Werkstück auf dem Bildschirm er­ +scheint, bewegen Sie den Cursor schnellstens zum +ersten Fehlerzeichen, das Sie entdecken können und +löschen es mit der Ausbesserungstaste. Sollten zu­ +fällig noch weiterer Fehlerzeichen in unmittelbarer +Nähe zu sehen sein, so können Sie sie ja auch "aus­ +merzen" - aber dann schnell das nächste Werkstück +anfordern usw. + Machen wir uns klar, was das bedeutet: Da sie +das Werkstück in sehr kurzer Zeit bearbeitet haben, +wird der eigentlich entscheidende Faktor hinsicht­ +lich der Auswertung "enorm in die Höhe getrieben" +(die Anzahl der Zeichen pro Sekunde). Da Sie bei +dieser Strategie zumeist nur 2 - 4 Sekunden zur +Bearbeitung eines Werkstücks brauchen, erhalten Sie +- auf das obige Beispielprotokoll bezogen - Werte +zwischen 90.0 und 45.0 (bearbeitete Zeichen pro +Sekunde). + Im Schnitt treten pro Werkstück etwa 7 Fehler­ +zeichen auf (sehen Sie dazu auch unter 'Aufbau der +Werkstücke'), von denen Sie dann eines korrigiert +haben. Sie kommen also auf eine durchschnittliche +Ausbesserungsrate von 0.14. Wäre - wie im obigen +Beispielprotokoll - der Bewertungsfaktor mit der +Ausbesserungsrate identisch, so erhielten Sie Be­ +wertungszahlen zwischen 12.9 und 6.4. Ein deut­ +licher Unterschied zur "Leistung" die im Protokoll +dokumentiert ist - oder? + Das aber ist nicht Sinn der dem Benutzer ge­ +stellten Aufgabe! Es würde auch nicht einer sinn­ +vollen 'Kontrolltätigkeit' entsprechen, wenn derart +viele Fehler unentdeckt blieben. Um hier "regulie­ +rend" einschreiten zu können, ist der 'Bewertungs­ +faktor' eingeführt worden. So können Sie festlegen, +daß Werkstücke, in denen weniger als 80% der Fehler +entdeckt wurden, bei der Auswertung unberücksich­ +tigt bleiben. Sie brauchen dazu nur den Bewertungs­ +schlüssel entsprechend einzustellen. ("Ziehen Sie +dazu bei der Einstellung des Bewertungsschlüssels +die ersten 8 Kreuzchen auf die Grundlinie"). + Anders ausgedrückt: Durch die Manipulation des +Bewertungsschlüssels können Sie die Anforderungen, +die an die Werkstückbearbeitung gestellt werden, +festlegen. Hierdurch entscheiden Sie über die Wer­ +tigkeit von Schnelligkeit und Genauigkeit. + Übrigens wird der zur Simulationszeit einge­ +stellte Wertungsschlüssel mit im Protokoll notiert. +Eine Auswertung des Protokolls mit verschiedenen +Wertungsschlüsseln ist so nicht möglich - und auch +nicht sinnvoll. Denn sonst könnte es ja vorkommen, +daß der Anwender ein ganz anderes Ergebnis in der +Kurzauswertung auf dem Bildschirm gezeigt bekommt +als er nachher im Protokoll nachlesen kann. Wenn +Sie also mit einem veränderten Wertungsschlüssel +arbeiten wollen, müssen Sie ihn #on("u")#vor dem Simula­ +tionslauf#off("u")# eingestellt haben! + + +4.5.2 Fehlerzeichenhäufigkeit in den Werkstücken + + Die Häufigkeit des Auftretens der Fehlerzeichen +in den einzelnen Werkstücken kann deutlich schwan­ +ken. Die Werkstücke werden nämlich mit Hilfe des +Zufallszahlengenerators aufgebaut. Je nach Anzahl +der verschiedenen Zeichen, die in einem Werkstück +auftreten können, ändert sich auch der Anteil der +auftretenden Fehlerzeichen. + In unserem bisher betrachteten Beispiel können +26 verschiedene Buchstaben im Werkstück auftreten. +Ein Werkstück besteht aus 180 Zeichen. In 1/26 al­ +ler Fälle müßte also das Fehlerzeichen auftreten, +d.h. also etwa 7 Fehlerzeichen pro Werkstück - al­ +lerdings auf eine große Anzahl von produzierten +Werkstücken bezogen. Da die Werkstücke zufällig +zusammengesetzt werden, gilt dieser Wert natürlich +nicht für das einzelne Werkstück! + + +4.5.3 Fehlerhafte Auswertungen + + In zwei Situationen kann es zu Fehlern bei der +Auswertung von Protokollen kommen: + + Wurde der Simulationslauf mit der -Taste +rigoros abgebrochen, so ist ggf. eine sinnvolle +Auswertung des Protokolls nicht möglich, da nur +unvollständige Daten vorhanden sind. + + In der letzten Arbeitsphase eines Simulations­ +laufes muß zumindest ein Werkstück angefordert wor­ +den sein. Dehnt ein Anwender die letzte Pause so +lange aus, daß das Pausenende über das Ende der +letzten Arbeitsphase hinausreicht, so erscheinen im +Protokoll keine Werte für die einzelnen Werkstücke +- in der Gesamtauswertung sind (fast) alle Werte +auf '0' gesetzt. + diff --git a/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 5 b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 5 new file mode 100644 index 0000000..d08e4a7 --- /dev/null +++ b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 5 @@ -0,0 +1,699 @@ +#limit (11.0)##pagelength (16.5)##block##pageblock# +#start (2.0,0.0)# +#page (40)# +#headodd# +#center#gs-MP BAP#right#% + +#end# +#headeven# +%#center#gs-MP BAP + +#end# +#center#5 + +#center#Beschreibung +#center#der +#center#Menufunktionen + +#center#(Programmteil 'Bildschirmarbeitsplatz' (BAP)) + + +5.1 Kurzhinweise zur Bedienung des Menus + + Die Bedienung des Menus ist sehr einfach. Eine +ausführliche Beschreibung dazu finden Sie in den +Unterlagen zum Programmsystem #on("b")#gs-DIALOG#off("b")#. An dieser +Stelle sollen nur die wesentlichen Bedienungsvor­ +gänge beschrieben werden. + +- Mit der Tastenfolge können Sie sich + Informationen zur Bedienung des Menusystems in + das Menu einblenden lassen. + +- Mit den Pfeiltasten und können + Sie zwischen den "Oberbegriffen" in der Kopfzei­ + le wählen. Der aktuelle Oberbegriff ist jeweils + invers dargestellt. Das ausgeklappte 'Pull- + Down-Menu' bezieht sich auf diesen invers darge­ + stellten Oberbegriff. + +- Mit den Pfeiltasten und können + Sie zwischen den Menufunktionen wählen, die + Ihnen im aktuellen Pull-Down-Menu zur Auswahl + angeboten werden. Die aktuell angewählte Menu­ + funktion wird jeweils invers dargestellt. Die + Trennlinien, die in einigen Pull-Down-Menus + sichtbar sind, dienen nur der optischen Unter­ + gliederung; sie können nicht angewählt werden + und werden deshalb automatisch übersprungen. Die + einzelnen Menupunkte sind "zyklisch miteinander + verknüpft", das heißt, man gelangt vom untersten + Menupunkt wieder zum obersten und umgekehrt. + Menupunkte, vor denen ein Minuszeichen steht + ('-'), sind (zur Zeit) nicht aktivierbar; auch + sie können nicht angewählt werden und werden + einfach übersprungen. + +- Durch Tippen der Fragezeichentaste () können + Sie sich jeweils zur aktuellen Menufunktion (in­ + vers im Pull-Down-Menu) Informationen in das + Menu einblenden lassen. + +- Um eine Menufunktion ausführen zu lassen, bewe­ + gen Sie sich mit den Pfeiltasten auf die ge­ + wünschte Menufunktion im aktuellen Pull-Down- + Menu und tippen dann die -Taste. Steht + vor dem gewünschten Menupunkt ein einzelner + Buchstabe oder eine Ziffer, so kann durch Tippen + der entsprechenden Taste diese Menufunktion da­ + durch direkt aufgerufen werden. Sobald eine Me­ + nufunktion aufgerufen worden ist, erscheint da­ + vor ein Stern ('*'). Daraus können Sie entneh­ + men, daß das System bereits den Auftrag aus­ + führt. + +- An verschiedenen Stellen werden Fragen an Sie + gerichtet, die Sie mit 'ja' oder 'nein' beant­ + worten müssen. Tippen Sie dazu entsprechend der + Entscheidung die Taste (für 'ja') bzw. + (für 'nein'). + +- Werden Ihnen vom Menu aus Dateinamen zur Auswahl + angeboten, so können Sie den auf dem Bildschirm + sichtbaren Pfeil vor den gewünschten Namen posi­ + tionieren. Mit den Tasten oder kön­ + nen Sie den Namen ankreuzen. Ist die Auswahl + mehrerer Dateinamen möglich, so können Sie den + Vorgang wiederholen. Mit den Tasten oder + können Sie auch ein Kreuz vor einem + Namen wieder löschen. Daneben gibt es noch eini­ + ge Tastenfunktionen, die für die Bedienung recht + hilfreich sein können. Tippen Sie während der + Auswahl die Fragezeichentaste (), so werden + Ihnen alle Bedienungsmöglichkeiten auf dem Bild­ + schirm angezeigt. Eine Auswahl, in der mehrere + Dateien angekreuzt werden dürfen, wird durch die + Tastenfolge verlassen. Anschließend + wird die eingestellte Operation mit den ange­ + kreuzten Dateien ausgeführt. Sind Sie versehent­ + lich in eine solche Auswahl gelangt, so können + Sie den Vorgang durch die Tastenkombination + abbrechen. + +- An einigen Stellen werden Sie aufgefordert, eine + Eingabe zu machen (z.B. einen Dateinamen einzu­ + geben). Wird Ihnen hier ein Vorschlag gemacht, + den Sie akzeptieren, so brauchen Sie zur Bestä­ + tigung nur die -Taste zu tippen. Ge­ + fällt Ihnen der Vorschlag nicht oder wird Ihnen + kein Vorschlag gemacht, so machen Sie bitte die + gewünschte Eingabe. Zum Schreiben stehen Ihnen + alle aus dem Editor bekannten Funktionen zur + Verfügung. Mit der Taste können Sie + Buchstaben löschen, mit einfügen. Die + Eingabe wird durch Tippen der -Taste + abgeschlossen. Ist der von Ihnen gewünschte Name + schon in Ihrer Task vorhanden und steht in der + Fußzeile der Hinweis 'Zeigen: ', dann + können Sie sich auch alle vorhandenen Namen zur + Auswahl anbieten lassen und durch Ankreuzen den + beabsichtigten Namen auswählen. + +- Ihnen können auch mehrere Alternativen angeboten + werden, zwischen denen Sie wählen müssen. In der + untersten Zeile eines solchen Kastens, in denen + Ihnen die Alternativen auf dem Bildschirm einge­ + blendet werden, sind die Möglichkeiten aufge­ + führt, die darüber beschrieben sind. Mit den + Pfeiltasten können sie die Markierung auf die + gewünschte Alternative positionieren und dann + durch die -Taste zur Ausführung bringen. + (Manchmal ist das auch durch Tippen der den Al­ + ternativen vorangestellten Buchstaben oder Zif­ + fern möglich). + +- Durch die Tastenfolge kann das Menu + insgesamt verlassen werden. Damit das nicht ver­ + sehentlich geschieht, wird jeweils die Frage + gestellt, ob Sie das Menu tatsächlich verlassen + wollen. Diese Frage beantworten Sie bitte je + nach Wunsch mit 'ja' oder 'nein' durch Tippen + der Tasten bzw. . + +#page# +5.2 Menufunktionen zum Oberbegriff 'Simulation' + +#on("b")# +BAP: Simulation Parameter Konfiguration Dateien Archiv ++-------------------------------+----------------------------------------- +| s Simulation ausführen | +| --------------------------- | +| a Auswertung auf Bildschirm | +| d Drucken von Auswertungen | ++-------------------------------+ + + + + + + + + + + + +-------------------------------------------------------------------------- +Info:/ Wahl: Ausführen: Verlassen: +#off("b")# + +#on("u")##on("b")#s Simulation ausführen#off("b")##off("u")# + Mit dieser Menufunktion starten Sie einen + Simulationslauf. Bevor Sie aber mit der Arbeit + am Bildschirmarbeitsplatz beginnen können, + wird eine "Identifikation" (Vor- und Nachname) + von Ihnen verlangt. Das Protokoll, das bei der + Simulation entsteht, erhält dann die hier ein­ + gegebene Kennung. Geben Sie für mehrere Proto­ + kolle den gleichen Namen an, so werden die + Protokolle in der Reihenfolge ihrer Anlage + durchnumeriert. + Nach Eingabe der Kennung werden oben auf + dem Bildschirm die zur Zeit eingestellten Si­ + mulationsdaten angezeigt - alle Daten, die Sie + zur Bedienung während der Simulation benöti­ + gen. Die eigentliche Simulation beginnt erst + mit dem nächsten Tastendruck; dazu erfolgt ein + Hinweis auf dem Bildschirm. + Nach Abschluß der Simulation wird Ihnen + gegebenenfalls (sehen Sie dazu auch die Menu­ + funktion 'k Kurzauswertung' unter dem Oberbe­ + griff 'Konfiguration') eine Kurzauswertung auf + dem Bildschirm ausgegeben. Anschließend gelan­ + gen Sie zurück in das Menu. + Diese Menufunktion hat eine ähnliche Wir­ + kung wie der Aufruf des Programms 'Material­ + prüfung' (MP). Im Gegensatz zum Aufruf des + Programms 'Materialprüfung' (MP - mit dem Be­ + fehl: mp ) werden hier allerdings kei­ + ne ausführlichen Informationen vor dem eigent­ + lichen Simulationslauf ausgegeben, sondern es + wird nur nach einer Identifikation (Vorname + und Nachname) gefragt. Nach Abschluß der Si­ + mulation verbleibt das Protokoll in der Task - + es wird nicht, wie im Programmteil 'Material­ + prüfung', in die Vatertask geschickt. + +#on("u")##on("b")#a Auswertung auf Bildschirm#off("b")##off("u")# + Alle Simulationsprotokolle, die sich in + Ihrer Task befinden, werden Ihnen zur Auswahl + angeboten. Wenn Sie den/die gewünschten Proto­ + kollnamen angekreuzt und die Auswahl mit der + Tastenfolge verlassen haben, werden + die Protokolle nacheinander in der Ankreuzrei­ + henfolge ausgewertet und die Auswertungen auf + dem Bildschirm angezeigt. + Die gesamte Auswertung kann zwar nicht auf + einmal auf dem Bildschirm angezeigt werden - + Sie können aber das Fenster mit + und rollen und so in die gesamte + Datei Einsicht nehmen. Gegebenenfalls (sehen + Sie dazu auch die Menufunktion 'u Umfang der + Auswertung' unter dem Oberbegriff 'Konfigura­ + tion') werden an das Ende der eigentlichen + Ergebnisse noch Erläuterungen zum Protokoll + ausgegeben. (Zur Protokollauswertung selbst + sehen Sie bitte Kapitel 4.4). Da die Auswer­ + tung jeweils in eine Datei geschrieben wird, + können Sie sie mit der Tastenkombination + verlassen. + + Fehlerfälle: - Sehen Sie dazu bitte Kapitel + 4.5.3 + +#on("u")##on("b")#d Drucken von Auswertungen#off("b")##off("u")# + Alle Simulationsprotokolle, die sich in + Ihrer Task befinden, werden Ihnen zur Auswahl + angeboten. Wenn Sie den/die gewünschten Proto­ + kollnamen angekreuzt und die Auswahl mit der + Tastenfolge verlassen haben, werden + die Protokolle nacheinander in der Ankreuzrei­ + henfolge ausgewertet und die Auswertdateien + zum Drucker geschickt. + #on("b")#ACHTUNG!#off("b")# Zum Ausdruck von Simulationsproto­ + kollen muß unbedingt diese Menufunktion ge­ + wählt werden! Zwar können normale Textdateien + auch mit dem Menupunkt 'Drucken' unter dem + Oberbegriff 'Dateien' ausgedruckt werden - das + gilt aber nicht für die bei den Simulationen + erzeugten Protokolldateien, die Sie am Präfix + 'gs-Protokoll:' erkennen können. + Der Ausdruck der Protokollauswertungen er­ + folgt normalerweise im Standardschrifttyp Ih­ + res Druckers. Es besteht allerdings die Mög­ + lichkeit, einen anderen Schrifttyp für den + Ausdruck der Protokolldateien einzustellen. + Sehen Sie dazu bitte im Kapitel 6 'Hinweise + für den Systembetreuer'. + +#page# +5.3 Menufunktionen zum Oberbegriff 'Parameter' + +#on("b")# +BAP: Simulation Parameter Konfiguration Dateien Archiv +-------+---------------------------+-------------------------------------- + | e Einstellung anzeigen | + | s Standardwerte | + | ----------------------- | + | b Breite des Werkstücks | + | h Höhe des Werkstücks | + | i Invers-/Normal | + | z Zeichensatz | + | f Fehlerzeichen | + | t Tastenbelegung | + | ----------------------- | + | a Anzahl Arbeitsphasen | + | d Dauer Arbeitsphase | + | p Pausendauer | + | ----------------------- | + | w Wertungsschlüssel | + +---------------------------+ + + +-------------------------------------------------------------------------- +Info:/ Wahl: Ausführen: Verlassen: +#off("b")# + +#on("u")##on("b")#e Einstellung anzeigen#off("b")##off("u")# + Auf dem Bildschirm erscheinen zwei Fenster. + Im Fenster links werden alle Werte angezeigt, + die die Parameter zur Zeit annehmen. Oben kön­ + nen Sie ablesen, welches Aussehen ein Werk­ + stück nach der augenblicklichen Einstellung + auf dem Bildschirm hätte. Darunter ist angege­ + ben, welche Tasten bei der Bearbeitung der + Werkstücke während des Simulationslauf benutzt + werden können. Unten ist noch aufgeführt, wie + viele Arbeitsphasen vorgesehen sind und wie + lange die Arbeitsphasen, Pausen und die Ge­ + samtsimulation dauern. + Im Fenster rechts wird ein Diagramm ausge­ + geben. Hier ist der Bewertungsfaktors in Ab­ + hängigkeit von der Ausbesserungsrate darge­ + stellt. Hinsichtlich der Bedeutung des Bewer­ + tungsfaktors sehen Sie bitte in Kapitel 4.5.1. + Die Anzeige kann durch Tippen einer belie­ + bigen Taste verlassen werden. + +#on("u")##on("b")#s Standardwerte#off("b")##off("u")# + Mit dieser Menufunktion können Sie mit ei­ + nem Tastendruck die sogenannten "Standardwer­ + te" einstellen - die Werte, die die Parameter + haben, wenn das System "frisch installiert" + ist. + Zur Sicherheit zeigt das System die aktuel­ + len Werte an und erfragt, ob Sie die Standard­ + werte tatsächlich einstellen wollen. Bejahen + Sie diese Frage, so werden alle aktuellen Wer­ + te durch die Standardwerte überschrieben und + auf dem Bildschirm angezeigt. Von dieser Ein­ + stellung ist auch der Wertungsschlüssel be­ + troffen - der aber nicht angezeigt wird. Die + Einstellung wird derart vorgenommen, daß Be­ + wertungsfaktor und Ausbesserungsrate identisch + sind. + +#on("u")##on("b")#b Breite des Werkstücks#off("b")##off("u")# + Mit dieser Menufunktion können Sie die An­ + zahl der Zeichen je Werkstückzeile festlegen. + Im Fenster links oben werden der kleinstmög­ + liche Wert (1), der größtmögliche Wert (70) + und der aktuell eingestellte Wert angezeigt. + Unten erscheint zur Kontrolle ein Werkstück, + das den aktuellen Parameterwerten entspricht. + Im Fenster rechts oben wird an Sie die Fra­ + ge gerichtet, ob Sie tatsächlich eine Verände­ + rung vornehmen möchten. Haben Sie versehent­ + lich diesen Menupunkt gewählt, verneinen Sie + einfach diese Frage (Taste ) und gelangen + so - unter Beibehaltung des z.Z. eingestellten + Wertes - zurück in das Menu. + Bejahen Sie die Frage, so erhalten Sie die + Möglichkeit, den bisher eingestellten Wert mit + der Pfeiltaste zu erhöhen, mit der + Pfeiltaste zu erniedrigen - aller­ + dings nur innerhalb der angezeigten Grenzen. + Wenn Sie die gewünschte Einstellung vorgenom­ + men und die Eingabe durch abgeschlos­ + sen haben, erscheint ein Werkstück in der neu + eingestellten Breite unten auf dem Bildschirm. + Bejahen Sie die Frage, ob Sie mit der Werk­ + stückbreite einverstanden sind, dann gelangen + Sie ins Menu zurück; ansonsten können Sie die + Werkstückbreite nach gleichem Verfahren erneut + einstellen. + +#on("u")##on("b")#h Höhe des Werkstücks#off("b")##off("u")# + Die Einstellung der Werkstückhöhe (Anzahl + Zeichen pro Werkstückspalte) erfolgt analog + zur Einstellung der Werkstückbreite - sehen + Sie bitte dort. + +#on("u")##on("b")#i Invers-/Normal#off("b")##off("u")# + Mit dieser Menufunktion können Sie festle­ + gen, ob das zu bearbeitende Werkstück 'normal' + oder 'invers' dargestellt wird. Diese Darstel­ + lung ist aber immer in Abhängigkeit von der + Grundeinstellung Ihres Bildschirms zu sehen. + Wenn Ihr Bildschirm normalerweise helle Zei­ + chen auf dunklem Grund darstellt, so bedeutet + 'normal' eben diese Einstellung; 'invers' be­ + deutet dann, daß die Zeichen des Werkstücks + dunkel auf hellem Grund dargestellt werden - + bei anderer Bildschirmgrundeinstellung eben + umgekehrt. + Unten auf dem Bildschirm wird Ihnen zur + Kontrolle ein Werkstück in aktueller Darstel­ + lung gezeigt. Im Fenster oben rechts erscheint + die Frage, ob Sie eine Veränderung der augen­ + blicklichen Einstellung wünschen. Je nachdem, + ob Sie die Frage bejahen oder verneinen, wird + eine Veränderung vorgenommen oder nicht. + +#on("u")##on("b")#z Zeichensatz#off("b")##off("u")# + Mit dieser Menufunktion können Sie das Feh­ + lerzeichen festlegen und bestimmen, aus wel­ + chen Zeichen die Werkstücke zusammengesetzt + werden sollen. Bejahen Sie die Frage nach der + Neufestlegung des Zeichensatzes, so werden + Ihnen im Fenster links alle möglichen Zeichen + angezeigt. Die Zeichen werden hier in der Rei­ + henfolge ihres internen Codes ausgegeben. Sie + können nun - indem Sie einfach die entspre­ + chende Taste tippen - eines der angegebenen + Zeichen als 'Fehlerzeichen' bestimmen. Es wird + daraufhin invers dargestellt. + Anschließend können Sie die Zeichen bestim­ + men, die sonst noch im Werkstück vorkommen + sollen. Allerdings sind Sie bei dieser Wahl + nicht so frei wie bei der Wahl des Fehlerzei­ + chens. Es muß sich um einen zusammenhängenden + Bereich von Zeichen handeln, die um das Feh­ + lerzeichen gruppiert sind - 'zusammenhängend' + bezieht sich dabei auf die Reihenfolge der + Zeichen im Fenster links. + Die Festlegung selbst erfolgt in zwei Etap­ + pen. Zuerst können Sie den Bereich der Zeichen + bestimmen, die in der Reihenfolge vor dem Feh­ + lerzeichen stehen. Mit der Pfeiltaste + markieren Sie den Bereich, der vor dem Fehler­ + zeichen liegt; mit der Pfeiltaste + können Sie ggf. die Markierung wieder rückgän­ + gig machen. Wenn Sie so den gewünschten Be­ + reich markiert haben, tippen Sie die + -Taste. + Anschließend bestimmen Sie den Bereich hin­ + ter dem Fehlerzeichen auf vergleichbare Weise + und schließen auch hier die Einstellung mit + der -Taste ab. Daraufhin wird Ihnen + der eingestellte Zeichensatz mit markiertem + Fehlerzeichen noch einmal zur Kontrolle im + Fenster links ausgegeben. Sind Sie mit der + Einstellung einverstanden, so bejahen Sie die + an Sie gerichtete Frage und gelangen ins Menu + zurück; ansonsten können Sie nach gleichem + Verfahren die Einstellung korrigieren. + +#on("u")##on("b")#f Fehlerzeichen#off("b")##off("u")# + Diese Menufunktion ist dann sinnvoll zu + wählen, wenn Sie den eingestellten Zeichensatz + beibehalten und nur das Fehlerzeichen verän­ + dern wollen. Wenn Sie die Frage bejaht haben, + eine Veränderung vornehmen zu wollen, haben + Sie die Möglichkeit, durch Verschiebung der + Markierung im Fenster links (durch die Tasten + und ) das neue Fehlerzeichen + einzustellen. Die Einstellung wird durch + abgeschlossen. Sind Sie mit dem ein­ + gestellten Fehlerzeichen einverstanden, gelan­ + gen Sie zurück ins Menu; ansonsten können Sie + Ihre Einstellung korrigieren. + +#on("u")##on("b")#t Tastenbelegung#off("b")##off("u")# + Mit dieser Menufunktion können Sie die Ta­ + sten bestimmen, die bei einem Simulationslauf + zur Bedienung des Systems benutzt werden kön­ + nen. Ihnen wird im Fenster links oben die ak­ + tuelle Einstellung angezeigt. Haben Sie sich + entschlossen, eine Neueinstellung vorzunehmen, + werden nacheinander die entsprechenden Tasten + erfragt. Sie brauchen dabei jeweils nur die + Taste zu tippen, die Sie für die entsprechende + Funktion vorgesehen haben. + Sie können die Tasten nahezu frei wählen. + Es ist allerdings nicht erlaubt, die - + Taste zu wählen. Ebensowenig wird die Einstel­ + lung akzeptiert, wenn Sie Mehrfachbelegungen + vornehmen, d.h, eine Taste für mehrere Funk­ + tionen vorschlagen. Achten Sie deshalb immer + auf den Kommentar zur Einstellung im Fenster + unten links. Ist die Neueinstellung fehler­ + haft, so erfolgt ein Hinweis darauf - in einem + solchen Falle bleibt die alte Tastenbelegung + erhalten. + +#on("u")##on("b")#a Anzahl Arbeitsphasen#off("b")##off("u")# + Mit dieser Menufunktion können Sie festle­ + gen, in wie viele Arbeitsphasen ein Simula­ + tionslauf jeweils eingeteilt werden soll. Im + Fenster links oben werden der kleinstmögliche + Wert (2), der größtmögliche Wert (20) und der + aktuell eingestellte Wert angezeigt. Im Fen­ + ster unten wird die aktuelle Simulationsdauer + angezeigt. + Im Fenster rechts oben wird an Sie die Fra­ + ge gerichtet, ob Sie tatsächlich eine Verände­ + rung vornehmen möchten. Bejahen Sie die Frage, + so erhalten Sie die Möglichkeit, den bisher + eingestellten Wert mit der Pfeiltaste + zu erhöhen, mit der Pfeiltaste zu + erniedrigen - allerdings nur innerhalb der + angezeigten Grenzen. + Wenn Sie die gewünschte Einstellung vorge­ + nommen und die Eingabe durch abge­ + schlossen haben, erscheinen die neuen Simula­ + tionszeiten im Fenster unten. Bejahen Sie die + Frage, ob Sie mit der Arbeitsphasenanzahl ein­ + verstanden sind, dann gelangen Sie ins Menu + zurück; ansonsten können Sie nach gleichem + Verfahren die getroffene Einstellung korrigie­ + ren. + +#on("u")##on("b")#d Dauer Arbeitsphase#off("b")##off("u")# + Mit dieser Menufunktion können Sie festle­ + gen, wie lange eine Arbeitsphase dauern soll. + Es kann ein Wert zwischen 1 min und 60 min + eingestellt werden. Das Einstellverfahren ver­ + läuft analog zur Festlegung der Anzahl der + Arbeitsphasen - sehen Sie bitte dort. + +#on("u")##on("b")#p Pausendauer#off("b")##off("u")# + Mit dieser Menufunktion können Sie festle­ + gen, wie lange die Pause zwischen je zwei Ar­ + beitsphasen dauern soll. Es kann ein Wert zwi­ + schen 1 min und 30 min eingestellt werden. Das + Einstellverfahren verläuft analog zur Festle­ + gung der Anzahl der Arbeitsphasen - sehen Sie + bitte dort. + +#on("u")##on("b")#w Wertungsschlüssel#off("b")##off("u")# + Mit dieser Menufunktion können Sie den Wer­ + tungsschlüssel festlegen. Zur genauen Erläu­ + terung der Bedeutung des Bewertungsfaktors + sehen Sie bitte Kapitel 4.5.1. + Im Fenster links wird der aktuell einge­ + stellte Wertungsschlüssel angezeigt. Stellen + Sie sich die ins Koordinatensystem eingetrage­ + nen Kreuzchen durch einen Streckenzug verbun­ + den vor. Entscheiden Sie sich für eine Neu­ + festlegung, dann können Sie mit den Pfeil­ + tasten und nacheinander die + einzelnen Kreuzchen im Koordinatensystem nach + oben bzw. nach unten verschieben. + Haben Sie ein Kreuzchen an die gewünschte + Stelle positioniert, so tippen Sie als Kenn­ + zeichen dafür die -Taste. So gelangen + Sie zum nächsten Kreuzchen bzw. nach dem letz­ + ten Kreuzchen zurück in das Fenster oben + rechts. Wenn Sie mit dem eingestellten Wer­ + tungsschlüssel einverstanden sind, gelangen + Sie zurück ins Menu; ansonsten können Sie die + vorgenommene Einstellung korrigieren. + +#page# +5.4 Menufunktionen zum Oberbegriff 'Konfigu­ + ration' + +#on("b")# +BAP: Simulation Parameter Konfiguration Dateien Archiv +--------------------+---------------------------+------------------------- + | u Umfang der Auswertung | + | k Kurzauswertung | + +---------------------------+ + + + + + + + + + + + + +-------------------------------------------------------------------------- +Info:/ Wahl: Ausführen: Verlassen: +#off("b")# + +#on("u")##on("b")#u Umfang der Auswertung#off("b")##off("u")# + Mit dieser Menufunktion können Sie festle­ + gen, ob am Ende einer Protokollauswertung die + sogenannten 'Anmerkungen', die die Zusammen­ + hänge im Protokoll erläutern, jeweils mit aus­ + gegeben werden sollen oder nicht. Die hier + getroffene Festlegung gilt sowohl für die Aus­ + wertung auf dem Bildschirm als auch für den + Ausdruck über einen angeschlossenen Drucker. + Zum Verständnis der Auswertungen sind die + Anmerkungen sehr hilfreich. Hat man aber meh­ + rere Simulationsläufe absolviert, bei denen + der Wertungsschlüssel identisch ist, so wäre + es überflüssig, jeweils die Anmerkungen mit + ausgeben zu lassen. + Die aktuelle Einstellung (mit/ohne Anmer­ + kungen) wird im Fenster links oben angezeigt. + Im Fenster rechts oben wird die Frage ge­ + stellt, ob Sie eine Veränderung der Einstel­ + lung wünschen. Nur wenn Sie diese Frage beja­ + hen, wird die Einstellung verändert; ansonsten + gelangen Sie unter Beibehaltung der alten Ein­ + stellung ins Menu zurück. + +#on("u")##on("b")#k Kurzsauswertung#off("b")##off("u")# + Standardmäßig wird am Ende eines Simula­ + tionslaufes eine Kurzauswertung auf dem Bild­ + schirm ausgegeben. Wenn Sie diese überflüssig + finden oder wenn Sie es aus didaktischen Grün­ + den vorziehen, auf eine solche Kurzauswertung + zu verzichten, können Sie diese Kurzauswertung + durch diese Menufunktion ab- bzw. wieder ein­ + schalten. + Die hier getroffene Einstellung ist auch + gültig für anschließend eingerichtete Sohn­ + tasks - und zwar sowohl für das Teilprogramm + 'Bildschirmarbeitsplatz' als auch für das + Teilprogramm 'Materialprüfung'. + Die aktuelle Einstellung (mit/ohne Kurzaus­ + wertung) wird im Fenster links oben angezeigt. + Im Fenster rechts oben wird die Frage ge­ + stellt, ob Sie eine Veränderung der Einstel­ + lung wünschen. Nur wenn Sie diese Frage beja­ + hen, wird die Einstellung verändert; ansonsten + gelangen Sie unter Beibehaltung der alten Ein­ + stellung ins Menu zurück + +#page# +5.5 Menufunktionen zum Oberbegriff 'Dateien' + +#on("b")# +BAP: Simulation Parameter Konfiguration Dateien Archiv +------------------------------------+-------------------+----------------- + | v Verzeichnis | + | --------------- | + | l Löschen | + | d Drucken | + | --------------- | + | k Kopieren | + | u Umbenennen | + | --------------- | + | s Speicherplatz | + | a Aufräumen | + +-------------------+ + + + + + + + +-------------------------------------------------------------------------- +Info:/ Wahl: Ausführen: Verlassen: +#off("b")# + + Die einzelnen Menufunktionen zu diesem Oberbe­ +griff sind detailliert im Handbuch zum Programm +#on("b")#gs-DIALOG#off("b")# beschrieben und können dort nachgeschla­ +gen werden. An dieser Stelle seien nur einige Be­ +sonderheiten genannt, die hinsichtlich des Pro­ +grammsystems #on("b")#gs-MP BAP#off("b")# zutreffen: + Protokolldateien, die während eines Simulations­ +laufs angelegt werden, können Sie am Präfix 'gs- +Protokoll:' erkennen. Diese Protokolldateien können +#on("u")#nicht#off("u")# mit der in diesem Pull-Down-Menu angegebenen +Menufunktion 'd Drucken' über den Drucker ausge­ +druckt werden. Die Simulationsdaten sind in den +Protokolldateien nämlich in einem gesonderten For­ +mat aufgezeichnet, das vom Drucker nicht ausgewer­ +tet werden kann. + Für die Auswertung und den anschließenden Aus­ +druck dieser Protokolldateien ist die Menufunktion +'d Drucken von Auswertungen' unter dem Oberbegriff +'Simulation' bereitgestellt! + Sie können den Protokolldateien mit der Menu­ +funktion 'u Umbenennen' einen neuen Namen geben. +Achten Sie aber #on("u")#unbedingt(!)#off("u")# darauf, daß das Präfix +'gs-Protokoll:' bei der Umbenennung erhalten bleibt +- sonst wird die Datei nicht mehr als Protokollda­ +tei vom Auswertsystem erkannt! + Die eben angesprochenen Protokolldateien können +auch nicht mit der Menufunktion 'a Aufräumen' bear­ +beitet werden, da hier nur "normale" Textdateien +akzeptiert werden - im übrigen sind die Protokoll­ +dateien immer optimal organisiert. + +#page# +5.6 Menufunktionen zum Oberbegriff 'Archiv' + +#on("b")# +BAP: Simulation Parameter Konfiguration Dateien Archiv +------------------------------------------+-------------------------+----- + | r Reservieren | + | n Neue Diskette | + | --------------------- | + | s Schreiben | + | c Checken | + | k Kombination | + | h Holen/Lesen | + | l Löschen | + | --------------------- | + | v Verzeichnis | + | d Drucken | + | --------------------- | + | i Initialisieren | + | z Zieltask einstellen | + +---------------------+ +-------------------------+ + | Dateiaustausch mit: | + | Archiv | + | Archivname: | + | gs-MP BAP | + +---------------------+ +-------------------------------------------------------------------------- +Info:/ Wahl: Ausführen: Verlassen: +#off("b")# + + Die einzelnen Menufunktionen zu diesem Oberbe­ +griff sind detailliert im Handbuch zum Programm +#on("b")#gs-DIALOG#off("b")# beschrieben und können dort nachgeschla­ +gen werden. + + diff --git a/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 6 b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 6 new file mode 100644 index 0000000..7d485d7 --- /dev/null +++ b/app/gs.mp-bap/1.1/doc/A5 - Doku: gs-MP BAP - Kapitel 6 @@ -0,0 +1,53 @@ +#limit (11.0)##pagelength (16.5)##block##pageblock# +#start (2.0,0.0)# +#page (61)# +#headodd# +#center#gs-MP BAP#right#% + +#end# +#headeven# +%#center#gs-MP BAP + +#end# +#center#6 + +#center#Hinweise +#center#für den +#center#Systembetreuer + + + Für den Ausdruck von Protokollauswertungen ist +der Standardschrifttyp des Druckers voreingestellt. +Sie haben aber die Möglichkeit, einen anderen +Schrifttyp für den Protokollausdruck einzustellen. +Dafür sind die beiden folgenden Prozeduren vorbe­ +reitet: + +PROC druckereinstellung fuer protokolldatei + (TEXT CONST schrifttyp, REAL CONST linker + rand, oberer rand, schreibfeldbreite, + schreibfeldlaenge) + + Geben Sie einen in Ihrer Installation vorhan­ + denen Schrifttyp an. Beachten Sie bei der + Festlegung der anderen Maße (wie gewohnt in + cm), daß auf dem Schreibfeld 80 Druckpositio­ + nen nebeneinander Platz haben müssen! + + +PROC std druckereinstellung fuer protokolldatei + + Sie können mit diesem Befehl wieder die Ein­ + stellung vornehmen, die sonst standardmäßig + von #on("b")#gs-MP BAP#off("b")# vorgegeben wird: + + schrifttyp : "" (Standard- + schrifttyp) + linker rand : 0.0 (cm) + oberer rand : 0.0 (cm) + schreibfeldbreite : 21.0 (cm) + schreibfeldlaenge : 29.5 (cm) + + + + diff --git a/app/gs.mp-bap/1.1/doc/gs-MP BAP handbuch.impressum b/app/gs.mp-bap/1.1/doc/gs-MP BAP handbuch.impressum new file mode 100644 index 0000000..91c6ce0 --- /dev/null +++ b/app/gs.mp-bap/1.1/doc/gs-MP BAP handbuch.impressum @@ -0,0 +1,104 @@ +____________________________________________________________________________ + + +#on("b")##on ("u")# +#center#Betriebssystem E U M E L +#off ("u")# + + +#center#gs-MP BAP + + + + +#off("b")# +#center#Lizenzfreie Software der +#on ("b")# + +#center#Gesellschaft für Mathematik und Datenverarbeitung mbH, +#center#5205 Sankt Augustin + + +#off("b")# +#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich für +#center#nichtkommerzielle Zwecke gestattet. + +#center#Gewährleistung und Haftung werden ausgeschlossen + + +____________________________________________________________________________ +#page# + +#free (4.0)##on("b")# +#center#gs-MP BAP + + +#center#Benutzerhandbuch + + +#center#Version 1.0 + + +#off("b")##center#copyright +#center#Eva Latta-Weber +#center#Software- und Hardware-Systeme, 1988 +#center#ERGOS GmbH, 1990 +#page# +#block# +#center#____________________________________________________________________________ + + +Copyright:  ERGOS GmbH   März 1990 + + Alle Rechte vorbehalten. Insbesondere ist die Überführung in + maschinenlesbare Form sowie das Speichern in Informations­ + systemen, auch auszugsweise, nur mit schriftlicher Einwilligung + der ERGOS GmbH gestattet. + + +#center#____________________________________________________________________________ + +Es kann keine Gewähr übernommen werden, daß das Programm für eine +bestimmte Anwendung geeignet ist. Die Verantwortung dafür liegt beim +Anwender. + +Das Handbuch wurde mit größter Sorgfalt erstellt. Für die Korrektheit und +Vollständigkeit der Angaben kann keine Gewähr übernommen werden. Das +Handbuch kann jederzeit ohne Ankündigung geändert werden. + +Texterstellung :  Dieser Text wurde mit der ERGOS-L3 Textverarbeitung + erstellt und aufbereitet und auf einem Kyocera Laser­ + drucker gedruckt. + + + + +#center#___________________________________________________________________________ + + + +Ergonomic Office Software GmbH + +Bergstr. 7 Telefon: (02241) 63075 +5200 Siegburg Teletex: 2627-2241413=ERGOS + Telefax: (02241) 63078 + + +#center#____________________________________________________________________________ + + + + + + + + + + + + + + + + + diff --git a/app/gs.mp-bap/1.1/source-disk b/app/gs.mp-bap/1.1/source-disk new file mode 100644 index 0000000..1732e99 --- /dev/null +++ b/app/gs.mp-bap/1.1/source-disk @@ -0,0 +1 @@ +informatikpaket/07_gs.mp-bap.img diff --git a/app/gs.mp-bap/1.1/src/ls-MENUKARTE:MP-BAP b/app/gs.mp-bap/1.1/src/ls-MENUKARTE:MP-BAP new file mode 100644 index 0000000..564b07c Binary files /dev/null and b/app/gs.mp-bap/1.1/src/ls-MENUKARTE:MP-BAP differ diff --git a/app/gs.mp-bap/1.1/src/ls-MP BAP 1 b/app/gs.mp-bap/1.1/src/ls-MP BAP 1 new file mode 100644 index 0000000..be7e3d2 --- /dev/null +++ b/app/gs.mp-bap/1.1/src/ls-MP BAP 1 @@ -0,0 +1,119 @@ +PACKET ls mp bap 1 DEFINES (*******************************) + (* *) + stdvoreinstellung der parameter, (* ls-MP BAP 1 *) + werkstueckdefinition, (* Version 1.1 *) + tastendefinition, (* *) + phasendefinition, (* (c) 1987, 1988 *) + bewertungsschluessel, (* by Eva Latta-Weber *) + werkstueckaufhaenger, (* Bielefeld *) + tastenbezeichnung, (* *) + piepse, (*******************************) + + mp bap einstellung anzeigen, + mp bap standardwerte, + mp bap breite des werkstuecks, + mp bap hoehe des werkstuecks, + mp bap invers normal, + mp bap zeichensatz, + mp bap fehlerzeichen, + mp bap tastenbelegung, + mp bap anzahl arbeitsphasen, + mp bap dauer einer arbeitsphase, + mp bap pausendauer, + mp bap wertungsschluessel: + +LET maxspalten = 70,{} maxzeilen = 14,{} kleinster wert = 1,{} oben unten return = ""3""10""13"",{} punkt = "+",{} punkt und zurueck = "+"8"",{} piep = ""7"",{} blank = " ";{}INT VAR aktuelle werkstueckbreite,{} aktuelle werkstueckhoehe,{} kleinster aktueller zeichencode,{} groesster aktueller zeichencode,{} aktuelle anzahl der arbeitsphasen,{} + aktuelle arbeitsphasendauer in minuten,{} aktuelle pausendauer in minuten;{}TEXT VAR aktuelles fehlerzeichen,{} nach rechts,{} nach links,{} nach oben,{} nach unten,{} ausbesserung,{} naechstes;{}BOOL VAR inversdarstellung;{}ROW 11 REAL VAR bewertung;{}WINDOW VAR w1, w2, w3, w4;{}PROC stdvoreinstellung der parameter:{} aktuelle werkstueckbreite := 15;{} aktuelle werkstueckhoehe := 12;{} kleinster aktueller zeichencode := 65;{} + groesster aktueller zeichencode := 90;{} aktuelle anzahl der arbeitsphasen := 3;{} aktuelle arbeitsphasendauer in minuten := 10;{} aktuelle pausendauer in minuten := 2;{} aktuelles fehlerzeichen := "F";{} nach rechts := ""2"";{} nach links := ""8"";{} nach oben := ""3"";{} nach unten := ""10"";{} ausbesserung := ""1"";{} + naechstes := ""27"";{} inversdarstellung := FALSE;{} bewertung := ROW 11 REAL : (0.0, 0.1, 0.2, 0.3, 0.4, 0.5,{} 0.6, 0.7, 0.8, 0.9, 1.0){}END PROC stdvoreinstellung der parameter;{}PROC werkstueckdefinition (INT VAR breite, hoehe, kleinster, groesster,{} TEXT VAR fzeichen, BOOL VAR invers):{} breite := aktuelle werkstueckbreite;{} hoehe := aktuelle werkstueckhoehe;{} + kleinster := kleinster aktueller zeichencode;{} groesster := groesster aktueller zeichencode;{} fzeichen := aktuelles fehlerzeichen;{} invers := inversdarstellung{}END PROC werkstueckdefinition;{}PROC tastendefinition (TEXT VAR rechts, links, hoch, runter, aus, nach):{} rechts := nach rechts;{} links := nach links;{} hoch := nach oben;{} runter := nach unten;{} aus := ausbesserung;{} nach := naechstes{}END PROC tastendefinition;{} +PROC phasendefinition (INT VAR aphasenzahl, aphasendauer, pausendauer):{} aphasenzahl := aktuelle anzahl der arbeitsphasen;{} aphasendauer := aktuelle arbeitsphasendauer in minuten;{} pausendauer := aktuelle pausendauer in minuten{}END PROC phasendefinition;{}PROC bewertungsschluessel (ROW 11 REAL VAR schluessel):{} INT VAR zeiger;{} FOR zeiger FROM 1 UPTO 11 REP{} schluessel [zeiger] := bewertung [zeiger]{} PER{}END PROC bewertungsschluessel;{}PROC mp bap einstellung anzeigen:{} aktuellen parameterzustand anzeigen;{} + regenerate menuscreen{}END PROC mp bap einstellung anzeigen;{}PROC mp bap standardwerte:{} standardwerte einstellen;{} regenerate menuscreen{}END PROC mp bap standardwerte;{}PROC mp bap breite des werkstuecks:{} breite des werkstuecks einstellen;{} regenerate menuscreen{}END PROC mp bap breite des werkstuecks;{}PROC mp bap hoehe des werkstuecks:{} hoehe des werkstuecks einstellen;{} regenerate menuscreen{}END PROC mp bap hoehe des werkstuecks;{}PROC mp bap invers normal:{} werkstueckdarstellung einstellen;{} + regenerate menuscreen{}END PROC mp bap invers normal;{}PROC mp bap zeichensatz:{} zeichensatz einstellen;{} regenerate menuscreen{}END PROC mp bap zeichensatz;{}PROC mp bap fehlerzeichen:{} fehlerzeichen veraendern;{} regenerate menuscreen{}END PROC mp bap fehlerzeichen;{}PROC mp bap tastenbelegung:{} tastaturbelegung einstellen;{} regenerate menuscreen{}END PROC mp bap tastenbelegung;{}PROC mp bap anzahl arbeitsphasen:{} anzahl der arbeitsphasen festlegen;{} regenerate menuscreen{}END PROC mp bap anzahl arbeitsphasen;{} +PROC mp bap dauer einer arbeitsphase:{} dauer einer arbeitsphase festlegen;{} regenerate menuscreen{}END PROC mp bap dauer einer arbeitsphase;{}PROC mp bap pausendauer:{} pausendauer festlegen;{} regenerate menuscreen{}END PROC mp bap pausendauer;{}PROC mp bap wertungsschluessel:{} wertungsschluessel veraendern;{} regenerate menuscreen{}END PROC mp bap wertungsschluessel;{}PROC aktuellen parameterzustand anzeigen:{} zeige die fenster;{} fuelle die fenster mit inhalt;{} gib hinweis aus.{} + zeige die fenster:{} w1 := window ( 2, 2, 37, 20);{} w2 := window (41, 2, 38, 20);{} w3 := window ( 1, 1, 79, 24);{} page; show (w1); show (w2).{} fuelle die fenster mit inhalt:{} zeige inhalt fenster 1;{} zeige inhalt fenster 2.{} zeige inhalt fenster 1:{} zeige eingestellte parameter an (w1).{} zeige inhalt fenster 2:{} gib bewertungsschluessel aus (w2).{} gib hinweis aus:{} out footnote (w3, anwendungstext (2)); pause.{}END PROC aktuellen parameterzustand anzeigen;{} +PROC zeige eingestellte parameter an (WINDOW VAR w):{} zeige ueberschrift;{} zeige werkstueckdefinition;{} zeige tastenbelegung;{} zeige simulationszeiten.{} zeige ueberschrift:{} cursor (w, 1, 1); out (w, center (w, invers (anwendungstext ( 1)))).{} zeige werkstueckdefinition:{} cursor (w, 2, 3); out (w, anwendungstext ( 6));{} out (w, text (aktuelle werkstueckbreite, 3));{} out (w, anwendungstext (28));{} cursor (w, 2, 4); out (w, anwendungstext ( 7));{} + out (w, text (aktuelle werkstueckhoehe, 3));{} out (w, anwendungstext (28));{} cursor (w, 2, 5); out (w, anwendungstext ( 8));{} IF inversdarstellung{} THEN out (w, anwendungstext (29)){} ELSE out (w, anwendungstext (30)){} FI;{} cursor (w, 2, 6); out (w, anwendungstext ( 9));{} out (w, zeichensatz);{} cursor (w, 2, 7); out (w, anwendungstext (10));{} + out (blank + aktuelles fehlerzeichen).{} zeige tastenbelegung:{} cursor (w, 2, 9); out (w, anwendungstext (11));{} out (w, tastenbezeichnung (nach rechts));{} cursor (w, 2, 10); out (w, anwendungstext (12));{} out (w, tastenbezeichnung (nach links));{} cursor (w, 2, 11); out (w, anwendungstext (13));{} out (w, tastenbezeichnung (nach oben));{} cursor (w, 2, 12); out (w, anwendungstext (14));{} out (w, tastenbezeichnung (nach unten));{} + cursor (w, 2, 13); out (w, anwendungstext (15));{} out (w, tastenbezeichnung (ausbesserung));{} cursor (w, 2, 14); out (w, anwendungstext (16));{} out (w, tastenbezeichnung (naechstes)).{} zeige simulationszeiten:{} cursor (w, 2, 16); out (w, anwendungstext (17));{} out (w, text (aktuelle anzahl der arbeitsphasen, 4));{} cursor (w, 2, 17); out (w, anwendungstext (18));{} out (w, text (aktuelle arbeitsphasendauer in minuten, 4));{} + out (w, anwendungstext (51));{} cursor (w, 2, 18); out (w, anwendungstext (19));{} out (w, text (aktuelle pausendauer in minuten, 4));{} out (w, anwendungstext (51));{} cursor (w, 2, 20); out (w, anwendungstext ( 5));{} out (w, gesamtdauerangabe).{} zeichensatz:{} blank + code (kleinster aktueller zeichencode) + "..." +{} code (groesster aktueller zeichencode) + " (" +{} text (groesster aktueller zeichencode{} + - kleinster aktueller zeichencode + 1, 2) +{} anwendungstext (28) + ")".{} gesamtdauerangabe:{} text ( arbeitsdauer + pausendauer, 4) + anwendungstext (51).{} arbeitsdauer:{} aktuelle anzahl der arbeitsphasen{} * aktuelle arbeitsphasendauer in minuten.{} pausendauer:{} (aktuelle anzahl der arbeitsphasen - 1){} * aktuelle pausendauer in minuten.{}END PROC zeige eingestellte parameter an;{}PROC gib bewertungsschluessel aus (WINDOW VAR w):{} zeichne koordinatenkreuz;{} + trage messwerte ein.{} zeichne koordinatenkreuz:{} cursor (w, 1, 1); out (w, center (w, invers (anwendungstext ( 4))));{} cursor (w, 2, 3); out (w, anwendungstext (20));{} cursor (w, 2, 4); out (w, anwendungstext (21));{} cursor (w, 2, 6); out (w, anwendungstext (23));{} cursor (w, 2, 7); out (w, anwendungstext (22));{} cursor (w, 2, 8); out (w, anwendungstext (22));{} cursor (w, 2, 9); out (w, anwendungstext (22));{} cursor (w, 2, 10); out (w, anwendungstext (22));{} + cursor (w, 2, 11); out (w, anwendungstext (24));{} cursor (w, 2, 12); out (w, anwendungstext (22));{} cursor (w, 2, 13); out (w, anwendungstext (22));{} cursor (w, 2, 14); out (w, anwendungstext (22));{} cursor (w, 2, 15); out (w, anwendungstext (22));{} cursor (w, 2, 16); out (w, anwendungstext (25));{} cursor (w, 2, 17); out (w, anwendungstext (26));{} cursor (w, 2, 19); out (w, anwendungstext (27)).{} trage messwerte ein:{} INT CONST abszisse :: 16, ordinate :: 2;{} + INT VAR nr;{} FOR nr FROM 1 UPTO 11 REP{} zeichne einen punkt{} PER.{} zeichne einen punkt:{} cursor (w, ordinate + 3 * nr, abszisse - nachkommastelle); out (punkt).{} nachkommastelle:{} int(bewertung [nr] * 10.0).{}END PROC gib bewertungsschluessel aus;{}PROC standardwerte einstellen:{} zeige fenster;{} zeige eingestellte parameter an (w1);{} gib information aus;{} hole bestaetigung ein.{} zeige fenster:{} w1 := window ( 2, 2, 37, 20);{} w2 := window (41, 10, 37, 12);{} + w3 := window (41, 2, 37, 6);{} page; show (w1); show (w2); show (w3).{} gib information aus:{} cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (52))));{} cursor (w2, 2, 3); out (w2, anwendungstext (67));{} cursor (w2, 2, 4); out (w2, anwendungstext (68));{} cursor (w2, 2, 7); out (w2, anwendungstext (69));{} cursor (w2, 2, 9); out (w2, anwendungstext (70));{} cursor (w2, 2,10); out (w2, anwendungstext (71));{} cursor (w2, 2,11); out (w2, anwendungstext (72));{} + cursor (w2, 2,12); out (w2, anwendungstext (73)).{} hole bestaetigung ein:{} cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (66))));{} cursor (w3, 2, 3);{} IF yes (w3, anwendungstext (66)){} THEN stdvoreinstellung der parameter;{} gib positive rueckmeldung{} FI.{} gib positive rueckmeldung:{} page (w1);{} zeige eingestellte parameter an (w1);{} cleop (w3, 2, 3); out (anwendungstext (221));{} cursor (w3, 2, 5); out (anwendungstext ( 3));{} + pause.{}END PROC standardwerte einstellen;{}PROC breite des werkstuecks einstellen:{} zeige die fenster;{} hinweise an den benutzer ausgeben;{} werkstueck zeigen (w3);{} erfrage veraenderung;{} REP{} neuen wert vom bildschirm holen{} UNTIL benutzer ist einverstanden PER.{} zeige die fenster:{} w1 := window ( 2, 2, 26, 6);{} w2 := window (30, 2, 48, 6);{} w3 := window (2, 9, 77, 16);{} page; show (w1); show (w2).{} hinweise an den benutzer ausgeben:{} cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52))));{} + cursor (w1, 2, 3); out (w1, anwendungstext (53));{} out (w1, text (kleinster wert, 3));{} cursor (w1, 2, 4); out (w1, anwendungstext (54));{} out (w1, text (maxspalten, 3));{} cursor (w1, 2, 6); out (w1, anwendungstext (55));{} out (w1, text (aktuelle werkstueckbreite, 3)).{} erfrage veraenderung:{} cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (57))));{} cursor (w2, 2, 3);{} IF no (anwendungstext (216)){} + THEN LEAVE breite des werkstuecks einstellen{} FI.{} neuen wert vom bildschirm holen:{} cleop (w2, 2, 3); out (w2, anwendungstext (58));{} cursor (w2, 2, 4); out (w2, anwendungstext (59));{} cursor (w2, 2, 6); out (w2, anwendungstext (60));{} aktuelle werkstueckbreite := ermittelter wert (1, maxspalten,{} aktuelle werkstueckbreite).{} benutzer ist einverstanden :{} gib aktuelle infos aus;{} hole bestaetigung.{} gib aktuelle infos aus:{} + hinweise an den benutzer ausgeben;{} werkstueck zeigen (w3);{} cleop (w2, 1, 3).{} hole bestaetigung:{} cursor (w2, 2, 3);{} IF yes (w2, anwendungstext (62)){} THEN TRUE{} ELSE FALSE{} FI.{}END PROC breite des werkstuecks einstellen;{}PROC hoehe des werkstuecks einstellen:{} fenster zeigen;{} hinweise an den benutzer ausgeben;{} werkstueck zeigen (w3);{} erfrage veraenderung;{} REP{} neuen wert vom bildschirm holen{} UNTIL benutzer ist einverstanden PER.{} + fenster zeigen:{} w1 := window ( 2, 2, 26, 6);{} w2 := window (30, 2, 48, 6);{} w3 := window (2, 9, 77, 16);{} page; show (w1); show (w2).{} hinweise an den benutzer ausgeben:{} cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52))));{} cursor (w1, 2, 3); out (w1, anwendungstext (53));{} out (w1, text (kleinster wert, 3));{} cursor (w1, 2, 4); out (w1, anwendungstext (54));{} out (w1, text (maxzeilen, 3));{} cursor (w1, 2, 6); out (w1, anwendungstext (55));{} + out (w1, text (aktuelle werkstueckhoehe, 3)).{} erfrage veraenderung:{} cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (63))));{} cursor (w2, 2, 3);{} IF no (anwendungstext (217)){} THEN LEAVE hoehe des werkstuecks einstellen{} FI.{} neuen wert vom bildschirm holen:{} cleop (w2, 2, 3); out (w2, anwendungstext (58));{} cursor (w2, 2, 4); out (w2, anwendungstext (59));{} cursor (w2, 2, 6); out (w2, anwendungstext (64));{} aktuelle werkstueckhoehe := ermittelter wert (1, maxzeilen,{} + aktuelle werkstueckhoehe).{} benutzer ist einverstanden :{} gib aktuelle infos aus;{} hole bestaetigung.{} gib aktuelle infos aus:{} hinweise an den benutzer ausgeben;{} werkstueck zeigen (w3);{} cleop (w2, 1, 3).{} hole bestaetigung:{} cursor (w2, 2, 3);{} IF yes (w2, anwendungstext (65)){} THEN TRUE{} ELSE FALSE{} FI.{}END PROC hoehe des werkstuecks einstellen;{}PROC werkstueckdarstellung einstellen:{} fenster zeigen;{} + hinweise an den benutzer ausgeben;{} werkstueck zeigen (w3);{} REP{} bestaetigung einholen;{} hinweise an den benutzer ausgeben;{} werkstueck zeigen (w3){} UNTIL benutzer ist einverstanden PER.{} fenster zeigen:{} w1 := window ( 2, 2, 28, 6);{} w2 := window (32, 2, 46, 6);{} w3 := window ( 2, 9, 77, 16);{} page; show (w1); show (w2).{} hinweise an den benutzer ausgeben:{} cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52))));{} cursor (w1, 2, 3); out (w1, anwendungstext (74));{} + out (w1, anwendungstext (76));{} cursor (w1, 2, 4); out (w1, anwendungstext (74));{} out (w1, anwendungstext (77));{} cursor (w1, 2, 6); out (w1, anwendungstext (75));{} IF inversdarstellung{} THEN out (w1, anwendungstext (77)){} ELSE out (w1, anwendungstext (76)){} FI.{} bestaetigung einholen:{} page (w2);{} cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (89))));{} + cursor (w2, 2, 3);{} IF yes (w2, anwendungstext (78)){} THEN veraendere darstellungsart{} ELSE LEAVE werkstueckdarstellung einstellen{} FI.{} veraendere darstellungsart:{} IF inversdarstellung{} THEN inversdarstellung := FALSE{} ELSE inversdarstellung := TRUE{} FI.{} benutzer ist einverstanden:{} cleop (w2, 1, 3);{} cursor (w2, 2, 3);{} IF yes (w2, anwendungstext (99)){} THEN TRUE{} ELSE FALSE{} FI.{}END PROC werkstueckdarstellung einstellen;{} +PROC zeichensatz einstellen:{} zeige fenster;{} gib eingestellten zeichensatz an;{} gib bedienhinweise aus;{} erfrage neueinstellung;{} REP{} erfrage das neue fehlerzeichen;{} ermittle das kleinste zeichen;{} ermittle das groesste zeichen;{} page (w1);{} gib eingestellten zeichensatz an{} UNTIL benutzer ist einverstanden PER.{} zeige fenster:{} w1 := window ( 2, 2, 28, 22);{} w2 := window (32, 10, 46, 14);{} w3 := window (32, 2, 46, 6);{} page; show (w1); show (w2); show (w3).{} + gib eingestellten zeichensatz an:{} cursor (w1, 1, 1);{} out (w1, center (w1, invers (anwendungstext (79))));{} gib zeichenkette aus (w1, kleinster aktueller zeichencode,{} groesster aktueller zeichencode,{} code (aktuelles fehlerzeichen)).{} gib bedienhinweise aus:{} cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (52))));{} cursor (w2, 2, 3); out (w2, anwendungstext (80));{} cursor (w2, 2, 4); out (w2, anwendungstext (81));{} + cursor (w2, 2, 5); out (w2, anwendungstext (82));{} cursor (w2, 2, 6); out (w2, anwendungstext (83));{} cursor (w2, 2, 8); out (w2, anwendungstext (84));{} cursor (w2, 2, 9); out (w2, anwendungstext (85));{} cursor (w2, 2,10); out (w2, anwendungstext (86));{} cursor (w2, 2,12); out (w2, anwendungstext (87));{} cursor (w2, 2,13); out (w2, anwendungstext (88)).{} erfrage neueinstellung:{} cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (90))));{} cursor (w3, 2, 3);{} + IF no (w3, anwendungstext (91)){} THEN LEAVE zeichensatz einstellen{} FI.{} erfrage das neue fehlerzeichen:{} gib vollstaendigen zeichensatz aus;{} gib fehlerzeicheninformationen aus;{} REP{} lasse fehlerzeichen eingeben{} UNTIL fehlerzeichen ist ok PER.{} gib vollstaendigen zeichensatz aus:{} page (w1); page (w2); page (w3);{} cursor (w1, 1, 1);{} out (w1, center (w1, invers (anwendungstext (92))));{} gib zeichenkette aus (w1, 33, 126, 0).{} gib fehlerzeicheninformationen aus:{} + cursor (w2, 1, 1);{} out (w2, center (w2, invers (anwendungstext (52))));{} cursor (w2, 2, 3); out (w2, anwendungstext (95));{} cursor (w2, 2, 4); out (w2, anwendungstext (96));{} cursor (w2, 2, 6); out (w2, anwendungstext (97)).{} lasse fehlerzeichen eingeben:{} cursor (w3, 1, 1);{} out (w3, center (w3, invers (anwendungstext (100))));{} cursor (w3, 2, 3);{} out (w3, anwendungstext (101));{} cursor on; inchar (aktuelles fehlerzeichen); cursor off;{} IF fehlerzeichen ist ok{} + THEN out (w3, aktuelles fehlerzeichen);{} markiere das fehlerzeichen im ersten fenster;{} ELSE lege beschwerde ein{} FI.{} fehlerzeichen ist ok:{} code (aktuelles fehlerzeichen) >= 33{} AND code (aktuelles fehlerzeichen) <= 126.{} markiere das fehlerzeichen im ersten fenster:{} positioniere cursor in zeichenkette (w1, 33, code (aktuelles fehlerzeichen));{} out (w1, invers (aktuelles fehlerzeichen)).{} lege beschwerde ein:{} piepse;{} cursor (w2, 2, 8); out (w2, anwendungstext (102));{} + cursor (w2, 2,10); out (w2, anwendungstext (103));{} cursor (w2, 2,11); out (w2, anwendungstext (104));{} cursor (w2, 2,12); out (w2, anwendungstext (105));{} cursor (w2, 2,13); out (w2, anwendungstext (106));{} cursor (w2, 2,14); out (w2, anwendungstext (107)).{} ermittle das kleinste zeichen:{} page (w2); page (w3);{} gib kleinste zeichencode informationen aus;{} lasse den vorbereich festlegen.{} ermittle das groesste zeichen:{} lasse den nachbereich festlegen.{} gib kleinste zeichencode informationen aus:{} + cursor (w2, 1, 1);{} out (w2, center (w2, invers (anwendungstext (52))));{} cursor (w2, 2, 3); out (w2, anwendungstext (111));{} cursor (w2, 2, 4); out (w2, anwendungstext (112));{} cursor (w2, 2, 5); out (w2, anwendungstext (113));{} cursor (w2, 2, 6); out (w2, anwendungstext (114));{} cursor (w2, 2, 8); out (w2, anwendungstext (115));{} cursor (w2, 2, 9); out (w2, anwendungstext (116));{} cursor (w2, 2,10); out (w2, anwendungstext (117));{} cursor (w2, 2,11); out (w2, anwendungstext (118));{} + cursor (w2, 2,13); out (w2, anwendungstext (119));{} cursor (w2, 2,14); out (w2, anwendungstext (120)).{} lasse den vorbereich festlegen:{} INT VAR s, z; page (w3); cursor (w3, 1, 1);{} out (w3, center (w3, invers (anwendungstext (121))));{} cursor (w3, 2, 3); out (w3, anwendungstext (122));{} cursor (w3, 2, 4); out (w3, anwendungstext (123));{} cursor (w3, 2, 5); out (w3, anwendungstext (125));{} get cursor (s, z); cursor on;{} kleinster aktueller zeichencode := code (aktuelles fehlerzeichen);{} + groesster aktueller zeichencode := code (aktuelles fehlerzeichen);{} kleinster aktueller zeichencode := eingabe mit intervallanzeige ( w1, 33,{} code (aktuelles fehlerzeichen),{} kleinster aktueller zeichencode, s, z);{} cursor off.{} lasse den nachbereich festlegen:{} cursor (w3, 1, 1);{} out (w3, center (w3, invers (anwendungstext (121))));{} cursor (w3, 2, 3); out (w3, anwendungstext (122));{} cursor (w3, 2, 4); out (w3, anwendungstext (124));{} + cursor (w3, 2, 5); out (w3, anwendungstext (125));{} get cursor (s, z); cursor on;{} groesster aktueller zeichencode := eingabe mit intervallanzeige ( w1,{} code (aktuelles fehlerzeichen), 126,{} groesster aktueller zeichencode, s, z);{} cursor off.{} benutzer ist einverstanden:{} page (w3); cursor (w3, 1, 1);{} out (w3, center (w3, invers (anwendungstext (90))));{} cursor (w3, 2, 3);{} IF yes (w3, anwendungstext (126)){} + THEN TRUE{} ELSE FALSE{} FI.{}END PROC zeichensatz einstellen;{}PROC fehlerzeichen veraendern:{} fenster zeigen;{} gib eingestellten zeichensatz an;{} gib bedienhinweise aus;{} erfrage neueinstellung;{} REP{} lasse fehlerzeichen einstellen{} UNTIL benutzer ist einverstanden PER.{} fenster zeigen:{} w1 := window ( 2, 2, 28, 22);{} w2 := window (32, 10, 46, 14);{} w3 := window (32, 2, 46, 6);{} page; show (w1); show (w2); show (w3).{} gib eingestellten zeichensatz an:{} + cursor (w1, 1, 1);{} out (w1, center (w1, invers (anwendungstext (79))));{} gib zeichenkette aus (w1, kleinster aktueller zeichencode,{} groesster aktueller zeichencode,{} code (aktuelles fehlerzeichen)).{} gib bedienhinweise aus:{} cursor (w2, 1, 1);{} out (w2, center (w2, invers (anwendungstext (52))));{} cursor (w2, 2, 3); out (w2, anwendungstext (131));{} cursor (w2, 2, 4); out (w2, anwendungstext (132));{} cursor (w2, 2, 5); out (w2, anwendungstext (133));{} + cursor (w2, 2, 7); out (w2, anwendungstext (134));{} cursor (w2, 2, 8); out (w2, anwendungstext (135));{} cursor (w2, 2, 9); out (w2, anwendungstext (136)).{} erfrage neueinstellung:{} cursor (w3, 1, 1);{} out (w3, center (w3, invers (anwendungstext (130))));{} cursor (w3, 2, 3);{} IF no (w3, anwendungstext (137)){} THEN LEAVE fehlerzeichen veraendern{} FI.{} lasse fehlerzeichen einstellen:{} INT VAR s, z, fehlercode :: code (aktuelles fehlerzeichen);{} page (w3); cursor (w3, 1, 1);{} + out (w3, center (w3, invers (anwendungstext (138))));{} cursor (w3, 2, 3); out (w3, anwendungstext (139));{} cursor (w3, 2, 4); out (w3, anwendungstext (140));{} cursor (w3, 2, 5); out (w3, anwendungstext (141));{} get cursor (s, z); cursor on;{} fehlercode := eingabe mit elementanzeige (w1,{} kleinster aktueller zeichencode,{} groesster aktueller zeichencode,{} fehlercode, s, z);{} + cursor off;{} aktuelles fehlerzeichen := code (fehlercode).{} benutzer ist einverstanden:{} page (w3); cursor (w3, 1, 1);{} out (w3, center (w3, invers (anwendungstext (130))));{} cursor (w3, 2, 3);{} IF yes (w3, anwendungstext (142)){} THEN TRUE{} ELSE FALSE{} FI.{}END PROC fehlerzeichen veraendern;{}PROC tastaturbelegung einstellen:{} ROW 6 TEXT VAR tastenname, taste;{} fenster zeigen;{} REP{} tastaturneubelegung vornehmen{} UNTIL benutzer ist einverstanden PER.{} + fenster zeigen:{} w1 := window ( 2, 2, 28, 10);{} w2 := window ( 2, 14, 28, 10);{} w3 := window (32, 10, 46, 14);{} w4 := window (32, 2, 46, 6);{} page; show (w1); show (w2); show (w3); show (w4).{} tastaturneubelegung vornehmen:{} alte tastenbelegung einlesen;{} tastenbelegung anzeigen;{} bedienhinweise ausgeben;{} veraenderung erfragen;{} neue tastenbelegung erfragen;{} hinweis zur bewertung und stand ausgeben.{} alte tastenbelegung einlesen:{} INT VAR z1;{} + FOR z1 FROM 1 UPTO 6 REP{} tastenname [z1] := anwendungstext (z1 + 10){} PER;{} taste [1] := nach rechts;{} taste [2] := nach links;{} taste [3] := nach oben;{} taste [4] := nach unten;{} taste [5] := ausbesserung;{} taste [6] := naechstes;{} cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (151)))).{} tastenbelegung anzeigen:{} INT VAR cspa, czei;{} cursor (w1, 2, 3); out (w1, tastenname [1]);{} out (w1, tastenbezeichnung (taste [1]));{} + get cursor (w1, cspa, czei); cleol (w1, cspa, czei);{} cursor (w1, 2, 4); out (w1, tastenname [2]);{} out (w1, tastenbezeichnung (taste [2]));{} get cursor (w1, cspa, czei); cleol (w1, cspa, czei);{} cursor (w1, 2, 5); out (w1, tastenname [3]);{} out (w1, tastenbezeichnung (taste [3]));{} get cursor (w1, cspa, czei); cleol (w1, cspa, czei);{} cursor (w1, 2, 6); out (w1, tastenname [4]);{} + out (w1, tastenbezeichnung (taste [4]));{} get cursor (w1, cspa, czei); cleol (w1, cspa, czei);{} cursor (w1, 2, 8); out (w1, tastenname [5]);{} out (w1, tastenbezeichnung (taste [5]));{} get cursor (w1, cspa, czei); cleol (w1, cspa, czei);{} cursor (w1, 2,10); out (w1, tastenname [6]);{} out (w1, tastenbezeichnung (taste [6]));{} get cursor (w1, cspa, czei); cleol (w1, cspa, czei).{} + bedienhinweise ausgeben:{} cursor (w2, 1, 1); out (center (w2, invers (anwendungstext (152))));{} cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (52))));{} cursor (w3, 2, 3); out (w3, anwendungstext (153));{} cursor (w3, 2, 4); out (w3, anwendungstext (154));{} cursor (w3, 2, 6); out (w3, anwendungstext (155));{} cursor (w3, 2, 7); out (w3, anwendungstext (156));{} cursor (w3, 2, 8); out (w3, anwendungstext (157));{} cursor (w3, 2, 9); out (w3, anwendungstext (158));{} + cursor (w3, 2,11); out (w3, anwendungstext (159));{} cursor (w3, 2,12); out (w3, anwendungstext (160));{} cursor (w3, 2,13); out (w3, anwendungstext (161));{} cursor (w3, 2,14); out (w3, anwendungstext (162)).{} veraenderung erfragen:{} cursor (w4, 1, 1); out (w4, center (w4, invers (anwendungstext (163))));{} cursor (w4, 2, 3);{} IF no (w4, anwendungstext (164)){} THEN LEAVE tastaturbelegung einstellen{} FI.{} neue tastenbelegung erfragen:{} INT VAR z2; page (w4);{} + cursor (w4, 1, 1); out (w4, center (w4, invers (anwendungstext (163))));{} cursor (w4, 2, 3); out (w4, anwendungstext (165));{} FOR z2 FROM 1 UPTO 6 REP{} gib tastenhinweis;{} hole tastatureingabe;{} tastenbelegung anzeigen{} PER.{} gib tastenhinweis:{} cleol (w4, 2, 5); out (w4, tastenname [z2]).{} hole tastatureingabe:{} INT VAR s, z; get cursor (w4, s, z);{} cursor on; inchar (taste [z2]); cursor off;{} cursor (w4, s, z); out (w4, tastenbezeichnung (taste [z2])).{} + hinweis zur bewertung und stand ausgeben:{} IF neue tastenbelegung ist ok{} THEN akzeptiere{} ELSE akzeptiere nicht{} FI.{} neue tastenbelegung ist ok:{} INT VAR zeiger; TEXT VAR tastenkette :: "";{} FOR zeiger FROM 1 UPTO 6 REP{} IF pos (tastenkette, taste [zeiger]) > 0{} THEN LEAVE neue tastenbelegung ist ok WITH FALSE{} ELSE tastenkette CAT taste [zeiger]{} FI{} PER;{} TRUE.{} akzeptiere:{} cursor (w2, 3, 4);{} out (w2, anwendungstext (166));{} + cursor (w2, 7, 6);{} out (w2, anwendungstext (167)).{} akzeptiere nicht:{} cursor (w2, 3, 3); out (w2, anwendungstext (168));{} cursor (w2, 3, 4); out (w2, anwendungstext (169));{} cursor (w2, 3, 6); out (w2, anwendungstext (170));{} cursor (w2, 3, 7); out (w2, anwendungstext (171));{} cursor (w2, 3, 9); out (w2, anwendungstext (172));{} cursor (w2, 5,10); out (w2, anwendungstext (173)).{} benutzer ist einverstanden:{} page (w4);{} cursor (w4, 1, 1); out (w4, center (w4, invers (anwendungstext (163))));{} + IF neue tastenbelegung ist ok{} THEN gib hinweis auf abspeicherung{} ELSE frage nach neueingabe{} FI.{} gib hinweis auf abspeicherung:{} cursor (w4, 3, 3); out (w4, anwendungstext (174));{} neue tastenbelegung festschreiben;{} cursor (w4, 3, 5); out (w4, anwendungstext ( 2));{} cursor on; pause; cursor off;{} TRUE.{} neue tastenbelegung festschreiben:{} nach rechts := taste [1];{} nach links := taste [2];{} nach oben := taste [3];{} nach unten := taste [4];{} + ausbesserung := taste [5];{} naechstes := taste [6].{} frage nach neueingabe:{} cursor (w4, 2, 3);{} IF yes (w4, anwendungstext (175)){} THEN cleop (w2, 1, 3); FALSE{} ELSE alte tastenbelegung einlesen;{} tastenbelegung anzeigen;{} cleop (w4, 2, 3); out (w4, anwendungstext (176));{} cursor (w4, 3, 5); out (w4, anwendungstext ( 2));{} cursor on; pause; cursor off;{} TRUE{} FI.{}END PROC tastaturbelegung einstellen;{} +PROC simulationszeiten anzeigen (WINDOW VAR w):{} cursor (w, 1, 1); out (w, center (w, invers (anwendungstext (181))));{} cursor (w, 2, 3); out (w, anwendungstext (17));{} out (w, text (aktuelle anzahl der arbeitsphasen, 4));{} cursor (w, 2, 4); out (w, anwendungstext (18));{} out (w, text (aktuelle arbeitsphasendauer in minuten, 4));{} out (w, anwendungstext (51));{} cursor (w, 2, 5); out (w, anwendungstext (19));{} out (w, text (aktuelle pausendauer in minuten, 4));{} + out (w, anwendungstext (51));{} cursor (w, 2, 7); out (w, anwendungstext ( 5));{} out (w, gesamtdauerangabe).{} gesamtdauerangabe:{} text ( arbeitsdauer + pausendauer, 4) + anwendungstext (51).{} arbeitsdauer:{} aktuelle anzahl der arbeitsphasen{} * aktuelle arbeitsphasendauer in minuten.{} pausendauer:{} (aktuelle anzahl der arbeitsphasen - 1){} * aktuelle pausendauer in minuten.{}END PROC simulationszeiten anzeigen;{}PROC anzahl der arbeitsphasen festlegen:{} + INT CONST minwert :: 2, maxwert :: 20;{} zeige fenster;{} hinweise an den benutzer ausgeben;{} simulationszeiten anzeigen (w2);{} erfrage veraenderung;{} REP{} neuen wert vom bildschirm holen{} UNTIL benutzer ist einverstanden PER.{} zeige fenster:{} w1 := window ( 2, 2, 28, 6);{} w2 := window (22, 12, 37, 7);{} w3 := window (32, 2, 47, 6);{} page; show (w1); show (w2); show (w3).{} hinweise an den benutzer ausgeben:{} cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52))));{} + cursor (w1, 2, 3); out (w1, anwendungstext (53));{} out (w1, text (minwert, 2));{} cursor (w1, 2, 4); out (w1, anwendungstext (54));{} out (w1, text (maxwert, 2));{} cursor (w1, 2, 6); out (w1, anwendungstext (55));{} out (w1, text (aktuelle anzahl der arbeitsphasen, 2)).{} erfrage veraenderung:{} cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (182))));{} cursor (w3, 2, 3);{} IF no (anwendungstext (218)){} + THEN LEAVE anzahl der arbeitsphasen festlegen{} FI.{} neuen wert vom bildschirm holen:{} cleop (w3, 2, 3); out (w3, anwendungstext ( 58));{} cursor (w3, 2, 4); out (w3, anwendungstext ( 59));{} cursor (w3, 2, 6); out (w3, anwendungstext (183));{} aktuelle anzahl der arbeitsphasen := ermittelter wert (minwert, maxwert,{} aktuelle anzahl der arbeitsphasen).{} benutzer ist einverstanden:{} hinweise an den benutzer ausgeben;{} simulationszeiten anzeigen (w2);{} + cleop (w3, 2, 3);{} IF yes (w3, anwendungstext (184)){} THEN TRUE{} ELSE FALSE{} FI.{}END PROC anzahl der arbeitsphasen festlegen;{}PROC dauer einer arbeitsphase festlegen:{} INT CONST minwert :: 1, maxwert :: 60;{} zeige fenster;{} hinweise an den benutzer ausgeben;{} simulationszeiten anzeigen (w2);{} erfrage veraenderung;{} REP{} neuen wert vom bildschirm holen{} UNTIL benutzer ist einverstanden PER.{} zeige fenster:{} w1 := window ( 2, 2, 28, 6);{} w2 := window (22, 12, 37, 7);{} + w3 := window (32, 2, 47, 6);{} page; show (w1); show (w2); show (w3).{} hinweise an den benutzer ausgeben:{} cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52))));{} cursor (w1, 2, 3); out (w1, anwendungstext (53));{} out (w1, text (minwert, 2));{} out (w1, anwendungstext (51));{} cursor (w1, 2, 4); out (w1, anwendungstext (54));{} out (w1, text (maxwert, 2));{} out (w1, anwendungstext (51));{} + cursor (w1, 2, 6); out (w1, anwendungstext (55));{} out (w1, text (aktuelle arbeitsphasendauer in minuten, 2));{} out (w1, anwendungstext (51)).{} erfrage veraenderung:{} cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (187))));{} cursor (w3, 2, 3);{} IF no (anwendungstext (219)){} THEN LEAVE dauer einer arbeitsphase festlegen{} FI.{} neuen wert vom bildschirm holen:{} INT VAR spa, zei;{} cleop (w3, 2, 3); out (w3, anwendungstext ( 58));{} + cursor (w3, 2, 3); out (w3, anwendungstext ( 58));{} cursor (w3, 2, 4); out (w3, anwendungstext ( 59));{} cursor (w3, 2, 6); out (w3, anwendungstext (188));{} get cursor (w3, spa, zei);{} cursor (w3, spa + 3, zei); out (w3, anwendungstext (51));{} cursor (w3, spa, zei);{} aktuelle arbeitsphasendauer in minuten{} := ermittelter wert (minwert, maxwert,{} aktuelle arbeitsphasendauer in minuten).{} benutzer ist einverstanden:{} + hinweise an den benutzer ausgeben;{} simulationszeiten anzeigen (w2);{} cleop (w3, 2, 3);{} IF yes (w3, anwendungstext (189)){} THEN TRUE{} ELSE FALSE{} FI.{}END PROC dauer einer arbeitsphase festlegen;{}PROC pausendauer festlegen:{} INT CONST minwert :: 1, maxwert :: 30;{} zeige fenster;{} hinweise an den benutzer ausgeben;{} simulationszeiten anzeigen (w2);{} erfrage veraenderung;{} REP{} neuen wert vom bildschirm holen{} UNTIL benutzer ist einverstanden PER.{} + zeige fenster:{} w1 := window ( 2, 2, 28, 6);{} w2 := window (22, 12, 37, 7);{} w3 := window (32, 2, 47, 6);{} page; show (w1); show (w2); show (w3).{} hinweise an den benutzer ausgeben:{} cursor (w1, 1, 1); out (w1, center (w1, invers (anwendungstext (52))));{} cursor (w1, 2, 3); out (w1, anwendungstext (53));{} out (w1, text (minwert, 2));{} out (w1, anwendungstext (51));{} cursor (w1, 2, 4); out (w1, anwendungstext (54));{} + out (w1, text (maxwert, 2));{} out (w1, anwendungstext (51));{} cursor (w1, 2, 6); out (w1, anwendungstext (55));{} out (w1, text (aktuelle pausendauer in minuten, 2));{} out (w1, anwendungstext (51)).{} erfrage veraenderung:{} cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (191))));{} cursor (w3, 2, 3);{} IF no (anwendungstext (220)){} THEN LEAVE pausendauer festlegen{} FI.{} + neuen wert vom bildschirm holen:{} INT VAR spa, zei;{} cleop (w3, 2, 3); out (w3, anwendungstext ( 58));{} cursor (w3, 2, 4); out (w3, anwendungstext ( 59));{} cursor (w3, 2, 6); out (w3, anwendungstext (192));{} get cursor (w3, spa, zei);{} cursor (w3, spa + 3, zei); out (w3, anwendungstext (51));{} cursor (w3, spa, zei);{} aktuelle pausendauer in minuten{} := ermittelter wert (minwert, maxwert,{} aktuelle pausendauer in minuten).{} + benutzer ist einverstanden:{} hinweise an den benutzer ausgeben;{} simulationszeiten anzeigen (w2);{} cleop (w3, 2, 3);{} IF yes (w3, anwendungstext (193)){} THEN TRUE{} ELSE FALSE{} FI.{}END PROC pausendauer festlegen;{}PROC wertungsschluessel veraendern:{} INT CONST abszisse :: 16, ordinate :: 2;{} zeige fenster;{} gib bewertungsschluessel aus (w1);{} gib informationen aus;{} stelle frage nach veraenderung;{} REP{} neueinstellung{} UNTIL benutzer ist einverstanden PER.{} + zeige fenster:{} w1 := window ( 2, 2, 38, 22);{} w2 := window (42, 10, 37, 14);{} w3 := window (42, 2, 37, 6);{} page; show (w1); show (w2); show (w3).{} gib informationen aus:{} cursor (w2, 1, 1); out (w2, center (w2, invers (anwendungstext (52))));{} cursor (w2, 2, 3); out (w2, anwendungstext (195));{} cursor (w2, 2, 4); out (w2, anwendungstext (196));{} cursor (w2, 2, 6); out (w2, anwendungstext (197));{} cursor (w2, 2, 7); out (w2, anwendungstext (198));{} cursor (w2, 2, 8); out (w2, anwendungstext (199));{} + cursor (w2, 2,11); out (w2, anwendungstext (200));{} cursor (w2, 2,12); out (w2, anwendungstext (201));{} cursor (w2, 2,13); out (w2, anwendungstext (202)).{} stelle frage nach veraenderung:{} cursor (w3, 1, 1); out (w3, center (w3, invers (anwendungstext (205))));{} cursor (w3, 2, 3);{} IF no (anwendungstext (206)){} THEN LEAVE wertungsschluessel veraendern{} ELSE gib hinweis auf linkes fenster{} FI.{} gib hinweis auf linkes fenster:{} cleop (w3, 2, 3); out (w3, anwendungstext (211));{} + cursor (w3, 2, 4); out (w3, anwendungstext (212));{} cursor (w3, 2, 5); out (w3, anwendungstext (213)).{} neueinstellung:{} INT VAR zeiger;{} cursor an;{} FOR zeiger FROM 1 UPTO 11 REP{} gehe auf aktuelle punktposition;{} lasse verschieben{} PER;{} cursor aus.{} gehe auf aktuelle punktposition:{} cursor (w1, ordinate + 3 * zeiger, abszisse - nachkommastelle).{} nachkommastelle:{} int (bewertung [zeiger] * 10.0).{} lasse verschieben:{} TEXT VAR eingabezeichen; INT VAR position;{} + REP{} inchar (eingabezeichen);{} position := pos (oben unten return, eingabezeichen);{} fuehre angemessene reaktion aus{} UNTIL position = 3 PER.{} fuehre angemessene reaktion aus:{} SELECT position OF{} CASE 1: steige auf{} CASE 2: steige ab{} CASE 3: (* tue nichts *){} OTHERWISE piepse{} END SELECT.{} steige auf:{} IF bewertung [zeiger] < 1.0{} THEN loesche alten punkt;{} bewertung [zeiger] INCR 0.1;{} schreibe neuen punkt{} + ELSE piepse{} FI.{} steige ab:{} IF bewertung [zeiger] > 0.0{} THEN loesche alten punkt;{} bewertung [zeiger] DECR 0.1;{} schreibe neuen punkt{} ELSE piepse{} FI.{} loesche alten punkt:{} INT VAR tabspalte, tabzeile;{} gehe auf aktuelle punktposition;{} get cursor (w1, tabspalte, tabzeile);{} IF tabspalte = ordinate + 3 OR tabzeile = abszisse{} THEN out (w1, "|"){} ELSE out (w1, blank){} FI.{} schreibe neuen punkt:{} gehe auf aktuelle punktposition;{} + out (w1, punkt und zurueck).{} benutzer ist einverstanden:{} cleop (w3, 2, 3);{} IF yes (w3, anwendungstext (207)){} THEN TRUE{} ELSE gib hinweis auf linkes fenster;{} FALSE{} FI.{}END PROC wertungsschluessel veraendern;{}PROC cleol (WINDOW VAR w, INT CONST cursorspalte, cursorzeile):{} cursor (w, cursorspalte, cursorzeile);{} IF remaining lines (w) > 1{} THEN out (w, (areaxsize (w) - cursorspalte + 1) * blank){} ELSE out (w, (areaxsize (w) - cursorspalte) * blank){} + FI;{} cursor (w, cursorspalte, cursorzeile){}END PROC cleol;{}PROC cleop (WINDOW VAR w, INT CONST cursorspalte, cursorzeile):{} cleol (w, cursorspalte, cursorzeile);{} INT VAR i;{} FOR i FROM 1 UPTO remaining lines (w) REP{} cleol (w, 1, cursorzeile + i){} PER;{} cursor (w, cursorspalte, cursorzeile){}END PROC cleop;{}PROC cursor an:{} INT VAR spalte, zeile;{} get cursor (spalte, zeile); cursor on; cursor (spalte, zeile){}END PROC cursor an;{}PROC cursor aus:{} INT VAR spalte, zeile;{} + get cursor (spalte, zeile); cursor off; cursor (spalte, zeile){}END PROC cursor aus;{}INT PROC eingabe mit intervallanzeige (WINDOW VAR w, INT CONST minwert,{} maxwert, anfangswert, cursorspalte,{} cursorzeile):{} BOOL VAR ist aufsteigend :: minwert = anfangswert;{} INT VAR aktueller wert :: anfangswert, alter wert, eingelesener wert;{} REP{} hole position aus vorgabe (oben unten return, eingelesener wert);{} SELECT eingelesener wert OF{} + CASE 1: erniedrige aktuellen wert wenn moeglich{} CASE 2: erhoehe aktuellen wert wenn moeglich{} END SELECT{} UNTIL eingelesener wert = 3 PER;{} aktueller wert.{} erniedrige aktuellen wert wenn moeglich:{} IF aktueller wert > minwert{} THEN alter wert := aktueller wert;{} aktueller wert DECR 1;{} IF ist aufsteigend{} THEN loesche alte markierung{} ELSE markiere neues zeichen{} FI{} ELSE piepse{} FI.{} erhoehe aktuellen wert wenn moeglich:{} + IF aktueller wert < maxwert{} THEN alter wert := aktueller wert;{} aktueller wert INCR 1;{} IF ist aufsteigend{} THEN markiere neues zeichen{} ELSE loesche alte markierung{} FI{} ELSE piepse{} FI.{} loesche alte markierung:{} positioniere cursor in zeichenkette (w, 33, alter wert);{} out (w, code (alter wert) + " ");{} cursor (cursorspalte, cursorzeile).{} markiere neues zeichen:{} positioniere cursor in zeichenkette (w, 33, aktueller wert);{} + out (w, invers (code (aktueller wert)));{} cursor (cursorspalte, cursorzeile).{}END PROC eingabe mit intervallanzeige;{}INT PROC eingabe mit elementanzeige (WINDOW VAR w, INT CONST minwert,{} maxwert, anfangswert,{} cursorspalte, cursorzeile):{} INT VAR aktueller wert :: anfangswert, alter wert, eingelesener wert;{} REP{} hole position aus vorgabe (oben unten return, eingelesener wert);{} SELECT eingelesener wert OF{} + CASE 1: erniedrige aktuellen wert wenn moeglich{} CASE 2: erhoehe aktuellen wert wenn moeglich{} END SELECT{} UNTIL eingelesener wert = 3 PER;{} aktueller wert.{} erniedrige aktuellen wert wenn moeglich:{} IF aktueller wert > minwert{} THEN alter wert := aktueller wert;{} aktueller wert DECR 1;{} loesche alte markierung;{} markiere neues zeichen{} ELSE piepse{} FI.{} erhoehe aktuellen wert wenn moeglich:{} IF aktueller wert < maxwert{} + THEN alter wert := aktueller wert;{} aktueller wert INCR 1;{} loesche alte markierung;{} markiere neues zeichen{} ELSE piepse{} FI.{} loesche alte markierung:{} positioniere cursor in zeichenkette (w, minwert, alter wert);{} out (w, code (alter wert) + " ");{} cursor (cursorspalte, cursorzeile).{} markiere neues zeichen:{} positioniere cursor in zeichenkette (w, minwert, aktueller wert);{} out (w, invers (code (aktueller wert)));{} + cursor (cursorspalte, cursorzeile).{}END PROC eingabe mit elementanzeige;{}PROC werkstueck zeigen (WINDOW VAR w):{} INT VAR zaehler, spalte, zeile;{} page (w);{} werkstueckaufhaenger (spalte, zeile);{} schreibe werkstueck zeilenweise.{} schreibe werkstueck zeilenweise:{} FOR zaehler FROM 1 UPTO aktuelle werkstueckhoehe REP{} positioniere den cursor;{} bastle eine zeile;{} gib eine zeile aus{} PER.{} positioniere den cursor:{} cursor (w, spalte, zeile + zaehler - 1).{} + bastle eine zeile:{} TEXT VAR zeileninhalt := "";{} INT VAR z;{} FOR z FROM 1 UPTO aktuelle werkstueckbreite REP{} zeileninhalt CAT code (random (kleinster aktueller zeichencode,{} groesster aktueller zeichencode)){} PER.{} gib eine zeile aus:{} IF inversdarstellung{} THEN out (w, invers (zeileninhalt)){} ELSE out (w, zeileninhalt){} FI.{}END PROC werkstueck zeigen;{}PROC werkstueckaufhaenger (INT VAR spalte, zeile):{} spalte := ((maxspalten - aktuelle werkstueckbreite) DIV 2) + 3;{} + zeile := ((maxzeilen - aktuelle werkstueckhoehe ) DIV 2) + 2;{} IF inversdarstellung THEN spalte DECR 1 FI{}END PROC werkstueckaufhaenger;{}PROC gib zeichenkette aus (WINDOW VAR w,{} INT CONST kleinster, groesster, markiertes):{} INT VAR zaehler;{} FOR zaehler FROM kleinster UPTO groesster REP{} positioniere cursor in zeichenkette (w, kleinster, zaehler);{} IF zaehler = markiertes{} THEN out (w, invers (code (zaehler))){} ELSE out (w, code (zaehler)){} + FI{} PER{}END PROC gib zeichenkette aus;{}PROC positioniere cursor in zeichenkette (WINDOW VAR w,{} INT CONST mincode, position):{} cursor (w, 4 + ((position - mincode) DIV 19) * 5,{} 3 + ((position - mincode) MOD 19)){}END PROC positioniere cursor in zeichenkette;{}TEXT PROC tastenbezeichnung (TEXT CONST zeichen):{} IF code (zeichen) >= 33 AND code (zeichen) <= 126{} THEN "<" + zeichen + ">"{} ELSE umgesetzter code{} FI.{} umgesetzter code:{} + SELECT code (zeichen) OF{} CASE 1: anwendungstext (31){} CASE 2: anwendungstext (32){} CASE 3: anwendungstext (33){} CASE 8: anwendungstext (34){} CASE 9: anwendungstext (35){} CASE 10: anwendungstext (36){} CASE 11: anwendungstext (37){} CASE 12: anwendungstext (38){} CASE 13: anwendungstext (39){} CASE 16: anwendungstext (40){} CASE 27: anwendungstext (41){} CASE 32: anwendungstext (42){} CASE 214: anwendungstext (43){} + CASE 215: anwendungstext (44){} CASE 216: anwendungstext (45){} CASE 217: anwendungstext (46){} CASE 218: anwendungstext (47){} CASE 219: anwendungstext (48){} CASE 251: anwendungstext (49){} OTHERWISE anwendungstext (50){} END SELECT{}END PROC tastenbezeichnung;{}INT PROC ermittelter wert (INT CONST minimum, maximum, startwert):{} INT VAR aktueller wert, eingelesener wert;{} cursor an;{} aktueller wert := startwert;{} REP{} gib dreistellig aus und positioniere zurueck (aktueller wert, FALSE);{} + hole position aus vorgabe (oben unten return, eingelesener wert);{} SELECT eingelesener wert OF{} CASE 1: erhoehe aktuellen wert wenn moeglich{} CASE 2: erniedrige aktuellen wert wenn moeglich{} END SELECT{} UNTIL eingelesener wert = 3 PER;{} cursor aus;{} aktueller wert.{} erhoehe aktuellen wert wenn moeglich:{} IF aktueller wert < maximum{} THEN aktueller wert INCR 1{} ELSE piepse{} FI.{} erniedrige aktuellen wert wenn moeglich:{} IF aktueller wert > minimum{} + THEN aktueller wert DECR 1{} ELSE piepse{} FI.{}END PROC ermittelter wert;{}PROC gib dreistellig aus und positioniere zurueck (INT CONST wert,{} BOOL CONST mit wertwandel):{} INT VAR spalte, zeile; get cursor (spalte, zeile);{} IF mit wertwandel{} THEN out ("'" + code (wert) + "'"){} ELSE out (text (wert, 3)){} FI;{} cursor (spalte, zeile);{}END PROC gib dreistellig aus und positioniere zurueck;{}PROC hole position aus vorgabe (TEXT CONST vorgabe, INT VAR position):{} + TEXT VAR eingabezeichen; INT VAR spa, zei;{} REP{} get cursor (spa, zei); inchar (eingabezeichen); cursor (spa, zei);{} position := pos (vorgabe, eingabezeichen);{} IF position = 0 THEN piepse; cursor (spa, zei) FI{} UNTIL position > 0 PER{}END PROC hole position aus vorgabe;{}PROC piepse:{} INT VAR spa, zei; get cursor (spa, zei); out (piep); cursor (spa, zei){}END PROC piepse;{}END PACKET ls mp bap 1;{}stdvoreinstellung der parameter{} + diff --git a/app/gs.mp-bap/1.1/src/ls-MP BAP 2 b/app/gs.mp-bap/1.1/src/ls-MP BAP 2 new file mode 100644 index 0000000..0cd66ff --- /dev/null +++ b/app/gs.mp-bap/1.1/src/ls-MP BAP 2 @@ -0,0 +1,126 @@ +PACKET ls mp bap 2 DEFINES (*******************************) + (* *) + materialpruefung, mp, (* ls-MP BAP 2 *) + bildschirmarbeitsplatz, bap, (* Version 1.1 *) + (* *) + mp bap simulation ausfuehren, (* (c) 1987, 1988 *) + mp bap auswertung auf bildschirm, (* by Eva Latta-Weber *) + mp bap drucken von auswertungen, (* Bielefeld *) + (* *) + mp bap protokollumfang festlegen, (*******************************) + mp bap kurzauswertung, + + druckereinstellung fuer protokolldatei, + stddruckereinstellung fuer protokolldatei: + + + +LET maxeintraege = 800, + protokolldateipraefix = "ls-Protokoll: ", + menukarte = "ls-MENUKARTE:MP-BAP", + menubezeichnung = "BAP", + auswertdateipostfix = " - Auswertung", + protokolldateityp = 1955, + maxspalten = 70, + maxzeilen = 14,{} blank = " ",{} trenn = "|",{} werkstueckendekennung = 1,{} pausenendekennung = 2,{} simulationsendekennung = 3,{} markierung ein = ""15"",{} markierung aus = " "14"",{} stdschrifttyp = "",{} + stdxstart = 0.0,{} stdystart = 0.0,{} stdfeldbreite = 21.0,{} stdfeldlaenge = 29.5;{}LET KONTROLLTABELLE = STRUCT (INT letzter eintrag,{} breite, hoehe,{} kleinster code, groesster code,{} anzahl aphasen, aphasendauer,{} pausendauer,{} + TEXT datum, uhrzeit, fehlerzeichen,{} nach rechts, nach links,{} nach oben, nach unten,{} ausbesserung, naechstes,{} BOOL inversdarstellung,{} ROW 11 REAL bewertung,{} ROW maxeintraege KONTROLLE tabelle),{} KONTROLLE = STRUCT (INT eintragskennung,{} produktionsfehler,{} + anzahl korrekturen,{} anzahl bedienfehler,{} REAL anfang, ende, differenz),{} WERKSTUECK = ROW maxspalten ROW maxzeilen INT;{}INT VAR breite, hoehe, kleinster code, groesster code,{} anzahl aphasen, aphasendauer, pausendauer,{} eckspalte, eckzeile, x, y, xsize, ysize;{}TEXT VAR fehlerzeichen, nach rechts, nach links, nach oben, nach unten,{} ausbesserung, naechstes, datum, uhrzeit;{} +TEXT VAR protokollschrifttyp :: stdschrifttyp;{}REAL VAR xstart :: stdxstart,{} ystart :: stdystart,{} schreibfeldbreite :: stdfeldbreite,{} schreibfeldlaenge :: stdfeldlaenge;{}ROW 11 REAL VAR bewertung;{}BOOL VAR inversdarstellung,{} kontrolldatei zur vatertask :: TRUE,{} mit kurzprotokoll :: TRUE,{} mit anmerkungen :: TRUE,{} auswertung geht zum drucker :: FALSE;{}WERKSTUECK VAR werkstueck;{} +PROC bildschirmarbeitsplatz:{} kontrolldatei zur vatertask := FALSE;{} install menu (menukarte);{} handle menu (menubezeichnung);{}END PROC bildschirmarbeitsplatz;{}PROC bap:{} bildschirmarbeitsplatz{}END PROC bap;{}PROC materialpruefung:{} TEXT VAR benutzerkennung :: "", protokollname, alter dateiname :: std;{} install menu (menukarte, FALSE);{} kontrolldatei zur vatertask := TRUE;{} ermittle eingestellte parameter;{} bereite den bildschirm vor;{} ermittle die benutzerkennung;{} gib benutzerhinweise aus;{} + arbeitsplatzsimulation ausfuehren (benutzerkennung, protokollname);{} forget (protokollname, quiet);{} last param (alter dateiname).{} bereite den bildschirm vor:{} WINDOW VAR w :: window ( 2, 10, 77, 14);{} page;{} show (w);{} out (w, center (w, anwendungstext (400))).{} ermittle die benutzerkennung:{} benutzerkennung := compress (boxanswer (w, anwendungstext (401), "", 5));{} IF benutzerkennung = ""{} THEN cursor on; page;{} LEAVE materialpruefung{} FI.{} + gib benutzerhinweise aus:{} boxinfo (w, anwendungstext (402));{} boxinfo (w, anwendungstext (403));{} boxinfo (w, anwendungstext (404));{} gib bedieninformationen aus (2);{} boxinfo (w, anwendungstext (405));{} boxinfo (w, anwendungstext (406));{} boxinfo (w, anwendungstext (407));{} boxinfo (w, anwendungstext (408)).{}END PROC materialpruefung;{}PROC mp:{} materialpruefung{}END PROC mp;{}PROC mp bap simulation ausfuehren:{} TEXT VAR benutzerkennung :: "", dateiname;{} + kontrolldatei zur vatertask := FALSE;{} ermittle eingestellte parameter;{} bereite den bildschirm vor;{} ermittle die benutzerkennung;{} arbeitsplatzsimulation ausfuehren (benutzerkennung, dateiname);{} regenerate menuscreen.{} bereite den bildschirm vor:{} WINDOW VAR w :: window (2,2,77,22);{} page;{} out (w, center (w, anwendungstext (399))).{} ermittle die benutzerkennung:{} benutzerkennung := compress (boxanswer (w, anwendungstext (401), "", 5));{} IF benutzerkennung = ""{} + THEN regenerate menuscreen;{} LEAVE mp bap simulation ausfuehren{} FI.{}END PROC mp bap simulation ausfuehren;{}PROC mp bap auswertung auf bildschirm:{} auswertung geht zum drucker := FALSE;{} lasse protokolldateien auswaehlen;{} werte protokolldateien aus;{} regenerate menuscreen.{} lasse protokolldateien auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := infix namen (ALL myself, protokolldateipraefix,{} protokolldateityp);{} + IF NOT not empty (verfuegbare){} THEN noch kein protokoll{} ELSE biete auswahl an{} FI.{} noch kein protokoll:{} regenerate menuscreen;{} menuinfo (anwendungstext (424));{} LEAVE mp bap auswertung auf bildschirm.{} biete auswahl an:{} verfuegbare := menusome (verfuegbare, anwendungstext (421),{} anwendungstext (422), FALSE).{} werte protokolldateien aus:{} INT VAR k;{} steige ggf bei leerem thesaurus aus;{} FOR k FROM 1 UPTO highest entry (verfuegbare) REP{} + IF name (verfuegbare, k) <> ""{} THEN disable stop;{} gib hinweis auf auswertung;{} simulationsauswertung (name (verfuegbare, k), TRUE);{} forget (name (verfuegbare, k) + auswertdateipostfix, quiet);{} fehlerbehandlung{} FI{} PER.{} steige ggf bei leerem thesaurus aus:{} IF NOT not empty (verfuegbare){} THEN regenerate menuscreen;{} menuinfo (anwendungstext (423));{} LEAVE mp bap auswertung auf bildschirm{} + FI.{} gib hinweis auf auswertung:{} page;{} WINDOW VAR fenster :: window ( 2, 2, 77, 22);{} show (fenster);{} cursor (fenster, 1, 9); out (fenster, center (fenster, name (verfuegbare, k)));{} cursor (fenster, 1, 12); out (fenster, center (anwendungstext (274))).{} fehlerbehandlung:{} IF is error{} THEN regenerate menuscreen;{} menuinfo (invers (errormessage));{} clear error; enable stop;{} LEAVE mp bap auswertung auf bildschirm{} FI.{} +END PROC mp bap auswertung auf bildschirm;{}PROC mp bap drucken von auswertungen:{} auswertung geht zum drucker := TRUE;{} lasse protokolldateien auswaehlen;{} werte protokolldateien aus;{} regenerate menuscreen.{} lasse protokolldateien auswaehlen:{} THESAURUS VAR verfuegbare;{} verfuegbare := infix namen (ALL myself, protokolldateipraefix,{} protokolldateityp);{} IF NOT not empty (verfuegbare){} THEN noch kein protokoll{} ELSE biete auswahl an{} + FI.{} noch kein protokoll:{} regenerate menuscreen;{} menuinfo (anwendungstext (424));{} LEAVE mp bap drucken von auswertungen.{} biete auswahl an:{} verfuegbare := menusome (verfuegbare, anwendungstext (425),{} anwendungstext (422), FALSE).{} werte protokolldateien aus:{} INT VAR k;{} steige ggf bei leerem thesaurus aus;{} FOR k FROM 1 UPTO highest entry (verfuegbare) REP{} IF name (verfuegbare, k) <> ""{} THEN disable stop;{} gib hinweis auf auswertung;{} + simulationsauswertung (name (verfuegbare, k), FALSE);{} print (name (verfuegbare, k) + auswertdateipostfix);{} forget (name (verfuegbare, k) + auswertdateipostfix, quiet);{} fehlerbehandlung{} FI{} PER.{} steige ggf bei leerem thesaurus aus:{} IF NOT not empty (verfuegbare){} THEN regenerate menuscreen;{} menuinfo (anwendungstext (423));{} LEAVE mp bap drucken von auswertungen{} FI.{} gib hinweis auf auswertung:{} + page;{} WINDOW VAR fenster :: window ( 2, 2, 77, 22);{} show (fenster);{} cursor (fenster, 1, 9); out (fenster, center (fenster, name (verfuegbare, k)));{} cursor (fenster, 1, 12); out (fenster, center (anwendungstext (270))).{} fehlerbehandlung:{} IF is error{} THEN regenerate menuscreen;{} menuinfo (invers (errormessage));{} clear error; enable stop;{} LEAVE mp bap drucken von auswertungen{} FI.{}END PROC mp bap drucken von auswertungen;{} +PROC mp bap protokollumfang festlegen:{} page;{} zeige aktuellen protokollumfang an;{} gib erlaeuterungen zum protokollumfang;{} frage nach umfangsaenderung;{} regenerate menuscreen{}END PROC mp bap protokollumfang festlegen;{}PROC mp bap kurzauswertung:{} page;{} zeige aktuelle kurzauswertungseinstellung an;{} gib erlaeuterungen zur kurzauswertung;{} frage nach kurzauswertungsaenderung;{} regenerate menuscreen{}END PROC mp bap kurzauswertung;{}PROC druckereinstellung fuer protokolldatei (TEXT CONST schrifttyp,{} + REAL CONST linker rand,{} oberer rand,{} feldbreite,{} feldlaenge):{} protokollschrifttyp := schrifttyp;{} xstart := linker rand;{} ystart := oberer rand;{} schreibfeldbreite := feldbreite;{} schreibfeldlaenge := feldlaenge;{}END PROC druckereinstellung fuer protokolldatei;{} +PROC stddruckereinstellung fuer protokolldatei:{} protokollschrifttyp := stdschrifttyp;{} xstart := stdxstart;{} ystart := stdystart;{} schreibfeldbreite := stdfeldbreite;{} schreibfeldlaenge := stdfeldlaenge{}END PROC stddruckereinstellung fuer protokolldatei;{} (********************************){}PROC arbeitsplatzsimulation ausfuehren (TEXT CONST kennung,{} TEXT VAR dateiname):{} ermittle eingestellte parameter;{} + lege datei mit kennung an (kennung, dateiname);{} cursor on;{} fuehre simulation durch (dateiname);{} schicke ggf protokolldatei zur vatertask;{} gib ggf kurzprotokoll aus.{} schicke ggf protokolldatei zur vatertask:{} IF kontrolldatei zur vatertask{} THEN command dialogue (FALSE);{} save (dateiname);{} command dialogue (TRUE){} FI.{} gib ggf kurzprotokoll aus:{} IF mit kurzprotokoll{} THEN kurzauswertung auf bildschirm (dateiname){} ELSE page; put (anwendungstext (271)){} + FI.{}END PROC arbeitsplatzsimulation ausfuehren;{}PROC ermittle eingestellte parameter:{} werkstueckdefinition (breite, hoehe, kleinster code, groesster code,{} fehlerzeichen, inversdarstellung);{} tastendefinition (nach rechts, nach links, nach oben, nach unten,{} ausbesserung, naechstes);{} phasendefinition (anzahl aphasen, aphasendauer, pausendauer);{} bewertungsschluessel (bewertung);{}END PROC ermittle eingestellte parameter;{}PROC lege datei mit kennung an (TEXT CONST kennung, TEXT VAR datname):{} + BOUND KONTROLLTABELLE VAR tab;{} TEXT VAR interner name :: protokolldateipraefix;{} interner name CAT kennung;{} lege neue datei an;{} type (old (datname), protokolldateityp).{} lege neue datei an:{} INT VAR i :: 0; TEXT VAR bezeichnung;{} REP{} i INCR 1;{} bezeichnung := interner name + " /" + text (i){} UNTIL NOT exists (bezeichnung) PER;{} tab := new (bezeichnung);{} initialisiere tabelle;{} datname := bezeichnung.{} initialisiere tabelle:{} tab.letzter eintrag := 0.{} +END PROC lege datei mit kennung an;{}PROC fuehre simulation durch (TEXT CONST dateiname):{} BOUND KONTROLLTABELLE VAR tab :: old (dateiname);{} TEXT CONST moegliche eingabezeichen :: nach rechts + nach links +{} nach oben + nach unten +{} ausbesserung + naechstes;{} treffe vorbereitungen;{} trage grunddaten in tabelle;{} simuliere.{} treffe vorbereitungen:{} initialisierungen;{} WINDOW VAR fenster :: window ( 1, 9, 79, 16);{} + page;{} gib bedieninformationen aus (2);{} werkstueckaufhaenger (eckspalte, eckzeile);{} weise auf arbeitsbeginn hin;{} beginn der arbeitsphase := clock (1);{} beginn der bearbeitung := beginn der arbeitsphase;{} arbeitsphasenlaenge := real (aphasendauer * 60).{} initialisierungen:{} INT VAR eintragzaehler :: 0,{} arbeitsphasenzaehler :: 1,{} werkstueckzaehler :: 0,{} bedienfehlerzaehler :: 0,{} + korrekturzaehler :: 0,{} produktionsfehler,{} cursorspalte relativ,{} cursorzeile relativ;{} REAL VAR beginn der arbeitsphase,{} beginn der bearbeitung,{} arbeitsphasenlaenge,{} arbeitsphasenueberziehung,{} pausenueberziehung.{} weise auf arbeitsbeginn hin:{} page (fenster);{} boxinfo (fenster, anwendungstext (252), 5, maxint);{} clear buffer.{} trage grunddaten in tabelle:{} tab.datum := date;{} + tab.uhrzeit := time of day;{} tab.breite := breite;{} tab.hoehe := hoehe;{} tab.kleinster code := kleinster code;{} tab.groesster code := groesster code;{} tab.anzahl aphasen := anzahl aphasen;{} tab.aphasendauer := aphasendauer;{} tab.pausendauer := pausendauer;{} tab.fehlerzeichen := fehlerzeichen;{} tab.nach rechts := nach rechts;{} tab.nach links := nach links;{} tab.nach oben := nach oben;{} + tab.nach unten := nach unten;{} tab.ausbesserung := ausbesserung;{} tab.naechstes := naechstes;{} tab.inversdarstellung := inversdarstellung;{} tab.bewertung := bewertung;{} eintragzaehler := 1.{} simuliere:{} REP{} gib holehinweis;{} hole werkstueck (werkstueck, produktionsfehler);{} zeige werkstueck (werkstueck, fenster);{} lasse werkstueck bearbeiten{} UNTIL simulationsende erreicht PER.{} gib holehinweis:{} + page (fenster);{} cursor (fenster, 2, 3); out (fenster, anwendungstext (253)).{} lasse werkstueck bearbeiten:{} initialisiere den relativcursor;{} setze cursor;{} clear buffer;{} bearbeite das werkstueck.{} initialisiere den relativcursor:{} cursorspalte relativ := 1;{} cursorzeile relativ := 1.{} setze cursor:{} IF inversdarstellung{} THEN cursor (fenster, eckspalte + cursorspalte relativ,{} eckzeile + cursorzeile relativ - 1);{} + ELSE cursor (fenster, eckspalte + cursorspalte relativ - 1,{} eckzeile + cursorzeile relativ - 1);{} FI.{} bearbeite das werkstueck:{} BOOL VAR werkstueck voll bearbeitet :: FALSE;{} REP{} hole eingabe und werte aus{} UNTIL werkstueck voll bearbeitet PER.{} hole eingabe und werte aus:{} TEXT VAR eingabezeichen := incharety (100);{} SELECT eingabezeichenposition OF{} CASE 1: wenn moeglich nach rechts{} CASE 2: wenn moeglich nach links{} + CASE 3: wenn moeglich nach oben{} CASE 4: wenn moeglich nach unten{} CASE 5: wenn moeglich ausbessern{} CASE 6: beende werkstueckbearbeitung{} OTHERWISE entscheide ob gepiepst wird{} END SELECT.{} eingabezeichenposition:{} pos (moegliche eingabezeichen, eingabezeichen).{} wenn moeglich nach rechts:{} IF cursorspalte relativ < breite{} THEN cursorspalte relativ INCR 1;{} setze cursor{} ELSE registriere bedienfehler{} FI.{} wenn moeglich nach links:{} + IF cursorspalte relativ > 1{} THEN cursorspalte relativ DECR 1;{} setze cursor{} ELSE registriere bedienfehler{} FI.{} wenn moeglich nach oben:{} IF cursorzeile relativ > 1{} THEN cursorzeile relativ DECR 1;{} setze cursor{} ELSE registriere bedienfehler{} FI.{} wenn moeglich nach unten:{} IF cursorzeile relativ < hoehe{} THEN cursorzeile relativ INCR 1;{} setze cursor{} ELSE registriere bedienfehler{} FI.{} + wenn moeglich ausbessern:{} IF werkstueck [cursorspalte relativ][cursorzeile relativ] = code (fehlerzeichen){} THEN werkstueck [cursorspalte relativ][cursorzeile relativ] := code (blank);{} korrekturzaehler INCR 1;{} get cursor (fenster, x, y);{} out (fenster, blank);{} cursor (fenster, x, y);{} ELSE registriere bedienfehler{} FI.{} registriere bedienfehler:{} piepse; bedienfehlerzaehler INCR 1.{} entscheide ob gepiepst wird:{} IF eingabezeichen <> "" THEN piepse FI.{} + beende werkstueckbearbeitung:{} IF simulationsende erreicht{} THEN trage simulationsende in tabelle ein{} ELIF arbeitsphasenende erreicht{} THEN trage werkstueckdaten in tabelle ein;{} ermittle ueberziehung der arbeitsphase;{} lege eine pause ein{} ELSE trage werkstueckdaten in tabelle ein{} FI;{} werkstueck voll bearbeitet := TRUE.{} lege eine pause ein:{} nimm pausendaten;{} weise auf pausenanfang hin;{} pausiere;{} weise auf pausenende hin;{} + registriere pausenueberziehung.{} nimm pausendaten:{} REAL VAR pausenanfang :: clock (1),{} pausenende :: pausenanfang + real (pausendauer * 60);.{} weise auf pausenanfang hin:{} page (fenster);{} boxnotice (fenster, anwendungstext (255), 5, x, y, xsize, ysize).{} pausiere:{} REP{} pause (int ((pausenende - clock (1)) * 10.0)){} UNTIL clock (1) >= pausenende PER.{} weise auf pausenende hin:{} page (fenster);{} pausenanfang := clock (1);{} piepse;{} + clear buffer;{} boxinfo (fenster, anwendungstext (256), 5, maxint);{} pausenende := clock (1).{} registriere pausenueberziehung:{} pausenueberziehung := pausenende - pausenanfang;{} trage pausenueberziehung in tabelle ein.{} trage werkstueckdaten in tabelle ein:{} REAL VAR bearbeitungsende :: clock (1);{} tab.tabelle [eintragzaehler].eintragskennung := werkstueckendekennung;{} tab.tabelle [eintragzaehler].produktionsfehler := produktionsfehler;{} tab.tabelle [eintragzaehler].anzahl korrekturen := korrekturzaehler;{} + tab.tabelle [eintragzaehler].anzahl bedienfehler:= bedienfehlerzaehler;{} tab.tabelle [eintragzaehler].anfang := beginn der bearbeitung;{} tab.tabelle [eintragzaehler].ende := bearbeitungsende;{} tab.tabelle [eintragzaehler].differenz := bearbeitungszeit;{} erhoehe eintragzaehler;{} beginn der bearbeitung := clock (1);{} werkstueckzaehler INCR 1;{} bedienfehlerzaehler := 0;{} korrekturzaehler := 0.{} trage pausenueberziehung in tabelle ein:{} + tab.tabelle [eintragzaehler].eintragskennung := pausenendekennung;{} tab.tabelle [eintragzaehler].produktionsfehler := 0;{} tab.tabelle [eintragzaehler].anzahl korrekturen := 0;{} tab.tabelle [eintragzaehler].anzahl bedienfehler:= 0;{} tab.tabelle [eintragzaehler].anfang := pausenanfang;{} tab.tabelle [eintragzaehler].ende := pausenende;{} tab.tabelle [eintragzaehler].differenz := pausenueberziehung;{} erhoehe eintragzaehler;{} arbeitsphasenzaehler INCR 1;{} + beginn der bearbeitung := clock (1);{} beginn der arbeitsphase := clock (1);{} bearbeitungslaenge bestimmen.{} trage simulationsende in tabelle ein:{} bearbeitungsende := clock (1);{} tab.tabelle [eintragzaehler].eintragskennung := simulationsendekennung;{} tab.tabelle [eintragzaehler].produktionsfehler := produktionsfehler;{} tab.tabelle [eintragzaehler].anzahl korrekturen := korrekturzaehler;{} tab.tabelle [eintragzaehler].anzahl bedienfehler:= bedienfehlerzaehler;{} + tab.tabelle [eintragzaehler].anfang := beginn der bearbeitung;{} tab.tabelle [eintragzaehler].ende := bearbeitungsende;{} tab.tabelle [eintragzaehler].differenz := bearbeitungszeit;{} tab.letzter eintrag := eintragzaehler.{} bearbeitungszeit:{} bearbeitungsende - beginn der bearbeitung.{} erhoehe eintragzaehler:{} IF eintragzaehler < maxeintraege{} THEN eintragzaehler INCR 1{} ELSE trage simulationsende in tabelle ein;{} + errorstop (anwendungstext (254)){} FI.{} ermittle ueberziehung der arbeitsphase:{} arbeitsphasenueberziehung := clock (1) - beginn der arbeitsphase{} - arbeitsphasenlaenge.{} bearbeitungslaenge bestimmen:{} arbeitsphasenlaenge := real (aphasendauer * 60){} - arbeitsphasenueberziehung{} - pausenueberziehung.{} arbeitsphasenende erreicht:{} clock (1) - beginn der arbeitsphase >= arbeitsphasenlaenge.{} + simulationsende erreicht:{} arbeitsphasenzaehler = anzahl aphasen AND arbeitsphasenende erreicht.{}END PROC fuehre simulation durch;{}PROC gib bedieninformationen aus (INT CONST zeile):{} WINDOW VAR f1 :: window ( 2, zeile, 35, 6),{} f2 :: window (40, zeile, 39, 6);{} show (f1); show (f2);{} cursor (f1, 2, 1); out (f1, anwendungstext (11));{} out (f1, tastenbezeichnung ( nach rechts));{} cursor (f1, 2, 2); out (f1, anwendungstext (12));{} out (f1, tastenbezeichnung ( nach links));{} + cursor (f1, 2, 3); out (f1, anwendungstext (13));{} out (f1, tastenbezeichnung ( nach oben));{} cursor (f1, 2, 4); out (f1, anwendungstext (14));{} out (f1, tastenbezeichnung ( nach unten));{} cursor (f1, 2, 5); out (f1, anwendungstext (15));{} out (f1, tastenbezeichnung ( ausbesserung));{} cursor (f1, 2, 6); out (f1, anwendungstext (16));{} out (f1, tastenbezeichnung ( naechstes));{} cursor (f2, 2, 1); out (f2, anwendungstext (17));{} + out (f2, text (anzahl aphasen, 4));{} cursor (f2, 2, 2); out (f2, anwendungstext (18));{} out (f2, text (aphasendauer, 4));{} out (f2, anwendungstext (51));{} cursor (f2, 2, 3); out (f2, anwendungstext (19));{} out (f2, text (pausendauer, 4));{} out (f2, anwendungstext (51));{} cursor (f2, 2, 4); out (f2, anwendungstext ( 5));{} out (f2, text (gesamtzeit, 4));{} out (f2, anwendungstext (51));{} + cursor (f2, 2, 6); out (f2, anwendungstext (251));{} out (f2, 3 * blank);{} out (f2, fehlerzeichen).{}END PROC gib bedieninformationen aus;{}INT PROC gesamtzeit:{} anzahl aphasen * aphasendauer + (anzahl aphasen - 1) * pausendauer{}END PROC gesamtzeit;{}PROC hole werkstueck (WERKSTUECK VAR w, INT VAR anzahl fehler):{} INT VAR spaltenzaehler, zeilenzaehler;{} anzahl fehler := 0;{} FOR zeilenzaehler FROM 1 UPTO hoehe REP{} ermittle eine zeile{} PER.{} + ermittle eine zeile:{} FOR spaltenzaehler FROM 1 UPTO breite REP{} ermittle eine position;{} ggf fehler registrieren{} PER.{} ermittle eine position:{} w [spaltenzaehler][zeilenzaehler] := zufallscode.{} zufallscode:{} random (kleinster code, groesster code).{} ggf fehler registrieren:{} IF w [spaltenzaehler][zeilenzaehler] = code (fehlerzeichen){} THEN anzahl fehler INCR 1{} FI.{}END PROC hole werkstueck;{}PROC zeige werkstueck (WERKSTUECK CONST w, WINDOW VAR f):{} + INT VAR spaltenzaehler, zeilenzaehler;{} page (f);{} FOR zeilenzaehler FROM 1 UPTO hoehe REP{} zeige eine zeile{} PER.{} zeige eine zeile:{} cursor (f, eckspalte, eckzeile + zeilenzaehler - 1);{} ggf invers einschalten;{} FOR spaltenzaehler FROM 1 UPTO breite REP{} out (f, code (w [spaltenzaehler][zeilenzaehler])){} PER;{} ggf invers ausschalten.{} ggf invers einschalten:{} IF inversdarstellung THEN out (f, markierung ein) FI.{} ggf invers ausschalten:{} IF inversdarstellung THEN out (f, markierung aus) FI.{} +END PROC zeige werkstueck;{}PROC kurzauswertung auf bildschirm (TEXT CONST dateiname):{} WINDOW VAR fenster :: window ( 2, 10, 77, 13);{} show (fenster);{} clear buffer;{} notiere ueberschrift;{} notiere ergebnis.{} notiere ueberschrift:{} cursor (fenster, 1, 1);{} out (fenster, center (fenster, anwendungstext (275)));{} cursor (fenster, 1, 2);{} out (fenster, center (fenster, anwendungstext (276))).{} notiere ergebnis:{} BOUND KONTROLLTABELLE CONST k := old (dateiname);{} ermittle die simulationsdaten;{} + notiere gesamtzahl werkstuecke;{} notiere zeichengesamtzahl;{} notiere bedienfehler;{} notiere benoetigte zeit;{} notiere gesamtausbesserungsrate;{} notiere gesamtbewertungsfaktor;{} notiere gesamtbewertungszahl mit pausenueberziehung;{} cursor (1, 24); out (anwendungstext (2));{} pause.{} ermittle die simulationsdaten:{} INT VAR z, anzahl zeichen pro werkstueck,{} anzahl werkstuecke :: 0,{} anzahl bedienfehler :: 0,{} anzahl produktionsfehler :: 0,{} + anzahl korrekturen :: 0;{} REAL VAR gesamtzahl zeichen, anteil korrekturen,{} gesamtzeit :: 0.0,{} pausenueberzug :: 0.0;{} FOR z FROM 1 UPTO k.letzter eintrag REP{} IF k.tabelle [z].eintragskennung = werkstueckendekennung{} THEN anzahl werkstuecke INCR 1;{} anzahl bedienfehler INCR k.tabelle [z].anzahl bedienfehler;{} anzahl produktionsfehler INCR k.tabelle [z].produktionsfehler;{} + anzahl korrekturen INCR k.tabelle [z].anzahl korrekturen;{} gesamtzeit INCR k.tabelle [z].differenz;{} ELIF k.tabelle [z].eintragskennung = pausenendekennung{} THEN pausenueberzug INCR k.tabelle [z].differenz;{} FI{} PER;{} anzahl zeichen pro werkstueck := k.breite * k.hoehe;{} gesamtzahl zeichen := real (anzahl werkstuecke){} * real (anzahl zeichen pro werkstueck);{} + IF anzahl produktionsfehler = 0{} THEN anteil korrekturen := 1.0{} ELSE anteil korrekturen := real (anzahl korrekturen){} / real (anzahl produktionsfehler){} FI.{} notiere gesamtzahl werkstuecke:{} cursor (fenster, 12, 4); out (fenster, anwendungstext (277));{} out (fenster, text (anzahl werkstuecke, 8)).{} notiere zeichengesamtzahl:{} cursor (fenster, 12, 5); out (fenster, anwendungstext (278));{} out (fenster, zahl aus zeichenkette).{} + zahl aus zeichenkette:{} subtext (text (gesamtzahl zeichen, 9, 0), 1, 8).{} notiere bedienfehler:{} cursor (fenster, 12, 6); out (fenster, anwendungstext (279));{} out (fenster, text (anzahl bedienfehler, 8)).{} notiere benoetigte zeit:{} cursor (fenster, 12, 7); out (fenster, anwendungstext (280));{} out (fenster, text (gesamtzeit, 8, 2)).{} notiere gesamtausbesserungsrate:{} cursor (fenster, 12, 9); out (fenster, anwendungstext (281));{} + out (fenster, text (anteil korrekturen, 8, 2)).{} notiere gesamtbewertungsfaktor:{} cursor (fenster, 12,10); out (fenster, anwendungstext (282));{} out (fenster, text (bewertungsfaktor, 8, 2)).{} bewertungsfaktor:{} bewertungsmasszahl (anteil korrekturen).{} notiere gesamtbewertungszahl mit pausenueberziehung:{} cursor (fenster, 12, 12); out (fenster, (anwendungstext (283)));{} out (fenster, text (gesamtwertung, 8, 2));{} + cursor (fenster, 12, 13); out (fenster, (anwendungstext (284)));{} out (fenster, 8 * "=").{} gesamtwertung:{} IF gesamtzeit = 0.0{} THEN 0.0{} ELSE gesamtzahl zeichen / (gesamtzeit + pausenueberzug){} * bewertungsfaktor{} FI.{}END PROC kurzauswertung auf bildschirm;{}PROC simulationsauswertung (TEXT CONST dateiname, BOOL CONST mit zeigen):{} TEXT CONST auswertdatei :: dateiname + auswertdateipostfix;{} ermittle die kenndaten aus der protokolldatei (dateiname);{} + notiere ueberschrift 1 (auswertdatei);{} notiere die kenndaten der simulation (auswertdatei);{} notiere die werkstueckkenndaten (auswertdatei);{} notiere ein beispielwerkstueck (auswertdatei);{} notiere ueberschrift 2 (auswertdatei);{} notiere gesamtergebnisse (auswertdatei, dateiname);{} notiere ueberschrift 3 (auswertdatei);{} notiere tabellenkopf (auswertdatei);{} notiere einzelne werkstueckdaten (auswertdatei, dateiname);{} + notiere ggf die anmerkungen;{} zeige ggf auswertung auf bildschirm.{} notiere ggf die anmerkungen:{} IF mit anmerkungen{} THEN notiere anmerkungen (auswertdatei);{} FI.{} zeige ggf auswertung auf bildschirm:{} IF mit zeigen{} THEN cursor on; show (auswertdatei); cursor off{} FI.{}END PROC simulationsauswertung;{}PROC ermittle die kenndaten aus der protokolldatei (TEXT CONST dateiname):{} BOUND KONTROLLTABELLE CONST k := old (dateiname);{} breite := k.breite;{} + hoehe := k.hoehe;{} kleinster code := k.kleinster code;{} groesster code := k.groesster code;{} fehlerzeichen := k.fehlerzeichen;{} inversdarstellung := k.inversdarstellung;{} nach rechts := k.nach rechts;{} nach links := k.nach links;{} nach oben := k.nach oben;{} nach unten := k.nach unten;{} ausbesserung := k.ausbesserung;{} naechstes := k.naechstes;{} + anzahl aphasen := k.anzahl aphasen;{} aphasendauer := k.aphasendauer;{} pausendauer := k.pausendauer;{} datum := k.datum;{} uhrzeit := k.uhrzeit;{} bewertung := k.bewertung;{}END PROC ermittle die kenndaten aus der protokolldatei;{}PROC notiere ueberschrift 1 (TEXT CONST auswertdatei):{} IF exists (auswertdatei){} THEN forget (auswertdatei, quiet){} FI;{} FILE VAR f :: sequential file (output, auswertdatei);{} + IF auswertung geht zum drucker{} THEN schreibe druckeranweisungen{} FI;{} putline (f, center (auswertdatei));{} putline (f, center (length (auswertdatei) * "="));{} put (f, anwendungstext (272)); put (f, datum); put (f, 26 * blank);{} put (f, anwendungstext (273)); putline (f, uhrzeit);{} line (f);{} putline (f, center (anwendungstext (291)));{} putline (f, center (length (anwendungstext (291)) * "=")).{} schreibe druckeranweisungen:{} write (f, "#type (""");{} write (f, protokollschrifttyp);{} + write (f, """)##limit (");{} write (f, text (schreibfeldbreite));{} write (f, ")##pagelength (");{} write (f, text (schreibfeldlaenge));{} write (f, ")##start (");{} write (f, text (xstart));{} write (f, ",");{} write (f, text (ystart));{} write (f, ")#"); line (f).{}END PROC notiere ueberschrift 1;{}PROC notiere ueberschrift 2 (TEXT CONST auswertdatei):{} FILE VAR f :: sequential file (output, auswertdatei);{} putline (f, center (anwendungstext (285)));{} putline (f, center (length (anwendungstext (285)) * "=")){} +END PROC notiere ueberschrift 2;{}PROC notiere ueberschrift 3 (TEXT CONST auswertdatei):{} FILE VAR f :: sequential file (output, auswertdatei);{} line (f, 2);{} putline (f, center (anwendungstext (311)));{} putline (f, center (length (anwendungstext (311)) * "="));{} line (f){}END PROC notiere ueberschrift 3;{}PROC notiere die kenndaten der simulation (TEXT CONST auswertdatei):{} FILE VAR f :: sequential file (output, auswertdatei);{} ROW 6 TEXT VAR ausgabe;{} bestuecke ausgabezeilen;{} schreibe ausgabezeilen.{} + bestuecke ausgabezeilen:{} ausgabe [1] := anwendungstext (11){} + gleichlang (tastenbezeichnung (nach rechts ), 23){} + anwendungstext (17){} + text (anzahl aphasen, 4);{} ausgabe [2] := anwendungstext (12){} + gleichlang (tastenbezeichnung (nach links ), 23){} + anwendungstext (18){} + text (aphasendauer, 4) + anwendungstext (51);{} ausgabe [3] := anwendungstext (13){} + + gleichlang (tastenbezeichnung (nach oben ), 23){} + anwendungstext (19){} + text (pausendauer, 4) + anwendungstext (51);{} ausgabe [4] := anwendungstext (14){} + gleichlang (tastenbezeichnung (nach unten ), 23){} + anwendungstext ( 5){} + text (simulationsdauer, 4) + anwendungstext (51);{} ausgabe [5] := anwendungstext (15){} + gleichlang (tastenbezeichnung (ausbesserung), 23);{} + ausgabe [6] := anwendungstext (16){} + gleichlang (tastenbezeichnung (naechstes ), 23){} + anwendungstext (251){} + (3 * blank) + fehlerzeichen.{} simulationsdauer:{} anzahl aphasen * aphasendauer + (anzahl aphasen - 1) * pausendauer.{} schreibe ausgabezeilen:{} INT VAR i;{} FOR i FROM 1 UPTO 6 REP{} putline (f, ausgabe [i]){} PER;{} line (f).{}END PROC notiere die kenndaten der simulation;{}PROC notiere die werkstueckkenndaten (TEXT CONST auswertdatei):{} + FILE VAR f :: sequential file (output, auswertdatei);{} ROW 4 TEXT VAR ausgabe;{} bestuecke ausgabezeilen;{} schreibe ausgabezeilen.{} bestuecke ausgabezeilen:{} ausgabe [1] := anwendungstext (292) + text (breite, 4) +{} anwendungstext (296);{} ausgabe [2] := anwendungstext (293) + text (hoehe, 4) +{} anwendungstext (296);{} ausgabe [3] := anwendungstext (294) + text (breite * hoehe, 4) +{} anwendungstext (296);{} + ausgabe [4] := anwendungstext (295) + zeichenumfang.{} zeichenumfang:{} " " + code (kleinster code) + " ... " + code (groesster code) +{} " (" + text (groesster code - kleinster code + 1, 3) +{} anwendungstext (296) + ")".{} schreibe ausgabezeilen:{} INT VAR i;{} FOR i FROM 1 UPTO 4 REP putline (f, ausgabe [i]) PER;{} line (f).{}END PROC notiere die werkstueckkenndaten;{}PROC notiere ein beispielwerkstueck (TEXT CONST auswertdatei):{} FILE VAR f :: sequential file (output, auswertdatei);{} + WERKSTUECK VAR beispiel;{} INT VAR beispielfehler;{} hole werkstueck (beispiel, beispielfehler);{} notiere ueberschrift;{} notiere werkstueckzeilen;{} notiere werkstueckleerzeilen.{} notiere ueberschrift:{} putline (f, center (anwendungstext (297)));{} putline (f, center (length (anwendungstext (297)) * "-")).{} notiere werkstueckzeilen:{} INT VAR bs, bz;{} FOR bz FROM 1 UPTO hoehe REP{} notiere eine zeile{} PER.{} notiere eine zeile:{} TEXT VAR beispielzeile :: "";{} + konstruiere beispielzeile;{} gib beispielzeile aus.{} konstruiere beispielzeile:{} beispielzeile CAT (((80 - breite) DIV 2) * blank);{} FOR bs FROM 1 UPTO breite REP{} beispielzeile CAT code (beispiel [bs][bz]){} PER.{} gib beispielzeile aus:{} putline (f, beispielzeile).{} notiere werkstueckleerzeilen:{} line (f, maxzeilen - hoehe + 1).{}END PROC notiere ein beispielwerkstueck;{}PROC notiere gesamtergebnisse (TEXT CONST auswertdatei, protokolldatei):{} FILE VAR f :: sequential file (output, auswertdatei);{} + BOUND KONTROLLTABELLE CONST k :: old (protokolldatei);{} ermittle die simulationsdaten;{} notiere gesamtzahl werkstuecke;{} notiere anzahl zeichen pro werkstueck;{} notiere zeichengesamtzahl;{} notiere bedienfehler;{} notiere produktionsfehlerzahl;{} notiere fehlerkorrekturen;{} notiere gesamtzeit mit pausenueberziehung;{} notiere zeichenzahl pro sekunde mit;{} notiere gesamtausbesserungsrate;{} notiere gesamtbewertungsfaktor mit;{} notiere gesamtbewertungszahl mit;{} + notiere gesamtzeit ohne pausenueberziehung;{} notiere zeichenzahl pro sekunde ohne;{} notiere gesamtbewertungszahl ohne.{} ermittle die simulationsdaten:{} INT VAR z, anzahl zeichen pro werkstueck,{} anzahl werkstuecke :: 0,{} anzahl bedienfehler :: 0,{} anzahl produktionsfehler :: 0,{} anzahl korrekturen :: 0;{} REAL VAR gesamtzahl zeichen, anteil korrekturen,{} gesamtzeit :: 0.0,{} + pausenueberzug :: 0.0;{} FOR z FROM 1 UPTO k.letzter eintrag REP{} IF k.tabelle [z].eintragskennung = werkstueckendekennung{} THEN anzahl werkstuecke INCR 1;{} anzahl bedienfehler INCR k.tabelle [z].anzahl bedienfehler;{} anzahl produktionsfehler INCR k.tabelle [z].produktionsfehler;{} anzahl korrekturen INCR k.tabelle [z].anzahl korrekturen;{} gesamtzeit INCR k.tabelle [z].differenz;{} + ELIF k.tabelle [z].eintragskennung = pausenendekennung{} THEN pausenueberzug INCR k.tabelle [z].differenz;{} FI{} PER;{} anzahl zeichen pro werkstueck := k.breite * k.hoehe;{} gesamtzahl zeichen := real (anzahl werkstuecke){} * real (anzahl zeichen pro werkstueck);{} IF anzahl produktionsfehler = 0{} THEN anteil korrekturen := 1.0{} ELSE anteil korrekturen := real (anzahl korrekturen){} + / real (anzahl produktionsfehler){} FI.{} notiere gesamtzahl werkstuecke:{} put (f, anwendungstext (277)); putline (f, text (anzahl werkstuecke, 8)).{} notiere anzahl zeichen pro werkstueck:{} put (f, anwendungstext (286)); putline (f, text (breite * hoehe, 8)).{} notiere zeichengesamtzahl:{} put (f, anwendungstext (278)); putline (f, zahl aus zeichenkette);{} line (f).{} zahl aus zeichenkette:{} subtext (text (gesamtzahl zeichen, 9, 0), 1, 8).{} + notiere produktionsfehlerzahl:{} put (f, anwendungstext (287)); putline (f, text (anzahl produktionsfehler, 8)).{} notiere fehlerkorrekturen:{} put (f, anwendungstext (288)); putline (f, text (anzahl korrekturen, 8)).{} notiere bedienfehler:{} put (f, anwendungstext (279)); putline (f, text (anzahl bedienfehler,8));{} line (f).{} notiere gesamtzeit mit pausenueberziehung:{} put (f, anwendungstext (301)); put (f, text (gesamtzeit mit, 8, 1));{} putline (f, anwendungstext (300)).{} + gesamtzeit mit:{} gesamtzeit + pausenueberzug.{} notiere zeichenzahl pro sekunde mit:{} put (f, anwendungstext (302));{} putline (f, text (zeichenpro sec mit, 8, 1));{} line (f).{} zeichen pro sec mit:{} IF gesamtzeit + pausenueberzug > 0.0{} THEN gesamtzahl zeichen / (gesamtzeit + pausenueberzug){} ELSE 0.0{} FI.{} notiere gesamtausbesserungsrate:{} put (f, anwendungstext (281)); putline (f, text (anteil korrekturen, 8, 1)).{} notiere gesamtbewertungsfaktor mit:{} + put (f, anwendungstext (282)); putline (f, text (bewertungsfaktor, 8, 1));{} line (f).{} bewertungsfaktor:{} bewertungsmasszahl (anteil korrekturen).{} notiere gesamtbewertungszahl mit:{} put (f, (anwendungstext (283))); putline (f, text (gesamtwertung mit, 8, 1));{} put (f, (anwendungstext (284))); putline (f, 8 * "=").{} gesamtwertung mit:{} IF gesamtzeit = 0.0{} THEN 0.0{} ELSE gesamtzahl zeichen / (gesamtzeit + pausenueberzug){} * bewertungsfaktor{} + FI.{} notiere gesamtzeit ohne pausenueberziehung:{} put (f, anwendungstext (303)); put (f, text (gesamtzeit, 8, 1));{} putline (f, anwendungstext (300)).{} notiere zeichenzahl pro sekunde ohne:{} put (f, anwendungstext (302));{} putline (f, text (zeichenpro sec ohne, 8, 1)).{} zeichen pro sec ohne:{} IF gesamtzeit > 0.0{} THEN gesamtzahl zeichen / gesamtzeit{} ELSE 0.0{} FI.{} notiere gesamtbewertungszahl ohne:{} put (f, (anwendungstext (304))); putline (f, text (gesamtwertung ohne, 8, 1));{} + put (f, (anwendungstext (284))); putline (f, 8 * "=").{} gesamtwertung ohne:{} IF gesamtzeit = 0.0{} THEN 0.0{} ELSE gesamtzahl zeichen / gesamtzeit * bewertungsfaktor{} FI.{}END PROC notiere gesamtergebnisse;{}PROC notiere tabellenkopf (TEXT CONST auswertdatei):{} FILE VAR f :: sequential file (output, auswertdatei);{} putline (f, anwendungstext (312));{} putline (f, anwendungstext (313));{} putline (f, anwendungstext (314));{} putline (f, anwendungstext (315));{} putline (f, anwendungstext (316));{} + putline (f, anwendungstext (317));{} putline (f, anwendungstext (318));{}END PROC notiere tabellenkopf;{}PROC notiere einzelne werkstueckdaten (TEXT CONST auswertdatei, dateiname):{} BOUND KONTROLLTABELLE CONST k :: old (dateiname);{} FILE VAR f :: sequential file (output, auswertdatei);{} INT VAR zeiger, werkstuecknummer :: 0;{} TEXT VAR ausgabezeile :: "";{} FOR zeiger FROM 1 UPTO k.letzter eintrag REP{} notiere bearbeitungszeile{} PER.{} notiere bearbeitungszeile:{} IF k.tabelle [zeiger].eintragskennung = werkstueckendekennung{} + THEN werkstuecknummer INCR 1;{} schreibe werkstueckzeile{} ELIF k.tabelle [zeiger].eintragskennung = pausenendekennung{} THEN schreibe pausenzeile{} ELIF k.tabelle [zeiger].eintragskennung = simulationsendekennung{} THEN werkstuecknummer INCR 1;{} schreibe abschluss{} ELSE putline (f, 75 * "?"){} FI.{} schreibe werkstueckzeile:{} konstruiere ausgabezeile;{} putline (f, ausgabezeile).{} konstruiere ausgabezeile:{} ausgabezeile := "";{} + ausgabezeile CAT text (werkstuecknummer, 5);{} ausgabezeile CAT 2 * blank;{} ausgabezeile CAT trenn;{} ausgabezeile CAT text (k.tabelle [zeiger].anzahl bedienfehler, 5);{} ausgabezeile CAT 3 * blank;{} ausgabezeile CAT trenn;{} ausgabezeile CAT text (k.tabelle [zeiger].produktionsfehler, 6);{} ausgabezeile CAT 2 * blank;{} ausgabezeile CAT trenn;{} ausgabezeile CAT text (k.tabelle [zeiger].anzahl korrekturen, 6);{} ausgabezeile CAT 2 * blank;{} ausgabezeile CAT trenn;{} + ausgabezeile CAT text (k.tabelle [zeiger].differenz, 6, 1);{} ausgabezeile CAT blank;{} ausgabezeile CAT trenn;{} ausgabezeile CAT text (zeichen pro zeiteinheit, 6, 1);{} ausgabezeile CAT blank;{} ausgabezeile CAT trenn;{} ausgabezeile CAT text (einzelausbesserungsrate, 6, 1);{} ausgabezeile CAT blank;{} ausgabezeile CAT trenn;{} ausgabezeile CAT text (bewertungsmasszahl (einzelausbesserungsrate), 6, 1);{} ausgabezeile CAT blank;{} ausgabezeile CAT trenn;{} + ausgabezeile CAT text (endbewertungszahl, 6, 1);{} ausgabezeile CAT blank.{} zeichen pro zeiteinheit:{} real (breite * hoehe) / k.tabelle [zeiger].differenz.{} einzelausbesserungsrate:{} IF k.tabelle [zeiger].produktionsfehler = 0{} THEN 0.0{} ELSE real (k.tabelle [zeiger].anzahl korrekturen){} / real (k.tabelle [zeiger].produktionsfehler ){} FI.{} endbewertungszahl:{} real (breite * hoehe) / k.tabelle [zeiger].differenz{} * bewertungsmasszahl (einzelausbesserungsrate).{} + schreibe pausenzeile:{} line (f);{} put (f, anwendungstext (320));{} put (f, text (k.tabelle [zeiger].differenz, 6, 1));{} putline (f, anwendungstext (300));{} line (f).{} schreibe abschluss:{} putline (f, anwendungstext (318));{} putline (f, anwendungstext (319));{} line (f);{} konstruiere ausgabezeile;{} ausgabezeile := "(" +{} subtext (ausgabezeile, 2, length (ausgabezeile) - 1) +{} ")";{} putline (f, ausgabezeile).{} +END PROC notiere einzelne werkstueckdaten;{}PROC notiere anmerkungen (TEXT CONST auswertdatei):{} FILE VAR f :: sequential file (output, auswertdatei);{} line (f);{} schreibe kopf;{} schreibe hinweis auf letztes werkstueck;{} schreibe hinweis auf bedienfehler;{} erlaeutere bewertungsschluessel;{} stelle bewertungsschluessel graphisch dar;{} schreibe rest.{} schreibe kopf:{} putline (f, center (anwendungstext (325)));{} putline (f, center (length (anwendungstext (325)) * "="));{} line (f).{} + schreibe hinweis auf letztes werkstueck:{} INT VAR i;{} FOR i FROM 326 UPTO 337 REP{} putline (f, anwendungstext (i)){} PER;{} line (f).{} schreibe hinweis auf bedienfehler:{} FOR i FROM 339 UPTO 341 REP{} putline (f, anwendungstext (i)){} PER;{} line (f).{} erlaeutere bewertungsschluessel:{} FOR i FROM 343 UPTO 372 REP{} putline (f, anwendungstext (i)){} PER.{} stelle bewertungsschluessel graphisch dar:{} putline (f, anwendungstext (374));{} putline (f, anwendungstext (375));{} + ermittle die startposition;{} zeichne diagramm;{} trage werte ein.{} ermittle die startposition:{} modify (f);{} INT VAR zeilenpos :: lines (f) + 2, spaltenpos :: 18.{} zeichne diagramm:{} cursor (f, spaltenpos, zeilenpos , anwendungstext (20));{} cursor (f, spaltenpos, zeilenpos + 1, anwendungstext (21));{} cursor (f, spaltenpos, zeilenpos + 3, anwendungstext (23));{} cursor (f, spaltenpos, zeilenpos + 4, anwendungstext (22));{} cursor (f, spaltenpos, zeilenpos + 5, anwendungstext (22));{} + cursor (f, spaltenpos, zeilenpos + 6, anwendungstext (22));{} cursor (f, spaltenpos, zeilenpos + 7, anwendungstext (22));{} cursor (f, spaltenpos, zeilenpos + 8, anwendungstext (24));{} cursor (f, spaltenpos, zeilenpos + 9, anwendungstext (22));{} cursor (f, spaltenpos, zeilenpos + 10, anwendungstext (22));{} cursor (f, spaltenpos, zeilenpos + 11, anwendungstext (22));{} cursor (f, spaltenpos, zeilenpos + 12, anwendungstext (22));{} cursor (f, spaltenpos, zeilenpos + 13, anwendungstext (25));{} + cursor (f, spaltenpos, zeilenpos + 14, anwendungstext (26));{} cursor (f, spaltenpos, zeilenpos + 15, anwendungstext (27)).{} trage werte ein:{} zeilenpos INCR 13;{} INT VAR bwzeiger;{} FOR bwzeiger FROM 1 UPTO 11 REP{} cursor (f, spaltenpos + 3 * bwzeiger, zeilenpos - konkreter wert, "+"){} PER.{} konkreter wert:{} int (bewertung [bwzeiger] * 10.0).{} schreibe rest:{} output (f);{} line (f, 2);{} FOR i FROM 377 UPTO 387 REP{} putline (f, anwendungstext (i)){} + PER;{} haenge an jede zeile ein blank an.{} haenge an jede zeile ein blank an:{} TEXT VAR inhalt;{} INT VAR zeilenzeiger;{} modify (f);{} FOR zeilenzeiger FROM 1 UPTO lines (f) REP{} to line (f, zeilenzeiger);{} read record (f, inhalt);{} inhalt CAT blank;{} write record (f, inhalt){} PER;{} to line (f,1).{}END PROC notiere anmerkungen;{}PROC cursor (FILE VAR f, INT CONST spa, zei, TEXT CONST text):{} positioniere an zeile;{} positioniere an spalte;{} + gib text an position aus.{} positioniere an zeile:{} IF zeile noch nicht vorhanden{} THEN schaffe zeile und gehe dorthin{} ELSE to line (f,zei){} FI.{} zeile noch nicht vorhanden:{} zei > lines (f).{} schaffe zeile und gehe dorthin:{} INT VAR zaehler 1;{} IF lines (f) = 0{} THEN to line (f,lines (f));{} insert record (f);{} FI;{} FOR zaehler 1 FROM lines (f) UPTO zei REP{} to line (f,lines (f));{} down (f);insert record (f){} PER;{} + to line(f,zei).{} positioniere an spalte:{} TEXT VAR alter satz :: "", neuer satz :: "", restsatz ::"";{} INT VAR satzlaenge;{} read record (f,alter satz);{} satzlaenge := length (alter satz);{} IF satzlaenge = 0{} THEN neuer satz CAT (spa -1) * " "{} ELIF satzlaenge >= spa{} THEN neuer satz := subtext(alter satz,1,spa-1);{} restsatz := subtext(alter satz, spa + length (text));{} ELSE neuer satz := alter satz;{} neuer satz CAT (spa - satzlaenge - 1) * " "{} + FI.{} gib text an position aus:{} neuer satz CAT text;{} IF restsatz <> ""{} THEN neuer satz CAT restsatz{} FI;{} write record(f,neuer satz).{} END PROC cursor;{}TEXT PROC gleichlang (TEXT CONST text, INT CONST laenge):{} TEXT VAR intern :: compress (text);{} INT VAR anzahl :: laenge - length (intern);{} IF anzahl < 0{} THEN subtext (intern, 1, laenge){} ELSE intern + (anzahl * blank){} FI{}END PROC gleichlang;{}REAL PROC bewertungsmasszahl (REAL CONST wert):{} REAL VAR interner wert := round (wert, 1);{} + IF interner wert > wert{} THEN interner wert DECR 0.1{} FI;{} interpoliere.{} interpoliere:{} REAL VAR unterer wert, oberer wert;{} unterer wert := interner wert;{} IF unterer wert = 1.0{} THEN oberer wert := 1.0{} ELSE oberer wert := unterer wert + 0.1{} FI;{} unterer wert := bewertung (int (unterer wert * 10.0) + 1);{} oberer wert := bewertung (int (oberer wert * 10.0) + 1);{} unterer wert + (oberer wert - unterer wert) * faktor.{} faktor:{} frac (wert * 10.0).{} +END PROC bewertungsmasszahl;{}PROC zeige aktuellen protokollumfang an:{} WINDOW VAR w :: window (2, 2, 34, 5);{} show (w);{} cursor (w, 1, 1); out (w, center (w, invers (anwendungstext (431))));{} IF mit anmerkungen{} THEN cursor (w, 2, 4); out (w, anwendungstext (432)){} ELSE cursor (w, 2, 4); out (w, anwendungstext (433));{} FI.{}END PROC zeige aktuellen protokollumfang an;{}PROC gib erlaeuterungen zum protokollumfang:{} WINDOW VAR f :: window ( 2, 9, 77, 15);{} show (f);{} cursor (f, 1, 1); out (f, center (f, invers (anwendungstext (434))));{} + cursor (f, 5, 3); out (f, anwendungstext (435));{} cursor (f, 5, 4); out (f, anwendungstext (436));{} cursor (f, 5, 5); out (f, anwendungstext (437));{} cursor (f, 5, 6); out (f, anwendungstext (438));{} cursor (f, 5, 8); out (f, anwendungstext (439));{} cursor (f, 5, 9); out (f, anwendungstext (440));{} cursor (f, 5,10); out (f, anwendungstext (441));{} cursor (f, 5,11); out (f, anwendungstext (442));{} cursor (f, 5,13); out (f, anwendungstext (443));{} cursor (f, 5,14); out (f, anwendungstext (444));{} +END PROC gib erlaeuterungen zum protokollumfang;{}PROC frage nach umfangsaenderung:{} WINDOW VAR fenster :: window (38, 2, 41, 5);{} show (fenster);{} cursor (fenster, 1, 1); out (fenster, center (fenster, invers (anwendungstext (451))));{} cursor (fenster, 4, 3); out (fenster, anwendungstext (452));{} cursor (fenster, 4, 4);{} IF yes (fenster, anwendungstext (453)){} THEN mit anmerkungen := NOT mit anmerkungen{} FI.{}END PROC frage nach umfangsaenderung;{}PROC zeige aktuelle kurzauswertungseinstellung an:{} + WINDOW VAR w :: window ( 2, 2, 34, 5);{} show (w);{} cursor (w, 1, 1); out (w, center (w, invers (anwendungstext (431))));{} IF mit kurzprotokoll{} THEN cursor (w, 7, 4); out (w, anwendungstext (461));{} ELSE cursor (w, 7, 4); out (w, anwendungstext (462));{} FI.{}END PROC zeige aktuelle kurzauswertungseinstellung an;{}PROC gib erlaeuterungen zur kurzauswertung:{} WINDOW VAR f :: window ( 2, 9, 77, 15);{} show (f);{} cursor (f, 1, 1); out (f, center (f, invers (anwendungstext (463))));{} + cursor (f, 5, 3); out (f, anwendungstext (464));{} cursor (f, 5, 4); out (f, anwendungstext (465));{} cursor (f, 5, 5); out (f, anwendungstext (466));{} cursor (f, 5, 6); out (f, anwendungstext (467));{} cursor (f, 5, 8); out (f, anwendungstext (468));{} cursor (f, 5, 9); out (f, anwendungstext (469));{} cursor (f, 5,10); out (f, anwendungstext (470));{} cursor (f, 5,11); out (f, anwendungstext (471));{} cursor (f, 5,13); out (f, anwendungstext (472));{} cursor (f, 5,14); out (f, anwendungstext (473));{} +END PROC gib erlaeuterungen zur kurzauswertung;{}PROC frage nach kurzauswertungsaenderung:{} WINDOW VAR fenster :: window (38, 2, 41, 5);{} show (fenster);{} cursor (fenster, 1, 1); out (fenster, center (fenster, invers (anwendungstext (481))));{} cursor (fenster, 5, 3); out (fenster, anwendungstext (482));{} cursor (fenster, 5, 4);{} IF yes (fenster, anwendungstext (483)){} THEN mit kurzprotokoll := NOT mit kurzprotokoll{} FI.{}END PROC frage nach kurzauswertungsaenderung;{}END PACKET ls mp bap 2;{} + diff --git a/app/gs.mp-bap/1.1/src/ls-MP BAP-gen b/app/gs.mp-bap/1.1/src/ls-MP BAP-gen new file mode 100644 index 0000000..26a84c3 --- /dev/null +++ b/app/gs.mp-bap/1.1/src/ls-MP BAP-gen @@ -0,0 +1,30 @@ + (*****************************) + (* *) + (* ls-MP BAP *) + (* GENERATORPROGRAMM *) + (* *) + (* (c) 1987 (01.09.87) *) + (* by Eva Latta *) + (* Bielefeld *) + (*****************************) +LET mm taskname = "ls-MENUKARTEN", + eigener name = "ls-MP BAP/gen", + datei1 = "ls-MP BAP 1", + datei2 = "ls-MP BAP 2", + menukarte = "ls-MENUKARTE:MP-BAP"; + +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;{}storage (size, used);{}einzeln := size - used < 500;{}forget (eigener name, 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-MP BAP - Automatische Generierung "14"").{} +hole die dateien:{} IF NOT exists (datei 1){} COR NOT exists (datei 2){} COR NOT exists (menukarte){} THEN hole dateien vom archiv; LEAVE hole die dateien{} 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 2);{} hole (menukarte);{} 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);{} in (datei 2);{} schicke (menukarte);{} IF einzeln THEN release (archive) FI;{} + check on.{}mache global manager aus der task:{} global manager.{} + -- cgit v1.2.3