.ds RH \f3Monitor\f1
.ds LH Referenz_Manual
.ds RF \f3QUEL\f1
.ds CH - % -
.bp
.RE
.NH 3
.ft B
Der interaktive Terminal\-Monitor *
.ft R
.LP
.NH 4
.ft B
Inhalt und Leistung *
.ft R
.LP
Der interaktive Terminal\-Monitor
ist der front\-end\-Prozess
von \*(yy\.
Er erm\o'o"'glicht es, eine Anfrage zu formulieren
und sie zu erg\o'a"'nzen,
bevor sie \*(yy\ \o'u"'bergeben wird.
Zur Ausf\o'u"'hrung von \o'A"'nderungen an der Anfrage im
.ft B
"Monitor\-Puffer"
.ft R
kann ein \*(xx\-
Text\-Editor nach eigener Wahl benutzt werden.
.sp 1
.NH 4
.ft B
Nachrichten und Prompt\-Meldungen *
.ft R
.LP
Der Terminal\-Monitor gibt eine
Reihe von Meldungen ab,
um den Nutzer
\o'u"'ber den Status des Monitors
und des Monitor\-Puffers
zu informieren.
.LP
Nach Anmeldung des Nutzers
wird eine login\-Nachricht ausgegeben,
die die Versionsnummer von \*(yy\
und die login\-Zeit anzeigt.
Ihr folgt die Ausgabe des dayfile,
das Informationen f\o'u"'r alle Nutzer enth\o'a"'lt.
.LP
Sobald \*(yy\ eingabebereit ist,
wird die Meldung
.DS L
ING-db>
*
.DE
ausgegeben.
Sie zeigt an, dass der Monitor\-Puffer
leer ist.
Die Meldung
.DS L
ING-db:
*
.DE
zeigt an, dass der Monitor\-Puffer
noch Informationen enth\o'a"'lt.
Nach einem \ego\-Kommando
wird der Monitor\-Puffer
automatisch gel\o'o"'scht (autoclear-Funktion),
sobald nachfolgend eine weitere Anfrage
eingegeben wird,
nicht aber,
wenn danach zuerst ein Kommando
folgt, das sich
auf den Monitor\-Puffer bezieht.
Solche Kommandos sind
\eappend,
\eedit,
\eprint,
\elist,
\eeval
und
\ego.
Wenn man z.B. eingibt:
.br
	help parts
.br
	\ego
.br
	print parts
.br
enth\o'a"'lt der Monitor\-Puffer
.br
	print parts
.br
Wenn man dagegen eingibt
.br
	help parts
.br
	\ego
.br
	\eprint
.br
	print parts
.br
enth\o'a"'lt der Monitor\-Puffer
.br
	help parts
.br
	print parts
.br
Am Anfang jeder Eingabe-Zeile wird der 2. Prompt von \*(yy\,
in der Regel ein Stern ("*"),
ausgegeben,
sobald der Monitor auf
eine Eingabe des Nutzers wartet.
.NH 4
.ft B
Kommandos *
.ft R
.LP
Es gibt eine Anzahl von Kommandos,
die vom Nutzer eingesetzt werden
k\o'o"'nnen,
um mit dem Monitor\-Puffer zu arbeiten
oder die Nutzer-Umgebung einzurichten.
Kommandos beginnen mit dem Kommandokennzeichen,
in der Regel mit einem
<backslash>
("\e").
Monitor\-Kommandos werden unverz\o'u"'glich
ausgef\o'u"'hrt.
.LP
Einige Kommandos haben einen Parameter.
Dieser besteht aus
den signifikanten Zeichen
nach dem Kommando bis zum Zeilenende.
Hinter solchen Kommandos kann kein
anderes Kommando auf der gleichen Zeile folgen.
Kommandos ohne Parameter
k\o'o"'nnen auf einer Zeile gepackt werden;
zum Beispiel
.br
	\edate\ego\edate
.br
gibt die Zeit vor und nach der
Ausf\o'u"'hrung der im Monitor\-Puffer
enthaltenen Query aus.
.SH
.ft B
Liste der Kommandos
.ft R
.LP
\em
.br
\emonitor [parm]
.IP
Kommandokennzeichen einstellen
.br
Der Parameter ist das Kennzeichen. Wenn er fehlt, wird 
der Standard eingesetzt.
.LP
\er
.br
\ereset
.IP
L\o'o"'schen der Anfrage.
Der formulierte Inhalt des Monitor\-Puffers
ist unwiederbringlich verloren.
.LP
\eH
.br
\eHELP [parm]
.IP
Es wird eine l\o'a"'ngere Dokumentation als Hilfe angezeigt.
Die Paramter sind mit denen von manr(unix) identisch.
.LP
\ep
.br
\eprint
.IP
Druck der anliegenden Query.
Der Inhalt des Monitor\-Puffers wird auf dem Nutzer\-Terminal
ausgegeben.
.LP
\el
.br
\elist
.IP
Druck der anliegenden Query in der Form,
wie sie nach ihrer Transformation durch den
Makro\-Prozessor aussieht. Einige Nebeneffekte
bei der Arbeit des Makro\-Prozessors,
wie die Definition von Makros werden dabei mit
ausgef\o'u"'hrt.
.LP
\ev
.br
\eeval
.IP
Makro\-Bearbeitung des Monitor\-Puffers.
Das Kommando dient der Definition von Makros.
Der Monitor\-Puffer wird anschliessend gel\o'o"'scht.
.LP
\ee
.br
\eed
.br
\eedit [parm]
.br
\eeditor
.IP
Ruf eines frei w\o'a"'hlbaren \*(xx\-Text\-Editors
zum Editieren des Monitor\-Puffers
(s. auch ED, EM, VI, RAND im \*(xx\ Programmer's Manual).
Nach Beendigung der Editorarbeit kehrt 
man automatisch in den Monitor zur\o'u"'ck.
Der Monitorpuffer erh\o'a"'lt jetzt den 
editierten Stand.
Wenn dem \ee\-Monitor\-Kommando
ein Parameter gegeben wird, wird nicht
der Monitor\-Puffer sondern das,
durch den Parameter bezeichnete File
zum editierenden File.
Wenn der Editor mit dem Monitor\-Puffer\p
gestartet wird,
muss zu dessen \o'A"'nderung nat\o'u"'rlich
ein w\-Editor\-Kommando gegeben werden,
ehe man dem\p
Editor ein anderes File zuordnet.
Wenn der Makro
"{editor}"
definiert ist,
wird dieser Makro als ein Pfadname
f\o'u"'r einen speziellen Editor genommen,
anderenfalls wird der installationsabh\o'a"'ngige 
Systemeditor benutzt.
.LP
\eg
.br
\ego
.IP
Ausf\o'u"'hrung der anliegenden Query.
Der Inhalt des Monitor\-Puffers
wird von der Aufl\o'o"'sung der Makros
{begintrap} und {endtrap} umgeben,
durch den Makro\-Prozessor
transformiert und \*(yy\
\o'u"'bermittelt und ausgef\o'u"'hrt.
Bei Ausf\o'u"'hrung der tupelorientierten
Statements
.ft B
retrieve
.ft R
,
.ft B
append
.ft R
,
.ft B
replace
.ft R
und
.ft B
delete
.ft R
wird der Makro {tuplecount} mit der
Anzahl der bearbeiteten Tupel definiert
(sonst und im Fehlerfall als -1).
Vor R\o'u"'ckkehr in den Eingabemodus
ruft der Monitor den Makro {continuetrap}.
.LP
\ea
.br
\eappend
.IP
Anf\o'u"'gen an den Monitor\-Puffer.
Das Kommando \ea
\o'u"'berschreibt nach Ausf\o'u"'hrung einer Query
die auto_clear\-Funktion
und garantiert, dass der Monitor\-Puffer
nicht gel\o'o"'scht wird.
.LP
\ed
.br
\etime
.br
\edate
.IP
Ausgabe der aktuellen Tageszeit,
.br
Ausgabe des Datums
.LP
\es
.br
\esh
.br
\eshell [parm]
.IP
Ruf einer \*(xx\-Shell.
Nach Beendigung der Shell kehrt man automatisch 
in den Monitor zur\o'u"'ck.
Wenn das Kommando einen Para\%meter hat,
wird die Shell nicht als interaktive Shell
gestartet, sondern das mit dem Para\%meter bezeichnete
Programm (File) gerufen, dem als Parameter
die Stellungsparameter ($1 usw.) \o'u"'ber den
Monitor\-Puffer zug\o'a"'nglich sind.
Wenn der Makro "{shell}" definiert ist,
wird dessen Wert als Pfadname eines Programms benutzt,
das mit o.g. Parametern gerufen wird, andernfalls 
wird ein installationsabh\o'a"'ngiger 
Kommandointerpreter gerufen.
Liegt bei R\o'u"'ckkehr ein Code\ !=\ 0 vor,
ruft der Monitor den Makro {exectrap} auf.
.LP
\eq
.br
\equit
.IP
 Sitzungsende f\o'u"'r \*(yy\.
.LP
\ecd
.br
\echdir [parm]
.IP
Ver\o'a"'nderung des current directory, auf
das durch den Parameter bezeichnete directory.
.LP
\ei
.br
\einclude
.br
\eread parm
.IP
Das bezeichnete File wird zur Eingabe f\o'u"'r den Monitor.
<backslash> werden in diesem File so behandelt,
wie die vom Terminal gegebenen.
.LP
\ew
.br
\ewrite parm
.IP
Der Inhalt des Monitor\-Puffers wird auf das,
durch den Parameter bezeichnete File geschrieben.
.LP
\eb
.br
\ebranch parm
.IP
Verzweigung innerhalb eines \einclude File,
siehe den folgenden Abschnitt \o'u"'ber Spr\o'u"'nge.
.LP
\ek
.br
\emark parm
.IP
Setzt eine Marke f\o'u"'r ein \ebranch.
.br
	(Parameter ist Labelname)
.LP
\eh
.br
\ehelp [parm]
.IP
Ausgabe des Inhaltsverzeichnisses der Referenz-Hilfen;
mit anschliessendem Titel wird eine Kurzinformation zum
Kommando gegeben.
.LP
\e<ein_anderes_Zeichen>
.br
.IP
Das Zeichen <backslash> gelangt in den Monitor\-Puffer,
irgendeine spezielle Bedeutung des <backslash>
f\o'u"'r das folgende Zeichen wird ignoriert - das 
erlaubt, das Zeichen "\e" auch als ein normales
Zeichen einzugeben
(siehe auch
.ft B
QUEL
.ft R
\- Zeichenketten).
Es ist wichtig, zu vermerken,
dass der Makro\-Prozessor die <backslash> wegblendet,
die zum Kaschieren von Begrenzern eingesetzt werden.
Im allgemeinen formuliert man also
zwei <backslash> hintereinander, wenn man eines
an den Parser senden will
(Das ist insgesamt aber so kompliziert,
dass man am besten die Verwendung von <backslash>
\o'u"'berhaupt vermeidet.).
.NH 4
.ft B
Makros **
.ft R
.LP
Eine genaue Beschreibung der Makros findet man
im Abschnitt
.ft B
Makros.
.ft R
.NH 4
.ft B
Springen **
.ft R
.LP
Die \ebranch\- und \emark\-Kommandos
erlauben es,
innerhalb eines \einclude File zu springen
(analog zu "goto <label>" und "<label>:"
in anderen Programmiersprachen).
Einem \emark\-Kommando muss eine Marke folgen.
Einem \ebranch\-Kommando folgt entweder eine Marke
\- was einen unbedingten Sprung \-
oder nach einem "?" ein Ausdruck, gefolgt von einer Marke
\- was einen bedingten Sprung bewirkt.
Der bedingte Sprung wird ausgef\o'u"'hrt,
wenn der Ausdruck gr\o'o"'sser als Null ist.
Zum Beispiel w\o'u"'rde
.br
        \ebranch ?{readcount} noinput
.br
immer dann zur Marke noinput springen,
wenn der Makro\p
{readcount} anzeigt,
dass keine Zeichen eingegeben wurden.
Wenn bei Ausf\o'u"'hrung eines Sprungs die Zielmarke
nicht gefunden wird, versucht der
Monitor die Marke, die der Aufl\o'o"'sung
des Makros {default} entspricht, zu finden.
Wird keine Zielmarke gefunden, wird das
\einclude File verlassen.
.LP
Der Ausdruck, der im \ebranch\-Kommando angegeben
werden kann, muss folgender Syntax gen\o'u"'gen:
.IP
Die Operatoren +, -, *,
 /,
\o'"', |,
<=, >=, <, >, =, und !=
sind in ihrer gew\o'o"'hnlichen Bedeutung definiert.
.LP
Der linke einstellige Operator "!" kann f\o'u"'r die
logische Negation benutzt werden.
Die Operationen werden nach den \o'u"'blichen
Vorrangregeln behandelt,
Abweichungen dazu k\o'o"'nnen durch
Klammerung mit () angewiesen werden.
Der Ausdruck darf keine Leerzeichen enthalten.
Ein Leerzeichen w\o'u"'rde den Ausdruck beenden.
.NH 4
.ft B
Initialisierung **
.ft R
.LP
W\o'a"'hrend des Startvorgangs (login)
werden eine Reihe von \%Initialisierungsaktionen ausgef\o'u"'hrt.
Zun\o'a"'chst (1) wird ein Makro "{pathname}"
definiert, der den ini\%tia\%li\%sie\%rungs\%ab\%h\o'a"'n\%gi\%gen
\*(yy\ Pfadnamen enth\o'a"'lt.
Weiter (2) wird das Ini\%tia\%li\%sie\%rungs\-File
"{pathname}/sys/etc/startup"
abgearbeitet.
Dieses File ist vorgesehen,
systemabh\o'a"'ngige Parameter,
wie den verwendeten Editor oder die verwendete Shell
zu definieren.
Drittens (3) wird ein nutzerabh\o'a"'ngiges
Initialisierungs\-File,
wie es in einem Feld des \*(yy\-Nutzerverzeichnis f\o'u"'r den
Nutzer spezifiziert ist,
gelesen und ausgef\o'u"'hrt.
Normalerweise dient dazu ein File namens ".quel"
im home_directory des Nutzers.
Dieses Initialisierungs\-File kann dazu dienen,
dem Nutzer gewisse Makros zu definieren
oder die gebr\o'a"'uchlichen range\-Statements
abzusenden.
Man kann in diesem File z.B. auch schon
das Start\-Menue eines voll eingerichteten
Anwendungsfalles unterbringen.
Letztlich (4) wird die Steuerung dem Nutzer\-Terminal
\o'u"'bergeben.
.NH 4
.ft B
Flags *
.ft R
.LP
Folgende Flags, wie sie bei Ruf von \*(yy\ (quel(unix))
gegeben werden k\o'o"'nnen, betreffen den Monitor:
.IP
Die \-\c
.ft B
a
.ft R
\-Option
unterdr\o'u"'ckt die autoclear\-Funktion.
Das bedeutet, dass der Monitor\-Puffer nicht
automatisch gel\o'o"'scht wird.
Die Wirkung ist so, als w\o'u"'rde
nach jedem \ego\-Kommando ein
\eappend\-Kommando eingef\o'u"'gt werden.
Unter dieser Option muss der Nutzer also selbst
jeweils durch ein explizites \ereset\-Kommando
den Monitor\-Puffer l\o'o"'schen.
.IP
Die \-\c
.ft B
d
.ft R
\-Option
unterdr\o'u"'ckt die Ausgabe des dayfile.
.IP
Die \-\c
.ft B
s
.ft R
\-Option
unterdr\o'u"'ckt mit Ausnahme der Fehlernachrichten
die Ausgabe aller Meldungen des Monitor,
also die login\- und logout\-Nachrichten,
die Ausgabe des dayfile und der Prompt\-Meldungen.
Diese Option kann f\o'u"'r "verdeckte Anfragen"
eingesetzt werden;
bei der Arbeit aus \einclude Files
wird diese Option tempor\o'a"'r automatisch gesetzt.
.LP
.ft B
SIEHE AUCH
.ft R
.IP
quel(unix),
makros
.RE
.sp 1
.ft B
NACHRICHTEN
.ft R
.IP
.RS
.IP ING_db>
 Sie k\o'o"'nnen eine neue Query beginnen.
.IP ING_db:
 Die vorangehende Query wurde bearbeitet.
Sie sind wieder im Monitor
.RE
.IP
I N G _ d b\ .\ .\ .
Die Query wird durch \*(yy\ bearbeitet.
.RS
.IP >>cmd [erg]
 Sie arbeiten unter einem \*(xx\-Text\-Editor.
.IP >>sh
 Sie arbeiten unter einer \*(xx\-shell.
.RE
.IP
Alle anderen Nachrichten sind selbsterkl\o'a"'rend.
.RE
