diff options
Diffstat (limited to 'doc/menugenerator')
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.1 | 100 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.2 | 87 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.3 | 155 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.4 | 424 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.5 | 975 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.6 | 235 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.7 | 367 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.8 | 1676 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.impressum | 88 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.index | 258 | ||||
| -rw-r--r-- | doc/menugenerator/menu-generator handbuch.inhalt | 72 | 
11 files changed, 0 insertions, 4437 deletions
| diff --git a/doc/menugenerator/menu-generator handbuch.1 b/doc/menugenerator/menu-generator handbuch.1 deleted file mode 100644 index c190c0a..0000000 --- a/doc/menugenerator/menu-generator handbuch.1 +++ /dev/null @@ -1,100 +0,0 @@ -#type ("prop.lq")##limit (11.0)##pagelength (16.5)##block#  -#start (2.0,0.0)#  -#page (3)#  -#headodd#  -#center#ls-Menu-Generator#right#%  -  -#end#  -#headeven#  -%#center#ls-Menu-Generator  -  -#end#  -#type ("prop.breit.lq")#  -#center#1  -  -#center#Was  -#center#kann  -#center#ls-Menu-Generator  -#type ("prop.lq")#  -  -  -   In diesem Kapitel wollen wir Ihnen erläutern, was Sie -mit #on("b")#ls-Menu-Generator#off("b")# anfangen können. Wir gehen davon -aus, daß Ihnen die Benutzerschnittstelle #on("b")#ls-DIALOG#off("b")# be -kannt ist und daß Sie bereits mit einigen Anwendungen -unter #on("b")#ls-DIALOG#off("b")# gearbeitet haben. Weiterhin setzen wir -voraus, daß Sie Programmierkenntnisse (EUMEL/ELAN) be -sitzen.  -   Bisher war es Ihnen nur möglich, von uns fertigge -stellte Programme unter der komfortablen Benutzer -schnittstelle #on("b")#ls-DIALOG#off("b")# laufen zu lassen. Sie haben aber -sicher erkannt, welche Vorteile es bietet, Programme un -ter einer einheitlichen Benutzeroberfläche zu realisie -ren:  -   Zunächst profitiert natürlich der Anwender von der -einfachen und immer einheitlichen Bedienung solcher -Programme. Der Aufwand, sich in neue Programmsysteme -einzuarbeiten, wird erheblich reduziert. #on("b")#ls-DIALOG#off("b")# wurde -ja auch speziell für den Unterricht konzipiert und ent -wickelt: Ziel war es, Computerlaien einen Zugang zum -Computer zu verschaffen und den Umgang mit dem Compu -ter zu vereinfachen.  -  -   #on("b")#ls-Menu-Generator#off("b")#ist nun aber kein weiteres Anwen -dungsprogramm! #on("b")#ls-Menu-Generator#off("b")# ist stattdessen für -den Programmierer gedacht, der selbst unter #on("b")#ls-DIALOG#off("b")# -Anwendungssysteme entwickeln möchte. #on("u")#Wir erhoffen uns -durch die Bereitstellung dieses Werkzeuges, daß sich auch -andere engagierte Personen daran beteiligen, qualitativ -hochwertige Software insbesondere für den Schulbereich -unter #on("b")#ls-DIALOG#off("b")# zu entwickeln.#off("u")#  -  -   Mit #on("b")#ls-Menu-Generator#off("b")# haben Sie zwei Komponenten -erworben: Das Generator-Programm zur Erzeugung von -Menukarten und eine umfangreichen Dokumentation. Dabei -enthält die Dokumentation nicht nur Informationen dar -über, wie Sie mit dem Generator-Programm arbeiten kön -nen - das natürlich auch. Darüberhinaus werden Ihnen -alle Möglichkeiten, die #on("b")#ls-DIALOG#off("b")# zur Programmgestal -tung bietet, ausführlich erläutert - das macht den we -sentlichen Teil der Dokumentation aus!  -  -   #on("b")#ls-DIALOG#off("b")# ist eigentlich ein "Baukastensystem", auf -das andere Programme zugreifen können. Sie wissen si -cherlich, wieviel Arbeit bei jedem Programm aufzuwen -den ist, um die Benutzerschnittstelle zu realisieren. Die -Gestaltung und Pflege der Benutzerschnittstelle kann -bis zu 50% der Gesamtarbeit an einem Programm ausmachen. -#on("b")#ls-Menu-Generator#off("b")# soll Ihnen helfen, diese Arbeit zu -verringern.  -  -   Alle Informationen, die ein Menu betreffen, sind in -der sogenannten 'Menukarte' abgelegt. Wird nun ein Pro -gramm unter #on("b")#ls-DIALOG#off("b")# aufgerufen, so wird die entspre -chende Menukarte aus der "Menukarten - Sammeltask" ('ls- -MENUKARTEN') geholt und an das System angekoppelt. An -schließend wird dem Anwender das Menu auf dem Bildschirm -angeboten.  -   Das Erstellen solcher Menukarten ist mit dem Genera -torprogramm sehr einfach - es wird in Kapitel 4 beschrie -ben. Allerdings sollten Sie nicht die Arbeit unterschät -zen, die Sie für eine sorgfältig erstellte, mit allen In -formationtexten gefüllte Menukarte aufwenden müssen!  -  -   Bei den meisten Programmmen reicht aber ein einfaches -Menu nicht aus. Bei vielen Verarbeitungsfunktionen ist -es notwendig, mit dem Anwender einen Dialog zu führen: -z.B. muß ein Dateiname erfragt, eine Information ausgege -ben und bestätigt, eine Auswahl oder eine Entscheidung -getroffen werden. Alle Möglichkeiten, die #on("b")#ls-DIALOG#off("b")# dazu -bereitstellt, sind in Kapitel 5 dokumentiert.  -  -   Einige Reihe von Verarbeitungsfunktionen treten in -nahezu jeder Anwendung auf (Datei- und Archivhandling). -Hier stellt #on("b")#ls-DIALOG#off("b")# schon vorgefertigte Module zur -Verfügung. In Kapitel 6 zeigen wir Ihnen, wie Sie auf die -se Module zugreifen und sie in Ihr Programmsystem ein -binden können. In Kapitel 7 zeigen wir Ihnen außerdem, -wie Sie eigene Fenster definieren können und welche Ope -rationen auf diesen Fenstern zur Verfügung stehen.  - diff --git a/doc/menugenerator/menu-generator handbuch.2 b/doc/menugenerator/menu-generator handbuch.2 deleted file mode 100644 index 696ed28..0000000 --- a/doc/menugenerator/menu-generator handbuch.2 +++ /dev/null @@ -1,87 +0,0 @@ -#type ("prop.lq")##limit (11.0)##pagelength (16.5)##block#  -#start (2.0,0.0)#  -#page (6)#  -#headodd#  -#center#ls-Menu-Generator#right#%  -  -#end#  -#headeven#  -%#center#ls-Menu-Generator  -  -#end#  -#type ("prop.breit.lq")#  -#center#2  -  -#center#Installation  -#center#von  -#center#ls-Menu-Generator  -#type ("prop.lq")#  -  -  -   Bevor Sie #on("b")#ls-Menu-Generator#off("b")# auf Ihrem System benut -zen können, müssen Sie das Programm zunächst installie -ren. Wenn #on("b")#ls-Menu-Generator#off("b")# auf Ihrem System schon zur -Verfügung steht, können Sie dieses Kapitel ruhig über -springen.  -  -  -2.1  Voraussetzungen  -  -   Um #on("b")#ls-Menu-Generator#off("b")# auf Ihrem Computer betreiben -zu können, muß das EUMEL-Betriebssystem (Multi-User- -Version) installiert und das Programmpaket #on("b")#ls-DIALOG#off("b")# -(Version 1.1) bereits insertiert sein.  -  -  -2.2  Lieferumfang  -  -   #on("b")#ls-Menu-Generator#off("b")# wird auf einer Diskette geliefert, -die alle notwendigen Programme enthält. Folgende Dateien -sollten sich auf der Diskette befinden:  -  -         "fonttab.ls-Menu-Generator"  -         "ls-MENUBASISTEXTE"  -         "Generatordatei: Archivmenu"  -         "ls-Menu-Generator 1"  -         "ls-Menu-Generator 2"  -         "ls-Menu-Generator/gen"  -  -   Eventuell können noch weitere Namen auf der Diskette -vorhanden sein.  -  -  -2.3  Installation  -  -Die Installation erfolgt in #on("u")#zwei Schritten#off("u")#:  -  -   #on("u")#Zunächst#off("u")# muß die mitgelieferte Fonttabelle -('fonttab.ls-Menu-Generator') in die Task 'configurator' -geholt werden. Da Sie aus dem 'UR-Zweig' des EUMEL- -Systems keinen schreibenden Zugriff auf die Task -'configurator' haben, müssen Sie die Task 'configurator' -an Ihr Terminal koppeln und die Datei 'fonttab.ls-Menu- -Generator' von der Diskette in die Task kopieren.  -   #on("u")#Anschließend#off("u")# kann #on("b")#ls-Menu-Generator#off("b")# in einer Task -installiert werden, in der bereits das Programm #on("b")#ls-DIALOG#off("b")# -zur Verfügung steht. Richten Sie also eine Task als Sohn -der Task ein, in der auf Ihrem Computer bereits #on("b")#ls-DIALOG#off("b")# -installiert ist. Legen Sie dann die Archivdiskette ein, -auf der sich #on("b")#ls-Menu-Generator#off("b")# befindet und geben Sie -die folgenden Kommandos:  -  -   archive("ls-Menu-Generator") <RETURN>  -  -   fetch("ls-Menu-Generator/gen",archive) <RETURN>  -  -   run <RETURN>  -  -   Sie haben damit das Generatorprogramm gestartet; die -Installation wird automatisch durchgeführt. Lassen Sie -während des gesamten Vorgangs die Archivdiskette einge -legt. Die Generierung ist beendet, wenn der EUMEL-Ein -gangsbildschirm erscheint. Die Task, in der die Generie -rung stattfindet, wird automatisch zur Managertask, das -heißt, daß Söhne von ihr eingerichtet werden können.  -  -  - diff --git a/doc/menugenerator/menu-generator handbuch.3 b/doc/menugenerator/menu-generator handbuch.3 deleted file mode 100644 index e982988..0000000 --- a/doc/menugenerator/menu-generator handbuch.3 +++ /dev/null @@ -1,155 +0,0 @@ -#block##pageblock#  -#pagenr("%",1)##setcount(1)##count per page#  -#headeven#  -gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#headodd#  -#right#gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#bottomeven#  -#center#____________________________________________________________  -3 - % #right#ERGOS  -#end#  -#bottomodd#  -#center#____________________________________________________________  -ERGOS #right# 3 - %  -#end#  -#ib#3 Die Arbeitsweise von gs-DIALOG#ie#  -  -  -In diesem Kapitel soll die grundsätzliche Arbeitsweise von gs-DIALOG erläutert -werden. Sie erfahren, wie das Menusystem aufgebaut ist, wie man Menukarten an -koppelt und Menus zur Ausführung bringt. Ebenso wird erläutert, wie eine Menukarte -aufgebaut ist.  -Wenn Sie die hier beschriebenen Vorgänge auf ihrem System nachvollziehen wollen, -so muß in Ihrer Task das Programm 'gs-DIALOG' zur Verfügung stehen!  -  -  -#ib#3.1  Ankoppeln einer Menukarte - Ausführen eines Menus#ie#  -  -Vereinfacht gesagt ist eine Menukarte ein Datenraum, in dem alle Informationen, die -zum Menu (zu den Menus) gehören, abgelegt sind. Der genaue Aufbau einer solchen -Menukarte wird in Kapitel 3.2 beschrieben.  -Alle Menukarten, die auf einem System zur Verfügung stehen, werden in einer zentra -len Task ('gs-MENUKARTEN') bereitgehalten. Die Menukarten können von hier -angefordert werden.  -Lassen Sie sich in Ihrem System eine Übersicht der vorhandenen Menukarten geben -(list (/"gs-MENUKARTEN") <RETURN> ). Darauf wird Ihnen gegebenenfalls folgen -de Übersicht angeboten:  -  -  01.09.87       "gs-MENUKARTE:Archiv"  -  01.09.87       "gs-MENUKARTE:Herbert und Robbi"  -  01.09.87       "gs-MENUKARTE:MP-BAP"  -  ...  -  -Zumindest die erste Menukarte müßte - sofern die gs-DIALOG-Basissoftware instal -liert ist - auf Ihrem System vorhanden sein. Die beiden anderen Menukarten sind -natürlich nur dann vorhanden, wenn Sie die Programme 'gs-Herbert und Robbi' -und 'gs-MP BAP' installiert haben.  -  -In einer weiteren Task (z.B. 'DIALOG') sind die Programme installiert, die es ermög -lichen, diese Menukarten zu handhaben. Alle Sohntasks dieser Task "erben" natür -lich diese Fähigkeiten. Von einer solchen Task aus kann nun eine Menukarte ange -fordert und ein darin enthaltenes Menu zur Ausführung gebracht werden. Das haben -Sie sicher schon oft gemacht, z.B. wenn Sie den Befehl 'archiv' gegeben haben. Was -hinter diesem Befehl steckt, sollen Sie sich jetzt klar machen:  -  -Wenn Sie den Befehl 'archiv' geben, wird zunächst die Menukarte -'gs-MENUKARTE:Archiv' aus der Task 'gs-MENUKARTEN' angefordert und in Ihre -Task kopiert. Davon merken Sie normalerweise nichts, denn nachdem die Ankopp -lung des Datenraumes (als unbenannter Datenraum) erfolgt ist, wird die Daten -raumkopie gelöscht; daher taucht der Name auch nie in Ihrer Dateiliste auf. Intern -vermerkt das System, welche Menukarte aktuell angekoppelt ist. Soll wiederholt -dieselbe Menukarte angekoppelt werden, so erübrigt sich das Kopieren aus der zen -tralen Bereitstellungstask.  -  -Nach dem Ankoppeln der Menukarte können Sie auf die in der Menukarte enthalte -nen Informationen zugreifen. Da in einer Menukarte mehrere Menus enthalten sein -können, müssen Sie dem System noch mitteilen, welches Menu aktiviert werden soll. -In der Menukarte 'gs-MENUKARTE:Archiv' ist nur ein Menu enthalten, das den -Namen 'ARCHIV' hat (der Name des Menus erscheint übrigens bei der Präsentation -immer oben links in der Kopfzeile).  -  -Sie sollen jetzt, ohne den Befehl 'archiv' zu verwenden, das Menu zur Ausführung -bringen. Geben Sie dazu die folgenden Kommandos in der 'gib kommando:'- Ebene:  -  -   #ib#install menu#ie# ("gs-MENUKARTE:Archiv");  -   #ib#handle menu#ie# ("ARCHIV")  -  -Mit dem ersten Befehl koppeln Sie die genannte Menukarte an, mit dem zweiten -Befehl bringen Sie das darin enthaltene Menu 'ARCHIV' zur Ausführung.  -Allerdings stellen Sie sicher auch einen Unterschied zur Ausführung des Befehls -'archiv' fest, denn dort erscheint nicht erst unser "Software - Emblem" auf dem -Bildschirm, sondern direkt das Menu.  -  -Wenn Ihnen eines der Programme 'gs-Herbert und Robbi' oder 'gs-MP BAP' -bekannt ist, haben Sie unser Emblem aber sicher schon gesehen - wir verwenden es -immer, um unsere Softwareprodukte kenntlich zu machen. Da man aber das Archiv -programm sehr häufig benötigt und es dann nur störend wirkt kann die Ausgabe -unterdrückt werden. Daher gibt es den Befehl 'install menu' in zwei Versionen. -Versuchen Sie es gleich einmal:  -  -   install menu ("gs-MENUKARTE:Archiv", FALSE);  -   handle menu ("ARCHIV")  -  -Die Präsentation des Menus erfolgt gleich aus zwei Gründen schneller als beim ersten -Mal: einerseits wurde auf die Ausgabe unseres Software - Emblems verzichtet, ande -rerseits brauchte die Menukarte nicht erneut aus der Task 'gs-MENUKARTEN' kopiert -zu werden, da sie ja schon angekoppelt war.  -Damit sind Sie nun in der Lage, Menukarten anzukoppeln und Menus zur Ausfüh -rung zu bringen.  -  -  -#ib#3.2    Aufbau/Inhalt einer Menukarte#ie#  -  -Eine Menukarte ist eine komplexe Datenstruktur, die bis zu 6 vollständige Menus -aufnehmen kann. Weiterhin sind eine Reihe von Texten in jeder Menukarte abgelegt, -auf die gs-DIALOG zurückgreift. Darüberhinaus kann der Anwendungsprogram -mierer bis zu 2000 Texte in die Menukarte auslagern, um so beim Insertieren seiner -Programme den Umfang an Paketdaten geringer zu halten.  -Auf den ersten Blick scheint es wenig Sinn zu machen, mehrere Menus in einer -Menukarte zu verwalten. Nehmen wir aber als Beispiel das Programmsystem -gs-Herbert und Robbi. Hier ist ein Programm in zwei unterschiedlichen Ausprä -gungen zu behandeln. Sowohl das Hamster- als auch das Robotermenu befinden sich -in einer Menukarte. Bei einem Wechsel zwischen den Modellen braucht also keine -neue Menukarte angefordert, sondern nur ein neues Menu aus der aktuellen Menu -karte aktiviert zu werden.  -Zum anderen ist gs-DIALOG schon auf umfangreichere Programmsysteme vorberei -tet: Es ist nämlich möglich, von einem Menu aus ein weiteres Menu aus der aktuellen -Menukarte zu aktivieren. Auf dem Bildschirm werden die beiden Menus dann ge -schachtelt (das zuletzt aktivierte vor dem aufrufenden Menu) angezeigt. Nach Verlas -sen der zweiten Menuebene gelangt der Benutzer automatisch in das Ausgangsmenu -zurück.  -Zwar ist es nicht möglich, mehr als zwei Menus gleichzeitig zu aktivieren (geschach -telt auf dem Bildschirm darzustellen), doch können an verschiedenen Stellen des -Ausgangsmenus ja unterschiedliche Menus aus der aktuellen Menukarte aktiviert -werden.  -  -Jedes Menu in der Menukarte wird durch einen Namen gekennzeichnet. Dieser Name -erscheint in der Kopfzeile oben links. Über diesen Namen kann das Menu aktiviert -werden.  -Ein Menu besteht aus den sogenannten 'Oberbegriffen', die in der Kopfzeile angezeigt -werden. In einer Kopfzeile können bis zu 10 Oberbegriffe verwaltet werden. Da zu -jedem Oberbegriff bis zu 15 Verarbeitungsfunktionen (in den Pull-Down-Menus) -verwaltet werden können, ist es möglich, in einem Menu bis zu 150 Verarbeitungs -funktionen abzulegen. Nutzt man alle 6 Menus einer Menukarte, so können maximal -bis zu 900 Verarbeitungsfunktionen in einer Menukarte verwaltet werden.  -  -Eine Verarbeitungsfunktion besteht aus der/dem  -  - - 'Ein-Zeichen-Kennung'   -  die angibt, durch welche Taste die Verarbei -                              tungsfunktion ggf. aktiviert werden kann;  - - 'Menupunktbezeichnung'  -  die im Pull-Down-Menu als Name für die -                              Verarbeitungsfunktion erscheint;  - - 'Funktionsaufruf'       -  dem Namen der Prozedur, die bei der Aktivie -                              rung des Menupunktes zur Ausführung ge -                              bracht wird;  - - 'Informationstext'      -  der zur aktuellen Verarbeitungsfunktion durch -                              Tippen der <?>-Taste abgerufen werden -                              kann.  - - diff --git a/doc/menugenerator/menu-generator handbuch.4 b/doc/menugenerator/menu-generator handbuch.4 deleted file mode 100644 index 97e7491..0000000 --- a/doc/menugenerator/menu-generator handbuch.4 +++ /dev/null @@ -1,424 +0,0 @@ -#block##pageblock#  -#pagenr("%",1)##setcount(1)##count per page#  -#headeven#  -gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#headodd#  -#right#gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#bottomeven#  -#center#____________________________________________________________  -4 - % #right#ERGOS  -#end#  -#bottomodd#  -#center#____________________________________________________________  -ERGOS #right# 4 - %  -#end#  -#ib#4 Erstellen einer neuen Menukarte#ie#  -  -  -Aus Kapitel 3 wissen Sie, wie man eine fertige Menukarte ankoppelt und wie man ein -darin enthaltenes Menu zur Ausführung bringen kann. Außerdem wissen Sie bereits, -welche Informationen in einer Menukarte untergebracht werden können. In diesem -Kapitel nun wollen wir Ihnen zeigen, wie Sie eine eigene Menukarte entwickeln -können.  -Damit Sie sich die Abläufe besser vorstellen können, werden wir die Vorgänge an -einem Beispiel aufzeigen: Wir wollen eine 'kleine Textverarbeitung' schaffen, deren -Verarbeitungsfunktionen über ein Menu angeboten werden.  -Es sei aber darauf hingewiesen, daß es nicht darum geht, eine voll funktionsfähige -Textverarbeitung auszuarbeiten - vielmehr sollen die Erstellung der Menukarte und -das Nutzen der durch gs-DIALOG bereitgestellten Werkzeuge exemplarisch auf -gezeigt werden.  -  -  -#ib#4.1  Eintragen der Menupunkte#ie#  -  -Unsere Menukarte soll den Namen 'Kleine Textverarbeitung' erhalten, das darin -enthaltene Menu den Namen 'SCRIPT'. Unter dem Oberbegriff 'Bearbeiten' sollen 5 -Verarbeitungsfunktionen angeboten werden. Insgesamt soll unser neues Menu fol -genden Aufbau haben:  -  -SCRIPT:  Bearbeiten  -  -    n Neu erstellen  -    a Ansehen/Ändern  -    ----------------  -    v Verzeichnis  -    ----------------  -    z Zeilenformtierung  -    s Seitenformatierung  -  -  -  -Zur Erzeugung der zugehörigen Menukarte schreiben Sie folgendes Pro -gramm in eine Datei:  -  -  -oeffne menukarte  ("Kleine Textverarbeitung");  -oeffne menu    ("SCRIPT");  -  -oberbegriff    ("Bearbeiten");  -  -menufunktion   ("n", "Neu erstellen", "neue datei editieren","");  -menufunktion   ("a", "Ansehen/Ändern", "alte datei editieren","");  -trennlinie;  -menufunktion   ("v", "Verzeichnis", "verzeichnis ausgeben","");  -trennlinie;  -menufunktion   ("z", "Zeilenformatierung", "zeilen formatieren","");  -menufunktion   ("s", "Seitenformatierung", "seiten formatieren","");  -  -schliesse menu;  -schliesse menukarte;  -  -  -Bevor wir Ihnen die Einzelheiten erklären, sollten Sie zuerst einmal Ihr neu erstelltes -Menu ausprobieren. Verlassen Sie dazu die Datei und geben Sie das Kommando 'run'. -Nachdem das von Ihnen geschriebene Programm übersetzt worden ist, meldet sich -der Menu-Generator.  -Die an Sie gestellte Frage 'Sollen auch Anwendungs texte in die Menukarte aufge -nommen werden (j/n)?' beantworten Sie einfach mit n(ein). Auf dem Bildschirm -wird angezeigt, wie die Menukarte erstellt wird. Auf das Ende der Menukartengenerie -rung wird hingewiesen. Wenn Sie sich jetzt die Dateiliste Ihrer Task anzeigen lassen, -taucht dort eine Datei mit Namen 'gs-MENUKARTE:Kleine Textverarbeitung' auf - das -ist die neue Menukarte.  -Sie möchten sicher gleich ausprobieren, ob das Menu Ihren Vorstellungen entspricht. -Geben Sie dazu das Kommando 'testinstallation ("gs-MENUKARTE:Kleine Textver -arbeitung")'. Bitte geben Sie den Text genauso ein wie hier angegeben!  -Nach kurzer Zeit erscheint der Hinweis 'Installation abgeschlossen!'. Geben Sie nun -den Befehl 'handle menu ("SCRIPT")'; hierdurch aktivieren Sie das von Ihnen neu -erstellte Menu - es erscheint auf dem Bildschirm.  -  -Über den Befehl '#ib#testinstallation#ie#' haben Sie sich sicher gewundert. Ihnen ist ja -schon der Befehl '#ib#install menu#ie#' bekannt. Dieser Befehl aber kann hier nicht ein -fach angewendet werden - er ist für den (späteren) "regulären Betrieb" vorgesehen. -Bedenken Sie bitte zweierlei: Die Menukarte befindet sich nur in Ihrer Task, 'install -menu' fordert die Menukarte aber aus der Task 'gs-MENU KARTEN' an. Ist eine -Menukarte schon angekoppelt gewesen, so wird nicht erneut angekoppelt, sondern -auf die angekoppelte Menukarte zurückgegriffen. Dies alles können wir bei der -Menukartenerstellung nicht gebrauchen!  -Der Befehl 'testinstallation' sendet automatisch die Menukarte zur Task -'gs-MENUKARTEN' und kennzeichnet Sie noch durch den eigenen Tasknamen (da -durch können sich beim Multiuserbetrieb unterschiedliche Anwender mit gleichem -Menukartennamen nicht gegenseitig stören). Die Menukarte wird anschließend in -jedem Falle 'frisch' angekoppelt, so daß Sie nach dem Befehl immer die aktuelle -Menukarte angekoppelt haben. Außerdem bleibt die Menukarte in Ihrer Task erhal -ten!  -  -Doch nun zur Erläuterung des oben notierten Programms:  -  -Ein Programm zur Erstellung einer Menukarte muß immer mit dem Befehl '#ib#oeffne -menukarte#ie#' beginnen und mit dem Befehl '#ib#schliesse menukarte#ie#' abgeschlos -sen werden. Der Befehl 'oeffne menukarte' hat einen Parameter (TEXT CONST) - -hierdurch wird festgelegt, welchen Namen die Menukarte haben soll. Durch das -Kommando 'oeffne menu karte ("Menu 1")' entsteht also die Menukarte 'gs-MENU -KARTE:Menu 1".  -In die Menukarte können jetzt bis zu 6 Menus eingetragen werden. Jeder Eintrag -eines Menus beginnt mit dem Befehl '#ib#oeffne menu#ie#' und endet mit dem Befehl -'#ib#schliesse menu#ie#'. Der Befehl 'oeffne menu' hat hier einen Parameter (TEXT -CONST) - hierdurch wird festgelegt, welchen Namen das Menu erhalten soll. Unter -diesem Namen kann später das Menu angesprochen werden (z.B. 'handle menu -("SCRIPT")'.  -  -Den Befehl 'oeffne menu' gibt es noch in zwei weiteren Ausführungen:  -Mit drei Textparametern - neben dem Namen des Menus können hier noch zwei -Prozedurnamen angegeben werden. Diese Prozeduren werden beim Einstieg in das -Menu bzw. beim Verlassen des Menus aufgerufen. Hiervon wird z.B. Gebrauch ge -macht, wenn das Archiv-Menu in eine Menukarte integriert ist: Wenn das Menu -verlassen wird, soll sichergestellt sein, daß das Archiv automatisch freigege ben wird. -Mehr hierüber erfahren Sie im Kapitel 6.1, in dem aufgezeigt wird, wie das Archiv- -Menu in andere Menus eingebunden wird.  -Mit sechs Textparametern - neben den eben genannten drei Parametern können noch -drei Texte übergeben werden. Diese Texte werden beim Aufruf des Menus unten -rechts auf dem Bildschirm ausgegeben. Bei unseren Software-Produkten (z.B. -'gs-Herbert und Robbi') machen wir davon Gebrauch, um Hinweise auf das -Produkt, die Versionsnummer etc. zu geben. Die Hinweise bleiben nur kurz auf dem -Bildschirm und verschwinden nach kurzer Zeit automatisch, oder wenn Sie irgen -deine Taste tippen. Bei der Notation der Texte müssen Sie sich allerdings an einige -Regeln halten (sehen Sie dazu Kapitel 5.12).  -  -Zwischen den Befehlen 'oeffne menu' und 'schliesse menu' werden nun die Oberbe -griffe (Kopfzeile) und die zugehörigen Verarbeitungsfunktionen eingetragen. Dabei -müssen Sie sich genau an folgende Abfolge halten:  -Zuerst wird jeweils der Oberbegriff genannt, der in der Kopfzeile auftauchen soll. -Direkt unter dem jeweiligen Oberbegriff werden die Menufunktionen eingetragen, die -im zugehörigen 'Pull-Down-Menu' als Verarbeitungsfunktionen angeboten werden -sollen. Die einzelnen Oberbegriffe mit Ihren zugehörigen Verarbeitungsfunktionen -werden blockweise hintereinander notiert. Dadurch ergibt sich die folgende Struktur:  -  -  -oeffne menu   ("Menuname");  -  -oberbegriff   ("Oberbegriff 1");  -  -menufunktion  ("1", "Verarbeitungsfunktion 1", "", "");  -menufunktion  ("2", "Verarbeitungsfunktion 2", "", "");  -...  -  -oberbegriff   ("Oberbegriff 2");  -  -menufunktion  ("1", "Verarbeitungsfunktion 1", "", "");  -menufunktion  ("2", "Verarbeitungsfunktion 2", "", "");  -...  -  -oberbegriff   ("Oberbegriff 3");  -  -menufunktion  ("1", "Verarbeitungsfunktion 1", "", "");  -menufunktion  ("2", "Verarbeitungsfunktion 2", "", "");  -...  -  -... schliesse menu;  -  -  -Die Oberbegriffe werden in die Kopfzeile von links nach rechts eingetragen. Maximal -können 10 Oberbegriffe eingetragen werden. Wählen Sie die Bezeichnungen nicht zu -lang, denn sie müssen alle neben dem Namen des Menus in der Kopfzeile Platz -finden (Ansonsten erhalten Sie hierauf bei der Menukartengenerierung einen Hin -weis, die Generierung wird abgebrochen!)!  -  -Den Befehl '#ib#oberbegriff#ie#' gibt es in zwei Versionen:  -In der hier aufgezeigten Version mit einem (TEXT-) Parameter: Hierdurch wird der -Oberbegriff in der Kopfzeile festgelegt. In der zweiten Version hat der Befehl drei -(TEXT-)Parameter: Durch den ersten wird - wie eben - die Kopfzeilenbezeichnung -festgelegt. Daneben können noch zwei Prozedurnamen angegeben werden. Die -Prozedur mit dem erstgenannten Namen wird beim Einstieg (vor dem "Ausklappen" -des Pull-Down-Menus) ausgeführt, die Prozedur mit dem zweitgenannten Namen vor -dem Ausstieg ("Einklappen"). Beim 'Archiv-Pull-Down-Menu' machen wir hiervon -Gebrauch. Beim Einstieg wird dafür gesorgt, daß nur bestimmte Verarbeitungsfunk -tionen aktivierbar sind; beim Ausstieg wird sichergestellt, daß das Archivlaufwerk -automatisch freigegeben wird.  -  -Unter einem Oberbegriff können Sie bis zu 15 Verarbeitungsfunktionen in ein Pull- -Down-Menu eintragen. Die Verarbeitungsfunktionen können Sie optisch vonein ander -trennen. Dafür steht der Befehl '#ib#trennlinie#ie#' zur Verfügung. Aber beachten Sie, er -belegt den gleichen Platz wie eine Verarbeitungsfunktion.  -  -Zum Eintragen einer Verarbeitungsfunktion steht der Befehl '#ib#menufunktion#ie#' zur -Verfügung. Der Befehl besitzt vier (TEXT-)Parameter. Die ersten beiden Parameter -werden auch auf dem Bildschirm ausgegeben.  -Der erste Parameter legt fest, über welche Taste diese Verarbeitungsfunktion direkt -zur Ausführung gebracht werden kann. Wenn eine Eintragung erfolgt, muß diese aus -genau einem Zeichen bestehen. Innerhalb eines Pull-Down-Menus muß dieses -Zeichen eindeutig sein, d.h. es darf nur einmal verwendet werden. Ansonsten er -scheint bei der Menugenerierung eine Fehlermeldung.  -Der zweite Parameter ist die Bezeichnung der Verarbeitungsfunktion, die dem Be -nutzer im Pull-Down-Menu angeboten wird. Wählen Sie die Bezeichnung bitte immer -prägnant und möglichst mit dem Buchstaben beginnend, den Sie auch als ersten -Parameter angegeben haben! Der Länge dieser Bezeichnung ist nur durch die Bild -schirmbreite (nicht mehr als 60 Zeichen) begrenzt, allerdings wählt  gs-DIALOG die -Breite des Pull-Down-Menus nach der längsten Bezeichnung, die im jeweiligen Pull- -Down-Menu auftritt. Wenn die Bezeichnungen ganz unterschiedlich lang sind, sieht -das nicht sonderlich gut aus, aber probieren Sie es ruhig einmal aus und entscheiden -Sie selbst.  -  -Der dritte Parameter ist der Name der Prozedur, die bei der Aktivierung der Verarbei -tungsfunktion ausgewählt werden soll. Zum Zeitpunkt der Erstellung und des Testens -des Menusystems braucht diese Prozedur noch nicht zu existieren. Damit ist es -möglich, die Menuentwicklung völlig unabhängig von der Entwicklung der Verarbei -tungsfunktionen zu betreiben; Sie brauchen nur die späteren Namen der aufzurufen -den Prozeduren festzulegen! Aktivieren Sie eine solche Verarbeitungsfunktion im -Pull-Down-Menu, die noch nicht fertiggestellt ist, so erscheint der Hinweis 'unbe -kanntes Kommando' - das kann aber auch geschehen, wenn die Verarbeitungsfunk -tion schon existiert, Sie aber bei der Eintragung einen (Schreib-)Fehler gemacht -haben!  -  -Der vierte Parameter ist der Text, der als sogenannter Infotext ausgegeben wird wenn -Sie auf die entsprechende Verarbeitungsfunktion positioniert haben und hier die -<?>-Taste tippen. In unserem Beispiel haben wir keinen Infotext eingetragen. -Versuchen Sie im Menu jetzt die <?>-Taste zu tippen, so erscheint der Hinweis -'Leider ist zu diesem Menupunkt kein Info-Text eingetragen!'. Für die Handhabung -des Menus sind diese Informationstexte nicht wichtig, sie dienen ausschließlich der -Information des Benutzers.  -Die Arbeit zur Formulierung/Abfassung dieser Texte sollten Sie nicht unterschätzen. -Sie sollten sich bei einer ernsthaften Anwendung aber diese Arbeit machen. Gerade -der Anfänger, der mit Ihrem Menusystem arbeitet, wird Ihnen diese Arbeit danken. -Wie Sie diese Texte komfortabel erstellen und in die Menutafel einbinden können, -erklären wir Ihnen im nächsten Kapitel.  -  -  -#ib#4.2  Erstellung und Einbinden von Informationstexten#ie#  -  -Bisher haben wir noch keine Informationstexte zu den Menupunkten in die Menu -karte eingetragen. Diese Eintragung erfolgt über den vierten Parameter des Befehls -'menufunktion'. Möchten Sie dort nur einige wenige Worte eintragen, so kann das -direkt geschehen. Meist aber sind die Informationen zu einem Menupunkt doch -länger, sie erstrecken sich über mehrere Zeilen.  -Zur Übergabe des Informationstextes steht aber nur ein Textparameter zur Verfügung. -Würde man längere Texte direkt eintragen, wäre das bei der Menukartenerstellung -sicher sehr unübersichtlich. Zum anderen benötigt gs-DIALOG den Text schon in -aufbereiteter Form, d.h. es müssen z.B. Zeilenenden etc. kenntlich gemacht wer den.  -Damit Sie sich nun nicht alle Regeln der Texterstellung für gs-DIALOG merken -müssen, bietet Ihnen gs-Menu-Generator eine komfortable Möglichkeit, diese -Informationstexte zu entwickeln. Wir wollen das an einem Beispiel verdeutlichen:  -  -Erzeugen Sie sich eine Datei mit dem Namen 'Textprobe' und schreiben Sie z.B. -folgenden Text, der ein Informationstext zum Menupunkt 'Neu erstellen' sein könnte, -hinein:  -  -Text neu erstellen  -  -Das System erfragt zunächst den Namen für die Datei, in die  -der neue Text geschrieben werden soll. Anschließend wird eine  -leere Datei mit dem gewünschten Namen zum Beschreiben  -angeboten.  -Das Schreiben in eine solche Datei wird durch viele Hilfen  -erleichtert. Deshalb ist es ratsam, sich nach und nach mit  -den Möglichkeiten, die der Editor bietet, vertraut zu machen.  -Die Möglichkeiten sind im EUMEL-Benutzerhandbuch ausführlich  -beschrieben.  -  -Verlassen Sie nun die Datei und geben Sie in der 'gib kommando:'-Ebene folgendes -Kommando:  -  -    #ib#textprozedur#ie# ("Textprobe", "mein erster infotext")  -  -Auf dem Bildschirm erscheint zunächst der Hinweis 'Bitte warten ...', anschließend -werden Sie - wie aus der Textverarbeitung (lineform) bekannt - aufgefordert, entspre -chende Trennungen vorzunehmen.  -Das eben eingegebene Kommando bewirkt nämlich, daß der in der Datei 'Textprobe' -enthaltene Text für gs-DIALOG so aufbereitet wird, daß er in einer Box innerhalb des -Menus eingeblendet werden kann. Die Zeilen werden auf die entsprechende Länge -zugeschnitten und der Text in den Zeilen wird geblockt, soweit Sie keine Absatzmarke -(<RETURN>) gesetzt haben.  -Der so den Regeln von gs-DIALOG entsprechend aufbereitete Text wird automatisch -in eine Textprozedur "verpackt", die den von Ihnen als zweiten Parameter übergebe -nen Namen erhält. Beachten Sie deshalb bei der Festlegung des Namens, daß er mit -einem Kleinbuchstaben beginnt und weiterhin nur Kleinbuchstaben, Ziffern und -Leerzeichen enthält!  -Diese Textprozedur finden Sie anschließend in der Datei 'Textprobe.a'. An der En -dung '.a' können Sie erkennen, daß in dieser Datei ein "aufbereiteter" Text enthalten -ist.  -Wenn Sie sich, nachdem auf dem Bildschirm der Hinweis 'Textprozedur ist erstellt!' -erschienen ist, die Datei 'Textprobe.a' ansehen, so hat diese folgenden Inhalt:  -  -  -TEXT PROC mein erster infotext:  -" Text neu erstellen "13"" +  -"   "13"" +  -" Das System erfragt zunächst den Namen für die Datei, in die der "13""+  -" neue Text geschrieben werden soll. Anschließend wird eine leere "13""+  -" Datei mit dem gewünschten Namen zum Beschreiben angeboten. "13""+  -" Das Schreiben in eine solche Datei wird durch viele Hilfen er-"13""+  -" leichtert. Deshalb ist es ratsam, sich nach und nach mit den Mög-"13""+  -" lichkeiten, die der Editor bietet, vertraut zu machen. "13"" +  -" Die Möglichkeiten sind im EUMEL-Benutzerhandbuch ausführlich be-"13""+  -" schrieben.  "  -END PROC mein erster infotext;  -  -  -Kopieren Sie nun den Inhalt der Datei 'Textprobe.a' in die Datei, in die Sie das Pro -gramm zur Generierung Ihrer Menukarte geschrieben haben und ergänzen Sie die -Ein tragung beim ersten Menupunkt in folgender Weise:  -  -  -TEXT PROC mein erster infotext:  -" Text neu erstellen "13"" +  -"   "13"" +  -" Das System erfragt zunächst den Namen für die Datei, in die der"13""+  -" neue Text geschrieben werden soll. Anschließend wird eine leere"13""+  -" Datei mit dem gewünschten Namen zum Beschreiben angeboten. "13""+  -" Das Schreiben in eine solche Datei wird durch viele Hilfen er-"13""+  -" leichtert. Deshalb ist es ratsam, sich nach und nach mit den Mög-"13""+  -" lichkeiten, die der Editor bietet, vertraut zu machen. "13""+  -" Die Möglichkeiten sind im EUMEL-Benutzerhandbuch ausführlich be-"13""+  -" schrieben. "  -END PROC mein erster infotext;  -  -oeffne menukarte ("Kleine Textverarbeitung");  -oeffne menu ("SCRIPT");  -  -oberbegriff ("Bearbeiten");  -  -menufunktion ("n", "Neu erstellen", "neue datei editieren",  -                                     mein erster infotext);  -menufunktion ("a", "Ansehen/Ändern","alte datei editieren", "");  -trennlinie;  -menufunktion ("v", "Verzeichnis", "verzeichnis ausgeben", "");  -trennlinie;  -menufunktion ("z", "Zeilenformatierung", "zeilen formatieren", "");  -menufunktion ("s", "Seitenformatierung", "seiten formatieren", "");  -  -schliesse menu;  -schliesse menukarte;  -  -  -Starten Sie erneut das Programm mit 'run' und erstellen Sie dadurch eine neue -Menukarte. Installieren Sie anschließend die neue Menukarte mit dem Kommando -'test installation ("gs-MENUKARTE:Kleine Textverarbeitung")' und bringen Sie das -Menu mit dem Kommando 'handle menu ("SCRIPT")' zur Ausführung. Wenn Sie jetzt -auf dem Menu punkt 'n Neu erstellen' die <?>-Taste tippen, erscheint der von -Ihnen eingegebene Infotext in einer Box innerhalb des Menus. Die Größe der Box -wird automatisch durch den Text bestimmt. Die Box ist maximal 65 Zeichen breit -und 14 Zeilen hoch.  -  -Nachdem Sie nun in der Lage sind, solche Informationstexte zu erstellen und sie in -die Menukarte einzubinden, möchten wir Ihnen noch einige Möglichkeiten der -"Kosmetik solcher Informationstexte" aufzeigen.  -Häufig möchte man die Überschrift eines solchen Informationstextes zentriert über -dem Text dargestellt haben. Das läßt sich auch hier einfach bewerkstelligen: Schrei -ben Sie dazu als erstes Zeichen der Zeile, die zentriert werden soll, das Zeichen '%' -und schließen Sie die Zeile mit einer Absatzmarke (<RETURN>) ab.  -Möchten Sie innerhalb des Textes eine Textpassage invers dargestellt haben, so kenn -zeichnen Sie den Anfang der Inversdarstellung durch das Zeichen '$' und das Ende -der Inversdarstellung durch das Zeichen '&'. Der Text wird anschließend entspre -chend aufbereitet. Allerdings sollte die Textpassage nicht über Zeilengrenzen hinaus -gehen!  -Möchten Sie in unserem Beispiel die Überschrift zentriert und invers dargestellt -haben, so ersetzen Sie die erste Zeile der Datei 'Textprobe' durch die Zeile: %$Text -neu erstellen&. Wenn Sie anschließend den gesamten oben beschriebenen Vorgang -wiederholen, erscheint die Überschift zentriert und invers dargestellt innerhalb der -Box im Menu.  -  -  -#ib#4.3  Auslagerung von anwendungsbezogenen Texten in die -Menukarte#ie#  -  -Wie schon in Kapitel 3.2 erwähnt, kann der Anwendungsprogrammierer bis zu 2000 -Texte aus seinen Programmen in die Menukarte auslagern, um so den Umfang an -Paketdaten geringer zu halten, allerdings darf die Gesamtkapazität einer Menukarte -(eines Datenraumes) dabei nicht überschritten werden.  -  -Die Texte müssen in einer Datei zeilenweise notiert sein. Sie müssen (wie TEXT-Deno -ter) in Anführungsstriche eingefaßt sein, allerdings dürfen die Texte länger als -(normale) TEXT-Denoter (255 Zeichen) sein. Innerhalb der Textzeile dürfen auch die -Ausgabecodes "4", "5", "7", "10", "13", "14", und "15" verwendet werden. Innerhalb -der Textzeile darzustellende Anführungszeichen unterliegen den gleichen Besonder -heiten wie sonst auch bei TEXT-Denotern.  -Machen wir ein Beispiel! Schreiben Sie in eine Datei mit Namen 'Neue Texte' die -folgenden Zeilen:  -  -"Dieses ist der erste eingetragene Text!"  -"Hier ist eine "15"Markierung"14" im Text!"  -"Dieses ist die letzte Zeile!"  -  -Um diese Texte in die Menukarte einzubinden, starten Sie jetzt noch einmal Ihr -Generierungprogramm für die Menukarte. Auf die Frage 'Sollen auch Anwendungstex -te in die Menukarte aufgenommen werden (j/n) ?' antworten Sie jetzt allerdings mit -j(a). Daraufhin werden Ihnen die in Ihrer Task vorhandenen Dateien zur Auswahl -angeboten. Kreuzen Sie die Datei 'Neue Texte' an, in der ja die eben genannten Texte -eingetragen sind.  -Bei der Menukartengenerierung werden die Texte aus der Datei in die Menukarte -eingebunden. Sollten Sie bei Notierung der Texte in der Datei formale Fehler gemacht -haben, so werden Sie darauf hingewiesen.  -Um nun auf die eingelagerten Texte zurückgreifen zu können, muß erst einmal die -neue Menukarte angekoppelt werden. Wie das geht, wissen Sie ja schon ('testin stalla -tion').  -Mit dem Befehl '#ib#anwendungstext#ie# (INT CONST zeilennummer)' (1 <= zeilen -nummer <= 2000) wird Ihnen nun der Text, der in der angegebenen Zeile steht, -geliefert. Probieren Sie es doch gleich an Ihrer Menukarte aus: 'put (anwendungs -text (1))', 'put (anwendungstext (2))' usw.. Die eingelagerten Texte müßten jetzt auf -dem Bildschirm erscheinen. Geben Sie eine Zeilennummer an, die nicht belegt ist, so -wird der Text 'Kein Text vorhanden!' geliefert.  -  -Es können natürlich auch Texte abgelegt werden, die von gs-DIALOG aus aufgegrif -fen werden. Zur Konvertierung von Informationstexten steht die Prozedur '#ib#text zeile#ie# -(TEXT CONST dateiname)' zur Verfügung. Diese Prozedur arbeitet genauso wie die -Prozedur 'textprozedur', nur wird in der Ausgabedatei ('dateiname.a') der formatierte -Text nicht als Textprozedur, sondern als einzeiliger Text geliefert. Sie können aber -auch für gs-DIALOG Texte "von Hand" gestalten. Dazu müssen Sie sich an die -Regeln für die Texte für gs-DIALOG halten, die in Kapitel 5.12 erläutert sind.  - - diff --git a/doc/menugenerator/menu-generator handbuch.5 b/doc/menugenerator/menu-generator handbuch.5 deleted file mode 100644 index c002f1a..0000000 --- a/doc/menugenerator/menu-generator handbuch.5 +++ /dev/null @@ -1,975 +0,0 @@ -#block##pageblock#  -#pagenr("%",1)##setcount(1)##count per page#  -#headeven#  -gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#headodd#  -#right#gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#bottomeven#  -#center#____________________________________________________________  -5 - % #right#ERGOS  -#end#  -#bottomodd#  -#center#____________________________________________________________  -ERGOS #right# 5 - %  -#end#  -#ib#5  Dialoge innerhalb des Menus#ie#  -  -  -In Kapitel 4 haben Sie erfahren, wie Sie eine eigene Menukarte entwickeln können; -sicher haben Sie das schon ausprobiert und sich Ihr selbstgestaltetes Menu auf dem -Bildschirm angesehen. Bislang erscheint aber noch der Hinweis 'unbekanntes Kom -mando', wenn Sie eine Menufunktion aktivieren - denn die Prozeduren, die Sie bei -der Aktivierung der Menufunktion aufrufen, sind ja noch nicht fertiggestellt!  -Bei vielen Menufunktionen ist es notwendig, mit dem Benutzer noch einen Dialog zu -führen: z.B. muß ein Dateiname erfragt, eine Information ausgegeben und bestätigt, -eine Auswahl oder eine Entscheidung getroffen werden. In diesem Kapitel sollen -Ihnen nun die Möglichkeiten vorgestellt werden, die Ihnen zur Verfügung stehen, um -einen solchen Dialog mit dem Benutzer zu führen. Dieser Dialog wird innerhalb des -Menus geführt. Alle Prozeduren, die sich auf diesen Menu-Dialog beziehen, enthalten -deshalb den Wortbestandteil 'menu'.  -  -Hier noch einige Tips! Damit Sie Ihre Menu-Dialoge testen können, empfiehlt -sich folgendes Vorgehen: Sie erstellen zuerst Ihre Menukarte und tragen schon die -Namen für die jeweils aufzurufenden Prozeduren ein - wie wir es in Kapitel 4 ge -macht haben. Mit 'testinstallation' installieren Sie dann in Ihrer Task die neue Menu -karte.  -Nun schreiben Sie Ihre Prozeduren, die Sie unter das Menu legen wollen. Ist eine -Prozedur "testreif", so müssen Sie sie zunächst insertieren, denn das Menusystem gs- -DIALOG kann nur auf insertierte Prozeduren zugreifen. Anschließend rufen Sie das -Menu (z.B. 'SCRIPT') aus der Menukarte mit dem Befehl 'handle menu ("SCRIPT")' -(Hier ist der jeweilige Menuname einzusetzen!) auf. Wenn Sie den entsprechenden -Menupunkt aktivieren, müßte Ihr Programm ablaufen.  -Es ist günstig, eine eigene Task zum Testen der Prozeduren anzulegen, damit diese -hin und wieder gelöscht werden kann.  -  -  -#ib#5.1  Eingabe eines Textes/Namens#ie# ('#ib#menuanswer#ie#')  -  -Wenn der Benutzer in unserem Beispiel die Menufunktion 'Neu erstellen' aktiviert -hat, muß der Name der Datei erfragt werden, die neu erstellt werden soll. Dafür steht -die Prozedur 'menuanswer' zur Verfügung. Die in die Menukarte eingetragene Proze -dur 'neue datei editieren' (Siehe Kapitel 4.1) könnte dann folgendermaßen aussehen:  -  -  -PROC neue datei editieren:  -  TEXT VAR dateiname := menuanswer ("Bitte den gewünschten Dateinamen:",  -                                    "", 5);  -  IF dateiname <> "" AND NOT exists (dateiname)  -     THEN command dialogue (FALSE); #ib#cursor on#ie#;  -          edit (dateiname);  -          #ib#cursor off#ie#; command dialogue (TRUE);  -          regenerate menuscreen      (* sehen Sie dazu Kapitel 5.10 *)  -  FI  -END PROC neue datei editieren;  -  -  -Schauen wir uns zuerst die Prozedur 'menuanswer' an. Die Prozedur hat drei Para -meter. Mit dem ersten Parameter legen Sie den Text fest, der innerhalb der Box -ausgegeben wird, die auf dem Bildschirm erscheint. Der Text dient ausschließlich der -Information des Anwenders.  -Mit dem zweiten Parameter können Sie dem Benutzer einen Vorschlag für die Einga -be machen, der zum Editieren ausgegeben wird. Da eine solche Vorgabe aber in die -ser Situation sinnlos wäre, verzichten wir darauf ("").  -  -Die auf dem Bildschirm erscheinende Box hat folgendes Aussehen:  -  -       +-------------------------------------+  -       I  Bitte den gewünschten Dateinamen:  I  -       I                                     I  -       I                                     I  -       I  Eingabe:                           I  -       +-------------------------------------+  -  -  -Die Boxbreite und -höhe wird vom System automatisch anhand des von Ihnen als -ersten Parameter übergebenen Textes festgelegt. Sie haben noch verschiedene Mög -lichkeiten, diesen Text zu gestalten (mehrere Zeilen, Inversdarstellung etc.) - auf -diese Möglichkeiten gehen wir in Kapitel 5.13 detailliert ein.  -In unserem Beispiel erscheint die Box in der Mitte des Menubildschirms. Diese -Festlegung treffen wir durch die Angabe der Position '5' als dritten Parameter. Sie -können hier zwischen 5 verschiedenen Positionen wählen: 1 - oben links, 2 - oben -rechts, 3 - unten links, 4 - unten rechts, 5 - zentral im Menubildschirm - mehr dazu -in Kapitel 5.12.  -  -Mit dem Erscheinen der obigen Box auf dem Bildschirm ändert sich automatisch -auch die Fußzeile im Menu, über die der Benutzer Informationen zur Bedienung -erhält. Hier erscheint der Hinweis: 'Fertig: <RETURN>  Abbruch: <ESC><h>'. -Um diese Hinweise brauchen Sie sich aber nicht zu kümmern , da sie alle automa -tisch gesetzt werden.  -Die Prozedur 'menuanswer' hat noch folgende Besonderheit: Es ist nicht möglich, -den Namen 'break' einzugeben! Diese Eingabe wird automatisch abgefangen. Es hat -sich gezeigt, daß Anwender manchmal versuchen, über <ESC><q> die Eingabe -zu verlassen. In diesem Falle entstünde hier eine Datei mit Namen 'break' - was aber -nicht sinnvoll wäre.  -Nach der Eingabe liefert die Prozedur 'menuanswer' als Wert den vom Benutzer -eingegebenen Text - dabei sind führende und folgende Leerzeichen schon abgeschnit -ten ('compress'). Wurde die Prozedur mit <ESC><h> verlassen, so wird niltext -geliefert.  -  -Wird in obiger Prozedur die Eingabe mit <ESC><h> abgebrochen oder existiert -bereits eine Datei mit dem eingegebenen Namen, so verschwindet die Box, und der -Menubildschirm wird automatisch in den alten Zustand gebracht.  -Wenn schon eine Datei mit dem Namen existiert, dann wäre es sinnvoll, den Benutzer -darauf aufmerksam zu machen. Wie ein solcher Hinweis in das Menu eingeblendet -werden kann, erklären wir im Kapitel 5.2.  -  -gs-DIALOG ist so geschrieben, daß der Cursor möglichst wenig störend wirkt. Aus -diesem Grunde wird der Cursor immer an einer Stelle "geparkt". Sofern Ihr System es -zuläßt und eine entsprechende Anpassung vorliegt, wird der Cursor ganz ausgeschal -tet. Denken Sie bitte daran, auch wenn er auf Ihrem Bildschirm ständig sichtbar ist!  -Wenn also jetzt eine Eingabe erfolgen soll, ist es notwendig, den Cursor anzuschalten. -Wenn Sie wieder in das Menu zurückkehren, sollte der Cursor wieder ausgeschal -tet werden, damit er dort nicht stört.  -Wenn Sie die Prozedur 'edit' mit einem neuen Namen als Parameter aufrufen, erfragt -das System, ob die Datei neu eingerichtet werden soll. Diese Anfrage muß hier unter -drückt werden, damit nicht irgendwelche Texte in den Menubildschirm geschrieben -werden. Das Unterdrücken der Abfrage erreichen Sie durch Ausschalten des Kom -mandodialoges. Nach Einrichten der Datei muß der Kommandodialog aber wieder -eingeschaltet werden, da gs-DIALOG das Eingeschaltetsein für eine fehlerfreie Funk -tion voraussetzt!  -  -Mit dem Befehl '#ib#regenerate menuscreen#ie#' (sehen Sie dazu auch Kapitel 5.10) wird der -aktuelle Menubildschirm erneut vollständig auf den Bildschirm geschrieben (repro -duziert). Das ist notwendig, weil die Prozedur 'edit' den Bildschirm benutzt hat. -Durch diesen Befehl wird der Menubildschirm exakt in der Form hergestellt, wie er -zuletzt ausgesehen hat. Auch wenn Sie geschachtelte Menubildschirme haben, wer -den diese durch den einen Befehl reproduziert. So können Sie in Ihren Verarbei -tungsfunktionen mit dem Bildschirm "machen was Sie wollen" - Sie kehren mit dem -letztgenannten Befehl immer wieder so in das Menu zurück, wie Sie es verlassen -haben.  -  -  -#ib#5.2  Ausgabe einer Information#ie# ('#ib#menuinfo#ie#')  -  -In der Prozedur 'neue datei editieren' (Kapitel 5.1) wäre es sinnvoll, den Benutzer zu -informieren, wenn bereits eine Datei mit dem eingegebenen Namen existiert. Hierfür -steht die Prozedur 'menuinfo' zur Verfügung.  -  -Beispiel:  -  -menuinfo (" Eine Datei mit dem Namen "13"     existiert schon!");  -  -Dadurch wird folgende Box ins Menu geschrieben:  -  -          +----------------------------+  -          I                            I  -          I  Eine Datei mit dem Namen  I  -          I      existiert schon       I  -          I                            I  -          +----------------------------+  -  -Die Box erscheint in der Mitte des Menus (Position 5); in der Fußzeile wird der Hin -weis ausgegeben 'Zum Weitermachen bitte irgendeine Taste tippen!'. Dann wartet das -System so lange, bis eine Taste gedrückt wird. Anschließend wird der aktuelle Menu -schirm wiederhergestellt.  -Die Prozedur 'menuinfo' gibt es noch in zwei weiteren Versionen, nämlich mit zwei -bzw. drei Parametern. Im ersten Fall kann über den zweiten Parameter noch die -Position (1, 2, 3, 4, 5) innerhalb des Menubildschirmes  festgelegt werden (sehen Sie -dazu Kapitel 5.12). Mit dem dritten Parameter kann ggf. noch die Wartezeit festgelegt -werden, die das System maximal verstreichen läßt, bevor es von sich aus das Pro -gramm fortsetzt.  -  -'menuinfo (" Eine Datei mit dem Namen "13" existiert schon!", 3, 40)'  -  -gibt die oben gezeigte Box aus, aber links unten in der Ecke des Menubildschirms -(Position 3). Das System wartet (maximal) 4 Sekunden (40 Zehntel) und setzt dann - -auch ohne Tastendruck - das Programm fort. Diese Prozedur mit gesondert angege -bener Wartezeit verwendet man dann, wenn man nicht unbedingt die Kenntnisnahme -der Information durch den Benutzer bestätigt haben möchte.  -  -  -#ib#5.3  Auswahl eines Namen durch Ankreuzen#ie# ('#ib#menuone#ie#')  -  -Während bei der Neuerstellung einer Datei ein Name neu erfragt werden muß, kann -man beim Menupunkt 'Ansehen/Ändern' auf schon vorhandene Dateien zugreifen. -Sie können dem Benutzer z.B. alle Dateien in der Task zur Auswahl anbieten. Sobald -der Benutzer einen Namen angekreuzt hat, soll die entsprechende Datei geöffnet wer -den. Dafür steht der Befehl 'menuone' zur Verfügung:  -  -  -PROC alte datei editieren:  -  TEXT CONST kopf      :: "Textdatei ansehen/ändern",  -             hinweis   :: "Bitte gewünschte Datei ankreuzen";  -  TEXT VAR   dateiname := menuone (ALL myself, kopf, hinweis, FALSE);  -  IF dateiname <> ""  -     THEN #ib#cursor on#ie#;  -          edit (dateiname);  -          #ib#cursor off#ie#;  -  FI;  -  regenerate menuscreen  -END PROC alte datei editieren;  -  -  -Die Prozedur 'menuone' hat 4 Parameter: Als erster Parameter ist ein Thesaurus zu -übergeben, in dem die zur Auswahl stehenden Namen enthalten sind. Zum Thesau -rushandling werden noch einige zusätzliche Funktionen zur Verfügung gestellt (z.B. -daß nur Dateien eines bestimmten Typs zur Auswahl angeboten werden können) - -diese Funktionen werden in Kapitel 5.14 erläutert. In unserem Beispiel werden alle -Dateien zur Auswahl angeboten, die in der Task zur Verfügung stehen.  -Die beiden Texte, die als 2. und 3. Parameter übergeben werden, erscheinen zur -Kennzeichnung im Kopf der Auswahlliste. Der als zweiter Parameter übergebene Text -erscheint zentriert und invers dargestellt auf dem Bildschirm, der als dritter Parame -ter übergebene Text nur zentriert. Es ist sinnvoll, mit dem ersten Text (2.Parame -ter) die zur Zeit aktivierte Menufunktion anzuzeigen, denn der Menubildschirm wird -ja durch die Auswahlliste überschrieben. So kann sich der Benutzer besser im Menu -system orientieren.  -Mit dem 4. Parameter wird festgelegt, ob der Bildschirm nach der Auswahl "ge -reinigt", d.h. der alte Menubildschirm wiederhergestellt werden soll. Da in unserem -Falle normalerweise im Anschluß an die Auswahl eine Datei auf dem Bildschirm -editiert wird, verzichten wir auf die "automatische Regenerierung" des Menubild -schirms. Dieses besorgen wir nach dem Editieren durch das Kommando 'regenerate -menuscreen' "von Hand".  -Auf das Fenster, das für die Auswahl auf dem Bildschirm angezeigt wird, können Sie -keinen Einfluß nehmen - es wird vom System selbständig festgelegt. Dadurch können -Sie die Auswahl, wie auch die anderen Dialogkomponenten ebenso in geschachteleten -Menus aufrufen, ohne daß es zu Problemen kommt.  -  -  -#ib#5.4  Auswahl mehrerer Namen durch Ankreuzen#ie# ('#ib#menusome#ie#')  -  -Es ist nicht immer sinnvoll, daß der Benutzer nur einen Namen auswählen, d.h. -ankreuzen kann. Bei der Zeilenformatierung könnte man z.B. zulassen, daß gleich -mehrere Dateinamen angekreuzt werden können. Im Anschluß an die Auswahl sollen -dann alle angekreuzten Dateien mit 'lineform' bearbeitet werden. Für diesen Zweck -steht die Prozedur 'menusome' zur Verfügung. Sie hat die gleichen Parameter wie die -in 5.3 erläuterte Prozedur 'menuone' - nur daß hier die Auswahl mehrerer Namen -möglich ist. Verläßt der Benutzer die Auswahl durch <ESC><q>, so wird ein -Thesaurus mit allen angekreuzten Namen geliefert; bei Verlassen mit <ESC><h> -ein leerer Thesaurus. Beispiel:  -  -  -PROC zeilen formatieren:  -  TEXT CONST kopf          :: "Textdateien zeilenweise formatieren",  -             hinweis       :: "Bitte gewünschte Dateien ankreuzen";  -  THESAURUS VAR dateinamen := menusome (ALL myself, kopf, hinweis, -  FALSE);  -  cursor on;  -  formatiere dateien;  -  cursor off;  -  regenerate menuscreen.  -  -  formatiere dateien:  -    INT VAR zaehler;  -    FOR zaehler FROM 1 UPTO highest entry (dateinamen) REP  -      IF name (dateinamen, zaehler) <> ""  -         THEN lineform (name (dateinamen, zaehler))  -      FI  -    PER  -END PROC zeilen formatieren;  -  -  -  -#ib#5.5  Eingabe eines Textes/Namens - alternativ: Auswahl  -     durch Ankreuzen#ie# ('#ib#menuanswerone#ie#','#ib#menuanswersome#ie#')  -  -Sehr häufig kommt es vor, daß der Benutzer auf die zuletzt bearbeitete Datei zurück -greifen will. In Kapitel 5.3 haben wir dem Benutzer bei der Menufunktion 'Anse -hen/Ändern' gleich alle Dateien zur Auswahl angeboten. Hier wäre es vielleicht gün -stiger gewesen, ihm die zuletzt bearbeitete Datei anzubieten und erst auf Wunsch die -Liste aller Dateien zum Ankreuzen. Das läßt sich auf verschiedene Weise realisieren - -wir werden Ihnen in diesem und in den folgenden Kapiteln verschiedene Möglich -keiten aufzeigen:  -  -Sie können z.B. mit der Prozedur 'menuanswerone' arbeiten. Wie Sie schon aus dem -Namen entnehmen können, handelt es sich dabei um eine Prozedur, die eigentlich -aus zwei Prozeduren, nämlich 'menuanswer' und 'menuone' zusammengesetzt ist.  -Stellen Sie sich vor, sie führen den Namen der zuletzt bearbeiteten Datei in Ihrem -Programm unter der Variablen 'letzte datei'. Dann könnte die Prozedur 'alte datei -editieren' aus Kapitel 5.3 auch folgendermaßen geschrieben werden:  -  -  -TEXT VAR letzte datei;  -...  -  -  -PROC alte datei editieren:  -  TEXT CONST hinweis letzte :: "Zuletzt bearbeitete Datei:",  -             kopf           :: "Textdatei ansehen/ändern",  -             hinweis        :: "Bitte gewünschte Datei ankreuzen";  -  TEXT VAR   dateiname      :=  menuanswerone (hinweis letzte,  -                                               letzte datei,  -                                               ALL myself, kopf,  -                                               hinweis, FALSE);  -  IF dateiname <> ""  -     THEN cursor on;  -          edit (dateiname);  -          letzte datei := dateiname;  -          cursor off;  -  FI;  -  regenerate menuscreen  -END PROC alte datei editieren;  -  -  -Insgesamt hat die Prozedur 6 Parameter: Die ersten beiden Parameter beziehen sich -auf die Eingabe ('menuanswer'). Wie dort kann auch hier der Text festgelegt werden, -der in der Box auf dem Bildschirm erscheint.  -Der zweite Parameter ist der Text, der dem Benutzer zum Editieren angeboten wird - -hier der zuletzt benutzte Dateiname. Möchte der Benutzer auf die Datei mit dem an -gebotenen Namen zugreifen, braucht er nur mit <RETURN> zu bestätigen.  -Möchte er die Auswahl zum Ankreuzen angeboten bekommen, so braucht er nur die -Tastenfolge <ESC><z> (für 'Zeigen') zu tippen. Auf diese Auswahl beziehen sich -die letzten 4 Parameter, die die gleiche Bedeutung haben wie bei der Prozedur -'menuone'. Auf die Möglichkeit, durch <ESC><z> eine Auswahl angeboten zu -bekommen, wird in der Fußzeile des Menus hingewiesen.  -  -Aber Achtung! Sie sollten sich einer "Gefahr" bei diesem Vorgehen bewußt sein. Der -Benutzer hat natürlich so die Möglichkeit, auch einen anderen Namen als den vorge -schlagenen anzugeben - einen Namen, der noch nicht in der Dateiliste enthalten ist. -In einem solchen Falle würde Ihnen bei obiger Prozedur der Menubildschirm "ka -puttgeschrieben", denn das System fragt (bei eingeschaltetem Kommandodialog) an, -ob eine Datei mit dem Namen eingerichtet werden soll. Für diesen Fall sollten Sie also -unbedingt eine Vorsorge treffen (z.B. indem Sie den Benutzer darauf hinweisen, daß -der eingegebene Name nicht akzeptiert wird)!  -  -Sie vermuten sicher schon ganz richtig, daß es entsprechend auch die Prozedur -'menuanswersome' gibt, die zunächst einen Dateinamen erfragt und auf Wunsch -eine Auswahl anbietet, in der mehrere Dateinamen angekreuzt werden können. Die -Prozedur hat ebenfalls 6 Parameter, die identisch zur Prozedur 'menuanswerone' -sind. Allerdings liefert die Prozedur 'menuanswersome' in jedem Fall einen Thesau -rus; wurde die Auswahl mit <ESC><h> abgebrochen, so liefert sie einen leeren -Thesaurus.  -  -  -#ib# 5.6  Die Ja/Nein - Entscheidung#ie# ('#ib#menuyes#ie#','#ib#menuno#ie#')  -  -In Kapitel 5.5 trat das Problem auf, daß der Benutzer einen "unzulässigen" Namen -eingeben konnte. Dieses Problem können wir umgehen: Wir fragen den Benutzer ein -fach, ob er mit der zuletzt bearbeiteten Datei arbeiten will und lassen Ihm nur die -Chance, mit 'Ja' oder 'Nein' zu antworten. Im ersten Fall bieten wir ihm eben diese -Datei an - ansonsten die Auswahl zum Ankreuzen.  -  -Hierfür stehen die Prozeduren 'menuyes' und 'menuno' zur Verfügung, die von Ihrer -Funktion her den Ihnen bekannten Prozeduren 'yes' und 'no' gleichen. Die beiden -Menu-Prozeduren haben jeweils zwei Parameter:  -  -  -TEXT VAR letzte datei;  -...  -  -PROC alte datei editieren:  -  TEXT CONST kopf    :: "Textdatei ansehen/ändern",  -             hinweis :: "Bitte gewünschte Datei ankreuzen";  -  TEXT VAR dateiname;  -  IF menuyes (" Wollen Sie mit der Datei "13"" +  -              " '" +letzte datei+ "'"13" arbeiten", 5)  -     THEN editiere letzte datei  -     ELSE dateiname  :=  menuone (ALL myself, kopf, hinweis, FALSE);  -          editiere ausgewaehlte datei  -  FI;  -  regenerate menuscreen.  -  -  editiere letzte datei:  -    cursor on; edit (letzte datei); cursor off.  -  -  editiere ausgewaehlte datei:  -    IF dateiname <> ""  -       THEN cursor on; edit (dateiname); cursor off;  -            letzte datei := dateiname  -    FI  -END PROC alte datei editieren;  -  -  -Über den zweiten Parameter legen Sie die Position auf dem Bildschirm innerhalb des -Menus fest (1, 2, 3, 4, 5; sehen Sie auch Kapitel 5.12). Der erste Parameter ist ein -Text, welcher der gs-DIALOG-Syntax gehorchen muß (die Codes "13" bewirken -einen Zeilenvorschub; sehen Sie auch Kapitel 5.13). Er wird in einer Box auf den -Bildschirm geschrieben und durch 'Ja  Nein' ergänzt:  -  -  -          +-----------------------------+  -          I                             I  -          I   Wollen Sie mit der Datei  I  -          I   'Dateiname'               I  -          I   arbeiten?                 I  -          I                             I  -          I          Ja    Nein         I  -          I                             I  -          +-----------------------------+  -  -Für 'Dateiname' ist auf Ihrem Bildschirm dann natürlich der aktuelle Inhalt von -'letzte datei' eingetragen.  -Die Prozedur 'menuyes' liefert TRUE, wenn mit 'Ja' geantwortet wurde und FALSE, -wenn mit 'Nein' geantwortet wurde. Die Prozedur 'menuno' wirkt wie 'NOT menuyes'. -Nach Eingabe von 'Ja', 'Nein' (durch Tippen der Anfangsbuchstaben oder Positionie -rung auf die Antwort und anschließendem <RETURN>) wird der Menubildschirm -automatisch regeneriert. Auch die entsprechenden Hinweise in der Fußzeile werden -natürlich automatisch gesetzt.  -  -  -#ib#5.7  Die Alternativentscheidung#ie# ('#ib#menualternative#ie#')  -  -Im letzten Kapitel haben wir Ihnen die Prozeduren 'menuyes' und 'menuno' in Ihrer -Wirkungsweise erläutert. Eigentlich sind die beiden Prozeduren nur ein (häufig -benötigter) Spezialfall der Prozedur 'menualternative'. Die Funktionsweise der Proze -dur 'menualternative' dürfte Ihnen schon aus dem 'Archivmenu' bekannt sein: Wenn -Sie eine neue Zieltask einstellen, werden Ihnen nämlich vier Alternativen zur Auswahl -angeboten (Archiv, Vatertask, PUBLIC, Sonstige Task).  -Auf unsere Textverarbeitung bezogen könnten wir z.B. vor der Zeilenformatierung -(lineform) über die Alternativentscheidung den gewünschten Schrifttyp abfragen. Wir -wollen dem Benutzer in diesem Beispiel fünf Schrifttypen (schmal, elite, pica, letter, -groß) zur Auswahl anbieten:  -  -  -  -TEXT VAR schrifttyp;  -...  -  -PROC schrifttyp waehlen:  -  TEXT CONST info :: "        Auswahl der Schrifttypen: "13""13""  -                   + "    s ... schmal (17 Zeichen pro Zoll) "13""  -                   + "    e ... elite  (12 Zeichen pro Zoll) "13""  -                   + "    p ... pica   (10 Zeichen pro Zoll) "13""  -                   + "    l ... letter (Proportionalschrift) "13""  -                   + "    g ... groß   ( 5 Zeichen pro Zoll)   ",  -  -           liste  :: "schmal"13"elite"13"pica"13"letter"13"groß",  -           tasten :: "seplgSEPLG";  -  -  INT VAR auswahl := menualternative (info, liste, tasten, 5, TRUE);  -  SELECT auswahl OF  -     CASE 1, 101, 106: schrifttyp := "17"  -     CASE 2, 102, 107: schrifttyp := "12"  -     CASE 3, 103, 108: schrifttyp := "10"  -     CASE 4, 104, 109: schrifttyp := "prop"  -     CASE 5, 105, 110: schrifttyp := "5"  -     OTHERWISE (* behalte alten Schrifttyp bei *)  -  END SELECT  -END PROC schrifttyp waehlen;  -  -  -Hätten wir diese Prozedur in unsere Prozedur 'zeilen formatieren' eingebunden, so -zeigte sich bei Aktivierung folgende Einblendung in den Menubildschirm:  -  -  -  -    +---------------------------------------+  -    I                                       I  -    I       Auswahl der Schrifttypen:       I  -    I                                       I  -    I   s ... schmal (17 Zeichen pro Zoll)  I  -    I   e ... elite  (12 Zeichen pro Zoll)  I  -    I   p ... pica   (10 Zeichen pro Zoll)  I  -    I   l ... letter (Proportionalschrift)  I  -    I   g ... groß   ( 5 Zeichen pro Zoll)  I  -    I                                       I  -    I schmal   elite   pica   letter   groß I  -    I                                       I  -    +---------------------------------------+  -  -Die Prozedur 'menualternative' besitzt insgesamt 5 Parameter. Wie Ihnen schon von -von anderen Prozeduren bekannt ist, wird mit dem vorletzten (4.) Parameter die -Position innerhalb des Menubildschirms bestimmt - hier also die Plazierung in die -Mitte des Menubildschirms.  -Mit dem 5. Parameter können Sie noch festlegen, ob der Benutzer die Möglichkeit -haben soll, die Alternativauswahl mit <ESC><h> abzubrechen (bei TRUE, wie im -Beispiel) oder eben nicht.  -  -Mit dem 1. Parameter wird der Informationstext festgelegt, der auf dem Bildschirm -innerhalb der Box erscheinen soll. Für die Funktion der Alternativauswahl ist die -ser Inhalt völlig belanglos - er dient ausschließlich der Information des Benutzers. -Der Text kann - wie hier - z.B. durch eine Einteilung in Zeilen gestaltet werden -(durch den Code "13").  -Der Text in den Zeilen sollte nicht zu breit sein, da er noch in eine Box innerhalb des -Menubildschirms hineinpassen muß! Damit es auch bei geschachtelten Menus zu -keinen Problemen kommt, sollte eine Zeile nicht breiter als 64 Zeichen sein. Aber -keine Angst: Sie können gs-DIALOG durch zu lange Texte nicht durcheinanderbrin -gen - wenn Ihr Text zu breit ist, wird er rigoros abgeschnitten und einfach nicht -angezeigt.  -  -Mit dem 2. Parameter übergeben Sie die Auswahlliste, die in der letzten Zeile der Box -dargestellt wird. Hier dürfen insgesamt bis zu 10 Alternativen angegeben werden - -bedenken Sie dabei aber unbedingt, daß diese Liste ebenfalls nicht zu lang werden -darf (ebenfalls höchstens 64 Zeichen).  -Zwischen jeder von Ihnen notierten Alternative muß zur Kennung der Code "13" -eingetragen werden - wie oben im Beispiel gezeigt. Da nachher in der Box zwischen -den einzelnen Alternativen je drei Leerzeichen eingefügt werden, können Sie sich -immer an der von Ihnen übergebenen Zeichenkette orientieren. Hat Ihre Auswahlliste -nicht mehr als 64 Zeichen, dann ist sie in jedem Falle auf dem Bildschirm darstell -bar.  -Über diese Auswahlliste erfolgt normalerweise die Auswahl. Mit den Cursortasten links -und rechts kann der Benutzer auf die gewünschte Alternative positionieren (auf dem -Bildschirm invers dargestellt) und dann die <RETURN>-Taste tippen.  -Die Prozedur 'menualternative liefert dann einen Zahlenwert, nämlich die Position -der gewählten Alternative in der als 2. Parameter übergebenen Liste (wird in unse -rem Beispiel die Alternative 'letter' gewählt, so liefert die Prozedur den Wert 4). -Haben Sie den Abbruch durch <ESC><h> zugelassen (5. Parameter), so wird im -Falle eines solchen Abbruchs der Wert '0' geliefert.  -  -Mit dem 3. Parameter können Sie noch festlegen, über welche Tasten eine Auswahl -erfolgen soll. Wenn Sie hier niltext ("") angeben, ist eine Auswahl über die Tasten -nicht möglich. Im Beispiel haben wir hier die Anfangsbuchstaben der im Text ge -nannten Schrifttypen gewählt und als Eingabe sowohl Klein- als auch Großbuchsta -ben gestattet. Erfolgt nun die Auswahl über das Tippen einer zugelassenen Taste, -dann wird Ihre Position in der im 3. Parameter übergebenen Zeichenkette ermittelt -und der Wert '100' dazuaddiert. Tippt in unserem Falle der Benutzer die Taste -<L>, wird der Wert '109' geliefert.  -  -Es erfolgt übrigens kein Hinweis in der Fußzeile, ob eine Auswahl über das Tippen -einer Taste möglich ist! Wenn Sie von der Möglichkeit Gebrauch machen, sollten Sie -dieses durch die Gestaltung Ihres Informationstextes andeuten - wie wir es im Bei -spiel auch getan haben.  -  -  -#ib#5.8  Die Menunotiz#ie# ('#ib#write menunotice#ie#', '#ib#erasemenunotice#ie#')  -  -Innerhalb des Menus können Sie für den Benutzer auch eine Notiz ablegen. Wir -machen z.B. bei der Archivverwaltung Gebrauch davon. Dort wird nämlich ständig -angezeigt, mit welcher Task kommuniziert wird und - sofern es sich um einen Ar -chivmanager handelt - wie die (angemeldete) Diskette heißt. Wenn Sie z.B. dem -Benutzer das aktuelle Datum im Menu anzeigen wollen, insertieren Sie die folgende -Prozedur:  -  -  -PROC datum anzeigen:  -  write menunotice ("Datum: " + date, 4)  -END PROC datum anzeigen;  -  -  -Die Prozedur 'write menunotice' besitzt zwei Parameter. Mit dem ersten Parameter -wird der Text übergeben, der in der Box ausgegeben werden soll. Er unterliegt eben -falls der gs-DIALOG-Syntax für Texte. Durch den zweiten Parameter wird wieder die -Position innerhalb des Menus festgelegt (hier rechts unten: Position 4).  -  -Wenn Sie jetzt in Ihrer Menukarte die Prozedur 'oberbegriff  ("Bearbeiten")' in fol -gender Weise abändern:  -  -  -   oberbegriff ("Bearbeiten", "datum anzeigen", "erase menunotice")  -  -  -dann wird jedesmal, wenn das Pull-Down-Menu unter dem Oberbegriff 'Bearbeiten' -aufgefaltet wird, unten rechts (Position 4) das aktuelle Datum in einer Box ange -zeigt. Diese Notiz verschwindet, wenn in ein anderes Pull-Down-Menu gewechselt -wird.  -  -Auf den ersten Eindruck scheinen die Prozeduren 'write menunotice' und 'menuinfo' -gleich zu sein - das ist aber nicht der Fall: Bei 'menuinfo' wird der Text in einer Box -ausgegeben und so lange gewartet, bis der Benutzer eine Taste getippt hat (oder die -angegebene Zeit verstrichen ist). Bei 'write menunotice' wird ebenfalls ein Text in -einer Box auf den Menubildschirm geschrieben. Diese Box bleibt aber über längere -Zeit bestehen (auf Erscheinen und Verschwinden kann der Benutzer selbst keinen -Einfluß nehmen!) - und zwar solange, bis die Notiz gelöscht wird (mit 'erase menu -notice'; in unserem Beispiel, wenn das Pull-Down-Menu gewechselt wird) oder durch -ein neues 'write menunotice' überschrieben wird. In einem Menu kann nämlich zu -einem Zeitpunkt nur eine Menunotiz abgelegt werden.  -Wenn der Bildschirm durch gs-DIALOG-Prozeduren überschrieben wird, wird die -Menunotiz ebenfalls ständig mitaufgefrischt, und auch, wenn Sie den Befehl 'regene -rate menuscreen' oder 'refresh submenu' geben.  -  -  -#ib#5.9  Fußzeilen im Menu#ie# ('#ib#menufootnote#ie#', '#ib#oldmenufootnote#ie#')  -  -In den Fußzeilen innerhalb des Menus werden dem Benutzer Bedienhinweise ange -zeigt. Die Fußzeile wird aber auch dazu benutzt, den Benutzer über Prozesse zu -informieren, die im Hintergrund ablaufen - erst recht dann, wenn Sie einige Zeit in -Anspruch nehmen. Sie zeigen dem Benutzer an, daß er nicht "unruhig" zu werden -braucht, sondern das System "mit sich" beschäftigt ist.  -Im allgemeinen braucht sich der Programmierer um diese Fußnoten nicht zu küm -mern, denn sie werden von den einzelnen Komponenten des Systems automatisch -gesetzt. Wir können aber z.B. dem Benutzer einen Hinweis geben, wenn unter dem -Menupunkt 'Verzeichnis' eine Liste erstellt wird. Die Prozedur könnte dann folgen -dermaßen notiert werden:  -  -  -PROC verzeichnis ausgeben:  -  menufootnote ("Bitte warten... Ich erstelle eine Dateiliste");  -  FILE VAR f :: sequential file (output, "Dateiliste");  -  list (f); modify (f);  -  old menufootnote;  -  entferne eigenen namen;  -  zeige liste an;  -  forget ("Dateiliste", quiet).  -  -  entferne eigenen namen:  -    TEXT VAR zeile :: ""; INT VAR i;  -    FOR i FROM lines (f) DOWNTO 1 REP  -      to line (f, i);  -      read record (f, zeile);  -    UNTIL pos (zeile, "Dateiliste") > 0 PER;  -    delete record (f).  -  -  zeige liste an:  -    to line (f, 1);  -    menuwindowshow (f)         (* Sehen Sie Kapitel 5.11.1*)  -END PROC verzeichnis ausgeben;  -  -  -Beachten Sie, daß der Text nicht länger als 64 Zeichen ist, damit er auch bei ge -schachtelten Menus vollständig ausgegeben werden kann. Sollte der Text dennoch zu -lang sein, wird er vom System auf die entsprechende Länge gestutzt.  -Haben Sie mit 'menufootnote' eine eigene Fußzeile gesetzt, so können Sie die da -durch gelöschte Zeile durch den Befehl 'old menufootnote' wieder hinschreiben. -Ansonsten wird Ihre Fußzeile von der nächsten automatisch (d.h. vom System) ge -setzten Fußnote überschrieben. In dem obigen Beispiel hätten Sie also gut auf den -Befehl 'old menufootnote' verzichten können.  -  -Durch 'old menufootnote' wird die letzte Fußnote, die automatisch vom System ge -setzt wurde, reproduziert. Der in der obigen Prozedur verwendete Befehl 'menuwin -dowshow' ist bisher noch nicht erläutert. Sehen Sie dazu bitte das Kapitel 5.11.1.  -  -  -#ib#5.10  Wiederherstellung des Menubildschirms#ie# ('#ib#regenerate -      menuscreen#ie#','#ib#refresh submenu#ie#')  -  -Der Befehl 'regenerate menuscreen' ist Ihnen schon aus diversen Beispielprogram -men dieses Handbuches bekannt. Ist der Menubildschirm "kaputtgeschrieben" oder -der Bildschirm für andere Zwecke benutzt worden, so läßt sich durch diesen Befehl -der Menubildschirm in seinem letzten Zustand reproduzieren (auch bei geschachtel -ten Menus!). Durch den Befehl wird der Bildschirm gelöscht und komplett neu -aufgebaut.  -  -Ein vollständiger Bildschirmaufbau ist aber gar nicht immer nötig. Wenn Sie sicher -sind, daß durch Ihre Operationen nur der Bereich zwischen den beiden durchgezo -genen Linien, die die Kopf- und Fußzeile abtrennen, betroffen ist, brauchen Sie nur -den Befehl 'refresh submenu' zu geben. Hierdurch wird das aktuelle Pull-Down- -Menu neu aufgebaut und - sofern gesetzt - die Menunotiz. Wenn möglich, ist er dem -Befehl 'regenerate menuscreen vorzuziehen, da hierfür weniger Zeit benötigt wird -und weniger "Unruhe" auf dem Bildschirm entsteht.  -Sorgen Sie aber unbedingt dafür, daß der von Ihnen benutzte Bildschirmbereich -zuvor "gereinigt" wird, denn das besorgt 'refresh subnmenu' nicht!  -  -  -#ib#5.11  Arbeiten im Menufenster#ie#  -  -Neben den vorab aufgezeigten Möglichkeiten können Sie innerhalb des Menus auch -noch ein Fenster öffnen. Innerhalb dieses Fensters stehen Ihnen alle Möglichkei -ten zur Verfügung, die Sie auch sonst zum Beschreiben des gesamten Bildschirms -haben - und noch einiges mehr.  -Wir machen z.B. intensiv beim Archivhandling Gebrauch davon. So werden Ihnen -Verzeichnisse angezeigt, Sie können verfolgen, wie die einzelnen Dateien vom Archiv -geholt werden oder dorthin geschrieben werden und einiges mehr. In diesem Kapitel -wollen wir Ihnen die Möglichkeiten aufzeigen, die Sie innerhalb des Menufensters -haben.  -  -Auf die Größe des Menufensters haben Sie keinen Einfluß, sie wird vom System ge -setzt ("normales" Menu: 77 Zeichen breit und 20 Zeichen hoch; geschachteltes -Menu: 71 Zeichen breit und 16 Zeichen hoch). Hierdurch ist sichergestellt, daß alle -Operationen auch in geschachtelten Menus ohne Probleme ausführbar sind. Alle -Prozeduren, die sich auf Aktionen im Menufenster beziehen, enthalten die Silbe -'menuwindow'.  -Sie können mit den hier beschriebenen Prozeduren ähnlich arbeiten, wie mit den -entsprechenden Prozeduren ohne den Wortbestandteil 'menuwindow' auf dem -ganzen Bildschirm. Allerdings gibt es einige Unterschiede, auf die Sie achten sollten!  -  -  -5.11.1  Datei anzeigen/editieren  -        ('#ib#menuwindowshow#ie#', '#ib#menuwindowedit#ie#')  -  -Von der Prozedur 'menuwindowshow (FILE VAR f)' haben wir im letzten Kapitel -schon Gebrauch gemacht, um das Verzeichnis der Dateien in der Task innerhalb des -Menus anzuzeigen. Die Prozedur gibt es in zwei Versionen mit je einem Parameter.  -Einmal kann, wie im vorigen Kapitel, ein FILE angegeben werden, andererseits kann -auch der Name der anzuzeigenden Datei als Text übergeben werden ('menuwindow -show (TEXT CONST dateiliste)'). Durch den Befehl wird innerhalb des Menus ein -umrandetes Fenster geöffnet, in der das angegebene File/die Datei angezeigt wird. Bei -'menuwindowshow' kann die Datei nur eingesehen, nicht aber schreibend verändert -werden.  -Die Prozedur 'menuwindowedit' gibt es ebenfalls in den zwei Ausprägungen. Sie -verhält sich zur vorgenannten identisch - nur kann hier auch die Datei schreibend -verändert werden.  -  -  -5.11.2  Menufenster öffnen/anzeigen ('#ib#show menuwindow#ie#')  -  -Wenn Sie eigene Operationen in einem Fenster im Menu ausführen lassen wollen, -muß dieses Fenster zunächst auf dem Bildschirm angezeigt werden. Durch den -Befehl 'show menuwindow' wird ein entsprechender Rahmen innerhalb des Menus -ausgegeben und der Bereich innerhalb dieses Rahmens (das Fenster) gelöscht.  -Auf die Größe des Fensters innerhalb des aktuellen Menus können Sie - wie bereits -eingangs gesagt - keinen Einfluß nehmen.  -Zu einem Zeitpunkt kann immer nur ein Menufenster geöffnet sein, da das Fenster -schon den größtmöglichen sinnvollen Bereich des aktuellen Menus belegt. Ein er -neutes 'show menuwindow' hätte die gleiche Wirkung wie das nachfolgend beschrie -bene 'menuwindowpage' - nur wird hier zusätzlich noch der Rahmen des Fensters -mitausgegeben.  -  -  -5.11.3  Menufenster löschen (putzen) ('#ib#menuwindowpage#ie#')  -  -Durch den Befehl 'menuwindowpage' wird das Fenster innerhalb des aktuellen -Menus gelöscht; der Rahmen des Fensters bleibt bestehen, da er nicht mit zum ei -gentlichen Fenster gehört. Durch den Befehl wird der Menubildschirm nicht(!) -rekonstruiert!  -  -  -5.11.4  Positionierungen im Menufenster  -        ('#ib#menuwindowline#ie#', '#ib#menuwindowcursor#ie#')  -  -Mit 'menuwindowline' wird, wie auch sonst auf dem Bildschirm, an den Anfang der -nächsten Zeile positioniert. Diesen Befehl gibt es, ebenso wie den Befehl 'line' (der -auf dem Gesamtbildschirm operiert) ohne und mit einem Parameter. Durch 'menu -windowline (3)' wird an den Anfang der "drittnächsten" Zeile innerhalb des Menu -fensters positioniert.  -  -Aber Achtung! Der Befehl 'menuwindowline' weist einen deutlichen Unterschied zum -Ihnen bekannten Befehl 'line' auf. Wird nämlich die untere Fenstergrenze überschrit -ten, so rollt (scrollt) der Bildschirm nicht um die entsprechenden Zeilen nach oben, -wie Sie es von 'line' gewohnt sind - statt dessen wird der Fensterinhalt gelöscht und -wieder oben im Fenster zu schreiben begonnen. Es erscheint, als ob auf ein neues -Fenster positioniert würde.  -Innerhalb des Fensters können Sie auch den Cursor positionieren, wie Sie es vom -Bildschirm gewohnt sind - allerdings nur innerhalb der aktuell gültigen Grenzen. In -einem Menu ist das Fenster 77 Zeichen breit und 20 Zeichen hoch; in einem ge -schachtelten Menu 71 Zeichen breit und 16 Zeichen hoch.  -Wird außerhalb des aktuellen Menufensters positioniert, wird das Fenster gelöscht -und die Fensterposition (1, 1) angenommen.  -  -  -5.11.5  Informationen über die aktuelle Menu-Fenster position ('#ib#get -menuwindowcursor#ie#', '#ib#remaining menuwindowlines#ie#')  -  -Mit der Prozedur 'get menuwindowcursor (INT VAR spalte, zeile)' kann die aktuelle -Position des Cursors innerhalb des Menufensters erfragt werden. Die Prozedur hat -zwei Parameter, die als 'INT VAR' deklariert sein müssen. Der erste Parameter enthält -anschließend die aktuelle Spalte, der zweite die aktuelle Zeile.  -  -Mit der werteliefernden Prozedur 'remaining menuwindowlines' kann die Anzahl der -noch verbleibenden Zeilen innerhalb des aktuellen Menufensters erfragt werden. Die -Prozedur wurde deshalb zur Verfügung gestellt, weil der Fensterinhalt - im Gegensatz -zum normalen Bildschirm - nicht gescrollt werden kann. So können Sie sich vorab -informieren, ob der Text, der von Ihnen ausgegeben werden soll, noch Platz findet, so -daß während der Ausgabe nicht plötzlich der Fensterinhalt gelöscht wird.  -  -  -5.11.6  Ausgabe/Eingabe innerhalb des Menufensters  -        ('#ib#menuwindowout#ie#', '#ib#menuwindowget#ie#',  -         '#ib#menuwindoweditget#ie#', '#ib#menuwindowyes#ie#',  -         '#ib#menuwindowno#ie#')  -  -Innerhalb des Menufensters können mit der Prozedur 'menuwindowout' Texte ausge -geben werden - die Prozedur hat einen TEXT-Parameter. Sollen INTEGER- oder REAL- -Werte ausgegeben werden, so müssen diese Werte zuerst in Texte konvertiert werden.  -Bitte beachten Sie unbedingt, daß innerhalb des Fensters nicht gescrollt wird und -auch kein Zeilenumbruch stattfindet! Ist ein Text länger als die verbleibende Restzei -le, so wird der Text bis zum Fensterende ausgegeben und die Ausgabe am Anfang der -nächsten Zeile fortgesetzt. So ist sichergestellt, daß in keinem Falle die Fenstergren -zen überschritten werden.  -Sobald die letzte Position des aktuellen Menufensters beschrieben ist (unten rechts in -der Fensterecke), wird der Fensterinhalt komplett gelöscht und die Ausgabe in der -ersten Zeile des "neuen" Fensters fortgesetzt. Auf Zeilenumbruch und Scrolling wurde -verzichtet, da der Realisierungsaufwand dafür zu hoch gewesen wäre.  -  -Mit der Prozedur 'menuwindowget (TEXT VAR text)' können Sie auch Texte innerhalb -des Menufensters einlesen - INTEGER-/ REAL-Werte müssen ggf. von Hand konvertiert -werde. Die Eingabe wird durch <RETURN> abgeschlossen. Es muß mindestens ein -Zeichen (ungleich Leerzeichen) eingegeben werden. Von der Eingabe werden die -führenden Leerzeichen abgeschnitten.  -Ist der einzugebende Text länger als die noch verbleibende Restzeile, so wird der Text -in der Restzeile gescrollt. Sind in der aktuellen Zeile weniger als 7 Zeichen für die -Eingabe vorhanden, so wird automatisch für die Eingabe an den Anfang der nächsten -Zeile positioniert.  -  -Ab gs-DIALOG-Version 1.1 steht auch die Prozedur 'menuwindoweditget (TEXT VAR -text)' zur Verfügung, durch die ein Text zum Editieren vorgegeben werden kann. Es -ist allerdings darauf zu achten, daß der Text in jedem Falle initialisiert wird!  -  -Die beiden Prozeduren 'menuwindowyes' und 'menuwindowno' ähneln den Ihnen -bekannten Prozeduren 'yes' und 'no'. Sie operieren nur auf dem Menufenster. Be -denken Sie aber bitte, daß, wenn bei der Ausgabe des Textes die Fenstergrenze über -schritten wird, der Resttext in der nächsten Zeile ausgegeben wird. Wird dabei sogar -die untere Fenstergrenze überschritten, so wird der komplette Fensterinhalt gelöscht -und die Ausgabe in der linken oberen Ecke des "neuen Fensters" fortgesetzt!  -  -  -5.11.7  Weiter Prozeduren  ('#ib#menuwindowcenter#ie#',  -                            '#ib#menuwindowstop#ie#')  -  -Es werden noch zwei weitere Prozeduren für das Menufenster zur Verfügung gestellt, -die bei der Programmentwicklung ganz nützlich sein können.  -Mit 'menuwindowcenter (TEXT CONST text)' werden vor und hinter dem übergebe -nen Text so viele Leerzeichen angefügt, daß der Text zentriert in der Menufenster-Zei -le ausgegeben wird. Bevor Sie den Text mit 'menuwindowout' ausgeben, müssen Sie -an den Anfang einer Zeile positionieren, denn die Anzahl der vorangestellten Blanks -wird unter Annahme dieser Zeilenposition ermittelt! Innerhalb der Zeile werden ggf. -vorhandene Texte überschrieben.  -  -Durch die Prozedur 'menuwindowstop' wird an den Anfang der übernächsten Zeile -positionert und der Text 'Zum Weitermachen bitte irgendeine Taste tippen!' ausgege -ben. Danach wird so lange gewartet, bis eine Taste getippt wird. Mit 'menuwindow -stop (INT CONST zeilenzahl) kann auch noch die Anzahl der Zeilen bestimmt wer -den, die vorwärtspositioniert werden soll (Standard: 2 Zeilen).  -  -  -#ib#5.12  Festlegung der Boxpositionen innerhalb des Menus#ie#  -  -In vielen Fällen kann der Programmierer noch entscheiden, an welcher Position -innerhalb des Menus die Box erscheinen soll (z. B. bei 'menuanswer', 'menuinfo', -'menuyes', 'menuno', 'menunotice' etc.). Die Positionen sind von 1 bis 5 durchnu -meriert und haben folgende Bedeutung:  -  -+----------------------------------------+  -I                                        I  -+----------------------------------------+  -I                                        I  -I   +-----+                   +-----+    I  -I   I  1  I                   I  2  I    I  -I   +-----+                   +-----+    I  -I                                        I  -I                +-----+                 I  -I                I  5  I                 I  -I                +-----+                 I  -I                                        I  -I   +-----+                   +-----+    I  -I   I  3  I                   I  4  I    I  -I   +-----+                   +-----+    I  -I                                        I  -+----------------------------------------+  -I                                        I  -+----------------------------------------+  -#page#  -#ib#5.13 gs-DIALOG-Syntax (Regeln zur Erstellung von Texten)#ie#  -  -Werden Texte als Parameter übergeben, die in einer Box ausgegeben werden sollen, -so kann dieser Text durch Einfügen von Steuerzeichen noch gestaltet werden, z.B. -kann der Programmierer so den Zeilenaufbau bestimmen.  -Das System analysiert den eingegebenen Text. Jedesmal, wenn innerhalb des Textes -der Code "13" erscheint, wird innerhalb der Box auf den nächsten Zeilenanfang -positioniert. So ist eine Einteilung eines Textes in Zeilen leicht möglich. Soll eine -Leerzeile eingefügt werden, so geben Sie einfach zweimal den Code "13" ("13""13").  -Bei der Textanalyse wird die jeweilige Zeilenlänge vermerkt. Die Box wird vom System -gerade so breit gewählt, daß die längste vorkommende "Zeile" im Text gerade noch in -die Box paßt.  -Aber Vorsicht! Die jeweilige Box kann innerhalb des Menus nur eine Maximalgröße -annehmen (64 Zeichen breit und 14 Zeilen hoch). Wird von einer "Zeile" diese -Maximalgröße überschritten, so wird die Zeile abgeschnitten und nur bis zur Maxi -malbreite der Box ausgegeben.  -  -Ein Text für eine solche Box könnte z.B. so aussehen:  -  -  -menuinfo ("  Informationstexte  "13"      sind meist"13"       zu -lang!")  -  -  -das ergibt folgende Ausgabe in der Box:  -  -  -           +-----------------------+  -           I                       I  -           I   Informationstexte   I  -           I       sind meist      I  -           I        zu lang        I  -           I                       I  -           +-----------------------+  -  -Es ist auch möglich, in solchen Texten Textpassagen invers darzustellen. Dazu wer -den in den Text die Codes zum Ein- ("15") und Ausschalten ("14") der Markierung -eingefügt. Solche markierten Textpassagen dürfen aber nicht über interne Zeilen -grenzen (Code "13") hinausgehen. Sie müßten dann am Zeilenende aus- und am -nächsten Zeilenanfang wiedereingeschaltet werden.  -Soll in der obigen Box das Wort 'Informationstexte' invers dargestellt werden, so wäre -z.B. folgendes Kommando zu geben:  -  -  -menuinfo (" "15"Informationstexte"14" "13"" +  -          "      sind meist"13"       zu lang!")  -  -  -#ib#5.14  Thesaurushandling#ie#  -  -Neben den allgemein zur Verfügung gestellten Thesaurusoperationen stellt -gs-DIALOG einige weitere bereit. Mit der Prozedur 'THESAURUS PROC #ib#infix namen#ie# -(THESAURUS CONST thes, TEXT CONST infix)' werden aus allen Dateinamen des -angegebenen Thesaurus die herausgefiltert, die den Wortbestandteil 'infix' enthalten - -und zwar gleichgültig, an welcher Position! Die herausgefilterten Dateinamen werden -in einem Thesaurus geliefert. Im Programmsystem 'gs-Herbert und Robbi' mach -en wir z.B. Gebrauch davon, wenn wir nur die Landschaften der eigenen Task zur -Auswahl anbieten wollen:  -  -  -THESAURUS VAR thes :: infix namen (ALL myself, "Flaeche:")  -  -  -Daneben gibt es eine ähnliche Prozedur, mit der man die Dateien eines bestimmten -Dateityps herausfiltern kann. Mit  -  -  -THESAURUS VAR thes :: infix namen (ALL myself, 1003)  -  -  -werden alle Dateien mit dem Typ '1003' (normale Textfiles) herausgefiltert. Neben -den beiden gibt es auch noch eine Prozedur, die beide Fälle miteinander koppelt:  -  -  -THESAURUS VAR thes :: infix namen (ALL myself, "gs-MENUKARTE:", 1954)  -  -  -Mit der folgenden Prozedur:  -  -  -THESAURUS VAR thes :: #ib#ohne praefix#ie# (ALL myself, "Flaeche:")  -  -  -wird aus den Dateinamen im angegebenen Thesaurus jeweils der führende Wortbe -standteil entfernt. Wir machen z.B. in gs-Herbert und Robbi davon Gebrauch, um -die Landschaften/Arbeitsfelder anbieten zu können, ohne jeweils den Wortbestandteil -'Flaeche:' miterscheinen zu lassen.  -  -Ganz nützlich ist auch noch die folgende Informationsprozedur '#ib#not empty#ie# -(THESAURUS CONST thes)', mit der man z.B. feststellen kann, ob eine Auswahl ohne -Ankreuzen oder mit <ESC><h> abgebrochen wurde:  -  -  -  -PROC zeilen formatieren:  -  TEXT CONST kopf          :: "Textdateien zeilenweise formatieren",  -             hinweis       :: "Bitte gewünschte Dateien ankreuzen";  -  THESAURUS VAR dateinamen := menusome (ALL myself, kopf, hinweis, -  FALSE);  -  -  IF not empty (dateinamen)  -     THEN cursor on;  -          formatiere dateien;  -          cursor off;  -  FI;  -  regenerate menuscreen.  -  -  formatiere dateien:  -    INT VAR zaehler;  -    FOR zaehler FROM 1 UPTO highest entry (dateinamen) REP  -      IF name (dateinamen, zaehler) <> ""  -         THEN lineform (name (dateinamen, zaehler))  -      FI  -    PER  -END PROC zeilen formatieren;  -  -  -  -#ib#5.15  Aktivieren und Deaktivieren von Menupunkten#ie#  -  -Daß Verarbeitungsfunktionen aktiviert und deaktiviert werden können, haben Sie -schon in unserem Archiv-Pull-Down-Menu gesehen. Deaktivierte Menupunkte sind -durch ein vorgestelltes '-'-Zeichen gekennzeichnet; diese Menufunktionen werden -übersprungen, wenn Sie versuchen, darauf zu positionieren.  -  -Zur Aktivierung und Deaktivierung von Menupunkten stehen die Prozeduren '#ib#activate#ie# -(TEXT CONST menupunktname)' und '#ib#deactivate#ie# (TEXT CONST menupunktname)' -zur Verfügung. Zu beachten ist, daß diese Prozeduren nicht ständig aufrufbar sind - -der jeweils angegebene 'menupunktname' muß sich nämlich auf das aktuelle Pull- -Down-Menu beziehen! Als Menupunktname muß jeweils der Name angegeben wer -den, der bei der entsprechenden Menufunktion als 2. Parameter übergeben wurde. -Ist der angegebene 'menupunktname' im aktuellen Pull-Down-Menu nicht enthalten, -so wird die Anweisung ignoriert!  -  -Auch bei den Prozeduren' activate (INT CONST punktnummer)' und 'deactivate (INT -CONST punktnummer)' gilt diese Einschränkung. Die beiden Prozeduren arbeiten -schneller als die eben aufgezeigten, denn es muß im aktuellen Pull-Down-menu -nicht mehr nach der jeweiligen Position gesucht werden. Die Positionen werden von -oben nach unten durchgezählt. Beachten Sie aber unbedingt, daß die Trennlinien -mitgezählt werden müssen!  -Die Prozeduren "zeigen nur dann Wirkung", wenn sie von einer Verarbeitungsfunk -tion des aktuell entfalteten Pull-Down-Menus aus aufgerufen werden (das geschieht -im Archivmenu z.B. aus den beiden Menufunktionen 'Reservieren' und 'Initialisieren' -heraus) oder wenn Sie beim Einstieg in ein Pull-Down-Menu bzw. beim Ausstieg -daraus aufgerufen werden; d.h. aus einer Prozedur heraus, die bei 'oberbegriff' als -2./3. Parameter in das Menukarten-Generierungsprogramm eingetragen ist. Beim -Archiv-Pull-Down-Menu besorgt das die Prozedur 'menu archiv grundeinstellung' -(sehen Sie dazu auch Kapitel 6.1).  -  - diff --git a/doc/menugenerator/menu-generator handbuch.6 b/doc/menugenerator/menu-generator handbuch.6 deleted file mode 100644 index a0dd3b5..0000000 --- a/doc/menugenerator/menu-generator handbuch.6 +++ /dev/null @@ -1,235 +0,0 @@ -#block##pageblock#  -#pagenr("%",1)##setcount(1)##count per page#  -#headeven#  -gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#headodd#  -#right#gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#bottomeven#  -#center#____________________________________________________________  -6 - % #right#ERGOS  -#end#  -#bottomodd#  -#center#____________________________________________________________  -ERGOS #right# 6 - %  -#end#  -#ib#6  Einbinden der Datei- und Archivoperationen#ie#  -  -  -Sie haben bereits erfahren, wie Sie eine Menukarte generieren und ankoppeln kön -nen. Im letzten Kapitel haben wir Ihnen die Möglichkeiten aufgezeigt, innerhalb des -Menus einen Dialog mit dem Benutzer zu führen. Sie sind somit in der Lage, Ihre -eigenen Anwendungen unter der Benutzeroberfläche gs-DIALOG zu erstellen.  -Wie sich gezeigt hat, treten eine Reihe von Verarbeitungsfunktionen in nahezu jeder -Anwendung auf. Im EUMEL-System benötigt man bei fast allen Anwendungspro -grammen auch die Möglichkeiten, Dateien auf dem Archiv zu sichern oder von dort -zu holen; auch Umbenennen, Kopieren, Drucken, Reorganisieren ... von Dateien -zählen sicher zu den häufig benötigten Verarbeitungsfunktionen. Wünschenswert ist -es natürlich, daß in allen Programmen unter einer Benutzeroberfläche die "Stan -dard-Verarbeitungsfunktionen" in immer gleicher Weise zur Verfügung stehen!  -  -Dieser Vorteil liegt sogar nicht nur auf der Seite des Anwenders - auch der Anwen -dungsprogrammierer profitiert davon: Dann nämlich, wenn er diese Standard-Verar -beitungsfunktionen nicht immer neu schreiben muß, sondern auf vorgefertigte -Prozeduren und natürlich auch auf die zugehörigen Informationstexte zurückgreift.  -  -Wir haben uns deshalb entschlossen, diese Standard-Verarbeitungsfunktionen zum -Datei- und Archivhandling bereits in das Basissystem gs-DIALOG zu integrieren und -Ihnen mit gs-Menu-Generator Dateien zur Verfügung zu stellen, in denen die -Programme zur Einbindung dieser Prozeduren in Ihre eigenen Programmsysteme -ebenso enthalten sind wie alle dazugehörigen Informationstexte.  -In diesem Kapitel soll nun beschrieben werden, wie Sie diese vorgefertigten Module in -Ihre Menukarten/Programme einbinden können und was Sie dabei beachten müs -sen.  -  -  -#ib#6.1  Einbinden der Archivoperationen#ie#  -  -Auf der von uns gelieferten Diskette 'gs-Menu-Generator', befindet sich auch die -Datei 'Generatordatei: Archivmenu'. Darin ist das vollständige Menukarten-Generie -rungs-Programm zur Generierung der Menukarte 'gs-MENUKARTE: Archiv' inclusive -aller Informationstexte enthalten. U.a. befindet sich darin eben das folgende Pro -gramm:  -  -  -oeffne menukarte ("Archiv");  -oeffne menu   ("ARCHIV", "", "menu archiv reservierung aufgeben");  -  -  -oberbegriff  ("Dateien");  -  -menufunktion ("v", "Verzeichnis",         "menu dateien verzeichnis",  -                                           dateiverzeichnistext);  -trennlinie;  -menufunktion ("l", "Löschen",             "menu dateien loeschen",  -                                           dateiloeschentext);  -menufunktion ("d", "Drucken",             "menu dateien drucken",  -                                           dateidruckentext);  -trennlinie;  -menufunktion ("k", "Kopieren",            "menu dateien kopieren",  -                                           dateikopierentext);  -menufunktion ("u", "Umbenennen",          "menu dateien umbenen -                                           nen",  -                                           dateiumbenennentext);  -trennlinie;  -menufunktion ("s", "Speicherplatz",       "menu dateien speicherplatz",  -                                           dateispeicherplatztext);  -menufunktion ("a", "Aufräumen",           "menu dateien aufraeumen",  -                                           dateiaufraeumtext);  -  -  -oberbegriff  ("Archiv", "menu archiv grundeinstellung (4)",  -                         "menu archiv reservierung aufgeben");  -  -menufunktion ("r", "Reservieren",         "menu archiv reservieren",  -                                           archivreserviertext);  -menufunktion ("n", "Neue Diskette",       "menu archiv neue diskette",  -                                           neuediskettetext);  -trennlinie;  -menufunktion ("s", "Schreiben",           "menu archiv schreiben",  -                                           archivschreibtext);  -menufunktion ("c", "Checken",             "menu archiv checken",  -                                           archivchecktext);  -menufunktion ("k", "Kombination",         "menu archiv schreibcheck",  -                                           archivkombinationstext);  -menufunktion ("h", "Holen/Lesen",         "menu archiv holen",  -                                           archivholtext);  -menufunktion ("l", "Löschen",             "menu archiv loeschen",  -                                           archivloeschtext);  -trennlinie;  -menufunktion ("v", "Verzeichnis",         "menu archiv verzeichnis",  -                                           archivverzeichnistext);  -menufunktion ("d", "Drucken",             "menu archiv verzeichnis -                                           drucken",  -                                           archivdruckentext);  -trennlinie;  -menufunktion ("i", "Initialisieren",      "menu archivinitialisieren",  -                                           archivinitialisiertext);  -menufunktion ("z", "Zieltask einstellen",  "menu archiv zieltask -                                            einstellen",  -                                            archivzieltasktext);  -schliesse menu;  -schliesse menukarte;  -  -  -Wie schon oben erwähnt, sind auch alle Informationstexte in der Datei enthalten, die -jeweils über den 4. Parameter der Prozeduren 'menufunktion' in die Menukarte -eingebunden werden. Wir haben Sie hier nicht extra abgedruckt; Sie können ja die -entsprechende Datei auf der Diskette einsehen!  -  -Zu dem Programm möchten wir jedoch noch einige wichtige Anmerkungen machen, -damit Sie die entsprechenden Verarbeitungsfunktionen in Ihre Menukarte einbinden -können.  -  -Wenden wir uns zunächst den Archivoperationen zu. gs-DIALOG stellt die folgenden -Verarbeitungsfunktionen bereit:  -  -  -          PROC #ib#menu archiv reservieren#ie#,  -          PROC #ib#menu archiv neue diskette#ie#,  -          PROC #ib#menu archiv schreiben#ie#,  -          PROC #ib#menu archiv checken#ie#,  -          PROC #ib#menu archiv schreibcheck#ie#,  -          PROC #ib#menu archiv holen#ie#,  -          PROC #ib#menu archiv loeschen#ie#,  -          PROC #ib#menu archiv verzeichnis#ie#,  -          PROC #ib#menu archiv verzeichnis drucken#ie#,  -          PROC #ib#menu archiv initialisieren#ie#,  -          PROC #ib#menu archiv zieltask einstellen#ie#,  -  -  -Durch diese elf Prozeduren werden die entsprechenden Menufunktionen ausgeführt.  -  -Außerdem werden noch folgende Prozeduren bereitgestellt:  -  -  -          PROC #ib#menu archiv grundeinstellung#ie# (INT CONST ort)  -          PROC #ib#menu archiv reservierung aufgeben#ie#  -  -  -Diesen beiden Prozeduren sollten Sie bei der Einbindung der Archivfunktionen in -Ihre Menukarten besondere Beachtung schenken. Wie Sie im Programm auf der Seite -zuvor sehen, taucht die Prozedur 'menu archiv reservierung aufgeben' gleich zweimal -auf: einmal als 3.Parameter der Prozedur 'oberbegriff' und einmal als 3.Parameter -der Prozedur 'oeffne menu' - und das aus folgendem Grund:  -  -Wenn der Benutzer die Archivoperationen verläßt, dann sollte automatisch das Archiv -freigegeben werden, um so - auch bei Multi-User-Betrieb - ein einwandfreies Archiv -handling zu gewährleisten. Nun kann der Benutzer das Pull-Down-Menu 'Archiv' aber -eben auf zweierlei Weise verlassen: Einmal durch den Wechsel in ein anderes Pull- -Down-Menu der gleichen Menukarte - oder aber er verläßt insgesamt das Menu. Im -ersten Falle wird das Archiv abgemeldet, weil ja die als 3.Parameter bei 'oberbegriff' -eingetragene Prozedur ausgeführt wird - im zweiten Falle, weil die als 3.Parameter -bei 'oeffne menu' eingetragene Prozedur ausgeführt wird. Diese Eintragungen sollten -Sie auf keinen Fall bei der Einbindung der Archivoperationen vergessen.  -  -Die Prozedur 'menu archiv grundeinstellung (INT CONST ort)' sollte bei den Archiv -operationen immer als 2. Parameter in der Prozedur 'oberbegriff' übergeben wer -den. Nur wenn diese Prozedur beim Entfallten des Archiv-Pull-Down-Menus ausge -führt wird, ist die einwandfreie Funktion des Archivsystems sichergestellt. Dadurch -geschieht nämlich folgendes:  -  -   1)  Als Zieltask wird das Archiv der eigenen Station eingestellt - unabhängig -       davon, mit welcher Einstellung das Menu zuvor verlassen wurde.  -  -   2)  Es wird die Zieltask auf dem Bildschirm angezeigt.  -  -   3)  Die entsprechenden Menupunkte werden aktiviert bzw. deaktiviert.  -  -   4)  Es wird festgelegt, an welcher Stelle innerhalb des Menus die Menunotiz zur -       Anzeige der Zieltask (und ggf. des Archivnamens) ausgegeben wird.  -  -Im Programm oben ist hierfür die Position 4 (rechts unten in der Ecke) gewählt. Wir -haben diese Festlegung deswegen so getroffen, weil das Archiv-Pull-Down-Menu -ziemlich weit links auf dem Bildschirm erscheint (es sind nur zwei Oberbegriffe -eingetragen!). So stören sich Archiv-Pull-Down-Menu und die Menunotiz nicht gegen -seitig. In unseren Anwendungssystemen 'gs-Herbert und Robbi' und -'gs-MP-BAP' haben wir dagegen die Position '3' eingetragen, damit die Menunotiz -unten links in der Ecke erscheint, weil das Archiv-Pull-Down-Menu ganz rechts auf -dem Bildschirm entfaltet wird.  -  -Achtung! Uns ist es sehr, sehr wichtig, daß zumindest die Archivfunktionen in allen -Anwendungen unter gs-DIALOG in gleicher Weise zur Verfügung gestellt werden. Um -das sicherzustellen, sind die Funktionen so in gs-DIALOG integriert, daß das System -nur dann reibungslos funktioniert, wenn Sie sich an die eben aufgezeigten Regeln für -die Einbindung in Ihr Anwendungssystem halten! Für die korrekte Funktionsweise -muß im Archiv-Pull-Down-Menu auch immer exakt die Reihenfolge (der Aufbau) der -Verarbeitungsfunktionen eingehalten werden. Auch die Namen sollten immer gleich -gewählt werden!  -  -Wir hoffen, daß Sie als Programmierer für diese doch etwas rigorose Maßnahme -Verständnis haben - dafür versichern wir Ihnen, daß wir sehr viel Gedanken und -Arbeit in die Konstruktion des Archivsystems investiert haben!  -  -Auf eine Einschränkung muß allerdings noch hingewiesen werden:Das Archiv- -Pull-Down-Menu kann aus technischen Gründen nicht das erste, ganz links in einem -Menu stehende sein; es kann frühestens unter dem zweiten Oberbegriff in das Menu -aufgenommen werden! Es ist z.Z. nicht möglich, im ganz links stehenden Pull- -Down-Menu deaktivierte Menupunkte zu behandeln.  -  -  -#ib#6.2  Einbinden der Dateiopertionen#ie#  -  -gs-DIALOG stellt neben den Archivoperationen standardmäßig auch einige Dateiope -rationen bereit. Folgende Prozeduren stehen zur Verfügung:  -  -  -          PROC #ib#menu dateien verzeichnis#ie#,  -          PROC #ib#menu dateien loeschen#ie#,  -          PROC #ib#menu dateien drucken#ie#,  -          PROC #ib#menu dateien kopieren#ie#,  -          PROC #ib#menu dateien umbenennen#ie#,  -          PROC #ib#menu dateien speicherplatz#ie#,  -          PROC #ib#menu dateien aufraeumen#ie#.  -  -  -Die Prozeduren bedürfen in Ihrer Wirkung sicher kaum einer Erklärung. Die Wir -kungsweise können Sie einfach ausprobieren, indem Sie die entsprechenden Ver -arbeitungsfunktionen im Archiv-Menu einfach einmal aktivieren.  - - diff --git a/doc/menugenerator/menu-generator handbuch.7 b/doc/menugenerator/menu-generator handbuch.7 deleted file mode 100644 index 2e6f0ba..0000000 --- a/doc/menugenerator/menu-generator handbuch.7 +++ /dev/null @@ -1,367 +0,0 @@ -#block##pageblock#  -#pagenr("%",1)##setcount(1)##count per page#  -#headeven#  -gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#headodd#  -#right#gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#bottomeven#  -#center#____________________________________________________________  -7 - % #right#ERGOS  -#end#  -#bottomodd#  -#center#____________________________________________________________  -ERGOS #right# 7 - %  -#end#  -#ib#7  Eigene Fenster und Fensteroperationen #ie#  -  -  -In Kapitel 5.11 haben wir Ihnen gezeigt, wie Sie innerhalb des Menus ein Fenster -(das Menufenster) öffnen können. Innerhalb dieses Bereichs stehen Ihnen die -wesentlichen Ein- und Ausgabeoperationen zur Verfügung, die Sie auch sonst vom -Bildschirm her kennen. Auf die Größe des Menufensters können Sie allerdings keinen -Einfluß nehmen, da die Fenstergröße automatisch vom System (gs-DIALOG) festge -legt wird - je nachdem, ob Sie mit einem Menu oder mit geschachtelten Menus -arbeiten.  -Auf die Einschränkungen bzw. Abweichungen gegenüber den Möglichkeiten, die Sie -bei Benutzung des ganzen Bildschirms haben, haben wir Sie ausdrücklich hingewie -sen: So ist es nicht möglich, den Text innerhalb eines Fensters zu rollen (scrolling); -statt dessen wird bei Überschreiten der unteren Fenstergrenze der Fensterinhalt -gelöscht und die Ausgabe oben im "neuen" Fenster fortgesetzt.  -Als wir gs-DIALOG konzipierten und die ersten Anwendungen unter dieser Benutzer -schnittstelle entwarfen, fiel uns auf, daß es sehr günstig für die Strukturierung des -Bildschirms innerhalb der Anwendungsprogramme ist, wenn man den Bildschirm in -Bereiche (Fenster) einteilen und den Fenstern entsprechende Funktionen zuweisen -kann (z.B. Eingabe-, Informations-, Kontroll-Fenster etc.). Sinnvoll ist es dann, auch -die entsprechenden Ein-/Ausgaberoutinen zur Verfügung zu haben, die sich auf die -einzelnen Fenster beziehen.  -  -In diesem Kapitel werden wir Ihnen zeigen, wie Sie eigene Fenster definieren und -darin Ein- und Ausgaben realisieren können. Für die Fenster gelten die gleichen -Einschränkungen wie für das Menufenster - d.h. ein Rollen des Textes (scrolling) ist -nicht möglich. Die Fensterposition und -größe innerhalb des Bildschirms können Sie -aber festlegen.  -  -  -#ib#7.1  Definition von Fenstern ('window')#ie#  -  -Das Fensterkonzept in gs-DIALOG ist sehr einfach gehalten: Durch die Definition -des Fenters werden nur Bereiche auf dem Bildschirm festgelegt, auf die sich -bestimmte Ein-/Ausgabeprozeduren beziehen.  -  -Wir wollen Ihnen die Verwendung von Fenstern wieder an einem kleinen Beispiel -verdeutlichen - bleiben wir dazu bei unserer Textverarbeitung: Für die Seitenforma -tierung müßte der Benutzer den oberen und linken Rand, die Schreibfeldbreite und -die Schreibfeldlänge festlegen. Dazu wollen wir dem Benutzer die aktuellen Werte -anzeigen und ggf. eine Neueinstellung vornehmen lassen. Ein Programm dazu könnte -so aussehen:  -  -  -WINDOW VAR info      :: window ( 2, 2, 32,  9),  -           frage     :: window (36, 2, 40,  3),  -           daten     :: window (36, 7, 40,  4);  -  -TEXT VAR oberer rand :: " 2.54",  -         linker rand :: " 2.54",  -         feldbreite  :: "16.00",  -         feldlaenge  :: "24.50";  -  -  -zeige aktuelle werte an;  -frage nach neueinstellung.  -  -zeige aktuelle werte an:  -  page; show (info);  -  out (info, center (info, invers ("Aktuell eingestellte Werte:")));  -  cursor (info, 2, 4);  -  out (info, "Oberer Rand        : " + oberer rand + " cm");  -  cursor (info, 2, 5);  -  out (info, "Linker Rand        : " + linker rand + " cm");  -  cursor (info, 2, 7);  -  out (info, "Schreibfeldbreite  : " + feldbreite  + " cm");  -  cursor (info, 2, 8);  -  out (info, "Schreibfeldlänge   : " + feldlaenge  + " cm").  -  -frage nach neueinstellung:  -  show (frage);  -  cursor (frage, 1, 1);  -  out (frage, center (frage, invers ("Papierformat einstellen:")));  -  cursor (frage, 2, 3);  -  IF yes ("Neueinstellung vornehmen")  -     THEN neue werte erfragen  -  FI.  -  -neue werte erfragen:  -  show (daten);  -  erfrage oberen rand;  -  erfrage linken rand;  -  erfrage feldbreite;  -  erfrage feldlaenge.  -  -erfrage oberen rand:  -  REAL VAR neuer oberer rand;  -  cursor (daten, 1, 1);  -  out (daten, center (daten, invers ("Oberen Rand einstellen:")));  -  cursor (daten, 2, 3);  -  out (daten, "Bitte den neuen Wert: ");  -  get (daten, neuer oberer rand);  -  oberer rand := text (neuer oberer rand, 5, 2);  -  cursor (info, 23, 4);  -  out (info, oberer rand).  -  -erfrage linken rand:  -  (* analog zu 'erfrage oberen rand *).  -  -erfrage feldbreite:  -  (* analog zu 'erfrage oberen rand *).  -  -erfrage feldlaenge:  -  (* analog zu 'erfrage oberen rand *).  -  -  -  -Am Anfang des Programms werden drei Fenster definiert. Das "Infofenster" erscheint -links oben auf dem Bildschirm, in ihm werden die aktuell eingestellten Werte ange -zeigt. Das "Fragefenster" erscheint neben dem ersten Fenster oben rechts auf dem -Bildschirm.  -Beantwortet der Benutzer die dort ausgegebene Frage 'Neueinstellung vornehmen -(j/n)?' mit 'ja', dann erscheint unter dem zweiten Fenster ein drittes -("Datenfenster"). Innerhalb dieses Fensters können nacheinander die neuen Werte -eingelesen werden (nicht alle Prozeduren sind hier ausgeführt!).  -  -Die Definition eines Fensters erfolgt in folgender Weise:  -  -    #ib#WINDOW#ie# VAR fenstername :: #ib#window#ie# ( x, y, xsize, ysize);  -  -Der Fenstervariablen wird durch 'window' eine Größe zugeordnet. Mit den ersten -beiden Werten legen Sie die linke obere Ecke des Fensters ('x' bezeichnet die Spalten, -'y' die Zeilen) auf dem Gesamtbildschirm fest. Mit 'xsize' bestimmen Sie die Fenster -breite (Spaltenzahl), mit 'ysize' die Höhe des Fensters (Zeilenzahl). Der Fenster -cursor hat die Position (1,1).  -Die linke obere Ecke des ersten Fensters im Programm hat also die Position ( 2, 2). -Das Fenster ist 32 Spalten breit und 9 Zeilen hoch; es kann unter dem Namen 'info' -angesprochen werden.  -Bei der Festlegung der Fenstermaße ist der Rahmen des Fensters nicht berücksich -tigt - er gehört nicht zum Fenster dazu! Haben Sie die Absicht, das Fenster mit -Rahmen auszugeben, dann sollten Sie das bei der Fensterdefinition berücksichtigen. -Wir haben es im Beispielprogramm auch gemacht: Die linke obere Ecke hat gerade -die Position (2,2) erhalten, damit noch der Rahmen Platz hat. Mit Rahmen ist unser -Fenster also 34 Spalten breit und 11 Zeilen hoch. Die linke obere Ecke des zweiten -Fensters ('frage') legen wir deshalb in die 36. Spalte und 2. Zeile, damit auch hier -Platz für den Rahmen bleibt.  -Eine wichtige Einschränkung sollten Sie unbedingt berücksichtigen: Da manche -Terminals mit Beschreiben der Position (80,24) automatisch den Bildschirm -löschen, haben wir die maximale Ausdehnung eines umrandeten Fensters auf (2, 2, -77, 22) festgelegt. Überschreiten Sie irgendwo diese Grenzen, dann wird kein Rah -men mehr erzeugt. Der Rahmen wird auch dann nicht erzeugt, wenn er in der 0. -Zeile, 0.Spalte, 25 Zeile oder 80 Spalte zu liegen käme - erst recht natürlich nicht, -wenn diese Werte noch unter- bzw. überschritten werden.  -  -  -#ib#7.2  Anzeigen/Löschen von Fenstern#ie#  -     ('#ib#show#ie#', '#ib#page#ie#', '#ib#erase#ie#', '#ib#out frame#ie#')  -  -Mit dem Befehl 'show (WINDOW VAR w)' wird das Fenster 'w' angezeigt. Der Fenster -variablen müssen natürlich zuvor die Maße des Fensters zugewiesen sein. Durch den -Befehl wird um den angegebenen Fensterbereich ein Rahmen gezogen und der -"Innenbereich" des Fensters gelöscht. Möchten Sie das Fenster ohne Rahmen ange -zeigt haben, so verwenden Sie nur den Befehl 'page (WINDOW VAR w)'. Durch die -sen Befehl wird nur der "Innenbereich" des Fensters gelöscht.  -Haben Sie das Fenster einmal mit 'show' ausgegeben und wollen den Fensterinhalt -löschen, so verwenden Sie auch hier den Befehl 'page (WINDOW VAR w)', denn der -Rahmen braucht ja nicht erneut ausgegeben zu werden.  -Möchten Sie ein Fenster und den zugehörigen Rahmen löschen, dann steht Ihnen der -Befehl 'erase (WINDOW VAR w) zur Verfügung: Durch den Befehl wird sowohl der -"Innenbereich" des Fensters als auch der Rahmen gelöscht.  -Sie können natürlich auch selbst einen Rahmen um ein Fenster setzen. Dafür steht -der Befehl 'out frame (WINDOW VAR w)' zur Verfügung. Der Rahmen wird ebenfalls -um den durch 'w' bestimmten Fensterbereich gezogen - der "Innenbereich" bleibt -unberührt!  -  -Sollten Sie ein Fenster mit dem Befehl 'show' ausgeben (oder mit 'out frame' einen -Rahmen erzeugen) wollen, aber kein Rahmen auf dem Bildschirm erscheint, so -haben Sie die zulässigen Fenstergrenzen überschritten. Sehen Sie dazu auch Kapitel -7.1.  -  -  -#ib#7.3  Operationen innerhalb des Fensters#ie#  -  -Innerhalb des selbstdefinierten Fensters stehen Ihnen die gleichen Operationen zur -Verfügung wie innerhalb des Menufensters. Bezieht sich eine Operation auf ein -Fenster, so wird der interne Fensterbezeichner als erster Parameter übergeben.  -  -  -#ib#7.3.1  Datei anzeigen/editieren #ie#('#ib#edit#ie#', '#ib#show#ie#')  -  -Zum Anzeigen einer Datei steht die Prozedur 'show' zur Verfügung. Dabei kann -einmal ein FILE angegeben werden ('show (WINDOW VAR w, FILE VAR f)') oder aber -der Name der anzuzeigenden Datei ('show (WINDOW VAR w, TEXT VAR dateiname)'). -Die Datei kann nur eingesehen, nicht aber schreibend verändert werden.  -Die Prozedur 'edit' gibt es ebenfalls in den zwei Ausprägungen. Hier kann die Datei -im Gegensatz zu 'show' auch schreibend verändert werden.  -Durch diesen Befehl wird jeweils innerhalb des angegebenen Fensters die Datei -ausgegeben. Sofern die Lage des Fensters es zuläßt, wird automatisch ein Rahmen -um das Dateifenster gezogen.  -  -  -#ib#7.3.2  Positionierungen im Fenster#ie#  -       ('#ib#cursor#ie#', '#ib#get cursor#ie#', '#ib#line#ie#', '#ib#remaining lines#ie#')  -  -Mit 'cursor (WINDOW VAR w, INT CONST spalte, zeile)' können Sie den Cursor inner -halb des angegebenen Fensters positionieren. Werden dabei die Fenstergrenzen über- -oder unterschritten, so wird der Fensterinhalt gelöscht und auf die Position (1, 1) -innerhalb des Fensters positioniert.  -Mit der Prozedur 'get cursor (WINDOW VAR w, INT VAR spalte, zeile)' können Sie die -aktuelle Cursorposition innerhalb des angegebenen Fensters erfragen.  -Wollen Sie an den Anfang der nächsten Zeile positionieren, dann verwenden Sie den -Befehl 'line (WINDOW VAR w)' - wollen Sie gleich mehrere Zeilen vorwärtspositionie -ren, dann benutzen Sie den Befehl 'line (WINDOW VAR w, INT VAR anzahl zeilen)'.  -Wird allerdings bei einem der beiden letzten Befehle die untere Fenstergrenze über -schritten, so wird der Fensterinhalt gelöscht und die Operation in der ersten Zeile des -neuen Fensters fortgesetzt.  -Die Informations-Prozedur 'remaining lines (WINDOW VAR w)' liefert Ihnen die -Anzahl der unterhalb der aktuellen Zeile noch im Fenster vorhanden Zeilen.  -  -  -#ib#7.3.3  Ein- und Ausgaben innerhalb des Fensters#ie#  -       ('#ib#out#ie#', '#ib#put#ie#', '#ib#putline#ie#', '#ib#get#ie#', '#ib#getline#ie#', '#ib#yes#ie#', '#ib#no#ie#')  -  -Mit der Prozedur 'out (WINDOW VAR w, TEXT CONST text)' können Sie einen Text -innerhalb des angegebenen Fensters ausgeben. Paßt der Text nicht mehr in die -aktuelle Zeile, so wird er in der nächsten Zeile fortgesetzt.  -Bedenken Sie, daß innerhalb der Fenster kein Wortumbruch realisiert ist. Ebenso -wenig ist das Rollen (scrolling) des Fensterinhalts möglich: Erfolgt die Ausgabe eines -Textes über die untere Fenstergrenze hinaus, so wird der Fensterinhalt gelöscht und -die Ausgabe an der Position (1, 1) des Fensters fortgesetzt.  -Zur Ausgabe von Texten stehen noch die beiden Prozeduren 'put (WINDOW VAR w, -TEXT CONST text)' und 'putline (WINDOW VAR w, TEXT CONST text)' zur Verfügung. -Bei erstgenannter Prozedur wird gegenüber 'out' an die Ausgabe noch ein Leerzei -chen angehängt, bei der zweiten wird zusätzlich an den Anfang der nächsten Zeile -positioniert.  -Zahlenwerte können mit den Prozeduren 'put (WINDOW VAR w, INT CONST intwert)' -und 'put (WINDOW VAR w, REAL CONST realwert)' ausgegeben werden. An die -Zahlenwerte wird jeweils ein Leerzeichen angehängt.  -  -Für das Einlesen von Werten steht die Prozedur 'get' in mehreren Varianten zur -Verfügung. Mit 'get (WINDOW VAR w, TEXT VAR text)' kann ein Text an der aktuellen -Position des Fensters eingelesen werden. Stehen in der aktuellen Zeile des Fensters -weniger als 5 Zeichenpositionen für die Eingabe zur Verfügung, so wird automatisch -auf den Anfang der nächsten Zeile innerhalb des Fensters positioniert.  -Über einen dritten Parameter können noch zusätzliche Festlegungen getroffen wer -den: Soll die Eingabe noch durch weitere Zeichen (außer Positionierungszeichen) -abgeschlossen werden können, so werden die Zeichen als TEXT übergeben( 'get -(WINDOW VAR w, TEXT VAR text, TEXT CONST separator)'), soll die Maximallänge des -einzugebenden Textes festgelegt sein, so wird diese als INT übergeben ('get (WINDOW -VAR w, TEXT VAR text, INT CONST laenge)').  -  -Mit den Prozeduren 'get (WINDOW VAR w, INT VAR intwert)' und 'get (WINDOW VAR -w, INT VAR realwert)' können auch Zahlenwerte innerhalb des Fensters eingelesen -werden.  -  -Damit dem Anwender auch Vorschläge für der Eingabe gemacht werden können, -steht die Prozedur 'editget' in zwei Variationen zur Verfügung. Bei 'editget' (WINDOW -VAR w, TEXT VAR ausgabe) wird 'ausgabe zum Editieren ausgegeben. Daneben -existiert noch ein 'editget' mit 7 Parametern, der detailliert bei der Zusammenstel -lung der Befehle erläutert ist.  -  -Ebenso wie auf dem Gesamtbildschirm und innerhalb des Menufensters stehen auch -hier die beiden Prozeduren 'yes (WINDOW VAR w, TEXT CONST frage)' und 'no -(WINDOW VAR w, TEXT CONST frage)' zur Verfügung.  -  -  -#ib#7.3.4  Weitere Prozeduren #ie#('#ib#center#ie#', '#ib#stop#ie#')  -  -Mit 'center (WINDOW VAR w, TEXT CONST text)' werden vor dem angegebenen Text -so viele Leerzeichen angehängt, daß der Text zentriert in der aktuellen Fensterzeile -ausgegeben wird - wenn der Cursur bei der Ausgabe auf der ersten Position der Zeile -steht. Dabei werden aber bereits vorhandene Zeileninhalte überschrieben.  -  -Durch die Prozedur 'stop (WINDOW VAR w)' wird innerhalb des angegebenen Fen -sters an den Anfang der übernächsten Zeile positioniert und der Text " Zum Weiter -machen bitte irgendeine Taste tippen!" ausgegeben. Möchten Sie nicht an den Anfang -der übernächsten Zeile positionieren, so können Sie die Anzahl der Zeilen auch -explizit festlegen durch 'stop (WINDOW VAR w, INT CONST zeilenzahl).  -  -  -#ib#7.4  Boxoperationen#ie#  -  -Innerhalb des Menufensters (sehen Sie Kapitel 5) stehen Ihnen die Prozeduren -'menuanswer', 'menuinfo', 'menuone', 'menusome', 'menuanswerone', -'menuanswersome', 'menuyes', 'menuno', 'menualternative', 'write menunotice' und -'menufootnote' zur Verfügung. Alle diese Prozeduren bezogen sich auf das von -gs-DIALOG automatisch gesetzte Menufenster.  -Auch innerhalb der von Ihnen selbst definierten Fenster können Sie auf ähnliche -Prozeduren zurückgreifen. Da wir die eben genannten Prozeduren in Kapitel 5 sehr -detailliert beschrieben haben, werden wir hier nur auf die entsprechenden -Beschreibungen verweisen und ggf. die Besonderheiten/Abweichnungen erwähnen.  -Zu beachten ist, daß innerhalb des Fensters weder die oberen noch die unteren zwei -Zeilen von der "Box" beschrieben werden. Die oberen bleiben ständig frei - die unter -en werden zur Ausgabe der zugehörigen Benutzerinformation (Fußnote) benutzt - -das sollten Sie bei der Festlegung der Fenstergröße bzw. bei der Länge der zu über -gebenden Texte berücksichtigen. Bei der Übergabe der Texte müssen Sie sich an die -gs-DIALOG Syntax-Regeln halten, die in Kapitel 5.12 beschrieben sind.  -  -Die Prozedur '#ib#boxanswer#ie# (WINDOW VAR w, TEXT CONST ausgabetext, antwortvorgabe, -INT CONST position)' arbeitet wie die Prozedur 'menuanswer (TEXT CONST ausgabe -text, antwortvorgabe, INT CONST position)' nur innerhalb des Fensters 'w' (sehen Sie -auch Kapitel 5.1).  -  -Die Prozedur '#ib#boxinfo#ie#' gibt es in zwei Ausführungen: 'boxinfo (WINDOW VAR w, TEXT -CONST text)' arbeitet wie 'menuinfo (TEXT CONST text)', allerdings auf dem angege -benen Fenster. Bei 'boxinfo (WINDOW VAR w, TEXT CONST text, INT CONST position, -timelimit)' kann über den dritten Parameter noch die relative Position im angegebe -nen Fenster (sehen Sie dazu Kapitel 5.12) und über den vierten Parameter die Zeit -spanne festgelegt werden, für die die Information erscheint (sehen Sie auch Kap. -5.2).  -  -Die Prozedur '#ib#boxone#ie# (WINDOW VAR w, THESAURUS CONST thesaurus, TEXT CONST -text1, text2, BOOL CONST mit reinigung)' arbeitet wie die Prozedur 'menuone -(THESAURUS CONST thesaurus, TEXT CONST text1, text2, BOOL CONST mit reini -gung)'. Zu bedenken ist hier, daß die Auswahl innerhalb des Fensters Platz finden -muß. Der Aufruf dieser Prozedur ist daher nur möglich, wenn das angegebene Fen -ster mindestens 60 Spalten breit und 17 Zeilen hoch ist. Ansonsten kommt es zu -einer Fehlermeldung (sehen Sie auch Kap. 5.3).  -  -Die Prozedur '#ib#boxsome#ie# (WINDOW VAR w, THESAURUS CONST thesaurus, TEXT -CONST text1, text2, BOOL CONST mit reinigung)' arbeitet wie die Prozedur -'menusome (THESAURUS CONST thesaurus, TEXT CONST text1, text2, BOOL CONST -mit reinigung)'. Hinsichtlich der Fenstergröße gelten die gleichen Einschränkungen -wie bei 'boxone' (sehen Sie auch Kap. 5.4).  -  -Die Prozeduren '#ib#boxanswerone#ie#' und '#ib#boxanswersome#ie#' entsprechen den Prozeduren -'menuanswerone' und 'menuanswersome'; es wird nur zusätzlich jeweils als erster -Parameter das aktuelle Fenster übergeben. Hinsichtlich der Fenstergröße gelten die -gleichen Einschränkungen wie bei 'boxone' (sehen Sie auch Kap. 5.5).  -  -Die Prozeduren '#ib#boxyes#ie#', '#ib#boxno#ie#' und '#ib#boxalternative#ie#' entsprechen den Prozeduren -'menuyes', 'menuno' und 'menualternative'; es wird nur zusätzlich jeweils als erster -Parameter das aktuelle Fenster übergeben (sehen Sie auch Kap. 5.6 und 5.7).  -  -Die Prozedur '#ib#boxnotice#ie#' unterscheidet sich von der Prozedur 'write menunotice' -erheblich: Letztgenannte Prozedur hat zwei Parameter. Durch den ersten wird der -Ausgabetext übergeben, mit dem zweiten wird die relative Position innerhalb des -Menubildschirms festgelegt. Sowohl Text als auch Position werden vom System ge -speichert. Bei jedem Neuaufbau eines Pull-Down-Menus oder des Menubildschirms -wird die Notiz neu mitaufgebaut.  -Die Prozedur 'boxnotice (WINDOW VAR w, TEXT CONST text, INT CONST position, INT -VAR x, y, xsize, ysize) dagegen hat sieben Parameter. Über den ersten wird das aktuel -le Fenster festgelegt. Die beiden nächsten Parameter entsprechen den beiden Para -metern von 'write menunotice'. Über die letzten vier Parameter werden die Posi -tion/Maße der Box geliefert, die ja erst durch das Aussehen der übergebenen Texte -festgelegt werden. Weder Text noch Position der Boxnotiz werden vermerkt. Wollen Sie -die Notiz löschen, so verwenden Sie eine der Prozeduren '#ib#page#ie# (INT CONST x, y, xsize, -ysize)' oder '#ib#page up#ie# (INT CONST x, y, xsize, ysize)'. Im ersten Falle erscheint es dem -Betrachter, als ob die Box von oben nach unten "aufgerollt" würde, im zweiten Falle -von unten nach oben.  -  -Mit den Prozeduren '#ib#out footnote#ie# (WINDOW VAR w, TEXT CONST text)' wird in der -untersten Zeile des Fensters 'w' der angegebene Text ausgegeben. In der vorletzten -Zeile des Fensters wird eine Trennlinie ausgegeben. Die Fußnote incl. der Trennline -kann durch den Befehl '#ib#erase footnote#ie#' gelöscht werden.  - - diff --git a/doc/menugenerator/menu-generator handbuch.8 b/doc/menugenerator/menu-generator handbuch.8 deleted file mode 100644 index 66eb6cf..0000000 --- a/doc/menugenerator/menu-generator handbuch.8 +++ /dev/null @@ -1,1676 +0,0 @@ -#block##pageblock#  -#pagenr("%",1)##setcount(1)##count per page#  -#headeven#  -gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#headodd#  -#right#gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#bottomeven#  -#center#____________________________________________________________  -8 - % #right#ERGOS  -#end#  -#bottomodd#  -#center#____________________________________________________________  -ERGOS #right# 8 - %  -#end#  -#ib#8  Kurzbeschreibung der Befehle #ie#  -  -  -Durch #u#(*)#e# gekennzeichnete Prozeduren stehen (zumindest in der hier dokumentier -ten Form) erst ab gs-DIALOG Version 1.1 zur Verfügung!  -  -  -#ib#activate#ie#  -PROC activate (TEXT CONST punktname):  -  -Zweck:   Mit der Prozedur kann ein (deaktivierter) Menupunkt im aktuellen -         Pull-Down-Menu aktiviert, d.h. zur Ausführung freigegeben werden. Das -         '-'-Zeichen vor der Punktbezeichnung verschwindet auf dem Bildschirm, -         statt dessen erscheint das Zeichen, über den die Menufunktion direkt -         aktivierbar ist. 'punktname' muß eine Punktbezeichnung sein, die genau -         in der angegebenen Schreibweise im aktuellen Pull-Down-Menu vorhan -         den ist (über den 2. Parameter der Prozedur 'menufunktion' in die -         Menukarte eingetragen wurde) - ansonsten wird diese Anweisung igno -         riert. Die Prozedur "zeigt nur dann Wirkung", wenn sie aus einer Verar -         beitungsfunktion des aktuell entfalteten Pull-Down-Menus heraus oder -         durch die "Startprozedur"/"Leaveprozedur" des aktuellen Pull-Down- -         Menus (sehen Sie auch 'oberbegriff') aufgerufen wird.  -         Die Veränderung wird nicht sofort auf dem Bildschirm angezeigt, sondern -         erst, wenn das Pull-Down-Menu das nächste Mal vom System regeneriert -         wird; ansonsten muß das Kommando 'refresh submenu' gegeben werden.  -  -  -PROC activate (INT CONST punktposition):#u#(*)#e#  -Zweck:   arbeitet wie obiges 'activate', allerdings werden die Menupunkte nicht -         über ihre Bezeichnung, sondern über ihre Position im (aktuellen) Pull- -         Down-Menu identifiziert. Die Positionen sind von oben nach unten durch -         numeriert. Beachten Sie, daß Trennlinien eine Position belegen und -         mitgezählt werden. Die Prozedur arbeitet schneller als obige!  -  -  -#ib#anwendungstext#ie#  -TEXT PROC anwendungstext (INT CONST zeilennummer):  -  -Zweck:   Mit diesem Befehl können Texte angesprochen (geholt) werden, die in die -         Menukarte ausgelagert wurden. Es wird der Text aus der angekoppelten -         Menukarte geliefert, der bei der "Einlagerung" in der Zeile 'zeilen -         nummer' stand.  -Fehler:  Kein Text vorhanden! (In der angekoppelten Menukarte ist unter der -         'zeilennummer' kein Anwendungstext eingetragen.)  -         Bitte achten Sie auf folgendes: Wenn Sie eine neue Menukarte generiert -         haben, muß diese erst an die aktuelle Task gekoppelt werden, bevor Sie -         auf die dort eingetragenen (Anwendungs-)Texte zugreifen können (z.B. -         mit 'testinstallation').  -  -  -#ib#areax#ie#  -INT PROC areax (WINDOW VAR w)   -Zweck:   Liefert den Wert 'x' des Fensters w.  -  -  -#ib#areaxsize#ie#  -INT PROC areaxsize (WINDOW VAR w)   -Zweck:   Liefert den den Wert 'xsize' des Fensters w.  -  -  -#ib#areay#ie#  -INT PROC areay (WINDOW VAR w)   -Zweck:   Liefert den den Wert 'y' des Fensters w.  -  -  -#ib#areaysize#ie#  -INT PROC areaysize (WINDOW VAR w)   -Zweck:   Liefert den den Wert 'ysize' des Fensters w.  -  -  -#ib#balken links#ie#  -TEXT PROC balken links:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" als "linker -       Balken" (̄) ausgegeben wird.  -  -  -PROC balken links (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" als "linker Balken" ausgegeben werden soll.  -  -  -#ib#balken oben#ie#  -TEXT PROC balken oben:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" als "oberer -         Balken" (�) ausgegeben wird.  -  -  -PROC balken oben (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" als "oberer Balken" ausgegeben werden soll.  -  -  -#ib#balken rechts#ie#  -TEXT PROC balken rechts:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" als "rechter -         Balken" (̃) ausgegeben wird.  -  -  -PROC balken rechts (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" als "rechter Balken" ausgegeben werden soll.  -  -  -#ib#balken unten#ie#  -TEXT PROC balken unten:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" als "unterer -         Balken" (̂) ausgegeben wird.  -  -  -PROC balken unten (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" als "unterer Balken" ausgegeben werden soll.  -  -  -#ib#boxalternative#ie#  -INT PROC boxalternative (WINDOW VAR w,  -                         TEXT CONST infotext,  -                                    auswahlliste,  -                                    zusatztasten,  -                         INT  CONST position,  -                         BOOL CONST mit abbruch):  -  -Zweck:   Vergl. 'menualternative'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menualternative' automatisch gesetzt wird. Der 'infotext' muß -         den gs-DIALOG-Syntax-Regel gehorchen! Die 'auswahlliste' muß nach -         festen Regeln erstellt werden (sehen Sie Kap. 5.7)  -  -  -#ib#boxanswer#ie#  -TEXT PROC boxanswer (WINDOW VAR w,  -                     TEXT CONST infotext,  -                                vorgabe,  -                     INT CONST  position):  -  -Zweck:   Vergl. 'menuanswer'. Hier wird nur zusätzlich das Fenster festgelegt, das -         bei 'menuanswer' automatisch gesetzt wird. Der 'infotext' muß den -         gs-DIALOG-Syntax-Regel gehorchen!  -  -  -#ib#boxanswerone#ie#  -TEXT PROC boxanswerone (WINDOW VAR w,  -                        TEXT CONST infotext,  -                                   vorgabe,  -                        THESAURUS CONST thes,  -                        TEXT CONST ueberschrift,  -                                   hinweis,  -                        BOOL CONST mit reinigung):  -  -Zweck:   Vergl. 'menuanswerone'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuanswerone' automatisch gesetzt wird.  -Fehler:  Fenster für Auswahl zu klein (x < 56, y < 15)  -  -  -#ib#boxanswersome#ie#  -THESAURUS PROC boxanswersome (WINDOW VAR w,  -                       TEXT CONST infotext,  -                                  vorgabe,  -                       THESAURUS CONST thes,  -                       TEXT CONST ueberschrift,  -                                  hinweis,  -                       BOOL CONST mit reinigung):  -  -Zweck:   Vergl. 'menuanswersome'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuanswersome' automatisch gesetzt wird.  -Fehler:  Fenster für Auswahl zu klein (x < 56, y < 15)  -  -  -#ib#boxinfo#ie#  -PROC boxinfo (WINDOW VAR w, TEXT CONST infotext,  -              INT CONST position, timelimit):  -  -Zweck:   Vergl. 'menuinfo'. Hier wird nur zusätzlich das Fenster festgelegt, das bei -         'menuinfo' automatisch gesetzt wird. Der 'infotext' muß den gs-DIALOG- -         Syntax-Regel gehorchen!  -  -  -PROC boxinfo (WINDOW VAR w, TEXT CONST infotext):  -  -  wirkt wie: boxinfo (w, infotext, 5, maxint)  -  -  -#ib#boxno#ie#  -BOOL PROC boxno (WINDOW VAR w,  -                 TEXT CONST frage,  -                 INT CONST  position):  -  -  wirkt wie: NOT boxyes (w, frage, position)  -  -  -#ib#boxnotice#ie#  -PROC boxnotice (WINDOW VAR w,  -                TEXT CONST infotext,  -                INT CONST  position  -                INT VAR x, y, xsize, ysize):  -  -Zweck:   Mit 'w' wird das aktuelle Fenster festgelegt. In 'infotext' wird der Text -         übergeben, der als Notiz ausgegeben werden soll, der Text muß den -         gs-DIALOG-Syntax-Regeln entsprechen. Mit 'position' wird die relative -         Lage innerhalb des Fensters 'w' bestimmt. Über die letzten vier Parameter -         werden die Position/Maße der Box geliefert. Weder Text noch Position -         werden vermerkt.  -  -  -#ib#boxone#ie#  -TEXT PROC boxone (WINDOW VAR w,  -                  THESAURUS CONST thes,  -                  TEXT CONST ueberschrift,  -                             hinweis,  -                  BOOL CONST mit reinigung):  -  -Zweck:   Vergl. 'menuone'. Hier wird nur zusätzlich das Fenster festgelegt, das bei -         'menuone' automatisch gesetzt wird.  -Fehler:  Fenster für Auswahl zu klein (x < 56, y < 15)  -  -  -#ib#boxsome#ie#  -THESAURUS PROC boxsome (WINDOW VAR w,  -                        THESAURUS CONST thes,  -                        TEXT CONST ueberschrift,  -                                   hinweis,  -                        BOOL CONST mit reinigung):  -  -Zweck:   Vergl. 'menusome'. Hier wird nur zusätzlich das Fenster festgelegt, das -         bei 'menusome' automatisch gesetzt wird.  -Fehler:  Fenster für Auswahl zu klein (x < 56, y < 15)  -  -  -#ib#boxyes#ie#  -BOOL PROC boxyes (WINDOW VAR w,  -                  TEXT CONST frage,  -                  INT CONST  position):  -  -Zweck:   Vergl. 'menuyes'. Hier wird nur zusätzlich das Fenster festgelegt, das bei -         'menuyes' automatisch gesetzt wird. Die 'frage' muß den gs-DIALOG- -         Syntax-Regel gehorchen!  -  -  -#ib#center#ie#  -TEXT PROC center (WINDOW VAR w, TEXT CONST text):  -  -Zweck:   Vergl. 'menuwindowcenter'. Hier wird nur zusätzlich das Fenster festge -         legt, das bei 'menuwindowcenter' automatisch gesetzt wird.  -  -  -TEXT PROC center (INT CONST laenge,  -                  TEXT CONST text):  -  -Zweck:   "Ummantelt" 'text' mit Leerzeichen, so daß 'text' etwa in der Mitte zu -         stehen kommt. Der gelieferte Text hat die Länge 'laenge'.  -  -  -TEXT PROC center (TEXT CONST text):  -  -  wirkt wie: center (79, text)  -  -  -#ib#clear buffer#ie#  -PROC clear buffer  -  -Zweck:   Leert den Zeichenpuffer  -  -  -#ib#clear buffer and count#ie#  -INT PROC clear buffer and count (TEXT CONST  -                                 zeichen):  -  -Zweck:   Leert den Zeichenpuffer und liefert die Häufigkeit des Vorkommens von -         'zeichen' im Zeichenpuffer.  -  -  -#ib#current menuwindow#ie#  -WINDOW PROC current menuwindow:  -  -Zweck:   liefert das aktuelle Menufenster (die Einzelwerte können dann mit -         'areax', 'areay', 'areaxsize' und 'areaysize' erfragt werden).  -  -  -#ib#cursor#ie#  -PROC cursor (WINDOW VAR w, INT CONST spalte,  -                                     zeile):  -  -Zweck:   Vergl. 'menuwindowcursor'. Hier wird nur zusätzlich das Fenster festge -         legt, das bei 'menuwindowcursor' automatisch gesetzt wird.  -  -  -#ib#cursor off#ie#  -PROC cursor off:  -  -Zweck:   Sofern die EUMEL-Installation die Möglichkeit bietet, wird der Cursor aus -         dem Bildschirm ausgeblendet.  -         Wenn neue Verarbeitungsfunktionen entwickelt werden, sollte zu Beginn -         der Cursor eingeschaltet und nach Abschluß der Cursor wieder ausge -         schaltet werden (sehen Sie auch Kap. 5.1).  -  -  -PROC cursor off (TEXT CONST zeichenkette):  -  -Zweck:   Neufestlegung der 'zeichenkette', die ausgegeben werden soll, um bei der -         aktuellen EUMEL-Installation den Cursor auf den Befehl 'cursor off' hin -         auszuschalten.  -  -  -#ib#cursor on#ie#  -PROC cursor on:  -  -Zweck:   Sofern die EUMEL-Installation die Möglichkeit bietet, wird der Cursor auf -         dem Bildschirm angezeigt. Wenn neue Verarbeitungsfunktionen entwik -         kelt werden, sollte zu Beginn der Cursor eingeschaltet und nach Abschluß -         der Cursor wieder ausgeschaltet werden (sehen Sie auch Kap. 5.1).  -  -  -PROC cursor on (TEXT CONST zeichenkette):  -  -Zweck:   Neufestlegung der 'zeichenkette', die ausgegeben werden soll, um bei der -         aktuellen EUMEL-Installation den Cursor auf den Befehl 'cursor on' hin -         anzuschalten.  -  -  -#ib#deactivate#ie#  -PROC deactivate (TEXT CONST punktname):  -  -Zweck:   Vergl. 'activate (TEXT CONST punktname)'.  -         Im Gegensatz zu der Prozedur wird hier 'punktname' deaktiviert und -         beim (nächsten) Erscheinen der Menupunktbezeichnung ein '-'Zeichen -         vorangestellt. Es gelten die gleichen Einschränkungen wie bei 'activate'!  -  -  -PROC deactivate (INT CONST punktposition):#u#(*)#e#  -Zweck:   arbeitet wie obiges 'deactivate', allerdings werden die Menupunkte nicht -         über ihre Bezeichnung, sondern über ihre Position im (aktuellen) Pull- -         Down-Menu identifiziert. Die Positionen sind von oben nach unten durch -         numeriert. Beachten Sie, daß Trennlinien eine Position belegen und -         mitgezählt werden. Die Prozedur arbeitet schneller als obige!  -  -  -#ib#direktstart#ie#  -PROC direktstart (TEXT CONST prozedurname,  -                  BOOL CONST mit loeschen):#u#(*)#e#  -Zweck:   Macht aus der aktuellen Task eine Manager-Task ('global manager'). -         Werden neue Sohntasks eingerichtet, so melden sich diese nicht - wie -         gewohnt - mit der 'gib kommando:'-Ebene. Statt dessen wird die Prozedur -         'prozedurname' ausgeführt. Das Kommando ist dann sinnvoll, wenn sich -         die Sohntask gleich mit einem Menu melden soll. In der Prozedur -         'prozedurname' muß dann die entsprechende Menukarte angekoppelt -         und das gewünschte Menu zur Ausführung gebracht werden. Hat 'mit -         loeschen den Wert 'TRUE', so wird nach Verlassen der Menuebene die -         Task automatisch gelöscht; bei 'FALSE' wird noch angefragt, ob die Task -         gelöscht werden soll. Wird die Frage bejaht, wird gelöscht; sonst wird die -         Task abgekoppelt (break) und kann durch 'continue' wieder angekoppelt -         werden.  -         In der Task, in der das Kommando 'direktbefehl' gegeben wurde, sollte -         nicht das Kommando 'monitor' gegeben werden, da dadurch auch die -         se Task zu einer Task gemacht würde, die sich direkt mit dem Menu -         meldet und ggf. bei Verlassen des Menus automatisch gelöscht wird! Die -         'gib kommando:'-Ebene ist dadurch unzugänglich!  -  -  -#ib#ecke oben links#ie#  -TEXT PROC ecke oben links:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" links oben in der -         Ecke (ω) ausgegeben wird.  -  -  -PROC ecke oben links (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" links oben in der Ecke ausgegeben werden soll.  -  -  -#ib#ecke oben rechts#ie#  -TEXT PROC ecke oben rechts:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" rechts oben in -         der Ecke (�) ausgegeben wird.  -  -  -PROC ecke oben rechts (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" rechts oben in der Ecke ausgegeben werden soll.  -  -  -#ib#ecke unten links#ie#  -TEXT PROC ecke unten links:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" links unten in -         der Ecke (�) ausgegeben wird.  -  -  -PROC ecke unten links (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" links unten in der Ecke ausgegeben werden soll.  -  -  -#ib#ecke unten rechts#ie#  -TEXT PROC ecke unten rechts:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" rechts unten in -         der Ecke (�) ausgegeben wird.  -  -  -PROC ecke unten rechts (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" rechts unten in der Ecke ausgegeben werden soll.  -  -  -#ib#edit#ie#  -PROC edit (WINDOW VAR w, TEXT CONST dateiname):  -  -Zweck:   Vergl. 'menuwindowedit'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowedit' automatisch gesetzt wird.  -  -  -PROC edit (WINDOW VAR w, FILE VAR f):  -  -Zweck:   Vergl. 'menuwindowedit'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowedit' automatisch gesetzt wird.  -  -  -#ib#editget#ie#  -PROC editget (WINDOW VAR w, TEXT VAR text):#u#(*)#e#  -Zweck:   Eingabe mit Editiermöglichkeit von 'text'. 'text' wird ausgegeben. Die -          Eingabe wird mit RETURN beendet. 'text' darf höchstens 79 Zeichen -         lang sein! Fehler:  Text nicht initialisiert.  -  -  -PROC editget (WINDOW VAR w, TEXT VAR text,  -              INT CONST max laenge, scroll,  -              TEXT CONST sep, res,  -              TEXT VAR exit char):#u#(*)#e#  -Zweck:   Wie oben. Über 'max laenge' kann festgelegt werden , wie lang der einzu -         gebende Text ('text') maximal sein darf. Über 'scroll' wird die Breite des -         Zeilenfensters festgelegt, bevor gerollt wird (jedoch nicht über die rech -         te Fenstergrenze hinaus). Über 'sep' können Zeichen bestimmt werden, -         bei denen die Eingabe (zusätzlich zu RETURN) beendet werden soll. Über -         'res' können reservierte Tasten angegeben werden. Wird eine dieser -         Tasten mit ESC betätigt, wird die Eingabe beendet. In 'exit char' steht -         dann ESC und das Zeichen, mit dem der Editor verlassen wurde.  -Fehler:  Text nicht initialisiert.  -  -  -#ib#erase#ie#  -PROC erase (WINDOW VAR fenster):  -  -Zweck:   Der durch 'fenster' beschrieben Bildschirmbereich wird gelöscht - ein -         schließlich des Rahmens, der den Fensterbereich umgibt (vergl. Sie auch -         'page')!  -  -  -#ib#erase footnote#ie#  -PROC erase footnote (WINDOW VAR fenster):  -  -Zweck:   Die letzten beiden Zeilen in 'fenster' (in der die Fußnote nebst Trennlinie -         eingetragen sind) werden gelöscht (vergl. Sie auch 'out footnote')!  -  -  -#ib#erase menunotice#ie#  -PROC erase menunotice:  -  -Zweck:   Sofern zuvor mit 'write menunotice' (sehen Sie auch dort) eine Menunotiz -         gesetzt wurde, wird diese gelöscht, ansonsten hat die Prozedur keine -         Wirkung.  -  -  -#ib#get#ie#  -PROC get (WINDOW VAR w, TEXT CONST eingabe):  -  -Zweck:   Vergl. 'menuwindowget'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowget' automatisch gesetzt wird.  -  -  -PROC get (WINDOW VAR w, INT CONST wert):  -  -Zweck:   Vergl. 'get (WINDOW VAR w, TEXT CONST eingabe)'. Der eingelesene Wert -         wird anschließend entsprechend konvertiert.  -  -  -  -PROC get (WINDOW VAR w, REAL CONST wert):  -  -Zweck:   Vergl. 'get (WINDOW VAR w, TEXT CONST eingabe)'. Der eingelesene Wert -         wird anschließend entsprechend konvertiert.  -  -  -PROC get (WINDOW VAR w, TEXT CONST eingabe,  -                        INT CONST laenge):  -  -Zweck:   Vergl. 'get (WINDOW VAR w, TEXT CONST eingabe)'. Zusätzlich wird die -         Eingabe beendet, wenn der eingegebene Text die Länge 'laenge' erreicht -         hat.  -  -  -PROC get (WINDOW VAR w, TEXT CONST eingabe,  -                        TEXT CONST separator):  -  -Zweck:   Vergl. 'get (WINDOW VAR w, TEXT CONST eingabe)'. Zusätzlich werden -         über 'separtor' die Zeichen festgelegt, die zusätzlich zu den Positionie -         rungszeichen die Eingabe beenden.  -  -  -#ib#get cursor#ie#  -PROC get cursor (WINDOW VAR w, INT VAR spalte,  -                                       zeile):  -  -Zweck:   Vergl. 'get menuwindowcursor'. Hier wird nur zusätzlich das Fenster -         festgelegt, das bei 'get menuwindowcursor' automatisch gesetzt wird.  -  -  -#ib#getline#ie#  -PROC getline (WINDOW VAR w, TEXT CONST eingabe):  -  -Zweck:   Vergl. 'get (WINDOW VAR w, TEXT CONST eingabe). Nur wird hier die -         Eingabe ausschließlich über die Positionierungstasten - nicht aber über -         das Leerzeichen beendet.  -  -  -#ib#get menuwindowcursor#ie#  -PROC get menuwindowcursor (INT VAR spalte, zeile):  -  -Zweck:   Mit der Prozedur wird die aktuelle Cursorposition innerhalb des Menu -         fensters erfragt.  -  -  -#ib#handle menu#ie#  -PROC handle menu (TEXT CONST menuname):  -  -Zweck:   Bringt das in der angekoppelten Menukarte enthaltene Menu mit dem -         Namen 'menuname' zur Ausführung, d.h. das entsprechende Menu wird -         auf dem Bildschirm präsentiert und kann mit den üblichen Tastenfunk -         tionen gehandhabt werden.  -         (Anmerkung: Die Menufunktionen können natürlich nur dann ausge -         führt werden, wenn die zugehörigen Programme in der aktuellen Task -         zuvor insertiert wurden - ansonsten erscheint auf dem Bildschirm jeweils -         der Hinweis 'unbekanntes Kommando'!)  -Fehler:  Das Menu 'menuname' ist nicht in der angekoppelten Menukarte!  -  -  -#ib#infix namen#ie#  -THESAURUS PROC infix namen (THESAURUS CONST thes,  -                            TEXT CONST infix):  -  -Zweck:   Die Prozedur liefert einen Thesaurus, in dem alle Namen enthalten sind, -         die in 'thes' übergeben wurden und die den Wortbestandteil 'infix' enthal -         ten (gleichgültig an welcher Position).  -  -  -THESAURUS PROC infix namen (THESAURUS CONST thes,  -                            INT CONST dateityp):  -  -Zweck:   Die Prozedur liefert einen Thesaurus, in dem alle Dateinamen enthalten -         sind, die in 'thes' übergeben wurden und die den Dateityp 'dateityp' -         haben.  -  -  -THESAURUS PROC infix namen (THESAURUS CONST thes,  -                            TEXT CONST infix,  -                            INT CONST dateityp):  -  -  wirkt wie: infix namen (infix namen (thes, infix), dateityp)  -  -  -#ib#install menu#ie#  -PROC install menu (TEXT CONST menukartenname,  -                   BOOL CONST mit emblem):  -  -Zweck:   Mit diesem Befehl wird die Menukarte mit dem Namen 'menukarten -         name' aus der Task 'gs-MENUKARTEN' in die aktuelle Task kopiert. Die -         Menukarte wird als unbenannter Datenraum an die Task gekoppelt. Der -         benannte Datenraum wird gelöscht. Der Name der angekoppelten Menu -         karte wird vermerkt.  -         Stimmt der Name der angekoppelten Menukarte mit dem Namen der -         angeforderten Menukarte überein, dann wird nicht erneut eine Kopie -         angefordert, sondern auf der bereits angekoppelten Menukarte gearbeitet.  -         Hat 'mit emblem' den Wert 'TRUE', dann wird unser 'Software-Emblem' -         während des Ankoppelvorgangs auf dem Bildschirm ausgegeben, bei -         'FALSE' nicht.  -Fehler:  Die Menukarte 'menukartenname' existiert nicht in der Task -         'gs-MENUKARTEN'.  -  -  -PROC install menu (TEXT CONST menukartenname):  -  -  wirkt wie: install menu (TEXT CONST menukartenname, TRUE)  -  -  -#ib#invers#ie#  -TEXT PROC invers (TEXT CONST text):  -  -Zweck:   Liefert den Text 'text' invers dargestellt. An den Text wird zuvor ein Leer -         zeichen angehängt.  -  -  -#ib#kreuz#ie#  -TEXT PROC kreuz:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" als "Kreuz" (̗) -         ausgegeben wird.  -  -  -PROC kreuz (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" als "Kreuz" ausgegeben werden soll.  -  -  -#ib#line#ie#  -PROC line (WINDOW VAR w, INT CONST anzahl):  -  -Zweck:   Vergl. 'menuwindowline'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowline' automatisch gesetzt wird.  -  -  -PROC line (WINDOW VAR w):  -  -  wirkt wie: line (w, 1)  -  -  -#ib#menualternative#ie#  -INT PROC menualternative (TEXT CONST infotext,  -                                     auswahlliste,  -                                     zusatztasten,  -                          INT  CONST position,  -                          BOOL CONST mit abbruch):  -  -Zweck:   Mit der Prozedur können dem Benutzer innerhalb des Menubildschirms -         mehrere Alternativen zur Entscheidung angeboten werden, von denen er -         sich für eine entscheiden kann.  -         Auf dem Bildschirm wird innerhalb des Menus eine Box ausgegeben. -         Boxbreite und -höhe werden vom System automatisch anhand des über -         gebenen 'infotext'es (bzw. der 'auswahlliste') festgelegt. Der in 'infotext' -         übergebene Text wird innerhalb der Box angezeigt. Der Text muß den -         gs-DIALOG-Syntax-Regeln (sehen Sie Kap. 5.13) entsprechen - er dient -         ausschließlich der Information des Benutzers.  -         In der letzten Zeile der Box wird die 'auswahlliste' angeboten. Zwischen -         jeder notierten Alternative muß in 'auswahlliste' der code "13" eingetra -         gen sein. In der Box werden zwischen den Alternativen je drei Leerzei -         chen eingefügt. Es können maximal 10 Alternativen angegeben werden, -         die aber incl. der eingefügten Leerzeichen eine Gesamtbreite von 64 -         Zeichen nicht überschreiten dürfen. Über diese Liste erfolgt durch Posi -         tionierung und anschließendem <RETURN> die Entscheidung für eine -         Alternative. Die Prozedur liefert dann als Zahlenwert die Position der -         gewählten Alternative in der übergebenen Auswahlliste.  -         Über 'mit abbruch' wird festgelegt, ob die Alternativentscheidung durch -         die Tastenfolge <ESC><h> abgebrochen werden kann oder nicht. Ist -         das zulässig und geschehen, dann wird der Wert 0 geliefert.  -         Über 'zusatztasten' kann noch festgelegt werden, ob die Entscheidung -         auch durch Tippen bestimmter Tasten angegeben werden kann. Sind hier -         Zeichen angegeben und erfolgt die Entscheidung über das Tippen einer -         zugelassenen Taste, dann wird die Position der getippten Taste in der -         unter 'zusatztasten' übergebenen Zeichenkette ermittelt und der Wert 100 -         hinzuaddiert (sehen Sie dazu auch Kap. 5.7).  -         Nach der Entscheidung wird der Menubildschirm automatisch in den -         Ausgangszustand versetzt.  -  -  -#ib#menuanswer#ie#  -TEXT PROC menuanswer (TEXT CONST infotext,  -                                 vorgabe,  -                      INT CONST position):  -  -Zweck:   Die Prozedur ermöglicht den Dialog mit dem Benutzer innerhalb des -         Menus. Sie liefert einen vom Benutzer eingegebenen (bzw. modifizierten) -         Text/Namen.  -         Auf dem Bildschirm wird innerhalb des Menus eine Box ausgegeben. -         Boxbreite und -höhe werden vom System automatisch anhand des über -         gebenen 'infotext'es festgelegt. Der in 'infotext' übergebene Text wird -         innerhalb der Box angezeigt. Der Text muß den gs-DIALOG-Syntax-Regeln -         (sehen Sie Kap. 5.13) entsprechen.  -         In der letzten Zeile der ausgegebenen Box erscheint der Text "Eingabe:". -         Über 'vorgabe' kann dem Benutzer ein Text zum Editieren angeboten -         werden. Mit 'position' wird die relative Lage der Box innerhalb des Menu -         bildschirms festgelegt (1, 2, 3, 4, 5: sehen Sie dazu Kap. 5.12).  -         Die Eingabe kann durch <RETURN> abgeschlossen oder durch -         <ESC><h> abgebrochen werden, in letzterem Falle wird niltext ("") -         geliefert.  -         Der gelieferte Wert ist von führenden und folgenden Leerzeichen befreit -         (compress). Es ist nicht möglich, den Namen 'break' einzugeben (sehen -         Sie dazu Kap.5.1).  -  -  -#ib#menuanswerone#ie#  -TEXT PROC menuanswerone (TEXT CONST infotext,  -          vorgabe, THESAURUS CONST thesaurus,  -          TEXT CONST ueberschrift, hinweis,  -          BOOL CONST mit reinigung):  -  -Zweck:   Die Prozedur ist aus den zwei Prozeduren 'menuanswer' und 'menuone' -         zusammengesetzt (sehen Sie auch dort). In einer Box innerhalb des -         Menus wird der 'infotext' ausgegeben und eine Eingabe erwartet; ggf. -         kann ein Text in 'vorgabe' zum Editieren ausgegeben werden. Wird die -         Eingabe mit <RETURN> abgeschlossen, wird der eingegebene Text -         geliefert. Statt der Eingabe kann der Benutzer sich durch die Tastenfolge -         <ESC><z> auch die in 'thesaurus' übergebenen Namen zur Auswahl -         anbieten lassen. Wird ein Name angekreuzt, wird dieser geliefert; wird die -         Auswahl durch <ESC><h> abgebrochen, wird niltext ("") geliefert.  -Fehler:  Fenster für Auswahl zu klein (x < 56, y < 15)  -  -  -#ib#menuanswersome#ie#  -THESAURUS PROC menuanswersome (TEXT CONST  -               infotext, vorgabe,  -               THESAURUS CONST thesaurus,  -               TEXT CONST ueberschrift, hinweis,  -               BOOL CONST mit reinigung):  -  -Zweck:   Die Prozedur ist aus den zwei Prozeduren 'menuanswer' und 'menusome' -         zusammengesetzt (sehen Sie auch dort). In einer Box innerhalb des -         Menus wird der 'infotext' ausgegeben und eine Eingabe erwartet; ggf. -         kann ein Text in 'vorgabe' zum Editieren ausgegeben werden. Wird die -         Eingabe mit <RETURN> abgeschlossen, wird der eingegebene Text in -         einem Thesaurus geliefert. Statt der Eingabe kann der Benutzer sich -         durch die Tastenfolge <ESC><z> auch die in 'thesaurus' übergebenen -         Namen zur Auswahl anbieten lassen. Werden Namen angekreuzt, werden -         diese in einem Thesaurus geliefert; wird die Auswahl durch -         <ESC><h> abgebrochen, wird ein leerer Thesaurus geliefert.  -Fehler:  Fenster für Auswahl zu klein (x < 56, y < 15)  -  -  -#ib#menu archiv checken#ie#  -PROC menu archiv checken:  -  -Zweck:   Über diese Prozedur kann das "Checken" von Dateien auf dem Archiv in -         das Archiv-Pull-Down-Menu eingebunden werden. Sehen Sie dazu unbe -         dingt Kap. 6.1!  -  -  -#ib#menu archiv grundeinstellung#ie#  -PROC menu archiv grundeinstellung (INT CONST ort):  -  -Zweck:   Hierüber wird die Grundeinstellung des Archivpakets vorgenommen: Dazu -         wird als Zieltask das Archiv der eigenen Station eingestellt. Dieses wird -         auch über eine Menunotiz im Menu angezeigt. Die entsprechenden Menu -         punkte werden aktiviert bzw. deaktiviert. Sehen Sie dazu unbedingt Kap. -         6.1!  -         Über 'ort' wird festgelegt, an welcher Stelle innerhalb des Menus die -         Menunotiz zur Anzeige der Zieltask (und ggf. des Archivnamens) ausge -         geben wird (sehen Sie dazu Kap. 5.12).  -  -  -#ib#menu archiv holen#ie#  -PROC menu archiv holen:  -  -Zweck:   Über diese Prozedur kann das Holen von Dateien vom Archiv in das -         Archiv-Pull-Down-Menu eingebunden werden. Sehen Sie dazu unbedingt -         Kap. 6.1!  -  -  -#ib#menu archiv initialisieren#ie#  -PROC menu archiv initialisieren:  -  -Zweck:   Über diese Prozedur kann das Formatieren/ Initialisieren eines Archivs in -         das Archiv-Pull-Down-Menu eingebunden werden. Sehen Sie dazu unbe -         dingt Kap. 6.1!  -  -  -#ib#menu archiv loeschen#ie#  -PROC menu archiv loeschen:  -  -Zweck:   Über diese Prozedur kann das Löschen von Dateien auf dem Archiv in das -         Archiv-Pull-Down-Menu eingebunden werden. Sehen Sie dazu unbedingt -         Kap. 6.1!  -  -  -#ib#menu archiv neue diskette#ie#  -PROC menu archiv neue diskette:  -  -Zweck:   Über diese Prozedur kann das Anmelden einer neuen Diskette bei schon -         reserviertem Archiv in das Archiv-Pull-Down-Menu eingebunden werden. -         Sehen Sie dazu unbedingt Kap. 6.1!  -  -  -#ib#menu archiv reservieren#ie#  -PROC menu archiv reservieren:  -  -Zweck:   Über diese Prozedur kann die Archivreservierung in das Archiv-Pull- -         Down-Menu eingebunden werden. Sehen Sie dazu unbedingt Kap. 6.1!  -  -  -#ib#menu archiv reservierung aufgeben#ie#  -PROC menu archiv reservierung aufgeben:  -  -Zweck:   Über diese Prozedur kann eine bestehende Archivreservierung aus dem -         Menu heraus aufgegeben werden. Sehen Sie dazu unbedingt Kap. 6.1!  -  -  -#ib#menu archiv schreibcheck#ie#  -PROC menu archiv schreibcheck:  -  -Zweck:   Über diese Prozedur kann das Schreiben von Dateien auf das Archiv und -         das sich automatisch daran anschließende "Checken" der zuvor geschrie -         benen Dateien in das Archiv-Pull-Down-Menu eingebunden werden. -         Sehen Sie dazu unbedingt Kap. 6.1!  -  -  -#ib#menu archiv schreiben#ie#  -PROC menu archiv schreiben:  -  -Zweck:   Über diese Prozedur kann das Schreiben von Dateien auf das Archiv in -         das Archiv-Pull-Down-Menu eingebunden werden. Sehen Sie dazu unbe -         dingt Kap. 6.1!  -  -  -#ib#menu archiv verzeichnis#ie#  -PROC menu archiv verzeichnis:  -  -Zweck:   Über diese Prozedur kann die Ausgabe eines Inhaltsverzeichnisses des -         Archivs auf dem Bildschirm in das Archiv-Pull-Down-Menu eingebunden -         werden. Sehen Sie dazu unbedingt Kap. 6.1!  -  -  -#ib#menu archiv verzeichnis drucken#ie#  -PROC menu archiv verzeichnis drucken:  -  -Zweck:   Über diese Prozedur kann die Ausgabe eines Inhaltsverzeichnisses des -         Archivs über den Drucker in das Archiv-Pull-Down-Menu eingebunden -         werden. Sehen Sie dazu unbedingt Kap. 6.1!  -  -  -#ib#menu archiv zieltask einstellen#ie#  -PROC menu archiv zieltask einstellen:  -  -Zweck:   Über diese Prozedur kann die Festlegung der Zieltask, mit der die Inter -         taskkommunikation abgewickelt werden soll, in das Archiv-Pull-Down- -         Menu eingebunden werden. Sehen Sie dazu unbedingt Kap. 6.1!  -  -  -#ib#menu dateien aufraeumen#ie#  -PROC menu dateien aufraeumen:  -  -Zweck:   Durch diese Prozedur wird innerhalb des aktuellen Menus der Name der -         Datei erfragt, die aufgeräumt, d.h. reorganisiert werden soll. Existiert -         keine Datei mit dem angegebenen Namen, so erfolgt ein Hinweis darauf. -         Statt der Eingabe des Dateinamens kann auch die Tastenfolge -         <ESC><z> getippt werden. Daraufhin werden alle Dateinamen der -         Task zur Auswahl angeboten. Hier können die gewünschten Dateinamen -         angekreuzt werden. Anschließend werden die angekreuzten Dateien -         reorganisiert. Der Vorgang wird auf dem Bildschirm protokolliert. Am -         Ende des Vorgangs wird der Menubildschirm automatisch regeneriert. Es -         können natürlich nur Dateien des Typs 1003 (Textfiles) reorganisiert -         werden; sofern andere Dateien ausgewählt werden, erfolgt ein Hinweis -         darauf.  -  -  -#ib#menu dateien drucken#ie#  -PROC menu dateien drucken:  -  -Zweck:   Durch diese Prozedur wird innerhalb des aktuellen Menus (auch bei -         geschachtelten(!)) der Name der Datei erfragt, die gedruckt werden soll. -         Anschließend wird die Datei mit dem angegebenen Namen gedruckt. -         Existiert keine Datei mit dem angegebenen Namen, so erfolgt ein Hinweis -         darauf.  -         Statt der Eingabe des Dateinamens kann auch die Tastenfolge -         <ESC><z> getippt werden. Daraufhin werden alle Dateinamen der -         Task zur Auswahl angeboten. Alle angekreuzten Dateien werden an -         schließend gedruckt. Der Vorgang wird auf dem Bildschirm protokolliert. -         Am Ende wird der Menubildschirm automatisch regeneriert.  -  -  -#ib#menu dateien kopieren#ie#  -PROC menu dateien kopieren:  -  -Zweck:   Durch diese Prozedur wird innerhalb des aktuellen Menus der Name der -         Datei erfragt, die kopiert werden soll. Existiert keine Datei mit dem -         angegebenen Namen, so erfolgt ein Hinweis darauf. Statt der Eingabe des -         Dateinamens kann auch die Tastenfolge <ESC><z> getippt werden. -         Daraufhin werden alle Dateinamen der Task zur Auswahl angeboten. Hier -         kann ein Dateiname angekreuzt werden. Nun wird der Name erfragt, den -         die Kopie erhalten soll. Existiert der Name bereits, erfolgt ein Hinweis -         darauf, sonst wird die Datei kopiert. Der Menubildschirm wird automa -         tisch regeneriert.  -  -  -#ib#menu dateien loeschen#ie#  -PROC menu dateien loeschen:  -  -Zweck:   Durch diese Prozedur wird innerhalb des aktuellen Menus der Name der -         Datei erfragt, die gelöscht werden soll. Anschließend wird die Datei mit -         dem angegebenen Namen gelöscht, sofern die Sicherheitsabfrage zum -         Löschen mit 'Ja' beantwortet wurde. Existiert keine Datei mit dem ange -         gebenen Namen, so erfolgt ein Hinweis darauf. Statt der Eingabe des -         Dateinamens kann auch die Tastenfolge <ESC><z> getippt werden. -         Daraufhin werden alle Dateinamen der Task zur Auswahl angeboten. Alle -         angekreuzten Dateien werden anschließend (nach jeweiliger Sicherheits -         anfrage) gelöscht. Der Vorgang wird auf dem Bildschirm protokolliert. Am -         Ende wird der Menubildschirm automatisch regeneriert.  -  -  -#ib#menu dateien speicherplatz#ie#  -PROC menu dateien speicherplatz:  -  -Zweck:   Durch diese Prozedur wird innerhalb des aktuellen Menus der Name der -         Datei erfragt, deren Speicherplatz ermittelt werden soll. Existiert keine -         Datei mit dem angegebenen Namen, so erfolgt ein Hinweis darauf. Statt -         der Eingabe des Dateinamens kann auch die Tastenfolge <ESC><z> -         getippt werden. Daraufhin werden alle Dateinamen der Task zur Aus -         wahl angeboten. Hier können die gewünschten Dateinamen angekreuzt -         werden. Anschließend wird der Speicherplatz der angekreuzten Datei(en) -         ermittelt und im Menufenster ausgegeben. Im Anschluß an die Anzeige -         wird der Menubildschirm automatisch regeneriert.  -  -  -#ib#menu dateien umbenennen#ie#  -PROC menu dateien umbenennen:  -  -Zweck:   Durch diese Prozedur wird innerhalb des aktuellen Menus der Name der -         Datei erfragt, die umbenannt werden soll. Existiert keine Datei mit dem -         angegebenen Namen, so erfolgt ein Hinweis darauf. Statt der Eingabe des -         Dateinamens kann auch die Tastenfolge <ESC><z> getippt werden. -         Daraufhin werden alle Dateinamen der Task zur Auswahl angeboten. Hier -         kann ein Dateiname angekreuzt werden. Nun wird der Name erfragt, den -         die Datei anschließend erhalten soll. Existiert der Name bereits, erfolgt ein -         Hinweis darauf, sonst wird die Datei umbenannt. Der Menubildschirm -         wird automatisch regeneriert.  -  -  -#ib#menu dateien verzeichnis#ie#  -PROC menu dateien verzeichnis  -  -Zweck:   Mit der Prozedur kann innerhalb des aktuellen Menus ein Verzeichnis der -         Dateien der eigenen Task ausgegeben werden. Nach Verlassen des Ver -         zeichnisses durch <ESC><q> wird der Menubildschirm automatisch -         regeneriert.  -  -  -#ib#menufootnote#ie#  -PROC menufootnote (TEXT CONST fussnotentext):  -  -Zweck:   Mit der Prozedur kann der Text in der "Fußzeile" des aktuellen Menubild -         schirms (zumeist Hinweise an den Benutzer) ersetzt werden. Der vorhan -         dene Text wird gelöscht und stattdessen 'fussnotentext' notiert. Der Text -         bleibt so lange erhalten, bis er durch eine andere selbstgesetzte Fußnote -         ('menufootnote') oder durch die alte vom System gesetzte Fußnote ('old -         menufootnote'; sehen Sie auch dort) überschrieben wird. Sofern -         gs-DIALOG-Prozeduren aufgerufen werden, die selbst Ausgaben in der -         Fußzeile machen, wird die durch 'menufootnote' gesetzte Fußnote eben -         falls überschrieben. Wenn der Text länger als die aktuelle Menubild -         schirmbreite ist,wird der Text abgeschnitten. Damit der Text auch in -         geschachtelten Menus vollständig ausgegeben werden kann, sollte er nicht -         länger als 69 Zeichen sein.  -  -  -#ib#menufunktion#ie#  -PROC menufunktion (TEXT CONST kuerzel,  -                              punktbezeichnung,  -                              prozedurname,  -                              infotext):  -  -Zweck:   Der Befehl wird für die Generierung von Menukarten benötigt. Mit diesem -         Befehl wird in das aktuell geöffnete Menu unter dem aktuellen Oberbe -         griff eine Verarbeitungsfunktion eingetragen. Mit 'kuerzel' wird die Taste -         bestimmt, über die die Verarbeitungsfunktion direkt aktiviert werden -         kann. 'kuerzel' muß innerhalb eines Pull-Down-Menus eindeutig gewählt -         sein! Unter 'punktbezeichnung' wird der Text eingetragen, der im Pull- -         Down-Menu ausgegeben werden soll. In 'prozedurname' steht der Name -         der Prozedur (als Text(!)), die bei Aktivierung des Menupunktes ausge -         führt werden soll. In 'infotext' steht der Text, der als Information zu -         diesem Menupunkt bei Tippen der <?>-Taste angezeigt werden soll.  -Fehler:  Menupunkt-Kürzel ist länger als ein Zeichen.  -         Menupunktkürzel kommt mehrfach vor.  -         Menupunktbezeichnung ist zu lang (> 60 Zeichen).  -         Zu viele Menupunkte in einem Pull-Down-Menu (> 15).  -  -  -#ib#menuinfo#ie#  -PROC menuinfo (TEXT CONST infotext, INT CONST  -               position, timelimit):  -  -Zweck:   Die Prozedur ermöglicht es, innerhalb des Menus einen Hinweis (Infor -         mationstext) auszugeben. Im Menubildschirm erscheint der 'infotext' in -         einer Box. Boxbreite und -höhe werden vom System automatisch anhand -         des übergebenen 'infotext'es festgelegt. 'infotext' muß den gs-DIALOG- -         Syntax-Regeln (sehen Sie Kap. 5.13) entsprechen. Mit 'position' wird die -         relative Lage der Box innerhalb des Menubildschirms festgelegt (1, 2, 3, -         4, 5: sehen Sie dazu Kap. 5.12). Mit 'timelimit' kann die Zeitdauer (in -         Zehntelsekunden) festgelegt werden, für die der Hinweis höchstens er -         scheint. Die Anzeige kann vom Benutzer durch Tippen einer beliebigen -         Taste abgebrochen werden.  -  -  -PROC menuinfo (TEXT CONST infotext,  -               INT CONST position):  -  -  wirkt wie: menuinfo (infotext, position, maxint)  -  -  -PROC menuinfo (TEXT CONST infotext):  -  -  wirkt wie: menuinfo (infotext, 5)  -  -  -#ib#menukartenname#ie#  -TEXT PROC menukartenname:#u#(*)#e#  -Zweck:   Liefert den Namen der zur zeit angekoppelten Menukarte. Ist keine -         Menukarte angekoppelt, wird niltext ("") geliefert.  -  -  -#ib#menuno#ie#  -BOOL PROC menuno (TEXT CONST frage,  -                  INT CONST position):  -  -  wirkt wie: NOT menuyes (frage, position)  -  -  -#ib#menuone#ie#  -TEXT PROC menuone (THESAURUS CONST thesaurus,  -                   TEXT CONST ueberschrift,  -                              hinweis,  -                   BOOL CONST mit reinigung):  -  -Zweck:   Durch die Prozedur werden dem Benutzer innerhalb des Menubild -         schirms Namen zur Auswahl angeboten. Nach Ankreuzen eines Namens -         wird die Auswahl automatisch verlassen. Der angekreuzte Name wird -         geliefert. Wird die Auswahl durch <ESC><h> abgebrochen, so wird -         niltext ("") geliefert. In 'thesaurus' wird ein THESAURUS mit den Namen -         übergeben, die zur Auswahl angeboten werden sollen (sehen Sie dazu -         auch Kap. 5.14). Die beiden Texte 'ueberschrift' und 'hinweis' erscheinen -         zur Kennzeichnung im Kopf der Auswahlliste: 'ueberschrift' zentriert und -         invers dargestellt, 'hinweis' nur zentriert. Hat 'mit reinigung' den Wert -         TRUE, so wird nach der Auswahl der Menubildschirm automatisch wie -         deraufgebaut, bei FALSE wird darauf verzichtet.  -Fehler:  Fenster für Auswahl zu klein (x < 56, y < 15)  -  -  -#ib#menusome#ie#  -THESAURUS PROC menusome (THESAURUS CONST  -                         thesaurus,  -                   TEXT CONST ueberschrift,  -                              hinweis,  -                   BOOL CONST mit reinigung):  -  -Zweck:   Durch die Prozedur werden dem Benutzer innerhalb des Menubild -         schirms Namen zur Auswahl angeboten. Die Auswahl kann durch die -         Tastenfolge <ESC><q> verlassen werden. Der/ die angekreuzte(n) -         Name(n) wird/werden in einem Thesaurus geliefert. Wird die Auswahl -         durch die Tastenfolge <ESC><h> abgebrochen oder wurde kein Name -         angekreuzt, dann wird ein leerer Thesaurus geliefert. In 'thesaurus' wird -         ein Thesaurus mit den Namen übergeben, die zur Auswahl angeboten -         werden sollen (sehen Sie dazu auch Kap. 5.14). Die beiden Texte -         'ueberschrift' und 'hinweis' erscheinen zur Kennzeichnung im Kopf der -         Auswahlliste: 'ueberschrift' zentriert und invers dargestellt, 'hinweis' nur -         zentriert. Hat 'mit reinigung' den Wert TRUE, so wird nach der Auswahl -         der Menubildschirm automatisch wiederaufgebaut, bei FALSE wird darauf -         verzichtet.  -Fehler:  Fenster für Auswahl zu klein (x < 56, y < 15)  -  -  -#ib#menuwindowcenter#ie#  -TEXT PROC menuwindowcenter (TEXT CONST text):  -  -Zweck:   Die Prozedur liefert einen Text, der so lang ist, wie das aktuelle Menufen -         ster breit ist. Dazu wird 'text' so mit Leerzeichen "ummantelt" daß 'text' -         etwa in der Mitte zu stehen kommt. Steht der Cursor bei Ausgabe dieses -         Textes am Anfang der Zeile, erscheint der Text zentriert in der Zeile -         (vorhandene Zeileninhalte werden dadurch überschrieben (der Cursor -         steht dann auf dem rechten Fensterrand!).  -  -  -#ib#menuwindowcursor#ie#  -PROC menuwindowcursor (INT CONST spalte, zeile):  -  -Zweck:   Mit diesem Befehl kann der Cursor innerhalb des aktuellen Menufensters -         positioniert werden. Ein "normales" Menufenster ist 77 Zeichen breit und -         20 Zeichen hoch; ein Menufenster in einem geschachtelten Menu ist 71 -         Zeichen breit und 16 Zeichen hoch). (Sehen Sie auch die Informations -         prozeduren 'get menuwindowcursor' und 'remaining menuwindowlines').  -Fehler:  Wird außerhalb des aktuellen Menufensters positioniert, wird der Fenster -         inhalt gelöscht und die Fensterposition (1,1) angenommen.  -  -  -#ib#menuwindowedit#ie#  -PROC menuwindowedit (TEXT CONST dateiname):  -  -Zweck:   Durch den Befehl wird innerhalb des Menus ein umrandetes Fenster -         geöffnet und die Datei mit dem Namen 'dateiname' zum Editieren ausge -         geben. Auf die Größe des Menufensters kann kein Einfluß genommen -         werden - sie wird selbständig vom System gesetzt ("normales" Menu: 77 -         Zeichen breit und 20 Zeichen hoch; geschachteltes Menu 71 Zeichen -         breit und 16 Zeichen hoch).  -Fehler:  Die Datei mit dem Namen 'dateiname' existiert nicht.  -  -  -PROC menuwindowedit (FILE VAR f):  -  -Zweck:   Vergl. obige 'menuwindowedit'-Prozedur. Die Datei 'f' muß mit der Verar -         beitungsart 'modify' assoziiert worden sein.  -  -  -#ib#menuwindoweditget#ie#  -PROC menuwindoweditget (TEXT VAR text):#u#(*)#e#  -Zweck:   Vergl. 'menuwindowget (TEXT VAR text)' Zusätzlich kann hier in 'text' ein -         Text zum Editieren vorgegeben werden.  -Fehler:  Text nicht initialisiert.  -  -  -#ib#menuwindowget#ie#  -PROC menuwindowget (TEXT VAR text):  -  -Zweck:   Mit der Prozedur können Texte innerhalb des Menufensters eingelesen -         werden (INTEGER- und REAL-Werte müssen ggf. "von Hand" konvertiert -         werden). Die Eingabe wird durch <RETURN> abgeschlossen. Es muß -         mindestens ein Zeichen (ungleich Leerzeichen) eingegeben werden. Von -         der Eingabe werden die führenden Leerzeichen abgeschnitten. Ist der -         einzugebende Text länger als die noch verbleibende Restzeile, so wird der -         Text in der Restzeile gescrollt. Sind in der aktuellen Zeile weniger als 7 -         Zeichenpositionen für die Eingabe vorhanden, so wird automatisch für die -         Eingabe an den Anfang der nächsten Zeile positioniert.  -  -  -#ib#menuwindowline#ie#  -PROC menuwindowline (INT CONST anzahl):  -  -Zweck:   Die Prozedur 'menuwindowline' hat innerhalb des Menubildschirms eine -         ähnliche Wirkung wie die Prozedur 'line' auf dem Gesamtbildschirm. Es -         werden 'anzahl' Zeilenwechsel vorgenommen. Wird allerdings die untere -         Grenze des Menubildschirms überschritten, dann rollt (scrollt) der Bild -         schirm nicht die entsprechende Anzahl Zeilen nach oben, statt dessen -         wird der Fensterinhalt gelöscht und die Operation oben im Fenster fort -         gesetzt.  -  -  -PROC menuwindowline:  -  -  wirkt wie: menuwindowline (1)  -  -  -#ib#menuwindowout#ie#  -PROC menuwindowout (TEXT CONST text):  -  -Zweck:   Mit der Prozedur können innerhalb des aktuellen Menufensters Texte -         ausgegeben werden. Sollen INTEGER- oder REAL-Werte ausgegeben wer -         den, müssen diese zunächst in Texte konvertiert werden. Ist der Text -         länger als die verbleibende Restzeile innerhalb des aktuellen Menufen -         sters, so wird der Text bis zum Fensterende (rechts) ausgegeben und die -         Ausgabe am Anfang der nächsten Zeile fortgesetzt. Sobald die letzte Posi -         tion des aktuellen Menufensters (unten rechts in der Fensterecke) be -         schrieben wurde, wird der Fensterinhalt gelöscht und die Ausgabe an der -         Position (1,1) des Fensters fortgesetzt.  -  -  -#ib#menuwindowpage#ie#  -PROC menuwindowpage:  -  -Zweck:   Durch den Befehl 'menuwindowpage' wird der Inhalt des Fensters inner -         halb des aktuellen Menus gelöscht (das "Menufenster") (vergleichen Sie -         auch 'show menuwindow'). Der Rahmen des Fensters (der bei 'show -         menuwindow' ausgegeben wurde), bleibt bestehen, da er nicht mit zum -         eigentlichen Fenster gehört. Durch den Befehl wird der Menubildschirm -         nicht rekonstruiert! Soll das Fenster geschlossen werden, ist der Befehl -         'regenerate menuscreen' zu geben.  -  -  -#ib#menuwindowshow#ie#  -PROC menuwindowshow (TEXT CONST dateiname):  -  -Zweck:   Vergl. 'menuwindowedit'-Prozedur. Die Datei 'dateiname' kann nicht -         schreibend verändert werden.  -  -  -PROC menuwindowshow (FILE VAR f):  -  -Zweck:   Vergl. obige 'menuwindowshow'-Prozedur. Die Datei 'f' muß mit der -         Verarbeitungsart 'modify' assoziiert worden sein.  -  -  -#ib#menuwindowstop#ie#  -PROC menuwindowstop (INT CONST zeilenzahl):  -  -Zweck:   Innerhalb des Menufensters werden 'zeilenzahl' Zeilenwechsel vorge -         nommen und der Text " Zum Weitermachen bitte irgendeine Taste tip -         pen!" ausgegeben. Danach wird so lange gewartet, bis eine Taste getippt -         wird.  -  -  -PROC menuwindowstop:  -  -  wirkt wie: menuwindowstop (2)  -  -  -#ib#menuyes#ie#  -BOOL PROC menuyes (TEXT CONST frage,  -                   INT CONST position):  -  -Zweck:   Die Prozedur dient dazu, innerhalb des Menus eine Ja/Nein-Entscheidung -         des Benutzers einzuholen. Im Gegensatz zur Standardprozedur 'yes' -         arbeitet diese Prozedur unabhängig davon, ob der Kommandodialog ein- -         oder ausgeschaltet ist. Auf dem Bildschirm wird innerhalb des Menus eine -         Box ausgegeben. Boxbreite und -höhe werden vom System automatisch -         anhand der übergebenen 'frage' festgelegt. Der in 'frage' übergebene Text -         wird um ein Fragezeichen (?) ergänzt und innerhalb der Box angezeigt. -         Der Text muß den gs-DIALOG-Syntax-Regeln (sehen Sie Kap. 5.13) -         entsprechen. In der letzten Zeile der ausgegebenen Box erscheint der Text -         "Ja    Nein". Die Prozedur 'menuyes' liefert TRUE, wenn mit 'Ja' geantwor -         tet wurde und FALSE, wenn mit 'Nein' geantwortet wurde (durch Tippen -         der Anfangsbuchstaben oder Positionierung auf die Antwort und ab -         schließendes <RETURN>). Der Menubildschirm wird automatisch -         regeneriert. Mit 'position' wird die relative Lage der Box innerhalb des -         Menubildschirms festgelegt (1, 2, 3, 4, 5: sehen Sie dazu Kap. 5.12).  -  -  -#ib#no#ie#  -BOOL PROC no (WINDOW VAR w, TEXT CONST frage):  -  -  wirkt wie: NOT yes (w, frage).  -  -  -#ib#not empty#ie#  -BOOL PROC not empty (THESAURUS CONST thes):  -  -Zweck:   Dient der Prüfung, ob ein Thesaurus Namen enthält oder nicht. Die -         Prozedur liefert TRUE, wenn Namen in 'thes' enthalten sind, sonst FALSE.  -  -  -#ib#oberbegriff#ie#  -PROC oberbegriff (TEXT CONST punktname,  -                             startprocname,  -                             leaveprocname):  -  -Zweck:   Der Befehl wird bei der Generierung von Menukarten benötigt. Mit diesem -         Befehl wird die Bezeichnung 'punktname' in die Kopfzeile des aktuell -         geöffneten Menus eingetragen. Die in 'startprocname' übergebene Proze -         dur wird ausgeführt, bevor das zugehörige Pull-Down-Menu auf dem -         Bildschirm "ausgeklappt" wird; die in 'leaveprocname' übergebene Pro -         zedur, wenn in ein anderes Pull-Down-Menu gewechselt wird (beachten -         Sie, daß die Prozedurnamen als Texte(!) übergeben werden).  -Fehler:  Menukarte noch nicht geöffnet ('oeffne menukarte' fehlt).  -         Menu noch nicht geöffnet ('oeffne menu' fehlt).  -         Zu viele Oberbegriffe im Menu (> 10).  -         Die Kopfzeile ist zu lang (> 70 Zeichen).  -  -  -PROC oberbegriff (TEXT CONST punktname):  -  -  wirkt wie: oberbegriff (punktname, "", "")  -  -  -#ib#oeffne menu#ie#  -PROC oeffne menu (TEXT CONST menuname,  -                  einstiegsproc,  -                  ausstiegsproc, infotext1,  -                  infotext2, infotext3):  -  -Zweck:   Der Befehl wird für die Generierung von Menukarten benötigt. Durch den -         Befehl wird innerhalb der Menukarte ein Menu mit dem Namen -         'menuname' angelegt. Über diesen Namen kann das Menu auch später -         angesprochen werden (mit 'handle menu'). Die unter 'einstiegsproc' -         übergebene Prozedur wird bei der Aktivierung des Menus ausgeführt, die -         unter 'ausstiegsproc' übergebene Prozedur, wenn das Menu (mit -         <ESC><q>) verlassen wird (beachten Sie, daß die Prozedurnamen als -         Texte(!) übergeben werden!). In 'infotext1', 'infotext2' und 'infotext3' -         können Hinweise eingetragen werden, die bei Erscheinen des Menus auf -         dem Bildschirm für kurze Zeit in einer Box rechts unten angezeigt wer -         den. Die Erstellung der Boxtexte ist an genaue Regeln gebunden (sehen -         Sie dazu Kap. 5.13). Sehen Sie auch bei 'schliesse menu'.  -  -  -PROC oeffne menu (TEXT CONST menuname,  -                             einstiegsproc,  -                             ausstiegsproc):  -  -  wirkt wie: oeffne menu (menuname, einstiegsproc,  -                         ausstiegsproc, "", "", "")  -  -  -PROC oeffne menu (TEXT CONST menuname):  -  -  wirkt wie: oeffne menu (menuname, "", "")  -  -  -#ib#oeffne menukarte#ie#  -PROC oeffne menukarte (TEXT CONST menukartenname):  -  -Zweck:   Der Befehl wird bei der Generierung von Menukarten benötigt. Ein Pro -         gramm zur Erstellung einer Menukarte muß immer mit diesem Befehl -         beginnen. Durch den Befehl wird ein Datenraum mit dem Namen -         'gs-MENUKARTE:menukartenname' eingerichtet; der Wortbestandteil -         'gs-MENUKARTE:' wird dabei automatisch vor den angegebenen Namen -         gesetzt (sehen Sie auch 'schliesse menukarte').  -Fehler:  Eine Menukarte mit dem angegebenen Namen existiert bereits in der -         Task. Bei der Generierung wird dann angefragt, ob die alte Menukarte -         gelöscht werden darf.  -  -  -#ib#ohne praefix#ie#  -THESAURUS PROC ohne praefix (THESAURUS CONST thes,  -                             TEXT CONST praefix):  -  -Zweck:   Liefert in einem Thesaurus alle Namen aus dem übergebenen Thesaurus -         'thes', die mit  dem Wortbestandteil 'praefix' beginnen. Bei den gelie -         ferten Namen ist dieser führende Wortbestandteil entfernt.  -  -  -#ib#old menufootnote#ie#  -PROC old menufootnote:  -  -Zweck:   Der aktuelle Text in der Fußzeile des aktuellen Menubildschirms wird -         durch den hier zuletzt vom System gesetzten Text überschrieben. Die -         Prozedur wird benutzt, um eine selbstgesetzte Fußnote (sehen Sie auch -         'write menunotice') zu löschen.  -  -  -#ib#out#ie#  -PROC out (WINDOW VAR w, TEXT CONST text):  -  -Zweck:   Vergl. 'menuwindowout'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowout' automatisch gesetzt wird.  -  -  -#ib#out frame#ie#  -PROC out frame (WINDOW VAR fenster):  -  -Zweck:   Um den durch 'fenster' angegebenen Bildschirmbereich wird ein Rahmen -         gezogen.  -  -  -#ib#out footnote#ie#  -PROC out footnote (WINDOW VAR fenster,  -                   TEXT CONST textzeile):  -  -Zweck:   In der untersten Zeile des Fensters 'fenster' wird 'textzeile' ausgegeben, in -         der vorletzten Zeile eine Trennzeile. Sehen Sie auch 'erase footnote'.  -  -  -#ib#page#ie#  -PROC page (WINDOW VAR fenster,  -           BOOL CONST mit rahmen):  -  -Zweck:   Der durch 'fenster' beschriebene Fensterbereich wird gelöscht. Hat 'mit -         rahmen' den Wert TRUE, wird der Rahmenbereich ebenfalls gelöscht.  -  -  -PROC page (WINDOW VAR fenster):  -  -  wirkt wie: page (fenster, FALSE).  -  -  -#ib#put#ie#  -PROC put (WINDOW VAR w, TEXT CONST text):  -  -  wirkt wie: out (w, text + " ")  -  -  -PROC put (WINDOW VAR w, INT CONST zahl):  -  -  wirkt wie: put (w, text (zahl))  -  -  -PROC put (WINDOW VAR w, REAL CONST zahl):  -  -  wirkt wie: put (w, text (zahl))  -  -  -#ib#putline#ie#  -PROC putline (WINDOW VAR w, TEXT CONST text):  -  -  wirkt wie: put (w, text); line (w)  -  -  -#ib#regenerate menuscreen#ie#  -PROC regenerate menuscreen:  -  -Zweck:   Der Befehl wird verwendet, um den Menubildschirm (z.B. nach der -         Nutzung für anwendungsbezogene Ausgaben) in seinem letzten Zustand -         zu reproduzieren. Der Bildschirm wird gelöscht. Anschließend wird der -         aktuelle Menubildschirm vollständig neu aufgebaut - auch bei geschach -         telten Menus. (sehen Sie auch 'refresh submenu')  -  -  -#ib#refresh submenu#ie#  -PROC refresh submenu:  -  -Zweck:   Der Befehl dient dazu, das aktuelle Pull-Down-Menu (z.B. nach Über -         schreiben) und ggf. eine gesetzte Menunotiz erneut auf den Bildschirm zu -         schreiben. Betroffen ist nur der Bereich zwischen den Trennlinien der -         Kopf- und Fußzeile. Für das vorausgehende Löschen verwendeter Bild -         schirmbereich ist der Programmierer verantwortlich. Im Gegensatz zu -         'regenerate menuscreen' findet hier kein kompletter Bildschirmaufbau -         statt. Wenn möglich, dann ist dieser Befehl dem Befehl 'regenerate -         menuscreen' wegen des geringeren Zeitaufwandes vorzuziehen.  -  -  -#ib#remaining lines#ie#  -INT PROC remaining lines (WINDOW VAR w):  -  -Zweck:   Die Prozedur liefert die Anzahl der Zeilen im Fenster 'w', die noch -         zwischen Cursor und unterer Fenstergrenze vorhanden sind.  -  -  -#ib#remaining menuwindowlines#ie#  -INT PROC remaining menuwindowlines  -  -Zweck:   Die Prozedur liefert die Anzahl der Zeilen im aktuellen Menufenster, die -         noch zwischen Cursor und unterer Fenstergrenze vorhanden sind.  -  -  -#ib#reset dialog#ie#  -PROC reset dialog:  -  -Zweck:   Das Menusystem wird in den Anfangszustand versetzt. (Keine Menukarte -         angekoppelt; Anzahl der geöffneten Menus: 0)  -  -  -#ib#schliesse menu#ie#  -PROC schliesse menu:  -  -Zweck:   Der Befehl wird bei der Generierung von Menukarten benötigt. Durch den -         Befehl wird ein Menu in einer Menukarte abgeschlossen (sehen Sie auch -         'oeffne menu')  -  -  -#ib#schliesse menukarte#ie#  -PROC schliesse menukarte  -  -Zweck:   Der Befehl wird bei der Generierung von Menukarten benötigt. Durch den -         Befehl wird eine Menukarte abgeschlossen (sehen Sie auch 'oeffne -         menukarte')  -  -  -#ib#senkrecht#ie#  -TEXT PROC senkrecht:  -  - Zweck:  Liefert das Zeichen, das bei der Darstellung der "Kästen" als senkrechter -         Strich (�) ausgegeben wird.  -  -  -PROC senkrecht (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" als senkrechter Strich ausgegeben werden soll.  -  -  -#ib#show#ie#  -PROC show (WINDOW VAR fenster):  -  -Zweck:   Das Fenster 'fenster' wird auf dem Bildschirm angezeigt (das Fenster -         muß zuvor durch 'window' initialisiert worden sein). Um den angegebe -         nen Fensterbereich wird automatisch ein Rahmen gezogen. Der Rahmen -         gehört nicht zum Fenster dazu! (Soll das Fenster ohne Rahmen ausgege -         ben werden, dann muß der Befehl 'page' verwendet werden.) Der Bereich -         innerhalb des Rahmens (Fensterbereich) wird gelöscht.  -  -  -#ib#show#ie#  -PROC show (WINDOW VAR w, TEXT CONST dateiname):  -  -Zweck:   Vergl. 'menuwindowshow'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowshow' automatisch gesetzt wird.  -  -  -PROC show (WINDOW VAR w, FILE VAR f):  -  -Zweck:   Vergl. 'menuwindowshow'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowshow' automatisch gesetzt wird.  -  -  -#ib#show menuwindow#ie#  -PROC show menuwindow:  -  -Zweck:   Durch den Befehl 'show menuwindow' wird ein entsprechender Rahmen -         innerhalb des Menubildschirms ausgegeben und der Bereich innerhalb -         dieses Rahmens (das Fenster) gelöscht (sehen Sie auch 'menuwindow -         page'). Innerhalb des Fensters können anschließend verschiedene Opera -         tionen ausgeführt werden. Auf die Größe des Menufensters kann kein -         Einfluß genommen werden - sie wird selbständig vom System gesetzt -         ("normales" Menu: 77 Zeichen breit und 20 Zeichen hoch; geschachteltes -         Menu 71 Zeichen breit und 16 Zeichen hoch).  -  -  -#ib#stdinfoedit#ie#  -PROC stdinfoedit (TEXT CONST dateiname):#u#(*)#e#  -Zweck:   Löscht den Bildschirm und bietet die Datei 'dateiname' in einem festge -         legten zum Editieren an. In der Fußzeile wird die Information "Info: -         <ESC><?>  Verlassen: <ESC><q>" angezeigt. Nach Tippen von -         <ESC><?> werden Editorinformationen in den Bildschirm einge -         blendet.  -  -  -PROC stdinfoedit (FILE VAR f):#u#(*)#e#  -Zweck:   Wie obige 'stdinfoedit'-Prozedur'. Die Datei 'f' muß mit der Verarbei -         tungsart 'modify' assoziiert worden sein.  -  -  -PROC stdinfoedit (TEXT CONST dateiname,  -                  INT CONST oberste zeile):#u#(*)#e#  -Zweck:   Wie obige Prozedur (die wie 'stdwinfoedit (w, 1)' wirkt). Allerdings kön -         nen bis zu zwei Zeilen oben auf dem Bildschirm unbenutzt bleiben (z.B. -         um die Kopfzeile des Menus weiterhin anzuzeigen). 'oberste zeile' gibt an, -         welche Bildschirmzeile die erste von dieser Prozedur benutzte ist -         (1<= oberste zeile<=3).  -  -  -PROC stdinfoedit (FILE VAR f,  -                  INT CONST oberste zeile):#u#(*)#e#  -Zweck:   Wie obige 'stdinfoedit'-Prozedur'. Die Datei 'f' muß mit der Verarbei -         tungsart 'modify' assoziiert worden sein.  -  -  -#ib#stop#ie#  -PROC stop (WINDOW VAR w, INT CONST zeilenzahl):  -  -Zweck:   Vergl. 'menuwindowstop'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowstop' automatisch gesetzt wird.  -  -  -PROC stop (WINDOW VAR w):  -  -  wirkt wie: stop (w, 1).  -  -  -#ib#testinstallation#ie#  -PROC testinstallation (TEXT CONST menutafelname):  -  -Zweck:   Die Menutafel mit dem Namen 'menutafelname' (muß mit dem -         'gs-MENUKARTE:' beginnen!) wird als aktuelle Menutafel an gs-DIALOG -         gekoppelt. Durch den Befehl wird die angegebene Menutafel zur Task -         'gs-MENUAKRTEN' geschickt. Dem Namen wird zur Kennzeichnung noch -         der Taskname der Sendertask angehängt (dadurch können sich bei -         Multi-User-Betrieb verschiedene Anwender mit gleichen Menukarten -         namen nicht stören). Die Menukarte wird anschließend in jedem Fall -         "frisch" angekoppelt. Außerdem bleibt die Menukarte (als benannter -         Datenraum) in der Task erhalten!  -         (Mit dem Befehl 'handle menu' kann nun ein Menu aus der Menukarte -         zur Ausführung gebracht werden oder mit 'anwendungstext' auf in die -         Menukarte ausgelagerte Texte zugegriffen werden.)  -         Hinweis: Von Zeit zu Zeit muß der Systembetreuer die überflüssigen -         Menukarten aus der Task 'gs-MENUKARTEN' entfernen, da die Anwender -         aus Ihrer Task die Karten nicht löschen können!  -Fehler:  'menutafelname' gibt es nicht!  -         'menutafelname' hat falsche(n) Typ/Bezeichnung (keine -         gs-MENUKARTE)!  -  -  -#ib#trennlinie#ie#  -PROC trennlinie:  -  -Zweck:   Der Befehl wird bei der Generierung von Menukarten benötigt. Durch den -         Befehl wird unter dem aktuellen Oberbegriff eine Trennlinie zur opti -         schen Trennung einzelner Menupunkte eingetragen. Die Trennlinie belegt -         den gleichen Platz wie eine Verarbeitungsfunktion.  -Fehler:  Zu viele Menupunkte in einem Pull-Down-Menu (maximal 15 incl. der -         Trennlinien!).  -  -  -#ib#textprozedur#ie#  -PROC textprozedur (TEXT CONST dateiname,  -                              prozedurname):  -  -Zweck:   Der Befehl wird benötigt, um Texte entsprechend der gs-DIALOG-Syntax -         aufzuarbeiten. Der in die Datei 'dateiname' geschrieben Text wird bear -         beitet. Die Prozedur eignet sich insbesondere dafür, Informationstexte -         aufzuarbeiten, die zu den einzelnen Menufunktionen ausgegeben werden, -         wenn der Benutzer die Tastenfolge <ESC><?> tippt (sehen Sie auch -         'textzeile'). Der aufbereitete Text steht anschließend in der Datei 'datei -         name.a'. Der Text ist in eine Textprozedur "verpackt", die den Namen hat, -         der als zweiter Parameter übergeben wird.  -         Die Zeilen werden dabei so zugeschnitten, daß Sie in einer Box in das -         aktuelle Menu eingeblendet werden können. Boxbreite und -höhe werden -         automatisch gesetzt (max. 65 Zeichen breit und 14 Zeichen hoch)); die -         Zeilen werden geblockt, sofern in der Datei keine Absatzmarkierung -         (<RETURN>) am Ende der Zeile vorhanden ist. Soll eine Zeile zentriert -         werden, so muß als erstes Zeichen der Zeile das Zeichen '%' notiert sein - -         die Zeile muß durch eine Absatzmarke abgeschlossen sein. Textpassagen, -         die invers (markiert) dargestellt werden sollen, müssen duch das Zeichen -         '$' eingeleitet und durch das Zeichen '&' abgeschlossen werden. Markier -         te Textpassagen dürfen (nach dem Zuschnitt!) nicht über Zeilengrenzen -         hinausgehen!  -Fehler:  Datei 'dateiname' existiert nicht!  -         Fonttabelle 'fonttab.gs-Menu-Generator' existiert nicht! (Fonttabelle von -         gs-Menu-Generator-Diskette in die Task 'configurator' laden!)  -         Text ist zu lang - bitte kürzen! (Text darf in aufbereiteter Form maximal -         14 Zeilen umfassen!)  -         Zeilenformatierung mit <ESC> abgebrochen!  -  -  -  -#ib#textzeile#ie#  -PROC textzeile (TEXT CONST dateiname):  -  -Zweck:   Der Befehl wird benötigt, um Texte entsprechend der gs-DIALOG-Syntax -         aufzuarbeiten. Der in die Datei 'dateiname' geschrieben Text wird bear -         beitet. Die Prozedur eignet sich insbesondere dafür, anwendungsbezogene -         Texte aufzuarbeiten, die in die Menukarte ausgelagert werden sollen -         (sehen Sie auch 'textprozedur'). Der aufbereitete Text steht anschließend -         in der Datei 'dateiname.a' in einer Zeile notiert.  -  -  -#ib#waagerecht#ie#  -TEXT PROC waagerecht:  -  -Zweck:   Liefert das Zeichen, das bei der Darstellung der "Kästen" als waagerechter -         Strich (̇) ausgegeben wird.  -  -  -PROC waagerecht (TEXT CONST zeichen):  -  -Zweck:   Durch diese Prozedur kann das Zeichen festgelegt werden, das bei Dar -         stellung der "Kästen" als waagerechter Strich ausgegeben werden soll.  -  -  -#ib#window#ie#  -WINDOW PROC window (INT CONST x, y, xsize, ysize):  -  -Zweck:   Einer Fenstervariablen (WINDOW VAR name) wird die Lage und Größe -         zugeordnet (über den Zuweisungsoperator ':='). Gleichzeitig wird das -         Fenster initialisiert.  -         Mit den ersten beiden Parametern wird die Lage der linken oberen Ecke -         des Fensters bestimmt (x: Spalte; y: Zeile). Mit 'xsize' wird die Fenster -         breite, mit 'ysize' die Fensterhöhe festgelegt.  -         Das Fenster wird noch nicht(!) angezeigt (sehen Sie dazu 'show' und -         'page'). Ein Rahmen wird nicht zum Fenster gezählt; er kann aber mit -         der Prozedur 'show' ausgegeben werden. Ein Fenster darf nicht breiter als -         80 und höher als 24 Zeichen sein. Umrahmte Fenster unterliegen weite -         ren Einschränkungen (sehen Sie auch 'show'). Ein Fenster muß min -         destens 6 Zeichen breit und 3 Zeichen hoch sein.  -Fehler:  'Window' ungültig  -  -  -#ib#write menunotice#ie#  -PROC write menunotice (TEXT CONST notiztext,  -                       INT CONST position):  -  -Zweck:   Die Prozedur dient dazu, innerhalb des Menus in einer Box einen "dauer -         haften Informationstext" auszugeben. Die Box bleibt nämlich so lange -         bestehen, bis sie explizit gelöscht (sehen Sie auch 'erase menunotice') -         oder durch einen neuen Notiztext überschrieben wird. Wenn der Bild -         schirm durch gs-DIALOG-Prozeduren überschrieben wird, wird die -         Menunotiz ebenfalls ständig mitaufgefrischt und auch, wenn der Befehl -         'regenerate menuscreen' oder 'refresh submenu' gegeben wird (Sehen Sie -         im Gegensatz dazu auch 'menuinfo' ("kurzzeitiger Informationstext").  -         Im Menubildschirm erscheint der 'infotext' in einer Box. Boxbreite und -         -höhe werden vom System automatisch anhand des übergebenen 'notiz -         text'es festgelegt. 'notiztext' muß den gs-DIALOG-Syntax-Regeln (sehen Sie -         Kap. 5.13) entsprechen. Mit 'position' wird die relative Lage der Box -         innerhalb des Menubildschirms festgelegt (1, 2, 3, 4, 5: sehen Sie dazu -         Kap. 5.12). In einem Menu kann zu einem Zeitpunkt nur eine Menunotiz -         abgelegt werden. Durch ein erneutes 'write menunotice' wir eine beste -         hende Menunotiz überschrieben.  -  -  -#ib#yes#ie#  -BOOL PROC yes (WINDOW VAR w, TEXT CONST frage):  -  -Zweck:   Vergl. 'menuwindowyes'. Hier wird nur zusätzlich das Fenster festgelegt, -         das bei 'menuwindowyes' automatisch gesetzt wird.  - - diff --git a/doc/menugenerator/menu-generator handbuch.impressum b/doc/menugenerator/menu-generator handbuch.impressum deleted file mode 100644 index 404826d..0000000 --- a/doc/menugenerator/menu-generator handbuch.impressum +++ /dev/null @@ -1,88 +0,0 @@ -____________________________________________________________________________  -  -  -#on("b")##on ("u")#  -#center#Betriebssystem E U M E L  -#off ("u")#  -  -  -#center#ls Menü-Generator  -  -  -  -  -#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-Menu-Generator  -  -  -#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/doc/menugenerator/menu-generator handbuch.index b/doc/menugenerator/menu-generator handbuch.index deleted file mode 100644 index 0aacd97..0000000 --- a/doc/menugenerator/menu-generator handbuch.index +++ /dev/null @@ -1,258 +0,0 @@ -#block##pageblock#  -#pagenr("%",1)##setcount(1)##count per page#  -#headeven#  -gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#headodd#  -#right#gs-Menu-Generator  -#center#____________________________________________________________  -  -#end#  -#bottomeven#  -#center#____________________________________________________________  -I - % #right#ERGOS  -#end#  -#bottomodd#  -#center#____________________________________________________________  -ERGOS #right# I - %  -#end#  -Index  -  -  -activate                                            5 - 28  -activate                                            8 - 1  -anwendungstext                                      4 - 13  -anwendungstext                                      8 - 2  -areax                                               8 - 2  -areaxsize                                           8 - 2  -areay                                               8 - 2  -areaysize                                           8 - 2  -balken links                                        8 - 2  -balken oben                                         8 - 3  -balken rechts                                       8 - 3  -balken unten                                        8 - 3  -boxalternative                                      8 - 4  -boxalternative                                      7 - 10  -boxanswer                                           8 - 4  -boxanswer                                           7 - 9  -boxanswerone                                        8 - 4  -boxanswerone                                        7 - 10  -boxanswersome                                       8 - 5  -boxanswersome                                       7 - 10  -boxinfo                                             8 - 5  -boxinfo                                             7 - 9  -boxno                                               8 - 5  -boxno                                               7 - 10  -boxnotice                                           8 - 6  -boxnotice                                           7 - 10  -boxone                                              8 - 6  -boxone                                              7 - 10  -boxsome                                             8 - 6  -boxsome                                             7 - 10  -boxyes                                              8 - 7  -boxyes                                              7 - 10  -center                                              8 - 7  -center                                              7 - 8  -clear buffer                                        8 - 7  -clear buffer and count                              8 - 7  -current menuwindow                                  8 - 8  -cursor                                              8 - 8  -cursor                                              7 - 6  -cursor off                                          8 - 8  -cursor off                                          5 - 6  -cursor off                                          5 - 2  -cursor on                                           8 - 8  -cursor on                                           5 - 6  -cursor on                                           5 - 2  -deactivate                                          8 - 9  -deactivate                                          5 - 28  -direktstart                                         8 - 9  -ecke oben links                                     8 - 10  -ecke oben rechts                                    8 - 10  -ecke unten links                                    8 - 10  -ecke unten rechts                                   8 - 10  -edit                                                8 - 11  -edit                                                7 - 6  -editget                                             8 - 11  -erase                                               7 - 5  -erase                                               8 - 11  -erase footnote                                      8 - 12  -erase footnote                                      7 - 11  -erase menunotice                                    8 - 12  -erasemenunotice                                     5 - 15  -get                                                 8 - 12  -get                                                 7 - 7  -get cursor                                          8 - 13  -get cursor                                          7 - 6  -getline                                             7 - 7  -getline                                             8 - 13  -get menuwindowcursor                                5 - 21  -get menuwindowcursor                                8 - 13  -handle menu                                         3 - 2  -handle menu                                         8 - 13  -infix namen                                         8 - 14  -infix namen                                         5 - 26  -install menu                                        3 - 2  -install menu                                        4 - 3  -install menu                                        8 - 14  -invers                                              8 - 15  -kreuz                                               8 - 15  -line                                                8 - 15  -line                                                7 - 6  -menualternative                                     8 - 15  -menualternative                                     5 - 12  -menuanswer                                          8 - 17  -menuanswer                                          5 - 2  -menuanswerone                                       8 - 17  -menuanswerone                                       5 - 8  -menuanswersome                                      5 - 8  -menuanswersome                                      8 - 18  -menu archiv checken                                 8 - 18  -menu archiv checken                                 6 - 4  -menu archiv grundeinstellung                        6 - 4  -menu archiv grundeinstellung                        8 - 18  -menu archiv holen                                   8 - 19  -menu archiv holen                                   6 - 4  -menu archiv initialisieren                          8 - 19  -menu archiv initialisieren                          6 - 4  -menu archiv loeschen                                8 - 19  -menu archiv loeschen                                6 - 4  -menu archiv neue diskette                           8 - 19  -menu archiv neue diskette                           6 - 4  -menu archiv reservieren                             6 - 4  -menu archiv reservieren                             8 - 19  -menu archiv reservierung aufgeben                   6 - 4  -menu archiv reservierung aufgeben                   8 - 19  -menu archiv schreibcheck                            8 - 20  -menu archiv schreibcheck                            6 - 4  -menu archiv schreiben                               6 - 4  -menu archiv schreiben                               8 - 20  -menu archiv verzeichnis                             8 - 20  -menu archiv verzeichnis                             6 - 4  -menu archiv verzeichnis drucken                     6 - 4  -menu archiv verzeichnis drucken                     8 - 20  -menu archiv zieltask einstellen                     6 - 4  -menu archiv zieltask einstellen                     8 - 20  -menu dateien aufraeumen                             8 - 21  -menu dateien aufraeumen                             6 - 6  -menu dateien drucken                                6 - 6  -menu dateien drucken                                8 - 21  -menu dateien kopieren                               6 - 6  -menu dateien kopieren                               8 - 22  -menu dateien loeschen                               8 - 22  -menu dateien loeschen                               6 - 6  -menu dateien speicherplatz                          6 - 6  -menu dateien speicherplatz                          8 - 22  -menu dateien umbenennen                             8 - 23  -menu dateien umbenennen                             6 - 6  -menu dateien verzeichnis                            6 - 6  -menu dateien verzeichnis                            8 - 23  -menufootnote                                        5 - 17  -menufootnote                                        8 - 23  -menufunktion                                        4 - 6  -menufunktion                                        8 - 24  -menuinfo                                            5 - 4  -menuinfo                                            8 - 24  -menukartenname                                      8 - 25  -menuno                                              8 - 25  -menuno                                              5 - 10  -menuone                                             5 - 6  -menuone                                             8 - 25  -menusome                                            5 - 7  -menusome                                            8 - 26  -menuwindowcenter                                    8 - 26  -menuwindowcenter                                    5 - 23  -menuwindowcursor                                    5 - 21  -menuwindowcursor                                    8 - 27  -menuwindowedit                                      8 - 27  -menuwindowedit                                      5 - 19  -menuwindoweditget                                   8 - 27  -menuwindoweditget                                   5 - 22  -menuwindowget                                       8 - 28  -menuwindowget                                       5 - 22  -menuwindowline                                      8 - 28  -menuwindowline                                      5 - 21  -menuwindowno                                        5 - 22  -menuwindowout                                       5 - 22  -menuwindowout                                       8 - 28  -menuwindowpage                                      8 - 29  -menuwindowpage                                      5 - 20  -menuwindowshow                                      5 - 19  -menuwindowshow                                      8 - 29  -menuwindowstop                                      5 - 23  -menuwindowstop                                      8 - 29  -menuwindowyes                                       5 - 22  -menuyes                                             5 - 10  -menuyes                                             8 - 30  -no                                                  8 - 30  -no                                                  7 - 7  -not empty                                           5 - 27  -not empty                                           8 - 30  -oberbegriff                                         8 - 31  -oberbegriff                                         4 - 5  -oeffne menu                                         8 - 31  -oeffne menu                                         4 - 3  -oeffne menukarte                                    8 - 32  -oeffne menukarte                                    4 - 3  -ohne praefix                                        5 - 26  -ohne praefix                                        8 - 32  -oldmenufootnote                                     5 - 17  -old menufootnote                                    8 - 32  -out                                                 7 - 7  -out                                                 8 - 33  -out footnote                                        7 - 11  -out footnote                                        8 - 33  -out frame                                           8 - 33  -out frame                                           7 - 5  -page                                                8 - 33  -page                                                7 - 11  -page                                                7 - 5  -page up                                             7 - 11  -put                                                 8 - 33  -put                                                 7 - 7  -putline                                             8 - 34  -putline                                             7 - 7  -refresh submenu                                     5 - 18  -refresh submenu                                     8 - 34  -regenerate menuscreen                               8 - 34  -regenerate menuscreen                               5 - 18  -regenerate menuscreen                               5 - 4  -remaining lines                                     8 - 34  -remaining lines                                     7 - 6  -remaining menuwindowlines                           5 - 21  -remaining menuwindowlines                           8 - 34  -reset dialog                                        8 - 35  -schliesse menu                                      4 - 3  -schliesse menu                                      8 - 35  -schliesse menukarte                                 8 - 35  -schliesse menukarte                                 4 - 3  -senkrecht                                           8 - 35  -show                                                8 - 35  -show                                                7 - 5  -show                                                8 - 36  -show                                                7 - 6  -show menuwindow                                     8 - 36  -show menuwindow                                     5 - 20  -stdinfoedit                                         8 - 36  -stop                                                7 - 8  -stop                                                8 - 37  -testinstallation                                    8 - 37  -testinstallation                                    4 - 3  -textprozedur                                        4 - 8  -textprozedur                                        8 - 38  -text zeile                                          4 - 13  -textzeile                                           8 - 39  -trennlinie                                          4 - 6  -trennlinie                                          8 - 38  -waagerecht                                          8 - 39  -WINDOW                                              7 - 2  -window                                              7 - 4  -window                                              8 - 40  -write menunotice                                    8 - 40  -write menunotice                                    5 - 15  -yes                                                 7 - 7  -yes                                                 8 - 41  - - diff --git a/doc/menugenerator/menu-generator handbuch.inhalt b/doc/menugenerator/menu-generator handbuch.inhalt deleted file mode 100644 index 8b1aef4..0000000 --- a/doc/menugenerator/menu-generator handbuch.inhalt +++ /dev/null @@ -1,72 +0,0 @@ -#type ("elite.lq")##limit (11.5)##pagelength (16.5)##pageblock#  -#start (1.8,0.0)#  -#type ("prop.breit.lq")#  -Inhaltsverzeichnis  -#type ("elite.lq")#  -  -  -1       Was kann ls-Menu-Generator                   3  -  -2       Installation von ls-Menu-Generator           6  -2. 1    Voraussetzungen                              6  -2. 2    Lieferumfang                                 6  -2. 3    Installation                                 7  -  -3       Die Arbeitsweise von ls-DIALOG               8  -3. 1    Ankoppeln einer Menukarte/                   8  -        Ausführen eines Menus  -3. 2    Aufbau/Inhalt einer Menukarte               11  -  -4.      Erstellen einer neuen Menukarte             13  -4. 1    Eintragen der Menupunkte                    13  -4. 2    Erstellung und Einbinden von                20  -        Informationstexten  -4. 3    Auslagerung von anwendungsbezogenen         24  -        Texten in die Menukarte  -  -5.      Dialoge innerhalb des Menus                 27  -5. 1    Eingabe eines Textes/Namens                 28  -5. 2    Ausgabe einer Information                   31  -5. 3    Auswahl eines Namen durch Ankreuzen         32  -5. 4    Auswahl mehrerer Namen durch Ankreuzen      34  -5. 5    Eingabe eines Textes/Namens - alternativ:   35  -        Auswahl durch Ankreuzen  -5. 6    Die Ja/Nein - Entscheidung                  37  -5. 7    Die Alternativentscheidung                  39  -5. 8    Die Menunotiz                               43  -5. 9    Fußzeilen im Menu                           44  -5.10    Wiederherstellung des Menubildschirms       46  -5.11    Arbeiten im Menufenster                     47  -5.11.1  Datei anzeigen/editieren                    48  -5.11.2  Menufenster öffnen/anzeigen                 48  -5.11.3  Menufenster löschen(putzen)                 49  -5.11.4  Positionierungen im Menufenster             49  -5.11.5  Informationen über die aktuelle             50  -        Menu-Fensterposition  -5.11.6  Aus-/Eingabe innerhalb des Menufensters     51  -5.11.7  Weitere Prozeduren                          52  -5.12    Festlegung der Boxpositionen innerhalb      53  -        des Menus  -5.13    ls-DIALOG-Syntax                            54  -        (Regeln zur Erstellung von Texten)  -5.14    Thesaurushandling                           55  -5.15    Aktivieren/Deaktivieren von Menupunkten     57  -  -6.      Einbinden der Datei- und Archivoperationen  59  -6. 1    Einbinden der Archivoperationen             60  -6. 2    Einbinden der Dateioperationen              65  -  -7.      Eigene Fenster und Fensteroperationen       66  -7. 1    Definition von Fenstern                     67  -7. 2    Anzeigen/Löschen von Fenstern               70  -7. 3    Operationen innerhalb des Fensters          71  -7. 3.1  Datei anzeigen/editieren                    71  -7. 3.2  Positionierungen im Fenster                 72  -7. 3.3  Ein- und Ausgaben innerhalb des Fensters    73  -7. 3.4  Weitere Prozeduren                          74  -7. 4    Boxoperationen                              75  -  -8.      Kurzbeschreibung der Befehle                78  -  -9.      Register                                   125  - | 
