summaryrefslogtreecommitdiff
path: root/doc/user
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user')
-rw-r--r--doc/user/benutzerhandbuch.1580
-rw-r--r--doc/user/benutzerhandbuch.2443
-rw-r--r--doc/user/benutzerhandbuch.32019
-rw-r--r--doc/user/benutzerhandbuch.42242
-rw-r--r--doc/user/benutzerhandbuch.5a1446
-rw-r--r--doc/user/benutzerhandbuch.5b1632
-rw-r--r--doc/user/benutzerhandbuch.5c711
-rw-r--r--doc/user/benutzerhandbuch.5d211
-rw-r--r--doc/user/benutzerhandbuch.5e223
-rw-r--r--doc/user/benutzerhandbuch.6474
-rw-r--r--doc/user/benutzerhandbuch.anhang484
11 files changed, 10465 insertions, 0 deletions
diff --git a/doc/user/benutzerhandbuch.1 b/doc/user/benutzerhandbuch.1
new file mode 100644
index 0000000..7c8fec7
--- /dev/null
+++ b/doc/user/benutzerhandbuch.1
@@ -0,0 +1,580 @@
+____________________________________________________________________________
+
+
+#on("b")##on ("u")#
+#center#Betriebssystem E U M E L
+#off ("u")#
+
+
+#center#Benutzerhandbuch
+
+
+
+
+#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#
+
+#start(5.0,1.5)##pagenr("%",1)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 1: Einleitung
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+1 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 1 - %
+#tableend##clearpos#
+#end#
+TEIL 1: Einleitung
+#free(1.0)#
+
+1.1. Vorwort
+#free(1.0)#
+
+Dieses Buch bietet Ihnen eine Anleitung zur Handhabung des Betriebssystems
+EUMEL in Hinblick auf die Textverarbeitung. Das Buch wendet sich somit an alle, die
+das leicht erlernbare EUMEL-System zur Erstellung von Texten jeglicher Art und
+jeden Umfangs nutzen wollen.
+
+Die Anleitung erfordert keinerlei Vorkenntnisse, weder von Computern im allgemei­
+nen noch von EUMEL im besonderen. Neulingen auf dem Gebiet der Benutzung eines
+Computers sei empfohlen, dieses erste Kapitel, das sich kurz mit der 'grauen Theorie'
+beschäftigt, mindestens zweimal zu lesen:
+
+- Der erste Durchgang sollte nur einer groben Orientierung dienen. Die Begriffe, die
+ teilweise erst im routinierteren Umgang Sinn gewinnen, sollten Sie 'mal gehört'
+ haben, um die folgenden Kapitel leichter lesen zu können.
+
+- Der zweite Durchgang erscheint uns sinnvoll, wenn Sie sich 'freigeschwommen'
+ haben. Wenn der Umgang mit dem EUMEL-System Ihnen nach einigen Tagen
+ schon vertrauter erscheint, ist es zweckmäßig, sich auf dem Hintergrund der
+ gemachten Erfahrungen die Erklärungen noch einmal durchzulesen. Einige der
+ Begriffe werden erst dann wirklich verständlich und manche Unsicherheit wird
+ beseitigt werden.
+
+Die weiteren Teile des Buches geben dann Anleitung vom ersten Einstieg ins
+EUMEL-System bis hin zur detaillierten Beschreibung der Textverarbeitung. Alle in
+Teil 3 und 4 enthaltenen Beispiele sollten Sie sorgfältig durchgehen und am Bild­
+schirm nachvollziehen. Aus dem Teil 5 können Sie nach eigener Einschätzung zu­
+nächst die Bereiche auswählen, die Sie selbst für besonders wichtig halten. Sie wer­
+den feststellen, daß Sie durch den Umgang mit der EUMEL-Textverarbeitung mit
+fortschreitender Routine immer mehr der gebotenen Möglichkeiten hinzunehmen
+werden.
+#free(1.0)#
+Was ist ein Betriebssystem ?
+
+Ein #ib#Betriebssystem#ie# ist eine Sammlung von Programmen, die dem Benutzer eines
+Computers die Arbeit mit diesem Gerät erst ermöglichen. Die Programme des Be­
+triebssystems stellen die Verbindung zwischen den Bausteinen eines Computers, der
+Hardware, und den Anwendungsprogrammen eines Benutzers her.
+
+Alle Programme, die diese riesige Lücke schließen und z.B. dafür sorgen, daß der
+Befehl: #on("i")#drucke ("diesen brief")#off("i")# tatsächlich dazu führt, daß der eben noch am Bild­
+schirm verfaßte Brief zum Drucker gesendet und dort ausgedruckt wird, sind soge­
+nannte Systemprogramme, Teile des Betriebssystems.
+
+Dieses Benutzerhandbuch zum Betriebssystem EUMEL wird Ihnen schrittweise die
+Befehle erklären, die Sie zur Nutzung aller Möglichkeiten der Textverarbeitung mit
+EUMEL verwenden können, und Ihnen somit einen Teil des Betriebssystems vorstel­
+len.
+#free(1.0)#
+Ist EUMEL anders als andere ?
+
+#on("b")#Ja.#off("b")# Das Betriebssystem EUMEL (#on("b")#E#off("b")#xtendable multi #on("b")#U#off("b")#ser #on("b")#M#off("b")#icroprocessor #on("b")#EL#off("b")#an Sy­
+stem) erklärt durch seinen voll ausgeschriebenen Namen einen wesentlichen Unter­
+schied zu anderen Systemen: "Erweiterbares Mehrbenutzer Mikroprozessor ELAN-
+System."
+
+Während andere auf Mikroprozessoren (und damit auf sogenannte Personal Compu­
+ter) abgestimmte Betriebssysteme #on("u")#einen#off("u")# Benutzer bei seiner Arbeit unterstützen, ist
+EUMEL fähig, #on("u")#mehreren#off("u")# Anwendern gleichzeitig die Benutzung eines Computers zu
+ermöglichen. Natürlich funktioniert EUMEL ebensogut für einen einzigen Benutzer. Es
+gibt aber bei EUMEL die Möglichkeit, durch Ankoppeln weiterer Bildschirme an den
+Rechner und #on("b")#ohne#off("b")# Kosten für zusätzliche Software mehreren Benutzern gleichzeitig
+die Arbeit an diesem Rechner zu ermöglichen.
+
+Zweitens ist EUMEL hardwareunabhängig, das heißt, gleichgültig von welchem Her­
+steller Ihr Computer stammt, die Bedienung und die Kommandosprache ist immer
+gleich. Auch können Disketten, die mit einem XY-Rechner beschrieben wurden, von
+einem ABC-Computer gelesen werden; durchaus keine Selbstverständlichkeit.
+
+Eine weitere Besonderheit des EUMEL-Systems macht alle froh, die damit arbeiten:
+EUMEL ist durchgängig in der Programmiersprache ELAN gehalten. Auch wenn Sie
+(noch) nicht programmieren möchten, erleichtert Ihnen ELAN das Leben dadurch, daß
+Sie schreiben können, was Sie meinen: eine Datei, die einen Geschäftsbrief fix und
+fertig und druckbereit enthält, heißt nicht etwa:
+
+ $TXT.PRT
+
+sondern:
+
+ Angebot an Fa.Müller 1.7.86
+
+
+Ein weiterer wichtiger Unterschied wird Ihnen bewußt werden, wenn Sie ein anderes
+Betriebssystem kennen: Die EUMEL-Textverarbeitung ist kein zusätzliches Programm
+mit eigener Kommandosprache, welches bei Bedarf geladen werden muß, sondern
+steht jederzeit, im wahrsten Sinne des Wortes auf Knopfdruck, zu Ihrer Verfügung.
+#free(1.5)#
+1.2. Wichtige Begriffe
+#free(1.0)#
+- #on("b")#TASK#off("b")#. Eine #ib#Task#ie# ist ein eigenständiger Prozeß innerhalb eines EUMEL-Systems,
+ der entweder zur Verwaltung des EUMEL-Systems oder zu einem Benutzer
+ gehört. Indem jedem Benutzer ein eigener Arbeitsbereich zugewiesen ist, wird
+ verhindert, daß unkontrolliert auf fremde Daten zugegriffen wird. Eine Task hat
+ einen Namen, mit dem sie angesprochen werden kann. Ein EUMEL-System
+ besteht aus mehreren Tasks.
+
+ Ein brauchbarer Vergleich mit einem EUMEL-Tasksystem ist ein Firmengebäude:
+ Es besteht aus vielen Räumen und jeder Raum ( = Task ) ist entweder ein nor­
+ males Arbeitszimmer oder ein Chefzimmer oder eine Werkstatt, in der Dienst­
+ leistungen für andere erledigt werden.
+
+ Eine solche Ordnung zeigt folgendes Tasksystem; der #on("i")#kursiv#off("i")# gesetzte Kommentar
+ zeigt die Benennung der 'Dienstposten' eines vergleichbaren Büros:
+
+
+ SUPERVISOR #on("i")#(* Zimmerverwalter *)#off("i")# -
+ -
+
+ SYSUR #on("i")#(* Werkstattmeister *)#off("i")#
+
+
+ ARCHIVE #on("i")#(* Archivar *)#off("i")#
+
+ configurator #on("i")#(* Elektriker *)#off("i")#
+
+ OPERATOR #on("i")#(* Hausmeister *)#off("i")#
+
+ shutup #on("i")#(* Nachtwächter *)#off("i")#
+
+ UR #on("i")#(* Aufsichtsrat *)#off("i")#
+
+ PUBLIC #on("i")#(* Abteilungsleiter *)#off("i")#
+
+ Meier #on("i")#(* Angestellter *)#off("i")#
+ Müller #on("i")#(* " *)#off("i")#
+ Schulze #on("i")#(* " *)#off("i")#
+
+
+ Bildlich gesprochen stellt eine Task also ein 'Arbeitszimmer' für einen EUMEL-
+ Benutzer dar. Als EUMEL Anwender richten Sie sich Ihre Task selbst ein, indem
+ Sie das Kommando 'begin ("taskname")' geben.
+
+ Nachdem Sie dieses Kommando einmal gegeben haben, existiert diese Task unter
+ dem von Ihnen gewählten Namen.
+
+ In der Task (also sinngemäß im Arbeitszimmer) arbeiten Sie - insbesondere legen
+ Sie Dateien (= Akten) an. Dateien existieren nur innerhalb einer Task.
+
+ Tasks werden durch den SUPERVISOR verwaltet, er regelt den Zugriff auf Tasks.
+ Um Ihre Task zu verlassen, geben Sie das Kommando 'break' an den
+ SUPERVISOR, um sie wieder zu betreten, das Kommando 'continue ("taskna­
+ me")'.
+
+
+- #on("b")#DATEI#off("b")#. Eine #ib#Datei#ie# ist eine Menge von zusammengehörigen Daten. Eine Datei in
+ einer Task entspricht einer Akte in einem Arbeitszimmer. Eine Task kann bis zu
+ 200 Dateien enthalten. Jede Datei in einer Task hat einen eigenen Namen, in ver­
+ schiedenen Tasks dürfen gleichnamige Dateien existieren. Eine Datei ist in Zeilen
+ unterteilt.
+
+ Für die Arbeit in einer Datei am Bildschirm muß auf die Datei mit dem Editor
+ zugegriffen werden: 'edit ("dateiname")', danach kann der Inhalt der Datei am
+ Terminal bearbeitet werden (siehe Kapitel 4 und 5).
+
+
+- #on("b")#KOMMANDO#off("b")#. Ein #ib#Kommando#ie# ist ein Befehl an den Rechner, eine Arbeit zu tun.
+ Welche Kommandos Sie dem Rechner zum jeweiligen Zeitpunkt geben können,
+ hängt davon ab, auf welcher 'Kommandoebene' Sie sich befinden. Als Anhalt gilt:
+
+ - Kommandos auf Supervisor-Ebene betreffen das Tasksystem.
+
+ - Kommandos auf Monitor-Ebene betreffen die eigene Task oder Dateien.
+
+ - Kommandos auf Editor- Ebene betreffen Zeilen, Worte oder einzelne Zeichen
+ der aktuellen Datei.
+
+ Auf welcher Ebene Sie sich befinden, werden Sie nach kurzer Gewöhnung leicht
+ am Bildschirm erkennen (siehe Teil 3).
+
+ Bei manchen Kommandos muß nicht nur gesagt werden, was getan werden soll,
+ sondern auch, womit es getan werden soll. Eine solche Angabe zum Kommando
+ heißt #ib#Parameter#ie#.
+ Kommando Parameter
+ | |
+ Beispiel: Lege neue Task an = begin ("taskname")
+ Drucke Datei = print ("dateiname").
+ Suche das Wort ENDE = down ("ENDE")
+
+ Parameter werden in runde Klammern gesetzt und ggf. durch Kommata voneinan­
+ der getrennt. Textparameter werden zusätzlich in Anführungsstriche gesetzt.
+
+ Ein Kommando kann keinen, einen oder viele Parameter benötigen; die
+ Beschreibung der Kommandos in diesem Buch zeigt jeweils alle Möglichkeiten.
+
+
+- #on("b")#SUPERVISOR#off("b")#. Spezielle Task zur Überwachung eines EUMEL-Systems. Ein
+ Benutzer kann durch die #ib#Supervisor#ie#-Kommandos Leistungen von dieser Task
+ fordern: neue Task einrichten, Task wiederaufnehmen und diverse Informationen.
+
+
+- #on("b")#MONITOR#off("b")#. Befehlsempfänger in einer Task. Jede Arbeit im EUMEL-System
+ findet in einer Task statt. Die Arbeit mit einem Computer besteht in wesentlichen
+ Teilen im Aufruf von Programmen durch Kommandos. Der Empfänger dieser
+ Kommandos in einer Task ist der #ib#Monitor#ie#. Der Monitor ist sichtbar durch eine
+ Zeile, in der 'gib kommando' steht. In diese Zeile werden #ib#Kommando#ie#s und erfor­
+ derliche Parameter eingegeben.
+
+
+- #on("b")#ARCHIVE#off("b")#. Spezielle Task zur Verwaltung des Diskettenlaufwerks. Da für die
+ längerfristige Datenhaltung und zur zusätzlichen Datensicherung Dateien auf
+ Disketten geschrieben werden, besitzt das EUMEL-System für diese Aufgabe
+ eine besondere Task, die die Bedienung vereinfacht und exklusiven Zugriff auf das
+ Laufwerk garantiert.
+
+
+- #on("b")#EDITOR#off("b")#. Programm zur Dateibearbeitung am Bildschirm. Das Programm wird
+ durch das ( Monitor- ) Kommando 'edit' und die Eingabe des Namens der ge­
+ wünschten Datei als Parameter gestartet.
+
+ Da ein Bildschirm normelerweise auf 80 Zeichen Zeilenbreite und 24 Zeilen be­
+ schränkt ist, kann der Editor als Fenster betrachtet werden, das über die mögli­
+ cherweise weitaus größere Datei bewegt wird und durch das der betrachtete Aus­
+ schnitt der Datei bearbeitet werden kann.
+
+
+ +-------------------------------------------------------------------+
+ i i
+ i i
+ +------------------------------------+ i
+ i i i
+ i Der Editor, Fenster zur i i
+ i Dateibearbeitung i i
+ i i i
+ +------------------------------------+ i
+ i i
+ +-------------------------------------------------------------------+
+
+
+
+
+
+
+
+
+
+
+1.3. Die Notation in diesem Buch
+#free(1.0)#
+Im weiteren Text werden Sie schrittweise in die Bedienung des Systems eingeführt.
+Für alle Kommandos und Arbeiten haben wir Beispiele in dieses Buch aufgenommen,
+die Sie direkt am Rechner nachvollziehen sollten.
+
+Beachten Sie dabei bitte folgende Regeln der Aufschreibung:
+
+- Es gibt eine Reihe von Tasten auf einer Computertastatur, die eine besondere
+ Bedeutung haben. Diese sogenannten Funktionstasten werden ebenso wie beson­
+ dere Tastenkombinationen explizit als Tasten dargestellt:
+
+
+ <SV>
+
+ <ESC> <e>
+
+ <CR>
+
+
+- Alles, was Sie am Bildschirm Ihres Rechners schreiben oder lesen sollen, ist in
+ Textbereiche, die einen Bildschirm darstellen, eingefaßt.
+
+ Beispiel:
+
+____________________________________________________________________________
+
+gib kommando:
+edit ("meine datei")
+
+____________________________________________________________________________
+
+
+- Innerhalb des Handbuchs sind in der Aufschreibung die Konventionen der
+ Programmiersprache ELAN, in der alle Programme des Betriebssystems geschrie­
+ ben sind, berücksichtigt. Dabei sind folgende Besonderheiten zu beachten:
+
+ 1) Kommandos werden grundsätzlich klein geschrieben.
+
+ 2) Dateinamen u.ä. werden in Klammern und Anführungsstriche gesetzt. In
+ diesem Buch steht an den Stellen, wo ein Dateiname auftaucht #on("i")# 'dateiname' #off("i")#;
+ den Namen, den Sie tatsächlich verwenden, können Sie frei wählen.
+
+ 3) Falls besondere Begriffe oder Beispiele innerhalb eines normalen Textes
+ auftreten, werden sie in einfache Anführungsstriche gesetzt.
+
+
+Also: Das Kommando 'edit' benötigt als Parameter einen Dateinamen. Wählen Sie
+ einen Namen und geben Sie 'edit ("dateiname")' ein. Falls Sie den Namen #on("i")#
+ "Geschäftsbrief" #off("i")# gewählt haben, müssen Sie am Bildschirm:
+
+
+edit ("Geschäftsbrief")
+
+
+tippen und das Kommando mit der <CR> Taste dem Monitor zur Bearbeitung überge­
+ben:
+
+____________________________________________________________________________
+
+gib kommando :
+edit ("Geschäftsbrief")
+
+____________________________________________________________________________
+
+
+
+
+#on("b")##on("i")#Die Eingabe von <CR> als 'Auslöser' für die Ausführung von
+Kommandos wird im weiteren nicht besonders hervorgehoben.#off("b")##off("i")#
+#page#
+1.4. Voraussetzungen
+
+#free(1.0)#
+Neben dem Computer an sich ist die vollständige Installation eines EUMEL-Systems
+auf diesem Computer Voraussetzung für alle im folgenden beschriebenen Aktivitäten.
+
+Die Beschreibung einer Systeminstallation finden Sie im Anhang I. Im weiteren gehen
+wir davon aus, daß Ihr Rechner sich in einem Zustand befindet, der durch Eingabe
+von <SV> oder <CNTL> <b> (gleichzeitig) die sogenannte EUMEL-Tapete zeigt und
+Supervisor-Kommandos annimmt.
+
+
+____________________________________________________________________________
+
+ Terminal 2
+
+
+ EUMEL Version 1.8/M
+
+
+ gib supervisor kommando:
+ begin("meine erste task")
+
+
+
+ ESC ? --> help
+ ESC b --> begin("") ESC h --> halt
+ ESC c --> continue("") ESC s --> storage info
+ ESC q --> break ESC t --> task info
+
+
+____________________________________________________________________________
+
+
+
+Weiterführende Information zum Aufbau eines EUMEL-Systems finden Sie im An­
+hang I.
+
+#page#
+Die Funktionstasten des EUMEL-Systems
+
+
+
+Die Lage der EUMEL-Funktionstasten entnehmen Sie bitte der speziellen Installa­
+tionsanleitung zu dem von Ihnen benutzten Gerät. #l pos (0.0)##l pos(4.0)#
+
+
+<,>,v,^ Positionierungstasten
+#table#
+#free(0.5)#
+<SHIFT> Umschalttaste
+#free(0.5)#
+<CR> Eingabe-/ Absatztaste
+#free(0.5)#
+<HOP> Verstärkertaste
+#free(0.5)#
+<RUBOUT> Löschtaste
+#free(0.5)#
+<RUBIN> Einfügetaste
+#free(0.5)#
+<TAB> Tabulatortaste
+#free(0.5)#
+<MARK> Markiertaste
+#free(0.5)#
+<ESC> Kommandotaste
+#free(0.5)#
+<SV> Supervisortaste
+#free(0.5)#
+<STOP> Stoptaste
+#free(0.5)#
+<WEITER> Weitertaste
+#tableend##clear pos#
+
+Task-Organisation
+#free(1.0)#
+
+Zum Verständnis der Handhabung des Systems sollten Sie versuchen, eine Vorstel­
+lung von der Organisation der Teile zu bekommen.
+
+Die einzelnen #ib#Task#ie#s eines EUMEL-Systems 'stehen nicht frei im Raum', sondern
+sind in einer baumartigen Beziehung organisiert:
+
+
+
+SUPERVISOR
+ -
+ SYSUR
+ configurator
+ OPERATOR
+
+ ARCHIVE
+UR
+ PUBLIC
+ Meyer
+ Müller
+ Schulze
+
+
+
+Das System besteht aus zwei Zweigen, die nebeneinander liegen:
+
+Dem Systemzweig mit der Wurzel SUPERVISOR
+
+ und
+
+dem Benutzerzweig mit der Wurzel UR.
+
+Der Systemzweig stellt Ihnen privilegierte Dienstleistungen zur Verfügung, der Benut­
+zerzweig stellt die normale Arbeitsumgebung dar.
+
+Alle unter diesen Wurzeln liegenden Tasks des EUMEL-Systems haben mindestens
+einen Vorgänger, es besteht also eine 'Vater-Sohn Beziehung' zwischen allen Tasks
+des Systems.
+
+Grundsätzlich können Dateien ohne besondere Kommandos zur Vater-Task geschickt
+und von der Vater-Task geholt werden, aber nicht zu beliebigen anderen Tasks.
+
+'Müller' kann eine Datei an '#ib#PUBLIC#ie#' schicken und 'Schulze' kann sie dann dort
+abholen, aber eine direkte Sendung von 'Müller' nach 'Schulze' ist in der Regel nicht
+möglich.
+
+Zur Sprechweise: jede Task, über die diese Art von 'Dateivermittlung' abgewickelt
+werden kann, heißt 'Manager-Task'. Jede Task kann zum '#ib#Manager#ie#' erklärt werden.
+1.5. Eine Beispielsitzung
+#free(1.0)#
+Der Ablauf zur Erstellung eines Schreibens stellt sich im EUMEL-System wie folgt
+dar:
+
+ <SV> SUPERVISOR aufrufen
+
+
+
+____________________________________________________________________________
+
+ Terminal 2
+
+
+ EUMEL Version 1.8/M
+
+
+ gib supervisor kommando:
+ begin("meine erste task")
+
+
+
+ ESC ? --> help
+ ESC b --> begin("") ESC h --> halt
+ ESC c --> continue("") ESC s --> storage info
+ ESC q --> break ESC t --> task info
+
+
+____________________________________________________________________________
+
+
+Durch das Kommando 'begin ("meine erste task")', welches durch <CR> abgeschlos­
+sen werden muß, wird eine Task mit dem Namen 'meine erste task' im Benutzer­
+zweig, also unterhalb von 'PUBLIC' angelegt. Würde diese Task bereits existieren, so
+könnten Sie sie mit 'continue ("meine erste task")' an das Terminal holen.
+
+____________________________________________________________________________
+
+gib kommando :
+edit ("Rechnung zum 31.12.86")
+
+____________________________________________________________________________
+
+
+In der Task eröffnen Sie eine Datei mit dem Kommando 'edit ("dateiname")'. Falls
+diese Datei neu ist, erfolgt eine Kontrollfrage (zur Kontrolle der gewünschten Schreib­
+weise des Dateinamens), die Sie durch <j> bejahen.
+
+Die Datei ist in diesem Beispiel bereits mit etwas Text gefüllt. Tippen Sie einen belie­
+bigen Text ein und beenden Sie die Bearbeitung dieser ersten Datei durch Drücken
+der Tasten <ESC> <q> (nacheinander!).
+
+
+____________________________________________________________________________
+.................... Rechnung zum 31.12.86 ...................... Zeile 1
+ G M D
+ Sankt Augustin
+ Schloß Birlinghoven
+
+Sehr geehrte Damen und Herren,
+>
+
+
+____________________________________________________________________________
+
+
+
+
+Um die Arbeit in der Task zu beenden, geben Sie auch an dieser Stelle <ESC> <q>
+(nacheinander!) ein.
+
+Nach Verlassen der Task ist wiederum die EUMEL-Tapete auf dem Bildschirm. Jede
+weitere Aktion wird wiederum von hier aus durch <SV> begonnen. Insbesondere zum
+#ib#Ausschalten des Geräts#ie# muß nach <SV> die Task '#ib#shutup#ie#' angestoßen werden (siehe
+auch Anhang I).
+
diff --git a/doc/user/benutzerhandbuch.2 b/doc/user/benutzerhandbuch.2
new file mode 100644
index 0000000..0153fae
--- /dev/null
+++ b/doc/user/benutzerhandbuch.2
@@ -0,0 +1,443 @@
+#start(5.0,1.5)##pagenr("%",1)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 2: Der Supervisor
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+2 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 2 - %
+#tableend##clearpos#
+#end#
+
+TEIL 2: Der Supervisor
+#free(1.0)#
+
+#ib(9)#2.1. Steuerkommandos#ie(9)#
+#free(1.0)#
+
+Jegliche Aktivität im EUMEL-System beginnt mit dem Aufruf des SUPERVISOR
+durch Drücken der Taste
+
+ <SV>
+
+
+Dieser Tastendruck koppelt Ihr Terminal an den Rechner an. Dieser Vorgang ist auch
+dann nötig, wenn diese Geräte praktisch eine Einheit bilden.
+
+
+____________________________________________________________________________
+
+ Terminal 2
+
+
+ EUMEL Version 1.8/M
+
+
+ gib supervisor kommando:
+
+
+
+
+ ESC ? --> help
+ ESC b --> begin("") ESC h --> halt
+ ESC c --> continue("") ESC s --> storage info
+ ESC q --> break ESC t --> task info
+
+
+____________________________________________________________________________
+
+
+Die auf den unteren Informationszeilen angezeigten Kommandos stehen nun zur
+Auswahl. Für alle diese Kommandos gilt, daß sie entweder durch zwei aufeinander­
+folgende Tastendrücke <ESC> und Kennzeichen oder auch durch vollständiges Eintip­
+pen eingegeben werden können und mit <CR> ausgelöst werden.
+
+Die Eingabe eines falschen Zeichens nach <ESC> oder eines falschen Kommandos
+wird abgewiesen. Die Eingabe ist dann zu wiederholen.
+
+
+Bedeutung der Kommandos:
+
+#on("b")#
+1) Steuerkommandos #off("b")#
+
+ #ib#ESC b#ie# #ib#begin#ie# ("taskname") Task einrichten.
+ #ib#ESC c#ie# #ib#continue#ie# ("taskname") Task wieder ankoppeln.
+ #ib#ESC q#ie# #ib#break#ie# Terminal abkoppeln.
+ #ib#ESC h#ie# #ib#halt#ie# Programmlauf abbrechen.
+
+
+
+#on("b")#
+2) Informationskommandos#off("b")# (nur Supervisor)
+
+ #ib#ESC ?#ie# #ib#help#ie# Information.
+ #ib#ESC s#ie# #ib#storage info#ie# Belegten Speicherplatz anzeigen.
+ #ib#ESC t#ie# #ib#task info#ie# Im System befindliche Tasks anzeigen.
+
+#page#
+2.2. Eine Task einrichten
+#free(1.0)#
+
+
+ Mit dem Kommando 'begin' wird eine neue Task eingerichtet.
+
+
+#free(1.0)#
+
+Zunächst koppeln Sie Terminal und Rechner, dann legen Sie eine neue Task an.
+
+ Terminal ankoppeln: <SV>
+
+ <ESC> <b>
+
+Die Tastenkombination 'ESC b' schaltet den Einfügemodus ein und positioniert
+den Cursor passend für die Eingabe des Tasknamens.
+
+____________________________________________________________________________
+
+gib supervisor kommando :
+begin ("")
+
+____________________________________________________________________________
+
+
+
+Dateinamen eintippen:
+
+____________________________________________________________________________
+
+ gib supervisor kommando:
+ begin ("taskname")
+
+____________________________________________________________________________
+
+
+Nachdem Sie den Namen eingegeben haben, betätigen Sie die <CR> Taste. Daraufhin
+meldet sich der Monitor der neuen Task und Sie können beliebige Monitor-
+Kommandos (siehe Teil 3) eingeben.
+
+Wird eine Task in dieser geschilderten Weise neu eingerichtet, so wird sie automa­
+tisch (von der Task SUPERVISOR) als Sohn der Task PUBLIC angelegt.
+
+
+Soll eine Task nicht als Sohn von PUBLIC, sondern als Sohn einer anderen Task
+angelegt werden, so ist das Kommando 'begin' mit zwei Parametern zu geben. Die
+neue Task wird dann als Sohn einer anderen Manager-Task angelegt (siehe Teil 3).
+
+
+____________________________________________________________________________
+
+ gib supervisor kommando:
+ begin ("taskname","name der vatertask")
+
+____________________________________________________________________________
+
+
+
+ACHTUNG: Die Task, die als Vater-Task angegeben wird, muß
+ eine Manager-Task sein, sonst passiert überhaupt nichts!
+ (s. Kap. 3.1.2.)
+
+#page#
+Task wiederankoppeln
+#free(1.0)#
+
+
+ Mit dem Kommando 'continue' wird eine existierende Task an das
+ Terminal angekoppelt.
+
+
+#free(1.0)#
+
+Wenn Sie die Arbeit in einer Task wiederaufnehmen wollen, holen Sie die Task mit
+dem Kommando 'continue' an das Terminal. Dieser Vorgang ähnelt dem Einrichten
+einer neuen Task:
+
+ Terminal ankoppeln: <SV>
+
+ <ESC> <c>
+
+Die Tastenkombination 'ESC c' schaltet den den Einfügemodus ein und positioniert
+den Cursor passend für die Eingabe des Tasknamens.
+
+
+____________________________________________________________________________
+
+ gib supervisor kommando:
+ continue ("taskname")
+
+____________________________________________________________________________
+
+
+Nach dieser Eingabe finden Sie die wiederaufgenommene Task so vor, wie Sie sie
+verlassen haben.
+
+#page#
+Terminal abkoppeln
+#free(1.0)#
+
+
+ Mit dem Kommando 'break' wird das Terminal vom Rechner abgekoppelt.
+
+
+#free(1.0)#
+
+Wenn Sie beispielsweise nach einem Informationskommando (siehe Teil 2.3.ff) das
+Terminal sofort vom Rechner abkoppeln möchten, geben Sie das 'break'-Kommando.
+Nach 'storage info' geht es jedoch nur mit <SV> weiter.
+
+____________________________________________________________________________
+
+ gib supervisor kommando:
+ break
+
+____________________________________________________________________________
+
+
+Nach dieser Eingabe ist das Terminal abgekoppelt. Jede neue Aktivität ist wiederum
+mit <SV> einzuleiten.
+#page#
+Laufendes Programm stoppen
+#free(1.0)#
+
+
+ Mit dem Kommando 'halt' wird ein Programm gestoppt, das am betreffenden Termi­
+ nal läuft.
+
+
+#free(1.0)#
+
+Dieses Kommando ist in besonderen Fehlersituationen von Wichtigkeit. Falls Sie ein
+Programm abbrechen wollen, aber keine regulären Eingaben am Bildschirm mehr
+möglich sind, so geben Sie zunächst <SV> ein.
+
+Sobald der Supervisor-Bildschirm erscheint, drücken Sie die Tasten
+
+#center# <ESC> <h> (oder tippen 'halt' und drücken 'CR').
+
+____________________________________________________________________________
+
+ gib supervisor kommando:
+ halt
+
+____________________________________________________________________________
+
+
+Nach dieser Eingabe wird das an diesem Terminal laufende Programm unterbrochen.
+Nach dem Abbruch kommen Sie wieder auf die Monitor-Ebene (s. Teil 3).
+#page#
+2.3. Informationskommandos
+#free(1.0)#
+
+
+ Mit den Informationskommandos können Informationen zum System abgerufen
+ werden.
+
+#free(1.0)#
+
+Die folgenden Informationskommandos können direkt an den SUPERVISOR gegeben
+werden.
+
+ Terminal ankoppeln: <SV>
+
+ <ESC> <s>
+
+
+beziehungsweise
+
+____________________________________________________________________________
+
+ gib supervisor kommando :
+ storage info
+
+____________________________________________________________________________
+
+
+gibt Auskunft über den belegten Speicherplatz auf dem EUMEL-Hintergrundspeicher.
+
+Das Kommando:
+
+
+____________________________________________________________________________
+
+ gib supervisor kommando :
+ task info
+
+____________________________________________________________________________
+
+
+gibt Auskunft über die Namen der im EUMEL-System befindlichen Tasks und die
+Struktur des Taskbaums. Verzweigungen im Taskbaum sind durch Einrückungen in
+den Ebenen des Taskbaums dargestellt.
+
+
+Alle in dem Schema der Task-Organisation (siehe Teil 1) fettgedruckten Tasks sind
+auch auf jedem Multi-User-Sysrtem zu finden, da sie zum Betrieb nötig sind.
+
+Die unterhalb von PUBLIC gelegenen Tasks werden, falls überhaupt schon vorhan­
+den, häufig nach ihrem 'Besitzer' oder der in ihnen erledigten Arbeit benannt sein.
+
+#page#
+2.4. Übersicht über Supervisor-Kommandos
+#free(1.0)#
+
+
+ In diesem Abschnitt werden alle Supervisor- und Task-Kommandos in der
+ ELAN-Notation dargestellt.
+
+#free(1.0)#
+
+Die Supervisor-Kommandos entsprechen - wie alle anderen Kommandos im
+EUMEL-System - der ELAN-Syntax (Kommando-Namen werden klein geschrie­
+ben, Parameter in Klammern, mehrere Parameter durch Kommata getrennt, TEXT-
+Parameter in Anführungsstrichen usw.).
+#free(1.0)#
+Die ELAN-Notation
+#free(1.0)#
+
+Diese Notation dient der präzisen Beschreibung von Konstrukten der Programmier­
+sprache ELAN. Im Anschluß an die teilweise eher informelle Formulierung innerhalb
+des Kapitels folgt jedem Teil eine Kurzbeschreibung der zu diesem Themenkreis
+gehörigen Konstrukte.
+
+Eine solche Beschreibung hat z.B. die Form:
+
+ PROC edit (TEXT CONST dateiname)
+
+Die klein geschriebenen Benennungen von Prozeduren, Parametern etc. sind hoffent­
+lich selbsterklärend, die groß geschriebenen Begriffe sind sogenannte Schlüsselworte
+und haben folgende Bedeutung:
+
+OP Operator
+ Ein Operator bewirkt eine elementare Operation. Operatoren werden stets
+ durch Großbuchstaben oder Sonderzeichen dargestellt.
+
+ Beispiel: + ( Addition zweier Zahlen)
+
+
+PROC Prozedur
+ Programm, welches unter seinem Namen aufrufbar ist, ggf. unter Anfügung
+ von Parametern. <CR> beendet die Eingabe und läßt das Programm ablaufen.
+
+ Beispiel: 'edit ("dateiname")'
+
+
+CONST Konstante
+ Unveränderbarer Wert.
+
+
+VAR Variable
+ Veränderbarer Wert.
+
+
+BOOL Wahrheitswert
+ Typ, der nur die Werte TRUE oder FALSE annnehmen kann.
+
+
+TEXT Text
+ Typ, der alle Buchstaben, Sonderzeichen, aber auch Ziffern umfaßt. Eine
+ TEXT CONST ist somit eine sogenannte Zeichenkette:
+
+ "meine datei"
+ "$abc123(XYZ)"
+ "abrechnung vom 30.09.86"
+
+
+ Eine im Editor erstellte Datei besteht ausschließlich aus TEXTen. Ein Text
+ wird in Anführungszeichen " " eingeschlossen.
+
+
+INT Integer
+ Ganze Zahl. Ein INT CONST ist also irgendeine ganze Zahl. Falls beschrie­
+ ben ist: 'INT CONST zeilennr', so ist gemeint, daß an dieser Stelle die Zeilen­
+ nummer der gewünschten Zeile der Datei anzugeben ist, also '25' oder '999'.
+
+
+REAL Real
+ Reelle Zahl. Eine REAL CONST bezeichnet eine Zahl mit Dezimalpunkt.
+
+ PROC sin (REAL CONST x) => sin (0.5)
+
+
+
+TASK Task
+ Eine TASK CONST bezeichnet eine existierende Task durch einen internen
+ Task-Bezeichner.
+
+
+
+THESAURUS
+ Ein THESAURUS ist eine Liste von Namen, z.B. eine Liste von Dateinamen.
+
+
+
+#page#
+Folgende Supervisor-Kommandos stehen zur Verfügung:
+
+
+#sy("begin
+ PROC begin (TEXT CONST task name)
+ Richtet eine neue Task als Sohn von PUBLIC ein.
+
+ PROC begin (TEXT CONST task name, father task name)
+ Richtet eine neue Task als Sohn der 'fathertaskname'-Task ein.
+
+
+break
+ PROC break
+ Das Terminal wird vom Rechner abgekoppelt.
+
+
+continue
+ PROC continue (TEXT CONST task name)
+ Eine existierende Task wird an das Terminal des Benutzers angekoppelt.
+
+halt
+ PROC halt
+ Das laufende Programm der dem Terminal aktuell zugeordneten Task wird
+ abgebrochen. Natürlich wird die Task nicht gelöscht.
+
+ Genauer:
+ Es wird der Fehler 'halt from terminal' induziert. Normalerweise wird das
+ Programm dadurch wie durch jeden anderen Fehler abgebrochen. Genaueres
+ findet man im Systemhandbuch unter Fehlerbehandlung.
+
+storage info
+ PROC storage info
+ Informationsprozedur über den Hintergrund-Speicher.
+
+task info
+ PROC task info
+ Informiert über alle Tasknamen im System unter gleichzeitiger Angabe der
+ Vater/Sohn-Beziehungen durch Einrückungen.
+
diff --git a/doc/user/benutzerhandbuch.3 b/doc/user/benutzerhandbuch.3
new file mode 100644
index 0000000..eb1c762
--- /dev/null
+++ b/doc/user/benutzerhandbuch.3
@@ -0,0 +1,2019 @@
+#start(5.0,1.5)##pagenr("%",1)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 3: Der Monitor
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+3 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 3 - %
+#tableend##clearpos#
+#end#
+
+TEIL 3: Der Monitor
+#free(1.0)#
+#ib(9)#3.1. Der Monitor#ie(9)#
+#free(1.0)#
+
+
+ Der Monitor nimmt die Kommandos des Benutzers entgegen, die dieser innerhalb
+ seiner Task gibt. In diesem Kapitel sind die gebräuchlichen Kommandos zur Text­
+ verarbeitung beschrieben.
+
+
+#free(1.0)#
+
+Der #ib#Monitor#ie# ist der Empfänger der Kommandos in einer EUMEL-Task. Jede Task
+und somit jeder aktive Benutzer eines EUMEL-Systems verfügt über einen eigenen
+Monitor. Halten Sie sich an dieser Stelle vor Augen:
+#on("i")##on("b")#
+
+
+Der SUPERVISOR ist die Task, die die Aufsicht über
+alle weiteren Tasks des EUMEL-Systems hat.
+
+Der Monitor ist der Befehlsempfänger in Ihrer Task.
+Jede Task hat einen Monitor.
+
+#goalpage("Mon-kdo")#
+Der Monitor in Ihrer Task macht sich direkt bemerkbar durch die Zeile:
+
+____________________________________________________________________________
+
+#ib#gib kommando#ie# :
+____________________________________________________________________________
+
+
+Die Kommandos der Monitor-Ebene, die Sie an dieser Stelle eingeben können,
+lassen sich in Gruppen ordnen:
+#on("b")#
+
+
+Informationskommandos #off("b")#
+
+ #ib#storage info#ie# Belegten Speicherplatz anzeigen.
+ #ib#task info#ie# Im System befindliche Tasks anzeigen.
+ #ib#task status#ie# Zustand der Task anzeigen.
+
+
+#on("b")#
+Kommandos zur Tasksteuerung #off("b")#
+
+ #ib#break#ie# Task abkoppeln.
+ #ib#end#ie# Task löschen.
+ #ib#global manager#ie# Task zum Manager machen, d.h.
+ Sohn-Tasks können eingerichtet
+ werden.
+
+
+#on("b")#
+Kommandos zur Dateibearbeitung #off("b")#
+
+ #ib#copy#ie# ("dateiname","kopie") Datei kopieren.
+ #ib#edit#ie# ("dateiname") Editor aufrufen.
+ #ib#forget#ie# ("dateiname") Datei löschen.
+ #ib#list#ie# Dateien auflisten.
+ #ib#rename#ie# ("dateiname","neu") Datei umbenennen.
+
+#on("b")#
+Transport von Dateien#off("b")#
+
+ #ib#fetch#ie# ("dateiname") Datei von Vater-Task holen.
+ #ib#erase#ie# ("dateiname") Datei in Vater-Task löschen.
+ #ib#save#ie# ("dateiname") Datei zu Vater-Task senden.
+
+
+#on("b")#
+Archiv-Kommandos#off("b")#
+
+ #ib#archive#ie# ("name") Archivlaufwerk reservieren.
+ #ib#fetch#ie# ("dateiname",archive) Datei von Archiv holen.
+ #ib#save#ie# ("dateiname",archive) Datei auf Archiv schreiben.
+ #ib#list (archive)#ie# Inhalt des Archivs listen.
+ #ib#check#ie# ("dateiname",archive) Datei auf Lesbarkeit prüfen.
+ #ib#clear#ie# (archive) Archiv löschen/umbenennen.
+ #ib#format (archive)#ie# Archivdiskette für Benutzung
+ vorbereiten.
+
+#on("b")#
+Textverarbeitung #off("b")#
+
+ #ib#list fonts#ie# Nennt die eingestellten
+ Schrifttypen.
+ #ib#fonttable#ie# Stellt die gewünschte Fonttabelle ein.
+ #ib#lineform#ie# ("dateiname") Zeilenweise formatieren.
+ #ib#autoform#ie# ("dateiname") Automatische Zeilenformatierung.
+ #ib#pageform#ie# ("dateiname") Seitenweise formatieren.
+ #ib#autopageform#ie# ("dateiname") Automatische Seitenformatierung.
+ #ib#index#ie# ("dateiname.p") Stichwortverzeichnis erzeugen.
+ #ib#outline#ie# ("dateiname") Übersicht bzw. Kurzfassung eines
+ Textes erstellen.
+ #ib#print#ie# ("dateiname") Datei drucken.
+
+
+
+#on("b")#
+Passwortschutz #off("b")#
+
+ #ib#task password#ie# ("geheim") Passwort für existierende Task festlegen.
+ #ib#begin password#ie# ("geheim") Passwort für neue Task festlegen.
+ #ib#family password#ie# ("geheim") Passwort für mehrere Tasks
+ festlegen.
+ #ib#enter password#ie# ("geheim") Passwort für Datei festlegen.
+
+#page#
+3.1.1. Informationskommandos
+#free(1.0)#
+
+
+ Mit den Informationskommandos können Informationen zur eigenen Task bzw. zum
+ gesamten System abgerufen werden.
+
+#free(0.5)#
+
+Bereits von Teil 2 bekannt sind die Informationskommandos 'ESC s' und 'ESC t'. Auf
+der Monitor-Ebene ist die abkürzende Schreibweise nicht voreingestellt.
+
+____________________________________________________________________________
+
+gib kommando :
+storage info
+
+____________________________________________________________________________
+
+
+gibt Auskunft über den belegten Speicherplatz auf dem EUMEL-Hintergrundspeicher.
+
+____________________________________________________________________________
+
+gib kommando :
+task info
+
+____________________________________________________________________________
+
+
+gibt Auskunft über die Namen der im EUMEL-System befindlichen Tasks und die
+Struktur des Taskbaums.
+#page#
+Auf Monitor-Ebene kann durch zusätzliche Angabe einer Zahl zwischen 1 und 3
+Zusatzinformation angefordert werden.
+
+____________________________________________________________________________
+
+gib kommando :
+task info (2)
+
+____________________________________________________________________________
+
+liefert:
+
+____________________________________________________________________________
+26.11.86 10:10 CPU PRIO CHAN STATUS
+SUPERVISOR........................... 0001:08:50 0 - wait
+ -................................ 0000:00:08 0 2 i/o
+ -................................ 0000:01:45 0 - wait
+ SYSUR............................ 0000:01:48 0 - wait
+ configurator................. 0000:00:43 0 - wait
+ OPERATOR..................... 0000:00:03 0 - i/o
+ shutup dialog............ 0000:03:08 0 - i/o
+ ARCHIVE...................... 0000:03:03 0 31 wait
+UR................................... 0000:00:43 0 - wait
+ PUBLIC........................... 0000:01:26 0 - i/o
+ agfa......................... 0000:00:11 0 - i/o
+ werner....................... 0000:06:00 0 - -busy-
+
+
+____________________________________________________________________________
+
+
+
+
+'task info (1)' entspricht dabei dem Kommando ohne Parameterangabe, '(2)' liefert
+zusätzlich die verbrauchte CPU-Zeit (=reine Rechenzeit), die Priorität, den Kanal
+(siehe S.#topage("Kanal")#) und den Taskstatus für jede Task des Systems. '(3)' liefert neben diesen
+Angaben auch noch den belegten Speicherplatz jeder Task. Die Ausführung von task
+info (3) ist sehr zeitaufwendig!
+
+Um insbesondere den belegten Speicherplatz der eigenen Task anzusehen, aber auch
+die übrigen der oben erwähnten Angaben, benutzt man das Kommando:
+
+____________________________________________________________________________
+
+ gib kommando :
+ task status
+
+24.12.86 18:30 TASK: wenni
+
+Speicher: 1000K
+CPU-Zeit: 0000.01:11
+Zustand : -busy-, (Prio 1), Kanal 1
+
+ gib kommando :
+
+____________________________________________________________________________
+#page#
+3.2. Tasksteuerung
+#free(1.0)#
+Task abkoppeln
+#free(1.0)#
+
+
+ Mit dem Kommando 'break' wird eine Task vom Terminal abgekoppelt.
+
+
+#free(1.0)#
+
+Durch die Eingabe des Kommandos 'break' auf Monitor-Ebene wird die Task vom
+Terminal abgekoppelt. Dieses Kommando bewirkt ansonsten keine Veränderungen.
+
+____________________________________________________________________________
+
+gib kommando :
+break
+
+____________________________________________________________________________
+
+
+
+Statt 'break' einzutippen, können Sie auch die Tastenkombination
+
+#center#<ESC> <q>
+
+benutzen.
+
+#page#
+
+Eine Manager-Task erzeugen
+#free(1.0)#
+
+
+ Eine Task kann zum #ib#Manager#ie#, d.h. zum Kommunikationspartner anderer Tasks,
+ erklärt werden. Insbesondere zwischen Manager-Tasks und anderen, die
+ zueinander in Vater-Sohn-Beziehung stehen, ist ein einfacher Dateitransfer
+ möglich (siehe S.#topage("Dateitrans")#).
+
+#free(1.0)#
+
+Normalerweise werden Benutzertasks als Sohn der Task PUBLIC eingerichtet. Es
+kann jedoch wünschenswert sein, selbst eine Task-Hierarchie aufzubauen und eine
+vorhandene Task zum Vater einer oder mehrerer in Zukunft einzurichtender Tasks zu
+machen, um somit auch eine Dateihierarchie mit den benötigten Operationen zu
+erhalten. Dazu wird diese Task zum 'Manager' erklärt:#goalpage("globalmanager")#
+
+____________________________________________________________________________
+
+gib kommando:
+global manager
+
+____________________________________________________________________________
+
+
+Durch das '#ib#global manager#ie#'-Kommando wird implizit ein 'break'-Kommando gege­
+ben, so daß Sie nach Eingabe dieses Kommandos wieder ein Supervisor-Kommando
+geben können. Wenn Sie nun zu irgendeinem Zeitpunkt diese (zunächst potentielle)
+Vater-Task wieder ankoppeln ('continue'-Kommando), meldet sich die Task nicht
+wie gewohnt mit 'gib kommando :', sondern mit:
+
+____________________________________________________________________________
+
+maintenance :
+
+____________________________________________________________________________
+
+
+um anzudeuten, daß es sich um eine Manager-Task handelt.
+
+Um eine Sohn-Task unterhalb einer Manager-Task einzurichten, wird zur Erzeu­
+gung dieser neuen Task nicht nur der gewünschte Name, sondern auch der Name der
+Vater-Task angegeben.#u#1)#e#
+#foot#
+#u#1)#e# Falls keine Vater-Task angegeben wird, so ist die neue Task Sohn der
+Manager-Task 'PUBLIC'.
+#end#
+
+____________________________________________________________________________
+
+ Terminal 2
+
+
+ EUMEL Version 1.8/M
+
+
+ gib supervisor kommando:
+ begin("sohntask","vatertask")
+
+
+
+ ESC ? --> help
+ ESC b --> begin("") ESC h --> halt
+ ESC c --> continue("") ESC s --> storage info
+ ESC q --> break ESC t --> task info
+
+
+____________________________________________________________________________
+
+
+
+
+In dieser Sohn-Task können dann mit einfachen Kommandos Dateien von der
+Vater-Task geholt und zur Vater-Task geschickt werden.
+
+Soll eine Task für alle anderen Tasks, nicht nur für Sohn-Tasks, des Gesamtsystems
+als Kommunikationspartner erreichbar sein, so muß diese Task als freier Manager
+deklariert werden:
+
+____________________________________________________________________________
+
+gib kommando:
+#ib#free global manager#ie#
+
+____________________________________________________________________________
+
+
+Auf eine solche Task kann von #on("u")#jeder#off("u")# anderen Task aus zugegriffen werden, ansonsten
+gilt das für gewöhnliche Manager-Tasks gesagte.
+#page#
+Task löschen
+#free(1.0)#
+
+
+ Eine Task kann mit dem '#ib#end#ie#' Kommando gelöscht werden (und mit ihr alle Daten).
+
+ #free(0.5)#
+Normale Benutzertasks werden meistens zweck- oder themengebunden eingerichtet.
+Sind die Aufgaben im Zusammenhang mit einer solchen Task erledigt, so sollte die
+Task gelöscht werden, nachdem alle Daten von Bedeutung auf Diskette gesichert
+wurden.
+
+____________________________________________________________________________
+
+gib kommando :
+end
+
+____________________________________________________________________________
+
+Wie bei allen Löschungen im EUMEL-System folgt eine Kontrollfrage durch den
+Monitor:
+
+____________________________________________________________________________
+
+gib kommando :
+end
+task "taskname" löschen (j/n) ?
+
+
+____________________________________________________________________________
+
+
+Nur bei der positiven Antwort wird gelöscht, alle Dateien sind unwiderruflich verlo­
+ren. Als positive Antwort auf derartige Abfragen wirken:
+
+#center#<j> <J> <y> <Y>
+
+<n> bzw. <N> unterdrücken die angebotene Aktion, andere Eingaben werden abgewie­
+sen.
+
+#on("b")#
+ACHTUNG: Wird eine Manager-Task gelöscht, so werden alle Sohn- Enkel- etc.
+ Tasks ohne zusätzliche Nachfrage gelöscht, falls die Sicherheitsabfrage
+ mit 'j' beantwortet wurde. #off("b")#
+#page#
+3.3. Dateibearbeitung
+#free(1.0)#
+Datei einrichten
+#free(1.0)#
+
+
+ Mit dem Editoraufruf 'edit' wird eine neue Datei eingerichtet, bzw. eine existierende
+ Datei zur Bearbeitung am Bildschirm gezeigt.
+
+
+
+#free(0.5)#
+
+Eine Datei enthält Texte, die logisch zusammengehören und sie wird über ihren
+Namen eindeutig gekennzeichnet.
+
+Das EUMEL-System speichert einmal geschriebene Texte, bis sie vom Benutzer
+gelöscht werden. In der Regel wird nicht nur ein (langer) Text oder ein Programm­
+text geschrieben, sondern mehrere und unterschiedliche. Um diese auseinanderhalten
+zu können, versehen wir sie jeweils mit einem Namen, der frei gewählt werden kann.
+Beispiele für Namen:
+
+
+ "Brief vom 1.12.86"
+ "1. Kapitel meines Buches"
+
+
+Eine Sammlung von Zeichen (also im Normalfall unsere geschriebenen Texte), die mit
+einem Namen versehen worden ist, nennt man eine #ib##on("b")#Datei#ie##off("b")#. Der Editor erstellt also eine
+Datei, wenn wir einen Text schreiben. Eine Datei kann bis zu 4 000 Zeilen fassen,
+wobei jede bis zu 32 000 Zeichen lang sein darf.
+
+
+Einrichten der ersten #ib#Datei#ie# in Ihrer Task:
+
+Der erste Schritt sollte darin bestehen, daß Sie sich einen vernünftigen Dateinamen
+ausdenken. Das EUMEL-System legt Ihnen praktisch keine Beschränkungen über
+Länge oder Form des Dateinamens auf, deshalb sollten Sie sich angewöhnen, Ihre
+Dateien so zu benennen, daß Sie anhand des Namens auch nach einer Woche oder
+länger noch erahnen können, was diese Datei enthält.
+
+Ein guter Name für die erste Datei wäre zum Beispiel: "meine erste Datei" oder
+"werners test vom 1.12.86". Im weiteren Text steht nur "dateiname" o. ä.. Setzen Sie
+dafür den von Ihnen gewählten Namen ein.
+
+____________________________________________________________________________
+
+gib kommando:
+edit ("dateiname")
+
+____________________________________________________________________________
+
+____________________________________________________________________________
+
+gib kommando:
+edit ("dateiname")
+
+"dateiname" neu einrichten (j/n)?
+
+____________________________________________________________________________
+
+Drücken Sie 'j', so wird eine neue Datei unter dem von Ihnen eingegebenen Namen
+eingerichtet. Die Datei ist zunächst leer:
+
+____________________________________________________________________________
+ ................... dateiname .................... Zeile 1
+
+____________________________________________________________________________
+
+
+
+Welche Möglichkeiten Sie bei der Bedienung des Editors haben, können Sie in Teil 4
+nachschlagen. Schreiben Sie an dieser Stelle nur einige Worte in die Datei, anhand
+derer der Dateiinhalt wiederzuerkennen ist. Sie können die Tastatur genauso benutzen
+wie die einer Schreibmaschine.
+
+____________________________________________________________________________
+ ................... dateiname .................... Zeile 1
+Inhalt der ersten Datei. 1234567890
+
+____________________________________________________________________________
+
+
+Die Datei sollte an dieser Stelle wieder geschlossen werden.
+
+Drücken Sie dazu <ESC> <q>.
+
+Dabei ist gleichgültig, wo der Cursor steht.
+
+Wiederholen Sie das Neuanlegen einer Datei mit einer zweiten Datei "anderer datein­
+ame". Bitte schreiben Sie wiederum einige Zeichen in die Datei.
+
+____________________________________________________________________________
+
+gib kommando :
+edit ("anderer dateiname")
+
+____________________________________________________________________________
+
+
+Vorschlag zur Eingabe:
+
+____________________________________________________________________________
+
+ .............. anderer dateiname ................. Zeile 1
+Halten Sie irgendeine Taste gedrücktttttttttttttttt
+
+____________________________________________________________________________
+
+
+Beenden Sie die Arbeit ebenfalls mit <ESC> <q> .
+
+
+#page#
+Dateinamen auflisten
+#free(1.0)#
+
+
+ Mit dem Kommando 'list' werden die Dateinamen der Dateien in der Task aus­
+ gegeben.
+
+
+#free(1.0)#
+
+Vor jedem Dateinamen wird das Datum der letzten Bearbeitung der Datei angezeigt.
+
+____________________________________________________________________________
+
+gib kommando:
+list
+
+____________________________________________________________________________
+
+bewirkt:
+____________________________________________________________________________
+
+ ..................... list ....................... Zeile 1
+
+01.08.86 "dateiname"
+01.08.86 "anderer dateiname"
+
+____________________________________________________________________________
+
+
+
+Auch bei dieser Auflistung der Dateinamen handelt es sich um eine EUMEL-Datei
+ (allerdings um eine schreibgeschützte), die Ausgabe wird also wie gewohnt durch
+ das Kommando <ESC> <q> beendet.
+#page#
+Datei duplizieren
+#free(1.0)#
+
+
+ Mit dem Kommando 'copy' wird eine existierende Datei dupliziert.
+
+
+#free(1.0)#
+
+Eine existierende Datei kann dupliziert werden durch das Kommando :
+
+____________________________________________________________________________
+
+gib kommando:
+copy ("dateiname","kopiename")
+
+____________________________________________________________________________
+
+
+Durch dieses Kommando wird eine Kopie der Datei "dateiname" unter dem Namen
+"kopiename" angelegt, der Inhalt der beiden Dateien ist zunächst identisch. Kontrol­
+lieren Sie die Richtigkeit dieser Behauptung, indem Sie nachsehen, ob der Inhalt der
+kopierten Datei gleich dem Inhalt der Ursprungsdateiname ist:
+
+____________________________________________________________________________
+
+gib kommando:
+edit ("kopiename")
+
+____________________________________________________________________________
+#page#
+Dateinamen ändern
+#free(1.0)#
+
+
+ Mit dem Kommando 'rename' wird der Name einer Datei geändert.
+
+
+#free(1.0)#
+
+Sollte Ihnen der Name einer Datei nicht gefallen, so besteht die Möglichkeit, den
+Namen zu ändern:
+
+____________________________________________________________________________
+
+gib kommando:
+rename ("dateiname","neuer dateiname")
+
+____________________________________________________________________________
+
+
+#page#
+Datei löschen
+#free(1.0)#
+
+
+ Mit dem Kommando 'forget' wird eine Datei gelöscht.
+
+
+#free(1.0)#
+
+Das Löschen einer Datei wird durch das Kommando:
+
+____________________________________________________________________________
+
+gib kommando:
+forget ("neuer dateiname")
+
+____________________________________________________________________________
+
+eingeleitet. Aus Gründen der Sicherheit erfolgt vor der Ausführung des Kommandos
+jedoch die Abfrage:
+
+____________________________________________________________________________
+
+gib kommando:
+forget ("neuer dateiname")
+
+"dateiname" löschen ? (j/n)
+
+____________________________________________________________________________
+
+Als positive Antwort auf derartige Abfragen wirken: <j> <J> <y> <Y>
+
+<n> bzw. <N> unterdrücken die angebotene Aktion, andere Eingaben werden abgewie­
+sen.
+
+#page#
+Dateien verschicken
+#free(1.0)#
+#goalpage("Dateitrans")#
+
+
+ Dateien können zur Vater-Task geschickt und von der Vater-Task geholt werden.
+
+#free(1.0)#
+
+Die Vereinbarung, daß Dateien in einer Task lokal sind, d.h. daß nur in dieser Task
+Zugriff auf die Daten möglich ist, ist häufig zu einschränkend. So kann es zweck­
+mäßig sein, von mehreren Arbeitsplätzen (= Tasks) aus die wesentlichen Ergebnisse
+an einer zentralen Stelle zu sammeln oder Ergebnisse aus Tasks, die nur kurzzeitig
+für eine spezielle Aufgabe eingerichtet wurden, länger aufzubewahren.
+
+Zu diesem Zweck wird eine Benutzertask zum Manager erklärt (siehe S.#topage("globalmanager")#) und es
+werden Söhne dieser Task eingerichtet.
+#page#
+Datei zur Vater-Task schicken
+#free(1.0)#
+
+
+ Mit dem Kommando 'save' wird die Kopie einer Datei zur Vater-Task geschickt.
+
+
+#free(1.0)#
+
+____________________________________________________________________________
+
+gib kommando:
+save ("dateiname")
+
+____________________________________________________________________________
+
+Wird eine Datei an die Vater-Task gesendet, wird eine Kopie der Ursprungsdateina­
+me unter dem Namen 'dateiname' in der Vater-Task eingerichtet. Danach sind diese
+beiden, zunächst gleichen Dateien unabhängig voneinander. Änderungen, welcher Art
+auch immer, haben keinen Einfluß auf die namensgleiche Kopie in der anderen Task.
+
+Falls in der Vater-Task bereits eine Datei mit dem Namen 'dateiname' existiert, sei
+es durch Zufall oder weil bereits einmal eine 'save'-Operation durchgeführt worden
+ist, erfolgt eine Abfrage:
+
+____________________________________________________________________________
+
+gib kommando:
+save ("dateiname")
+
+"dateiname" überschreiben ? (j/n)
+
+____________________________________________________________________________
+
+Nur wenn die positive Eingabe 'j' erfolgt, wird die Datei in der Vater-Task durch die
+eigene Datei überschrieben.
+#page#
+Datei von der Vater-Task holen
+#free(1.0)#
+
+
+ Mit dem Kommando 'fetch' wird die Kopie einer Datei von der Vater-Task geholt.
+
+
+#free(1.0)#
+
+Entsprechend dem Versenden einer Dateikopie können Sie eine Kopie von der Vater­
+Task holen und ggf., natürlich nach Abfrage, Ihre Datei dieses Namens überschrei­
+ben.
+
+____________________________________________________________________________
+
+gib kommando:
+fetch ("dateiname")
+
+____________________________________________________________________________
+
+#page#
+Datei in der Vater-Task löschen
+#free(1.0)#
+
+
+ Mit dem Kommando 'erase' wird eine Datei in der Vater-Task gelöscht.
+
+
+#free(1.0)#
+
+Soll eine Datei in der Vater-Task gelöscht werden, so kann dieses, dem 'forget'-
+Kommando analoge Kommando, in der Sohn-Task gegeben werden:
+
+____________________________________________________________________________
+
+gib kommando:
+erase ("dateiname")
+
+____________________________________________________________________________
+
+Falls die Datei in der Vater-Task existiert, wird sie nach Kontrollfrage gelöscht.
+
+____________________________________________________________________________
+
+gib kommando:
+erase ("dateiname")
+"dateiname" loeschen (j/n) j
+
+gib kommando :
+
+
+____________________________________________________________________________
+
+
+ Anm: Die Task 'PUBLIC' ist grundsätzlich eine Manager-Task. Da Benut­
+ zer-Tasks als Sohn von '#ib#PUBLIC#ie#' eingerichtet werden, falls Sie nicht als
+ Sohn einer besonderen Manager-Task eingerichtet wurden, beziehen sich
+ 'fetch'-, 'save'- und 'erase'-Kommandos auf 'PUBLIC'.
+#page#
+3.4. Das Archiv
+#free(1.0)#
+
+
+ Das Archiv dient der Speicherung von Dateien auf Disketten (Sicherung).
+
+#free(1.0)#
+
+Das #ib#Archiv#ie# übernimmt im EUMEL-System die Verwaltung der langfristigen Daten­
+haltung. Das Archiv sollen Sie benutzen, um:
+
+- Sicherungskopien wichtiger Dateien außerhalb des Rechners zu besitzen;
+
+- nicht benötigte Dateien außerhalb einer Task zu halten (Speicherplatzersparnis!);
+
+- Dateien auf andere Rechner zu übertragen.
+
+Das Archiv wird im EUMEL-System durch die Task 'ARCHIVE', die das Disketten­
+laufwerk des Rechners verwaltet, realisiert. Die Steuerung durch eine Task hat für Sie
+die erfreuliche Folge, daß die Handhabung des Archivs sich kaum von den schon
+bekannten Dateioperationen unterscheidet. In den Kommandos wird zusätzlich ange­
+geben, daß das Archiv angesprochen werden soll.
+
+#page#
+Archiv-Kommandos
+#free(1.0)#
+
+
+ Der Arbeitsablauf bei Benutzung des Archivs besteht immer aus der Reservierung,
+ dem Lese- oder Schreibzugriff und der Freigabe des Archivs nach Ende der
+ Arbeit. Jede Arbeit mit dem Archiv beginnt mit dem Reservierungskommando.
+
+
+#free(1.0)#
+
+Als ersten Schritt der Archivbenutzung müssen Sie das Archiv reservieren, das heißt
+der Verwaltung Ihres EUMEL-Systems mitteilen, daß Sie die Task 'ARCHIVE', die
+der Steuerung des Diskettenlaufwerks dient, für Ihre Task arbeiten lassen. Solange für
+Ihre Task das Archiv reserviert ist, kann keine andere Task das Archivlaufwerk benut­
+zen.
+
+Für die Reservierung müssen Sie bei Benutzung einer schon vorbereiteten oder sogar
+beschriebenen Diskette den Namen dieser Archivdiskette kennen (er sollte auf dem
+Diskettenaufkleber stehen) oder vor Benutzung einer neuen Diskette einen Namen
+festlegen (und auf dem Aufkleber vermerken). Wie gewohnt gibt es keine Vorschrif­
+ten für die Namensgebung.
+
+Erst nachdem Sie das Reservierungskommando gegeben haben:
+
+____________________________________________________________________________
+
+gib kommando:
+archive ("diskettenname")
+
+____________________________________________________________________________
+
+
+sollten Sie die Diskette in das Laufwerk einschieben, um zu verhindern, daß ein
+anderer Benutzer, der das Archiv bereits für sich reserviert hat, auf Ihrer zufällig
+gleichnamigen Datei arbeitet.
+
+
+Eine Datei wird mit dem Kommando:
+
+____________________________________________________________________________
+
+save ("dateiname",archive)
+
+
+____________________________________________________________________________
+
+
+auf eine Diskette geschrieben und mit dem Kommando:
+
+____________________________________________________________________________
+
+fetch ("dateiname",archive)
+
+____________________________________________________________________________
+
+
+von einer Diskette geholt.
+
+Das Inhaltsverzeichnis einer Diskette erhalten Sie durch:
+
+____________________________________________________________________________
+
+list (archive)
+
+____________________________________________________________________________
+
+#page#
+Benutzung einer neuen Archivdiskette
+#free(1.0)#
+
+
+ Eine neue Diskette muß für die Benutzung vorbereitet (formatiert) werden.
+
+
+
+#free(1.0)#
+Vor der erstmaligen Benutzung einer Archivdiskette muß diese formatiert, d.h. in
+Spuren und Sektoren für die Positionierung des Schreib-/Lesekopfes des Disketten­
+laufwerks eingeteilt werden, um überhaupt ein Beschreiben der Diskette zu ermög­
+lichen. Die Einteilung ist geräteabhängig, häufige Formate sind:
+
+ 40 Spuren zu je 9 Sektoren (360 K)
+ 80 Spuren zu je 9 Sektoren (720 K).
+
+Die #on("b")#Erst#off("b")#benutzung einer #ib#Archivdiskette#ie# erfordert nach der Reservierung des Archivs
+das Kommando:
+
+____________________________________________________________________________
+
+gib kommando:
+format (archive)
+
+____________________________________________________________________________
+
+
+Erst nach einer Kontrollabfrage:
+
+____________________________________________________________________________
+
+gib kommando:
+format (archive)
+
+Archiv "diskettenname" formatieren ? (j/n)
+
+____________________________________________________________________________
+
+wird tatsächlich formatiert und die Diskette steht mit dem Namen "diskettenname" für
+Archivoperationen zur Verfügung.
+
+#on("b")#
+ACHTUNG: Wird eine bereits beschriebene Diskette noch einmal formatiert, so sind
+ alle Daten, die auf der Diskette waren, verloren.#off("b")#
+
+
+Bei einigen Rechnern ist es möglich, die Formatierung zu variieren. Falls beim Forma­
+tieren auf einem solchen Rechner ein anderes als das Standardformat erzeugt werden
+soll, so ist die Codierung des gewünschten Formats mitanzugeben.
+
+
+Beispiel: Für ein Gerät mit 5μ Zoll Disketten wäre z.B. einstellbar:
+ code 0 : Standardformat
+ code 1 : 40 Spuren
+ code 2 : 80 Spuren
+ code 3 : High Density
+
+ 'format (archive)' erzeugt ebenso wie 'format (0,archive)' eine standard­
+ formatierte Diskette, 'format (3,archive)' erzeugt eine High Density
+ Formatierung.
+#page#
+Diskette löschen / umbenennen
+#free(1.0)#
+
+
+ Bereits benutzte Disketten können wieder gelöscht und auch umbenannt werden.
+
+
+#free(1.0)#
+
+Falls Sie den Inhalt einer beschriebenen Archivdiskette löschen oder den Namen einer
+Diskette ändern wollen, müssen Sie das Archiv unter dem gewünschten Namen reser­
+vieren: Falls Sie den Inhalt löschen möchten, tun Sie das unter dem bisherigen und
+bestehenden Namen. Falls Sie die Diskette umbenennen wollen, reservieren Sie das
+Archiv unter dem neuen gewünschten Namen. Beachten Sie, daß durch das Umbe­
+nennen eines Archivs alle darauf befindlichen Dateien gelöscht werden. Anschließend
+geben Sie das Kommando:
+
+____________________________________________________________________________
+
+gib kommando:
+#ib#clear#ie# (archive)
+
+____________________________________________________________________________
+
+Durch die Ausführung des Kommandos erhält die eingelegte Diskette den in der
+Reservierung angegebenen Namen. Das Inhaltsverzeichnis, das sich auf der Diskette
+befindet, wird gelöscht. Damit sind die Daten, die sich eventuell auf dieser Diskette
+befanden, nicht mehr auffindbar. Die Diskette entspricht einer neu formatierten Disket­
+te#u#1)#e#. #foot#
+#u#1)#e# Das Kommando 'format' enthält implizit 'clear'.
+#end#
+Eine Neuformatierung ist demnach bei Wiederverwendung der Diskette nicht notwen­
+dig.
+
+#page#
+Inhaltsverzeichnis der Diskette
+#free(1.0)#
+
+
+ Mit 'list (archive)' werden die Dateien auf der Diskette angezeigt.
+
+
+#free(1.0)#
+
+Eine formatierte Diskette kann nach der Archivanmeldung gelesen oder beschrieben
+werden. Um zu sehen, welche Dateien auf der Diskette zu holen (= lesen) sind bzw.
+wieviel Platz zum Beschreiben vorhanden ist, ist es zweckmäßig, zunächst das In­
+haltsverzeichnis der Diskette zu betrachten.
+
+____________________________________________________________________________
+
+gib kommando:
+list (archive)
+
+____________________________________________________________________________
+
+Beispiel:
+
+____________________________________________________________________________
+
+ ............diskettenname (100 K belegt von 720 K)..............
+
+01.05.86 25 K "rechnungen april"
+01.06.86 23 K "rechnungen mai"
+01.07.86 20 K "rechnungen juni"
+01.08.86 32 K "rechnungen juli"
+
+____________________________________________________________________________
+#page#
+Lesen und Schreiben auf Diskette
+#free(1.0)#
+
+
+ Lesen und Schreiben auf der Diskette entspricht den bekannten Operationen zum
+ Senden und Holen von Dateien.
+
+
+
+#free(1.0)#
+Das Schreiben einer Datei auf Diskette entspricht dem Übersenden einer Datei an die
+Vater-Task. Einziger Unterschied ist, daß Sie das Ziel explizit angeben müssen:
+
+____________________________________________________________________________
+
+gib kommando:
+#ib#save#ie# ("dateiname",archive)
+
+____________________________________________________________________________
+
+Entsprechend funktioniert auch das Lesen einer Datei von der Diskette:
+
+____________________________________________________________________________
+
+gib kommando:
+fetch ("dateiname",archive)
+
+____________________________________________________________________________
+
+Wie auch bei der Kommunikation zwischen Sohn- und Vater-Task werden nur
+Kopien der Dateien geholt bzw. geschrieben.
+#page#
+Wechsel der Archivdiskette
+#free(1.0)#
+Bei Einlegen einer anderen Archivdiskette müssen Sie erneut das Kommando
+
+____________________________________________________________________________
+
+gib kommando:
+archive ("diskettenname")
+
+____________________________________________________________________________
+
+geben, da mit der Archivreservierung zugleich die Prüfung von Diskettenname und
+-Inhaltsverzeichnis vorbereitet wird.
+#page#
+Beenden der Archivreservierung
+#free(1.0)#
+
+
+ Nach Benutzung Archiv freigeben!
+
+
+#free(1.0)#
+
+Wenn Sie alle gewünschten Arbeiten mit dem Archiv fertiggestellt haben, geben Sie
+das Archiv wieder frei.
+
+____________________________________________________________________________
+
+gib kommando:
+#ib#release#ie# (archive)
+
+____________________________________________________________________________
+
+Durch dieses Kommando kann die Task 'ARCHIVE' mit ihren Leistungen von einer
+anderen Task in Anspruch genommen werden. Falls Sie dieses Kommando nicht
+gegeben haben aber seit 5 Minuten keine Archivoperation ausgelöst haben, kann eine
+andere Task durch die Anforderung 'archive("diskettenname")' das Archiv reservieren.
+Durch diese Maßnahme wird verhindert, daß ein vergeßlicher Benutzer bei einem
+System mit mehreren Benutzern das Archiv blockiert.
+#page#
+Fehlermeldungen des Archivs
+#free(1.0)#
+
+
+ Bei Archiv-Operationen kann es zu Fehlersituationen kommen.
+
+#free(1.0)#
+
+Versucht man, eine Datei vom Archiv zu holen, kann es vorkommen, daß das Ar­
+chiv-System
+
+____________________________________________________________________________
+
+#ib#Lese-Fehler (Archiv)#ie#
+
+____________________________________________________________________________
+
+meldet und den Lese-Vorgang abbricht. Dies kann auftreten, wenn die Floppy
+beschädigt oder aus anderen Gründen nicht lesbar ist (z.B. nicht justierte Disket­
+ten-Geräte). In einem solchen Fall vermerkt das Archiv-System intern, daß die Datei
+nicht korrekt gelesen werden kann. Das sieht man z.B. bei 'list (archive)'. Dort ist der
+betreffende Datei-Name mit dem Zusatz 'mit Lese-Fehler' gekennzeichnet. Um
+diese Datei trotzdem zu lesen, muß man sie unter ihrem Dateinamen mit dem Zusatz
+'mit Lese-Fehler' lesen.
+
+____________________________________________________________________________
+
+gib kommando:
+fetch ("dateiname mit Lese-Fehler")
+
+____________________________________________________________________________
+
+Die Datei wird in diesem Fall trotz Lese-Fehler (Informationsverlust!) vom Archiv
+gelesen.
+
+Um solche Fälle möglichst zu vermeiden, sieht das EUMEL-System die Möglichkeit
+vor, Archive bzw. Archiv-Dateien nach Beschreiben zu prüfen. Das erfolgt mit dem
+Kommando
+
+____________________________________________________________________________
+
+gib kommando :
+#ib#check#ie# ("dateiname", archive)
+
+____________________________________________________________________________
+
+
+Durch dieses Kommando werden eventuelle Lese-Fehler gemeldet.
+
+Weitere Fehlermeldungen des Archivs:
+
+* Lesen unmöglich (Archiv)
+ Die Archiv-Diskette ist nicht eingelegt oder die Tür des Laufwerks ist nicht ge­
+ schlossen.
+=> Diskette einlegen bzw. Tür schließen.
+
+* Schreiben unmöglich (Archiv)
+ Die Diskette ist schreibgeschützt.
+=> falls wirklich gewünscht, Schreibschutz entfernen.
+
+* Archiv nicht angemeldet
+ Das Archiv wurde nicht angemeldet
+=> 'archive ("name")' geben.
+
+* Lese-Fehler (Archiv)
+ Siehe Lesen unmöglich
+
+* Schreibfehler (Archiv)
+ Die Diskette kann nicht (mehr) beschrieben werden.
+=> Andere Diskette verwenden.
+
+* Speicherengpass
+ Im System ist nicht mehr genügend Platz, um eine Datei vom Archiv zu laden, ggf.
+=> ggf. Dateien löschen.
+
+* RERUN bei Archiv-Zugriff Das System wurde bei einer Archiv-Operation durch
+ Ausschalten bzw. Reset unterbrochen.
+
+* "dateiname" gibt es nicht
+ Die Datei "dateiname" gibt es nicht auf dem Archiv.
+=> mit 'list(archive)' Archiv prüfen.
+
+* Archiv heißt ...
+ Die eingelegte Diskette hat einen anderen als den eingegebenen Archivnamen.
+=> Kommando 'archive' mit korrektem Namen geben.
+
+* Archiv wird von Task ... benutzt
+ Das Archiv wurde von einem anderen Benutzer reserviert.
+=> Abwarten.
+
+* "dateiname" kann nicht geschrieben werden (Archiv voll)
+ Die Datei ist zu groß für die eingelegte Diskette.
+=> Andere Diskette für diese Datei nehmen.
+
+* Archiv inkonsistent
+ Die eingelegte Diskette hat nicht die Struktur einer Archiv-Diskette.
+=> 'format (archive)' vergessen.
+
+* save/erase wegen Lese-Fehler verboten
+ Bei Archiven mit Lese-Fehler sind Schreiboperationen verboten, weil ein Erfolg
+ nicht garantiert werden kann.
+
+
+
+3.5. Kommandos für mehrere Dateien
+#free(1.0)#
+
+
+ Durch Anwendung der besonderen Operatoren 'ALL' und 'SOME' können Sie
+ mehrere Dateien mit einem Kommando behandeln.
+
+
+#free(1.0)#
+Oft ist es sehr zweckmäßig und erleichternd, einen Befehl für eine ganze Reihe von
+Dateien wirken zu lassen, wie z.B. beim Archivieren, wenn Sie etwa alle während des
+Tages veränderten Dateien mit deren neuen Stand auf Diskette schreiben möchten.
+
+Da Tasks einen Namen haben und jede Task ein Inhaltsverzeichnis ihrer Dateien
+führt, ist es möglich, Listen von Dateien zu benennen.
+#page#
+Interne Tasknamen
+#free(1.0)#
+Wenn Sie eine andere als die eigene oder die Vater-Task ansprechen wollen, ist es
+notwendig, den 'internen Tasknamen' anzugeben. Diese auf den ersten Blick etwas
+undurchsichtige Forderung hat folgenden Hintergrund:
+
+Durch die in der Einleitung vorgestellte Baumstruktur des EUMEL-Systems ist es
+ohne besondere Angaben nur möglich, Kommandos zu geben, die die eigene Task
+('edit'..) oder die Vater-Task ('save'..) betreffen. Beim Archivieren zum Beispiel wäre
+es demzufolge erforderlich, eine Datei über den Vater vom Vater vom Vater... an den
+Sohn des Sohnes... zu schicken, damit die Datei endlich in der Task 'ARCHIVE'
+landet. Statt dessen verwenden Sie eine Prozedur 'archive', die den internen Task­
+bezeichner liefert. Damit wird die gewünschte Task intern identifiziert, ohne daß Sie
+sich darum kümmern müssen.
+
+Wichtige Prozeduren, die interne Taskbezeichner liefern, sind:
+
+ myself Bezeichner der eigenen Task
+ public Bezeichner von PUBLIC
+ father Bezeichner der Vater-Task#u##count##e#
+ archive Bezeichner von ARCHIVE
+ printer Bezeichner von PRINTER #foot#
+#u##value##e# Falls kein besonderer Manager eingerichtet wurde, liefern 'father' und 'public'
+ natürlich dieselbe Task: PUBLIC. #end#
+#page#
+Dateiverzeichnisse
+#free(1.0)#
+Jede Task verfügt über ein Verzeichnis der in ihr befindlichen Dateien. Das Verzeich­
+nis Ihrer eigenen Task können Sie mit dem 'list'-Kommando betrachten. Das Ver­
+zeichnis einer anderen Task sehen Sie beispielsweise durch das Kommando 'list
+(archive)'. In diesem Fall müssen Sie dem eigentlichen Kommando den internen
+Taskbezeichner der gewünschten Task hinzugeben, um das Verzeichnis zu sehen.
+
+Um ein Verzeichnis in Verbindung mit anderen Kommandos benutzen zu können, gibt
+es besondere Operatoren:
+
+ #ib#ALL#ie# liefert das gesamte Verzeichnis
+ #ib#SOME#ie# bietet das Verzeichnis zur Auswahl von Einträgen an.
+
+
+In Verbindung mit einem internen Taskbezeichner wird einer der beiden Operatoren
+einem Monitor-Kommando als Parameter nachgestellt. Das Kommando wirkt dann
+nacheinander auf alle im Verzeichnis enthaltenen Dateien.
+
+
+____________________________________________________________________________
+
+gib kommando:
+fetch (ALL father)
+
+____________________________________________________________________________
+
+Alle Dateien der Vater-Task werden nacheinander geholt, bei Namensgleichheit
+erfolgt die bekannte Kontrollfrage, ob die gleichnamige Datei in der eigenen Task
+überschrieben werden soll.
+
+Falls nur einige Dateien des Verzeichnisses bearbeitet werden sollen, wird der Opera­
+tor 'SOME' dem Taskbezeichner vorangestellt:
+
+____________________________________________________________________________
+
+gib kommando:
+fetch (SOME father)
+
+____________________________________________________________________________
+
+
+Hier wird zunächst das Dateiverzeichnis der Task angeboten. Streichen Sie alle
+Dateien, die auf der Diskette sind, aber nicht in Ihre Task geholt werden sollen, aus
+dem Verzeichnis, indem Sie
+
+- den Dateinamen mit Blanks überschreiben
+
+ oder:
+
+- die Zeile mit <HOP> <RUBOUT> löschen
+
+ oder:
+
+- mehrere Zeilen markieren, indem Sie zu Beginn des zu markierenden Bereichs
+ 'mark' betätigen und mit Hilfe der Cursor-Tasten den Beereich so weit wie benö­
+ tigt ausdehnen. Im Anschluß daran können Sie diese Zeilen durch
+
+ <ESC> <RUBOUT> oder
+
+ <ESC> <p>
+
+ löschen.
+
+
+____________________________________________________________________________
+
+ .............................. .......................... #markoff#
+rechnungen april
+rechnungen mai
+rechnungen juni
+rechnungen juli
+
+
+
+____________________________________________________________________________
+
+
+
+In obigem Beispiel werden nach dem Kommando 'ESC RUBOUT' (=Löschen der
+markierten Zeilen) und dem Kommando 'ESC q' (=editieren beenden) die Dateien
+'rechnungen juni' und 'rechnungen juli' vom Archiv geholt.
+
+Als weitere Vereinfachung gibt es die Prozedur 'all' als Abkürzung für 'ALL myself'.
+
+Beispiel: alle Dateien auf Archivdiskette schreiben.
+
+____________________________________________________________________________
+
+gib kommando:
+save (all,archive)
+
+____________________________________________________________________________
+
+
+Für Fortgeschrittene:
+
+Sie können auch aus den Verzeichnissen mehrerer Tasks ein neues Verzeichnis
+bilden. Zu diesem Zweck sind folgende Mengenoperationen auf Verzeichnisse mög­
+lich:
+
+ #ib#-#ie# Differenzmenge
+ #ib#+#ie# Vereinigungsmenge
+ #ib#/#ie# Schnittmenge
+
+Beispiel:
+
+ fetch (ALL father - ALL myself)
+
+Alle Dateien der Vater-Task, die noch nicht in der eigenen Task sind, werden geholt.
+
+3.7. Passwortschutz
+#free(1.0)#
+
+
+ Das EUMEL- System ermöglicht Passwortschutz für Dateien, einzelne Tasks und
+ ganze Zweige des Taskbaumes.
+
+#free(1.0)#
+
+Falls Sie sicherstellen wollen (oder müssen), daß Teile Ihres EUMEL-Systems vor
+unberechtigter Benutzung geschützt sind, können Sie den Zugriff mit einem Passwort
+regeln.
+
+Als Passwort können Sie jeden beliebigen Text nehmen. Bedenken Sie jedoch, daß
+ein wirklich wirksamer Schutz nur dann gewährleistet ist, wenn Sie weder ein triviales
+Passwort (etwa den eigenen Vornamen) auswählen, noch eines, das Sie selbst nicht
+behalten. #u##count("1")#)#e# #foot#
+#u##value("1")#)#e# Man darf Passwörter nicht vergessen! Durch Passwörter geschützte Tasks kann
+niemand - außer durch die Angabe des korrekten Passworts - wieder ankoppeln.
+Hat man das Passwort vergessen, kann man nur noch die Task löschen.
+#end#
+
+ACHTUNG: Es gibt ein besonderes Passwort im EUMEL-System: "-". Dieses
+ Passwort verhindert, daß die Task in der es gegeben wurde (z.B. UR), an
+ ein Terminal geholt wird, es darf folglich nicht für normale
+ Manager-Tasks gegeben werden.
+#page#
+Eine Task mit Passwort schützen
+#free(1.0)#
+Das Monitor-Kommando '#ib#task password#ie#' sorgt dafür, daß eine Task fortan nur wieder
+mit einem 'continue'-Kommando 'betreten' werden kann, wenn man vorher das
+richtige Passwort angibt.
+
+____________________________________________________________________________
+
+gib kommando:
+task password ("rosebud")
+
+____________________________________________________________________________
+
+Versucht nun ein Benutzer, die mit dem Passwort geschützte Task mit dem 'conti­
+nue'-Kommando an sein Terminal anzukoppeln, wird er zunächst nach dem #ib#Pass­
+wort#ie# gefragt. Nur unter Angabe des Passworts wird die Task angekoppelt.
+
+Bei der Beantwortung des Passworts werden statt der eingegebenen Zeichen Punkte
+auf den Bildschirm geschrieben. Durch Betätigen von ESC können die getippten
+Zeichen lesbar gemacht werden.
+
+____________________________________________________________________________
+
+ gib supervisor kommando:
+ continue("taskname")
+ Passwort: .......
+
+
+____________________________________________________________________________
+
+
+Der Passwortschutz gewährleistet, daß kein unberechtigter Benutzer direkt an die
+Dateien und Programme der Task gelangen kann. Es gibt jedoch noch zwei Situatio­
+nen, die einen unberechtigten Zugang zu Dateien erlauben:
+
+a) Dateien in die Vater-Task schicken:
+ Transportiert man Dateien in die Vater-Task ('save'-Kommando) können Benut­
+ zer auf diese Dateien zugreifen (sofern sie Zugang zu dieser Task haben). Dies
+ kann man verhindern, indem man ein Datei-Passwort angibt. Man beachte, daß
+ das Passwort für Dateien und das oben beschriebene Passwort für Tasks nichts
+ miteinander zu tun haben.
+
+b) Dateien werden in eine Sohn-Task geholt:
+ Ist die Task als Vater-Task eingerichtet ('global manager'-Kommando), dann ist
+ es möglich, von der Sohn-Task Dateien ('fetch'-Kommando) aus der Vater-
+ Task zu holen, die mit einem Passwort geschützt ist. Darum muß man verhindern,
+ daß unberechtigte Benutzer Söhne einer mit Passwort geschützten Task einrich­
+ ten können. Das kann man mit dem Kommando
+
+____________________________________________________________________________
+
+maintenance :
+#ib#begin password#ie# ("geheim")
+
+____________________________________________________________________________
+
+
+ Wird dieses Kommando gegeben, wird man bei dem Versuch, eine Sohn-Task
+ einzurichten, nach einem Passwort gefragt. Beachten Sie, daß das 'begin pass­
+ word' nichts mit dem Task-Passwort und Datei-Passwort zu tun hat.
+
+
+Man kann einen ganzen Zweig eines EUMEL-Systems durch das Kommando 'family
+password' vor unberechtigtem Zugriff schützen. Das Kommando:
+
+____________________________________________________________________________
+
+maintenance:
+family password ("geheim")
+
+____________________________________________________________________________
+
+wird dazu (wie gewohnt als Monitor-Kommando) in der Vater-Task des zu schüt­
+zenden Zweigs des Taskbaumes gegeben. Damit ist das Passwort aller Söhne, Enkel
+usw. dieser Task auf 'geheim' gesetzt, falls sie vorher kein Passwort oder das gleiche
+Passwort wie die aufrufende Task haben. Eine Task in diesem Zweig, die bereits ein
+eigenes, vom 'family password' verschiedenes Passwort besitzt, behält dieses eigene
+Passwort.
+
+Bsp: Für 'PUBLIC' wird das Kommando '#ib#family password#ie# ("geheim")' gege­
+ ben. Dann ist das Passwort von 'PUBLIC' und aller Tasks des Benutzerzweiges
+ auf 'geheim' gesetzt.
+
+
+Es ist zu beachten, daß bei der Vergabe des 'family password' nur die aktuellen
+Söhne der Task berücksichtigt werden. Söhne, die nach der Vergabe des 'family
+password' eingerichtet werden, sind nicht durch dieses Passwort geschützt.
+
+Passwort löschen
+
+
+Um ein Passwort zu löschen, geben Sie das Passwort-Kommando mit "" als Para­
+meter:
+
+____________________________________________________________________________
+
+maintenance:
+begin password("")
+
+____________________________________________________________________________
+
+
+Durch diese Angabe haben Sie den Passwort einen leeren Text als Parameter gege­
+ben, der das bisherige Passwort 'überschreibt'.
+
+#page#
+Dateipasswort
+
+
+Etwas komplizierter gestaltet sich der Passwortschutz für einzelne Dateien einer
+Manager-Task, da in dieser Anwendung eine Unterscheidung nach Schreib- und
+Leseschutz vorgenommen wird.
+
+Da in dieser Anwendung nur einige Dateien der Vater-Task vor Lesen ('fetch'),
+Schreiben ('save','erase') oder beidem geschützt werden sollen, benötigt diese Proze­
+dur Angaben über Dateinamen, Schreibpasswort und Lesepasswort.
+
+____________________________________________________________________________
+
+maintenance :
+enter password ("dateiname","schreibschutz","leseschutz")
+
+____________________________________________________________________________
+
+Falls die Datei nicht gegen Lesen geschützt werden soll, wird (wie beim Löschen
+eines Passworts) '""' als Lesepasswort angegeben.
+
+Falls Schreiben und/oder Lesen für eine Datei gänzlich verboten#u#1)#e# sein soll, so ist
+"-" als entsprechendes Passwort anzugeben.
+#foot#
+1) Natürlich kann die Datei in der Manager-Task, der sie gehört, normal editiert
+ werden.
+#end#
+
+Um von einer Sohn-Task eine Datei mit Passwortschutz in der Vater-Task zu lesen
+oder zu schreiben muß vor dem 'fetch', 'save' oder 'erase' Kommando das 'enter
+password' Kommando eineggeben werden:
+
+____________________________________________________________________________
+
+gib kommando:
+enter password ("schreibpasswort/lesepasswort")
+
+____________________________________________________________________________
+
+In der Sohn-Task wird also nur ein Passwort eingegeben. Falls wie oben ein '/' in
+diesem Passwort enthalten ist, wird der erste Teil vor dem '/' als Schreibpasswort und
+der zweite Teil als Lesepasswort geprüft. Falls kein '/' in dem Passwort enthalten ist,
+wird das Wort sowohl als Schreib- als auch als Lesepasswort interpretiert.
+
+Beispiel:
+In einer Manager-Task wird eine Datei "texte" eingerichtet, die Textvorlagen enthält.
+In einigen Sohn-Tasks soll diese Datei geholt (= gelesen) werden können. Die
+bearbeitete, somit veränderte Datei darf aber nicht zurück in die Vater-Task ge­
+schrieben werden.
+
+In der Vater-Task: enter password ("texte","-","psw")
+
+
+In der Sohn-Task : enter password ("psw")
+
+
+Falls das Passwort in einer Sohn-Task fehlerhaft oder gar nicht eingegeben wurde,
+erscheint die Meldung :
+
+____________________________________________________________________________
+
+ gib kommando :
+ fetch ("geschützte datei")
+FEHLER : Passwort falsch
+
+____________________________________________________________________________
+
+
+Somit kann diese Datei nur von Benutzern, die das Lesepasswort kennen, geholt
+werden. Ein Überschreiben der Datei ist nicht möglich, da das Schreibpasswort nicht
+gegeben werden kann ("-" !).
+#page#
+3.8. Monitor-Kommandos
+#free(1.0)#
+ALL
+ THESAURUS OP ALL (TASK CONST task)
+ Liefert einen Thesaurus#u#1)#e#, der alle Dateinamen der angegebenen Task enthält
+ (auch der Benutzer-Task 'myself').
+#foot#
+1) Ein Thesaurus ist eine Liste, in diesem Zusammenhang eine Liste von Dateien.
+ (Siehe auch 2.4. Die ELAN-Notation
+#end#
+ fetch (ALL father)
+
+ THESAURUS OP ALL (TEXT CONST datei)
+ Liefert einen Thesaurus, der die in 'datei' vorhandenen Dateinamen (jede Zeile ein
+ Name) enthält.
+
+ fetch (ALL "dateiliste")
+
+archive
+ PROC archive (TEXT CONST archivname)
+ Anmeldung von Archiv-Operationen. 'archivname' wird zur Überprüfung für alle
+ folgenden Archiv-Operationen verwandt, um die unberechtigte Benutzung eines
+ Archivs zu verhindern. Die Anmeldung wird abgelehnt, wenn ein anderer Nutzer
+ das Archiv belegt hat.
+
+
+ archive ("textdiskette")
+
+
+ TASK PROC archive
+ Liefert den internen Task-Bezeichner für die Verwendung in Dateikommandos.
+
+
+ save ("dateiname", archive)
+
+
+
+begin password
+ PROC begin password (TEXT CONST geheim)
+ Verhindert das unberechtigte Einrichten einer Sohn-Task.
+
+
+ begin password("gmd")
+
+
+break
+ PROC break
+ Die zum Terminal aktuell zugeordnete Task wird abgekoppelt. Sie wird damit zu
+ einer Hintergrund-Task.
+
+
+brother
+ TASK PROC brother (TASK CONST task)
+ Liefert den internen Task-Bezeichner der angegebenen "Bruder"-Task.
+
+
+ list(brother)
+
+
+check
+ PROC check (TEXT CONST dateiname, TASK CONST task)
+ Überprüft, ob die Datei 'dateiname' auf dem Archiv lesbar ist.
+
+
+ check ("meine datei", archive)
+
+
+ PROC check (THESAURUS CONST t, TASK CONST task)
+ Überprüft, ob die in dem Thesaurus 't' enthaltenen Dateien auf dem Archiv lesbar
+ sind.
+
+
+ check (ALL archive, archive)
+
+
+
+clear
+ PROC clear (TASK CONST task)
+ Löscht alle Dateien der Task 'ARCHIVE'und benennt die Diskette um, falls ein
+ anderer als der bisherige Diskettenname bei der Reservierung angegeben wurde.
+
+
+ archive("disk1"); clear(archive)
+
+
+copy
+ PROC copy (TEXT CONST quelle, ziel)
+ Kopiert die Datei 'quelle' in eine neue Datei mit dem Namen 'ziel' in der
+ Benutzer-Task.
+
+
+ copy("datei","neue datei")
+
+ Fehlerfälle: "ziel" existiert bereits
+ "quelle" gibt es nicht
+ zu viele Dateien
+
+
+edit
+ PROC edit
+ a) Im Monitor:
+ Ruft den Editor mit den zuletzt verwandten Dateinamen auf.
+ b) Im Editor:
+ Der Dateiname wird erfragt.
+ Für jedes 'edit' gilt:
+ Wurde 'edit' zum ersten Mal aufgerufen, nimmt das Fenster den gesamten
+ Bildschirm ein. Bei erneutem 'edit'-Aufruf wird ein Fenster nach rechts unten ab
+ der aktuellen Cursor-Position eröffnet.
+
+ PROC edit (TEXT CONST dateiname)
+ Ruft den Editor mit 'dateiname' auf.
+
+
+ edit("handbuch teil3")
+
+
+
+ PROC edit (TEXT CONST dateiname, x, y, xbreite, yhöhe)
+ Wie obiger 'edit'-Aufruf, jedoch kann das Fenster, in dem 'dateiname' editierbar
+ ist, gesetzt werden. Die Parameter definieren ein Editor-Fenster mit der linken
+ oberen Ecke auf den Bildschirmkoordinaten 'x' und 'y' und einer Zeilenbreite
+ 'xbreite' und 'yhöhe' Zeilen. Wird der Editor mit 'edit ("dateiname")' aufgerufen,
+ wird implizit 'edit ("dateiname", 1, 1, 79, 24)' aufgerufen.
+
+
+ edit("notiz",5,5,44,12)
+
+
+ PROC edit (THESAURUS CONST t)
+ Editieren aller in dem Thesaurus 't' enthaltenen Dateien nacheinander.
+
+
+ edit (ALL father)
+
+
+
+end
+ PROC end
+ Die zum Terminal aktuell gehörende Task wird abgebrochen und gelöscht.
+
+enter password
+ PROC enter password (TEXT CONST datei, schreibpass, lesepass)
+ Die angegebene Datei wird mit Schreib- und Lesepassword versehen. Die
+ Passwörter werden in der eigenen Task nicht berücksichtigt.
+ Falls der Schutz total sein soll, so ist für die verbotene Operation "-" als
+ Passwort anzugeben.
+
+
+ enter password ("daten","sicher","heit")
+
+
+ PROC enter password (TEXT CONST password)
+ Gibt Schreib- und Lesepasswort für den Austausch mit Manager-Task an. Falls
+ zwei verschiedene Passwörter für Lesen und Schreiben vereinbart sind, so sind
+ sie als ein Text durch "/" getrennt einzugeben.
+
+
+ enter password ("lese/schreibpasswort")
+
+
+erase
+ PROC erase (TEXT CONST datei)
+ Löscht eine Datei mit dem Namen 'name' in der unmittelbaren Vater-Task.
+
+
+ erase("alte datei")
+
+
+ Fehlerfälle:
+ "datei" gibt es nicht
+ Passwort falsch
+
+ PROC erase (TEXT CONST name, TASK CONST manager)
+ Löscht eine Datei mit dem Namen 'name' in der Task 'manager'.
+
+
+ erase ("dateiname", father)
+
+
+ PROC erase (THESAURUS CONST thesaurus)
+ Löscht die im 'thesaurus' angegebenen Dateien in der Vater-Task.
+
+
+ erase (ALL myself)
+ (* löscht alle Dateien in der Vater-Task, die in der
+ Benutzer-Task vorhanden sind *)
+
+
+ PROC erase (THESAURUS CONST thesaurus, TASK CONST manager)
+
+
+ erase (all,father)
+ (* löscht alle Dateien in der Vater-Task, die in der
+ Benutzer-Task vorhanden sind *)
+
+
+
+father
+ TASK PROC father
+ Liefert den internen Task-Bezeichner der Vater-Task der Benutzer-Task.
+
+
+ list(father)
+
+
+ TASK PROC father (TASK CONST task)
+ Liefert den internen Task-Bezeichner von 'task'.
+
+
+ save ("dateiname", father (father))
+ (* Kopiert 'dateiname' zum "Großvater" *)
+
+
+
+fetch
+ PROC fetch (TEXT CONST name)
+ Kopieren einer Datei von der Vater-Task in die Benutzer-Task
+
+
+ fetch("sicherungskopie")
+
+ Fehlerfälle:
+ "datei" gibt es nicht
+ Passwort falsch
+ zu viele Dateien
+
+
+ PROC fetch (TEXT CONST name, TASK CONST manager)
+ Kopieren einer Datei in die Benutzer-Task von 'manager'.
+
+
+ fetch ("dateiname", /"global")
+
+
+ PROC fetch (THESAURUS CONST thesaurus)
+ Holt alle im 'thesaurus' enthaltenen Dateien von der Vater-Task.
+
+
+ fetch (ALL)
+
+
+ PROC fetch (THESAURUS CONST thesaurus, TASK CONST manager)
+ Zweck: Holt alle im 'thesaurus' enthaltenen Dateien von der 'manager'-Task.
+
+
+ fetch (ALL /"global", /"global")
+
+
+forget
+ PROC forget (TEXT CONST datei)
+ Löschen einer Datei mit dem Namen 'name' in der Benutzer-Task.
+
+
+ forget ("alte datei")
+
+ Fehlerfälle:
+ "datei" gibt es nicht
+
+ PROC forget (THESAURUS CONST thesaurus)
+ Löscht die im 'thesaurus' enthaltenen Dateien in der Benutzer-Task.
+
+
+ forget (SOME myself)
+
+
+format
+ PROC format (THESAURUS CONST thes)
+ Formatieren von Disketten und Einstellen des Namens.
+
+
+ format(archive)
+
+
+ PROC format (INT CONST art, THESAURUS CONST thes)
+ Formatieren von Disketten im Nichtstandardformat des benutzten Geräts
+
+
+ format(2,archive)
+
+
+global manager
+ PROC global manager
+ Durch den Aufruf der Prozedur wird die Benutzer-Task zu einem Datei-
+ Manager. Danach können Söhne dieser Task eingerichtet werden.
+
+
+list
+ PROC list
+ Listet alle Dateien der Benutzer-Task mit Namen und Datum des letzten Zugriffs
+ auf dem Terminal auf.
+
+ PROC list (TASK CONST task)
+ Listet alle Dateien der angegebenen 'task' mit Namen und Datum der letzten
+ Änderung auf dem Terminal auf.
+
+
+ list (father)
+
+
+
+myself
+ TASK PROC myself
+ Liefert den internen Task-Bezeichner der Benutzer-Task.
+
+
+ save (ALL myself, father)
+
+
+
+public
+ TASK PROC public
+ Liefert den internen Task-Bezeichner von "PUBLIC".
+
+
+ fetch ("dateiname", public)
+
+
+
+rename
+ PROC rename (TEXT CONST altername,neuername)
+ Umbenennen einer Datei von 'altername' in 'neuername'.
+
+
+ rename("altes handbuch","neues handbuch")
+
+
+save
+ PROC save (TEXT CONST dateiname)
+ Datei 'dateiname' wird an die unmittelbare Vater-Task übertragen.
+
+
+ save("neues handbuch")
+
+
+ Fehlerfälle:
+ "neues handbuch" gibt es nicht
+ zu viele Dateien
+ Passwort falsch
+
+ PROC save (TEXT CONST name, TASK CONST task)
+ Datei mit dem Namen 'name' in Task 'task' kopieren
+
+
+ save ("dateiname", /"global")
+
+
+ Fehlerfälle:
+ "dateiname" gibt es nicht
+ zu viele Dateien
+ Passwort falsch
+
+ PROC save (THESAURUS CONST thesaurus)
+ Kopiert die Dateien, die in 'thesaurus' enthalten sind, in die Vater-Task.
+
+
+ save (SOME myself)
+
+
+ PROC save (THESAURUS CONST thesaurus, TASK CONST manager)
+ Kopiert die Dateien, die in 'thesaurus' enthalten sind, in Task 'manager'.
+
+
+ save(SOME myself, /"global")
+
+
+SOME
+ THESAURUS OP SOME (THESAURUS CONST thesaurus)
+ Bietet den angegebenen 'thesaurus' zum Editieren an. Dabei können nicht
+ erwünschte Namen gestrichen werden.
+
+ THESAURUS OP SOME (TASK CONST task)
+ Bietet einen THESAURUS von 'task' zum Editieren an.
+
+ THESAURUS OP SOME (TEXT CONST dateiname)
+ Bietet einen 'thesaurus', der aus 'dateiname' gebildet wird, zum Editieren an.
+
+
+task
+ TASK PROC task (TEXT CONST task name)
+ Liefert den internen Task-Bezeichner von 'task name'.
+
+
+ save ("dateiname", task ("PUBLIC"))
+ = save ("dateiname", public)
+
+
+
+storage info
+ PROC storage info
+ Informationsprozedur über den belegten Hintergrund-Speicher.
+
+
+task info
+ PROC task info
+ Informiert über alle Tasknamen im System unter gleichzeitiger Angabe der
+ Vater/Sohn-Beziehungen (Angabe durch Einrückungen).
+
+ PROC task info (INT CONST art)
+ Informiert über alle Tasks im System. Mit 'art' kann man die Art der Zusatz-
+ Information auswählen. Für 'art' sind zur Zeit folgende Werte zugelassen:
+
+ art=1: entspricht 'task info' ohne Parameter, d.h. es gibt nur die Tasknamen
+ unter Angabe der Vater/Sohn-Beziehungen aus.
+
+ art=2: gibt die Tasknamen aus. Zusätzlich erhalten Sie Informationen über die
+ verbrauchte CPU-Zeit der Task, die Priorität, den Kanal, an dem die
+ Task angekoppelt ist, und den eigentlichen Taskstatus. Hierbei bedeuten:
+
+ 0 -busy- Task ist aktiv.
+ 1 i/o Task wartet auf Beendigung des Outputs oder auf
+ Eingabe.
+ 2 wait Task wartet auf Sendung von einer anderen Task.
+ 4 busy-blocked Task ist rechenwillig, aber blockiert.
+ 5 i/o -blocked Task wartet auf I/O, ist aber blockiert.
+ 6 wait-blocked Task wartet auf Sendung, ist aber blockiert.
+ Achtung: Die Task wird beim Eintreffen einer
+ Sendung automatisch entblockiert.
+
+ art=3: wie 2, aber zusätzlich wird der belegte Speicher angezeigt. (Achtung:
+ Prozedur ist zeitaufwendig!).
+
+
+ task info(2)
+
+
+task status
+ PROC task status
+ Informationsprozedur über den Zustand der eigenen Task. Informiert u.a. über
+ - Name der Task, Datum und Uhrzeit;
+ - verbrauchte CPU-Zeit;
+ - belegten Speicherplatz;
+ - Kanal, an den die Task angekoppelt ist;
+ - Zustand der Task (rechnend u.a.m.);
+ - Priorität.
+
+ PROC task status (TASK CONST t)
+ Wie obige Prozedur, aber über die Task mit dem internen Tasknamen 't'.
+
+
+ task status (father)
+
+
+
+task password
+ PROC task password (TEXT CONST geheim)
+ Einstellen eines Passworts für Benutzertask. Das Kommando 'task password' ist
+ ein Monitor-Kommando. Ist eine Task mit einem Paßwort geschützt, so wird
+ durch den Supervisor nach dem 'continue'-Kommando das Passwort angefragt.
+ Nur nach Eingabe des richtigen Passworts gelangt man in die gewünschte Task.
+ Das Passwort kann durch nochmaligen Aufruf von 'task password' geändert
+ werden, z.B. wenn es in regelmäßigen Abständen geändert werden muß, um
+ personenbezogene Daten zu schützen.
+
+ Es gibt keine Möglichkeit, ein einmal eingestelltes Passwort in Erfahrung zu
+ bringen. Sollte das Passwort vergessen werden, kann somit die Task nur noch
+ gelöscht werden.
+
+ Wird als Passwort ein '-'-Zeichen eingegeben, so wird verhindert, daß die
+ betreffende Task jemals wieder mit dem 'continue'-Kommando angekoppelt
+ werden kann. Dies ist z.B. für Manager-Tasks sinnvoll.
+
+
+ task password("mein geheimnis")
+
+
++
+ THESAURUS OP + (THESAURUS CONST links, rechts)
+ Vereinigungsmenge von 'links' und 'rechts'.
+
+ THESAURUS OP + (THESAURUS VAR thes, TEXT CONST name)
+ Nimmt den TEXT 'name' in den Thesaurus 'thes' auf.
+
+
+ save (SOME father + "rechnung", archive)
+
+
+
+-
+ THESAURUS OP - (THESAURUS CONST links, rechts)
+ Differenzmenge von 'links' und 'rechts'.
+
+ THESAURUS OP - (THESAURUS VAR thes, TEXT CONST name)
+ Liefert einen Thesaurus aus 'thes', aber ohne den Eintrag 'name'.
+
+
+ save (ALL myself - "rechnung", archive)
+
+
+
+/
+ THESAURUS OP / (THESAURUS CONST links, rechts)
+ Zweck: Schnittmenge von 'links' und 'rechts'.
+
+
+ save(ALL myself / ALL father, archive)
+
+
+ TASK OP / (TEXT CONST task name)
+ Liefert aus einem Tasknamen den internen Tasknamen. '/' kann überall dort
+ eingesetzt werden, wo ein interner Taskname verlangt wird.
+
+
+ fetch ("dateiname", /"global")
+
diff --git a/doc/user/benutzerhandbuch.4 b/doc/user/benutzerhandbuch.4
new file mode 100644
index 0000000..c13a091
--- /dev/null
+++ b/doc/user/benutzerhandbuch.4
@@ -0,0 +1,2242 @@
+#start(5.0,1.5)##pagenr("%",1)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 4: Der Editor
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+4 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 4 - %
+#tableend##clearpos#
+#end#
+TEIL 4: Der Editor
+#free(1.0)#
+
+4.0. Vorwort
+
+#free(1.0)#
+Mit dem #ib#EUMEL-Editor#ie# schreiben Sie alle Ihre Texte und Daten. Er bietet vielfäl­
+tige Möglichkeiten, um Autoren oder Programmierer bei dem Erstellen, Korrigieren und
+Gestalten von Manuskripten oder Programmen zu unterstützen. Die größte Hilfe beim
+Schreiben besteht (durch die Speicherfähigkeit von Computern) im beliebig häufigen
+Zugriff auf einmal geschriebene Informationen. Im Gegensatz zu einer Schreibmaschi­
+ne können Sie mit dem EUMEL-Editor (beliebig oft) Einfügungen vornehmen, Texte
+korrigieren, löschen und neu gestalten.
+
+Somit ist das Schreiben von Texten mittels des EUMEL-Systems besonders dann
+vorteilhaft und zeitsparend, wenn Texte häufig geändert werden oder wenn sie in
+einer besonders schönen Form gedruckt werden sollen. Weiterhin bietet der Editor
+Hilfen zum Schreiben an, wie z.B. automatischen Wortumbruch am Zeilenende, eine
+Einrückungsautomatik, "Lernen" von Texten u.a.m. Zusätzlich kann der Editor in
+seinen Fähigkeiten erweitert und somit für spezielle Schreibarbeiten angepaßt werden.
+Aber das soll in einem späteren Kapitel beschrieben werden.
+
+Bei der Entwicklung des Editors wurde besonderer Wert auf einfache Bedienung
+gelegt: innerhalb von wenigen Minuten können Sie schon Texte schreiben und Daten
+erfassen und sehen stets auf dem Bildschirm, was mit Ihrem Text passiert. Das
+Schreiben und Korrigieren werden durch einige wenige, aber leistungsstarke Funk­
+tionstasten unterstützt.
+
+Einige Gestaltungsmöglichkeiten für Texte kann man nicht direkt auf dem Terminal
+"sehen", wie z.B. Proportionalschriften, Fettdruck usw. Solche Leistungen können
+durch Anweisungen an die Textkosmetik-Programme und den EUMEL-Drucker
+angefordert werden. Diese Anweisungen müssen in den Text eingefügt werden. Lesen
+Sie hierzu Teil 5 ("Textkosmetik").
+#free(1.0)#
+
+#ib(9)#4.1. #ib#Ein- und Ausschalten des Editors#ie##ie(9)#
+
+#free("1.0")#
+ #on("i")#
+ Hier beschreiben wir, wie der Editor ein- und ausgeschaltet wird und wie der
+ Editor eine Datei einrichtet.
+
+ #off("i")##free(1.0)#
+Wenn in Ihrer Task auf dem Bildschirm die Aufforderung
+
+____________________________________________________________________________
+
+gib kommando :
+
+____________________________________________________________________________
+
+
+erscheint, tippen Sie
+
+____________________________________________________________________________
+
+#ib#edit#ie# ("dateiname")
+
+____________________________________________________________________________
+
+
+und der EUMEL-Editor wird eingeschaltet. Ist die Datei noch nicht vorhanden, d.h.
+kein Text unter dem angegebenen Namen im System gespeichert, folgt eine Anfrage,
+ob eine Datei unter dem eingegebenen Namen neu eingerichtet werden soll:
+
+____________________________________________________________________________
+
+"dateiname" neu einrichten (j/n) ?
+
+____________________________________________________________________________
+
+
+Dies dient zur Kontrolle von Schreibfehlern, die besonders bei ähnlichen Dateina­
+men auftreten. Man kann dann das Einrichten der Datei ablehnen, den Dateinamen
+verbessern und das Kommando erneut geben.
+
+Falls Sie die Datei neu anlegen wollen, bejahen Sie diese Frage mit
+
+#center##taste1(" j ")# #taste1(" J ")# #taste1(" y ")# oder #taste1(" Y ")#
+
+
+Es erscheint ein leerer Editorbildschirm. Die oberste Zeile des Bildschirms ist die
+#ib#Titelzeile#ie#. In ihr kann nicht geschrieben werden. Sie zeigt jedoch verschiedene
+nützliche Dinge an: den Namen der Datei, die Nummer der aktuellen Zeile, in der
+gerade geschrieben wird, Tabulatormarken, Einfügemodus, Lernmodus, Auftrennung
+usw.
+
+____________________________________________________________________________
+
+ ................. dateiname ...................... Zeile 1
+_
+
+
+____________________________________________________________________________
+
+
+In unserem Fall haben Sie eine neue Datei angelegt. Sie enthält noch keinen Text. In
+der Titelzeile sind jedoch schon der Name der Datei und die aktuelle Zeilennummer
+eingetragen. Bei einer neuen Datei ist der Bildschirm unterhalb der Titelzeile leer.
+Dieser Teil dient als "Schreibfläche". Der #ib#Cursor#ie# steht dann direkt unter der Titelzei­
+le. Er zeigt immer die aktuelle #ib# Schreibposition#ie# an. Jetzt kann sofort mit dem Schrei­
+ben begonnen werden, ganz wie mit einer normalen Schreibmaschine.
+
+Rufen Sie eine Datei auf, in die Sie schon Text geschrieben haben, zeigt Ihnen der
+Editor das zuletzt bearbeitete Textstück und Sie können normal weiter schreiben.
+
+Wollen Sie die #ib#Schreibarbeit beenden#ie# und den #ib#Editor ausschalten#ie#, so drücken Sie die
+beiden Tasten
+
+<ESC> <q>
+
+nacheinander. Es erscheint
+
+____________________________________________________________________________
+
+gib kommando:
+
+____________________________________________________________________________
+
+
+und Sie haben damit den #ib#Editor verlassen#ie# und befinden sich wieder im Monitor. #page#
+
+#ib(9)#4.2. Die wichtigsten Tasten des Editors#ie(9)#
+#free(1.0)#
+#ib(9)#4.2.1. Das #ib#Tastenfeld#ie##ie(9)#
+
+#free(1.0)#
+ #on("i")#
+ Auf dem Tastenfeld gibt es einige Tasten, die auf einer Schreibmaschine nicht vor­
+ handen sind.
+
+ #off("i")#
+#free(1.0)#
+Das Tastenfeld eines EUMEL-Terminals entspricht weitgehend dem einer Schreib­
+maschine. Sie finden also die Buchstaben a-z und die Ziffern 0-9 auf Tasten. Mit
+der #ib#SHIFT-Taste#ie# (Umschalttaste) und gleichzeitigem Drücken einer anderen Taste
+können Sie die großen Buchstaben und eine Reihe von speziellen anderen Zeichen,
+die #ib#Sonderzeichen#ie# genannt werden, schreiben. Die "Zwischenraumtaste" oder Leer­
+taste erzeugt immer ein Leerzeichen.
+
+Nun gibt es in der Praxis zwei unterschiedliche Tastaturen. Zum einen existiert die
+#ib#EDV-Tastatur#ie#, die zum Schreiben von Programmen benutzt wird. Sie erkennt man
+daran, daß keine #ib#Umlaute#ie# (ä, ö, ü) und kein ß auf den Tasten abgebildet sind. Dafür
+gibt es Tasten für eckige und geschweifte Klammern. Sollen auf einer solchen Tasta­
+tur die Umlaute geschrieben werden, muß man sich eines Tricks bedienen: mit der
+Taste ESC und nachfolgendem Betätigen einer anderen Taste (z.B. a, o, u) erhalten
+wir den entsprechenden Umlaut.
+
+In der Regel kann man die Umlaute auf dem Bildschirm eines solchen EDV-Ter­
+minals nicht sehen, sondern sie erscheinen als "a", "u", usw. Beim Druck eines
+Textes werden sie aber richtig dargestellt.
+
+Die andere Tastatur entspricht in der #ib#Tastenbelegung#ie# weitgehend einer deutschen
+Schreibmaschine und besitzt Tasten für die Umlaute und ß. Sollen vorwiegend deut­
+sche Texte geschrieben werden, empfiehlt es sich, solch ein Terminal zu verwenden.
+
+
+
+ Tastatur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Neben diesen "einfachen" Tasten gibt es die Funktionstasten, die zur Bedienung des
+Editors (aber auch anderer Programme) notwendig sind. Wo die Tasten auf Ihrem
+Gerät liegen, hängt von dem jeweiligen Gerätetyp ab. Die Wirkung der Tasten
+erklären wir in den anschließenden Abschnitten. #count("1")#) #foot#
+#value("1")#) Es kann sein, daß die Tasten nicht richtig beschriftet sind. Die Installations­
+ anleitung muß dann die Entsprechungen beschreiben. Zusätzlich zu den im
+ folgenden beschriebenen können sich noch weitere Tasten auf Ihrem Terminal
+ befinden, die aber standardmäßig keine besondere Bedeutung für den Editor
+ haben.
+#end#
+#page#
+Die Funktionstasten des EUMEL-Systems
+#l pos (0.0)##l pos(4.0)#
+
+
+<,>,v,^ Positionierungstasten
+#table#
+#free(0.5)#
+<SHIFT> Umschalttaste
+#free(0.5)#
+<CR> Eingabe-/ Absatztaste
+#free(0.5)#
+<HOP> Verstärkertaste
+#free(0.5)#
+<RUBOUT> Löschtaste
+#free(0.5)#
+<RUBIN> Einfügetaste
+#free(0.5)#
+<TAB> Tabulatortaste
+#free(0.5)#
+<MARK> Markiertaste
+#free(0.5)#
+<ESC> Kommandotaste
+#free(0.5)#
+<SV> Supervisortaste
+#free(0.5)#
+<STOP> Stoptaste
+#free(0.5)#
+<WEITER> Weitertaste
+#tableend##clear pos#
+
+
+#page#
+Die Wirkung der Funktionstasten
+#free(0.5)#
+<SHIFT>
+
+#ib#Umschalttaste#ie#
+
+Wird diese Taste gleichzeitig mit einer anderen betätigt, so wird ein Buchstabe in
+Großschreibung, bei den übrigen Tasten das obere Zeichen, ausgegeben. So wird z.B.
+anstelle der "9" das Zeichen ")" ausgegeben.
+#free(1.5)#
+<CNTL>
+
+#ib#Kontroll-/Steuertaste#ie#
+
+Mit dieser Taste in Kombination mit Zusatztasten können Sonderfunktionen des
+Systems angewählt werden. Für EUMEL sind folgende drei Tastenkombinationen
+(wobei die Tasten gleichzeitig betätigt werden müssen) wichtig:
+
+<CTRL> <a> Anhalten der Bildschirmausgabe
+
+<CTRL> <b> Wirkung der SV-Taste (bei jedem Rechner)
+
+<CTRL> <c> Bildschirmausgabe fortführen
+#l pos (0.0)##l pos(4.0)#
+
+
+#free(1.5)#
+<CR>
+
+#ib#Eingabetaste / Absatztaste#ie#, Carriage Return, kurz: 'CR'
+
+Diese Taste wird im Editor betätigt, um das Ende eines Absatzes zu kennzeichnen.
+Die kontinuierliche Fließtexteingabe wird durch sie unterbrochen und es wird an den
+Beginn der nächsten Zeile positioniert. Einrückungen werden beibehalten. Eine Ab­
+satzmarke ist im Editor an der Inversmarkierung am rechten Bildschirmrand zu erken­
+nen.
+
+Die 'CR'-Taste ist oft mit einem geknicktem Pfeil nach links gekennzeichnet. Im
+Kommandomodus (also bei "gib kommando :") wird durch Betätigung dieser Taste ein
+gegebenes Kommando ausgeführt.
+
+Die sonstige Benutzung dieser Taste außerhalb des Editors wird in der jeweiligen
+Anwendung beschrieben, z.B. Bestätigung eines Trennvorschlags bei der Silbentren­
+nung.
+
+<, >, v, ^
+
+Tasten für die Positionierung
+
+#ib#Positionierung des Cursors#ie# um eine Spalten-/Zeilenposition in die jeweilige Richtung.
+#free(1.5)#
+<HOP>
+
+"#ib#Verstärkertaste#ie#"; wird als Vorschalttaste bedient.
+
+In Kombination mit anderen Funktionstasten wird deren Wirkung verstärkt. (vgl.
+4-#topage("HOP")#)
+
+#on("u")#Beispiel:#off("u")#
+
+
+<HOP> <v>
+
+Steht der Cursor nicht am unteren Bildrand, so wird er dorthin positioniert. Steht er
+am unteren Bildrand, so wird um einen Bildschirminhalt "weitergeblättert".
+
+Auch die Funktionen 'RUBIN'/'RUBOUT' werden in Kombination mit der HOP-Taste
+verstärkt.(vgl. 4-#topage("verstärkt")#ff) #free(1.5)#
+<RUBOUT>
+
+#ib#Löschtaste#ie#
+
+Das Zeichen, auf dem der Cursor steht, wird gelöscht. Wenn der Cursor hinter dem
+letzten Zeichen einer Zeile steht, wie bei fortlaufender Eingabe üblich, wird das letzte
+Zeichen gelöscht.
+
+#on("u")#Beispiel:#off("u")#
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 4
+
+Mit der RUBOUT-Taste ist es möglich, ein
+Zeichen nach dem anderen auf dem Bildschirm
+zu löschen. Steht der Cursor auf einem
+Zeichen, das irrtümlicherweise eingetipp?t
+wurde, kann dieses durch einmaliges
+Betätigen der RUBOUT-Taste aus der Datei
+gelöscht werden.
+
+____________________________________________________________________________
+
+
+Nach Betätigen der <RUBOUT> - Taste:
+
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 4
+
+Mit der RUBOUT-Taste ist es möglich, ein
+Zeichen nach dem anderen auf dem Bildschirm
+zu löschen. Steht der Cursor auf einem
+Zeichen, das irrtümlicherweise eingetippt
+wurde, kann dieses durch einmaliges
+Betätigen der RUBOUT-Taste aus der Datei
+gelöscht werden.
+
+____________________________________________________________________________
+
+#page#
+
+
+<RUBIN>
+
+#ib#Ein- bzw. Ausschalten des Einfügemodus.#ie#
+
+Das Betätigen der Taste schaltet in den Einfügemodus.Der Zustand wird durch das
+Wort "RUBIN" im linken Drittel der Titelzeile der Datei angezeigt. Vor dem Zeichen,
+auf dem der Cursor steht, wird eingefügt. Nochmaliges Betätigen der Taste schaltet
+den Einfügemodus aus.
+
+#on("u")#Beispiel:#off("u")#
+
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 5
+
+Das Betätigen der Taste schaltet in den
+Einfügemodus. Der Zustand wird durch das
+Wort "RUBIN" im linken Drittel der Titelzeile
+angezeigt. Vor dem Zeichen, auf dem der
+Cursor steht, wird ' ' eingefügt.
+Nochmaliges Betätigen der Taste schaltet den
+Einfügemodus aus.
+
+____________________________________________________________________________
+
+
+
+Nach Betätigen der <RUBIN> - Taste und Einfügen des Wortes " jetzt":
+
+____________________________________________________________________________
+ .......RUBIN...... dateiname .....................
+Zeile 5
+Das Betätigen der Taste schaltet in den
+Einfügemodus. Der Zustand wird durch das
+Wort "RUBIN" im linken Drittel der Titelzeile
+angezeigt. Vor dem Zeichen, auf dem der
+Cursor steht, wird jetzt ' ' eingefügt.
+Nochmaliges Betätigen der Taste schaltet den
+Einfügemodus aus.
+
+____________________________________________________________________________
+
+
+
+<TAB>
+
+#ib#Tabulatortaste#ie#
+
+Betätigen Sie die 'TAB'-Taste, um vom linken Bildschirmrand auf den Textbeginn in
+der Zeile bzw. eine Tabellenspalte zu positionieren. Erneutes Betätigen der 'TAB'-
+Taste positioniert den Cursor auf die nächste eingestellte Tabulator-Position. Die
+eingestellten Tabulatorpositionen erkennen Sie an den Tabulatorzeichen (Dachzei­
+chen) in der obersten Bildschirmzeile.
+
+Wenn keine TABs gesetzt sind, werden die beiden Schreibgrenzen, linker Bildschirm­
+rand und Ende der Zeile, als #on("i")#voreingestellte# #off("i")# TABs angesehen.
+#free(1.5)#
+<MARK>
+
+#ib#Ein- bzw. Ausschalten der Markierung#ie#.
+
+Bei Betätigung dieser Taste wird in einen speziellen #ib#Markierzustand#ie# geschaltet. Alles,
+was Sie jetzt schreiben bzw. durch Bewegen des Cursors in Richtung Dateiende
+kennzeichnen, steht als #on("i")#markierter# #off("i")# Bereich für die Bearbeitung zur Verfügung. Zur
+besseren Sichtbarkeit wird der markierte Bereich invers zum übrigen Text dargestellt.
+
+Wird der Cursor in eine Richtung bewegt, wird das gesamte Textstück zwischen
+Einschaltpunkt der Markierung und aktueller Cursorposition markiert. Rückwärtsbewe­
+gungen des Cursors verkürzen den markierten Bereich wieder.
+
+Einen derart markierten Bereich können Sie nun z.B. duplizieren, verschieben, lö­
+schen, durchsuchen oder weiterverarbeiten. (vgl. 4- #topage("mark")# ff).
+
+Durch erneutes Betätigen der MARK-Taste schalten Sie den Markier-Zustand auch
+wieder aus.
+
+#on("u")#Beispiel:#off("u")#
+
+Sie wollen einen Textteil markieren, um ihn an eine andere Stelle zu verschieben
+(evtl. um ihn an dieser Stelle später zu löschen):
+
+Sie positionieren den Cursor auf den Beginn des Textteils, gehen in den Markierzu­
+stand durch Betätigen der MARK-Taste und führen nun den Cursor mit Hilfe der
+Positioniertasten bis zum Ende des zu markierenden Bereichs.
+
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 5
+
+Mit dem Cursor positionieren Sie an die
+Stelle, ab der markiert werden soll und
+betätigen die MARK-Taste. Nun führen Sie den
+Cursor bis zu der Stelle, bis zu der
+markiert werden soll. Der markierte Text wird
+normalerweise "schwarz auf weiss"
+dargestellt.
+
+____________________________________________________________________________
+
+
+
+Mit weiteren Kommandos (vgl. ESC-Taste und Kommando-Verarbeitung, 4- #topage("ESC")#)
+kann der Bereich nun bearbeitet werden.
+#free(1.5)#
+<ESC>
+
+#ib#Kommandotaste#ie#
+
+Mit der ESC-Taste in Kombination mit einer Folgetaste können Sie vordefinierte
+Aktionen anwählen. Es gibt Aktionen, die vorprogrammiert zur Verfügung stehen, und
+Sie selbst können weitere hinzufügen. (vgl. 4-#topage("ESC")# ) #free(1.5)#
+<SV>
+
+#ib#SUPERVISOR-Taste im Mehrbenutzer-Betrieb#ie#
+
+Betätigen Sie diese Taste im Editor, dann unterbrechen Sie Ihre Editierarbeit und
+erhalten die Meldung
+
+____________________________________________________________________________
+
+ Terminal 2
+
+
+ EUMEL Version 1.8/M
+
+
+ gib supervisor kommando:
+
+
+
+
+ ESC ? --> help
+ ESC b --> begin("") ESC h --> halt
+ ESC c --> continue("") ESC s --> storage info
+ ESC q --> break ESC t --> task info
+
+
+____________________________________________________________________________
+
+
+Wollen Sie nun im Editor fortfahren bzw. haben Sie irrtümlich die SV-Taste betätigt,
+dann geben Sie das Kommando
+
+____________________________________________________________________________
+
+ gib supervisor kommmando :
+ continue ("Sekretariat")
+
+
+____________________________________________________________________________
+
+
+(falls Ihre Task, in der Sie arbeiteten, wirklich "Sekretariat" hieß!)
+
+Um Ihren in Bearbeitung befindlichen Text wieder vollständig auf dem Bildschirm zu
+sehen, betätigen die die Tasten
+
+<ESC> <b>
+
+Sie sind wieder an der Stelle, an der Sie den Text mit der SV-Taste verlassen ha­
+ben, und können normal weiterarbeiten.
+
+#on("u")#Achtung:#off("u")# Die SV-Taste kann, je nach Terminal, durch das Betätigen von zwei
+Tasten gleichzeitig realisiert sein (oft 'CTRL b'). Beachten Sie die Beschreibung Ihrer
+Tastatur!
+#free(1.5)#
+<STOP>
+
+#ib#Unterbrechen einer Ausgabe#ie# (oft auch als CTRL a realisiert).
+
+Haben Sie diese Taste aus Versehen betätigt, erkennen Sie dies daran, daß der
+Editor nicht "reagiert". Betätigen Sie die WEITER-Taste (oft auch CTRL c).
+#free(1.5)#
+<WEITER>
+
+Unterbrochene Ausgabe fortsetzen.
+
+Ein mit der STOP-Taste angehaltene Ausgabe können Sie durch Betätigen der
+#ib#WEITER-Taste#ie# fortsetzen.
+
+
+#on("u")#VORSICHT:#off("u")# Die STOP-Taste unterbricht nur die Ausgabe auf den Bildschirm.
+Zeichen, die während des STOP eingegeben werden, werden gespeichert und nach
+'WEITER' ausgegeben!
+
+
+#page#
+4.2.2 Speicherung von Texten
+#free(1.0)#
+ #on("i")#
+ In diesem Abschnitt wird der Begriff "Datei" erklärt und es wird erläutert, wie
+ unterschiedliche Texte auseinandergehalten werden können.
+ ## #off("i")#
+
+
+
+Das EUMEL-System speichert einmal geschriebene Texte, bis sie vom Benutzer
+gelöscht werden. In der Regel wird nicht nur ein (langer) Text oder ein Programm
+geschrieben, sondern mehrere und unterschiedliche. Um diese auseinanderhalten zu
+können, versehen wir sie jeweils mit einem Namen, der frei gewählt werden kann.
+Beispiele für Namen:
+
+
+ "Brief vom 1.12.86"
+ "1. Kapitel meines Buches"
+
+
+Eine Sammlung von Zeichen (also im Normalfall unsere geschriebenen Texte), die mit
+einem Namen versehen worden ist, nennt man eine #ib##on("bold")#Datei#ie##off("bold")#. Der Editor erstellt also eine
+Datei, wenn wir einen Text schreiben. Eine Datei kann bis zu 4 000 Zeilen fassen,
+wobei jede Zeile bis zu 32 000 Zeichen lang sein darf. Das Produkt aus der Anzahl
+der Zeilen und den Zeichen pro Zeile kann z.Zt. jedoch 1 000 000 Zeichen (=1MB)
+nicht übersteigen. #page#
+
+#ib(9)#4.2.3. #ib#Schreiben von Texten#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Texte werden fortlaufend geschrieben. Absätze werden durch die CR-Taste
+ markiert.
+ # #off("i")#
+
+#free(0.8)#
+
+Nach dieser etwas langen Vorrede können wir endlich losschreiben. Wird ein Zeichen
+geschrieben, rückt der #ib#Cursor#ie# automatisch nach rechts auf die nächste Schreibstelle.
+Durch den automatischen #ib#Wortumbruch#ie# werden angefangene Worte, die über ein
+Zeilenende hinausgehen würden, ohne Silbentrennung in die nächste Zeile gebracht.
+#u##count("6")#)#e#
+#foot#
+#u##value("6")#)#e# Nehmen Sie bitte keine Silbentrennung "per Hand" vor. Eingebrachte Trenn­
+ striche gelten als Bindestrich und bleiben somit auch bei Umformatierungen
+ erhalten, was unerwünscht ist. Für diese mühevolle Aufgabe gibt es in der Text­
+ verarbeitung ein Programm!
+#end#
+
+Die 'CR'-Taste (bei einer Schreibmaschine bedeutet sie "Wagenrücklauf") braucht
+also nur noch betätigt zu werden, wenn eine Zeile vorzeitig beendet werden soll, d.h.
+bei einem #ib#Absatz#ie# oder einer #ib#Leerzeile#ie#. Der Cursor wird dabei an den Anfang der
+nächsten Zeile positioniert. Gleichzeitig erscheint in der vorherigen Zeile am rechten
+Rand des Bildschirms eine Markierung, die anzeigt, daß hier ein Absatz gemacht
+wurde.
+
+Darum ist das Betätigen der 'CR'-Taste bei Tabellenzeilen und Programmtexten
+besonders wichtig, denn hier soll ja jede Zeile separat bleiben. Sie wirkt nur hinter
+dem letzten Zeichen.
+
+Der Editor ist auf das Schreiben von "normalen" Texten eingestellt. Bei normalen
+Texten soll ein Wort, welches über das Ende einer Zeile gehen würde, automatisch in
+die nächste Zeile gebracht werden. Diese Funktion wird "Wortumbruch" genannt.
+
+Ist kein Wortumbruch erwünscht, zum Beispiel bei der Beschreibung von Program­
+men, so geben Sie, bevor Sie den Editor aufrufen, im Monitor das Kommando
+
+____________________________________________________________________________
+gib kommando :
+#ib#word wrap (false)#ie#
+
+____________________________________________________________________________
+
+
+Der Wortumbruch kann durch das Kommando
+
+____________________________________________________________________________
+
+gib kommando :
+#ib#word wrap (true)#ie#
+
+____________________________________________________________________________
+
+
+wieder eingeschaltet werden. Der Editor ist standardmäßig auf "Wortumbruch" einge­
+stellt und Sie sollten nur in Ausnahmefällen diese Benutzungsart ausschalten.
+
+Ein Bildschirm faßt (neben der Titelzeile) üblicherweise 23 Zeilen, die mit Text be­
+schrieben werden können. Ist die letzte Zeile voll und muß eine neue Zeile begonnen
+werden, "rutscht" der Bildschirminhalt automatisch um eine Zeile nach oben. Damit
+ist Platz für eine Leerzeile, die nun ebenfalls beschrieben werden kann, usw. Keine
+Angst: die so verschwundenen Zeilen sind natürlich nicht "weg". Da ein Bildschirm
+immer nur eine beschränkte Anzahl von Zeilen hat, kann der Editor nur einen Aus­
+schnitt aus der Datei zeigen.
+#page#
+Einrückungen
+#free(1.0)#
+ #on("i")#
+ Die #ib#Einrückungautomatik#ie# erlaubt bei fortlaufendem Schreiben, die Einrückung zu
+ erhalten.
+ # #off("i")#
+#free(0.5)#
+Soll ein Text eingerückt werden, so betätigt man entsprechend oft die Leertaste. Die
+in dieser Zeile geschriebene Einrückung wird automatisch in den folgenden Zeilen
+beibehalten, bis sie durch die Cursor-Positionierungstasten wieder aufgehoben wird.
+
+#on("u")#Beispiele für Aufzählungen:#off("u")# Einrückung funktioniert automatisch ohne aktive Eingabe
+von Leerschritten.
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 1
+ - Der erste Typ der Aufzählungsform
+ ist die #ib#Aufzählung#ie# durch Voran­
+ stellen eines Sondersymbols.
+ Als Sondersymbole sind die beiden
+ Zeichen "-" und "*" zugelassen. An
+ ihnen erkennt der Editor eine
+ Aufzählung.
+
+ 12. Weiterhin können Aufzählungen
+ durch Begriffe, gefolgt von
+ einem Punkt oder einer ")", als
+ #ib#Aufzählungskriterium#ie# verwendet
+ werden.
+
+
+ Aufzählung: Auch diese Möglichkeit
+ steht Ihnen zur Verfü­
+ gung. Der Editor er­
+ kennt, daß Sie hier
+ einen Begriff erläutern
+ wollen.
+
+____________________________________________________________________________
+
+#page#
+Wann werden nun Aufzählungen vom Editor erkannt?
+
+Die hier aufgeführten Einzelheiten sollte nur der hieran interessierte Anfänger lesen!
+
+Wenn die Einrückung nicht funktionieren sollte, prüfen Sie die folgenden Punkte, die
+für das Einrücken erfüllt sein müssen:
+
+1) Die Vorgängerzeile hat eine Absatzmarke.
+
+ Wichtig: Innerhalb eines Aufzählungspunktes schaltet die Absatztaste die Aufzäh­
+ lungseinrückung aus!
+
+2) "*" bzw. "-" und mindestes ein Leerzeichen sind die ersten Zeichen in der
+ Zeile.
+
+3) "." bzw. ")" und mindestens ein Leerzeichen nach höchstens sieben Zeichen sind
+ die ersten Zeichen in der Zeile.
+
+4) ":" und mindestens ein Leerzeichen nach höchstens 19 Zeichen sind die ersten
+ Zeichen in der Zeile.
+#page#
+
+#ib(9)#4.2.4. #ib#Positionieren#ie# im Text#ie(9)#
+
+#free(1.0)#
+ #on("i")#
+ Um Korrekturen (Überschreiben, Löschen oder Einfügen) vorzunehmen, muß der
+ #ib#Cursor#ie#, der die aktuelle Schreibposition anzeigt, bewegt werden können. Bei
+ längeren Texten ist es möglich, den Cursor auch auf Zeilen zu positionieren, die
+ (noch nicht) auf dem Bildschirm angezeigt werden. Somit zeigt der Editor nicht nur
+ immer das Ende einer Datei, sondern einen beliebigen Ausschnitt, der auf dem
+ Bildschirm im sogenannten '#ib#Fenster#ie#' sichtbar ist.
+ #off("i")#
+#free(1.0)#
+Ist eine Korrektur notwendig, positionieren Sie den Cursor auf die Stelle, an der die
+Korrektur vorgenommen werden soll. Dazu verwenden Sie die #ib#Positionierungstasten#ie#
+LINKS, RECHTS, OBEN und UNTEN. LINKS und RECHTS bewegen den Cursor
+innerhalb einer Zeile. Stößt man mit RECHTS an das Ende einer Zeile, wird der
+Cursor an den Anfang der nachfolgenden Zeile bewegt.
+
+ v ^
+
+Ein #ib#Zeilenwechsel#ie# kann einfacher mit den Tasten OBEN und UNTEN vorgenommen
+werden. Die Taste OBEN bewegt den Cursor eine Zeile nach oben, die Taste UNTEN
+entsprechend eine Zeile tiefer.
+
+Was passiert nun, wenn Sie den unteren oder den oberen Rand des Bildschirms
+erreicht haben, und Sie positionieren darüber hinaus? In diesem Fall wird der Text
+zeilenweise nach oben oder nach unten verschoben und es erscheint die gewünschte
+Zeile, wobei am anderen Rand einige verschwinden". Wir sehen also, daß wir mit den
+Positionierungstasten den Bildschirm als Fenster über die Datei hinweggleiten lassen
+können. Den Text selbst können wir uns auf einem langen Band geschrieben vorstel­
+len. Die #ib#Zeilennummer#ie#, die die Position des Cursors angibt, wird stets in der Titel­
+zeile angezeigt.
+
+Vermeiden Sie es, den Cursor über das Textende hinaus nach unten laufen zu las­
+sen. Sie verlängern dadurch Ihren Text um Leerzeilen, die Sie beim Weiterschrei­
+ben nicht auffüllen, sondern vor sich herschieben.
+
+Innerhalb einer Zeile ist es etwas anders: Positionieren wir bei einer Zeile, die breiter
+als der Bildschirm ist, nach rechts, wird nicht das Fenster verschoben, sondern die
+Zeile 'gerollt'.(vgl. Sie hierzu das Verschieben des Gesamtfensters mit dem 'mar­
+gin'-Kommando 4-#topage("margin")#)
+4.2.5. Korrigieren im Text
+#free(1.0)#
+
+ #on("i")#
+ Einfache Korrekturen können durch #ib#Überschreiben von Zeichen#ie#, #ib#Löschen von
+ Zeichen#ie# und #ib#Einfügen von Zeichen#ie# vorgenommen werden.
+
+ #off("i")#
+#free(1.0)#
+<RUBOUT>
+
+Die einfachste Möglichkeit der Korrektur ist das #ib#Überschreiben#ie#. Soll z.B. ein Zeichen
+durch ein anderes ersetzt werden, so positioniert man der Cursor genau über dieses
+und tippt das richtige Zeichen ein. Das kann natürlich auch mit mehreren Zeichen
+nacheinander erfolgen.
+
+Korrekturen können Sie gleich beim Schreiben vornehmen, indem Sie die zuletzt
+geschriebenen Zeichen mit der #ib#RUBOUT-Taste#ie# löschen. Häufig bemerkt man aber
+#ib#Schreibfehler#ie# erst etwas später, so daß man diese Fehler nicht so leicht korrigieren
+kann. Für solche Zwecke müssen Sie den Cursor an die Textstelle bewegen, an der
+korrigiert werden soll.
+
+Wollen Sie ein #ib#Zeichen löschen#ie#, so positionieren Sie den Cursor auf dieses Zeichen
+und betätigen die Taste #ib#RUBOUT#ie#. Das Zeichen verschwindet und die Restzeile rückt
+heran. Sollen mehrere Zeichen gelöscht werden, muß die RUBOUT-Taste entspre­
+chend oft gedrückt werden.
+
+Steht der Cursor hinter dem letzten Zeichen der Zeile, wird immer das letzte Zeichen
+der Zeile gelöscht. Man kann also mit dieser Eigenschaft eine Zeile "von hinten
+wegradieren".(vgl. hierzu auch 4- #topage("ESC RUBOUT")#)
+
+
+
+<RUBIN>
+
+Fehlende Zeichen können Sie genauso einfach einfügen. Sie bringen den Cursor auf
+das Zeichen, vor das eingefügt werden soll. Dann drücken Sie die Taste #ib#RUBIN#ie#. Der
+Editor gelangt in den #ib#Einfügemodus#ie#, was in der Titelzeile durch RUBIN angezeigt
+wird. Er fügt alle Zeichen ein, die jetzt getippt werden (anstatt zu überschreiben). Der
+Teil der Zeile rechts vom Cursor rückt jeweils um entsprechend viele Stellen nach
+rechts.
+
+Wichtig ist, daß im RUBIN-Modus der Editor genauso funktioniert wie im Normalzu­
+stand (natürlich mit der Ausnahme, daß eingefügt statt überschrieben wird).
+
+Im eingeschalteten RUBIN-Modus können keine Zeichen verloren gehen. Viele
+Benutzer lassen darum den RUBIN-Modus immer eingeschaltet, um sich vor einem
+unbeabsichtigten Überschreiben von Texten zu schützen. Sie korrigieren, indem Sie
+die Verbesserung einfügen und den alten Text löschen.
+
+Durch erneutes Betätigen der RUBIN-Taste beenden Sie den Einfügemodus. Die
+RUBIN-Taste wirkt wie ein Schalter, der den Einfügemodus ein- und ausschaltet.
+Allerdings können Sie nur so viele Zeichen in eine Zeile einfügen, bis das letzte Wort
+der Zeile an das Zeilenende stößt. Das letzte Wort wird am Anfang der folgenden
+Zeile eingefügt, sofern dort noch Platz ist und es sich nicht offensichtlich um die
+letzte Zeile eines Absatzes handelt. Andernfalls wird automatisch eine neue Zeile für
+das angefangene Wort eingefügt.(vgl. Sie hierzu auch 4- #topage("ESC RUBIN")#) #free(1.5)#
+#page#
+Springen und Zeilen einfügen/löschen
+#free(1.0)#
+ #on("i")#
+ Bewegungen des Cursors sind mit den Positionierungstasten bei größeren "Ab­
+ ständen" etwas mühsam, ebenso bei umfangreichen Löschungen und Einfügun­
+ gen. Die "#ib#Verstärkertaste#ie#" HOP ermöglicht es, diese Operationen auf einfache
+ Weise zu beschleunigen. Mit der #ib#HOP-Taste#ie# kann man das Fenster über der
+ Datei nicht nur zeilenweise, sondern auch um jeweils eine Fensterlänge verschie­
+ ben. Das nennt man #ib#Blättern#ie#.
+
+ #off("i")#
+#free(1.0)#
+#goalpage("HOP")#
+Wird die HOP-Taste vor einer anderen der schon erklärten Funktionstasten gedrückt,
+verstärkt sie deren Wirkung. Die HOP-Taste ist eine "Präfix"-Taste: sie wird vor
+(und nicht gleichzeitig mit, wie z.B. die Umschalttaste SHIFT) einer anderen Taste ge­
+drückt. Zuerst das springende Positionieren:
+#free(1.0)#
+<HOP> <>>
+
+#ib#Sprung an das rechte Bildschirmende#ie#.
+
+Falls die Zeile länger als das Fenster breit ist, wird die Zeile um eine Fensterbreite
+nach links verschoben.
+#free(1.0)#
+<HOP> <<>
+
+#ib#Sprung an den Bildschirmrand links#ie# (ggf. seitlich blätternd).
+#free(1.0)#
+<HOP> <^>
+
+#ib#Sprung auf die erste Zeile des Bildschirms#ie#.
+
+Nochmaliges Betätigen dieser Tastenkombination positioniert den Cursor (und damit
+das Fenster in der Datei) um ein Fenster zurück. ("Blättern")
+#free(1.0)#
+<HOP> <v>
+
+#ib#Sprung auf die letzte Zeile des Bildschirms#ie#.
+
+Das Blättern erfolgt analog HOP OBEN.
+#free(1.0)#
+<HOP> <CR>
+
+Positioniert das Fenster so, daß die aktuelle Zeile zur ersten des Fensters wird.
+#free(1.0)#
+<HOP> <RUBIN>
+
+#ib#Einfügen von Textpassagen#ie#. #goalpage("verstärkt")# Die HOP-Taste in Verbindung mit RUBIN und
+RUBOUT wird zum "verstärkten" Löschen und Einfügen verwendet.
+
+Ab der aktuellen Position des Cursors "verschwindet" der restliche Text. Es kann wie
+bei der anfänglichen Texteingabe fortgefahren werden. Die Anzeige '#ib#REST#ie#' in der
+Titelzeile erinnert daran, daß noch ein Resttext existiert. Dieser erscheint nach einem
+neuerlichen Betätigen der beiden Tasten HOP RUBIN wieder auf dem Bildschirm (die
+Anzeige 'REST' verschwindet dann wieder).
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 4
+
+In diesem Text soll vor dem zweiten Satz
+etwas eingefügt werden. #cursor("H")#ierzu wird der
+Cursor an die Position geführt, an der
+ein beliebiger Text eingefügt werden soll.
+
+____________________________________________________________________________
+
+
+Nach Betätigen der Tasten <HOP> und <RUBIN> sieht der Bildschirm wie folgt
+aus:
+
+____________________________________________________________________________
+ ............... dateiname .........REST.......... Zeile 4
+
+In diesem Text soll vor dem zweiten Satz
+etwas eingefügt werden.
+
+
+____________________________________________________________________________
+
+
+
+Nun kann beliebig viel Text eingefügt werden. Nochmaliges Betätigen von HOP und
+RUBIN führt den Text-Rest wieder bündig heran.
+
+
+<HOP> <RUBOUT>
+
+Löscht die Zeile ab Cursor-Position bis Zeilenende.
+
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 4
+
+Soll eine ganze Zeile oder ein Textrest
+gelöscht werden, so positioniert man an die
+Stelle, ab der gelöscht werden soll. 'R'est löschen....
+Nach HOP RUBOUT ist der Zeilenrest gelöscht.
+
+
+____________________________________________________________________________
+
+
+Nach Betätigen der Tasten <HOP> und <RUBOUT> sieht der Bildschirm wie
+folgt aus:
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 4
+
+Soll eine ganze Zeile oder ein Textrest
+gelöscht werden, so positioniert man an die
+Stelle, ab der gelöscht werden soll.
+Nach HOP RUBOUT ist der Zeilenrest gelöscht.
+
+____________________________________________________________________________
+
+
+
+Steht der Cursor am Zeilenanfang, wird nach HOP RUBOUT dementsprechend die
+ganze Zeile gelöscht und die Lücke durch Nachrücken der Folgezeilen geschlossen
+(HOP RUBOUT betätigen).
+#page#
+Zeilen aufbrechen und Rückumbruch
+
+#free(1.0)#
+ #on("i")#
+ Um grössere Textpassagen einzufügen, betätigt man #ib#HOP RUBIN#ie# nacheinander.
+ Diese Tastenfolge kann benutzt werden, um eine Zeile bzw. eine längere Textpas­
+ sage aufzubrechen). #ib#HOP RUBOUT#ie# am Ende einer Zeile macht einen #ib#Rückum­
+ bruch#ie#.
+
+ #off("i")#
+#free(1.0)#
+<HOP> <RUBIN>
+
+Wie bereits beschrieben, bewirkt #ib#HOP RUBIN#ie# in einer Zeile, daß der Zeilenrest rechts
+des Cursors und alle Zeilen unterhalb der aktuellen Zeile scheinbar verschwinden.
+#ib#REST#ie# in der Titelzeile erinnert daran, daß ein Teil der Datei nicht sichtbar ist.
+
+Wird unmittelbar nach HOP RUBIN wiederum HOP RUBIN betätigt, wird der vorherige
+Zeilenrest als eigenständige Zeile dargestellt. Es ist damit eine Aufspaltung einer Zeile
+in zwei Zeilen vollzogen.
+
+
+<HOP> <RUBOUT>
+
+Der umgekehrte Fall, nämlich zwei Zeilen zu einer zusammenzufassen (sog. #ib# Rück­
+umbruch#ie#), ist durch #ib#HOP RUBOUT#ie# hinter dem letzten Zeichen einer Zeile möglich.
+Hinter das letzte Zeichen einer Zeile kann einfach mit dem Tabulator positioniert
+werden.
+
+Das Aufbrechen einer Zeile und der Rückumbruch zusammen angewandt stellen den
+ursprünglichen Zustand wieder her. Beispiel: Mit HOP RUBIN bricht man eine Zeile
+auf, der Rest der Zeile und nachfolgende Zeilen verschwinden vom Bildschirm. Erneu­
+tes HOP RUBIN stellt den rechten Zeilenteil auf der nächsten Zeile und die nachfol­
+genden Zeilen auf dem Bildschirm wieder dar. Da der Cursor sich noch immer am
+rechten Rand der aufgebrochenen Zeile befindet, kann man mit HOP RUBOUT den
+ursprünglichen rechten Zeilenteil wieder rekombinieren.
+#page#
+
+
+#ib(9)#4.2.6. Der #ib#Tabulator#ie##ie(9)#
+
+#free(1.0)#
+ #on("i")#
+ Eine weitere wichtige #ib#Positionierungshilfe#ie# innerhalb einer Zeile ist die #ib#TAB#ie#-Taste.
+ Sie wird u.a. zum Schreiben von Tabellen benötigt. Wie bei einer Schreibmaschine
+ können #ib#Tabulatormarken#ie# gesetzt bzw. gelöscht werden.
+
+ #off("i")#
+#free(1.0)#
+<TAB>
+
+Der Tabulator hat eine wichtige Funktion für das schnelle Positionieren, auch wenn
+keine Marken eingestellt wurden. #ib#Voreingestellte Tabulatormarken#ie# sind nämlich der
+Textanfang einer Zeile (Einrückung, falls vorhanden) und die Stelle direkt hinter dem
+letzten Zeichen der Zeile. Betätigt man also die Taste TAB, dann springt die Schreib­
+marke an die nächste dieser voreingestellten Positionen. So kann man schnell mit
+dem Cursor an den Anfang oder das Ende einer Zeile gelangen (und z.B. am Zeilen­
+ende Zeichen "von hinten" löschen oder dort weiterschreiben).
+
+<HOP> <TAB>
+
+Nun zum #ib#Setzen des Tabulators#ie#: Sie setzen ihn, indem Sie den Cursor auf die Zei­
+lenposition bringen, in der die Marke plaziert werden soll. Hier betätigen Sie nun #ib#HOP
+TAB#ie#. Die Tabulatorsetzung kann man in der Titelzeile an einer Markierung ("Dach­
+"-Zeichen) sehen, falls sie im Fensterbereich ist und die aktuelle Zeile nicht seitlich
+verschoben ist. Betätigt man nun an irgendeiner Position innerhalb einer Zeile die
+TAB-Taste, wird der Cursor auf die Position der nächsten Tabulatormarkierung (die
+sich rechts von dem Cursor befindet) oder eine der voreingestellten Positionen be­
+wegt.
+
+#ib#Gesetzte Tabulatormarken#ie# können gelöscht werden, indem man mit der TAB-Taste
+die Position der Tabulatormarke einstellt und dann HOP TAB betätigt. Die Marke ist
+dann gelöscht, das Dach verschwindet in der Titelzeile.
+
+Tabulatormarkierungen hinterlassen keine Spuren in der Datei, sondern dienen nur als
+Positionierungshilfen. mit 'HOP TAB' gesetzte Markierungen, die mit 'TAB' ange­
+sprungen werden, wirken beim Schreiben von Zahlen wie Dezimaltabulatoren, vgl. Sie
+dazu 4- #topage("zahlen")#.
+
+#on("u")#Beispiel:#off("u")#
+
+Es soll für den Textbeginn eine Tabulatorposition auf die 12. Spalte gesetzt werden.
+Hierzu wird der Cursor auf die 12. Spalte positioniert und die HOP- und die TAB-
+Taste nacheinander betätigt. Das "Dach"-Zeichen erscheint in der 12. Spalte in der
+Titelzeile und von nun an kann durch Betätigen der TAB-Taste diese Position direkt
+angesteuert werden.
+
+____________________________________________________________________________
+ ..........^....... dateiname ...................... Zeile 4
+
+HOP TAB wurde in der 12. Spalte betätigt.
+ Mit TAB stehen Sie auf der 12.
+ Spalte.
+
+____________________________________________________________________________
+
+
+Werden #ib#Tabulatormarken#ie# gesetzt (HOP TAB), gelten die voreingestellten Tabulator­
+marken (Anfang und Ende einer Zeile) nicht mehr. Dies ist z.B. bei dem Schreiben
+von Tabellen notwendig. Andererseits möchte man beim Schreiben von "normalem"
+Text wieder die voreingestellten Tabulatormarken bedienen können. Mit den Tasten
+
+<ESC> <TAB>
+
+kann man die gesetzten Tabulatormarken (erkenntlich an dem "Dach"-Zeichen in
+der Kopfzeile) vorübergehend verschwinden lassen. Dann gelten wieder die voreinge­
+stellten Marken. Erneutes #ib#ESC TAB#ie# stellt die gesetzten Tabulatormarken wieder her
+usw..
+#free(1.5)#
+Zahlentabellen schreiben: Dezimaltabulator
+#goalpage("zahlen")#
+
+#free(1.0)#
+ #on("i")#
+ Beim Schreiben von #ib#Zahlentabellen#ie# sollen die Zahlen oft rechtsbündig im Text
+ erscheinen. Dazu bietet der Editor den #ib#Dezimaltabulator#ie# an.
+
+ #off("i")#
+#free(1.0)#
+Für jede Zahlenkolonne wird die gewünschte Position der Einerstelle (also der letzten
+Stelle) mit Hilfe eines Tabulators eingestellt. Mit #ib#TAB#ie# wird der Cursor zur jeweils
+nächsten Tabulatormarke vorgerückt. Werden nun Ziffern geschrieben, so schreibt
+man nicht - wie gewohnt - nach rechts, sondern die Ziffern werden nach links
+eingerückt. Etwas genauer: Beim Drücken einer Zifferntaste wird, solange links vor
+der Zahl noch ein Blank, eine Zahl, "+", "-" oder ein Punkt sichtbar ist, diese
+gelöscht und die hierdurch neu entstandene Ziffernfolge rechtsbündig an der Tabula­
+torposition geschrieben. Das Schreiben von rechtsbündigen Zahlenkolonnen ist so
+leicht möglich #count("11")#):
+#foot#
+#value("11")#) Wird eine #ib#Proportionalschrift#ie# (Schrift, bei der die Zeichen unterschiedliche
+ Breiten haben) verwendet, sollte man zwischen den einzelnen Zahlenkolonnen
+ mindestens zwei Leerzeichen schreiben. Andernfalls bekommt man - auf Grund
+ der unterschiedlicher Zeichenbreiten - keine rechtsbündigen Kolonnen gedruckt.
+#end#
+
+
+ 12 12345,78
+ 1 0,23
+ 12345 1234,00
+
+
+
+Es gibt somit vier nützliche Automatiken: neben dem automatischen Dezimaltabulator
+den Wortumbruch, die Einrückautomatik und die Zeileneinfügeautomatik beim ein­
+fügenden Schreiben.
+4.2.7. Lernen im Editor
+
+#free(1.0)#
+
+ Beliebige Folgen von Tastenbetätigungen können gelernt und Tasten zugeordnet
+ werden. Das ist sinnvoll, wenn Sie wiederholt immer die gleichen Tastenbetä­
+ tigungen ausführen müssen, wie z.B. in Tabellenzeilen etwas einfügen oder wenn
+ des öfteren gleiche Texte geschrieben werden müssen, wie z.B. ein Absender,
+ Grußformeln usw.
+ #goalpage("ESC")#
+ #free(1.0)#
+< ESC> <HOP>
+
+Der #ib#Lernmodus#ie# wird durch Betätigen der Tasten #ib#ESC HOP#ie# eingeschaltet, es erscheint
+#ib#LEARN#ie# als Kontrolle rechts in der Titelzeile). Alle Tastenanschläge werden jetzt bis
+zum Ausschalten des Lernmodus gelernt. Auch Tastenanschläge wie 'CR'), so daß
+man kann demnach auch mehrere Zeilen lernen lassen kann.
+
+<ESC> <HOP> <'taste'> z.B. ESC HOP j
+
+Das Beenden oder Ausschalten des Lernmodus erfolgt durch Drücken der drei Tasten
+#ib#ESC HOP 'taste'#ie#. Dabei wird die gelernte Tastenanschlagsfolge, auch #ib#Lernsequenz#ie#
+genannt, der Taste 'taste' zugeordnet.
+
+<ESC> <'taste'> z.B. ESC j
+
+Durch späteres Betätigen der Tastenfolge ESC 'taste' kann der gelernte Text an jeder
+Stelle der Datei geschrieben werden.
+
+#on("u")#Beispiel:#off("u")#
+
+Ein Sachbearbeiter hat jeden Tag 50 mal die Worte 'Gesellschaft für Datenverarbei­
+tung' zu tippen. Er läßt den Editor diese Worte lernen mit
+
+
+ESC HOP Gesellschaft für Datenverarbeitung ESC HOP m
+
+Die Worte liegen jetzt auf der Taste 'm'. Wird 'm' gedrückt, erscheint ein 'm' auf dem
+Bildschirm. Mit ESC 'm' erscheinen die obigen Worte. ESC ist also notwendig, um
+das normale 'm' von der Lernsequenz zu unterscheiden.
+
+Welche Tasten dürfen zum #ib#Lernen#ie# belegt werden? Alle Tasten, außer
+
+- vom System benutzte Tasten, wie SV, CTRL;
+- vom Editor (je nach Anwendung) vorbelegte Tasten, wie die Tasten q oder ESC
+ und HOP;
+- durch Programmierung (siehe dieses Kapitel) fest belegte Tasten.
+
+Praktische Tips: Man sollte die Tastatur nicht mit Lernsequenzen überlasten, weil man
+sich zu viele Tasten nicht merken kann. Besser ist es, einige wenige Tasten fest zu
+belegen und andere für momentane Aufgaben einzusetzen.
+
+Der Einsatz von #ib#Lernsequenz#ie#en ist besonders sinnvoll für das Schreiben von Text­
+kosmetikanweisungen. Anweisungen wie z.B. 'Unterstreichen einschalten', Schrift­
+typ-Anweisungen usw. werden zweckmäßigerweise auf Tasten gelegt.
+
+Hat man sich einmal beim '#ib#Lernen#ie#' verschrieben, so ist das nicht weiter schlimm: es
+kann ohne Bedenken korrigiert werden (z.B. mit der Taste RUBOUT). Solche Tasten­
+anschläge werden dann allerdings auch gelernt, was aber bei der Benutzung der
+Lernsequenzen keine Bedeutung hat.
+4.2.8. Textabschnitte durch Markieren bearbeiten
+
+#free(1.0)#
+ #on("i")#
+ Oft ergibt sich die Notwendigkeit, mehrere Zeilen oder ganze Textpassagen zu
+ löschen oder zu verschieben. Hierbei hilft die Taste #ib#MARK#ie#, mit der man #ib#Texte
+ markieren#ie# (also kennzeichnen) kann. Die so markierten Texte können dann auf
+ verschiedene Weisen als Ganzes verarbeitet werden.
+ #goalpage("ESC")#
+
+ #free(1.0)#
+<MARK>
+
+Durch Drücken der Taste MARK wird die #ib#Markierung#ie# eingeschaltet und - bei erneu­
+ter Betätigung - wieder ausgeschaltet. Der Anfang der Markierung wird "festgehal­
+ten" und man kann nun das Markierende durch die Positionierungstasten und die
+HOP-Taste in Richtung auf das Dateiende verschieben, wobei die dazwischen lie­
+genden Zeichen markiert (in der Regel "schwarz auf weißem Grund" dargestellt)
+werden.
+
+
+<ESC> <RUBOUT>
+
+Ein so markierter Text kann mit #ib#ESC RUBOUT#ie# gelöscht werden. #ib#Markieren und
+löschen#ie# mit ESC RUBOUT ist eine bequeme und sichere Löschmethode, da man
+genau sieht, was gelöscht wird.#goalpage("ESC RUBOUT")#
+
+
+<ESC> <RUBIN>
+#goalpage("ESC RUBIN")#
+
+Der gelöschte Abschnitt ist aber nicht vollständig gelöscht, sondern er kann an ande­
+rer (oder an der gleichen) Stelle im Text durch #ib#ESC RUBIN#ie# wieder eingefügt werden.
+Der vorsichtig gelöschte Text landet in einem #ib#Zwischenspeicher#ie# und kann bei Bedarf
+mit #ib#ESC RUBIN#ie# wieder aufgerufen werden. Wird erneut vorsichtig gelöscht, so wird
+der letzte Text des Zwischenspeichers überschrieben. Im Zwischenspeicher ist nur für
+einen #on("u")#Text#off("u")# Platz. Auf diese Art kann ein Textabschnitt beliebiger Länge an eine
+andere Stelle des Textes sicher, schnell und bequem verschoben werden. Zusätzlich
+ist die nachträgliche Korrektur von fehlerhaften Löschungen möglich, weil der Text
+wieder mit ESC RUBIN reproduziert werden kann.
+
+Mit eingeschalteter Markierung kann auch geschrieben werden. Das #ib#markierende
+Schreiben#ie# ist eine besonders vorsichtige Art der Texterstellung, denn der Textein­
+schub bleibt erst durch Ausschalten der Markierung (MARK) wirklich bestehen. Er
+kann wieder gelöscht (ESC RUBOUT) und an eine andere Stelle gebracht werden
+(ESC RUBIN). Beim markierenden Schreiben wirkt RUBOUT immer auf das Zeichen
+vor der Cursorposition.
+
+Hinweis: Positionierungen sind nur innerhalb der Markierung möglich.
+#page#
+4.2.9. Der Fenstereditor
+#free(1.0)#
+
+ #on("i")#
+ Oft ist es notwendig, mit mehreren Dateien gleichzeitig zu arbeiten, z.B. wenn aus
+ einer Datei etwas in eine andere kopiert werden muß, wenn Fehler durch die
+ Textkosmetik-Programme oder einen Compiler gefunden werden oder wenn man
+ kurz etwas in einer anderen Datei nachschauen will. Zu diesem Zweck bietet der
+ Editor die Möglichkeit, zwei (oder mehr) Dateien zur gleichen Zeit zu bearbeiten. #off("i")#
+
+
+#free(1.0)#
+Der Editor ermöglicht dem Benutzer wie durch ein Fenster auf den zu bearbeitenden
+Text zu schauen. Es ist in diesem Zusammenhang nur natürlich, daß man bei der
+Bearbeitung eines Textes sich die Möglichkeit wünscht, weitere Texte gleichzeitig
+ansehen zu können. Dies kann notwendig sein, um zu vergleichen, Fehler zu entdek­
+ken oder Textteile aus einem Fenster in ein anderes zu übertragen.
+
+Um ein neues Editor-Fenster zu "öffnen", betätigt man im Editor
+
+<ESC> <e>
+
+Betätigt man ESC e ungefähr in der Mitte des Bildschirms, hat man das Fenster auf
+die neue Datei in der unteren Hälfte des Bildschirms und die "alte" Datei in der
+oberen Bildschirmhälfte. Zunächst wird der Dateiname erfragt. Nach dessen Eingabe
+und dem Betätigen der 'CR' Taste wird ein Fenster auf eine andere Datei eröffnet.
+Die obere linke Ecke des Fensters befindet sich an der aktuellen Cursor-Position.
+Dabei darf sich der Cursor nicht zu sehr am rechten oder unteren Rand befinden, weil
+das Fenster sonst zu klein würde. In diesem "Fenster" kann man dann genauso
+arbeiten wie im "normalen" Editor.
+
+
+Mit der Tastenfolge
+
+<ESC> <w>
+
+wechselt man von einem Fenster (zyklisch) in das benachbarte. Es gibt eine Hier­
+archie zwischen den Fenstern in der Reihenfolge, in der eines im anderen einge­
+richtet worden ist. Gibt man
+
+<ESC> <q>
+
+in einem Fenster, so verschwindet dieses und alle darin eingeschachtelten Fenster,
+und man befindet sich im übergeordneten Fenster.
+
+Wir schilderten zuvor, daß man mit ESC RUBOUT und ESC RUBIN Texte verschie­
+ben und löschen kann. Zwischen Dateien im Fenstereditor geht dies folgendermaßen:
+
+Durch
+
+<ESC> <p> oder <ESC> <d>
+
+schreibt man einen markierten Teil in eine temporäre Datei (einen Zwischenspeicher);
+durch ESC p wird ein markierter Text aus der Ursprungsdatei entfernt und in einen
+Zwischenspeicher geschrieben. Im Gegensatz dazu wird er durch ESC d kopiert.
+Durch
+
+<ESC> <g>
+
+fügt man ihn in eine andere (oder dieselbe) Datei ein. Im Unterschied zu ESC RUBIN
+wird die temporäre Datei dadurch nicht entleert.
+
+Die Funktionen ESC d und ESC g leisten auf schnellere Weise dasselbe wie die
+Kommandos 'PUT ""' und 'GET ""'.
+#page#
+4.2.10. Die wichtigsten vorbelegten Tasten
+#free(1.0)#
+
+ #on ("i")#
+ Lernsequenzen und Kommandos (d.h. ELAN-Programme) können Tasten zuge­
+ ordnet werden. Da einige Funktionen häufig benötigt werden, sind diese stan­
+ dardmäßig bestimmten Tasten zugeordnet. #off("i")#
+
+
+
+#free(1.0)#
+#ib#ESC q#ie# Verlassen des Editors bzw. der eingeschachtelten Fenster.
+
+#ib#ESC e#ie# Weiteres Editorfenster einschalten.
+
+#ib#ESC n#ie# Notizbuch "aufschlagen".
+
+#ib#ESC v#ie# Dateifenster auf ganzen Bildschirm vergrößern
+ bzw. Bildschirm rekonstruieren (eingeschachteltes Fenster verlas­
+ sen).
+
+#ib#ESC w#ie# Dateiwechsel beim Fenstereditor.
+
+#ib#ESC f#ie# Nochmalige Ausführung des letzten Kommandos.
+
+#ib#ESC b#ie# Das Fenster wird auf den linken Rand der aktuellen (ggf. verscho­
+ benen) Zeile gesetzt.
+
+ESC > Zum nächsten Wortanfang.
+
+ESC < Zum vorherigen Wortanfang.
+
+#ib#ESC 1#ie# Zum Anfang der Datei.
+
+#ib#ESC 9#ie# Zum Ende der Datei.
+#page#
+Lernen
+
+
+#ib#ESC HOP#ie# Lernen einschalten.
+
+#ib#ESC HOP taste#ie# Lernen ausschalten und Lernsequenz auf 'taste' legen.
+
+#ib#ESC HOP HOP#ie# Gelerntes vergessen. Bedingung ist, daß man die Lernsequenz in
+ der Task löscht, in der man sie hat lernen lassen.
+#free(1.0)#
+Operationen auf Markierungen
+
+#free(1.0)#
+#ib#ESC RUBOUT#ie# Markiertes "vorsichtig" löschen.
+
+#ib#ESC RUBIN#ie# Vorsichtig mit ESC RUBOUT Gelöschtes einfügen.
+
+#ib#ESC p#ie# Markiertes löschen und in die Notiz-Datei schreiben. Kann mit ESC
+ g an anderer Stelle reproduziert werden.
+
+#ib#ESC d#ie# Duplizieren:
+ Markiertes in die Notiz-Datei kopieren (PUT ""), anschließend die
+ Markierung abschalten. Kann mit ESC g beliebig oft reproduziert
+ werden.
+
+#ib#ESC g#ie# MIT ESC p gelöschten oder mit ESC d duplizierten Text an aktuelle
+ Cursor-Stelle schreiben, d.h. Notiz-Datei an aktueller Stelle einfü­
+ gen (GET "").
+#free(1.0)#
+#on("b")#Zeichen schreiben#u#1#e#
+#off("b")#
+#foot#
+1) Diese Tasten sind standardmäßig so vorbelegt wie hier aufgeführt, sie könne aber
+von Benutzern und in Anwenderprogrammen geändert werden.
+#end#
+#free(0.5)#
+#ib#ESC a#ie# Schreibt ein ä.
+#ib#ESC A#ie# Schreibt ein Ä.
+#ib#ESC o#ie# Schreibt ein ö.
+#ib#ESC O#ie# Schreibt ein Ö.
+#ib#ESC u#ie# Schreibt ein ü.
+#ib#ESC U#ie# Schreibt ein Ü.
+#ib#ESC s#ie# Schreibt ein ß.
+#ib#ESC (#ie# Schreibt eine [.
+#ib#ESC )#ie# Schreibt eine ].
+#ib#ESC <#ie# Schreibt eine {.
+#ib#ESC >#ie# Schreibt eine }.
+#ib#ESC \##ie# Schreibt ein \#, das auch gedruckt werden kann.
+#ib#ESC ­#ie# Schreibt einen (geschützten) Trennstrich, siehe Textverarbeitung.
+#ib#ESC k#ie# Schreibt ein (geschütztes) "k", siehe Textverarbeitung.
+#ib#ESC blank#ie# Schreibt ein (geschütztes) Leerzeichen, siehe Textverarbeitung.
+#free(1.0)#
+Kommando auf Taste legen
+
+#free(1.0)#
+#ib#ESC ESC#ie# Kommandodialog einschalten
+
+#ib#ESC ! taste#ie# Im Kommandodialog:
+ Geschriebenes Kommando auf Taste legen.
+
+#ib#ESC ? taste#ie# Im Kommandodialog:
+ Auf 'taste' gelegtes Kommando zum Editieren anzeigen.
+
+#ib#ESC k#ie# Im Kommandodialog:
+ Das zuletzt editierte Kommando (einzeilige ELAN-Programm)
+ anzeigen.
+
+Eine ausführliche Beschreibung des Kommandodialogs finden Sie im folgenden Kapi­
+tel.
+4.3. Die wichtigsten Editor-Kommandos
+#goalpage("ESC")#
+#free(0.5)#
+
+#ib(9)#4.3.1. Der #ib#Kommandodialog#ie##ie(9)#
+
+#free(1.0)#
+ #on("i")#
+ Einige Operationen kann man nur mühselig mit den bis jetzt beschriebenen Tasten
+ durchführen. Z.B. ist es sehr zeitaufwendig, eine bestimmte Textstelle zu finden.
+ Andere Operationen sind mit den im vorigen Kapitel beschriebenen Tasten über­
+ haupt nicht möglich, wie etwa die Zeilenbreite einzustellen oder Programme aufzu­
+ rufen, die die zu editierende Datei verarbeiten. Solche Operationen werden durch
+ Kommandos ermöglicht, die man auf Editorebene geben kann. #off("i")#
+
+
+#free(1.0)#
+Um Kommandos an den Editor geben zu können, schalten wir in den #ib#Kommando­
+zustand#ie#.
+
+<ESC> <ESC>
+
+Durch zweimaliges Betätigen von ESC erfolgt #on("u")#im Editor#off("u")# die Aufforderung
+
+____________________________________________________________________________
+ ................. dateiname ...................... Zeile 4
+
+Mit der ESC-Taste ist es möglich, den Kommandodialog
+gib kommando :
+
+____________________________________________________________________________
+
+
+
+Auf dem Bildschirm erscheint eine #ib#Kommandozeile#ie#, in der der Benutzer
+Kommandos schreiben kann. Durch Betätigen der Taste 'CR' wird das
+Kommando ausgeführt.
+#page#
+
+
+#ib(9)#4.3.2. Zeile und #ib#Textstelle anwählen#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Auf der Kommandoebene des Editors können Sie Kommandos erteilen, um an eine
+ beliebige Stelle in der Datei zu positionieren.#off ("i")#
+
+#free(1.0)#
+Sie haben einen (größeren) Text erstellt und stehen nun vor dem Problem, für die
+Korrektur die entsprechenden Textstellen aufzufinden.
+
+#on("u")#Beispiel:#off("u")#
+
+Bei der Durchsicht eines Ausdrucks Ihres Textes stellen Sie fest, daß Sie sich ver­
+schrieben haben. Anstelle von "diese Zeichen" haben Sie "diese Ziichen" geschrie­
+ben. Um diese Textstelle anzuwählen, gehen Sie wie folgt vor: Sie positionieren an
+den Beginn der Datei und betätigen die Tastenfolge
+
+
+<ESC> <ESC>
+
+
+Auf dem Bildschirm ersceint:
+
+____________________________________________________________________________
+
+gib kommando:
+
+____________________________________________________________________________
+
+
+Sie schreiben nun die zu suchende Textstelle auf:
+
+____________________________________________________________________________
+
+gib kommando: "diese Ziichen"
+
+____________________________________________________________________________
+
+
+Durch die Angabe eines TEXTes in Anführungsstrichen wird nach dem eingeschlosse­
+nen TEXT 'diese Ziichen' ab der aktuellen Cursor-Position gesucht. Wird 'diese
+Ziichen' gefunden, bleibt der Cursor auf dem gesuchten Text stehen. Andernfalls steht
+der Cursor am Ende der letzten Zeile der Datei.
+
+Eine andere Möglichkeit, an eine entferntere Stelle im Text zu kommen, ist die fol­
+gende:
+
+<ESC> <ESC>
+
+
+Es erscheint auf dem Bildschirm:
+
+____________________________________________________________________________
+
+gib kommando:
+
+____________________________________________________________________________
+
+
+Sie geben nun die Textzeile an, die Sie suchen:
+
+____________________________________________________________________________
+
+gib kommando: 134
+
+____________________________________________________________________________
+
+
+Durch dieses Kommando wird auf die 134. Zeile positioniert.
+#page#
+
+#ib(9)#4.3.3. #ib#Suchen und Ersetzen#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Auf der Kommandoebene des Editors können Sie wie auf der Monitor-Ebene
+ beliebige Kommandos geben. Diese können Sie zu (ELAN-) Programmen ver­
+ knüpfen. Zur Erstellung dieser Programme editieren Sie wie gewohnt in der Kom­
+ mandozeile. Für das Positionieren, Suchen und Ersetzen innerhalb Ihres ELAN-
+ Programms stehen Ihnen Kommandos zur Verfügung. Beliebige ELAN-Prog­
+ ramme sind zulässig.#off ("i")#
+
+#free(1.0)#
+Die #ib#Kommandozeile#ie# kann wie eine "normale" Textzeile editiert werden (Positionieren,
+Überschreiben, Einfügen, Löschen und Markieren). Bevor ein Programm eine Aus­
+gabe erzeugt oder fehlerhafte Kommandos Fehlermeldungen hervorrufen, wird der
+Cursor in die linke obere Ecke positioniert. Um die Meldungen festzuhalten, sollte das
+#ib#Kommando 'pause'#ie# folgen. Diese Meldungen werden dann in der ersten Zeile des
+Bildschirms angezeigt. Danach ist man wieder im Editor und kann wie gewohnt
+arbeiten.
+
+Kommandos werden durch ein Semikolon voneinander getrennt.
+
+#on("u")#Beispiel:#off("u")#
+
+____________________________________________________________________________
+
+gib kommando: T1; "Geschäftsführung";fetch("Lieferanten",archive)
+
+____________________________________________________________________________
+
+
+Ihr ELAN-Programm besteht aus zwei Kommandos: zunächst positionieren Sie in die
+erste Zeile und suchen ab dort nach dem Wort "Geschäftsführung". dann lesen Sie
+die Datei "Lieferanten" von der Diskette in den Arbeitsspeicher.
+
+Die beiden beschriebenen Kommandos (Text bzw. eine Zeile anwählen) sind Spezial­
+kommandos und können in dieser Form nicht durch ein Semikolon mit anderen Kom­
+mandos kombiniert werden. Deshalb gibt es für sie eine ELAN-Form, die es erlaubt,
+sie mit anderen Kommandos zusammen zu verwenden:
+
+a) Einen Text ab der aktuellen Cursor-Position suchen (D ist eine Abkürzung für
+ '#ib#DOWN#ie#'):
+
+____________________________________________________________________________
+
+gib kommando: "diese Zeichen"
+
+____________________________________________________________________________
+
+(* Kurzform *)
+
+
+____________________________________________________________________________
+
+gib kommando: #ib#D#ie# "diese Zeichen"
+
+____________________________________________________________________________
+
+(* Allgemeine Version *)
+
+
+
+b) Auf eine Zeile positionieren (#ib#T#ie# ist eine Abkürzung für '#ib#TO LINE#ie#'):
+
+____________________________________________________________________________
+
+gib kommando: 127
+
+____________________________________________________________________________
+
+
+(* Kurzform *)
+
+
+____________________________________________________________________________
+
+gib kommando: T 127
+
+____________________________________________________________________________
+
+
+(* Allgemeine Version *)
+
+
+Mehrere Kommandos können in der Kommandozeile angegeben werden. Die einzel­
+nen Kommandos müssen in diesem Fall mit ';' voneinander getrennt werden.
+
+#on("u")#Beispiel:#off("u")#
+
+<ESC> <ESC>
+
+schaltet in den Kommandomodus
+
+____________________________________________________________________________
+
+gib kommando: T 1; D "noch Zeichen"
+
+____________________________________________________________________________
+
+
+
+Diese zwei Kommandos werden nacheinander ausgeführt. Zuerst wird auf die erste
+Zeile positioniert und dann (von der ersten Zeile ab) nach 'noch Zeichen' gesucht.
+Damit ist es möglich, die Datei nicht nur ab der aktuellen Zeile zu durchsuchen,
+sondern die gesamte Datei. Soll nicht in Richtung auf das Dateiende, sondern in
+Richtung auf den Dateianfang (also nach "oben") gesucht werden, kann man das
+#ib#U-Kommando#ie# (Abkürzung für #ib#UP#ie#) verwenden:
+
+<ESC> <ESC>
+
+____________________________________________________________________________
+
+gib kommando: U "noch ein Text"
+
+____________________________________________________________________________
+
+
+
+Ein weiteres Kommando ist das #ib#C-Kommando#ie# (Abkürzung für '#ib#CHANGE#ie#'), mit
+welchem man einen TEXT sucht und diesen dann ersetzt.
+
+#on("u")#Beispiel:#off("u")#
+
+<ESC> <ESC>
+
+____________________________________________________________________________
+
+gib kommando: "alte Zeichen" C "neue Zeichen"
+
+____________________________________________________________________________
+
+
+Ab der aktuellen Cursor-Position wird nach 'alte Zeichen' gesucht. Wird der TEXT
+gefunden, wird er durch 'neue Zeichen' ersetzt. Der Cursor befindet sich in diesem
+Fall hinter dem ersetzten TEXT. Wird 'alte Zeichen' dagegen nicht in der Datei gefun­
+den, befindet sich der Cursor (wie beim erfolglosen Suchen mit D) am Ende der
+letzten Zeile der Datei.
+
+Wie alle anderen Kommandos kann auch das C-Kommando mit anderen Komman­
+dos verbunden werden.
+
+#on("u")#Beispiel:#off("u")#
+
+<ESC> <ESC>
+
+____________________________________________________________________________
+
+gib kommando: #ib#T#ie# 500; "Schreibfelher" #ib#C#ie# "Schreibfehler"
+
+____________________________________________________________________________
+
+
+
+Hier wird ab der 500. Zeile der Datei nach 'Schreibfelher' gesucht und ggf. ersetzt.
+Soll ein TEXT nicht nur einmal, sondern bei jedem Auftreten ersetzt werden, benutzt
+man das #ib#CA-Kommando#ie# (Abkürzung für #ib#CHANGE ALL#ie#):
+
+<ESC> <ESC>
+
+____________________________________________________________________________
+
+gib kommando: "dieser alte Text" CA "dieser neue Text"
+
+____________________________________________________________________________
+
+
+Dadurch wird 'dieser alte Text' bei jedem Auftreten ab der aktuellen Cursor-Position
+durch 'dieser neue Text' ersetzt.
+Pattern Matcher
+#free(1.0)#
+
+
+ Der #ib#Pattern Matcher#ie# ist ein Werkzeug zur #ib#Mustererkennung#ie#. Er dient zur
+ Beschreibung von Texten, die in verschiedenen Ausprägungen auftreten können.
+ Zum Suchen oder Ersetzen wird nicht ein Text fester Gestalt vorgegeben, sondern
+ eine Beschreibung der gesuchten Struktur.
+
+
+#free(1.0)#
+
+Häufig werden Sie #ib#Texte suchen#ie# oder ersetzen wollen, die in einigen Varianten inner­
+halb eines umfangreicheren Textes auftauchen können.
+
+Beispiel: Gesucht wird 'unser' in verschiedenen Zusammenstellungen, also auch
+ 'unsere' oder 'unserem'. Alle Textstellen, die diesem Muster entsprechen,
+ können in #on("u")#einem#off("u")# Suchverfahren gefunden werden, indem das Muster,
+ welches diese Texte beschreibt, für die Suche benutzt wird:
+
+____________________________________________________________________________
+Suchen nach Begriffen deren genaue Ausprägung unbekannt ist.
+gib kommando:D(" unser" + any + " ")
+
+
+____________________________________________________________________________
+
+
+
+ Leseweise:
+
+ Suche 'unser', gefolgt beliebigen Zeichen plus einem Leerzeichen, oder
+ auch nur einem Leerzeichen.
+
+
+ Dieses Suchkommando liefert Treffer bei 'unser', 'unsere', 'unseres' usw..
+
+#free(1.0)#
+Wie baut man ein Pattern ?
+
+#free(1.0)#
+
+
+ Texte werden durch ihr Konstruktionsmuster aus bekannten und unbekannten
+ Teilen beschrieben
+
+#free(1.0)#
+
+Ein Text, der in seiner konkreten Form nicht bekannt ist, dessen Aufbau jedoch durch
+ein Muster beschrieben werden kann, besteht aus Teilen, die als:
+
+ - bekannte Texte
+ - unbekannte Texte
+
+bezeichnet werden und die mit dem Operatoren:
+
+ '+' Zusammensetzen
+ 'OR' Alternative
+
+kombiniert werden können.
+
+
+Ein bekannter Text ist z.B. ein Stück eines gesuchten Textes, das als fest vorgegeben
+betrachtet werden kann, wie etwa der Wortstamm 'unser' in dem obigen Beispiel. Wie
+gewohnt wird ein solcher bekannter Text, in Anführungsstriche gesetzt, als TEXT
+CONST "text" notiert.
+
+Demgegenüber ist ein unbekannter Text von nicht näher zu beschreibender Gestalt.
+Das Muster, welches einen unbekannten Text beschreibt, steht für irgendeinen einer
+Vielzahl von Texten, die diesem Muster entsprechen.
+
+Mit der Prozedur:
+
+ any
+
+wird das Muster für einen beliebigen Text geliefert.
+
+Im einleitenden Beispiel ist der Wortstamm bekannt, das Teilwort 'unser' kann also im
+'Klartext' angegeben werden. Die Endungen sind je nach dem Zusammenhang in dem
+das gesuchte Wort auftritt verschieden, also zunächst unbekannt.
+Ein solcher unbekannter Text kann entweder durch Aufzählung der möglichen
+Alternativen seiner Erscheinung beschrieben werden oder durch die Prozedur 'any'.
+
+
+ (text + ("er" OR "es" OR "em" OR ..... )
+
+ alternative Verknüpfung durch OR
+
+
+ ("text" + any + .... )
+
+ additive Verknüpfung durch +
+
+Grundsätzlich ist zu beachten, daß der Suchvorgang des Pattern Matcher Zeichenket­
+ten untersucht und nicht etwa einzelne Worte und stets nach dem längstmöglichen
+Muster gesucht wird!
+
+Ein schlecht beschriebener Suchtext kostet somit nicht nur viel Rechenzeit, sondern
+liefert auch unerwünschte Ergebnisse: z.B. sollte der Artikel 'der' mit einem führenden
+Leerzeichen als " der" gesucht werden, da andernfalls jedes Wort, das die Silbe 'der'
+enthält, einen Treffer in der Suche ergibt.
+
+Da die Suche nach unbekannten Texten viele unerwünschte Ergebnisse liefern
+könnte, kann die Prozedur any in zweifacher Weise eingeschränkt werden:
+
+
+D(" d" + any (2) )
+
+ Die Länge der unbekannten Textes wird vorgegeben, indem die Anzahl
+ der Zeichen aus denen der Text besteht, angegeben wird. Die Angabe
+ steht in Klammern hinter 'any'. (In diesem Beispiel genau 2 Zeichen).
+
+
+D(" d" + any ("aeirs"))
+
+
+ Das Alphabet, aus dem der unbekannte Text bestehen darf, wird angege­
+ ben. (In diesem Beispiel darf der Text der einen Treffer ergibt nur aus
+ den Zeichen 'a', 'e', 'i', 'r', 's' bestehen, z.B: der, die, das oder auch
+ dies.)
+
+
+D(" d" + any (2,"aeirs")
+
+
+ Auch die Kombination der Beschränkungen ist möglich. (Jetzt liefern nur
+ noch 'der', 'die','das' etc. Treffer).
+
+
+#on("b")#
+ACHTUNG: Das Zeichen '*' nimmt eine Sonderstellung ein, da es als Abkürzung für
+ 'any' verwandt werden kann. Soll dieses Zeichen im Text gesucht oder
+ ersetzt werden, müssen Sie statt "*" 'any(1,"*")' schreiben.
+
+ Weitere Informationen zum Pattern Matcher finden Sie im EUMEL-
+ Handbuch zur Programmierung.
+#off("b")#
+#free(1.0)#
+4.3.4. Kommandos auf Tasten legen
+
+#free(1.0)#
+ #on("i")#
+ Oft benutzte Kommandos können auf Tasten gelegt werden. Damit ist es möglich,
+ den Editor auf Ihre speziellen Bedürfnisse einzurichten.#off ("i")#
+
+#free(1.0)#
+
+Oft benutzte Kommandos können mit der Drei-Tastenfolge
+
+<ESC> <!> <'taste'> auf eine Taste gelegt werden.
+
+#on("u")#Beispiel:#off("u")#
+
+
+<ESC> <ESC> (* die Kommandozeile erscheint *)
+
+____________________________________________________________________________
+
+gib kommando: save (SOME myself)
+
+____________________________________________________________________________
+
+
+<ESC> <!> <s> (* das Kommando 'save (SOME myself)' ist
+ nun auf die Taste 's' gelegt *)
+
+
+Wird nun die Taste 's' gedrückt, erscheint das Zeichen 's' auf dem Bildschirm. Mit
+#ib#ESC s#ie# wird das 'save'-Kommando ausgeführt. Natürlich können auch kompliziertere
+Kommandos auf Tasten gelegt werden.
+
+Möchten Sie ein Kommando, das auf eine Taste gelegt wurde, verändern, drücken Sie
+im Kommandodialog (!) die Drei-Tastenfolge
+
+<ESC> <?> <'taste'>
+
+
+#on("u")#Beispiel:#off("u")#
+
+<ESC> <ESC> (* in den Kommandodialog gehen *)
+
+
+<ESC> <?> <s> (* es erscheint nun: 'save (SOME myself)' *)
+
+Dieses Kommando kann nun z.B. verändert und ausgeführt (durch 'CR') oder
+wiederum auf die gleiche oder eine andere Taste gelegt werden (durch #ib#ESC ! 'taste'#ie#).
+
+Im Editor kann das letzte im Kommandodialog eingegebene Kommando durch '#ib#ESC f#ie#'
+wiederholt werden.
+#page#
+
+#ib(9)#4.3.5. Texte aus anderen Dateien benutzen#ie(9)#
+#free(1.0)#
+ #on("i")#
+ Manchmal ist es notwendig, einen Text in eine andere Datei zu schreiben (z.B.
+ wenn man diesen Text noch einmal verwenden will) oder einen Text einer anderen
+ Datei in den zu bearbeitenden Text einzufügen. Die '#ib#GET#ie#'- und '#ib#PUT#ie#'-Kom­
+ mandos bieten die Möglichkeit, Texte zwischen Dateien auszutauschen (vergl.
+ auch den Abschnitt über paralleles Editieren).#off ("i")#
+
+#free(1.0)#
+Mit dem #ib#'GET'-Kommando#ie# können wir Texte aus einer anderen Datei an die aktuelle
+Schreibposition kopieren.
+
+____________________________________________________________________________
+
+gib kommando: GET "absender"
+
+____________________________________________________________________________
+
+holt den Text 'absender'. Wenn also des öfteren Briefe geschrieben werden, braucht
+man sich den Absender nur einmalig in die Datei 'absender' zu schreiben und kann
+diesen mit dem Kommando 'GET' (was man auf eine Taste legen kann) u.U. mehr­
+mals an verschiedenen Stellen in die Datei einfügen.
+
+Mit dem #ib#'PUT'-Kommando#ie# können wir zuvor markierte Textteile in eine Datei schrei­
+ben.
+
+____________________________________________________________________________
+
+gib kommando: PUT "adressen"
+
+____________________________________________________________________________
+
+
+schreibt einen markierten Text in die Datei 'adressen'. 'adressen' wird ggf. eingerich­
+tet. Ist die Datei 'adressen' bereits vorhanden, so wird erfragt, ob die Datei gelöscht
+werden kann, um den markierten Text aufzunehmen (überschreiben). Andernfalls wird
+der markierte Text an den bereits vorhandenen Text in 'adressen' angefügt. Es ist
+somit durch mehrmaliges Markieren und das 'PUT'-Kommando möglich, Texte aus
+einer Datei zu sammeln und in eine neue Datei zu geben.
+#page#
+
+#ib(9)#4.3.6. #ib#Breitere Zeilen#ie# bearbeiten#ie(9)##goalpage("margin")#
+#free(1.0)#
+ #on("i")#
+ Der Editor ist auf eine Zeilenbreite von 77 Zeichen eingestellt. Oft ist es notwen­
+ dig, mit einer anderen Zeilenbreite zu schreiben, welche man mit dem #ib#'limit'-
+ Kommando#ie# einstellen kann. Aber auch die Positionierung innerhalb einer Zeile
+ wird dadurch anders, weil breitere Zeilen nicht als Ganzes auf den Bildschirm
+ passen. In diesem Fall wird "#ib#gerollt#ie#".#off ("i")#
+
+#free(1.0)#
+Eine andere Zeilenbreite stellt man durch 'limit' ein. Beachten Sie, daß die eingestell­
+te Zeilenbreite für die gesamte Datei gilt.
+
+#on("u")#Beispiel:#off("u")#
+
+____________________________________________________________________________
+
+gib kommando: limit (180)
+
+____________________________________________________________________________
+
+
+Nun können Sie wie gewohnt schreiben. Allerdings wird die aktuelle Zeile, in der man
+sich befindet, nicht wie gewohnt am Bildschirmende umgebrochen, sondern erst an
+der Spalte 180, sofern sie nicht vorher durch die 'CR'-Taste beendet wird. Wird über
+das rechte Bildschirmende hinaus geschrieben, bleibt die Cursor-Position am Ende
+des Bildschirms erhalten, aber die Zeile wird beim weiteren Schreiben nach links
+verschoben, "rollt" also nach links (der Anfang der Zeile verschwindet scheinbar nach
+links).
+
+Mit der Positionierung verhält es sich ähnlich. Wird mit RECHTS über den rechten
+Bildschirmrand positioniert, wird die Zeile ebenfalls gerollt. #ib#HOP RECHTS#ie# bewirkt ein
+#ib#Blättern#ie# innerhalb einer einzelnen Zeile nach rechts. Analog verläuft es bei verscho­
+bener Zeile, wenn nach links (LINKS bzw. #ib#HOP LINKS#ie#) positioniert wird.
+
+Beim Schreiben von Tabellen kann es sinnvoll sein, das Fenster vorübergehend auf
+eine andere Anfangsposition (als 1) einzustellen. Das kann mit dem
+#ib#'margin'-Kommando#ie# erfolgen.
+
+#on("u")#Beispiel:#off("u")#
+
+____________________________________________________________________________
+
+gib kommando:#ib#margin#ie# (50)
+
+____________________________________________________________________________
+
+
+Das Editorfenster zeigt nun einen Ausschnitt aus der Datei, beginnend ab der Spalte
+50. In der Titelzeile wird "M50" angezeigt.
+#page#
+
+#ib(9)#4.3.7. Die wichtigsten Kommandos#ie(9)#
+#free(1.0)#
+ #on("i")#
+ Einige Kommandos sind speziell für die Textverarbeitung im Editor programmiert.
+ Die wichtigsten werden hier vorgestellt.#off ("i")#
+
+#free(1.0)#
+any
+ TEXT PROC any
+ liefert ein Muster beliebiger Gestalt und Länge (also auch der Länge 0) für
+ Suchoperationen.
+
+
+ " ir" + any + "was"
+
+
+any
+ TEXT PROC any (TEXT CONST alphabet)
+ liefert den längstmöglichen Text, der aus den in 'alphabet' angegebenen Zeichen
+ besteht.
+
+
+ any ("1234567890") (* suche Zahlen *)
+
+
+any
+ TEXT PROC any (INT CONST laenge)
+ liefert ein Muster beliebiger Gestalt und der Länge 'laenge'.
+
+
+ " d" + any (2)
+
+
+any
+ TEXT PROC any (INT CONST laenge, TEXT CONST alphabet)
+ liefert ein Muster der Länge 'laenge', das nur aus Zeichen aus
+ 'alphabet' besteht.
+
+
+ " d" + any (2,"erias")
+
+
+
+C
+ OP C (TEXT CONST muster, ersatz)
+ Ab der aktuellen Positon wird 'muster' in Richtung Dateiende gesucht und durch
+ 'ersatz' ersetzt. Der Cursor steht danach hinter 'ersatz'.
+
+
+ "alt" C "neu"
+
+
+
+CA
+ OP CA (TEXT CONST muster, ersatz)
+ Arbeitet ab der aktuellen Position wie C. Die Aktion wird jedoch bis zum Erreichen
+ des Dateiendes wiederholt. Nach Ausführung ist somit jedes 'muster' durch
+ 'ersatz' ersetzt. Der Cursor steht danach hinter dem letzten Zeichen der Datei.
+
+
+ "alt" CA "neu"
+
+
+
+
+D
+ OP D (INT CONST n)
+ Positioniert das Fenster n Zeilen vorwärts in Richtung auf das Dateiende.
+
+
+ D 50
+
+
+ OP D (TEXT CONST muster)
+ Sucht 'muster' vorwärts in Richtung auf das Dateiende. Die Suche beginnt direkt
+ hinter der aktuellen Cursor-Position. Wird 'muster' nicht gefunden, steht der
+ Cursor hinter dem letzten Zeichen der Datei. Wird 'muster' gefunden, steht der
+ Cursor direkt auf dem ersten Zeichen von 'muster'.
+
+
+ D "muster"
+
+
+
+GET
+ OP GET (TEXT CONST dateiname)
+ Kopiert den Inhalt der Datei mit dem angegebenen Namen vor die aktuelle
+ Cursor-Position. Ist ein Teil der Quelldatei markiert, wird nur der markierte Teil
+ kopiert.
+
+
+ GET "quelldatei"
+
+
+ OP G (TEXT CONST dateiname)
+ Wie GET.
+
+
+limit
+ OP limit (INT CONST limit)
+ Setzt die rechte Schreibgrenze auf 'limit'.
+
+
+ limit (50)
+
+
+
+margin
+ PROC margin (INT CONST anfang)
+ Alle Zeilen erscheinen erst ab Spalte 'anfang' im Sichtfenster.
+
+
+ margin (50)
+
+
+
+OR
+ TEXT OP OR (TEXT CONST texteins,textzwei)
+ Liefert ein Muster, wenn texteins oder textzwei gefunden wird. Die Reihenfolge
+ spielt keine Rolle.
+
+
+ D ("Geschäfts" + ("führung" OR "leitung"))
+
+
+
+PUT
+ OP PUT (TEXT CONST dateiname)
+ Richtet eine Datei mit dem angegebenen Namen ein und kopiert den markierten
+ Textabschnitt in diese.
+
+
+ PUT ("meine hilfsdatei")
+
+
+ OP P (TEXT CONST dateiname)
+ Zweck: Wie PUT.
+
+
+T
+ OP T (INT CONST n)
+ Positioniert auf die Zeile 'n'.
+
+
+ T 999
+
+
+
+type
+ PROC type (TEXT CONST zeichenkette)
+
+ Fügt 'zeichenkette' in die aktuelle Position der editierten Datei ein. Besonders
+ nützlich in Verbindung mit der Prozedur 'code', um nicht auf der Tastatur enthal­
+ tene Zeichen in den Text zu bringen.
+
+
+ type(code(200))
+
+
+
+U
+ OP U (INT CONST n)
+ Positioniert das Fenster n Zeilen rückwärts in Richtung auf den Dateianfang.
+
+
+ U 100
+
+
+ OP U (TEXT CONST muster)
+ Sucht 'muster' rückwärts in Richtung auf den Dateianfang. Die Suche beginnt
+ links neben der aktuellen Cursor-Position. Vergl. D
+
+
+ U "muster"
+
+
+word wrap
+ PROC word wrap (BOOL CONST an)
+ Schaltet den automatischen Wortumbruch an (voreingestellt) bzw. aus.
+
+
+ word wrap (true) (* angeschaltet *)
+ word wrap (false) (* ausgeschaltet *)
+
+4.4. Fehlersituationen und Abhilfe
+
+#free(1.0)#
+ #on("i")#
+ Von Zeit zu Zeit werden Sie als Anfänger in Arbeitssituationen geraten, wo Sie
+ nicht weiterwissen. Hier sind einige Tips, wie Sie sich behelfen können.#off ("i")#
+
+#free(1.0)#
+
+Wie helfe ich mir, wenn...
+
+
+... nach
+ continue("taskname")
+
+ der Monitor #on("u")#nicht#off("u")#
+
+ gib kommando:
+
+ sagt, sondern "schweigt"?
+
+=> Sie haben die Task bei der letzten Benutzung nicht mit dem Kommando
+ 'break' verlassen (evtl. haben Sie SV betätigt?). Sie sind jetzt im Editor, sehen
+ aber den zuletzt bearbeiteten Textausschnitt nicht. Betätigen Sie die Tasten
+
+ ESC b
+
+ und der Text wird neu auf dem Bildschirm ausgegeben.
+#free(1.0)#
+... im Editor kein Tastendruck mehr akzeptiert wird?
+
+=> Sie haben irrtümlich die STOP-Taste (auch oft als CTRL a realisiert, abhängig
+ vom Terminal), d.h. Anhalten der Bildschirmausgabe betätigt.
+
+ Drücken Sie die WEITER-Taste (= CTRL c, d.h. Bildschirmausgabe fortfüh­
+ ren). Alle Tastenanschläge, die zwischenzeitlich zu keiner Reaktion führten,
+ werden jetzt ausgegeben.
+
+ Je nach Tastatur können STOP und WEITER auch auf anderen Tasten liegen. #free(1.0)#
+... der Lernmodus über lange Zeit (ungewollt) eingeschaltet war?
+
+=> a) Sie merken plötzlich, daß über einen unbestimmt langen Zeitraum alle Ihre
+ Tastenanschläge gelernt wurden (zu erkennen an der "LEARN"-Anzeige in
+ der Überschriftzeile).
+
+ #on("u")#Was ist zu tun?#off("u")#
+
+ Mit dem Kommando
+
+ ESC HOP HOP
+
+ vergessen Sie alles Gelernte und schalten den Lernmodus aus.
+
+=> b) Sie beenden den Editor mit ESC q und die Meldung
+
+____________________________________________________________________________
+
+ WARNUNG: Lernmodus nicht ausgeschaltet
+
+____________________________________________________________________________
+
+
+
+ erscheint auf dem Bildschirm.
+
+ #on("u")#Was ist zu tun?#off("u")#
+
+ Sie können mit
+
+ ESC HOP HOP
+
+ das Gelernte sofort vergessen.
+#free(1.0)#
+... Sie zu viele Absatzzeichen in Ihrem Text gesetzt haben und diese entfernen
+ müssen?
+
+=> Sie positionieren in die Zeile, in der die Absatzmarke gelöscht werden soll. Sie
+ betätigen dann die TAB-Taste, um hinter den Text zu positionieren, dann die
+ RUBOUT-Taste. Wenn Sie jetzt die Zeile mit den Cursor-Tasten nach oben
+ oder unter verlassen, verschwindet die Absatzmarkierung.
+#free(1.0)#
+... nach
+
+ save("dateiname","vatertask")
+
+ das Betriebssystem nicht mehr reagiert?
+
+=> Sie haben die Vater-Task nicht mit dem Kommando 'global manager' in
+ jenem Prozeß zum Empfang von Daten aus anderen Prozessen vorbereitet.
+#free(1.0)#
+... Sie in Ihrer Task das Archive mit dem Kommando
+
+ archive("archivname")
+
+ anmelden wollen und das System Ihnen die Meldung
+
+ "Fehler: Archive wird von Task "bib" benutzt"
+
+ zustellt?
+
+=> Es gibt zwei Möglichkeiten:
+ a) Ein anderer Benutzer benötigt das Archiv-Laufwerk in diesem Moment. Sie
+ müssen warten, bis er seine Arbeit beendet hat.
+
+ b) Ein anderer Benutzer (oder Sie selbst) hat vergessen, mit dem Kommando
+
+ release(archive)
+
+ das Archiv in jener Task freizugeben. Falls Sie es selbst waren, holen Sie
+ das nach. Ansonsten kann das Archiv-Kommando wieder erfolgreich gege­
+ ben werden, wenn fünf Minuten nicht auf das Archiv
+ zugegriffen wurde. #free(1.0)#
+... Sie eine (scheinbare oder echte) Endlosschleife auf einer Taste (z.B. Taste "x")
+ gelernt haben und diese (versehentlich oder bewußt) durch 'ESC x' aktivieren?
+
+=> Wie immer, wenn Sie eine endlos laufende Task beenden wollen, gelangen Sie
+ mit der SV-Taste in den Supervisor-Modus und mit dem Kommando
+
+ 'halt'
+
+ beenden Sie die Endlosschleife.
+
+ Mit
+
+ ESC HOP HOP x
+
+ wird danach das Gelernte 'vergessen'!
+#free(1.0)#
+... Sie Ihre Datei verlassen wollen und
+
+ 'ESC q'
+
+ (scheinbar) nicht funktioniert?
+
+=> Sie haben versehentlich den Feststeller für Großbuchstaben (SHIFT LOCK /
+ CAPS LOCK) betätigt und ESC q zeigt keine Wirkung (wie auch andere Tasten­
+ kombinationen mit Großbuchstaben evtl. keine Wirkung zeigen).
+
diff --git a/doc/user/benutzerhandbuch.5a b/doc/user/benutzerhandbuch.5a
new file mode 100644
index 0000000..1e907f0
--- /dev/null
+++ b/doc/user/benutzerhandbuch.5a
@@ -0,0 +1,1446 @@
+#start(5.0,1.5)##pagenr("%",1)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 5: Textkosmetik und Druck
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+5 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 5 - %
+#tableend##clearpos#
+#end#
+
+#ib(9)#TEIL 5: Textkosmetik und Druck#ie(9)#
+#free(1.0)#
+#ib(9)#5.0. Vorwort#ie(9)#
+
+#free(1.0)#
+Die #ib#Textkosmetik-Programme#ie# des EUMEL-Systems bieten Ihnen eine einfach zu
+erlernende und zu bedienende Möglichkeit, Texte für den Druck zu gestalten (pro­
+grammtechnisch: #ib#formatieren#ie#) und zu manipulieren.
+
+Die Textkosmetik-Programme bearbeiten Ihre Dateien, die durch den EUMEL-Editor
+erstellt wurden. Darum sollten Sie sich zuerst mit dem EUMEL-Editor vertraut
+machen.
+
+Die Programme sind so konstruiert, daß die meisten Aufgaben durch in den Text
+eingefügte Anweisungen gesteuert werden. Solche Angaben für die Textkosmetik und
+den EUMEL-Drucker nennen wir im folgenden kurz #on("b")##on("i")#'Anweisung' #off("b")##off("i")#. Die Form der
+#ib#Anweisung#ie# ist für die Textkosmetik und den EUMEL-Drucker gleich und entspricht
+der ELAN-Syntax. Beachten Sie den #ib#Unterschied zwischen einem Kommando und
+einer Text-Anweisung#ie#: während ein Kommando direkt ausgeführt wird, wird eine in
+den Text eingebettete Anweisung erst nach dem Aufruf von Textkosmetik- und
+Drucker-Programmen wirksam.
+
+Die Wirkungsweise der Textkosmetik-Anweisungen ist leicht zu erlernen und kann
+vor allen Dingen stufenweise erfolgen. Deshalb ein guter Rat für Anfänger: Lesen Sie
+diesen Teil des Benutzer-Handbuchs erst oberflächlich, so daß Sie ungefähr
+Bescheid wissen, welche Möglichkeiten die Textkosmetik-Programme bieten. Dann
+können Sie diejenigen Teile der Textkosmetik auswählen und bei Bedarf anwenden,
+die Sie für Ihre spezielle Anwendung benötigen.
+#page#
+
+#ib(9)#5.1. Einführung in die Benutzung der
+ #ib#Textkosmetik#ie##ie(9)#
+
+#free(1.0)#
+ #on("i")#
+ In diesem Kapitel erhalten Sie eine Übersicht über die verfügbaren Programme der
+ Textkosmetik.
+
+#off("i")#
+#free(1.3)#
+Schreiben, Gestalten und Drucken von Texten
+
+#free(1.0)#
+ #on("i")#
+ Im EUMEL-System unterscheiden wir zwischen drei Stufen einer Textbehand­
+ lung:#on("b")# Erstellung, Gestaltung#off("b")# und #on("b")#Druck#off("b")#. Die Trennung in verschiedene Arbeits­
+ stufen hat den Vorteil, daß Sie sich zu einem Zeitpunkt nur auf einen Arbeitsschritt
+ konzentrieren müssen.
+ #off("i")#
+#free(1.3)#
+Texterstellung bzw. Textbearbeitung
+
+#free(1.0)#
+Das Schreiben von Texten wird mit Hilfe des Editors erledigt. In dieser Stufe der
+Texterstellung können Sie sich ausschließlich auf das Schreiben und die inhaltliche
+Korrektheit Ihres Textes konzentrieren. Wird ein Text ohne Anweisungen gedruckt,
+dann erscheint er so, wie er mit dem Editor geschrieben wurde. Bei der Erstellung
+des Textes können Sie aber auch bereits Textkosmetik-Anweisungen in den Text
+einfügen.
+
+____________________________________________________________________________
+
+ Es ist wichtig, daß Sie das Kapitel 'Editor'
+ \#on("b")\#sehr\#off("b")\# gründlich lesen.
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+Es ist wichtig, daß Sie das Kapitel 'Editor'
+#on("b")#sehr#off("b")# gründlich lesen.
+
+
+Sie sollten Texte im 'Fließtext'-Modus erstellen, d.h., dann werden Worte, die über
+Zeilengrenzen gehen, ohne Silbentrennung vom Editor in die nächste Zeile gebracht.
+#free(1.5)#
+Textkosmetik bzw. Textgestaltung
+
+#free(1.0)#
+Nachdem Sie einen Text geschrieben haben, können Sie ihn mit #ib#Textkosmetik-
+Programme#ie#n gestalten, ohne ihn inhaltlich zu verändern. Dies kann auch vor oder
+nach eventuellen Korrekturen erfolgen. Die Textkosmetik bietet zur Zeit vier Pro­
+gramme an, die je nach Bedarf eingesetzt werden können:
+
+--- #on("b")#'#ib#lineform'/'autoform#ie#'#off("b")# formatiert einen Text zeilenweise und vollzieht eine
+ Silbentrennung. Weiterhin erlaubt 'lineform'/'autoform' die Verwendung unter­
+ schiedlicher Schrifttypen und Schrifthöhen.
+
+--- #on("b")#'#ib#pageform#ie#'/'#ib#autopageform#ie#'#off("b")# gestattet die Formatierung eines Textes in Seiten
+ (drucktechnisch: "Seitenumbruch"). Dabei berücksichtigt 'pageform'/'auto­
+ pageform' unterschiedliche Schrifthöhen. Es ist mit 'pageform'/ 'autopage­
+ form' u.a. möglich, die Seiteneinteilung zu bestimmen, eine Seite in Spalten
+ zu formatieren ("Zeitungsformat"), Zeilen am Anfang bzw. Ende jeder Seite
+ einfügen zu lassen, eine Seitennumerierung (drucktechnisch: "Paginierung")
+ zu erhalten und Fußnoten zu gestalten.
+
+--- #on("b")#'#ib#index#ie#'#off("b")# erlaubt die Erstellung von Stichwort- und Inhaltsverzeichnissen aus
+ einer mit 'pageform'/'autopageform' bearbeiteten Datei.
+
+--- #on("b")#'#ib#outline#ie#'#off("b")# holt aus einer Datei alle mit Index-Anweisung gekennzeichneten
+ Überschriften und Stichworte. Es erstellt somit eine Übersicht bzw. Kurz­
+ fassung eines Textes.
+#free(1.5)#
+Drucken
+#free(1.0)#
+Zu jedem Zeitpunkt der Texterstellung kann gedruckt werden. Der EUMEL-Drucker
+beachtet die gleichen Anweisungen wie die Textkosmetik-Programme und noch
+einige zusätzliche, die nur für die Druckaufbereitung notwendig sind. Spezielle Druck­
+leistungen, wie z.B. verschiedenartige Schrifttypen, können nur auf besonderen
+Druckern erzeugt werden. Verfügt ein Drucker nicht über eine bestimmte Hardware-
+Eigenschaft, wird die von ihm geforderte Leistung ignoriert. Somit ist es möglich,
+Probedrucke für Korrekturen etc. auch auf preiswerten Druckern herzustellen. (siehe
+hierzu 5.6.1.)
+#page#
+
+ +-------------------------+
+ l Text-Eingabe l
+ l l
+ +->-+ Editor +->-+
+ l l l l
+ l l erstellt Datei l l
+ l +------------+------------+ l
+ l l l
+ l V l
+ l +------------+------------+ l
+ l l lineform l l
+ +-<-+ +->-+
+ l l formatiert Zeilen l l
+ l +------------+------------+ l
+ l l l
+ l V l
+ l +------------+------------+ l
+ l l outline l l +--------------------------+
+ l l l l l E U M E L - Drucker l
+ +-<-+ gibt Übersicht bzw. +->-+ ->--+ l
+ l l Kurzfassung eines Textesl l l Probe- bzw. l
+ l l l l l endgültiger Druck l
+ l l Dateiname + '.outline' l l +--------------------------+
+ l +------------+------------+ l
+ l l l
+ l V l
+ l +------------+------------+ l
+ l l pageform l l
+ l l l l
+ +-<-+ formatiert Seiten +->-+
+ l l l l
+ l l Druckdatei l l
+ l l Dateiname + ".p" l l
+ l +------------+------------+ l
+ l l l
+ l V l
+ l +------------+------------+ l
+ l l index l l
+ l l l l
+ l l erstellt Stichwort- und l l
+ +-<-+ Inhaltsverzeichnisse +->-+
+ l l
+ l Indexdatei(en) l
+ l Dateiname + "i<nummer>" l
+ +-------------------------+
+ #page#
+
+#ib(9)#5.1.1. Anweisungen für die Textkosmetik
+ und den Drucker#ie(9)#
+#free(1.0)#
+ #on("i")#
+ In diesem Abschnitt wird beschrieben, wie Sie #ib#Anweisungen#ie# für die Textkosme­
+ tik- und Druckprogramme in einen Text einfügen können. Beachten Sie, daß jede
+ Anweisung von '\#'-Zeichen eingeschlossen werden muß. Benötigen Sie das
+ '\#'-Zeichen in Ihrem Text, müssen Sie es mit 'ESC' schreiben.
+ #off("i")#
+#free(1.0)#
+Es gibt zwei Arten von Anweisungen:
+
+a) Anweisungen, die das gesamte Aussehen eines Manuskripts verändern (#on("i")##ib#"layout-
+ Anweisungen"#ie##off("i")#). Zu diesen Anweisungen gehören die Anweisungen \#limit (...)\#­
+ (Einstellen der Zeilenbreite), \#linefeed (...)\# (Zeilenabstand), \#page\# (neue Seite)
+ usw. Diese Anweisungen gelten erst ab der nächsten Zeile und Sie sollten sie
+ daher in eine extra Zeile zwischen den Text stellen.
+
+____________________________________________________________________________
+
+\#type ("trium8")\#\#limit (11.0)\#
+\#start(5.0,1.5)\#
+\#pagelength(17.4)\#\#pagenr("%",148)\#\#setcount(1)\#
+\#block\#\#pageblock\#
+\#count per page\#
+\#headeven\#
+\#lpos(0.0)\#\#cpos(5.5)\#\#rpos(11.0)\#
+\#table\#
+ EUMEL-Benutzerhandbuch
+\#fillchar(" ")\#
+\#on("u")\# \#off("u")\#
+\#table end\#\#clear pos\#
+
+\#end\#
+\#headodd\#
+\#lpos(0.0)\#\#cpos(5.5)\#\#rpos(11.0)\#\#fillchar(" ")\#
+\#table\#
+ Teil 5: Textkosmetik und Druck
+\#fillchar(" ")\#
+\#on("u")\# \#off("u")\#
+\#table end\#\#clear pos\#
+
+\#end\#
+
+____________________________________________________________________________
+
+
+ Das Druckbild (das Ergebnis der Anweisungen) sehen Sie im vorliegenden
+ Benutzerhandbuch.
+
+ Anweisungen, die für den Gesamttext gelten sollen, müssen Sie an den Anfang
+ der Datei stellen (noch vor \#head\#).
+
+b) Anweisungen, die unmittelbar auf den nachfolgenden Text wirken sollen, wie z.B.
+ \#type\# (Schrifttyp), \#on\#/\#off\# (Modifikationen wie unterstreichen oder fett druk­
+ ken), \#ib\#/\#ie\# (Markierung von Stichworten) usw. Solche Anweisungen werden
+ unmittelbar beachtet und können überall auf einer Zeile stehen (wie in dem fol­
+ genden Beispiel).
+
+____________________________________________________________________________
+
+ \#on("underline")\#Ausnahmen\#off("underline")\# werden bei der
+ Beschreibung der Anweisungen speziell erwähnt.
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+ #on("u")#Ausnahmen#off("u")# werden bei der
+ Beschreibung der Anweisungen speziell erwähnt.
+
+____________________________________________________________________________
+
+Weitere Beispiele für Textkosmetik-Anweisungen:
+
+____________________________________________________________________________
+
+\#page\#
+\#free(3.0)\#
+\#type("quadrato")\#
+
+____________________________________________________________________________
+
+
+Diese Anweisungen entsprechen - wie alle Kommandos im EUMEL-System - der
+ELAN-Syntax (u.a. müssen sie klein geschrieben werden; Parameter in runden
+Klammern; mehrere Parameter werden durch Kommata getrennt; #ib#TEXT-Parameter#ie# in
+Anführungsstrichen; #ib#REAL-Parameter#ie# mit Dezimalpunkt usw.). Leerzeichen spielen
+(außer in TEXT-Parametern) keine Rolle und können zur besseren Lesbarkeit belie­
+big verwendet werden.
+
+Die Zeichen, aus denen eine Anweisung besteht, werden bei der Formatierung einer
+Zeile oder Seite nicht mitgezählt und vom EUMEL-Drucker nicht gedruckt. Eine
+Zeile, die nur aus Anweisungen besteht, wird ebenso behandelt, auch wenn sie mit
+<CR> abgeschlossen wird.
+#page#
+#on("b")#
+
+#ib(9)#5.1.2. #ib#Aufruf der Textkosmetik-Programme#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ In diesem Abschnitt wird beschrieben, wie Sie die #ib#Textkosmetik-Programme
+ aktivieren#ie# können.
+ #off("i")#
+#free(1.0)#
+Sie rufen die Textkosmetik-Programme durch Kommandos auf (d.h. in der 'gib
+kommando'-Ebene). Sie geben ebenso wie zum Editieren den Namen des Pro­
+gramms und der Datei an.#goalpage("lineform")#
+
+____________________________________________________________________________
+
+ gib kommando:
+ lineform ("dateiname")
+
+____________________________________________________________________________
+
+
+ oder:
+ autoform ("dateiname")
+ pageform ("dateiname")
+ autopageform ("dateiname")
+ outline ("dateiname")
+#mark ("", "")#
+ index ("dateiname")
+
+
+
+
+'lineform'/'autoform' können Sie auch vom EUMEL-Editor aus aufrufen. Zu diesem
+Zweck markieren Sie den zu formatierenden Abschnitt der Datei und geben im
+Kommando-Zustand ( <ESC> <ESC> drücken) 'lineform' bzw. 'autoform' (ohne Para­
+meter).
+#mark ("", "")#
+
+Das Programm 'pageform'/'autopageform' erzeugt aus der Eingabedatei eine #ib#Druck­
+datei#ie#, die den Namen der angegebenen Eingabedatei mit dem Zusatz '.p' bekommt.
+
+____________________________________________________________________________
+
+ gib kommando:
+ pageform ("dateiname")
+
+____________________________________________________________________________
+
+
+Als Ergebnis erhalten Sie: "dateiname.p"
+
+
+
+
+Das Programm 'index' kann nur eine Druckdatei bearbeiten:
+
+____________________________________________________________________________
+
+ gib kommando:
+ index ("dateiname.p")
+
+____________________________________________________________________________
+
+
+und erstellt die angeforderten Verzeichnisse in Dateien, die mit dem Zusatz
+'.i<nummer>' gekennzeichnet werden.
+
+Beispiele: "dateiname.i1", "dateiname.i2" etc.
+
+
+
+
+'#ib#outline#ie#' erstellt ebenfalls eine neue Datei.
+
+____________________________________________________________________________
+
+ gib kommando:
+ outline ("dateiname")
+
+____________________________________________________________________________
+
+
+führt zu dem Ergebnis: "dateiname.outline" #mark ("", "")#
+#page#
+
+#ib(9)#5.1.3. Vorzeitiger #ib#Abbruch#ie# und
+ #ib#Fehlermeldungen#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Sie können alle Textkosmetik-Programme vorzeitig abbrechen. Eventuelle
+ Fehlermeldungen werden Ihnen in einem Fenster angezeigt.
+ #off("i")#
+#free(1.0)#
+Durch die #ib#<ESC>#ie(1,"-Abbruch")##ib##ie(1,"Abbruch mit ESC")#-Taste oder die #ib#<SV> #ie#-Taste und das Supervisor-Kommando 'halt'
+können Sie die Textkosmetik-Programme jederzeit vorzeitig abbrechen. Die Eingabe­
+datei steht Ihnen dann unverändert zur Verfügung. Ein #ib#vorzeitiger Abbruch#ie# kann
+notwendig sein, wenn Sie ein Programm mit einer falschen Datei aufgerufen haben
+oder zu viele Fehler gemeldet wurden.
+#mark ("", "")#
+
+Alle Textkosmetik-Programme melden Fehler, wenn Sie Anweisungen falsch be­
+nutzen. Die Fehlermeldungen werden auf dem Bildschirm angezeigt. Bei Beendigung
+eines Programms wird - falls Fehler entdeckt wurden - automatisch der #ib#Fenster-
+Editor#ie# aufgerufen, wobei die Fehlermeldungen im unteren #ib#Fenster#ie# (das ist das #ib#Notiz­
+buch#ie#) angezeigt werden, während Ihnen im oberen Fenster die Eingabedatei zur
+Korrektur angeboten wird.
+
+____________________________________________________________________________
+
+.......................dateiname.................Zeile 1
+
+ \#corner1("-5.0")\#\#on("i")\#
+ Sie können alle Textkosmetik-Programme vorzeitig abbrechen.
+ Eventuelle Fehlermeldungen werden Ihnen in einem Fenster ange­
+ zeigt.
+ \#box3("T","2","115.0")\#\#off("i")\#
+ #cursor(" ")#
+
+.......................notebook..................Zeile 1
+FEHLER Zeile 1: Unbekannte Anweisung (ignoriert): corner1("-5.0")
+ >>> Bitte Korrigieren
+FEHLER Zeile 5: Unbekannte Anweisung (ignoriert):
+ box3("T","2","115.0")
+ >>> Bitte Korrigieren
+
+____________________________________________________________________________
+
+
+
+
+
+Um von der Eingabedatei zum Notizbuch - und umgekehrt - zu wechseln, betätigen
+Sie <ESC> <w>.
+#page#
+
+#ib(9)#5.2. #ib#Lineform/Autoform#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Die Programme '#ib(1, "ff")#lineform#ie#' oder '#ib(1, "ff")#autoform#ie#' formatieren einen Text zeilenweise (ggf.
+ mit Silbentrennung) unter Berücksichtigung von Schrifttyp und Zeilenbreite.
+ #off("i")#
+#free(1.0)#
+Zur #ib#Zeilenformatierung#ie# werden Ihnen zwei Programme (Kommandos) angeboten, die
+sich nur in ihrem interaktiven Charakter unterscheiden (Behandlung von Silben­
+trennungen):
+
+---- #on("b")##ib#autoform#ie##off("b")#:
+ Zeilenformatierung mit automatischer #ib#Silbentrennung#ie#. Sie sollten 'autoform'
+ nur bei Texten einsetzen, in denen einige wenige Trennfehler nicht von
+ großer Bedeutung sind, z.B. bei Probedrucken.
+
+---- #on("b")##ib#lineform#ie##off("b")#:
+ Zeilenformatierung mit Silbentrennung "per Hand", wobei (nach deutschen
+ Trennregeln) ein sinnvoller Trennvorschlag gemacht wird. Die Trennstelle
+ kann interaktiv soweit verschoben werden, wie das zu trennende Wort noch
+ auf die Zeile paßt.
+
+
+'lineform'/'autoform' hat im wesentlichen vier Aufgaben:
+
+---- #ib#Auffüllen von Zeilen#ie#:
+ 'lineform'/'autoform' kann besonders gut nach Korrekturen eingesetzt wer­
+ den, bei denen - nach Einfügungen oder Löschungen - nicht vollständige
+ oder zu lange Zeilen in der Datei stehenbleiben können.
+
+---- Erstellen von Zeilen mit unterschiedlichen Schrifttypen:
+ Werden in einer Datei mehrere Schriftarten (\#type\#-Anweisung) verwendet,
+ berechnet 'lineform'/'autoform' nach der eingestellten Zeilenbreite die Anzahl
+ der Zeichen, die auf eine Zeile passen.
+
+---- Bearbeitung unterschiedlicher Zeilenbreiten:
+ Manchmal ist es notwendig, die Zeilenbreite zu verändern (\#limit\#-
+ Anweisung). Dies wird von 'autoform'/'lineform' berücksichtigt.
+
+---- Silbentrennung:
+ Automatische ('autoform') und interaktive Silbentrennung ('lineform').
+
+
+'lineform'/'autoform' akzeptiert als Eingabe eine Datei und verändert diese. Dafür wird
+eine (interne) Zwischendatei benötigt. Deshalb müssen Sie darauf achten, daß noch
+ausreichend Platz auf dem System ist, der jedoch nur zwischenzeitlich für den Forma­
+tierungsschritt benötigt wird.
+
+'lineform' und auch 'pageform' sind auf den ersten Schrifttyp der Fonttabelle, auf eine
+Zeilenbreite von 16.0 und eine Seitenhöhe von 25.0 initialisiert. Sind die ersten An­
+weisungen, die das verändern könnten, fehlerhaft, so bleiben diese Werte (wie auch
+sonst bei ignorierten Anweisungen) erhalten.
+
+'lineform'/'autoform'fragt nach dem Kommando an, mit welchem #ib#Schrifttyp#ie# und mit
+welcher #ib#Zeilenbreite#ie# die Datei formatiert werden soll. Dabei erscheinen zuerst die
+voreingestellten Anweisungen. Beispiel:
+
+____________________________________________________________________________
+
+LINEFORM (für ... Zeilen): dateiname
+
+Bitte Schrifttyp: micro
+Zeilenbreite (in cm): 16.0
+
+
+____________________________________________________________________________
+
+
+
+Diese Anweisungen können Sie jetzt durch Ihre gewünschten Anweisungen ersetzen.
+Diese Informationen werden von 'autoform'/'lineform' in Form von \#limit\#- und
+\#type\#-Anweisungen in der Datei vermerkt, so daß die Anfragen bei weiteren
+Datei-Bearbeitungen entfallen.
+
+Bei Zeilen, die länger als die angegebene Zeilenbreite sind, werden diejenigen Worte,
+die über die Zeilenbreite hinausgehen, in die nächste Zeile umgebrochen. Kürzere
+Zeilen werden aus der nachfolgenden Zeile bis zur Zeilenbreite aufgefüllt. Worte
+werden jedoch nicht über Absatzgrenzen hinweg verschoben. Deshalb sollten Sie vor
+Anwendung von 'lineform'/'autoform' darauf achten, daß Absätze richtig markiert
+wurden. Fehlende Markierungen sollten Sie nachträglich einfügen ( <CR> am Ende
+einer Zeile), andernfalls werden Zeilen über Absatzgrenzen zusammengezogen. Dies
+ist besonders bei Tabellenzeilen unangenehm.
+
+#ib#Einrückungen#ie# (Leerzeichen am Anfang einer Zeile) werden von 'lineform'/'autoform'
+ebenfalls bei der Formatierung von Zeilen eingehalten.
+#page#
+
+#ib(9)#5.2.1. #ib#Zeilenweise formatieren#ie##ie(9)#
+#free(1.0)#
+#ib(9)#5.2.1.1. #ib#Interaktive Silbentrennung#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ 'lineform' trennt Silben interaktiv, d.h., es werden Ihnen von 'lineform' #ib#Trennungs­
+ vorschläge#ie# gemacht, die Sie bestätigen oder ablehnen können.
+ #off("i")#
+#free(1.0)#
+Paßt ein Wort nicht mehr ganz auf eine Zeile, dann wird es zur interaktiven Tren­
+nung angeboten. Bei der Trennung werden Anweisungen innerhalb des Wortes ent­
+sprechend berücksichtigt. Die Umgebung dieses Wortes wird zur Erleichterung des
+Trennvorgangs mit angezeigt. Das Trennzeichen erscheint an einer sinnvollen Stelle
+im zu trennenden Wort.
+
+____________________________________________________________________________
+
+ Text vor dem Trennwort; das
+ Trenn-wort steht mit diesem Text in dieser Zeile
+
+____________________________________________________________________________
+
+
+Der Teil des zu trennenden Wortes, der noch auf die Zeile passen würde, wird mar­
+kiert angezeigt. Sie können das Trennzeichen mit Hilfe der Positionierungstasten
+innerhalb des Trennbereichs verschieben. An der gewünschten Trennposition (der
+Wortteil, der noch auf die Zeile kommen soll, steht links vom Trennstrich) kann die
+<CR>-Taste betätigt werden. <CR> zeigt dem Programm 'lineform' an, daß an dieser
+Stelle die Trennung erfolgen soll. 'lineform' fügt an den ersten Teil des Wortes das
+"-"-Zeichen an und schreibt den abgetrennten Wortteil in die nächste Zeile.
+#page#
+Es stehen folgende #ib(1)#Operationen bei der interaktiven Trennung#ie# zur Verfügung:
+#lpos(0.0)# #bpos(4.0, 11.0)# #table#
+
+#on("b")#Taste Bedeutung#off("b")#
+
+<CR> Trennen.
+
+
+<<> Trennzeichen um ein Zeichen nach links verschieben.
+
+
+<>> Trennstelle um ein Zeichen nach rechts verschieben.
+
+
+<HOP> <<> Trennstelle vor das Wort setzen (das Wort wird an
+ dieser Position nicht getrennt).
+
+
+<HOP> <>> Trennstelle an das Ende der Markierung setzen.
+
+
+<BLANK> Trennzeichen wird von "-" auf " " umgeschaltet.
+ Dies kann verwendet werden, um Worte, die nicht
+ zusammengeschrieben werden sollen, beim Trenn­
+ vorgang in zwei Worte aufzuspalten.
+
+
+<-> Schaltet das Trennzeichen von Leerzeichen (" ")
+ wieder auf den Trennstrich ("-") um.
+
+
+<ESC> Abbruch von 'lineform'/'autoform'. Die zu bearbeitende
+ Datei steht unverändert zur Verfügung.
+
+#tableend##clearpos#
+#page#
+Zwei Besonderheiten sind bei der interaktiven Trennung noch zu beachten:
+
+ - Bei Worten mit Bindestrich wird die Trennstelle hinter dem Bindestrich als Leer­
+ zeichen angezeigt.
+
+ - Bei einer Trennposition zwischen den Zeichen "ck" wird das Zeichen "c" in ein
+ "k" umgewandelt.
+
+ Beispiel: Druk-ker
+
+Sofern es für die Zeilenformatierung notwendig ist, macht die Prozedur 'lineform'
+bereits erfolgte Trennungen rückgängig (das Trennzeichen wird entfernt und die
+Wortteile werden wieder zusammengefügt), wenn sich das getrennte Wort (etwa durch
+Korrekturen oder Veränderungen der Zeilenbreite) nicht mehr am Zeilenende befinden
+sollte.
+
+Wenn Sie nicht Ihren Gesamttext mit 'lineform' bearbeiten möchten, haben Sie die
+Möglichkeit, #ib#'lineform' auf einen Textausschnitt#ie# anzuwenden. Hierfür markieren Sie
+den gewünschten Bereich, drücken <ESC> <ESC> und geben im Editor das Kommando
+'lineform'. (siehe S. #topage("lineform")#)
+
+____________________________________________________________________________
+
+...................dateiname................... Zeile 30
+
+
+Wenn Sie nicht Ihren Gesamttext mit 'lineform' bearbeiten
+möchten/brauchen, haben Sie die Möglichkeit,
+'lineform' für einen
+Textausschnitt anzuwenden. Hierfür markieren Sie den gewünschten
+Bereich, drücken 'ESC' 'ESC' und
+geben das Kommando 'lineform'.
+
+
+gib kommando:lineform
+
+
+____________________________________________________________________________
+
+
+#page#
+
+#ib(9)#5.2.1.2. #ib#Automatische Silbentrennung#ie# mit
+ '#ib#autoform#ie#'#ie(9)#
+#free(1.0)#
+ #on("i")#
+ 'autoform' arbeitet wie 'lineform', nur werden die Silbentrennungen automatisch
+ vorgenommen.
+ #off("i")#
+#free(1.0)#
+Ist eine Silbentrennung bei der Formatierung notwendig, übernimmt 'autoform' diese
+automatisch. Die Trennungen werden in das #ib#Notizbuch#ie# eingetragen. Nach Beendigung
+der Formatierung wird die bearbeitete Datei und das Notizbuch zur Kontrolle der
+Silbentrennungen angezeigt. Die automatische Silbentrennung arbeitet mit einer hohen
+#ib#Trenngüte#ie#; allerdings nur für deutsche Texte. Trotzdem kann es vorkommen, daß
+einige Trennungen, insbesondere bei zusammengesetzten Worten, falsch vorgenom­
+men werden. In einem solchen Fall müssen Sie diese nachträglich mit dem Editor
+korrigieren. (vgl. Sie dazu auch 5.8.4.)
+#page#
+
+#ib(9)#5.2.2. #ib#Unterschiedliche Schriften#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ #ib#Unterschiedliche Schrifttypen#ie# (Schriftarten) können Sie mit der \#type ("schrift­
+ name")\#-Anweisung anfordern.
+ #off("i")#
+#free(1.0)#
+Sie haben die Möglichkeit, mit 'lineform' verschiedenartige #ib#Schrifttypen#ie(1, ", unterschiedliche")# (kurz Typen
+genannt) verarbeiten zu lassen. Jede Type hat eine bestimmte Höhe und jedes Zei­
+chen hat eine bestimmte Breite. Alle Typen werden auf einer Grundlinie gedruckt.
+
+Es gibt zwei Arten von Schriften:
+bei#on("b")# #ib#äquidistanten Schriften#ie##off("b")# sind alle Zeichen gleich breit (wie bei einer Schreib­
+maschine).#on("b")# #ib#Proportionalschrift#ie##off("b")# findet man in gedruckten Büchern. Hier haben unter­
+schiedliche Zeichen auch unterschiedliche Breiten. Die Zeichen ".", "i", "!" sind z.B.
+schmaler als die Zeichen "w", "o", "m" usw.
+
+Mit der Anweisung:
+
+____________________________________________________________________________
+
+ \#type ("schriftname")\#
+
+____________________________________________________________________________
+
+
+kann auf einen anderen Schrifttyp umgeschaltet werden (auch mehrmals innerhalb
+einer Zeile). Diese Type gilt solange, bis wieder eine neue \#type ("schriftname")\#-
+Anweisung gegeben wird.
+
+____________________________________________________________________________
+
+
+ \#type ("micro")\#Jetzt schreiben wir mit einem
+ Schrifttyp, der 'micro' heißt. Und jetzt
+ \#type ("modern15")\#schalten wir auf eine an­
+ dere Schriftart um. Nun \#type ("modern12")\#
+ möchten wir mit einer größeren Type schrei­
+ ben. Um wieder zu unserem gewohnten Schrift­
+ typ zu gelangen, schalten wir auf \#type
+ ("trium8")\# zurück.
+
+
+____________________________________________________________________________
+
+
+Druckbild (ohne 'lineform'):
+
+
+Jetzt schreiben wir mit einem
+Schrifttyp, der 'micro' heißt. Und jetzt
+schalten wir auf eine an­
+dere Schriftart um. Nun
+möchten wir mit einer größeren Type schrei­
+ben. Um wieder zu unserem gewohnten Schrift­
+typ zu gelangen, schalten wir auf
+\#type ("trium8")\# zurück.
+
+
+
+Welche Schriftarten Ihnen zur Verfügung stehen, hängt natürlich von dem verfügbaren
+Drucker ab. Sie können die vorhandenen Schrifttypen mit dem Kommando 'list fonts'
+erfragen.
+
+Schrifttypen können modifiziert, d.h. verändert, gedruckt werden (vergl. Sie dazu den
+nächsten Abschnitt). Durch die Angabe einer \#type ("schriftname")\#-Anweisung
+werden alle Modifikationen ausgeschaltet.
+#page#
+#goalpage("on")##goalpage("off")#
+
+#ib(9)#5.2.3. #ib#Veränderung des Schrifttyps#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#on ("..."\#-#ie(1,"Anweisung")# und #ib#\#off ("...")\#-Anweisung#ie# können Sie einen Schrifttyp in
+ seinem Aussehen verändern. Die Schrift wird zwar nicht gewechselt, aber ver­
+ ändert gedruckt. Zur Zeit ist #ib##ie(1,"Unterstreichung")##ib# unterstrichen#ie#, #ib#fett#ie#, #ib#kursiv#ie# und der Druck von#ib# weiß auf
+ schwarz #ie#möglich (abhängig vom eingesetzten Drucker).
+ #off("i")#
+#free(0.7)#
+Die \#on\#/\#off\#-Anweisung wirkt wie ein Schalter, der die gewünschte #ib#Schrifttyp-
+Modifikation#ie# ein- bzw. ausschaltet. Die Anweisung \#on\# schaltet die Modifikation ein,
+\#off\# schaltet sie aus.
+
+____________________________________________________________________________
+
+ Das EUMEL-System ermöglicht es Ihnen,
+
+ \#on ("italic")\#kursiv\#off ("italic")\#
+ \#on ("i")\# \#off ("i")\#
+
+ und
+
+ \#on ("underline")\#unterstrichen\#off ("underline")\#
+ \#on ("u")\# \#off ("u")\#
+
+ und
+
+ \#on ("bold")\#fett\#off ("bold")\#
+ \#on ("b")\# \#off ("b")\#
+
+ und
+
+ \#on ("reverse")\#invers (weiß auf schwarz)\#off ("reverse")\#
+ \#on ("r")\# \#off ("r")\#
+
+ zu schreiben
+
+____________________________________________________________________________
+#page#
+Druckbild:
+
+
+ Das EUMEL-System ermöglicht es Ihnen,
+
+ #on("i")#kursiv#off("i")#
+
+ und
+
+ #on("underline")#unterstrichen#off("underline")#
+
+ und
+
+ #on("b")#fett#off("b")#
+
+ und
+
+ #on("reverse")#invers (weiß auf schwarz)#off("reverse")#
+
+ zu schreiben.
+
+
+
+Dabei sollten Sie folgendes beachten:
+
+a) Ein \#type\#-Anweisung schaltet immer eine vorausgehende Modifikation aus, d.h.
+ ein Schrifttypwechsel macht eventuelle \#off ("b")\#-, \#off ("u")\#-, \#off ("i")\#-
+ und \#off ("r")\#-Anweisungen überflüssig.
+
+b) 'lineform'/'autoform' erzeugt eine Warnung, falls Sie vergessen haben, eine Modi­
+ fikation auszuschalten.
+
+c) Nicht alle Drucker können die hier angegebenen Modifikationen auch drucken.
+ Welche Modifikationen gleichzeitig eingeschaltet werden können, ist ebenfalls
+ druckerabhängig.
+#page#
+
+#ib(9)#5.2.4. #ib#Gesperrt schreiben#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Die Silbentrennung an einem Leerzeichen verhindert man durch Verwendung des
+ geschützten Leerzeichens 'ESC' und 'Leertaste'.
+ #off("i")#
+#free(1.0)#
+Möchten Sie ein Wort g e s p e r r t schreiben, muß natürlich verhindert werden, daß
+dieses Wort beim Formatieren getrennt wird. Andere Worte, wie z.B. in Formeln,
+sollten ebenfalls zusammen auf eine Zeile geschrieben werden (z.B. 'sin (x)'). Dies
+können Sie erreichen, indem Sie nicht das Leerzeichen zwischen die Zeichen schrei­
+ben, denn das Leerzeichen bedeutet für 'autoform'/'lineform' immer das Ende eines
+Wortes. Stattdessen verwenden Sie <ESC> <Leertaste>. Das geschützte Leerzeichen
+erscheint auf dem Bildschirm zur besseren Identifizierung invers dargestellt bzw. als
+ein anderes Zeichen (abhängig von Ihrem Gerät). Beim Drucken wird jedoch wieder
+ein Leerzeichen produziert.
+
+
+
+____________________________________________________________________________
+
+ g e s p e r r t
+
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+ g e s p e r r t
+
+
+
+#page#
+#goalpage("limit")#
+
+#ib(9)#5.2.5. #ib#Zeilenbreite einstellen#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#limit\#-Anweisung#ie# können Sie die Zeilenbreite einstellen.
+ #off("i")#
+#free(1.0)#
+Die \#limit\#-Anweisung gibt in cm an, wie breit die Zeile sein soll. Beachten Sie, daß
+diese Anweisung nichts mit dem Editor-Kommando 'limit' zu tun hat. Dieses gibt an,
+wie viele Zeichen eine Bildschirmzeile lang sein soll.
+
+Die Zeilenbreite wird zusammen mit dem Schrifttyp beim erstmaligen Aufruf von
+'autoform'/'lineform' interaktiv erfragt und als \#limit\#-Anweisung (zusammen mit der
+\#type\#-Anweisung) in die erste Zeile der Datei eingetragen. Sie kann in einer Datei
+mehrmals verändert werden.
+
+Die neue Zeilenbreite gilt immer ab der #on("b")#nächsten#off("b")# Zeile, die der \#limit\#-Anweisung
+folgt. Beachten Sie, daß Sie als Parameter in der \#limit\#-Anweisung eine Zahl mit
+Dezimalpunkt und Nachkommastelle angeben müssen.
+
+____________________________________________________________________________
+
+
+\#limit(9.0)\#
+ Mit der \#limit\#-Anweisung können Sie Para­
+ graphen in einem anderen Format leicht gestal­
+ ten. Die rechte Schreibgrenze wird durch die
+ \#limit\#-Anweisung eingestellt, wobei Sie den
+ linken Rand durch eine entsprechende Ein­
+ rückung gestalten können.
+\#limit(11.0)\#
+
+____________________________________________________________________________
+
+
+Druckbild (mit 'lineform' bearbeitet):
+
+
+ Mit der \#limit\#-Anweisung können Sie Paragraphen in einem
+ anderen Format leicht gestalten. Die rechte Schreibgrenze
+ wird durch die \#limit\#-Anweisung eingestellt, wobei Sie den
+ linken Rand durch eine entsprechende Einrückung gestalten
+ können.
+
+
+
+Die folgende Tabelle gibt sinnvolle #ib#'limit'-Einstellungen#ie# für die am häufigsten ver­
+wendeten Papiergrößen an:
+
+
+ #on("b")#Format 'limit' Verbleibender
+ (Zeilenbreite) Rand#off("b")#
+
+ DIN A4 16.0 cm je 2.50 cm
+
+ DIN A5 12.0 cm je 1.42 cm
+
+ DIN A4 quer 25.0 cm je 2.35 cm
+#page#
+#goalpage("einfache Tabellen")#
+
+#ib(9)#5.2.6. Einfache #ib#Tabellen#ie(1,", einfache")# und #ib#Aufzählungen#ie#
+ schreiben#ie(9)#
+#free(1.0)#
+ #on("i")#
+ Aufzählungen und einfache #ib#Tabellen#ie(1, ", einfache")# werden automatisch richtig formatiert und
+ gedruckt, wenn Sie sich an einige einfache Regeln halten.
+ #off("i")#
+#free(1.0)#
+Verwenden Sie eine #ib#Proportionalschrift#ie# beim Tabellenschreiben, so sind die Spalten in
+der Regel unterschiedlich breit, selbst wenn Sie eine gleiche Anzahl Zeichen in jeder
+Spalte schreiben. Dies können Sie durch das Schreiben von einem "#ib#Doppelblank#ie#"
+("#ib#Mehrfachblank#ie#") vermeiden; für kompliziertere Tabellen gibt es spezielle Tabellen­
+anweisungen. (siehe auch S. #topage("tabellenanw")#)
+
+____________________________________________________________________________
+
+ iiii ooooo
+ mmmm lllll
+
+____________________________________________________________________________
+
+
+
+Druckbild:
+
+
+ iiii ooooo
+ mmmm lllll
+
+Erste und zweite Spalte stehen nicht untereinander.
+
+
+Aber mit Doppelblanks:
+
+____________________________________________________________________________
+
+ iiii ooooo
+ mmmm lllll
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+
+ iiii ooooo
+ mmmm lllll
+
+Erste und zweite Spalte stehen jetzt untereinander.
+
+Das Doppelblank dient 'lineform'/'autoform' und dem Drucker als Zeichen, daß die
+Positionen speziell berechnet und beim Druck berücksichtigt werden müssen. Das gilt
+nur nach einer Absatzzeile. In seltenen Fällen (insbesondere beim Einsatz von Schrift­
+typen, die in der Größe stark voneinander abweichen) kann es vorkommen, daß diese
+Tabellenautomatik nicht funktioniert und Spalten übereinander gedruckt werden. In
+solchen Fällen müssen Sie die Anzahl der trennenden Doppelblanks erhöhen.
+
+#on("b")##on("is")#Praktischer Tip:#off("is")##off("b")#
+Beachten Sie, daß es für das Funktionieren der "#ib#Tabellenautomatik#ie#" erforderlich ist,
+daß jede Tabellenzeile eine Absatzzeile ist. Man sollte diese Zeilen vor dem Druck
+daraufhin überprüfen oder durch 'lineform'/'autoform' die Datei bearbeiten lassen.
+Sollten durch die zeilenweise Formatierung einmal wegen fehlender Absatzkennzeich­
+nung zwei Zeilen zusammengezogen sein, können Sie diese leicht mit dem Editor
+wieder "auseinanderbrechen" ( <HOP> <RUBIN> , <CR> und <HOP> <RUBIN> ).
+
+
+Ähnliches gilt bei Aufzählungen.
+
+____________________________________________________________________________
+
+ 1) Das ist die erste Aufzählung.
+ Dieser Satz wird bündig gedruckt.
+ 2) Hier auch.
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+
+ 1) Das ist die erste Aufzählung.
+ Dieser Satz wird bündig gedruckt.
+ 2) Hier auch.
+
+
+Auch in solchen Fällen wird der gedruckte Text in der Regel richtig eingerückt. Die
+#ib#Tabellenautomatik#ie# wirkt nur nach einem Absatz. Hier aber ein Beispiel für eine
+typische Fehlersituation:
+
+____________________________________________________________________________
+
+ \#type("normal")\#
+ 1. Aufzählung
+ 2. Aufzählung
+ 3. Aufzählung
+
+ \#type("fett")\#M1. Aufzählung
+
+____________________________________________________________________________
+
+
+Die Einrückbreite wird durch den Schrifttyp bestimmt, der vor der Zeile herrscht, und
+den ganzen Absatz über beibehalten.
+
+
+Druckbild:
+
+
+ 1. Aufzählung
+ 2. Aufzählung
+ 3. Aufzählung
+
+ M1. Aufzählung
+
+
+Das Blank zwischen 'M1.' und 'Aufzählung' reicht nicht aus, um eine Überschreibung
+zu verhindern. Diesen Fehler können Sie umgehen, indem Sie die \#type\#-Anweisung
+in eine gesonderte Zeile stellen. Richtig wäre folgendes (gewünschter Schrifttyp vor
+die Zeile!):
+
+____________________________________________________________________________
+
+ \#type("trium8")\#
+ 1. Aufzählung
+ 2. Aufzählung
+ 3. Aufzählung
+
+ \#type("triumb14")\#
+ M1. Aufzählung
+
+____________________________________________________________________________
+
+
+
+Druckbild:
+
+
+ 1. Aufzählung
+ 2. Aufzählung
+ 3. Aufzählung
+
+
+ M1. Aufzählung
+
+
+Die genauen Regeln sind etwas kompliziert, so daß sie hier nicht einzeln aufgeführt
+werden (siehe S. 5-89#topage("block")# unter der Anweisung \#block\#). Treffen Sie auf einen der
+seltenen Fälle, wo die Tabellenautomatik nicht funktioniert, können Sie immer noch
+Tabellen-Anweisungen verwenden.
+#mark ("", "")#
+#page#
+
+#goalpage("tabellenanw")#
+#ib(9)#5.2.6.1. #ib#Tabellenanweisungen#ie##ie(9)#
+#free(1.0)#
+ Mit den Tabellenanweisungen der Textkosmetik können Sie auf einfache Art Tabel­
+ len auch mit Porportionalschriften gestalten.
+#free(1.0)#
+Es ist sehr einfach, eine Tabelle in einer äquidistanten Schrift zu schreiben, denn
+hierbei stimmt das Schriftbild auf dem Terminal weitgehend mit dem späteren Druck
+überein. Bei einer äquidistanten Schrift ist jedes Zeichen gleich breit - Sie können
+also "sehen", an welcher Zeilenposition eine neue Spalte beginnt.
+
+Etwas schwieriger sind Tabellen mit Proportionalschriften, da hier jedes Zeichen eine
+unterschiedliche Breite hat. Sie können somit einer Spaltenbreite nicht direkt "an­
+sehen", wie breit sie beim Druck wirklich wird. "Einfache" Tabellen können Sie mit
+dem Mehrfachblank gestalten (siehe S. 5-27). Bei komplizierteren Tabellen müssen
+Sie die folgenden Tabellenanweisungen benutzen.
+
+Um eine Tabelle zu gestalten, gehen Sie folgendermaßen vor:
+
+- Definieren Sie die Spaltenpositionen der Tabelle mit den folgenden Anweisungen.
+ Für die Punkte bei den Anweisungen müssen Sie entsprechende Parameter
+ einsetzen.
+
+#goalpage("lpos")##goalpage("rpos")##goalpage("cpos")##goalpage("dpos")##goalpage("bpos")#
+#goalpage("fillchar")#
+____________________________________________________________________________
+
+ #ib#\#l pos#ie(1,"-Anweisung")# (...)\# (* linksbündig *)
+ #ib#\#r pos#ie(1,"-Anweisung")# (...)\# (* rechtsbündig *)
+ #ib#\#c pos#ie(1,"-Anweisung")# (...)\# (* zentrierend *)
+ #ib#\#d pos#ie(1,"-Anweisung")# (..., ...)\# (* zentrierend um eine Zeichenkette *)
+ #ib#\#b pos#ie(1,"-Anweisung")# (..., ...)\# (* Blocksatz in einer Spalte *)
+ #ib#\#fillchar#ie(1,"-Anweisung")# (...)\# (* Füllzeichen zwischen Spalten *)
+
+____________________________________________________________________________
+
+
+ Die Zentrierung um eine Zeichenkette ist wie folgt zu verstehen: Die Spalte wird
+ bis zum Anfang der angegebenen Zeichenkette rechtsbündig und ab der Zeichen­
+ kette linksbündig geschrieben.
+
+#goalpage("table")#
+- Schreiben Sie dann die Tabelle. Sie muß von den Anweisungen
+
+____________________________________________________________________________
+
+ #ib#\#table\##ie(1,"-Anweisung")#
+
+
+ #ib#\#table end\##ie(1,"-Anweisung")#
+
+____________________________________________________________________________
+
+
+ eingefaßt werden. Die Spalten in der Tabelle müssen Sie durch mindestens zwei
+ Leerzeichen voneinander trennen. Es müssen alle Spalten in einer Tabelle vor­
+ handen sein. Soll einmal eine Spalte leer bleiben, müssen Sie für diese Spalte ein
+ #ib#geschütztes Leerzeichen#ie# verwenden.
+
+- Da die Spaltenpositionen erhalten bleiben (auch über die Anweisung \#table end\#
+ hinweg), sollten Sie direkt hinter dem Tabellenende die #ib#\#clear pos\#-Anweisung#ie#
+ geben.
+
+- Dann können Sie 'lineform'/'autoform' vornehmen.
+
+____________________________________________________________________________
+
+
+ \#r pos (2.2)\#\#c pos (3.8)\#\#l pos (5.8)\#\#d pos (8.8, ".")\#
+ \#table\#
+ erste Spalte zweite Spalte dritte Spalte vierte Spalte
+ rechtsbündig zentriert linksbündig dezi.mal
+ 1234 1234 1234 12.34
+ 12345 12345 12345 123.45
+ 123456 123456 123456 1234.56
+ \#table end\# \#clear pos\#
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+
+ #r pos (2.2)##c pos (3.8)##l pos (5.8)##d pos (8.8, ".")#
+ #table#
+ erste Spalte zweite Spalte dritte Spalte vierte. Spalte
+ rechtsbündig zentriert linksbündig dezi.mal
+ 1234 1234 1234 12.34
+ 12345 12345 12345 123.45
+ 123456 123456 123456 1234.56
+ #table end##clear pos#
+
+
+
+Solche Tabellen können Sie in \#head\#, \#bottom\# oder innerhalb von Fußnoten schrei­
+ben. Es ist jedoch nicht möglich, eine Fußnote innerhalb dieser Tabelle zu definieren.
+Ausweg: Tabelle um die Fußnote aufspalten.
+#page#
+
+#ib(9)#5.2.6.2. Einstellen der #ib#Tabellenpositionen#ie (1, ", Einstellen von")##ie(9)#
+#free(0.7)#
+ #on("i")#
+ Mit den \#pos\#-Anweisungen können Sie eine bestimmte Position innerhalb der
+ Tabelle einstellen, zugleich aber auch bestimmen, wie die Spalte gedruckt werden
+ soll. #off("i")#
+
+#free(0.7)#
+____________________________________________________________________________
+
+ \#l pos (5.0)\#\#r pos (10.0)\#\#d pos (15.0, ".")\#
+
+____________________________________________________________________________
+
+
+Die Anweisung oben stellt die erste Spalte der Tabelle auf 5 cm vom Rand ein (links­
+bündig). Die zweite Spalte endet 10 cm vom Rand, wobei diese Spalte rechtsbündig
+geschrieben werden soll. Die dritte wird an die Position 15, zentriert um den Dezimal­
+punkt, gedruckt#u##count#)#e#.#foot#
+#u##value#)#e# Spaltenposition < 0.0 und Spaltenposition > 'eingestelltes limit' sind nicht
+ erlaubt.
+#end#
+
+Beachten Sie, daß ein "Überlappen" von Spalten erfolgen kann (in unserem Beispiel
+kann die erste Spalte in die zweite hineinschreiben). 'lineform' bzw. 'autoform' meldet
+bei Spalten-Überschreibungen einen entsprechenden Fehler.
+
+Für jede Spaltenposition nehmen Sie ein Element einer Zeile. Die Elemente müssen
+Sie beim Schreiben im Editor durch mindestens zwei Leerzeichen voneinander tren­
+nen. Auf die erste Spaltenposition wird das erste Element gedruckt, auf die zweite
+Position das zweite Element usw. Für das Drucken der Spalten wird der eingeschal­
+tete Schrifttyp mit möglicherweise einer Modifikation genommen. Der Schrifttyp und
+die Modifikation können innerhalb der Tabelle geändert werden#u##count#)#e#.#foot#
+#u##value#)#e# Die Zwischenräume zwischen den Spalten werden nicht modifiziert (also z.B.
+ nicht unterstrichen).
+#end#
+
+Beachten Sie, daß die Tabellenpositionen so lange erhalten bleiben, bis sie explizit
+gelöscht werden (\#clear pos\#-Anweisung, siehe S. 5-38).
+#page#
+
+#ib(9)#5.2.6.3. #ib#Blocksatz innerhalb einer Spalte#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Für Blocksatz innerhalb einer Spalte verwenden Sie die \#b pos (...)\#-Anweisung.
+ #off("i")#
+#free(1.0)#
+____________________________________________________________________________
+
+\#l pos (0.0)\#\#b pos (2.2, 8.0)\#\#l pos (9.0)\#
+\#table\#
+1. Spalte Die mittlere Spalte wird bis zur Druck­ 3. Spalte
+1. Spalte position '8.0' in Blocksatz gedruckt. Um 3. Spalte
+1. Spalte in dieser Spalte einen Absatz zu bekom­ 3. Spalte
+1. Spalte men, muß ein geschütztes Leerzeichen am 3. Spalte
+1. Spalte Ende der Spalte stehen. #cursor(" ")# 3. Spalte
+\#table end\# \#clear pos\#
+
+____________________________________________________________________________
+
+
+
+Druckbild:
+
+#l pos (0.0)##b pos (2.2, 8.0)##l pos (9.0)#
+#table#
+1. Spalte Die mittlere Spalte wird bis zur Druck­ 3. Spalte
+1. Spalte position '8.0' in Blocksatz gedruckt. Um 3. Spalte
+1. Spalte in dieser Spalte einen Absatz zu bekom­ 3. Spalte
+1. Spalte men, muß ein geschütztes Leerzeichen am 3. Spalte
+1. Spalte Ende der Spalte stehen. 3. Spalte
+#table end##clear pos#
+#page#
+
+#ib(9)#5.2.6.4. #ib#Tabellenspalten auffüllen#ie# (#ib#Füllzeichen#ie#)#ie(9)#
+#free(1.0)#
+ #on("i")#
+ Mit der \#fillchar\#-Anweisung können Sie Spaltenzwischenräume füllen.
+ #off("i")#
+#free(1.0)#
+Angenommen, Sie möchten eine Rechnung erstellen. Die Warenposten sollen links­
+bündig an der Druckposition '0.0' und die Beträge rechtsbündig an der Position '9.0'
+gedruckt werden. Zwischen einem Warenposten und dem dazugehörigen Betrag sollen
+entsprechend viele Punkte ('.') gedruckt werden. Das folgende Druckbild:
+
+#l pos (0.0)##r pos (9.0)##fillchar(".")#
+#table#
+30 Benutzerhandbücher 450,-DM
+10 Systemhandbücher 150,-DM
+
+#table end##clear pos#
+
+wird mit
+
+____________________________________________________________________________
+
+ \#l pos (0.0)\#\#r pos (9.0)\#\#fillchar(".")\#
+ \#table\#
+ 30 Benutzerhandbücher 450,-DM
+ 10 Systemhandbücher 150,-DM
+
+ \#table end\#\#clear pos\#
+
+____________________________________________________________________________
+
+
+erreicht. Mit der Anweisung \##ib#fillchar#ie#\# stellen Sie das/die #ib#Füllzeichen#ie# ein. Somit wer­
+den entsprechend viele Füllzeichen (anstatt der Leerzeichen) von dem Textende einer
+Spalte bis zu dem Textanfang der nächsten Spalte gedruckt. Die Füllzeichen bleiben
+so lange eingestellt, bis erneut die Anweisung \#fillchar\# gegeben wird. Insbesondere
+bleibt das Füllzeichen - genauso wie auch die eingestellten Spaltenpositionen -
+über das Tabellenende erhalten. Die Anweisung \#clear pos\# löscht - zusätzlich zu
+den Tabellenpositionen - auch das eingestellte Füllzeichen (setzt das Zeichen auf ' '
+zurück).
+
+Beachten Sie, daß die Füllzeichen direkt gedruckt werden (also ohne Leerzeichen
+zwischen dem Spaltentext und den Füllzeichen). Möchten Sie einen Zwischenraum
+zwischen dem Spaltentext und den Füllzeichen haben, dann fügen Sie ein geschütz­
+tes Leerzeichen an den Spaltentext an oder setzen eins vor die nachfolgende Spalte.
+
+Die Anweisung \#fillchar\# gilt für Zwischenräume zwischen allen Spalten. Soll nur #on("i")#ein#off("i")#
+Spaltenzwischenraum ausgefüllt werden, müssen Sie die \#fillchar\#-Anweisung in der
+Tabelle entsprechend geben.
+
+____________________________________________________________________________
+
+ \#l pos (1.0)\#\#r pos (5.0)\#\#r pos (10.0)\#
+ \#table\#
+ 1\#fillchar(".")\# 3\#fillchar(" ")\# 4
+ 2\#fillchar(".")\# 17\#fillchar(" ")\# 6
+ \#table end\#
+
+____________________________________________________________________________
+
+
+
+Druckbild:
+
+#l pos (1.0)##r pos (5.0)##r pos(10.0)#
+#table#
+1#fillchar(".")# 3#fillchar(" ")# 4
+2#fillchar(".")# 17#fillchar(" ")# 6
+#tableend##clear pos#
+
+
+
+
+Eingeschaltete Modifikationen gelten in diesem Fall auch für die Spaltenzwischen­
+räume.
+#page#
+
+#ib(9)#5.2.6.5. #ib#Tabellenpositionen löschen#ie##ie(9)#
+#goalpage("clearpos")#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#clear pos\#-Anweisung#ie# löschen Sie alle eingestellten Positionen.
+ #off("i")#
+#free(1.0)#
+Sollen gänzlich neue Positionen eingestellt werden, benutzen Sie die Anweisung
+
+
+____________________________________________________________________________
+
+ \##ib#clear pos#ie(1,"-Anweisung")#\#
+
+____________________________________________________________________________
+
+
+
+ohne Parameter. Sie löscht alle eingestellten Tabellenpositionen. Beachten Sie, daß
+\#clear pos\# auch das Füllzeichen für die \#fillchar\#-Anweisung löscht (es wird wieder
+ein ' ' voreingestellt). Eine einzelne Tabellenposition können Sie z.B. mit
+
+
+____________________________________________________________________________
+
+ \#clear pos (10.0)\#
+
+____________________________________________________________________________
+
+
+löschen.
+#mark ("","")#
+#page#
+
+#goalpage("u")##goalpage("d")#
+#ib(9)#5.2.7. #ib#Indizes#ie# und #ib#Exponenten#ie##ie(9)#
+
+#free(1.0)#
+ #on("i")#
+ Mit den Anweisungen #ib#\#u\##ie(1, "-Anweisung")#, #ib#\#d\##ie(1,"-Anweisung")# und #ib#\#e\##ie(1,"-Anweisung")# können Sie Exponenten und Indizes
+ schreiben.
+ #off("i")#
+#free(1.0)#
+Die Anweisung \#u\# (steht für 'up') schaltet auf eine Exponenten-Schreibweise um
+und zwar so lange, bis die Anweisung \#e\# (steht für 'end') angetroffen wird. Dabei
+wird automatisch auf den nächst kleineren Schrifttyp umgeschaltet (sofern vorhanden).
+
+____________________________________________________________________________
+
+ a\#u\#i,k\#e\#
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+ a#u#i,k#e#
+
+
+
+Die \#d\#-Anweisung ('d' steht für 'down') ist für Indizes gedacht und arbeitet analog
+zur \#u\#-Anweisung.
+
+____________________________________________________________________________
+
+ a\#d\#i,k\#e\#
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+ a#d#i,k#e#
+
+
+Die automatische Umschaltung auf den nächst kleineren Schrifttyp erfolgt nur, wenn
+in der #ib#Fonttabelle#ie# ein nächst kleinerer Schrifttyp angegeben ist. Sonst wird der ein­
+gestellte Schrifttyp für den Exponenten beibehalten.
+
+Nach der \#e\#-Anweisung wird automatisch wieder der Schrifttyp eingestellt, der vor
+der zugehörigen \#u\#-Anweisung galt. Die \#u\#- und \#e\#-Anweisungen bilden also
+Klammern. Innerhalb einer Anweisung kann jede beliebige, sinnvolle Textkosmetik-
+Anweisung stehen. Beachten Sie, daß Anweisungen innerhalb einer Klammer die
+Zeilenhöhe nicht verändern sollen. Wenn Sie beispielsweise eine \#type\#-Anweisung
+in eine Klammer schreiben, wird zwar der Index/Exponent in diesem Schrifttyp ge­
+druckt, aber der Drucker geht davon aus, daß die Zeilenhöhe nicht überschritten wird.
+Deshalb ist es angeraten, nur einen kleineren Schrifttyp innerhalb eines Index/Expo­
+nenten zu verwenden. Wie bereits erwähnt, wird auch in diesem Beispiel nach dem
+Klammerende auf den vorher eingestellten Schrifttyp zurückgestellt.
+
+Die Index/Exponenten-Klammern können auch geschachtelt werden.
+
+____________________________________________________________________________
+
+ a\#u\#um 1 hoch\#u\#noch 1 hoch\#e\#um 1 zurück\#e\# Grundlinie
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+ a#u#um 1 hoch#u#noch 1 hoch#e#um 1 zurück#e# Grundlinie
+
+
+
+Es gelten folgende #on("b")#Einschränkungen#off("b")#:
+
+1. Ein Exponent (Index) wird so positioniert, daß es in der Regel keine Überschrei­
+ bung mit der vorhergehenden (nachfolgenden) Zeile gibt.
+
+2. Bei mehrfachen Exponenten oder Indizes oder bei Umschaltung auf einen anderen
+ Schrifttyp innerhalb eines Exponenten (Index) oder wenn nicht auf einen kleineren
+ Schrifttyp umgeschaltet werden kann, besteht die Möglichkeit, daß der Exponent
+ oder Index über die "normale" Zeile hinausragt. In diesem Fall kann es Über­
+ schreibungen geben, die Sie mit der #ib#\#linefeed\#-Anweisung#ie# ausgleichen können.
+
+3. Eine Exponenten- oder Index-Klammer muß als Ganzes auf einer Zeile stehen.
+
+4. Gleichzeitige Exponenten- und Index-Ausdrücke, die übereinander stehen
+ sollen, sind zur Zeit mit den \#u\#/\#d\#-Anweisungen nicht möglich. Jedoch funk­
+ tioniert folgendes:
+
+
+____________________________________________________________________________
+
+ a\#u\#Exponent\#d\#Index des Exponenten\#e\#\#e\#
+
+____________________________________________________________________________
+
+
+
+ Druckbild:
+
+ a#u#Exponent#d#Index des Exponenten#e##e#
+
+
+
+5. Doppelblanks spielen innerhalb einer solchen Klammer keine Rolle, wirken also
+ wie zwei "normale" Leerzeichen und nicht als implizite Positionierung. Innerhalb
+ einer solchen Klammer werden Blanks, sofern die Anweisung \#block\# gegeben
+ wurde, nicht verbreitert.
+
+6. Indizes oder Exponenten sollten nicht mit den Modifikationen \#underline\# und/oder
+ \#reverse\# zusammen verwendet werden, da z.B. ein Unterstreichen von Indizes
+ und Exponenten innerhalb einer unterstrichenen Zeile zu einem solchen Ergebnis
+ führt:
+
+
+ Druckbild:
+
+ #on("u")#Indizes und Exponenten a#d#i,k#e# a#u#i,k#e# sollten nicht unterstrichen werden!#off("u")#
+#page#
+
diff --git a/doc/user/benutzerhandbuch.5b b/doc/user/benutzerhandbuch.5b
new file mode 100644
index 0000000..748e398
--- /dev/null
+++ b/doc/user/benutzerhandbuch.5b
@@ -0,0 +1,1632 @@
+#start(5.0,1.5)##pagenr("%",42)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 5: Textkosmetik und Druck
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+5 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 5 - %
+#tableend##clearpos#
+#end#
+
+#ib(9)#5.3. #ib#Pageform#ie##ie(9)#
+#free(1.0)#
+#ib(9)#5.3.1. #ib#Seitenweise formatieren#ie##ie(9)#
+#goalpage("pageform")##goalpage ("autopageform")#
+#free(1.0)#
+ #on("i")#
+ 'pageform'/'autopageform' formatiert eine Datei seitenweise und erledigt Routine­
+ arbeiten wie die Plazierung von Fußnoten, Seitennumerierung usw.
+ #off("i")#
+#free(1.0)#
+
+Das Programm 'pageform' können Sie mit dem Kommando
+
+____________________________________________________________________________
+
+ gib kommando:
+ pageform ("dateiname")
+
+____________________________________________________________________________
+
+
+
+aufrufen. 'pageform' erzeugt aus der Eingabedatei (z.B.: "dateiname") eine Druck­
+datei, deren Name durch ein angehängtes '.p' gebildet wird (z.B.: "dateiname.p").
+
+Die von 'pageform' erzeugte Druckdatei besteht aus der Eingabedatei mit ggf. neu
+eingefügten Zeilen. Die eingesetzten Zeilen stammen aus \#head\#-, \#bottom\#- oder
+\#foot\#-Anweisungen. Dadurch erhöht sich die Zeilenanzahl der Datei.
+
+Sie können in Kopf- oder Fußzeilen Seitennummern aufnehmen. Diese Seiten­
+nummern werden von 'pageform'/'autopageform' bei Seitenwechseln automatisch
+erhöht und an eine von Ihnen gekennzeichnete Stelle eingesetzt. Fußnoten können
+auch durch Nummern gekennzeichnet werden. Querverweise sind ebenfalls möglich.
+#page#
+Nachdem 'pageform' eventuelle Kopf-, Fuß- und Fußnotenzeilen eingefügt hat,
+berechnet es die Anzahl von Zeilen, die auf eine Seite passen, aus den Angaben für
+Seitenlänge und Zeilenvorschub und aus der Höhe der eingestellten Schrifttypen
+(\#type\#-Anweisung). Dann zeigt 'pageform' das errechnete Seitenende auf dem Bild­
+schirm an. Das Seitenende kann interaktiv verschoben werden, um es an eine ge­
+wünschte Stelle zu plazieren und es können Leerzeilen eingefügt/gelöscht werden, um
+Seiten gleich lang zu machen. Zusätzlich können Sie Seiten in Spalten ("Zeitungs­
+druck") aufteilen und diese interaktiv formatieren.
+
+Bei mehreren Schrifttypen innerhalb einer Zeile wird als Zeilenhöhe automatisch die
+des größten Schrifttyps genommen. Dabei müssen Sie bedenken, daß zu Beginn der
+Zeile immer der Schrifttyp der vorherigen Zeile eingeschaltet ist.
+#page#
+
+#ib(9)#5.3.1.1. #ib#Automatische Seitenformatierung#ie(9)##ie#
+#free(1.0)#
+
+ #on("i")#
+ 'autopageform' arbeitet wie 'pageform', jedoch werden die Seitenenden automa­
+ tisch plaziert.
+ #off("i")#
+#free(1.0)#
+'autopageform' sucht zuerst das rechnerische Seitenende. Ist dort ein Absatz vor­
+handen, wird die Seite an dieser Stelle beendet. Falls nicht, sucht 'autopageform'
+nach oben in den nächsten vier Zeilen nach einem Absatz. Wird keiner gefunden,
+wird die Seite am rechnerischen Seitenende beendet.
+
+Ist die \#pageblock\#-Anweisung gegeben, wird zuerst nach oben in den vier letzten
+Zeilen nach einem Absatz gesucht, um dort die Seite zu beenden. Ist dort keiner
+vorhanden, wird auch über das rechnerische Seitenende hinweg versucht, die Seiten­
+länge zu plazieren (4 Zeilen). 'autopageform' beachtet in einem solchen Fall die
+'pagelength'-Anweisung, indem der Zeilenabstand gestaucht wird.
+#page#
+
+#ib(9)#5.3.1.2. #ib#Seitenende interaktiv verschieben#ie# #ie(9)#
+#free(1.0)#
+ #on("i")#
+ In diesem Abschnitt wird beschrieben, welche interaktiven Möglichkeiten Ihnen
+ 'pageform' bietet, Seiten zu gestalten.
+ #off("i")#
+#free(1.0)#
+Auf dem Bildschirm wird das von 'pageform' errechnete jeweilige Seitenende unter
+Angabe der aktuellen Seitennummer angezeigt. Das Seitenende erscheint ungefähr in
+der Mitte des Bildschirmes und wird durch eine von 'pageform' erzeugte Zeile ge­
+kennzeichnet, die auch - nach erfolgter Seitenformatierung - in der Druckdatei zu
+sehen ist. Der EUMEL-Drucker druckt diese Zeile nicht.
+
+____________________________________________________________________________
+
+Mehrere Fußnoten innerhalb einer Seite werden von 'pageform'/­
+'autopageform' in der Reihenfolge ihres Auftretens gesammelt und
+am Ende der Seite plaziert. Für eine entsprechende Trennung der
+Fußnoten voneinander (z.B. durch Leerzeilen) müssen Sie selbst
+sorgen.
+\#page\#\#--------------------- Ende Seite 215 --------\#
+Unter Umständen paßt die Fußnote nicht mehr auf die aktuelle
+Seite und muß deshalb von 'pageform'/'autopageform' auf die näch­
+ste Seite gebracht werden. 'pageform'/'autopageform' geht davon
+aus, daß die Kennzeichnung der Fußnote in der Zeile unmittelbar
+vor der Fußnote steht und bringt diese Zeile ebenfalls auf die
+neue Seite.
+
+
+____________________________________________________________________________
+
+
+Über der Markierung erscheinen die letzten Zeilen der bereits verarbeiteten Seite,
+darunter die ersten Zeilen der nächsten Seite. Sie können nun mit Hilfe der Positio­
+nierungstasten die Markierung und damit das Seitenende nach oben verschieben.
+Damit vermeiden Sie, daß ein logisch zusammengehöriger Text auseinandergerissen
+wird und sogenannte "Waisenkinder" entstehen (letzte Zeile eines Abschnittes kommt
+auf die neue Seite).
+
+Bei der interaktiven #ib#Formatierung#ie (1, " für Seiten")# können Sie die Markierung nicht über das errech­
+nete Ende einer Seite nach unten oder über das vorherige, bereits verarbeitete Seiten­
+ende nach oben verschieben.
+
+Haben Sie jedoch zu Beginn die #ib#\#pageblock\##ie(1,"-Anweisung")#-Anweisung (siehe S. 5-91) gegeben,
+ist es erlaubt, die Seitenende-Markierung auch einige Zeilen über das rechnerische
+Seitenende hinaus zu bewegen. Betätigen Sie dann <CR> , wird der Drucker (sofern
+möglich) den Zeilenabstand auf dieser Seite stauchen. In diesem Fall sollten Sie
+darauf achten, daß das Seitenende bei einem Absatz immer #on("b")##on("i")#vor#off("b")##off("i")# eventuell vorhan­
+dene Leerzeilen plaziert wird. Andernfalls werden die Leerzeilen am Ende der Seite
+als Textzeile mitgezählt und es bleibt entsprechender Platz frei!
+
+Innerhalb einer Fußnote kann die Markierung nicht verschoben werden. In diesem Fall
+wird interaktiv angefragt, ob die Fußnote auf der nächsten Seite fortgesetzt werden
+soll. Verneinen Sie die Anfrage, positioniert 'pageform' vor die Fußnote. Von dieser
+Stelle aus können Sie das Seitenende wie gewohnt verschieben.
+
+Bejahen Sie dagegen die Anfrage nach dem Fußnotenumbruch, plaziert 'pageform'
+das Seitende an dieser Stelle innerhalb der Fußnote. Der restliche Teil der Fußnote
+kommt auf die nächste Seite mit einer Anmerkung ('Forts. von letzter Seite')#u##count#)#e#.
+#foot#
+#u##value#)#e# Bei fremdsprachlichen Texten sollten Sie nach 'pageform' diese Anmerkungen
+ in der '.p'-Datei ändern.
+#end#
+
+Entstehen bei der Seitenformatierung am Anfang einer Seite #ib#Leerzeilen#ie(1, " am Seitenanfang")# (z.B. durch
+Plazierung des Seitenendes zwischen zwei Absätzen), so werden diese von 'page­
+form' automatisch aus der Druckdatei entfernt. Möchten Sie #ib#Leerzeilen am Anfang
+einer Seite#ie#, dann sollten Sie die \#free\#-Anweisung in Verbindung mit der \#page\#-
+Anweisung verwenden.
+
+Zusätzlich können Sie Leerzeilen in eine Seite der Druckdatei einfügen und/oder
+beliebige Zeilen löschen (vergl. b).
+#page#
+Folgende Operationen stehen Ihnen bei der interaktiven Seitenformatierung zur Ver­
+fügung:
+
+#on("b")#a) #ib#Seitenende verschieben#ie#:#off("b")#
+
+'pageform' berechnet das "rechnerische" Seitenende und zeigt dieses auf dem Bild­
+schirm durch die Markierung an. Die Markierung kann interaktiv verschoben werden:
+
+ #on("b")#Taste Bedeutung#off("b")#
+
+ <CR> Seitenende an diese Stelle plazieren.
+
+
+ <^> Seitenende eine Zeile nach oben verschieben.
+
+
+ <v> Seitenende eine Zeile nach unten verschieben (wenn
+ vorher nach oben verschoben bzw. wenn \#pageblock\#-
+ Anweisung gegeben ist).
+
+
+ <HOP> <^> Seitenende um einen Bildschirm nach oben verschieben.
+
+
+ <HOP> <v> Seitenende um einen Bildschirm nach unten verschieben.
+
+
+ <ESC> Abbruch der Seitenformatierung.
+
+
+
+#on("b")#b) #ib#Leerzeilen einfügen#ie# und/oder #ib#Zeilen löschen#ie##off("b")#
+
+Ist nach den Berechnungen von 'pageform' der Text ungünstig auf der Seite plaziert,
+können Sie in die Seite (der Druckdatei!) Leerzeilen einfügen und/oder Zeilen löschen.
+Dies kann beispielsweise sinnvoll sein, wenn durch die Löschung einer Zeile ein
+Absatz noch auf die Seite passen würde oder durch die Einfügung von Leerzeilen ein
+Absatz auf der letzten Zeile der Seite endet. Oft ist es auch sinnvoll, daß alle Seiten
+gleich lang sind. In diesem Fall sollten vor Kapiteln und Absätzen Leerzeilen eingefügt
+oder gelöscht werden.
+
+Um Leerzeilen einzufügen und/oder Zeilen zu löschen, müssen Sie die Markierung
+wie unter a) beschrieben an die Stelle plazieren, an der die Änderung vorgenommen
+werden soll.
+
+
+ #on("b")#Taste Bedeutung#off("b")#
+
+
+ <HOP> <RUBIN> Leerzeilen einfügen. Anstatt der Markierung können
+ durch (u.U. mehrmaliges) <CR> Leerzeilen eingefügt
+ werden. <HOP> <RUBIN> beendet den Vorgang (wie
+ Zeileneinfügen im Editor).
+
+ <HOP> <RUBOUT> Zeile löschen. Die Zeile unmittelbar oberhalb der
+ Markierung wird gelöscht.
+
+
+
+Anschließend berechnet 'pageform' die Seite erneut.
+
+
+
+#on("b")#c) #ib(9)##ib#\#page\#-Anweisung bestätigen/löschen#ie(9)##ie##off ("bold")#
+
+Wird von der Prozedur 'pageform' eine #ib#\#page\#-Anweisung#ie# angetroffen, so wird das
+gewünschte Seitenende auf Ihrem Bildschirm angezeigt. Die \#page\#-Anweisung
+können Sie entweder bestätigen oder löschen.
+
+ #on("b")#Taste Bedeutung#off("b")#
+
+
+ <CR> Seitenende bestätigen.
+
+ <RUBOUT> \#page\#-Anweisung ignorieren. Die Prozedur 'pageform'
+ bearbeitet in diesem Fall die Datei weiter, als ob keine
+ \#page\#-Anweisung angetroffen wurde.
+
+ <ESC> Abbruch der Seitenformatierung.
+#page#
+
+#ib(9)#5.3.2. #ib#Seitenlänge einstellen#ie##ie(9)#
+#goalpage("pagelength")#
+#free(0.7)#
+ #on("i")#
+ 'pageform'/'autopageform' ist auf ein Schreibfeld von 25.0 cm eingestellt (ent­
+ spricht einem DIN A4-Schreibfeld). Wünschen Sie eine andere Seitenlänge,
+ müssen Sie die #ib#\#pagelength\#-Anweisung#ie# in den Text einfügen.
+ #off("i")#
+#free(0.7)#
+____________________________________________________________________________
+
+ \#pagelength (20.0)\#
+
+____________________________________________________________________________
+
+
+stellt die Seitenlänge auf 20 cm ein.
+
+Beachten Sie, daß
+
+1. die neu eingestellte Seitenlänge immer erst ab der nächsten Seite gilt (die bislang
+ eingestellte Seitenlänge gilt noch für die aktuelle Seite).
+
+2. die eingestellte Seitenlänge am Anfang der Datei (also vor der ersten Textzeile) für
+ die erste Seite gilt.
+#mark ("", "")#
+
+3. der Dezimalpunkt bei der Seitenlänge mit angegeben werden muß.
+
+Die folgende Tabelle gibt die Seitenlänge für die am häufigsten gewählten Papier­
+größen an:
+
+ #on("b")#Format Seitenlänge oberer und
+ (in cm) unterer Rand#off("b")#
+
+ DIN A4 25.0 je 2.35 cm
+
+ DIN A5 18.0 je 2.15 cm
+
+ DIN A4 quer 16.0 je 2.50 cm
+#page#
+
+#ib(9)#5.3.3. #ib#Zeilenabstand einstellen#ie##ie(9)#
+#goalpage ("linefeed")#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#linefeed\#-Anweisung#ie# stellen Sie einen #ib#Zeilenvorschub#ie# relativ zu der
+ #ib#Schrifthöhe#ie# des eingestellten Schrifttyps ein.
+ #off("i")#
+#free(1.0)#
+'pageform'/'autopageform' berechnet die Anzahl der Zeilen pro Seite immer in Ab­
+hängigkeit von dem eingestellten Schrifttyp. Haben Sie z.B. eine Schrift gewählt, die
+doppelt so hoch wie eine Schreibmaschinenschrift ist, bekommen Sie auch entspre­
+chend weniger Zeilen auf eine Seite. Um diesen Berechnungsvorgang brauchen Sie
+sich in der Regel nicht zu kümmern.
+
+Anders verhält es sich, wenn ein anderer #ib#Zeilenabstand#ie# als der "normale" Abstand
+zwischen Zeilen eingestellt werden soll. In diesem Fall wird die \#linefeed\#-
+Anweisung eingesetzt. Der Parameter gibt an, um welchen Faktor eine Zeilenhöhe #on("i")##on("b")#ab
+der nächsten druckbaren Zeile#off("b")##off("i")# erhöht oder verringert werden soll.
+
+____________________________________________________________________________
+
+ \#linefeed (2.0)\#
+
+____________________________________________________________________________
+
+
+druckt die folgenden Zeilen mit doppeltem Zeilenabstand. Nach Antreffen dieser An­
+weisung wird die Zeilenhöhe durch 2 * eingestellte Schrifttypgröße errechnet. Es wird
+also der Zeilenabstand zwischen den Zeilen entsprechend vergrößert, da die Schrift­
+größe gleich bleibt. Dies entspricht dem zweizeiligen Schreiben bei einer Schreib­
+maschine (wenn man davon absieht, daß auch hier unterschiedliche Schrifthöhen
+möglich sind). Ein 1 1/2 zeiliges Schreiben wäre mit
+
+____________________________________________________________________________
+
+ \#linefeed (1.5)\#
+
+____________________________________________________________________________
+
+
+einzustellen.
+
+____________________________________________________________________________
+
+ \#linefeed (0.5)\#
+
+____________________________________________________________________________
+
+
+stellt die Zeilenhöhe = 1/2 * eingestellte Schrifthöhe ein, so daß die Zeilen teilweise
+ineinander gedruckt werden (was bei manchen Druckern zu nicht lesbaren Resultaten
+führt). Bei \#linefeed (0.0)\# werden Zeilen übereinander gedruckt (druckerabhängig).
+
+Beachten Sie, daß die Angabe in der \#linefeed\#-Anweisung relativ erfolgt. Bei allen
+anderen Anweisungen der Textkosmetik werden Angaben in Zentimetern verlangt. Die
+\#linefeed\#-Anweisung bildet somit eine Ausnahme.
+#page#
+
+#ib(9)#5.3.4. #ib#Platz freihalten#ie# #ie(9)#
+#goalpage ("free")#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#free\#-Anweisung#ie# können Sie einen zusammenhängenden Teil auf einer
+ Seite freihalten.
+ #off("i")#
+#free(1.0)#
+Die \#free\#-Anweisung setzen Sie an solchen Stellen im Text ein, an denen - nach
+dem Druck - Zeichnungen, Tabellen und ähnliches eingeklebt werden sollen. Sie
+können sie auch zwischen Absätzen, Kapiteln usw. einsetzen, wenn der Abstand nicht
+gleich dem Vielfachen der Zeilenhöhe ist. Es wird der in der \#free\#-Anweisung
+angegebene Platz freigehalten.
+
+____________________________________________________________________________
+
+\#free (2.0)\#
+
+____________________________________________________________________________
+
+
+hält zwei Zentimeter frei. Paßt der angeforderte Platz nicht mehr auf die Seite, so wird
+er auf der nächsten Seite reserviert ('pageform'/'autopageform' plaziert das Seiten­
+ende vor die \#free\#-Anweisung).
+
+
+
+#on("i")##on("b")#Praktischer Tip:#off("b")##off("i")#
+Sie sollten eine \#free\#-Anweisung allein auf eine Zeile schreiben, damit Sie sie u.U.
+durch 'pageform' interaktiv entfernen können, wenn die \#free\#-Anweisung ungünstig
+an den Seitenanfang oder das Seitenende kommt.
+#page#
+
+#ib(9)#5.3.5. #ib#Neue Seite beginnen#ie##ie(9)#
+#goalpage("page")#
+#free(1.0)#
+ #on("i")#
+ An einigen Stellen im Text, z.B. zu Beginn eines neuen Kapitels, möchten Sie
+ unbedingt eine neue Seite anfangen. Dies erreichen Sie mit der #ib#\#page\#-
+ Anweisung#ie#.
+ #off("i")#
+#free(1.0)#
+'pageform' meldet in diesem Fall, nach wie vielen Zentimetern auf der Seite die An­
+weisung angetroffen wurde. Sie können nun mit <CR> das Seitenende bestätigen oder
+die Anweisung (in der Druckdatei) löschen. Im letzteren Fall berechnet 'pageform' die
+Seite neu, als ob die \#page\#-Anweisung nicht dagewesen wäre.
+
+Gleichzeitig können Sie mit Hilfe der #ib#\#page\#-Anweisung#ie(1, ", mit neuer Seitenummer")# eine neue Seitennummer
+für die neue Seite einstellen (vergl. Sie dazu die nächsten Abschnitte).
+#page#
+
+#ib(9)#5.3.6. #ib#Kopf- und Fußzeilen#ie##ie(9)#
+#goalpage("head")##goalpage("bottom")#
+#free(1.0)#
+ #on("i")#
+ Mit den #ib#\#head\#-#ie(1, "Anweisung")# und #ib#\#bottom\#-Anweisung#ie#en können Sie Zeilen am Anfang und
+ Ende jeder Seite einfügen.
+ #off("i")#
+#free(1.0)#
+Sie schreiben Zeilen am Anfang ("#ib#Kopfzeilen#ie#") und Ende ("#ib#Fußzeilen#ie#") jeder Seite nur
+einmal und kennzeichnen sie mit Anweisungen. Diese Zeilen fügt 'pageform'/­
+'autopageform' dann an den entsprechenden Stellen ein.
+
+____________________________________________________________________________
+
+ \#head\#
+ Unser EUMEL-Benutzerhandbuch
+
+ \#end\#
+
+____________________________________________________________________________
+
+
+Diese Zeile (also die zwischen den \#head\#- und #ib#\#end\#-Anweisung#ie#en eingeschlos­
+sene Zeile) wird von 'pageform'/'autopageform' an den Anfang jeder Seite in die
+Druckdatei plaziert.
+
+Entsprechendes gilt für Fußzeilen, die zwischen \#bottom\# und \#end\# eingeschlossen
+werden müssen:
+
+____________________________________________________________________________
+
+ \#bottom\#
+
+ Autor: I. Listig
+ \#end\#
+
+____________________________________________________________________________
+
+
+#on("b")#Praktischer Tip#off("b")#:
+
+Fügen Sie mindestens eine Leerzeile am Ende eines \#head\# bzw. am Anfang eines
+\#bottom\# ein, um den eigentlichen Text von den Kopf- bzw. Fußzeilen abzuheben.
+
+
+'pageform'/'autopageform' zählt die Seiten, beginnend mit der Seitennummer '1'. (Wie
+man Seitennummern in die Kopf- und Fußzeilen bekommt, erfahren Sie im nächsten
+Abschnitt). Sie können nun getrennte Kopf- und Fußzeilen für gerade und ungerade
+Seiten gestalten (wie in diesem Benutzerhandbuch). Dies erfolgt mit den Anweisungen
+\#headeven\# und \#headodd\# für Seiten mit geraden und ungeraden Seitennummern;
+ebenso \#bottomeven\# und \#bottomodd\#. Diese Anweisungen müssen ebenfalls jeweils
+mit einer \#end\#-Anweisung beendet werden.
+
+Sie haben die Möglichkeit, Kopf- und Fußzeilen mehrmals innerhalb einer Datei zu
+wechseln, um unterschiedliche Beschriftungen zu erhalten (z.B. kapitelweise). Dies ist
+jedoch nur sinnvoll, wenn es auf einer neuen Seite erfolgt, also unmittelbar #on("b")##on("is")#nach#off("b")##off("is")# einer
+\#page\#-Anweisung.
+
+____________________________________________________________________________
+
+ \#page\#
+ \#head\#
+ Neuer Seitenkopf
+
+ \#end\#
+
+____________________________________________________________________________
+
+
+Kopf- und Fußzeilen sollen überall gleiches Aussehen haben, unabhängig davon,
+welche Anweisungen im restlichen Text gegeben werden. Darum werden die bei der
+Definition einer Kopf- und Fußzeile aktuellen Werte für
+
+
+ limit
+ type
+ linefeed
+
+
+bei dem Einsetzen der Zeilen berücksichtigt. Für Kopf- oder Fußzeilen können Sie
+einen anderen Schrifttyp als im restlichen Text verwenden, indem Sie die \#type\#-
+Anweisung innerhalb eines \#head\#- oder \#bottom\#-Bereiches geben. Beachten Sie,
+daß nach \#head\#-, \#bottom\# und auch \#foot\#-Bereichen die oben genannten An­
+weisungen nicht automatisch zurückgestellt werden. Darum sollten Sie vor der
+\#end\#-Anweisung wieder auf die im übrigen Text verwendeten Werte zurückstellen.
+
+____________________________________________________________________________
+
+ \#bottom\#
+ \#type ("klein")\#
+ Autor: I. Listig
+ (Schrifttyp
+ zurückstellen):
+ \#type ("normal")\#
+ \#end\#
+
+____________________________________________________________________________
+
+
+#page#
+
+#ib(9)#5.3.7. #ib#Seiten numerieren#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ In den Kopf- und Fußzeilen steht das #ib#'%'-Zeichen#ie# für die aktuelle Seiten­
+ nummer.
+ #off("i")#
+#free(1.0)#
+Erscheint das '%'-Zeichen innerhalb eines Kopf- oder Fußbereiches, wird von
+'pageform'/'autopageform' beim Einsetzen dieser Zeilen auf jeder Seite die aktuelle
+#ib#Seitennummer#ie# eingesetzt (sind mehrere '%'-Zeichen vorhanden, wird die Seiten­
+nummer mehrmals eingesetzt).
+
+____________________________________________________________________________
+
+ \#head\#
+ Seite: - % -
+
+ \#end\#
+
+____________________________________________________________________________
+
+
+Wenn Sie die Seitenzahl in der Zeilenmitte oder am rechten Rand plazieren möchten,
+können Sie die Anweisungen \#center\# (siehe S. 5-93) oder \#right\# (siehe S. 5-94)
+verwenden.
+
+Durch das Einrichten eines Fußbereiches können Sie die Seitennummern auch am
+unteren Ende einer Seite erzeugen. Beachten Sie, daß sich bei mehrstelligen Seiten­
+nummern die Zeilenlänge durch das Einsetzen vergrößert.
+
+Um zum Beispiel das #ib#Vorhandensein einer Folgeseite#ie# in einem Fußbereich zu kenn­
+zeichnen, müssen Sie das '%'-Zeichen zweimal direkt hintereinander schreiben.
+
+____________________________________________________________________________
+
+ \#bottom\#
+
+ \#right\# %%
+ \#end\#
+
+____________________________________________________________________________
+
+
+In dem Beispiel oben wird die Seitenzahl rechtsbündig gedruckt.
+
+
+Manchmal ist es notwendig und sinnvoll, einen Text in mehreren Dateien zu halten.
+Bei einer Folgedatei müssen Sie die Seitennummer dann neu setzen. Das erfolgt mit
+der \#pagenr\#- oder der \#page\#-Anweisung.
+
+____________________________________________________________________________
+
+ \#page (4)\#
+
+____________________________________________________________________________
+
+
+bewirkt eine neue Seite. Die Seitennummer der neuen Seite ist '4'.
+
+#goalpage("pagenr")#
+
+Bei einigen Spezialanwendungen benötigen Sie unter Umständen mehr als eine
+Seitennummer. Beispielsweise soll ein Text nicht nur absolut, sondern auch jede Seite
+in jedem Kapitel separat durchgezählt werden.
+
+____________________________________________________________________________
+
+ \#page (4711)\#
+ \#pagenr ("$", 1)\#
+ \#head\#
+ Mein Buch Seite: % Kapitelseite: $
+
+ \#end\#
+
+____________________________________________________________________________
+
+
+Die Anweisung #ib#\#pagenr#ie# ("$",1)\# veranlaßt, daß ab der nächsten Seite eine neue
+Numerierung durchgeführt wird. Dabei steht '$' stellvertretend für die neue Zahl. Die
+'1' bedeutet, daß bei der Numerierung mit '1' begonnen wird. 'pageform'/­
+'autopageform' erhöht bei jeder neuen Seite das Zeichen um '1' und setzt es ggf. in
+die Kopf- und Fußzeilen. Es sind zwei zusätzliche Seitenzeichen (neben dem '%')
+möglich.
+
+Beachten Sie, daß die neuen Seitennummern immer erst ab der nächsten Seite gel­
+ten. Geben Sie die \#page (...)\#- oder die \#pagenr (...,...)\#-Anweisung am Anfang
+der Datei (also vor der ersten Textzeile), gelten die neuen Seitennummern für die
+erste Seite.
+#page#
+
+#ib(9)#5.3.8. #ib#Fußnoten#ie# schreiben#ie(9)#
+#goalpage("foot")#
+#free(1.0)#
+ #on("i")#
+ Fußnoten werden direkt im Text durch die Anweisungen \#foot\# und \#end\#
+ gekennzeichnet. Die Fußnoten plaziert 'pageform'/'autopageform' an das Ende
+ einer Seite.
+ #off("i")#
+#free(1.0)#
+#ib#Fußnoten#ie# schreiben Sie direkt in den Text, am besten an der Stelle, an der später die
+Fußnote aufgerufen werden soll. Die Fußnote wird von 'pageform'/'autopageform' an
+das Ende einer Seite, ggf. vor die Fußzeilen, plaziert. Für die Kennzeichnung von
+Fußnoten und die entsprechende Markierung im Text sind Sie selbst zuständig. Aller­
+dings werden von 'pageform'/'autopageform' bei dem Einsetzen einer Fußnote am
+Ende einer Seite Unterstriche vor die Fußnoten eingefügt, damit Fußnoten vom lau­
+fenden Text abgehoben werden.
+
+____________________________________________________________________________
+
+ \#foot\#
+ *) Das ist die erste Anmerkung auf dieser Seite.
+ \#end\#
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+______
+*) Das ist die erste Anmerkung auf dieser Seite.
+
+
+Mehrere Fußnoten innerhalb einer Seite werden von 'pageform'/'autopageform' in der
+Reihenfolge ihres Auftretens gesammelt und am Ende der Seite plaziert. Für eine
+entsprechende Trennung der Fußnoten voneinander (z.B. durch Leerzeilen) müssen
+Sie selbst sorgen.
+
+Unter Umständen paßt die Fußnote nicht mehr auf die aktuelle Seite und muß deshalb
+von 'pageform'/'autopageform' auf die nächste Seite gebracht werden. 'pageform'/­
+'autopageform' geht davon aus, daß die Kennzeichnung der Fußnote in der Zeile
+unmittelbar vor der Fußnote steht und bringt diese Zeile ebenfalls auf die neue Seite.
+
+____________________________________________________________________________
+
+Es ist auch möglich, eine Fußnote innerhalb eines Abschnitts zu
+schreiben, wie z.B. in dieser Zeile\#u\#*)\#e\#.\#foot\#
+\#u\#*)\#e\# Fußnote in einem Abschnitt!
+\#end\#
+Sie fahren anschließend ohne Unterbrechung mit dem Schreiben
+Ihres Textes fort.
+
+____________________________________________________________________________
+
+
+Druckbild (nach lineform):
+
+Es ist auch möglich, eine Fußnote innerhalb eines Abschnitts zu schreiben, wie z.B.
+in dieser Zeile#u#*)#e#. Sie fahren anschließend ohne Unterbrechung mit dem Schreiben#foot#
+#u#*)#e# Fußnote in einem Abschnitt!
+#end#
+Ihres Textes fort.
+
+
+In diesem Fall ist es wünschenswert, daß 'lineform' die Zeile, die \#foot\# vorausgeht,
+mit der Zeile, die \#end\# folgt, auffüllt. Dies geschieht unter folgenden Bedingungen:
+
+1. Hinter \#foot\# darf nichts mehr stehen, also auch kein Absatzzeichen.
+
+2. Es werden so lange Worte von der Zeile nach \#end\# vor die \#foot\#-Anweisung
+ plaziert, bis die Zeile gefüllt oder die Zeile nach \#end\# leergeräumt ist.
+
+3. Beachten Sie, daß Textkosmetik-Anweisungen ebenfalls mit über die Fußnote
+ genommen werden. Handelt es sich beispielsweise um eine \#type\#-Anweisung,
+ kann sich das Aussehen der Fußnote verändern! Darum ist es angeraten, even­
+ tuelle Anweisungen, die die Fußnote verändern sollen, innerhalb der Fußnote zu
+ plazieren.
+
+Sie sollten vermeiden, umfangreiche Texte in Fußnoten zu schreiben (beispielsweise
+längere Zitate). Aus programmtechnischen Gründen begrenzt 'pageform'/'autopage­
+form' die maximale Länge von Fußnoten auf einer Seite auf 85% des effektiven
+Schreibfeldes (effektives Schreibfeld: Seitenlänge minus Länge von \#head\#- bzw.
+\#bottom\#-Zeilen). Nimmt eine Fußnote einen größeren Raum ein, bricht 'pageform'/
+'autopageform' die Seitenformatierung mit einer Fehlermeldung ab.
+#page#
+
+#ib(9)#5.3.8.1. #ib#Fußnoten numerieren#ie##ie(9)#
+#goalpage("count")##goalpage("value")#
+#free(1.0)#
+ #on("i")#
+ Gleichartige Textteile wie Lehrsätze, Beispiele, Fußnoten usw. werden i. allg.
+ durchnumeriert. Da Sie bei der Abfassung eines längeren Textes ihre genaue
+ Anzahl meist nicht vorausplanen können, übernimmt 'pageform'/'autopageform' die
+ Zählung.
+ #off("i")#
+#free(1.0)#
+Durch die #ib#\#count\#-Anweisung#ie# wird 'pageform'/'autopageform' veranlaßt, einen
+internen Zähler (beginnend bei dem Wert 0) zu erhöhen und diesen Wert statt der
+\#count\#-Anweisungen in den Text einzusetzen.
+
+____________________________________________________________________________
+
+ \#count\#
+
+____________________________________________________________________________
+
+
+setzt den Wert 1 statt der Anweisung ein. Jede weitere \#count\#-Anweisung erhöht
+den internen Zähler und der Zählerwert wird wiederum eingesetzt:
+
+____________________________________________________________________________
+
+ \#count\#
+
+____________________________________________________________________________
+
+
+setzt den Wert 2 ein usw. Dadurch ist es möglich, beliebige Textteile (Kapitel,
+mathematische Sätze u.a.m.) fortlaufend zu numerieren, ohne auf die Numerierung
+beim Schreiben und Ändern des Textes zu achten.
+
+Anmerkung:
+Trifft 'lineform' auf eine \#count\#-Anweisung, so wird die Zeile berechnet, als ob drei
+Ziffern anstatt der Anweisung im Text ständen.
+
+Mit der \#value\#-Anweisung können Sie den #on("b")##on("i")#letzten#off("i")##off("b")# erreichten count-Wert nochmals
+einsetzen. Das ist insbesondere für Fußnoten sinnvoll einsetzbar.
+
+____________________________________________________________________________
+
+ Text ....... (\#count\#)
+ \#foot\#
+ (\#value\#) Text der Fußnote
+ \#end\#
+ Text .......
+
+____________________________________________________________________________
+
+
+Das Resultat sähe folgendermaßen aus:
+
+ Text ....... (3)
+ Text .......
+ ...............
+ ______
+ (3) Text der Fußnote
+
+Beachten Sie, daß in diesem Fall die \#value\#-Anweisung der \#count\#-Anweisung
+folgen muß, ohne daß eine weitere \#count\#-Anweisung dazwischen steht. Das liegt
+- wie bereits oben erwähnt - daran, daß die \#value\#-Anweisung immer den letzten
+\#count\#-Wert einsetzt.
+
+Das können Sie umgehen, indem Sie die \#count\#- und \#value\#-Anweisungen mit
+einem TEXT-Parameter versehen, der als Kennzeichnung dient.
+
+____________________________________________________________________________
+
+ \#count ("Merk1")\#
+
+____________________________________________________________________________
+
+
+\#count ("Merk1")\# arbeitet ebenso wie \#count\# ohne Parameter und setzt für unser
+Kapitel hier den Wert 4 ein. Zusätzlich zu dem fortlaufend gezählten Wert (fortlau­
+fende Numerierung der Fußnoten) vermerkt 'pageform'/'autopageform' einen Wert, der
+bei Bedarf an irgendeiner anderen Stelle im Text durch \#value ("Merk1")\# wieder
+aufgerufen werden kann, zum Beispiel, wenn Sie auf eine andere Fußnote verweisen
+möchten.
+
+____________________________________________________________________________
+
+ \#count\#\#count\#
+ \#value("Merk1")\#
+
+____________________________________________________________________________
+
+
+Die ersten zwei \#count\#-Anweisungen produzieren - in unserem Kapitel - die
+Werte 5 bzw. 6. Die \#value\#-Anweisung dagegen setzt den vermerkten Wert 4 ein.
+
+Dies ist insbesondere sinnvoll, wenn Sie im Text auf eine Fußnote verweisen möch­
+ten.
+
+Beispiel:
+
+Sie schreiben einen mehrseitigen Prospekt über ein neues Produkt. Auf Seite 5 möch­
+ten Sie auf eine Fußnote verweisen, die auf einer anderen Seite steht. Dann fügen Sie
+'siehe auch Anmerkung (\#value("liefertermin")\#) in Ihren Text ein und fahren mit dem
+Schreiben fort. 'pageform'/'autopageform' setzt später die entsprechende Zahl für den
+Verweis ein.
+
+Auf der Seite, auf die Sie Bezug nehmen, sieht das ganze folgendermaßen aus:
+
+____________________________________________________________________________
+
+ Der Textverarbeitungskurs ist ein Lernprogramm für Anfänger.
+ \#(count)("Liefertermin")\#)
+ \#foot\#
+ (\#(value)("Liefertermin")\#)
+ Der Textverarbeitungskurs wird ab August erhältlich sein.
+ \#end\#
+ Das Programm ist auf den neuesten Erkenntnissen der Lehr­
+ forschung aufgebaut. Der Kurs umfaßt Lehrbuch, Arbeitsbuch und
+ sechs Kassetten.
+
+____________________________________________________________________________
+
+
+#page#
+Soll die Zahl für den Verweis bzw. für die Fußnote hochgestellt werden, fügen Sie die
+Anweisungen \#u\# und \#e\# hinzu.
+
+____________________________________________________________________________
+
+ \#u\# (\#value("Liefertermin")\#)\#e\#
+
+____________________________________________________________________________
+
+
+
+
+Im gedruckten Prospekt sähe es (nach 'lineform') wie folgt aus:
+
+Der Textverarbeitungskurs ist ein Lernprogramm für Anfänger#u##count#)#e#.#foot#
+#u##value#)#e#Der Textverarbeitungskurs wird ab August erhältlich sein.
+#end#
+Das Programm ist auf den neuesten Erkenntnissen der Lehrforschung aufgebaut. Der
+Kurs umfaßt Lehrbuch, Arbeitsbuch und sechs Kassetten.
+
+Manchmal ist es notwendig (ebenso wie bei der Seitennummer), den internen Zähler
+neu zu setzen.
+
+____________________________________________________________________________
+
+ \#setcount (13)\#\#count\#
+
+____________________________________________________________________________
+#goalpage("setcount")#
+
+produziert den Wert 13.
+#page#
+
+#ib(9)#5.3.9. #ib#Querverweise#ie# #ie(9)#
+#goalpage("topage")##goalpage("goalpage")#
+#free(1.0)#
+ #on("i")#
+ Mit den Anweisungen #ib#\#topage\##ie(1,"-Anweisung")# und #ib#\#goalpage\##ie(1,"-Anweisung")# sind Querverweise möglich, die
+ von 'pageform'/'autopageform' in die Druckdatei eingefügt werden.
+ #off("i")#
+#free(1.0)#
+Mit Hilfe von Querverweisen soll auf andere Stellen im Text verwiesen werden, was
+nur bei längeren Texten üblich ist. Um dem Leser die mühselige Suche nach der
+Textstelle zu ersparen, gibt man in der Regel die Seitennummer an. Normalerweise
+steht die Seitennummer vor der Fertigstellung des Textes noch nicht fest. Auch in
+diesem Fall kann 'pageform'/'autopageform' helfen. Die \#topage\#-Anweisung ver­
+weist auf eine andere Seite im Text, an der sich eine Anweisung \#goalpage\# befinden
+muß. Statt der Anweisung \#topage\# wird die Seitennummer der Seite eingesetzt, auf
+der sich \#goalpage\# befindet. Damit jedes \#topage\# auch sein entsprechendes \#goal­
+page\# findet, geben Sie bei beiden Anweisungen einen TEXT-Parameter an.
+
+
+____________________________________________________________________________
+
+ ... siehe auch auf Seite \#topage("Funktionstasten")\# ...
+
+
+____________________________________________________________________________
+
+
+Auf einer anderen Seite befindet sich
+
+____________________________________________________________________________
+
+ ... \#goalpage("Funktionstasten")\#
+
+____________________________________________________________________________
+
+
+Nach 'Seite' wird die entsprechende Seitennummer eingesetzt.
+
+Es ist möglich, mehrmals auf die gleiche (Ziel-)Seite zu verweisen. Sie müssen nur
+darauf achten, daß Sie immer das gleiche Merkmal (TEXT-Parameter) verwenden.
+Beachten Sie auch, daß die \#goalpage\#-Anweisungen sich in den Zeilen befinden
+müssen, die tatsächlich gedruckt werden. Setzen Sie sie nicht in die ersten Zeilen
+einer Seite oder eines Textes, die Anweisungen für das Layout enthalten.
+
+Die Zahl der Querverweise darf 300 nicht übersteigen. #page#
+
+#ib(9)#5.3.10. Kombination von Tabellen, Fußnoten
+ und Kopf- bzw. Fußzeilen#ie(9)#
+#free(1.0)#
+ #on("i")#
+ In Fußnoten, \#head\#- oder \#bottom\#-Bereichen können Tabellen untergebracht
+ werden.
+ #off("i")#
+#free(1.0)#
+____________________________________________________________________________
+
+\#head\#
+\#lpos(0.0)\#\#cpos(5.0)\#\#rpos(11.0)\#
+\#table\#
+Korrekturen EUMEL-Benutzerhandbuch S.007
+
+\#table end\#
+\#end\#
+
+
+____________________________________________________________________________
+
+
+
+Die obigen Eingaben schreiben an jeden Seitenanfang folgenden Text:
+
+#lpos(0.0)##cpos(5.0)##rpos(11.0)#
+#table#
+Korrekturen EUMEL-Benutzerhandbuch S.007
+#table end##clear pos#
+
+Die Tabelle sollte also vollständig in den oben erwähnten Bereichen enthalten sein.
+#page#
+
+#ib(9)#5.3.11. #ib#Formatierung von Spalten#ie##ie(9)#
+#goalpage("columns")#
+#free(1.0)#
+ #on("i")#
+ Mit der \#columns\#-Anweisung ist es möglich, einen Text in #ib#Spalten#ie(1,"formatierung")# zu formatie­
+ ren ("Zeitungsdruck").
+ #off("i")#
+#free(1.0)#
+Durch die Angabe der \#columns\#-Anweisung wird 'pageform'/'autopageform' auf­
+gefordert, den Text in Spalten zu formatieren. Die Spaltenbreite müssen Sie mit der #ib#
+\#limit\#-Anweisung#ie (1, " für Spalten")# einstellen.
+
+____________________________________________________________________________
+
+ \#limit (18.0)\#
+ ...
+ \#columns (2, 2.0)\#
+ \#limit (8.0)\#
+ ...
+
+____________________________________________________________________________
+
+
+
+Anfangs schreiben Sie mit einer Zeilenbreite von 18 cm. Dann fordern Sie mit der
+\#columns\#-Anweisung zweispaltigen Druck an (zwischen den Spalten sollen 2 cm
+Abstand sein). Somit muß die \#limit\#-Anweisung (sie gilt für beide Spalten) auf 8 cm
+eingestellt werden.
+
+Die interaktive #ib#Spaltenformatierung#ie# wird von 'pageform' wie gewohnt vorgenommen.
+Auf dem Bildschirm erscheint nun das Spaltenende, wobei die Nummer der Spalte
+angezeigt wird. Fußnoten werden spaltenweise eingeordnet und müssen somit die
+gleiche Zeilenbreite haben wie die restlichen Spalten.
+
+'pageform'/'autopageform' erzeugt in der Druckdatei die Spalten hintereinander. Das
+folgende Beispiel zeigt einen Ausschnitt aus der Druckdatei mit Kopf- und Fußzeilen
+bei einem zweispaltigen Druck:
+
+____________________________________________________________________________
+
+ head-Zeilen
+ xx
+ xx
+ xx
+ bottom-Zeilen
+ \#page\#\#------- Ende Seite 1 Spalte 1 ----\#
+ xx
+ xx
+ xx
+ \#page\#\#------- Ende Seite 1 Spalte 2 ----\#
+
+____________________________________________________________________________
+
+
+Die zweite Spalte erscheint also ohne Kopf- und Fußzeilen, die jedoch bei der
+Berechnung berücksichtigt werden. Beachten Sie, daß die Kopf- und Fußzeilen über
+die Spalten gehen können. Dies erreichen Sie durch geeignete \#limit\#-Anweisungen
+in den genannten Bereichen.
+
+Die meisten Drucker plazieren die zweite Spalte im Druckbild neben die erste. Bei
+einigen wenigen Druckern müssen Sie die Spalten nebeneinander kleben.
+
+Alle Anweisungen funktionieren beim spaltenweisen Formatieren wie üblich. Die
+\#free\#-Anweisung z.B. hält entsprechenden Platz in einer Spalte frei. Eine Aus­
+nahme bildet die #ib#\#page\#-Anweisung#ie (1, " für Spaltenende")#. Sie vollzieht hier ein #ib#Spaltenende#ie#. Die
+\#page\#-Anweisung mit einem Parameter (welcher die Seitennummer der nächsten
+Seite angibt) vollzieht dagegen ein Seitenende.
+
+Die #ib#\#columns end\#-Anweisung#ie# beendet die spaltenweise #ib#Formatierung#ie(1, " spaltenweise")#. Sie wirkt wie
+eine \#page\#-Anweisung.
+
+#ib#Überschriften#ie (1, " in Spalten")# (bzw. Textblöcke) über mehrere Spalten hinweg sind nur auf der ersten
+Seite direkt hinter der \#columns\#-Anweisung möglich.
+
+____________________________________________________________________________
+
+ \#page\#
+ \#limit (10.0)\#
+ Überschriften (bzw. Textblöcke) über mehrere Spalten hinweg
+ sind nur auf der ersten Seite direkt hinter der \#columns\#-
+ Anweisung möglich.
+
+
+ \#columns (2,2.0)\#
+ \#limit (4.0)\#
+ Die erste Spalte soll nur wenige Zeilen beinhalten. Das vor­
+ zeitige Beendigen der Spalte erreicht man mit der \#page\#-
+ Anweisung.
+ \#page\#
+ In der zweiten Spalte kann dann mit dem Schreiben des Textes
+ fortgefahren werden.
+ .....................
+ .....................
+ .....................
+ .....................
+ .....................
+ \#columns end\#
+
+____________________________________________________________________________
+
+
+#page#
+Druckbild (mit 'lineform' bearbeitet):
+
+
+
+ Überschriften (bzw. Textblöcke) über mehrere Spalten hinweg sind nur auf
+ der ersten Seite direkt hinter der \#columns\#-Anweisung möglich.
+ #columns (2,2.0)#
+
+ Die erste Spalte soll nur
+ wenige Zeilen beinhalten.
+ Das vorzeitige Beendigen
+ der Spalte erreicht man mit
+ der \#page\#-Anweisung.
+ #page#
+
+
+ In der zweiten Spalte kann
+ dann mit dem Schreiben
+ des Textes fortgefahren
+ werden.
+ .....................
+ .....................
+ .....................
+
+#columns end#
+
+
+
+
+Die Zeilen für die zweispaltige Überschrift werden berücksichtigt. Dies gilt jedoch nur
+unmittelbar hinter der \#columns\#-Anweisung. Möchten Sie diesen Effekt nochmals
+erzeugen, beenden Sie mit \#columns end\#, schreiben die breite Überschrift und
+schalten die \#columns\#-Anweisung wieder ein (jeweils unter richtiger Setzung von
+\#limit\#).
+#page#
+
+#ib(9)#5.4. #ib#Index#ie##ie(9)#
+#free(1.0)#
+#ib(9)#5.4.1. Stichwort- und/oder#ib#
+ Inhaltsverzeichnis#ie#se erstellen#ie(9)#
+#free(1.0)#
+
+ #on("i")#
+ Mit dem Programm '#ib#index#ie(1, "-Kommando")#' können Sie Stichwort- und Inhaltsverzeichnisse er­
+ stellen. #ib#Stichwortverzeichnis#ie#se können sortiert werden. Mehrere Stichwortverzeich­
+ nisse können Sie durch 'index merge' zusammenführen.
+ #off("i")#
+#free(1.0)#
+Durch den Aufruf von:
+
+____________________________________________________________________________
+
+ gib kommando:
+ index ("dateiname.p")
+
+____________________________________________________________________________
+
+
+
+werden durch #ib#Indexanweisungen#ie# gekennzeichnete Worte in Dateien, den sogenannten
+Indexdateien, gespeichert.
+
+Die Worte, die in einen Index übernommen werden sollen, müssen Sie in der Druck­
+datei für 'index' durch Anweisungen kennzeichnen. Solche #ib(1,"ff")#Indexanweisungen#ie# werden
+von den anderen Textbe- und -verarbeitungs-Programmen ('lineform', 'pageform',
+EUMEL-Drucker) ignoriert. Sie können also bei dem Schreiben mit dem Editor
+gleich festlegen, welche Worte in einen Index aufgenommen werden sollen.
+
+Solche Verzeichnisse von Worten werden im EUMEL-System allgemein als #ib#Index#ie#
+bezeichnet. 'index' kann ebenfalls benutzt werden, um ein #ib#Inhaltsverzeichnis#ie# und/oder
+ein Verzeichnis aller Abbildungen zu erstellen oder Literaturhinweise zu überprüfen.
+
+Nachdem eine oder mehrere Indexdateien aus einer Druckdatei erstellt sind, werden
+die Indexdateien auf Anfrage alphabetisch sortiert. Bei einem Inhaltsverzeichnis sollten
+Sie die Sortierung natürlich ablehnen. Nach der Sortierung werden gleiche Einträge
+automatisch zusammengefaßt und die entsprechenden Seitennummern nacheinander
+aufgeführt.
+
+
+
+#on("b")##on("i")#Praktischer Tip:#off("b")##off("i")#
+Möchten Sie nur eine Sortierung, aber keine Zusammenfassung von Einträgen, dann
+lehnen Sie die Sortieranfrage ab. Anschließend können Sie die Indexdatei mit '#ib#lex sort#ie#
+("indexdateiname")' sortieren. Hierbei bleiben gleiche Einträge erhalten.
+
+
+
+Das Programm
+
+____________________________________________________________________________
+
+ gib kommando:
+ index merge ("dateiname.i1", "dateiname.i2")
+
+____________________________________________________________________________
+
+
+
+erlaubt es Ihnen, zwei durch 'index' erzeugte Verzeichnisse zusammenzuführen und
+- nach Anfrage - wieder zu sortieren.
+#page#
+
+#ib(9)#5.4.1.1. #ib#Worte für 'index' kennzeichnen#ie##ie(9)# #goalpage ("ib")##goalpage("ie")#
+#free(1.0)#
+ #on("i")#
+ Worte, die in einen Index übernommen werden sollen, kennzeichnen Sie mit \#ib\#
+ und \#ie\#.
+ #off("i")#
+#free(1.0)#
+Da in einem Index - neben dem eigentlichen Worteintrag - die #ib#Seitennummer#ie#
+enthalten sein soll, arbeitet das Programm 'index' nur mit einer #ib#Druckdatei#ie#, d.h. einer
+Ausgabedatei von 'pageform'/'autopageform'. Die Indexworte werden in #ib#Indexdateien#ie#
+gesammelt. Die Indexdateien erhalten den Namen der bearbeiteten Datei, an den ".i"
+und die Nummer des Index angefügt wird.
+
+____________________________________________________________________________
+
+ ... Hier wird eine Eigenschaft des \#ib(1)\#EUMEL-
+ Systems\#ie(1)\# beschrieben. ...
+
+____________________________________________________________________________
+
+
+Die durch die Anweisungen #ib#\#ib\##ie(1,"-Anweisung")# und #ib#\#ie\##ie(1,"-Anweisung")# gekennzeichneten Worte werden mit der
+dazugehörigen Seitennummer in die erste Indexdatei geschrieben.
+
+Die Einträge in einer Indexdatei werden von den Seitennummern durch mindestens
+drei Punkte getrennt. Werden diese nicht gewünscht, können Sie sie leicht mit dem
+Editor entfernen.
+
+
+Sie haben die Möglichkeit, bis zu neun unterschiedliche Indexdateien zu erstellen,
+z.B. gehen durch
+
+____________________________________________________________________________
+
+ \#ib (1)\# und \#ie (1)\#
+
+____________________________________________________________________________
+
+
+gekennzeichnete Worte in die Indexdatei mit der Nummer 1, durch
+
+____________________________________________________________________________
+
+ \#ib (9)\# und \#ie (9)\#
+
+____________________________________________________________________________
+
+
+gekennzeichnete Worte gehen in die Indexdatei mit der Nummer 9. Wenn Sie nur
+einen Index erstellen müssen, dürfen die \#ib\#- und \#ie\#-Anweisungen ohne Para­
+meter benutzt werden, was gleichbedeutend ist mit \#ib (1)\# und \#ie (1)\#.
+
+
+
+Die durch \#ib\#- und \#ie\#-Anweisungen gekennzeichneten Worte können auch über
+Zeilengrenzen (mit Silbentrennungen) gehen.
+
+____________________________________________________________________________
+
+ .... \#ib\#viele Index­
+ Anweisungen\#ie\# ...
+
+____________________________________________________________________________
+
+
+'index' zieht getrennte Worte zusammen (hier: 'viele Index-Anweisungen'). Möchten
+Sie einige Worte in verschiedenen Indexdateien haben, dürfen Sie die \#ib\#- und
+\#ie\#-Anweisungen auch "schachteln". Dies können Sie besonders bei Kapitelüber­
+schriften nutzen.
+
+
+
+____________________________________________________________________________
+
+ \#ib(9)\#Eine Anweisung: die '\#ib\#limit\#ie\#'-Anweisung\#ie(9)\#
+
+____________________________________________________________________________
+
+
+In diesem Beispiel wird das Inhaltsverzeichnis in die Indexdatei '9' gebracht, während
+der "allgemeine" Index in der Indexdatei '1' gesammelt wird.
+#page#
+
+#ib(9)#5.4.1.2. #ib#Nebeneinträge erzeugen#ie##ie(9)#
+
+#free(1.0)#
+ #on("i")#
+ Sie haben die Möglichkeit, an die Seitennummer eines Eintrags einen beliebigen
+ Text anfügen zu lassen.
+ #off("i")# #free(1.0)#
+Beispiel:
+
+
+ EUMEL-System ... 27ff.
+ Monitor ........ 13(Def.)
+
+
+
+
+
+Dies wird durch eine weitere Form der \#ib\#-Anweisung ermöglicht:
+
+____________________________________________________________________________
+
+ ... der \#ib(1,"(Kap.4)")\#EUMEL-Editor\#ie\# ist gut
+ geeignet, Texte zu erstellen ...
+
+____________________________________________________________________________
+
+
+
+erzeugt den folgenden Eintrag:
+
+
+
+Druckbild:
+
+ EUMEL-Editor ... 1(Kap.4)
+
+
+An einen Eintrag können Sie einen weiteren Text angefügen, um etwa Untereinträge
+zu bilden:
+
+Druckbild:
+
+ EUMEL-System .................................. 27
+
+ EUMEL-System, komplexes ....................... 29
+
+
+Das wird ebenfalls durch eine andere Form der \#ib\#-Anweisung ermöglicht:
+
+____________________________________________________________________________
+
+ ... ist das \#ib\#EUMEL-System\#ie(1,", benutzerfreundliches")\#
+ wirklich ein benutzerfreundliches System ...
+
+____________________________________________________________________________
+
+
+erzeugt den folgenden Eintrag:
+
+Druckbild:
+
+ EUMEL-System, benutzerfreundliches ............ 28
+
+
+
+Nach der Erstellung einer Indexdatei können - nach interaktiver Anfrage - die
+Einträge sortiert werden. Die Sortierung erfolgt alphabetisch nach DIN 5007, Abschnitt
+1 und 3.2 (Umlaute werden "richtig" eingeordnet).
+
+
+
+Wie bereits erwähnt, können Sie 'index' vielseitig einsetzen:
+
+a) Erstellung von Stichwortverzeichnissen:
+ Wie bereits beschrieben.
+
+b) Erstellung von Inhaltsverzeichnissen:
+ Kapitelüberschriften mit eigenen Indexanweisungen klammern und durch 'index'
+ wie beschrieben verarbeiten.
+
+ ____________________________________________________________________________
+
+ \#ib(9)\#6.1. Eine Datei drucken\#ie(9)\#
+
+ _________________________________________________________________________
+
+
+ Dann sind Sie sicher, daß das Inhaltsverzeichnis bezüglich Seitennummern und
+ Kapitelüberschriften korrekt ist.
+
+c) Erstellung von #ib#Abbildungsverzeichnisse#ie#n:
+ Abbildungsüberschriften- bzw. -unterschriften wie Kapitelüberschriften verarbei­
+ ten.
+
+d) Überprüfung von Literaturhinweisen auf Vollständigkeit:
+ Sie klammern alle Literaturhinweise mit gesonderten Indexanweisungen.
+
+ ____________________________________________________________________________
+
+ \#ib(8)\#/Meier82/\#ie(8)\#)
+
+ _________________________________________________________________________
+
+ und überprüfen dann mit Hilfe dieser Indexdatei die Literaturverweise. So können
+ Sie sichergehen, daß alle Literaturverweise im Text auch in der Literaturaufstellung
+ stehen.
+#page#
+
+#ib(9)#5.4.1.3. #ib#Indexdateien zusammenführen#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Durch das Programm '#ib#index merge#ie(1,"-Kommando")#' können Sie eine Indexdatei in eine zweite
+ "einmischen".
+ #off("i")#
+#free(1.0)#
+Es ist somit möglich, einen Index zu erstellen, der sich über mehrere Dateien er­
+streckt, indem Sie 'index' die Druckdateien dieser Dateien bearbeiten und an­
+schließend die entstandenen Indexdateien mit 'index merge' zusammenfassen lassen.
+Indexdateien können ggf. mit dem Editor bzw. 'lineform' und/oder 'pageform'/­
+'autopageform' bearbeitet und anschließend gedruckt werden.
+
+
+____________________________________________________________________________
+
+ gib kommando:
+ index merge ("1.kapitel.i1", "2.kapitel.i1")
+
+____________________________________________________________________________
+
+
+
+
+Hier wird die Indexdatei des 1. Kapitels in die Indexdatei des 2. Kapitels eingeordnet
+und auf Wunsch sortiert.
+#page#
+
+#ib(9)#5.5. #ib#Outline#ie##ie(9)#
+#goalpage("outline")#
+#free(1.0)#
+#ib(9)#5.5.1. Eine#ib# Strukturübersicht#ie# oder
+ #ib#Zusammenfassung#ie# erstellen#ie(9)#
+#free(1.0)#
+ #on("i")#
+ Das Programm 'outline' erstellt aus einem Text eine Zusammenfassung aller
+ (Kapitel-) Überschriften und Stichworte, sofern diese mit #ib#Index-Anweisungen#ie#
+ gekennzeichnet sind.
+ #off("i")#
+#free(1.0)#
+Manchmal sollen Stichworte oder das Inhaltsverzeichnis aus einem Text herausgeholt
+werden, ohne vorher 'pageform' durchlaufen zu müssen. Das ist dann nützlich, wenn
+Sie
+
+- Stichworte auf Korrektheit und Vollständigkeit überprüfen möchten;
+- die Reihenfolge von Kapiteln überprüfen müssen;
+- eine Übersicht durch Kapitel-Überschriften und Stichworte anfertigen möchten;
+- einen Text auf logische Zusammenstellung überprüfen.
+
+
+In solchen Fällen hilft das Programm 'outline', das mit dem Monitor-Kommando
+
+____________________________________________________________________________
+
+ gib kommando:
+ outline ("dateiname")
+
+____________________________________________________________________________
+
+
+
+aufgerufen wird. 'outline' arbeitet ähnlich wie 'index', indem es alle mit \#ib\# und \#ie\#
+markierten Textteile in eine Datei mit dem Zusatz 'outline' schreibt. Im Unterschied zu
+'index' muß die Eingabe-Datei keine Druckdatei ('.p'-Zusatz) sein.
+
+Das Programm 'outline' fragt zuerst, mit welcher Indexnummer das Inhaltsverzeichnis
+versehen ist. Das ist notwendig, weil die Kapitelüberschriften gegenüber Stichwörtern
+in der 'outline'-Datei hervorgehoben werden (Einrückungen).
+
+Eingabe-Datei ("dateiname"):
+
+____________________________________________________________________________
+
+ ...
+ \#ib(9)\#1. Kapitel\#ie(9)\#
+ ...
+ ...\#ib\#Stichwort 1\#ie\#
+ \#ib\#Stichwort 2\#ie\#...
+
+ \#ib(9)\#1.1. Kapitel\#ie(9)\#
+ ...
+ \#ib\#Stichwort 3\#ie\#
+ usw...
+
+____________________________________________________________________________
+
+
+
+Druckbild der erzeugten Datei ("dateiname.outline"):
+
+ 1. Kapitel
+ Stichwort 1
+ Stichwort 2
+ 1.1. Kapitel
+ Stichwort 3
+
+
+In diesem Beispiel werden alle Indizes mit Ausnahme der Kapitelüberschrift jeweils in
+einer Zeile aufgeführt und gegenüber der Kapitelüberschrift eingerückt. Ein neues
+Kapitel, sofern es dezimal gekennzeichnet ist, wird gegenüber einem Kapitel mit
+höherer Ordnung eingerückt.
+#page#
+
+#ib(9)#5.6. #ib#Print#ie##ie(9)##goalpage("print")#
+#free(1.0)#
+ #on("i")#
+ Der #ib#EUMEL-Drucker#ie#, der mit dem #ib#'print'#ie(1,"-Kommando")#-Kommando angesprochen wird, ist
+ eine Software-Schnittstelle zu einem angeschlossenen Drucker. In diesem Kapitel
+ wird erklärt, wie Sie mit dem EUMEL-Drucker eine Datei drucken können und
+ welche speziellen Anweisungen den Drucker steuern.
+ #off("i")#
+#free(1.0)#
+Jeder Drucker erbringt "hardwaremäßig" unterschiedliche Leistungen (z.B. Typen und
+Modifikationen). Diese Leistungen werden durch Eingabe spezieller Zeichenfolgen
+veranlaßt, die herstellerspezifisch sind.
+
+Um vom EUMEL-System unterschiedliche Drucker auf gleiche Weise ansprechen zu
+können, wurde eine Software-Schnittstelle geschaffen, die #ib#EUMEL-Drucker#ie# ge­
+nannt wird. Der EUMEL-Drucker akzeptiert eine Datei und veranlaßt, daß diese in
+geeigneter Weise gedruckt wird. Weiterhin beachtet der EUMEL-Drucker die An­
+weisungen der Textkosmetik. Die Form der Anweisungen der Textkosmetik und des
+EUMEL-Druckers sind identisch.
+#page#
+
+#ib(9)#5.6.1. #ib#Eine Datei drucken#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Mit dem Kommando '#ib#print#ie#' können Sie dem EUMEL-Drucker eine Datei zum
+ Drucken übergeben.
+ #off("i")#
+#free(1.0)#
+____________________________________________________________________________
+
+ gib kommando:
+ print ("dateiname")
+
+____________________________________________________________________________
+
+
+In der Regel ist im EUMEL-System (Multi-User) ein "Spooler" installiert, so daß Sie
+sofort mit der Arbeit fortfahren können. Der EUMEL-Drucker arbeitet in diesem Fall
+parallel zu Ihren anderen Arbeiten.
+#page#
+
+#ib(9)#5.6.2. #ib#Anweisungen für den EUMEL-Drucker#ie##ie(9)#
+#free(1.0)#
+Ein Text (eine Datei) kann vom Drucker auch ohne Anweisungen gedruckt werden,
+etwa für Probedrucke. Für diesen Fall hat der Drucker vernünftige Voreinstellungen.
+Für einen "normalen" Text brauchen Sie keine speziellen Druckeranweisungen in den
+zu druckenden Text einzufügen, denn die Anweisungen für die Textkosmetik reichen
+zur Druckersteuerung aus. Nur wenn besondere Leistungen verlangt werden, wie z.B.
+Blocksatz oder den gedruckten Text an eine bestimmte Stelle zu plazieren, sind
+Druckeranweisungen notwendig.
+
+Werden vom Drucker Leistungen verlangt, die hardwaremäßig nicht vorhanden sind,
+so sorgt der EUMEL-Drucker dafür, daß eine möglichst äquivalente Leistung erbracht
+wird. Fordern Sie beispielsweise einen nicht vorhandenen Schrifttyp an, wird mit
+dem Standard-Schrifttyp der jeweiligen Installation gedruckt. Damit ist es Ihnen
+möglich, einen Text, der eigentlich für einen anderen Drucker bestimmt ist, auf einem
+Drucker zu drucken, der die geforderte Type nicht kennt.
+
+Wie bereits erwähnt, beachtet der EUMEL-Drucker die gleichen Anweisungen wie
+die Textkosmetik-Programme, aber einige Anweisungen sind nur für den Drucker
+implementiert. Eine #ib#\#type\#-Anweisung#ie# beispielsweise, die einen bestimmten Schrift­
+typ anfordert, wird vom EUMEL-Drucker als Befehlsfolge an den angeschlossenen
+Hardware-Drucker übergeben, sofern der Schrifttyp auf dem Drucker vorhanden ist.
+Wie die Anweisungen geschrieben werden müssen, wurde in der Beschreibung der
+Textkosmetik geschildert.
+
+Anweisungen werden nicht gedruckt. Besteht eine Zeile nur aus Anweisungen, so wird
+diese Zeile vom EUMEL-Drucker nicht gedruckt. Im Gegensatz zu den Programmen
+der Textkosmetik werden unbekannte oder #ib#fehlerhafte Anweisungen#ie# vom EUMEL­
+Drucker ohne Fehlermeldung "verschluckt".
+
+Neben den "normalen" Anweisungen, die nur in "\#"-Zeichen eingeschlossen wer­
+den, gibt es noch eine andere Form:
+
+Kommentar-#ib#Anweisungen#ie(1,", Kommentar-")#:
+
+ Werden in "\#-" und "-\#"-Zeichen eingeschlossen. Solche Anweisungen wer­
+ den ignoriert.
+
+____________________________________________________________________________
+
+ ..........................
+ Text......................
+ ..........................
+ Kommentar-Anweisungen werden
+ beim Drucken ignoriert.
+ \#---- Ende der Seite 1 ---\#
+
+____________________________________________________________________________
+
+
+
+Die letze Zeile erscheint im gedruckten Text nicht.
+#page#
+#goalpage("block")#
+#ib(9)#5.6.3. #ib#Blocksatz#ie# #ie(9)#
+#free(1.0)#
+#ib(9)#5.6.3.1. #ib#Randausgleich#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Die Anweisung #ib#\#block\##ie(1,"-Anweisung")# bewirkt einen Blocksatz beim Druck.
+ #off("i")#
+#free(1.0)#
+Fügen Sie in den Text (meist am Anfang einer Datei) die Anweisung
+
+____________________________________________________________________________
+
+ \#block\#
+
+____________________________________________________________________________
+
+
+ein, druckt der Drucker ab dieser Stelle alle Zeilen, die nicht mit einem Absatzkenn­
+zeichen versehen sind, im #ib#Blocksatz#ie#. Das heißt, daß durch Vergrößern der Wort­
+abstände alle Zeilen an der gleichen Position enden (rechter #ib#Randausgleich#ie#). Preis­
+werte Drucker können dies nur durch Einfügen ganzer Leerzeichen zwischen den
+Worten vornehmen, was sich oft beim Lesen störend bemerkbar macht. Bei qualitativ
+hochwertigen Druckern wird dagegen der Blocksatz durch Einfügen kleinerer Abstän­
+de zwischen den Worten erreicht.
+
+Der Text einer Zeile wird durch Vergrößern der #ib#Wortlücken#ie(1, ", Vergrößern der")# auf die Zeilenlänge, die
+durch die \#limit\#-Anweisung eingestellt ist, verbreitert.
+
+
+a) Es werden nicht verbreitert:
+
+ - Absatzzeilen;
+ - der Text bis zum letzten #ib#Mehrfachblank#ie#;
+ - führende Leerzeichen (#ib#Einrückung#ie#);
+ - ein Leerzeichen hinter einer Aufzählung (siehe dazu b);
+ - geschützte Blanks.
+
+
+
+b) #ib#Aufzählungen#ie# gibt es nur nach einer Absatzzeile:
+
+ - "Spiegelstrich" (Bindestrich und Leerzeichen am Anfang der Zeile);
+ - Doppelpunkt als Ende des ersten Wortes (Position < 20);
+ - schliessende Klammer oder Punkt als Ende des ersten Wortes (Position < 7),
+ z.B. 1) oder 1.
+#page#
+#goalpage ("pageblock")#
+
+#ib(9)#5.6.3.2. #ib#Seitenausgleich#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#pageblock\#-Anweisung#ie# wird der Drucker veranlaßt, einen Seiten­
+ ausgleich (ähnlich wie bei der \#block\#-Anweisung für den rechten Rand­
+ ausgleich) vorzunehmen.
+ #off("i")#
+#free(1.0)#
+Durch die automatische oder interaktive Seitenformatierung oder durch einen Fuß­
+notenumbruch von 'pageform'/'autoform' bleiben oft am Ende einer Seite Zeilen leer.
+Dies können Sie durch die \#pageblock\#-Anweisung verhindern. Sie veranlaßt den
+Drucker, Zwischenräume (Fachbegriff: Durchschuß) zwischen den Zeilen einzufügen,
+so daß alle letzten Zeilen auf allen Seiten auf gleicher Höhe abschließen. Ebenso wie
+beim Randausgleich hängt die Güte des Druckergebnisses jedoch von den Fähig­
+keiten des angeschlossenen Druckers ab.
+
+Beachten Sie jedoch, daß manche Verlage so bearbeitete Seiten nicht wünschen, weil
+bei Verwendung von zu dünnem Papier beim Druck Zeilen "durchscheinen" können,
+so daß das Lesen erschwert wird.
+
+Ist die Anweisung \#pageblock\# gegeben, können Sie in 'pageform' die Seitengrenze
+auch über das rechnerische Seitenende hinaus plazieren. In diesem Fall werden die
+Zeilen vom Drucker gestaucht.
+#mark ("", "")#
+
+
+____________________________________________________________________________
+
+PAGEFORM für x Zeilen: dateiname ---> dateiname.p
+
+____________________________________________________________________________
+
+
+____________________________________________________________________________
+
+ Seitenende verschieben: UP, DOWN / bestaetigen: RETURN / Abbruch: ESC
+
+____________________________________________________________________________
+
+
+#page#
+
+#ib(9)#5.6.4. #ib#Schreibfeld verschieben#ie##ie(9)# #goalpage("start")#
+#free(1.0)#
+ #on("i")#
+ Durch die Anweisung #ib#\#start\# #ie(1,"-Anweisung")#ist es Ihnen möglich, das #ib#Schreibfeld#ie# beim Druck auf
+ dem Papier an eine andere Stelle zu plazieren.
+ #off("i")#
+#free(1.0)#
+Der EUMEL-Drucker plaziert das Schreibfeld auf einem Drucker automatisch derart,
+daß ein genügender Rand verbleibt. Die Wirkung dieser Voreinstellung ist natürlich
+abhängig vom Drucker und der Installation. Mit der \#start\#-Anweisung können Sie
+die automatische Einstellung verändern.
+
+
+____________________________________________________________________________
+
+ \#start (1.0, 2.0)\#
+
+____________________________________________________________________________
+
+
+legt die linke, obere Ecke des Schreibfeldes fest (vom linken Rand 1 cm, vom oberen
+Rand 2 cm). Die standardmäßige Voreinstellung ist \#start (2.54, 2.35)\#. Die \#start
+(...)\#-Anweisung können Sie nur einmal pro Seite geben.
+#page#
+
diff --git a/doc/user/benutzerhandbuch.5c b/doc/user/benutzerhandbuch.5c
new file mode 100644
index 0000000..010cacd
--- /dev/null
+++ b/doc/user/benutzerhandbuch.5c
@@ -0,0 +1,711 @@
+#start(5.0,1.5)##pagenr("%",93)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 5: Textkosmetik und Druck
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+5 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 5 - %
+#tableend##clearpos#
+#end#
+#goalpage("center")#
+#ib(9)#5.6.5. #ib#Zentriert drucken#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#center\#-Anweisung#ie# können Sie einen Text in der Mitte der Zeile drucken
+ lassen.
+ #off("i")#
+#free(1.0)#
+
+Die \#center\#-Anweisung zentriert den Text einer Absatzzeile.
+
+
+____________________________________________________________________________
+
+ \#center\#Diese Zeile wird zentriert gedruckt.
+
+#mark ("", "")#
+
+____________________________________________________________________________
+
+
+Druckbild:
+
+ #center#Diese Zeile wird zentriert gedruckt.
+#page#
+
+#ib(9)#5.6.6. #ib#Rechtsbündig drucken#ie##ie(9)#
+#goalpage("right")#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#right\#-Anweisung#ie# können Sie einen Teil einer Absatzzeile rechtsbündig
+ drucken.
+ #off("i")#
+#free(1.0)#
+
+Die \#right\#-Anweisung veranlaßt, daß der nachfolgende Text rechtsbündig gedruckt
+wird.
+
+____________________________________________________________________________
+
+ \#head\#
+ \#center\#Diese Zeile wird zentriert\#right\#%
+
+ \#end\#
+
+____________________________________________________________________________
+
+
+
+Hierbei wird die Seitenzahl rechtsbündig gedruckt.
+
+Beachten Sie, daß die \#center\#- und die \#right\#-Anweisung zusammen verwendet
+werden können. Beide Anweisungen wirken jedoch nur, wenn sie in einer Absatzzeile
+stehen.
+
+#mark ("", "")#
+#page#
+
+#ib(9)#5.6.7. #ib#Übereinander drucken#ie##ie(9)#
+#goalpage ("b")#
+#free(1.0)#
+ #on("i")#
+ Mit der #ib#\#b\#-Anweisung#ie# können Sie zwei Zeichen übereinander drucken.
+ #off("i")#
+
+#free(1.0)#
+Die \#b\#-Anweisung veranlaßt, daß zwei aufeinanderfolgende Zeichen, die durch die
+\#b\#-Anweisung verbunden sind, übereinander gedruckt werden.
+
+
+____________________________________________________________________________
+
+... 0\#b\#/ ...
+
+____________________________________________________________________________
+
+
+
+
+Druckbild:
+
+... 0#b#/ ...
+
+
+Das Zeichen '/' wird über das Zeichen '0' gedruckt. 'lineform'/'autoform' nimmt für die
+Zeilenberechnung nur ein Zeichen. Beachten Sie, daß direkt vor oder nach der
+\#b\#-Anweisung keine Anweisung oder kein Blank stehen darf.
+#mark ("", "")#
+#page#
+
+#ib(9)#5.7. #ib#Textkosmetik-Makros#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ #ib#Makros#ie# verkürzen Ihren Arbeitsvorgang bei immer wiederkehrenden Textteilen
+ und/oder Anweisungen.
+ #off("i")#
+#free(1.0)#
+Unter 'Makro' verstehen wir eine "große" Anweisung, die aus vielen kleinen besteht
+und die Sie mit Hilfe des Makronamens aufrufen können.
+
+Textkosmetik-Makros kommen zum Einsatz bei:
+
+- immer wiederkehrenden Textteilen;
+- immer wiederkehrenden Anweisungssequenzen;
+- bei der Erstellung von Manuskripten, deren endgültige Form Sie anfänglich noch
+ nicht kennen oder die Sie noch ändern möchten;
+- oder bei Folgen von direkten Drucker-Anweisungen, die bestimmte Leistungen
+ erbringen.
+
+Die Definition von einem oder mehreren #ib#Makros#ie# wird mit dem Editor vorgenommen.
+Diese #ib#Makro-Datei#ie# wird dann geladen. Von diesem Augenblick an "kennen" 'line­
+form'/'autoform' und 'pageform'/'autopageform' die Makros, d.h. die Textzeilen und/
+oder Anweisungen, die sich unter dem #ib#Makronamen#ie# "verbergen".
+
+'lineform'/'autoform' beachtet die Anweisungen, die ggf. in den Makros enthalten sind.
+Sie erscheinen jedoch nicht in der Datei. Erst 'pageform'/'autopageform' setzt diese in
+die Druckdatei ein.
+#page#
+
+#ib(9)#5.7.1. Ein Makro-Beispiel#ie(9)#
+#free(1.0)#
+ #on("is")#
+ Hier wird Ihnen ein einfaches Beispiel für einen Briefkopf gezeigt.
+ #off("is")#
+#free(1.0)#
+Angenommen, Sie schreiben mit dem EUMEL-System Ihre Geschäftsbriefe. Sie
+haben einen Drucker zur Verfügung, mit dem Sie auch die Briefköpfe erstellen kön­
+nen. Für den #ib#Briefkopf#ie# schreiben Sie ein Makro \#kopf\# in eine Datei "macro defini­
+tionen":
+
+____________________________________________________________________________
+
+ \#*kopf\#
+ \#type("fett und gross")\#Firmenname
+ \#type("fett")\#Softwareprodukte
+ \#type("klein")\#Straße
+ Stadt
+ \#type ("normal")\#
+ \#*macro end\#
+
+____________________________________________________________________________
+
+
+Der Name des Makros ist \#kopf\#. Beachten Sie, daß eine #ib#Makro-Definition#ie# mit dem
+Namen des Makros beginnen muß. Der #ib#Makroname#ie# muß dabei mit einem #on("b")#*#off("b")# gekenn­
+zeichnet werden, um ihn von "normalen" Text-Anweisungen unterscheiden zu kön­
+nen. Jedes Makro wird mit einer \#*macro end\#-Anweisung beendet. Sie dürfen
+mehrere Makros hintereinander in die Datei schreiben.
+
+Nun müssen Sie das so definierte Makro 'laden':
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#load macros#ie# ("macro definitionen")
+
+____________________________________________________________________________
+#goalpage("load macros")##goalpage("list macros")#
+
+
+Zur Kontrolle können Sie sich die geladenen Makros in das Notizbuch ausgeben
+lassen:
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#list macros#ie#
+
+____________________________________________________________________________
+#mark ("", "")#
+
+
+
+Nun haben Sie von jetzt an eine neue Anweisung (mit dem Namen \#kopf\#) zur Ver­
+fügung, mit der Sie einen Briefkopf in jeden Brief drucken können. Sie schreiben nun
+folgenden Brief:
+
+____________________________________________________________________________
+
+ \#kopf\#
+
+ Sehr geehrter Herr ....
+
+ usw.
+
+____________________________________________________________________________
+
+
+Beachten Sie hierbei, daß das Makro in Ihrem Text als Anweisung ohne #on("b")#*#off("b")# steht. Der
+#ib#Aufruf eines Makros#ie#, welches z.B. in einer von 'lineform' zu bearbeitenden Datei
+steht, unterscheidet sich also nicht von einer "normalen" Textanweisung.
+
+Nachdem Sie mit 'lineform' den Brief zeilenweise formatiert haben, kontrollieren Sie
+die formatierte Datei. Hier hat sich noch nichts verändert. Die neue Anweisung \#kopf\#
+steht unverändert in der Datei. 'lineform' beachtet zwar alle Anweisungen und Text­
+zeilen eines Makros, setzt diese jedoch nicht in die Datei ein. Allerdings ist 'lineform'
+nicht in der Lage, die \#type\#- und \#limit\#-Anweisungen eines Makros zu erkennen,
+wenn es an erster Stelle in einer Datei steht und in dessen Definition gleich zu
+Anfang diese Anweisungen korrekt aufgeführt sind. Stattdessen fragt 'lineform' an­
+fangs 'type' und 'limit' an. Das können Sie umgehen, indem Sie mittels 'CR' die
+Abfrage in 'lineform' ignorieren.
+
+Nun formatieren Sie die Datei, die den Brief enthält, mit 'pageform'/'autopageform'. In
+der Druckdatei ist nun die Anweisung \#kopf\# verschwunden. Dort stehen nun die
+Zeilen des #ib#Makrorumpf#ie#es. 'pageform'/'autopageform' setzt die Zeilen des Makros in
+die Druckdatei ein:
+
+____________________________________________________________________________
+
+ \#type("fett und gross")\#Firmenname
+ \#type("fett")\#Softwareprodukte
+ \#type("klein")\#Straße
+ Stadt
+ \#type ("normal")\#
+
+
+ Sehr geehrter Herr ...
+ usw.
+
+
+____________________________________________________________________________
+
+
+
+#on("b")##on("i")#Anmerkung:#off("b")##off("i")#
+Makros, die den gleichen Namen haben, aber sich durch die Anzahl der Parameter
+unterscheiden, sind nicht erlaubt. Es ist auch nicht gestattet, Makros innerhalb einer
+Makro-Definition aufzurufen.
+
+Beachten Sie ferner, daß Makro-Texte so verwendet werden, wie sie mit 'load
+macros' geladen werden.
+
+____________________________________________________________________________
+
+ \#*textanfang\#
+ \#limit(11.0)\#
+ \#block\#
+ \#pageblock\#
+ \#type("trium8")\#
+ \#*macro end\#
+
+____________________________________________________________________________
+
+
+Betätigen Sie in der Makro-Datei nach jeder Zeile die #taste1(" CR ")#-Taste (Absatz), dann
+erhalten Sie nach jedem \#...\# einen Absatz, was zum Beispiel bei Kapitelüberschriften
+wünschenswert ist, nicht jedoch bei kleineren Anweisungen, bei denen dann mitten im
+Satz ein Absatz erschiene. In solchen Anwendungen sollten Sie Makros ohne Absätze
+speichern. Beachten Sie ferner, daß aus programmtechnischen Gründen eine \#foot\#-
+oder die abschließende \#end\#-Anweisung einer Fußnote nicht in einem Makro ent­
+halten sein darf.
+#page#
+
+#ib(9)#5.7.2. Ein Beispiel mit #ib#Makro-Parameter#ie#n#ie(9)#
+#free(1.0)#
+ #on("i")#
+ Makro-Parameter erlauben es Ihnen, immer wiederkehrende Textteile, die sich
+ nur geringfügig voneinander unterscheiden, zu erzeugen.
+ #off("i")#
+#free(1.0)#
+Ihnen fällt nun auf, daß Sie Ihr Makro noch etwas verbessern können. Sie möchten
+das Datum mit in den Briefkopf aufnehmen. Somit editieren Sie Ihre Makro-Datei
+folgendermaßen (beachten Sie die '$'-Zeichen):
+
+____________________________________________________________________________
+
+ \#*kopf ($1)\#
+ \#type("gross")\#Firmenname
+ \#type("fett")\#Softwareprodukte
+ \#type("klein")\#Straße
+ Stadtname
+ \#type ("normal")\#
+
+ Stadtname, den $1
+ \#*macro end\#
+
+____________________________________________________________________________
+
+
+Damit haben Sie dem \#kopf\#-Makro einen Parameter gegeben: '$1'; die Parameter
+werden numeriert. Ein zweiter Parameter würde '$2' heißen usw..
+
+Bei der Erstellung eines Briefes müssen Sie die Anweisung \#kopf\# mit dem jeweiligen
+Datum in einen Brief schreiben:
+
+____________________________________________________________________________
+
+ \#kopf ("20.8.1986")\#
+
+____________________________________________________________________________
+
+
+'pageform'/'autopageform' setzt nun das angegebene Datum direkt hinter 'Stadtname,
+den' in den Briefkopf ein (in der Druckdatei). Beachten Sie, daß alle Parameter einer
+Makro-Anweisung in Anführungszeichen stehen müssen (auch Zahlen).
+#page#
+
+#ib(9)#5.7.3. #ib#Makros für Manuskripte#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ Hier wird gezeigt, wie Sie mit Makros Anweisungen formulieren können, die
+ aussagen, um was es sich bei einem Text handelt, und nicht, in welchem Format
+ er gedruckt wird.
+ #off("i")#
+#free(1.0)#
+Bei Manuskripten für Artikel, Bücher und Manuals wissen Sie oft vorher nicht, in
+welchem Format das Manuskript gedruckt werden wird. Zu diesem Zweck ist es
+ebenfalls nützlich, Makros zu verwenden.
+
+____________________________________________________________________________
+
+ \#*kapitelanfang ($1)\#
+ \#free (2.0)\#
+ \#type ("gross")\#\#ib (9)\#$1\#ie (9)\#\#type ("normal")\#
+
+ \#*macro end\#
+
+____________________________________________________________________________
+
+
+In diesem Beispiel wird ein Makro für den Anfang eines Kapitels definiert. Zwischen
+zwei Kapiteln sollen hier zwei Zentimeter Zwischenraum bleiben, die Kapitel-
+Überschrift (als Parameter) wird in einer größeren Schrift gedruckt. Zusätzlich wird die
+Überschrift für ein Inhaltsverzeichnis in den 9. Index aufgenommen. Nach der Über­
+schrift wird eine Leerzeile eingeschoben, bevor der eigentliche Text anfängt.
+
+Der Anwender dieses Makros schreibt also z.B. folgende Anweisung:
+
+____________________________________________________________________________
+
+ \#kapitelanfang ("Ein Beispiel fuer Manuskripte")\#
+
+____________________________________________________________________________
+
+
+
+Beachten Sie, daß die Kapitel-Überschrift nicht länger als eine Textzeile sein darf.
+Das liegt daran, daß 'lineform'/'autoform' zwar die Zeile bearbeitet, aber nicht in den
+Text einsetzt. 'pageform'/'autopageform' setzt also die unveränderte - nicht umge­
+brochene - Textzeile ein.
+
+Sie können nun Makros für die meisten Textstrukturen definieren. Schreibkräfte
+brauchen dann in der Regel die meisten Text-Anweisungen nicht zu kennen, son­
+dern nur noch eine Anzahl von einfachen Makro-Anweisungen.
+
+Die Makro-Definitionen können jederzeit geändert werden, um wechselnden Bedürf­
+nissen angepaßt zu werden, z.B. wenn ein Verlag ein bestimmtes Schreibformat
+verbindlich vorschreibt. In diesem Fall brauchen nicht alle Text-Dateien geändert zu
+werden, sondern nur die Makro-Definitionen.
+
+Ein weiterer Vorteil einer solchen Vorgehensweise ist, daß die Makro-Anweisungen in
+diesem Fall angeben, #on("i")##on("b")#was#off("i")##off("b")# eine bestimmte Text-Struktur ist, und nicht, #on("i")##on("b")#wie#off("i")##off("b")# die
+Struktur behandelt werden soll.
+
+#on("b")#Anmerkung#off("b")#:
+In eine Makro-Definition sollten Sie ggf. \#limit\#-, \#type\#- und \#linefeed\#-
+Angaben einsetzen, um die Makros unabhängig von der Aufrufstelle zu machen. Ggf.
+sollten Sie auch die Datei vorher mit 'lineform' bearbeiten, um Trennungen vorzu­
+nehmen.
+#page#
+
+#ib(9)#5.8. Textkosmetik für Spezialisten#ie(9)#
+#free(1.0)#
+ #on("i")#
+ In diesem Abschnitt werden Ihnen Kommandos und Anweisungen vorgestellt, die
+ in der Regel nur für Spezialfälle benötigt werden.
+ #off("i")#
+#free(1.0)#
+
+#ib(9)#5.8.1. Schalter-Anweisungen für
+ #ib#Kopf- und Fußbereiche#ie(1, "Schalter-Anweisungen für")##ie(9)#
+#goalpage("head off")##goalpage("bottom off")#
+#free(1.0)#
+
+Mit den Textkosmetik-Anweisungen
+
+____________________________________________________________________________
+
+ #ib#\#head off\##ie#
+
+ #ib#\#bottom off\##ie#
+
+____________________________________________________________________________
+
+
+
+können Sie die Erzeugung von Kopf- oder Fußzeilen abschalten. Mit
+
+
+____________________________________________________________________________
+
+ #ib#\#head on\##ie#
+
+ #ib#\#bottom on\##ie#
+
+____________________________________________________________________________
+
+
+können Sie diese wieder erzeugen. Beachten Sie, daß diese Anweisungen an der
+Stelle beachtet werden, an der sie im Text stehen, d.h. diese Anweisungen gelten
+bereits für die Seite, auf der sie sich bei der 'pageform'-Bearbeitung befinden. Möch­
+ten Sie die Kopfzeilen für eine Seite abschalten, dann sollten Sie an dieser Stelle die
+#ib#\#head off\#-Anweisung#ie# geben. Um die Kopfzeilen für die nächste Seite wieder einzu­
+schalten, sollten Sie die #ib#\#head on\#-Anweisung#ie# an einer Stelle plazieren, von der Sie
+sicher sind, daß sie auf die folgende Seite gelangt (im Zweifelsfall nach einer
+\#page\#-Anweisung).
+#mark ("", "")#
+#page#
+
+#ib(9)#5.8.1.1. #ib#Kopf- und Fußbereiche abstellen#ie##ie(9)#
+#goalpage ("first head")##goalpage("last bottom")#
+#free(1.0)#
+ #on("i")#
+ Mit '#ib#first head#ie#' bzw. '#ib#last bottom#ie#' können Sie Kopf- oder Fußbereiche auf der
+ ersten (letzten) Seite ab- oder wieder anschalten.
+ #off("i")#
+#free(1.0)#
+Manchmal ist es notwendig, die Erzeugung von 'head'-Zeilen auf der ersten Seite
+(z.B. weil dort ein Briefkopf erscheint) und/oder 'bottom'-Zeilen auf der letzten Seite
+(weil keine Folgeseite existiert) zu verhindern. Mit dem Monitor-Kommando
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#first head (FALSE)#ie#
+
+____________________________________________________________________________
+
+
+können Sie bei 'pageform' die Erzeugung von 'head'-Zeilen auf der ersten Seite
+jeder Druckdatei abschalten. Die Erzeugung bleibt so lange abgeschaltet, bis sie
+wieder durch
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#first head (TRUE)#ie#
+
+____________________________________________________________________________
+
+
+angeschaltet wird. Das gleiche gilt analog für 'bottom'-Zeilen auf der letzten Seite:
+Ein- und Ausschalten durch
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#last bottom (FALSE)#ie#
+
+____________________________________________________________________________
+#mark("","")#
+
+bzw.
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#last bottom (TRUE)#ie#
+
+____________________________________________________________________________
+#page#
+
+#ib(9)#5.8.2. Textzeilen markieren#ie(9)#
+#goalpage("mark")#
+#free(1.0)#
+Mit der Anweisung
+
+
+____________________________________________________________________________
+
+ \#mark("markierungszeichen links","markierungszeichen rechts")\#
+
+____________________________________________________________________________
+
+
+
+können Sie einen Textabschnitt an den Rändern (außerhalb des Schreibfeldes!) mit
+Texten markieren, wie z.B. im folgenden mit der Anweisung
+
+#mark ("", "")#
+
+____________________________________________________________________________
+
+ \#mark ("> ", " <")\#
+
+____________________________________________________________________________
+
+
+#mark ("> ", " <")#
+Dabei gilt der erste Parameter für den linken und der zweite für den rechten Rand.
+Beachten Sie, daß Sie einen genügenden Zwischenraum zwischen der Markierung
+und dem Rand mit angeben müssen.
+
+Die Markierung ist insbesondere für Manuals interessant, wo Änderungen gegen­
+über der letzten Version hervorgehoben werden. Das Markierungszeichen wird neben
+den linken und rechten Rand gedruckt (also außerhalb des von \#start\# und \#limit\#
+begrenzten Textfeldes). Für das Drucken der Markierung wird der/die Schrifttyp/ Modi­
+fikationen benutzt, die an der Stelle der \#mark\#-Anweisung eingeschaltet ist. Der
+eigentliche Text bleibt selbstverständlich unberührt.
+#mark ("", "")#
+
+Um nur einen Rand zu markieren, kann auch ein leerer Parameter angegeben
+werden.
+
+____________________________________________________________________________
+
+ \#type ("pica")\#\#mark ("", " |")\#\#type ("normal")\#
+
+____________________________________________________________________________
+
+
+
+Mit der speziellen #ib#\#mark\#-Anweisung#ie#
+
+____________________________________________________________________________
+
+ \#mark ("", "")\#
+
+____________________________________________________________________________
+
+
+wird die Markierung ausgeschaltet.
+
+Soll ein Kopf-, Fuß-, Fußnoten- oder Tabellenbereich markiert werden, sollten sich
+die Markierungsein- und ausschalt-Anweisungen vollständig in dem Bereich be­
+finden.
+#page#
+
+#ib(9)#5.8.3. #ib#Fußnoten pro Seite zählen#ie##ie(9)#
+#goalpage("countperpage")#
+#free(1.0)#
+Manchmal wird gewünscht, daß die Fußnoten für jede Seite separat - also für jede
+Seite von 1 ab - gezählt werden. Das können Sie mit der Textkosmetik-Anweisung
+
+
+____________________________________________________________________________
+
+ \#count per page\#
+
+____________________________________________________________________________
+
+
+erreichen. Sie schaltet von einer fortlaufenden Zählung auf eine seitenweise Zählung
+um. Diese Anweisung sollte am Dateianfang stehen. Sie kann für die betreffende
+Datei nicht mehr abgeschaltet werden.
+#page#
+
+#ib(9)#5.8.4. Behandlung falscher #ib#Silbentrennungen#ie(1, ", Behandlung von falschen")#:
+ #ib#Ausnahmelexikon#ie##ie(9)#
+#free(1.0)#
+ #on("i")#
+ In das Ausnahmelexikon können fehlerhaft getrennte Worte aufgenommen
+ werden.
+ #off("i")#
+#free(1.0)#
+Es kann vorkommen, daß das Silbentrenn-Programm der Textkosmetik einige Worte
+immer wieder falsch trennt. Um dies zu vermeiden, können Sie diese Worte in ein
+#on("b")##on("i")#Ausnahmelexikon#off("b")##off("i")# speichern. Die Worte des Ausnahme-Lexikons werden bei einer
+Silbentrennung zuerst durchsucht. Wird ein Wort im Lexikon gefunden, dann wird das
+eigentliche Silbentrenn-Programm nicht mehr ausgeführt.
+
+Die Ausnahmen müssen Sie - wie unten beschrieben - in einer Datei notieren und
+mit dem Monitor-Kommando
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#lade ausnahmen#ie# ("dateiname")
+
+____________________________________________________________________________
+#goalpage("lade ausnahmen")#
+
+
+in das Lexikon laden. Die Ausnahmen müssen Sie folgendermaßen in die Datei
+schreiben:
+
+____________________________________________________________________________
+
+ Sprech-stun-de
+ ins-be-son-de-re
+ Raum
+ Bei-spiel
+ ...
+
+____________________________________________________________________________
+
+
+Sie können jederzeit neue Ausnahmen in das Lexikon hinzuladen (wiederum mit 'lade
+ausnahmen'). In diesem Fall wird angefragt, ob das Lexikon überschrieben werden
+soll.
+
+
+
+Um zu kontrollieren, welche oder wie viele Ausnahmen sich im Lexikon befinden,
+können Sie
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#entlade ausnahmen#ie# ("dateiname")
+
+____________________________________________________________________________
+ #goalpage("entlade ausnahmen")#
+
+geben. Das Lexikon wird dann in "dateiname" geschrieben. Auch hier können Sie
+weitere Ausnahmen hinzufügen und diese neu laden (aber diesmal überschreiben).
+#mark ("", "")#
+#page#
+
+#ib(9)#5.8.5. #ib#Voreinstellungen ändern#ie#:
+ Einige Monitor-Kommandos#ie(9)#
+#free(1.0)#
+#ib(9)#5.8.5.1. Wenige oder viele #ib#Silbentrennung#ie#en:
+ #ib#Trennpunkt einstellen#ie##ie(9)#
+#goalpage ("hyphenation width")#
+#free(1.0)#
+ #on("i")#
+ Mit dem Kommando 'hyphenation width' können Sie bestimmen, an welchem
+ Punkt Worte zur Trennung angeboten werden. Die Trennbreite können Sie
+ zwischen 4 und 20 Prozent der Zeilenbreite einstellen.
+ #off("i")#
+#free(1.0)#
+Viele Silbentrennungen in einem Text erschweren das Lesen. Nehmen Sie keine
+Silbentrennungen vor, wird der rechte Rand stark "ausgefranst" oder beim Blocksatz
+("rechter Randausgleich") müssen viele Zwischenräume zwischen den Worten ein­
+gefügt werden. Durch das Monitor-Kommando
+
+____________________________________________________________________________
+
+ gib kommando:
+ #ib#hyphenation width#ie# (prozentuale angabe)
+
+____________________________________________________________________________
+
+
+unmittelbar vor dem Aufruf von 'autoform' oder 'lineform' können Sie den Punkt, an
+dem die Silbentrennung einsetzen soll, einstellen. Die Klammern enthalten eine ganze
+Zahl, die für Prozent der Zeilenbreite steht. Minimum sind 4, Maximum 20 Prozent.
+Beispielsweise stellt 'hyphenation width (5)' den Trennpunkt auf 5% der Zeilenbreite
+ein (voreingestellt ist 7). Bei einer Angabe von 20 werden somit sehr wenige Worte
+zur Silbentrennung angeboten, d.h. je größer die Prozentangabe, desto weniger Worte
+werden zur Trennung angeboten. Die Einstellung des Trennpunktes bestimmt also, ab
+wann ein Wort zur Silbentrennung untersucht wird. Andererseits bestimmt die Ein­
+stellung auch, wieviel Zwischenraum zwischen Worten eingefügt werden muß, um
+einen rechten Randausgleich zu erzielen.
+#page#
+
+#ib(9)#5.8.5.2. Anzahl #ib#Leerzeilen vor Fußnoten#ie#
+ einstellen#ie(9)#
+#goalpage("number empty")#
+#free(1.0)#
+ #on("i")#
+ '#ib#number empty lines before foot#ie#' stellt die Anzahl der Leerzeilen vor Fußnoten ein.
+ #off("i")#
+#free(1.0)#
+Die Anzahl der Leerzeilen vor #ib#Fußnoten#ie(1, ", Leerzeilen davor")# (voreingestellt ist eine Leerzeile) können Sie
+durch das Monitor-Kommando 'number empty lines before foot' einstellen.
+
+
+
+____________________________________________________________________________
+
+ gib kommando:
+ number empty lines before foot (3)
+
+____________________________________________________________________________
+
+
+stellt drei Leerzeilen vor dem Fußnotenblock ein. Beachten Sie, daß diese Einstellung
+so lange gilt, bis Sie das Monitor-Kommando erneut geben.
+#mark("","")#
+
diff --git a/doc/user/benutzerhandbuch.5d b/doc/user/benutzerhandbuch.5d
new file mode 100644
index 0000000..8a61f29
--- /dev/null
+++ b/doc/user/benutzerhandbuch.5d
@@ -0,0 +1,211 @@
+#start(5.0,1.5)##pagenr("%",116)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 5: Textkosmetik und Druck
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+5 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 5 - %
+#tableend##clearpos#
+#end#
+
+#ib(9)#5.9. Übersicht über die Anweisungen und
+ Kommandos der EUMEL-Textkosmetik#ie(9)#
+#free(1.0)#
+ #on ("i")#
+ Zuerst werden die am häufigsten benutzten Kommandos/Anweisungen beschrie­
+ ben. Danach sind (durch einen Strich getrennt) Kommandos/Anweisungen auf­
+ geführt, die seltener benötigt werden.
+ #off ("i")#
+#free(1.0)#
+#on("b")#
+#ib#Kommandos#ie##off("b")#
+#free(1.0)#
+ #on("i")#
+ Kommandos werden im Monitor gegeben ('gib kommando :').
+ #off("i")#
+#free(1.0)#
+#lpos(0.0)##lpos(4.6)#
+#table#
+#on("b")#Kommando Bedeutung#off("b")#
+#free(1.0)#
+#clearpos#
+#lpos(0.0)##lpos(4.6)#
+lineform ("x") Formatieren von Zeilen mit interaktiver Silben­
+ trennung.
+autoform ("x") Wie lineform, jedoch werden Silbentrennungen
+ automatisch vorgenommen.
+pageform ("x") Interaktives Formatieren von Seiten, mit Behand­
+ lung von Fußnoten, Kopf- und Fußzeilen, Seiten­
+ numerierung, Seitenquerverweisen usw. Erzeugt
+ eine Druckdatei (Zusatz '.p').
+autopageform ("x") Wie pageform, jedoch werden die Seitengrenzen
+ automatisch plaziert.
+print ("x") Datei drucken.
+print ("x.p") Eine mit 'pageform' bearbeitete Datei drucken.
+---------------- ----------------
+#page#
+index ("x.p") Erstellt aus einer Druckdatei ein Stichwort-
+ und/oder Inhaltsverzeichnis.
+index merge ("a.i1","b.i1") Führt Indexdateien zusammen.
+outline ("x") Erstellt eine Übersicht aus Kapitelüberschriften
+ und Stichworten.
+hyphenation width (int) Stellt die Trennbreite für die Silbentrennung ein.
+load macros ("x") Lädt Makros.
+list macros Zeigt geladene Makros.
+lade ausnahmen ("x") Lädt Wörter, die von der Trennhilfe nicht korrekt
+ getrennt werden, in einen Ausnahme-Speicher.
+entlade ausnahmen ("x") Entlädt die Worte aus dem Ausnahme-Speicher
+ in die angegebene Datei.
+first head (false) Schaltet Kopfzeilen auf erster Seite aus.
+first head (true) Schaltet Kopfzeilen auf erster Seite wieder ein.
+last bottom (false) Schaltet Fußzeilen auf letzter Seite aus.
+last bottom (true) Schaltet Fußzeilen auf letzter Seite wieder ein.
+number empty lines before foot Stellt die Anzahl der Leerzeilen vor einer Fußnote
+before foot ein.
+#tableend##clearpos#
+#page#
+#on("b")#
+#ib#Anweisungen#ie##off("b")#
+#free(1.0)#
+ #on ("i")#
+ Anweisungen werden in die Datei geschrieben. Jede Anweisung muß in Anwei­
+ sungszeichen eingeschlossen werden. Als Parameter (diese werden in Klammern
+ eingeschlossen) kommen in Frage:
+ 'int' bedeutet eine ganze Zahl: 17, 1, 311;
+ 'real' bedeutet eine Zahl mit Dezimalpunkt (meist cm-Angabe): 0.5, 1.25;
+ 'text' bedeutet eine Zeichen-Angabe. Muß in Anführungszeichen eingeschlos­
+ sen werden: "%", "meine datei".
+ #off ("i")#
+#free(1.0)#
+#lpos(0.0)##lpos(4.6)#
+#table#
+#on("b")#Anweisung Bedeutung#off("b")#
+#clearpos#
+#lpos(0.0)##lpos (4.6)#
+
+type (text) Schrifttyp einstellen: \#type("trium8")\#
+limit (real) Zeilenbreite einstellen: \#limit (16.0)\#
+on (text) Modifikation einschalten: \#on("bold")\#. Erlaubt
+ sind: b(bold), r(everse), i(talic), u(nderline)
+off (text) Modifikation ausschalten (siehe 'on').
+block Blocksatz (Randausgleich) einschalten.
+head Kopfzeilen (für Seiten mit geraden/ungeraden
+(bzw. headeven/headodd) Seitennummern) definieren.
+... -%- Platzhalter für Seitenzahl.
+end Kopfzeilen-Ende (pageform).
+bottom Wie oben, jedoch für Fußzeilen.
+(bzw.
+bottomeven/bottomodd)
+...
+end Fußzeilen-Ende
+pagenr (text, int) Seitennummer einstellen bzw. zusätzliches Sei­
+ enzeichen ab nächster Seite einführen:
+ \#pagenr ("%", 17)\#
+foot Fußnoten-Anfang.
+...
+end Fußnoten-Ende.
+free (real) Platz freihalten (in cm): \#free (1.27)\#
+page Neue Seite: \#page\#
+page (int) Neue Seite mit Seitennummer 17: \#page (17)\#
+linefeed (real) Zeilenhöhe relativ zum eingeschalteten Schrifttyp
+ verändern: \#linefeed (1.25)\#
+pagelength (real) Seitenlänge einstellen (ab nächster Seite in cm):
+ \#pagelength (24.0)\# Nachfolgenden Zeilentext
+center zentriert drucken.
+right Nachfolgenden Zeilentext rechtsbündig drucken.
+u ... e (steht für up) Exponent schreiben: \#u\#123\#e\#
+d ... e (steht für down) Index schreiben.
+start (real, real) Schriftfeld (linke obere Ecke) einstellen: \#start
+ (1.0, 2.0)\#
+------------ ------------
+b Zwei Zeichen übereinander drucken.
+bottom off Schaltet Fußzeilen aus.
+bottom on Schaltet Fußzeilen ein.
+bpos (real, real) Der Text zwischen den angegebenen Tabellen­
+ positionen wird im Blocksatz gedruckt.
+clearpos Löscht alle Tabellenpositionen.
+clearpos (real) Löscht die angegebene Tabellenposition.
+columns (int, real) Formatieren von Spalten mit Zwischenraum:
+ \#columns (3, 1.0)\#, 3 Spalten mit 1 cm Zwischen­
+ raum.
+columnsend Beendigung der Spaltenformatierung.
+count Interner Zähler für Fußnoten wird eingesetzt
+ (pageform).
+count (text) Wie oben, aber der Wert des internen Zählers
+ wird vermerkt: \#count ("neue Zahl")\#
+count per page Interner Zähler beginnt bei jeder Seite mit 1.
+cpos (real) Zentrierende Tabellenposition.
+dpos (real, text) Um den angegebenen Text zentrierende Tabel­
+ lenposition, meist Dezimalzeichen:
+ \#dpos (13.0, 2.")\#
+fillchar (text) Zwischenräume zwischen Tabellenpositionen wer­
+ den mit dem angegebenen Text beim Drucken
+ ausgefüllt. Beachten Sie, daß das Ausschalten der
+ Füllzeichen durch 'niltext' erfolgt.
+goalpage (text) Stelle, auf die obige Anweisung verweist: \#goal­
+ page ("1.Kapitel")\#
+head off Schaltet Kopfzeile(n) aus.
+head on Schaltet Kopfzeile(n) ein.
+ib Anfang eines Stichworts oder einer Kapitel­
+ überschrift kennzeichnen (Ablegen in Indexdatei
+ mit Zusatz '.i1'): \#ib\#ein Stichwort oder eine
+ Kapitelüberschrift\#ie\#
+ib (int) Wie oben, jedoch wird Stichwort in angegebener
+ Indexdatei abgelegt.
+ib (int, text) Wie oben, jedoch erhält Eintrag in der Indexdatei
+ den angegebenen Text an die Seiten­
+ nummer angefügt.
+ie Beendigung der Stichwortmarkierung.
+ie (int) Wie oben (int-Angabe muß der in der ib-An­
+ weisung entsprechen).
+ie (int, text) Wie oben, jedoch wird die Textangabe hinter das
+ markierte Stichwort angefügt.
+lpos (real) Linksbündige Tabellenposition.
+mark (text, text) Markierung rechts und links neben der Schreib­
+ fläche ein-/ausschalten.
+pageblock Einschalten des vertikalen Blocksatzes. Falls ein­
+ geschaltet, kann mit 'pageform' auch über das
+ (rechnerische) Seitenende formatiert werden.
+rpos (real) Rechtsbündige Tabellenposition.
+setcount (int) Zählerwert setzen: \#setcount (17)\#
+table Anfang einer Tabelle.
+...
+table end Ende einer Tabelle.
+topage (text) Seitenverweis (die Seitennummer, auf die verwie­
+ sen wird, wird eingesetzt):
+ \#topage ("1.Kapitel")\#
+value Letzter Zählerwert wird eingesetzt.
+value (text) Wie oben, jedoch wird ein vermerkter Zählerwert
+ eingesetzt: \#value ("Vermerk")\#
+#tableend#
+
diff --git a/doc/user/benutzerhandbuch.5e b/doc/user/benutzerhandbuch.5e
new file mode 100644
index 0000000..d515c6a
--- /dev/null
+++ b/doc/user/benutzerhandbuch.5e
@@ -0,0 +1,223 @@
+#start(5.0,1.5)##pagelength(17.4)##pagenr("%",121)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 5: Textkosmetik und Druck
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+5 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 5 - %
+#tableend##clearpos#
+#end#
+
+#ib(9)#5.10. Fehlersituationen und Abhilfe#ie(9)#
+
+#free(1.0)#
+Was können Sie machen, wenn
+
+
+... bestimmte Anweisungen, die den Gesamttext betreffen, erst ab der zweiten
+ Seite wirksam werden?
+
+
+ Textkosmetik-Anweisungen, die ab der ersten Seite für den ganzen Text gelten
+ sollen, müssen Sie als erstes, d.h. in die erste Zeile einer Datei, schreiben. Dies
+ bezieht sich u.a. auf 'pagelength', 'start', 'block', 'pageblock' etc., die noch vor
+ \#head\#- oder \#bottom\#-Anweisungen gesetzt werden müssen.
+
+
+
+
+... sich der Cursor nicht mehr bewegen läßt?
+
+
+ Eine Möglichkeit besteht darin, daß Sie versehentlich die 'STOP' -Taste
+ (='CTRL a' gleichzeitig, d.h. Anhalten der Bildschirmausgabe) betätigt haben.
+ In diesem Fall drücken Sie die 'WEITER' -Taste ('CTRL c' gleichzeitig, d.h.
+ Bildschirmausgabe fortführen). Alle Tastenanschläge, die Sie in der Zwischen­
+ zeit vollzogen haben, werden jetzt ausgeführt.
+
+ Eine andere Möglichkeit wäre, daß Sie Ihre Datei/Task nicht ordnungsgemäß
+ verlassen haben. Versuchen Sie über die 'SV'-Taste und 'ESC h' wieder auf
+ die Monitor-Ebene zu gelangen, so daß Sie dann auf die Aufforderung 'gib
+ kommando' hin, wieder in Ihre Datei gelangen können.
+
+
+
+
+... Sie nur einen Dateiausschnitt löschen, duplizieren oder mit 'lineform' bearbeiten
+ möchten?
+
+
+ Der betreffende Ausschnitt muß markiert werden. Zum Löschen benutzen Sie
+ die Tasten 'ESC RUBOUT'. Der Ausschnitt ist hiermit aber noch nicht 'voll­
+ ständig verschwunden', sondern Sie können ihn mit 'ESC RUBIN' an gleicher
+ oder anderer Stelle wieder hervorbringen, so lange bis Sie die Tasten erneut
+ benutzen.
+
+ Das Duplizieren eines Textbereiches erfolgt nach dem Markieren durch das
+ Betätigen der Tastenfolge 'ESC d'. Hierbei bleibt der Originaltext erhalten und
+ kann beliebig oft dupliziert werden. Den duplizierten Text holen Sie sich mit
+ 'ESC g' an die gewünschte Stelle in Ihrer Datei.
+
+ Möchten Sie 'lineform' nur auf einen Ausschnitt anwenden, markieren Sie
+ diesen und geben nach 'ESC ESC' das Kommando 'lineform'.
+
+
+
+
+... beim Drucken die letzte bzw. die letzten beiden Zeilen auf einer gesonderten
+ Seite ausgedruckt werden?
+
+
+ a) Sie müssen die Fonttabelle noch einrichten.
+
+ oder
+
+ b) Sie setzen die \#pageblock\#-Anweisung zu Beginn des Textes und "stau­
+ chen" um zwei Zeilen.
+
+ oder
+
+ c) Sie wählen eine kleineren Schrifttyp.
+
+
+
+
+... in Ihrer Datei die Meldung
+
+ _______________________________________________________________________
+
+ FEHLER: FILE-Überlauf
+
+ gib kommando:
+ edit ("dateiname")
+
+ _______________________________________________________________________
+
+ erscheint und das Abschicken des Kommandos mittels der 'CR'-Taste aber nur
+ zu einer identischen Meldung (siehe oben) führt?
+
+
+ Wenn Sie auf dem oben dargestellten Weg nach mehrmaligem Versuchen nicht
+ wieder in Ihre Datei gelangen, haben Sie die Möglichkeit, mit dem Kommando
+
+ _______________________________________________________________________
+
+ gib kommando:
+ reorganize ("dateiname")
+
+ _______________________________________________________________________
+
+
+ Ihre Datei neu zu 'organisieren', um 'Lücken', die durch Einfügen oder Löschen
+ entstanden sind, zu eliminieren. Die Datei beansprucht dann in der Regel auch
+ weniger Speicherplatz.
+
+ Sind Sie wieder in Ihrer Datei, empfiehlt es sich, die große Datei in mehrere
+ kleine aufzuteilen. Entweder Sie halbieren oder (besser) Sie dritteln Ihre Text­
+ datei und verteilen den Text auf zwei bis drei Dateien. Zukünftig sollten Sie es
+ sich dann bei umfangreichen Texten zur Regel machen, nur ein logisch
+ zusammenhängendes Kapitel in einer Datei abzulegen. Sie sollten Ihre Datei nur
+ so groß halten, daß Ihnen noch genügend Raum zur Verfügung steht, Proze­
+ duren wie z.B. 'pageform' durchzuführen, durch die sich der Umfang einer Datei
+ (z.T. wesentlich) vergrößert.
+
+
+
+
+... bei Ihrem Text einige Wörter mit extrem großem Zwischenraum gedruckt
+ wurden?
+
+
+ Sie haben in diesem Fall wahrscheinlich vergessen, die Absatzmarkierung zu
+ setzen, so daß aufgrund der \#block\#-Anweisung ein rechter Randausgleich
+ erfolgte, den Sie an dieser Stelle nicht wünschten.
+
+
+
+
+... eine Überschreibung erfolgt ist bzw. wenn 'lineform' eine Überschreibung
+ meldet?
+
+
+ Eine solche Überschreibung kann auftreten, wenn Sie mit einer besonders
+ großen Type in Fettdruck (z.B. triumb14) schreiben (vgl. Sie hierzu auch Kapitel
+ 5.2.6.). Um dies zu verhindern, können Sie zum einen die Anzahl der Blanks
+ zwischen den einzelnen Gliedern erhöhen oder zum anderen auch die
+ \#type\#-Anweisung in die vorhergehende Zeile setzen (n i c h t direkt v o r den
+ betreffenden Text).
+
+
+
+
+... nach der erfolgten Prozedur 'lineform' Ihre Tabellen durcheinander geraten
+ sind?
+
+
+ Wenn Sie Tabellen schreiben, müssen Sie nach jeder Zeile die Absatzmarke
+ setzen. Sollen bei einigen Tabellenpositionen Spalten leer bleiben, müssen Sie
+ für diese Positionen ein geschütztes Blank einsetzen.
+
+
+
+
+... bei der Prozedur 'pageform' das Seitenende nicht interaktiv verschoben werden
+ kann, obwohl am Anfang der Datei eine \#pageblock\#-Anweisung gegeben
+ wurde?
+
+
+ Eine \#page\#-Anweisung im Text bewirkt, daß Sie an dieser Stelle das Seiten­
+ ende nur bestätigen, die Anweisung löschen oder als dritte Möglichkeit, die
+ Seitenformatierung abbrechen können. Für den Fall, daß die \#page\#-
+ Anweisung nicht mehr zutrifft bzw. falsch gesetzt wurde, sollten Sie die Anwei­
+ sung löschen und das Seitenende interaktiv plazieren.
+
+
+
+
+... Sie bei der Erstellung eines Inhaltsverzeichnisses oder eines Indexes keine
+ Füllzeichen zwischen Text und Seitenangabe haben möchten?
+
+
+ In diesem Fall gehen Sie mit 'ESC ESC' in den Kommandozustand und ändern
+ mit Hilfe von CA (Change All) die Füllzeichen in Leerzeichen um. Verwenden
+ Sie nicht nur einen Punkt, da sonst auch die Punkte zwischen den Ziffern der
+ Kapitelnumerierung verschwänden. Es kann bei einer ungeraden Anzahl von
+ Füllzeichen notwendig sein, nachträglich noch einige Punkte entfernen zu
+ müssen.
+
+ _______________________________________________________________________
+
+ gib kommando: ".." CA " "
+
+ _______________________________________________________________________
+
diff --git a/doc/user/benutzerhandbuch.6 b/doc/user/benutzerhandbuch.6
new file mode 100644
index 0000000..5e035d2
--- /dev/null
+++ b/doc/user/benutzerhandbuch.6
@@ -0,0 +1,474 @@
+#start(5.0,1.5)##pagenr("%",1)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Teil 6: Spezialitäten
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+6 - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD 6 - %
+#tableend##clearpos#
+#end#
+
+#kap("TEIL 6: Spezialitäten")#
+#free(1.0)#
+
+6.1. Notizbuch
+#free(1.0)#
+ Das Notizbuch erlaubt es u.a., Fehlermeldungen zwischenzeitig zu speichern und
+ am Ende einer Verarbeitung die Fehlermeldungen zusammen mit dem bearbeiteten
+ Text im Fenstereditor anzuzeigen.
+#free(1.0)#
+Das #ib#Notizbuch#ie# wird von den Programmen 'lineform' und 'pageform' zum Sammeln
+von Warnungen und Fehlermeldungen verwendet. Wenn das Fenster des Notizbuches
+an Bildschirm eröffnet ist, können Sie es handhaben wie das gewohnte Editorfenster.
+
+Falls Sie das Notizbuch selbst beim Editieren für Notizen verwenden möchten, drük­
+ken Sie statt <ESC> <e> für den Fenstereditor die Tasten <ESC> <n> an beliebiger
+Stelle des Bildschirms. Durch dieses Kommando wird das Notizbuch statt einer Datei
+gezeigt. Sie sparen somit die Eingabe eines Dateinamens und können direkt mit allen
+vorgestellten Editorfunktionen im Notizbuch arbeiten.
+
+
+#page#
+____________________________________________________________________________
+ ................ handbuch teil6 .............. Zeile 56
+\#kap("6.2. EUMEL-Zeichensatz")\#
+\#free(1.0)\#
+\#zus\#
+ \#corner1("-5.0")\#
+ Das EUMEL-System definiert einen Zeichensatz, der gewähr­
+ auf allen Maschinen überall gleich codiert werden. Dadurch ist
+ Dateien und Programme ohne Konvertierungen zwischen EUMEL-Syst
+ unterschiedlicher Hersteller zu übertragen. Der \#ib\#EUMEL-
+ dem ASCII-Zeichensatz (DIN 66 003) mit Erweiterungen.
+ \#box3("T","2","115.0")\#
+
+ ................. notebook ................... Zeile 1
+FEHLER Zeile 55: Modifikation nicht angeschaltet bei off: b
+ >>> Anweisung in angegebener Zeilennummer überprüfen
+WARNUNG Zeile 55: Umschaltung auf gleichen Schrifttyp: trium8
+ >>> Schrifttyp wurde darum nicht verändert!
+WARNUNG Zeile 75: Überschreibung nach >\#ib(9)\#6.2.< Fehlende
+ >>> Bitte fehlende Leerzeichen einfügen
+
+____________________________________________________________________________
+#page#
+6.2. EUMEL-Zeichensatz
+#free(1.0)#
+
+
+ Das EUMEL-System definiert einen Zeichensatz, der gewährleistet, daß Zeichen
+ auf allen Geräten gleich codiert werden. Dadurch ist es z.B. möglich, Dateien und
+ Programme ohne Konvertierungen zwischen EUMEL-Systemen unterschiedlicher
+ Hersteller zu übertragen. Der #ib#EUMEL-Zeichensatz#ie# beruht auf dem ASCII-
+ Zeichensatz (DIN 66 003) mit Erweiterungen.
+
+#free(1.0)#
+
+Die Darstellung der einzelnen Zeichen hängt vom Endgerät ab. Die hier aufgeführten
+Zeichen sind i.A. auf allen Geräten vorhanden. Ein erweiterter Zeichensatz (mit ma­
+thematischen, diakritischen und griechischen Zeichen) ist nur auf Spezialgeräten
+verfügbar und wird deshalb hier nicht angegeben.
+#page#
+Beispiele zum Lesen der Tabelle:
+
+ code (" ") -> 32
+ code ("m") -> 109
+ | 0 1 2 3 4 5 6 7 8 9
+--+----------------------------------------
+3 | SP ! " \# $ % & '
+ |
+4 | ( ) * + , - . / 0 1
+ |
+5 | 2 3 4 5 6 7 8 9 : ;
+ |
+6 | < = > ? § A B C D E
+ |
+7 | F G H I J K L M N O
+ |
+8 | P Q R S T U V W X Y
+ |
+9 | Z [ ��\� ] ^ _ ` a b c
+ |
+10| d e f g h i j k l m
+ |
+11| n o p q r s t u v w
+ |
+12| x y z | } ~
+ |
+13|
+ .
+ .
+ .
+20|
+ |
+21| Ä Ö Ü ä ö ü
+ |
+22| k ­ \# SP
+ |
+23|
+ |
+24|
+ |
+25| ß
+#page#
+
+
+Anmerkungen:
+
+1) SP bedeutet Leerzeichen ("blank").
+
+2) Die Zeichen 'k', '-' und 'SP' mit den Codes 220, 221, 223 werden für die Zwecke
+ der Textkosmetik benötigt (Trenn-'k' bei der Umwandlung von 'ck' in 'kk'; Trenn­
+ zeichen; geschütztes Leerzeichen).
+
+3) Das Zeichen '\#' (Code 222) ist druckbar, während das Zeichen '\#' (Code 35) nicht
+ druckbar ist (Einleitungszeichen für Anweisungen der Textkosmetik und Drucker).
+
+4) Das Zeichen SP (Code 223) wird zur besseren Identifizierung invers oder als
+ Unterstreichungsstrich auf dem Terminal dargestellt. In einem Ausdruck erscheint
+ es als ein Leerzeichen.
+
+Falls Sie Zeichen ausgeben möchten, die nicht auf der Tastatur sind, müssen Sie den
+Code der gewünschten Zeichen zu Hilfe nehmen.
+
+Bewegen Sie den Cursor dazu an die Stelle der Datei, an die das Sonderzeichen
+geschrieben werden soll und geben Sie nach <ESC> <ESC> ein:
+
+
+____________________________________________________________________________
+ ................. dateiname .................. Zeile 123
+
+ TABELLE 1
+ _____________________
+ | |
+ gib kommando : type(code(124))
+
+
+
+____________________________________________________________________________
+#page#
+6.3. Sortier-Programme
+#free(1.0)#
+
+
+ Es stehen zwei verschiedene Sortier-Programme zur Verfügung: 'sort' (Sortierung
+ nach ASCII-Reihenfolge) und 'lex sort' (Sortierung nach deutschem Alphabet).
+
+#free(1.0)#
+
+Die Sortierprogramme sortieren eine Datei zeilenweise.
+
+Beispiel:
+
+
+____________________________________________________________________________
+ ................. dateiname ................. Zeile 1
+ Berta ist eine Frau.
+ Adam ist ein Mann.
+ ...
+
+____________________________________________________________________________
+
+
+____________________________________________________________________________
+gib kommando :
+#ib#sort#ie# ("dateiname")
+
+____________________________________________________________________________
+
+
+
+
+____________________________________________________________________________
+ ................. dateiname ................. Zeile 1
+ Adam ist ein Mann.
+ Berta ist eine Frau.
+ ...
+
+____________________________________________________________________________
+
+
+
+
+Dabei werden die Zeilen-Anfänge solange zeichenweise miteinander verglichen, bis
+ein Unterschied auftritt und dann ggf. umgeordnet. Werden zwei ungleich lange Zeilen
+(Anzahl Zeichen/Zeile) miteinander verglichen, dann kann man sich die kürzere Zeile
+mit Leerzeichen auf die Länge der längeren Zeile verlängert denken.
+
+Die Reihenfolge, in der die Zeilen sortiert werden, erfolgt nach dem ASCII-
+Zeichensatz in aufsteigender Reihenfolge (vergl EUMEL-Zeichencode):
+
+
+ das Leerzeichen
+ einige Sonderzeichen
+ die Ziffern
+ einige Sonderzeichen
+ große Buchstaben
+ einige Sonderzeichen
+ kleine Buchstaben
+ einige Sonderzeichen
+ die Umlaute und ß
+
+
+Das bedeutet, daß z.B. folgendermaßen sortiert wird:
+
+
+____________________________________________________________________________
+ ................. dateiname ................. Zeile 1
+ Adam
+ Ball
+ Zuruf
+ aber das ist ein Satz
+ niemals
+ Überlauf
+
+____________________________________________________________________________
+
+
+
+
+Um zu erreichen, daß große und kleine Buchstaben gleichwertig behandelt werden,
+kann man das Kommando
+
+____________________________________________________________________________
+gib kommando :
+#ib#lex sort#ie# ("dateiname")
+
+____________________________________________________________________________
+
+
+
+geben.
+
+In diesem Fall würde die sortierte Datei folgendermaßen aussehen:
+
+____________________________________________________________________________
+ ................. dateiname ................. Zeile 1
+ aber das ist ein Satz
+ Adam
+ Ball
+ niemals
+ Überlauf
+ Zuruf
+
+____________________________________________________________________________
+
+
+Man beachte, daß der Umlaut 'Ü' wie 'Ue' behandelt wird (für die restlichen Umlaute
+gilt eine analoge Behandlung; ebenso wird 'ß' wie 'ss' behandelt). Weiterhin werden
+alle Sonderzeichen bei der Sortierreihenfolge ignoriert.
+
+6.4 Fonttabellen
+#free(1.0)#
+
+
+ Eine Fonttabelle enthält Angaben zu den druckbaren Zeichen.
+
+#free(1.0)#
+
+Die Einstellung einer Fonttabelle#u#1)#e# erfolgt automatisch beim Einrichten der Drucker-
+Task (siehe Anhang). Um den Namen der in der Task eingestellten Fonttabelle zu
+erhalten geben Sie ein:
+#foot#
+1) Fonttabelle: Beschreibung der druckbaren Schrifttypen.
+#end#
+
+____________________________________________________________________________
+
+gib kommando:
+put(fonttable)
+
+____________________________________________________________________________
+
+
+Die Ausgabe liefert den Namen der in der Task eingestellten Fonttabelle.
+
+____________________________________________________________________________
+
+gib kommando:
+put(fonttable)
+agfa9
+gib kommando:
+
+____________________________________________________________________________
+
+
+Um eine neue oder andere Fonttabelle einzustellen, etwa weil verschiedene Drucker
+benutzt werden können, geben Sie das 'fonttable' Kommando mit dem Namen der
+gewünschten Fonttabelle als Parameter an:
+
+____________________________________________________________________________
+
+gib kommando:
+fonttable("name der fonttabelle")
+
+____________________________________________________________________________
+
+
+
+Eine weitergehende Beschreibung der eingestellten Fonttabelle erhalten Sie durch das
+Kommando 'list fonts':
+
+____________________________________________________________________________
+
+gib kommando:
+list fonts
+
+____________________________________________________________________________
+
+
+Durch dieses Kommando erhalten Sie in das Notizbuch eine Aufstellung der Schrift­
+typen mit Angaben zu Namen der verfügbaren Schrifttypen in der Fonttabelle,
+Größenangaben zu den Schriftttypen etc.
+
+____________________________________________________________________________
+ ................. notebook .................. Zeile 1
+FONTTABELLE : "agfa9";
+ x einheit = 160.0;
+ y einheit = 160.0;
+
+ FONT : "micro", "elanlist", "bulletin22";
+ einrueckbreite = 20;
+ durchschuss = 7;
+ fonthoehe = 30;
+ fonttiefe = 8;
+ groesserer font = "";
+ kleinerer font = "";
+
+ FONT : "trium10";
+ einrueckbreite = 31;
+ durchschuss = 6;
+ fonthoehe = 54;
+ fonttiefe = 15;
+ groesserer font = "trium12";
+ kleinerer font = "trium8";
+
+____________________________________________________________________________
+
+
+
+Anmerkung:
+ - Falls mehrere Namen für einen Schrifttyp angegeben sind, können Sie
+ einen beliebigen dieser Namen in der \#type\#-Anweisung benutzen.
+
+ - Größenangaben sind in 'Mikroschritten', d.h. den kleinstmöglichen
+ Schritten des jeweiligen Druckers angegeben und nicht etwa in mm.
+
+ - Weitere Informationen entnehmen Sie ggf. dem Systemhandbuch.
+
+#page#
+6.5 Syntax der Kommandos
+#free(1.0)#
+code
+ TEXT PROC code (INT CONST zahl)
+ Wandelt 'zahl' in ein Zeichen um. Falls die Zahl kleiner als 32 oder größer als 254
+ ist, (siehe Codetabelle) muß mit unerwarteten Ergebnissen gerechnet werden.
+
+
+ type(code(92))
+
+
+ INT PROC code (TEXT CONST zeichen)
+ Wandelt 'zeichen' in die zugehörige EUMEL-Codierung um. Falls mehr als ein
+ Zeichen angegeben wird, ist das Resultat '-1'.
+
+
+ put(code(92))
+
+
+
+list fonts
+ PROC list fonts
+ Listet die Fonts der eingestellten Tabelle ins #on("i")#notebook#off("i")#.
+
+ PROC list fonts (TEXT CONST fonttable name)
+ Listet die Fonts der angegebenen Fonttabelle ins #on("i")#notebook#off("i")#. Die vorher eingestellte
+ Fonttabelle bleibt jedoch weiter eingestellt.
+
+
+ list fonts ("fonttab.alternativ")
+
+
+
+lex sort
+ PROC lex sort (TEXT CONST datei)
+
+ Zeilenweise Sortierung nach (deutscher) lexikographischer Reihenfolge nach DIN
+ 5007.
+
+
+ lex sort ("telephonliste")
+
+
+ PROC lex sort (TEXT CONST datei, INT CONST anfang)
+
+ Wie 'lex sort', jedoch wird bei der Sortierung bei 'anfang' jeder Zeile begonnen.
+
+
+ lex sort ("liste",20)
+
+
+sort
+ PROC sort (TEXT CONST datei)
+
+ Die Prozedur 'sort' sortiert die Datei 'datei' zeilenweise. Die Sortierung erfolgt
+ nach der Ordnung, die der EUMEL-Zeichencode vorschreibt. Beispielsweise
+ werden Zeilen ("Sätze"), die mit Ziffern beginnen, vor Sätzen, die mit Buchstaben
+ anfangen, eingeordnet. Sätze, die mit großen Buchstaben beginnen, werden vor
+ Sätzen mit kleinen Buchstaben einsortiert. Weiterhin werden die Umlaute und das
+ "ß" nach allen anderen Buchstaben eingeordnet.
+
+
+ sort ("liste")
+
+
+ PROC sort (TEXT CONST datei, INT CONST anfang)
+
+ Sortiert eine Datei wie obige Prozedur, jedoch wird bei der Sortierung nicht der
+ Anfang eines Satzes beachtet, sondern die Position 'anfang'.
+
+
+ sort ("liste",10)
+
+
+
+type
+ PROC type (TEXT CONST zeichenkette)
+
+ Fügt 'zeichenkette' in die aktuelle Position der editierten Datei ein. Besonders
+ nützlich in Verbindung mit der Prozedur 'code', um nicht auf der Tastatur enthal­
+ tene Zeichen in den Text zu bringen.
+
+
+ type(code(200))
+
diff --git a/doc/user/benutzerhandbuch.anhang b/doc/user/benutzerhandbuch.anhang
new file mode 100644
index 0000000..5a58f95
--- /dev/null
+++ b/doc/user/benutzerhandbuch.anhang
@@ -0,0 +1,484 @@
+#start(5.0,1.5)##pagenr("%",1)##setcount(1)##block##pageblock##count per page#
+#headeven#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+ EUMEL-Benutzerhandbuch
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#headodd#
+#lpos(0.0)##cpos(5.5)##rpos(11.0)##fillchar(" ")#
+#table#
+ Anhang
+#fillchar(" ")#
+#on("u")# #off("u")#
+#table end##clear pos#
+
+#end#
+#bottomeven#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+A - % GMD
+#tableend##clearpos#
+#end#
+#bottomodd#
+
+#lpos(0.0)##cpos(5.5)##rpos(11.0)#
+#table#
+#fillchar(" ")#
+#on("u")# #off("u")#
+#fillchar(" ")#
+GMD A - %
+#tableend##clearpos#
+#end#
+Aufbau und Installation
+#free(0.5)#
+ Diese Installationsanleitung dient nur als Beispiel und soll nicht die Anleitung zu
+ dem von Ihnen benutzten Gerät ersetzen. Insbesondere die hier beschriebene
+ Möglichkeit der Partitionierung ist kein Standard!
+#free(0.5)#
+Allgemeines über das Betriebssystem EUMEL
+#free(0.5)#
+
+Zum besseren Verständnis des Installierungsvorganges sei hier kurz der Aufbau des
+Betriebssystems EUMEL erläutert (Der EUMEL-Kenner mag diesen Abschnitt über­
+springen) :
+
+Das System besteht im wesentlichen aus den folgenden Komponenten :
+
+ - SHard (#on("i")##on("b")#S#off("b")##off("i")#oftware - #on("i")##on("b")#Hard#off("b")##off("i")#ware Interface)
+ - Systemkern (EUMEL-0)
+ - darauf aufbauende Systemteile
+
+Das #on("b")##ib#SHard#ie##off("b")# ist der #on("u")#hardwareabhängige#off("u")# Teil des Betriebssystems. Dieser Teil ist ver­
+antwortlich für den Informationsfluß zwischen der virtuellen Maschine EUMEL-0 und
+den einzelnen Hardwarekomponenten (Tastatur, Diskettenlaufwerk, Schnittstellen,
+usw.).
+
+Der #on("b")#Systemkern#off("b")# (auch mit EUMEL-0 oder Urlader bezeichnet) ist der #on("u")#prozessorab­
+hängige#off("u")# Teil des Systems. Er bestimmt im wesentlichen die Leistung des Betriebssy­
+stems, da er als virtueller Prozessor den Befehlsumfang für den ELAN-Compiler
+definiert. Dieser Befehlsumfang wird dann auf den tatsächlichen Befehlsvorrat des
+hardwaremäßig vorhandenen Prozessors abgebildet.
+
+Die auf dem Kern (EUMEL-0) #on("b")#aufbauenden Systemteile#off("b")# sind #on("u")#hardware- und prozes­
+sorunabhängig#off("u")#. Sie beinhalten den ELAN-Compiler und alle Tasks, Texte, insertier­
+ten ELAN-Pakete, benannte und unbenannte Datenräume eines EUMEL-Systems.
+Diese Systemteile bilden zusammen mit dem Systemkern EUMEL-0 den #goalpage("v2")##on("b")#EUMEL-
+Hintergrund#off("b")#, d.h. EUMEL-0 ist Teil des #ib#EUMEL-Hintergrundes#ie#. Momentan werden
+je nach Rechnertyp Diskette und Festplatte als Hintergrundspeichermedium für
+EUMEL unterstützt.
+
+Der Begriff EUMEL-Hintergrund (HG) resultiert aus dem Konzept des virtuellen
+Speichers. Bei diesem Konzept wird der RAM-Speicherbereich der Hardware nur als
+Pufferbereich nach dem Demand-Paging-Verfahren benutzt, mit Ausnahme der
+residenten Systemteile (SHard und EUMEL-0). Das macht den Benutzer bezüglich
+seiner Programme und Daten unabhängig von der eigentlichen Größe des RAM-
+Speichers. Diese bestimmt lediglich den Durchsatz (Performance) des Systems, d.h. je
+größer der RAM-Bereich Ihres Rechners ist, desto schneller arbeitet das EUMEL-
+System.
+
+EUMEL-0 befindet sich auf der ersten Hintergrunddiskette. Das Laden von
+EUMEL-0 und des restlichen EUMEL-Hintergrundes kann daher in einem Arbeits­
+gang geschehen.
+
+Der Auslieferungs-Hintergrund ist noch nicht konfiguriert und stellt ausschließlich die
+im Handbuch beschriebenen Leistungen des Betriebssystems zur Verfügung. Er
+besteht im wesentlichen aus insertierten ELAN-Paketen, die den Leistungsumfang
+des Systems bestimmen (Single- oder Multiuser, mit oder ohne Textverarbeitung).
+Steht dieser Hintergrund auf mehreren Disketten (Multiuser-Hintergründe), dann sind
+diese fortlaufend numeriert. Die erste Hintergrunddiskette hat die Nummer 0, um
+daran zu erinnern, daß sich auf dieser Diskette auch der Systemkern EUMEL-0
+befindet.
+
+Ein Hintergrund kann natürlich auch die Systemsicherung eines größeren Systems mit
+z.B. mehreren Megabytes sein. Sollten Sie später einmal Ihr bestehendes System
+durch ein anderes ersetzen wollen (Hintergrund überschreiben), so brechen Sie wäh­
+rend des Hochfahrens beim Speichertest das System durch Tastendruck ab und laden
+durch Anwahl von 2 'neuen Hintergrund vom Archiv laden' im Startdialog das neue
+System.
+
+#on("i")##on("u")#ACHTUNG:#off("u")##off("i")# Dabei gehen alle Daten des alten Systems unwiederbringlich verloren!
+ (Siehe dazu auch 'Laden eines EUMEL-Hintergrundes'.)
+
+Zur besseren Verständlichkeit sollen an dieser Stelle noch die Begriffe 'Systemstart'
+und 'Systemabschaltung' des EUMEL-Systems erläutert werden :
+
+#on("i")##on("b")##ib#Systemstart#ie# :#off("b")##off("i")#
+Wenn ein EUMEL-System gestartet wird (auch 'Hochfahren' genannt), und dies gilt
+auch für kleinere Diskettensysteme wie den 'Generierungseumel' (siehe Seite #topage("v1")#),
+wird zunächst das SHard geladen; dazu erscheint auf dem Bildschirm eine entspre­
+chende Meldung. Das SHard versucht nun den Systemkern vom Archivmedium (in der
+Regel Diskette) zu laden. Ist keine entsprechende Diskette eingelegt, so wird ver­
+sucht, EUMEL-0 vom Hintergrundmedium (Festplatte) zu laden.
+
+Danach wird EUMEL-0 aktiv; auf dem Bildschirm erscheinen Angaben zu verfügba­
+ren Kanälen, RAM- und Hintergrundspeicher-Größe. Dann führt EUMEL-0 einen
+Speichertest durch, was daran zu erkennen ist, daß eine Folge von Sternchen (*) auf
+den Schirm geschrieben wird. Wird währenddessen eine beliebige Taste gedrückt,
+dann gelangt man nach dem Speichertest in den 'Startdialog'.
+
+Nach dem Speichertest bzw. nach Wahl von <1> 'Systemstart' im Startdialog wird der
+Hintergrund aktiviert, was je nach Größe des Systems und Art des Hintergrundmedi­
+ums unterschiedlich lange dauert.
+
+#on("i")##on("b")##ib#Systemabschaltung#ie# :#off("b")##off("i")#
+Bevor man den Rechner ausschaltet, sollte jedes EUMEL-System ordnungsgemäß
+abgeschaltet werden. Das geschieht durch den Befehl 'shutup', den man in der Multi­
+user-Version von EUMEL im privilegierten Zweig des Taskbaumes erteilen muß. Nur
+dann ist gewährleistet, daß der aktuelle Zustand Ihres Systems gesichert ist.
+
+Andernfalls gilt das System als abgebrochen, was daran zu erkennen ist, daß sich das
+System beim nächsten Systemstart mit 'RERUN' meldet. Dann kann nur am letzten
+Fixpunkt wieder aufgesetzt werden, und Ihre in letzter Zeit (normalerweise ca. 15
+Minuten) gesammelten Daten können verloren sein.
+
+Installation des EUMEL-Systems
+#free (1.0)#
+
+#goalpage("a1")#A: Erforderliche Disketten
+
+ - EUMEL-Systemdiskette : "Generierungseumel XY"#u#1)#e#
+ - EUMEL-Hintergrunddisketten : "HG0" ... "HGn"
+ - EUMEL-Archivdisketten : "std..."
+ - EUMEL-Archivdiskette : "XY" (Typabhängig)
+ - MS-DOS-Diskette : "EUMELstart"
+
+#foot#
+1) XY steht für die Typbezeichnung eines Rechners wie: XT, AT, M24 usw.
+ Die Anzahl der ausgelieferten Disketten ist auch typabhängig, da z.B.
+ 'EUMELstart' nur benötigt wird, falls tatsächlich eine Partitionierung möglich ist.
+#end#
+
+Die Diskette #goalpage("v1")##on("u")#"Generierungseumel XY"#off("u")# ist ein kleines, jedoch vollständiges EUMEL-
+System. Auf diesem System laufen nach dem Hochfahren Programme ab, die im
+Dialog mit dem Benutzer die Generierung einer oder mehrerer EUMEL-Partitionen
+ermöglichen, diese Bereiche bezüglich schlechter Spuren untersuchen und das SHard
+auf der jeweiligen Partition installieren. #on("b")#Bei der Generierung darf diese Diskette nicht
+schreibgeschützt sein !#off("b")#
+
+Die #on ("u")#Hintergrunddisketten "HG0" ... "HGn"#off ("u")# beinhalten das eigentliche Betriebssystem
+EUMEL. Es sind dies der Systemkern EUMEL-0 und die darauf aufbauenden Sy­
+stemteile (siehe Seite #topage("v2")#).
+
+Die #on ("u")#Standardarchivdisketten "std..."#off ("u")# beinhalten ELAN-Programmpakete und Fontta­
+bellen, die Sie nach erfolgter Installation des Betriebssytems z.B. zum Zwecke einer
+Druckerinstallation oder erweiterter Rechenfunktionen benötigen werden. Sie finden
+dazu detaillierte Informationen in Ihrem Benutzer- und Systemhandbuch.
+
+Die #on("u")#Archivdiskette "XY"#off ("u")# beinhaltet ELAN-Programmpakete, die Funktionen, die nicht
+zu den Standardleistungen von EUMEL bzw. der vorliegenden SHard-Version zählen.
+
+Die Diskette #on("u")#"EUMELstart"#off("u")# ist eine MS-DOS Diskette und beinhaltet Kommando-
+Dateien. Falls Sie auch eine MS-DOS Partition eingerichtet haben, dann gewährlei­
+sten diese das Aktivieren einer EUMEL Partition mit gleichzeitigem Systemstart von
+MS-DOS aus.
+#free (1.0)#
+
+#goalpage("a2")#B: Partitionieren der Festplatte / Installation des SHard
+
+
+Wenn Sie bereits ein Betriebssystem auf Ihrer Festplatte installiert haben, müssen Sie
+darauf achten, daß noch ausreichend Platz für ein EUMEL-System übrig ist. Da z.B.
+MS-DOS standardmäßig die gesamte Festplatte belegt, muß dieses System gesi­
+chert, mit dem MS-DOS-Kommando 'fdisk' gelöscht und entsprechend kleiner neu
+eingerichtet werden. Sie können auch bei der EUMEL-Installation alle bereits beste­
+henden Systeme löschen; dazu bietet Ihnen der Generierungseumel die Option
+#on("i")#Löschen der gesamten Partitionstabelle #off("i")# an. Dabei gehen jedoch alle bestehenden
+Daten verloren. Achten Sie also darauf, daß sie alle Daten vorher gesichert haben !
+
+#on("u")##on("i")#Hinweis:#off("i")##off("u")# Bei Festplatten mit einer Kapazität über 32 Megabyte kann die Installa­
+ tion des SHard zu Problemen führen (Fehlermeldung #on("i")#Platte kann nicht
+ gelesen werden#off("i")# bei der Suche nach schlechten Spuren). Richten Sie
+ daher Ihre EUMEL-Partition(en) auf den ersten 32 Megabyte ein.
+
+Um nun die Partitionierung für Ihr EUMEL-System vorzunehmen, legen Sie die
+Diskette 'Generierungseumel' in das Boot-Laufwerk. Sollte die Diskette mit einer
+Schreibschutzmarke versehen sein, dann müssen Sie diese vorher entfernen.
+
+Schalten Sie nun den Rechner ein bzw. betätigen Sie den Tastatur-RESET, wenn Ihr
+Gerät bereits eingeschaltet ist, indem Sie die Tasten <CTRL> <ALT> <DEL> gleichzeitig
+betätigen.
+
+Der Generierungseumel meldet sich zunächst mit folgender SHard-Meldung:
+
+
+
+____________________________________________________________________________
+
+Setup - SHard für EUMEL auf XY und Kompatiblen V x.x
+Copyright (C) 1985,86
+EUMEL wird vom Hintergrund geladen
+
+____________________________________________________________________________
+
+
+
+Danach erscheinen die EUMEL-0 Meldungen zu HG-, RAM- und Pufferkapazität,
+bezogen auf den Diskettenhintergrundes des Generierungseumel.
+
+#on("i")##on("u")#ACHTUNG:#off("u")##off("i")# Der Generierungseumel soll während des Speichertests (Sternchen)
+ nicht unterbrochen werden. Geschieht dies versehentlich doch, dann
+ fahren Sie fort, indem Sie im Startdialog die Taste <1> für Systemstart
+ betätigen. Dann wird normal mit der Installation fortgefahren. Wählen
+ Sie keinesfalls <2> 'neuen Hintergrund vom Archive laden', solange sich
+ die Diskette 'Generierungseumel' im Archivlaufwerk befindet.
+
+Nach dem Hochfahren des 'Generierungseumel' wird Ihnen eine Tabelle angezeigt,
+der Sie entnehmen können, ob bereits Partitionen auf der Festplatte eingerichtet und
+wie diese spezifiziert sind.
+
+Angezeigt werden neben Größe, Start- und Endspur der einzelnen Partitionen auch
+eine Typ-Nr.; für EUMEL-Partitionen werden in aufsteigender Reihenfolge die
+Typ-Nummern 69 bis 72, für MS-DOS je nach Größe der eingerichteten Partition
+die Nummer 1 oder 4 vergeben. Die Typ-Nummern der eingerichteten Partitionen
+sollten Sie sich merken, da diese Angaben später von Bedeutung sind, wenn das
+Gesamtsystem für Partitionswechsel vorbereitet wird. Richten Sie mehrere EUMEL-
+Partitionen ein, dann können Sie diese ausschließlich über die Typ-Nummern identi­
+fizieren !
+
+Außerdem wird die gerade aktive Partition durch einen entsprechenden Eintrag in der
+Tabelle kenntlich gemacht. #on("b")#"Aktiv" ist die Partition, die nach dem nächsten Einschal­
+ten des Rechners bzw. nach dem nächsten Tastatur-RESET gebootet würde.#off("b")#
+
+Sie können nun eine der folgenden Funktionen auswählen :
+
+ - Generieren einer EUMEL-Partition
+ - Aktivieren einer Partition
+ - Löschen einer EUMEL-Partition
+ - Löschen der gesamten Partitionstabelle
+ - Generierung beenden
+
+Beim Generieren einer EUMEL-Partition werden lediglich Angaben zu Größe und
+Startzylinder abgefragt. Dafür werden Vorgaben gemacht, die Sie bestätigen können,
+indem Sie die <CR> Taste betätigen.
+
+Beim Neueinrichten orientiert sich die Vorgabe für die Partitionsgröße an dem größten
+zusammenhängenden Freiraum auf Ihrer Platte, die Vorgabe für den Startzylinder
+orientiert sich dann an dem kleinsten zusammenhängenden Freiraum, auf dem eine
+Partition der gewählten Größe eingerichtet werden kann.
+
+#on("i")##on("u")#ACHTUNG:#off("u")##off("i")# Soll eine EUMEL-Version installiert werden, die nur 16 Megabyte
+ verwalten kann (1.7.3 bzw. 1.8.0), dann darf die Partition nicht größer
+ eingerichtet werden. Es kann hier keine generelle Aussage über die
+ Anzahl der zu reservierenden Spuren gemacht werden, da sehr ver­
+ schiedene Plattenaufteilungen angeboten werden. Entnehmen Sie die
+ entsprechenden Angaben bitte dem Festplatten-Handbuch Ihres Hard­
+ wareherstellers.
+
+Das Löschen einer EUMEL-Partition geschieht nur logisch, nicht physisch, das heißt
+es wird nur der Eintrag in der Partitionstabelle gelöscht. Sollten Sie später an gleicher
+Stelle eine neue Partition einrichten und vorher diesen Bereich physisch nicht über­
+schrieben haben, dann würde nach dem Hochfahren des Rechners das alte System
+wieder gestartet. Die Meldung 'kein EUMEL-System gefunden'(siehe unten) erscheint
+dann nicht.
+
+Haben Sie Ihre EUMEL-Partition(en) eingerichtet, dann achten Sie darauf, daß Sie
+Ihren Generierungseumel ordnungsgemäß wieder verlassen, da es sich hier, wie
+bereits erwähnt, um ein vollständiges EUMEL-System mit Fixpoint/Rerun-Logik
+handelt. Das 'shutup' wird automatisch ausgeführt, wenn Sie die Funktion '0. Gene­
+rierung beenden' wählen.
+
+Wenn die Meldung 'ENDE' auf Ihrem Bildschirm erscheint, ist dieser Schritt der
+Installation beendet. Sie haben nun eine (oder mehrere) EUMEL-Partitionen einge­
+richtet und das SHard installiert. Bitte entfernen Sie jetzt die Diskette 'Generierungs­
+eumel' aus dem Diskettenlaufwerk.
+#free (1.0)#
+Laden eines EUMEL-Hintergrundes
+
+#free(1.0)#
+Im nächsten Schritt wird auf Ihrer Festplatte das EUMEL-System installiert, d.h. es
+wird ein Hintergrund auf der Festplatte erzeugt.
+
+Dazu müssen Sie nach dem ordnungsgemäßen Beenden des Generierungseumel und
+Entfernen der Diskette aus dem Laufwerk den Tastatur-RESET betätigen. Dies
+geschieht entweder durch gleichzeitiges Betätigen der Tasten <CNTL> <ALT> <DEL>
+auf der Tastatur oder durch AUS- und wieder EIN-Schalten des Rechners (Bitte
+warten Sie einen Augenblick zwischen dem AUS- und EIN-Schalten).
+
+Das System meldet sich nach kurzer Zeit mit folgender SHard-Meldung:
+
+
+____________________________________________________________________________
+
+SHard für EUMEL auf XY, V x.x
+Copyright (C) 1985,86
+kein EUMEL-System gefunden
+
+____________________________________________________________________________
+
+
+
+Sie legen nun die Hintergrunddiskette HG0 in das Boot-Laufwerk und betätigen eine
+Taste.
+
+Der Systemkern wird nun geladen und es erscheinen die bereits oben erwähnten
+Angaben zu HG-, RAM- und Pufferkapazität, sowie zu den angeschlossenen
+Kanälen, diesmal jedoch bezogen auf die eingerichtete Festplatten-Partition. Wäh­
+rend des Speichertests drücken Sie bitte erneut eine Taste, um in den Startdialog zu
+gelangen und damit zu verhindern, daß EUMEL-0 versucht, das System zu starten.
+Sollten Sie dies versäumen, so erscheint die Meldung 'HG ungültig'. Sie haben dann
+erneut die Möglichkeit, durch Betätigen einer Taste in den Startdialog zu gelangen.
+
+Hier wählen Sie den Menupunkt <2> 'neuen Hintergrund vom Archiv laden' und bestä­
+tigen die Frage 'Alten Hintergrund überschreiben' mit <j> für 'ja'.
+
+Es erscheint ein Zähler auf dem Bildschirm, der die gelesenen Blöcke anzeigt. Verteilt
+sich Ihr Hintergrund auf mehrere Disketten, dann müssen Sie bei bei der Frage
+'Neues HG-Archiv eingelegt' die nächste Diskette einlegen und mit <j># #off("i")# quittieren.
+Bitte beachten Sie dabei genau die Numerierung der HG-Disketten !
+
+Es können bei beschädigten Disketten Lesefehler auftreten; dann gibt das System
+eine der Meldungen 'Harter Lesefehler' bzw. 'Softerror' aus. Bei letzterem konnte der
+entsprechende Sektor nach mehrmaligem Versuch noch gelesen werden. Bei einem
+harten Lesefehler können Sie die Diskette nicht verwenden.
+
+Wenn alle Disketten eingelesen sind, müssen Sie ein letztes mal den Tastatur-
+RESET betätigen, um das System zu starten. Vergessen Sie nicht, vorher die Hinter­
+grunddiskette aus dem Diskettenlaufwerk zu entfernen.
+
+Wenn Sie jetzt während des Hochfahrens keine Taste drücken, dann startet der Lader
+durch und das EUMEL-System meldet sich mit 'System aufgebaut'. Dies dauert
+beim Auslieferungshintergrund wenige Sekunden, kann jedoch bei größeren Systemsi­
+cherungen auch mehrere Minuten in Anspruch nehmen; verlieren Sie dann bitte nicht
+allzu schnell die Geduld.
+
+Da der Auslieferungs-Hintergrund unkonfiguriert ist, gelangt das System beim ersten
+Hochfahren nach der Installation sofort in den 'configurator'. Sie müssen jetzt den
+Kanal 1 entsprechend der vorhandenen Tastatur als "PC.german" oder "PC.ascii"
+konfigurieren. Sollten Sie eine EUMEL-Version 1.7.3 benutzen und diesen Konfigura­
+tionsdatenraum nicht zur Verfügung haben, dann konfigurieren Sie den Kanal 1 als
+"PC" und Terminal. Näheres dazu finden Sie im Systemhandbuch (Teil 1).
+#page#
+ Die einzelnen Schritte der Installation im Überblick
+#free (0.5)#
+#linefeed(1.5)#
+ 1. Die Diskette 'Generierungseumel' in das Laufwerk stecken
+ 2. Rechner einschalten oder Tastatur-RESET mit <CTRL>, <ALT> <DEL>
+ 3. EUMEL-Partition einrichten
+ 4. Generierung beenden und auf 'ENDE'-Meldung warten
+ 5. Diskette 'Generierungseumel' entnehmen
+ 6. Tastatur-RESET
+ 7. Die Meldung 'Kein EUMEL-System gefunden' abwarten. Wenn die Meldung
+ 'EUMEL wird vom Hintergrund geladen' erscheint, dann weiter bei 9.
+ 8. Erste Hintergrunddiskette (HG0) einlegen und Taste drücken
+ 9. Beim Speichertest eine Taste betätigen, um in den Startdialog zu gelangen.
+ 10. Menupunkt <2> anwählen : Neuen Hintergrund vom Archiv laden
+ 11. Eventuell weitere HG-Disketten nach entsprechender Aufforderung einlegen
+ und mit <j> quittieren
+ 12. Tastatur-RESET nach entsprechender Aufforderung
+ 13. Nach dem Hochfahren des Systems Konfiguration lt. Systemhandbuch
+ vornehmen
+ 14. Ggf. in der Task 'SYSUR' ELAN-Pakete für Partitionswechsel insertieren.
+ #linefeed (1.0)#
+ Dazu - Falls eine EUMEL-Version 1.7.3 benutzt wird, zunächst das
+ Kommando #on("i")#free global manager#off("i")# in der Task 'configurator' absetzen
+ - Archivdiskette "XY" einlegen und anmelden : #on("i")#archive �("XY")#off("i")#
+ - Datei "XY install" von Archivdiskette lesen :
+ #on("i")#fetch ("XY install", archive)#off("i")#
+ - Insertierung starten : #on("i")#run#off("i")#
+Druckersoftware einrichten
+
+#free(0.5)#
+Um mit Ihrem EUMEL-System einen Drucker betreiben zu können, müssen Sie
+außer dem Anschluß des Druckers mit einem passenden Kabel auch die passende
+Software für diesen Drucker zur Verfügung stellen. Zu diesem Zweck dienen die
+Druckeranpassungen.
+
+Das Standardarchive "std.printer" enthält Druckeranpassungen für die Ansteuerung
+diverser gebräuchlicher Druckertypen. Soll einer dieser Drucker an das EUMEL-
+System angeschlossen werden, so muß zuerst eine Task "#ib#PRINTER#ie#" als Sohntask
+von "SYSUR" mit dem Supervisorkommando
+
+#linefeed (1.18)#
+ begin ("PRINTER", "SYSUR")
+#linefeed (1.0)#
+
+eingerichtet werden. In dieser Task müssen dann die folgenden Schritte vollzogen
+werden:
+
+- Archiv anmelden:
+#linefeed (1.18)#
+ archive ("std.printer")
+#linefeed (1.0)#
+
+- Druckeranpassung vom Archiv holen:
+#linefeed (1.18)#
+ fetch ("printer.druckertyp", archive)
+#linefeed (1.0)#
+
+- Zeilennummergenerierung bei der Insertierung abschalten:
+#linefeed (1.18)#
+ check off
+#linefeed (1.0)#
+
+- Druckeranpassung insertieren:
+#linefeed (1.18)#
+ insert ("printer.druckertyp")
+#linefeed (1.0)#
+
+Beispiel:
+#linefeed (1.18)#
+ archive ("std.printer")
+ fetch ("printer.epson.fx", archive);
+ check off;
+ insert ("printer.epson.fx")
+#linefeed (1.0)#
+
+Nach der Insertierung wird zuerst nach dem #ib#Druckerkanal#ie# gefragt. Dieser sollte mit
+der Gerätetabelle 'transparent' konfiguriert sein. Dann werden ggf. druckerspezifische
+Fragen zur Papierbreite, Positionierungsart oder ähnlichem gestellt, die mit 'j' oder 'n'
+beantwortet werden müssen. Dabei werden alle Alternativantworten zu der jeweili­
+gen Frage hintereinander angeboten, bis eine Alternative mit 'j' beantwortet wird.
+
+Als letzter Schritt kommt die Aufforderung das Archiv mit der passenden Fonttabelle
+einzulegen. Diese Fonttabelle, eine Beschreibung aller darstellbaren Zeichen in allen
+druckbaren Schrifttypen, ist meistens auf derselben Diskette wie die Druckeranpas­
+sung.
+
+Wenn die Generierung beendet ist, muß im Multi-User Betrieb in allen bestehenden
+Tasks - insbesondere in der Task 'PUBLIC' - die Fonttabelle mit dem fonttable-
+Kommando eingestellt werden.
+
+Beispiel:
+
+#linefeed (1.18)#
+ fonttable("fonttab.epson.fx")
+#linefeed (1.0)#
+
+Von jeder Task aus kann danach mit dem Kommando
+
+#linefeed (1.18)#
+ print ("dateiname")
+#linefeed (1.0)#
+
+wird eine Datei ausgedruckt werden.
+
+Das Einstellene einer Fonttabelle ist insbesondere Voraussetzung für 'lineform', 'page­
+form' etc.
+
+Befindet sich keine passende Druckeranpassung für den anzuschließenden Drucker­
+typ auf dem Standardarchiv "std.printer", so sollte die Druckeranpassung "printer.std"
+benutzt werden. Diese Druckeranpassung ist eine universelle Druckeranpassung für
+alle Drucker, die mit ASCII-Code 13 ein 'Carriage Return' (d.h. Bewegung des
+Druckkopfes an den linken Rand) und mit ASCII-Code 10 eine Zeilenschaltung von
+1/6 Zoll vornehmen. Mit ihr kann dann in einem Schrifttyp (entweder 10 oder 12
+Zeichen pro Zoll, je nachdem welche Fonttabelle eingestellt ist) gedruckt werden. So
+erhält man wenigstens eine Minimalansteuerung des Druckers.
+
+
+
+Druckersoftware im Single-User einrichten
+
+
+Die Installation der Druckersoftware im Single-User erfolgt ähnlich wie die im Mul­
+ti-User. Hier brauchen nur die Schritte durchgeführt zu werden, die im Multi-User
+in der Task "PRINTER" druchgeführt werden müssen. Eine Task "PRINTER" braucht
+nicht eingerichtet zu werden.
+