From 40aa6d469fd18d1ec0357f24c38d511e3ba9404c Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Thu, 22 Jun 1989 11:34:11 +0000 Subject: [PATCH] ING_DB --- WEGA/contrib/ingres/dbs/ing_src/teil2/monitor | 1112 +++++++++++++++++ 1 file changed, 1112 insertions(+) create mode 100644 WEGA/contrib/ingres/dbs/ing_src/teil2/monitor diff --git a/WEGA/contrib/ingres/dbs/ing_src/teil2/monitor b/WEGA/contrib/ingres/dbs/ing_src/teil2/monitor new file mode 100644 index 0000000..9cdc55f --- /dev/null +++ b/WEGA/contrib/ingres/dbs/ing_src/teil2/monitor @@ -0,0 +1,1112 @@ +.ds LH Anwendung +.ds RH \f3Monitor\f1 +.ds CH - % - +.LP +.bp +.NH 2 +.ft B +Monitor ** +.ft R +.LP +.sp 10 +.NH 3 +.ft B +Einf\o'u"'hrung +.ft R +.LP +Der Monitor realisiert die interaktive +Arbeit mit dem DBS \*(yy\. +Die Monitor-Kommandos erlauben in Zusammenarbeit +mit einem Editor und dem \*(yy\-Makro-Prozessor +gewisse Manipulationen an einem Text +von QUEL-Statements, bevor diese aus dem Monitor-Puffer +an den \*(yy\-Parser zur Analyse und zur Veranlassung +ihrer Ausf\o'u"'hrung \o'u"'bergeben werden. +Die Monitor-Kommandos erlauben die Steuerung +der Arbeit mit \*(yy\ aus vorgefertigten Kommandofiles, +die Monitor-Kommandos, Makro-Anweisungen und QUEL-Statements +enthalten k\o'o"'nnen. +.br +Der Monitor ist der front_end_process +des DBS \*(yy\. +Er liest einen Eingabetext +- prim\o'a"'r von standard_input - +und analysiert diesen auf Monitor-Kommandos. +Der Monitor f\o'u"'hrt in seinem Eingabetext gefundene +Monitor-Kommandos sofort aus, +anderer Text wird +in den Monitor-Puffer gestellt. +.br +Beispiele f\o'u"'r eine komplexe Anwendung des Monitors +sind erst in Verbindung mit Makros interessant und +finden sich in der +"Beschreibung des Makro-Prozessors" +und dem Kapitel +"Beispiele f\o'u"'r Monitor und Makro-Prozessor". +.NH 3 +.ft B +Modifikationen durch Optionen +.ft R +.LP +Der Monitor wird durch folgende Optionen gesteuert: +.DS I +-d Unterdr\o'u"'ckung der Ausgabe des dayfile + (s. Startvorgang und Arbeitszyklus) +-s Unterdr\o'u"'ckung der Ausgabe von Prompt-Meldungen + (s. Startvorgang und Arbeitszyklus) +-a Unterdr\o'u"'ckung des automatischen L\o'o"'schens des + Monitor-Puffers + (Ausschalten des autoclear_modus) + (s.Arbeit mit dem Monitor-Puffer) +.DE +.NH 3 +.ft B +Startvorgang und Arbeitszyklus +.ft R +.LP +Beim Start von \*(yy\ wird neben dem +DBS der Monitor ge\%startet. +.sp 1 +Der Monitor definiert den Makro +.DS C +"{pathname}" +.DE +mit dem Pfadnamen des \*(yy\-File-Systems. +(Folgend wird in diesem Kapitel ein File_name +unter diesem Pfadnamen mit +.DS C +ing_db/ +.DE +symbolisiert.) +.LP +Der Monitor definiert weiter den Makro +.DS C +"{usercode}" +.DE +mit dem 2-Byte-\\*(yy\-Usercode +(s. usersfile des arbeitenden Nutzers. +.sp 1 +Der Monitor meldet sich durch Ausgabe der +.DS I +\*(yy\-login-Meldung +.sp 1 +"ing_db version login + " +.DE +.LP +Diese Ausgabe wird durch die +Option "-s" unterdr\o'u"'ckt. +Anschliessend wird das +.DS C +ing_db/sys/etc/dayfile +.DE +angelistet, +was durch die Option "-d" +unterdr\o'u"'ckt werden kann. +Mit der Ausgabe des dayfile sollen den \*(yy\-Nutzern +aktuelle Informationen vermittelt werden. +Da es allen Nutzern angeboten wird, +ist es nicht zur Aufnahme nutzerspezifischer +Informationen geeignet. +.sp 1 +Durch den Monitor werden danach +nacheinander die Monitor-Kommandos +.DS B +\einclude ing_db/sys/etc/startup +\einclude +.DE +automatisch ausgef\o'u"'hrt, +was zur Abarbeitung von Kommandofolgen f\o'u"'hren +kann, +falls generell im startupfile f\o'u"'r \*(yy\, +oder spezifisch f\o'u"'r den Nutzer +(Angabe im 7.Feld der Nutzerzeile des +ing_db/sys/etc/users) +solche Files angelegt wurden +(s. auch \einclude-Kommando). +.sp 1 +Danach geht der Monitor in den Eingabe-Status +und beginnt seinen Arbeitszyklus. +.sp 1 +Zu Beginn des Eingabe-Status +meldet sich der Monitor mit den Prompt-Meldungen +.DS C +" ING_db>" +.DE +wenn der Monitor-Puffer leer ist, oder mit +.DS C +" ING_db:" +.DE +wenn der Monitor-Puffer nicht leer ist +und zeigt seine Eingabebereitschaft durch das +.DS C +Prompt-Symbol "* " +.DE +zu jedem Zeilenanfang. +Die Ausgabe der Prompt-Meldungen und auch des Prompt-Symbols +wird durch die Option "-s" unterdr\o'u"'ckt. +Davon unber\o'u"'hrt bleibt die Ausgabe +aller anderen folgend aufgez\o'a"'hlten Meldungen +zur Fehleranzeige. +.sp 1 +Der Monitor liest den Eingabetext in den Monitor-Puffer, +filtert die Monitor-Kommandos heraus +und f\o'u"'hrt diese sofort aus. +.sp 1 +Das spezielle Monitor-Kommando \ego (s.dort) +\o'u"'bergibt den Monitor-Puffer an den Parser, +der die QUEL-Statements analysiert und ausf\o'u"'hren l\o'a"'sst. +Mit \o'U"'bernahme dieses Kommendos meldet der Monitor +.DS C +"I N G _ d b . . . " +.DE +(diese Meldung unterbleibt, wenn die Option "-s" gesetzt ist) +und versetzt sich in einen Warte-Status. +.sp 1 +Der Monitor wird nach Abschluss der +Arbeiten des Parsers und den, diesen nachgelagerten +weiteren \*(yy\-Prozessen, wieder in den Eingabe-Status versetzt +und beginnt erneut seinen Arbeitszyklus. +.sp 1 +Nach Start von \*(yy\ +arbeitet der Monitor von standard_input +(i.d.R. also vom Terminal). +Durch ein \einclude-Kommando (s. dort) +arbeitet er danach file-gesteuert, +sein included_file ist der +Eingabetextspender. +Da man die Files hintereinander liegender +\einclude-Kommandos als Programm-Ebenen +betrachten kann, sagen wir, +der Monitor arbeitet nach Start in der +Basis-Terminal-Ebene +und durch \einclude-Kommandos +in darunter liegenden Programm-Ebenen. +.sp 1 +Die Ausgaben des Monitor +erfolgen immer auf standard_output +(i.d.R. also ebenfalls auf dem Terminal). +Die Eingaben der Funktions-Makros +{read...}, {readdefine...} (s.Makro-Prozessor) +erfolgen in allen Programm-Ebenen von standard_input. +.sp 1 +Der Arbeitszyklus des Monitor +und damit auch die \*(yy\-Sitzung +wird mit Ausf\o'u"'hrung eines \equit-Monitor-Kommandos (s.dort) +oder nach Einlesen eines in der Basis-Terminal-Ebene +(s. \einclude-Kommando) +beendet. +.sp 1 +Bei der Ausf\o'u"'hrung von Monitor-Kommandos wird der +Makroprozessor (s. dessen Kapitel) benutzt. +Folgend wird der Output-Text, den der Makroprozessor +aus einem Input-Text erzeugt, als +.DS C +< MACRO ( ) > +.DE +symbolisiert. +.NH 3 +.ft B +Arbeit mit dem Monitor-Puffer +.ft R +.LP +Bei der Eingabe vom Terminal wird der Eingabetext +vom Monitor erst als vollst\o'a"'ndige Zeile +(also erst nach Eintasten des ) \o'u"'bernommen. +Vorher sind Korrekturen mit +oder m\o'o"'glich. +Nach \o'U"'bernahme der Zeile k\o'o"'nnen Korrekturen +im Monitor-Puffer nur noch durch die Monitor-Kommandos +\ereset oder \eeditor ausgef\o'u"'hrt werden. +.sp 1 +Der Monitor lehnt die Eingabe aller Zeichen, +deren Codewert kleiner als oktal 040 ist, +ausser , und , ab. +Genauer gesagt, +er wandelt sie in ein um und signalisiert +das durch die Meldung +.DS C +"Zeichen 0** konvertiert in blanks" +.DE +Die im Monitor-Puffer formulierten QUEL-Statements +werden mit einem \ego-Kommando zur Ausf\o'u"'hrung +angewiesen. +Danach kann der Monitor-Puffer +in der Regel gel\o'o"'scht werden. +Das passiert auch im sogenannten autoclear_mode. +Das L\o'o"'schen erfolgt nicht, wenn man sich +nach R\o'u"'ckkehr in den Eingabe-Status des Monitor +sofort noch einmal f\o'u"'r den alten Inhalt +des Monitor-Puffers interessiert. +.sp +Der autoclear_mode wird durch die Option "-a" +abgeschaltet. Mit dieser Option muss man in allen +F\o'a"'llen selbst\o'a"'ndig - durch ein \ereset-Kommando - +den Monitor-Puffer l\o'o"'schen. +.sp 1 +Genauer gesagt, l\o'a"'uft folgendes ab: +.br +Nach einem \ego-Kommando +ist der Monitor-Puffer zun\o'a"'chst noch unver\o'a"'ndert. +Er wird jetzt aber zur L\o'o"'schung vorgemerkt. +Diese Vormerkung kann durch die Option "-a" +unterdr\o'u"'ckt werden. +Die Ausf\o'u"'hrung eines vorgemerkten L\o'o"'schens h\o'a"'ngt davon +ab, welches Monitor-Kommando folgt: +.br +Die Kommandos \eappend, \eprint, \elist, \eedit +machen die Vormerkung r\o'u"'ckg\o'a"'ngig; +das Kommando \ereset f\o'u"'hrt ohnehin ein L\o'o"'schen +aus, alle anderen Kommandos ber\o'u"'cksichtigen die +Vormerkung nicht, \eeval setzt sie selbst. +Die Ausf\o'u"'hrung der vorgemerkten L\o'o"'schung +erfolgt unmittelbar vor und anl\o'a"'sslich der Eintragung +des ersten Nicht-Kommando-Zeichens des Eingabetextes in +den Monitor-Puffer. +.sp 1 +Durch dieses automatische L\o'o"'schen des Monitor-Puffers +sollen die normalen Arbeitszyklen +.DS I + +\ego + +\ego +.DE +oder z.B. +.DS I + +\ego +\eappend | \eeditor + +\ego +.DE +unterst\o'u"'tzt werden. +.NH 3 +.ft B +Synchrone Beendigung und +.br + asynchrone Unterbrechung +.ft R +.LP +Durch Abgabe eines Interruptsignals +wird der Warte-Status des Monitor beendet. +Das bedeutet, dass die vom Parser initiierten \*(yy\-Prozesse +asynchron zum Abbrechen veranlasst werden +(Achtung: Bei QUEL-Statements, die die Datenbasis \o'a"'ndern, +besteht darin eine gewisse Gefahr!). +Die Abgabe eines Interruptsignals, w\o'a"'hrend sich der Monitor +im Eingabe-Status +befindet, +ist wirkungslos. +.sp 1 +Die Abgabe eines Interruptsignals +w\o'a"'hrend der file-gesteuerten Arbeit des +Monitor f\o'u"'hrt zur R\o'u"'ckkehr in die +Basis-Terminal-Ebene. +.sp 1 +Ein in einer, +unter der Basis-Terminal-Ebene +liegenden Programmebene +(s. \einclude-Kommando) +f\o'u"'hrt zur R\o'u"'ckkehr +in die dar\o'u"'ber liegende Programm-Ebene +und die der letzten zur Beendigung des Monitors +( wie Monitor-\quit-Kommandos ). +.sp 1 +.NH 3 +.ft B +Struktur der Monitor-Kommandos +.ft R +.LP +Ein Monitor-Kommando ist eine Zeichenfolge der Form +.DS L + "\e" {|} [] +.sp 1 +mit +.sp 1 + = + {|} ; +.DE +.DS L +und + = +.sp 1 +.DE +.DS + "H" | "help" | + "a" | "append" | + "b" | "branch" | + "cd" | "chdir" | + "e" | "ed" | "edit" | "editor" | + "g" | "go" | + "h" | "help" | + "i" | "include" | "read" | + "k" | "mark" | + "l" | "list" | + "p" | "print" | + "q" | "quit" | + "r" | "reset" | + "s" | "sh" | "shell" | + "d" | "time" | "date" | + "v" | "eval" | + "w" | "write" | + "m" | "monitor"; +.DE +.LP +Das sind die Monitor-Kommando-Namen mit ihren Alias-Namen. +.sp 1 +Die sind abh\o'a"'ngig vom jeweiligen Kommandotyp +und werden dort beschrieben. +Es gibt grunds\o'a"'tzlich drei Gruppen von Kommandos: +solche, die +.br + keinen haben, +.br + wahlweise einen haben, +.br + unbedingt einen haben m\o'u"'ssen. +.br +Da mit abgeschlossen wird, k\o'o"'nnen Kommandos +der letztgenannten beiden Gruppen nur am Ende einer Zeile +formuliert werden. +Das Zeilenende kann f\o'u"'r einen Monitor-Parameter +nicht durch kaschiert werden ! +.sp 1 +Eine genaue Darstellung der Verwendung der +in den Monitor-Kommandos ist folgende: +.br +Zur Auswertung des Kommandoparameters wird die Zeichenkette +.DS I +< MACRO( ) > +.DE +herangezogen. +Input-Text f\o'u"'r den Makro-Prozessor +ist der, im Kommando formulierte Text bis zum . +Beim \ebranch-Kommando +m\o'u"'ssen beide Parameterteile und +vor dem untergebracht werden. +Vom Output-Text des Makro-Prozessors werden die +Zeichen nach den f\o'u"'hrenden oder +bis zum Ende, aber maximal nur 100 Zeichen +genommen (beim \ebranch-Kommando 100 Zeichen f\o'u"'r beide Parameter). +.sp 1 +Bei der Analyse des Eingabetextes +versucht der Monitor jede, einem ("\e") folgende +Zeichenfolge als Monitor-Kommando zu interpretieren, +unabh\o'a"'ngig davon, ob dem +Klammern ( (... oder {... ) +oder Quoting-Symbole ( "... oder `... oder /*... ) +vorausgegangen sind. +Auch die Formulierung von "\e\e" +f\o'u"'hrt nur dazu, dass das erste "\e" in den Monitor-Puffer +\o'u"'bernommen wird, dann aber die dem zweiten "\e" folgenden +Zeichen auf ein Monitor-Kommando analysiert w\o'u"'rden. +.sp 1 +Eine als Monitor-Kommando identifizierte Zeichenfolge +gelangt nicht in den Monitor-Puffer; +wohl aber sonst die gesamte Zeichenfolge +einschliesslich des . +.sp 1 +Der Monitor liest seine Kommandos nur aus dem Eingabetext; +er kann nicht dazu gebracht werden, +den Monitor-Puffer als Eingabetext zu lesen. +.NH 3 +.ft B +Beschreibung der Monitor-Kommandos +.ft R +.LP +Der folgende Abschnitt beschreibt die einzelnen +Monitor-Kommandos. Die Kommando-Schreibweise +in den Zwischen\o'u"'berschriften ist als plausible +Abk\o'u"'rzung der vorn exakt definierten Notation +zu verstehen. +.NH 4 +.ft B +Append +.ft R +.LP +.sp 1 +\ea +.br +\eappend +.IP +Eine ggf. eingetragene L\o'o"'schvormerkung des Monitor-Puffers +(autoclear_mode) +wird ausgetragen, sodass ein folgender +Eingabetext - jedenfalls beginnend als neue Zeile - +dem bisherigen Monitor-Puffer angef\o'u"'gt wird. +.NH 4 +.ft B +Branch +.ft R +.LP +.sp 1 +\eb +.br +\ebranch +.IP + = +.br + {|} ["?"] +.br + {|} ; +.br +.sp 1 +Durch das Kommando erfolgt ein bedingter oder unbedingter +Sprung im Eingabetext. +Die Ausf\o'u"'hrung eines Sprungs wird mit der Meldung +.DS C +"Kein Sprung am Terminal" +.DE +abgelehnt, wenn der Eingabetext vom Terminal gelesen wird. +Andernfalls wird im Falle eines auszuf\o'u"'hrenden Sprungs +im Eingabetext +- also im included_file - +die Marke +.DS C +\ek +.DE +gesucht (s. \ek-Kommando), f\o'u"'r die +.DS C +)> = +.DE +ist. Wird eine solche Marke gefunden, wird anschliessend +die Eingabe des Eingabetextes mit der, dieser Marke folgenden +Textposition fortgesetzt. Wird keine solche Marke gefunden, +wird versucht, einen Sprung +.DS C +\ebranch {default} +.DE +auszuf\o'u"'hren. Gelingt auch das nicht +(weil der Makro "{default}" nicht definiert ist, +oder im included_file nicht addressiert), +wird darauf mit der Meldung +.DS C +" ? Label )>" +" ? Label < MACRO ({default}) > ({default}) " +.DE +hingewiesen und das included_file folgend verlassen +(folgend wird aus dem Eingabetext gelesen (s. \einclude-Kommando)). +.sp 1 +Ein unbedingter Sprung ohne die Angabe +"?" +wird in jedem Falle auszuf\o'u"'hren versucht. +Bei einem bedingten Sprung wird der Ausdruck +.DS C +)> +.DE +ausgewertet. +Dieser Ausdruck darf Operatoren und Operanden enthalten. +Operatoren sind: +.DS +** Potenzieren +- ! Vorzeichen, logische Negation +* / % Multiplikation, Division, Divisionsrest ++ - als zweistellige Operationen +> >= < <= Vergleichsoperatoren += != Gleichheit, Ungleichheit +& logisches UND +| logisches inclusives ODER +.DE +.sp 1 +Operationen auf gleicher Zeile +sind von gleicher Bindungsst\o'a"'rke, sonst gilt +absteigende Bindung entsprechend der Aufz\o'a"'hlung +zur Festlegung der Bindung von Operationen. +.sp 1 +Der Ausdruck +darf als Operanden nur noch ganzzahlig numerische Werte +mit einem Wertebereich zwischen -32768 bis 32767 +enthalten, sonst erfolgt nach entsprechenden Meldungen +(s. unten) +ein Abbruch der weiteren Ausdrucksberechnung. +Die Ausdrucksauswertung wird durch die Zeichen +.DS C +, , oder +.DE +beendet. +.sp 1 +Die arithmetischen Operationen werden in \o'u"'blicher +Ganzzahlarithmetik (/: ganzer Teil der Division, +%: Divisionsrest; Division durch 0 ergibt nach Warnung den Wert 0) +berechnet. Die logischen Operationen ( !,=,>,<,| ) +deuten bei ihren Operanden <=0 als FALSE und >0 als TRUE. +Die logischen Operationen und die Vergleichsoperationen +liefern den arithmetischen Wert 0 f\o'u"'r FALSE und 1 f\o'u"'r TRUE. +Die Ausdrucksberechnung erfolgt +von links nach rechts, +entsprechend den Bindungsregeln, +geklammerte Teile werden ge- und entkellert. +.sp 1 +Bei der Ausdrucksauswertung (nach Makro-Aufl\o'o"'sung) +werden folgende Fehler im Ausdruck erkannt: +.DS B +\ \ \ \ zus\o'a"'tzliche schliessende Klammern +\ \ \ \ am Ende werden ignoriert + +\ \ \ \ zus\o'a"'tzliche \o'o"'ffnende Klammern +\ \ \ \ am Ende, ergeben 0 als Ausdruckswert + +\ \ \ \ der Ausdruck ist leer, +\ \ \ \ sein Wert ist 0 + +\ \ \ \ der Ausdruck enth\o'a"'lt nur das +\ \ \ \ nicht akzeptable Zeichen , +\ \ \ \ sein Wert wird 0 + +\ \ \ \ das gefundene ist kein Operator +\ \ \ \ der Wert wird 0 + +\ \ \ \ Division durch 0 ergibt den Wert 0 +.DE +Ein bedingter Sprung wird ausgef\o'u"'hrt, +wenn die Auswertung des Ausdrucks einen Wert > 0 +erbringt. Andernfalls wird die Eingabe des Eingabetextes +hinter folgend fortgesetzt. +.NH 4 +.ft B +Chdir +.ft R +.LP +.sp 1 +\ecd +.br +\echdir +.IP +Das vom Nutzer bei Start von \*(yy\ +von ihm eingestellte +working_directory bleibt auch +w\o'a"'hrend der Arbeit von \*(yy\ erhalten. +Unter diesem Pfadnamen bestimmte Files +werden im Unterschied zu dem, +durch {Pathname} mit "ing_db" symbolisierten Files, +in diesem Kapitel +als +.DS I + / +.DE +symbolisiert. +.sp 1 +Das f\o'u"'r den Nutzer vor Start von \*(yy\ +eingestellte working_directory wird durch das +\echdir-Monitor-Kommando auf +.DS I + = )> +.DE +ver\o'a"'ndert; +\o'u"'ber einen Misserfolg dabei informiert die Meldung +.DS C +"cannot access directory )> " +.DE +Der Monitor meldet sich nach Kommando-Ausf\o'u"'hrung +wieder mit einer Prompt-Meldung "ING_db>" oder "ING_db:". +.NH 4 +.ft B +Editor +.ft R +.LP +.sp 1 +\ee [] +.br +\eed [] +.br +\eedit [] +.br +\eeditor [] +.IP +Es wird ein Editor aus dem File +.DS C + +.DE +zu laden versucht. +Ist der Makro nicht definiert, wird gleich +ein installationsabh\o'a"'ngiger System-Editor, z.B. +.ft B +ed, vi, rand, +.ft R +geladen. Gelingt das nicht, erfolgt eine Fehlerausschrift. +Ausserdem wird der Makro {errorcount} mit dem Wert -1 +gef\o'u"'llt und der Macro {exectrap} +mit der Meldung +.DS C +"edit: exec" +.DE +ausgef\o'u"'hrt. +.sp 1 +Der Monitor meldet +.DS C +">> " +.DE +Danach arbeitet man unter Steuerung des geladenen Editors, +ihm wird als Parameter +.DS C +)> +.DE +oder falls das Kommando keinen Parameter hatte, der +File-Name des Monitor-Puffers \o'u"'bergeben. +Das bedeutet, dass der Editor das File l\o'a"'dt +und als currentfile einstellt. +.sp 1 +Im Falle der Arbeit auf dem Monitor-Puffer kommen mit +dem Editor ausgef\o'u"'hrte \o'A"'nderungen nur dann dort an, +wenn dem Editor ein w-Editor-Kommando vor \o'A"'nderung +seines currentfile gegeben wird. Jedenfalls wird bei Ausf\o'u"'hrung +eines \ee-Monitor-Kommandos eine ggf. eingetragene L\o'o"'schvormerkung +f\o'u"'r den Monitor-Puffer (autoclear_mode) ausgetragen. +.sp 1 +Nat\o'u"'rlich kann nach der Arbeit auf dem Monitor-Puffer +oder \o'u"'berhaupt auch in anderen Files editiert werden. +Beachten sie bei der Formulierung von File-Namen, +dass user_cd als current_directory (s. \echdir-Kommando) +eingestellt ist. +.sp 1 +Nach einem q-Editor-Kommando f\o'u"'r +den System-Editor oder einer anderen Beendigung des +geladenen Editors erfolgt die +R\o'u"'ckkehr zum \*(yy\-Monitor. +Der Monitor ruft f\o'u"'r den Fall, +dass der Editor einen R\o'u"'ckkehrcode\ !=\ 0 lieferte, +den Makro {exectrap}. Vorher wird der Makro {errorcount} +mit dem exit-Status des Editors gef\o'u"'llt. Das erfolgt so, +als g\o'a"'be man selbst das Monitor-Kommando +.DS C +{exectrap}\eeval +.DE +.NH 4 +.ft B +Go +.ft R +.LP +.sp 1 +\eg +.br +\ego +.IP +Mit diesem Kommando werden QUEL-Statements zur Ausf\o'u"'hrung +angewiesen. +Der Monitor zeigt die Kommando\o'u"'bernahme mit der Prompt-Meldung +.DS C +"I N G - d b . . ." +.DE +an und beendet damit seinen Eingabe-Status f\o'u"'r die Dauer der +Arbeit des Parsers und der diesem nachgelagerter Prozesse. +.sp 1 +Dem Parser wird die vom Makro-Prozessor verarbeitete Verkettung +folgender Texte \o'u"'bergeben: +.DS I +< MACRO ( , + , + ) > +.DE +Man achte darauf, +dass der Monitor-Puffer so bereinigt wurde, +dass dem Parser nur QUEL-Statements +\o'u"'bergeben werden, er signalisiert sonst Fehler. +.sp 1 +Nachdem die Arbeit des Parsers und dessen nach\%gelagerter Prozesse +bei der Ausf\o'u"'hrung der QUEL-Statements beendet ist, +arbeitet der Monitor weiter. +Der Monitor \o'u"'bernimmt N als Anzahl der +bearbeiteten Tupel und definiert den Makro {tuplecount} als +.DS C +{define; {tuplecount}; N} +.DE +Der Monitor arbeitet den Makro {continuetrap} ab, +als h\o'a"'tte man das Monitor-Kommando +.DS C +{continuetrap} \eeval +.DE +(s. Makroprozessor) gegeben. Der Monitor zeigt seine +Eingabebereitschaft durch die Prompt-Meldungen "ING_db>" oder "ING_db:" +an. +.sp 1 +Nach einem \ego-Kommando ist der Monitor-Puffer zun\o'a"'chst +noch unver\o'a"'ndert; +er ist jetzt aber zur L\o'o"'schung vorgemerkt +(autoclear_mode). +Diese L\o'o"'schvormerkung wird durch die Option "-a" +unterdr\o'u"'ckt. +.sp 1 +Wenn die Er\o'o"'ffnung des Monitor-Puffers f\o'u"'r den Makro-Prozessor +nicht gelingt, erfolgt ein Systemabbruch mit der Meldung +.DS C +"go: open 1" +.DE +.NH 4 +.ft B +Help +.ft R +.LP +.sp 1 +\eh [] +.br +\ehelp [] +.br +.IP +Der Monitor w\o'a"'hlt mit Angabe aus ../sys/ref die +Kurzdokumentation zum \*(yy\-Kommando und schreibt auf "std_out". +Ohne wird das Inhaltsverzeichnis ausgegeben. +.NH 4 +.ft B +Include und Read +.ft R +.LP +.sp 1 +\ei +.br +\einclude +.br +\eread +.IP +Dem Monitor wird das File +.DS I + / )> +.DE +als Eingabetextspender zugeordnet. Das Kommando wirkt wie ein +Sprung an den Anfang dieses File. +.sp 1 +Fehlt oder ist )> leer, wirkt das +Kommando so, dass das folgende Zeichen des dem Monitor +angeschlossenen Eingabetextes wird. +Das bedeutet, dass ein included_file folgend verlassen wird; +in der Basis-Terminal-Ebene tritt der Effekt +wie nach einem \equit-Kommando ein. +.sp 1 +Andernfalls wird das durch )> bezeichnete File +zum k\o'u"'nftigen Eingabetextspender f\o'u"'r den Monitor (es sei denn +die Meldung +.DS C +"open INCLUDE file )> " +.DE +zeigt den Abbruch der Kommandobearbeitung an). +Solange der Monitor "file-gesteuert" arbeitet, +werden die Prompt-Meldungen wie durch die \*(yy\-Option "-s" +unterdr\o'u"'ckt. +.sp 1 +F\o'u"'r die Funktions-Makros {read...}, {readdefine...} +(s. Makro-Prozessor) bleibt auch bei dieser Arbeitsweise +des Monitor +das Terminal (genauer standard_input) das Eingabemedium. +.sp 1 +Das angeschlossene File darf weitere \einclude-Kommandos +enthalten; diese sind bis zu einer Schachtelungstiefe +von 5 (diese Anzahl ist generierungsf\o'a"'hig) +hierarchisch hintereinander liegender \einclude-Kommandos +erlaubt. +Ggf. erfolgt eine Kommandoabweisung durch die Meldung +.DS C +"Mehr als 5 INCLUDE'S" +.DE +Liest der Monitor aus dem included_file +(nachdem es sequentiell durchlesen wurde, oder bei +Nichterfolg eines dort enthaltenen Monitor-Kommandos), +wird das File verlassen; die Monitoreingabe wird mit +dem Text des File hinter dem letztwirksamen \einclude-Kommando +fortgesetzt. +.sp 1 +Bei R\o'u"'ckkehr in die Basis-Terminal-Ebene +meldet sich der Monitor - falls nicht "-s" gesetzt war - +wieder mit einer Prompt-Meldung "ING_db>" oder "ING_db:". +Die Abgabe eines in der Basis-Terminal-Ebene +hat die gleiche Wirkung wie das \equit-Kommando: +die \*(yy\-Sitzung wird synchron beendet. +.sp 1 +Ist )> das einzelne Zeichen "-", +erfolgt die Meldung +.DS C +"" +.DE +und der k\o'u"'nftige Eingabetext f\o'u"'r den Monitor wird +wieder vom Terminal (standard_input) gelesen. Das ist nicht die oben +erw\o'a"'hnte Basis-Terminal-Ebene; durch Abgabe eines + vom Terminal erfolgt kein Sitzungs\%abbruch, sondern es +wird wieder das File zum Eingabetextspender, +aus dem das "\einclude -" abgesetzt worden war. +Das er\o'o"'ffnet die M\o'o"'glichkeit, unter grunds\o'a"'tzlicher +Steuerung durch ein File, zwischenzeitlich in freiem Format +vom Terminal zu lesen. Das Nachrichtenlevel f\o'u"'r die +Promptmeldungen ("-s" oder nicht) ist w\o'a"'hrend dieser Arbeit am Terminal +wieder so, wie f\o'u"'r die \*(yy\-Sitzung eingestellt. +.NH 4 +.ft B +Mark +.ft R +.LP +.sp 1 +\ek +.br +\emark +.IP +Der Eingabetext enth\o'a"'lt eine Marke als Zielangabe +eines ggf. auszuf\o'u"'hrenden \ebranch-Kommandos. +Das Kommando selbst ist wirkungslos. +Der Eingabetext wird bis hinter \o'u"'berlesen; +der Monitor-Puffer wird folgend jedenfalls mit einer +neuen Zeile weiter beschrieben, +der Monitor meldet sich wieder mit einem Prompt-Symbol. +Anl\o'a"'sslich der Ausf\o'u"'hrung eines \ebranch-Kommandos +wird das included_file von vorn beginnend nach der +zutreffenden Marke abgesucht. +.NH 4 +.ft B +List +.ft R +.LP +.sp 1 +\el +.br +\elist +.IP +Der vom Makro-Prozessor aus dem verketteten Text erzeugte Text +.DS B +< MACRO( , + , + ) > +.DE +wird auf dem Terminal angelistet. Man erh\o'a"'lt dadurch +Auskunft, welcher Text tats\o'a"'chlich dem Parser mit einem +\ego-Kommando angeboten w\o'u"'rde. Weiterhin werden durch die +Arbeit des Makro-Prozessors die +Funktions-Makros +(s. Makro-Prozessor) bearbeitet. +Der Monitor-Puffer bleibt unver\o'a"'ndert. +(Achtung: Dadurch, dass bei der ersten Verwendung des Kommandos +ggf. Substitutions-Makros definiert werden, kann die wiederholte Anwendung +des Kommandos andere Ergebnisse bringen.) +.sp 1 +Eine ggf. eingetragene L\o'o"'schvormerkung f\o'u"'r den Monitor-Puffer +wird ausgetragen (autoclear_mode). +.NH 4 +.ft B +Monitor +.ft R +.LP +Mit dem Monitor-Kommando l\o'a"'sst sich das standardm\o'a"'ssige +Kommandokennzeichen +.ft B +"\e" +.ft R +umdefinieren. Fehlt das Argument , wird wieder auf den +Standard zur\o'u"'ckgeschaltet. +.br +Die Neudefinition des Kommandokennzeichens sollte nur dann vorgenommen +werden, wenn das Zeichen +.ft B +"\e" +.ft R +nicht oder nur umst\o'a"'ndlich erreicht werden kann. +.br +Es wird darauf hingewiesen, dass bei Neudefinition des +Kommandokennzeichens Monitor-Kommandodateien unter +Umst\o'a"'nden nicht mehr abarbeitungsf\o'a"'hig sind. +.NH 4 +.ft B +Print +.ft R +.LP +.sp 1 +\ep +.br +\eprint +.IP +Der Inhalt des Monitor-Puffers +wird ohne Ver\o'a"'nderung durch den Makro-Prozessor +auf dem Terminal +angelistet. Eine ggf. eingetragene L\o'o"'schvormerkung f\o'u"'r den +Monitor-Puffer wird ausgetragen (autoclear_mode). +Der Monitor meldet sich nach Kommandoausf\o'u"'hrung wieder +mit einer Prompt-Meldung "ING_db>" oder "ING_db:". +.NH 4 +.ft B +Quit +.ft R +.LP +.sp 1 +\eq +.br +\equit +.IP +Die \*(yy\-Sitzung wird synchron beendet. Falls nicht die \*(yy\ 6.3-Option "-s" +gesetzt war, erfolgt abschliessend die +.DS +\*(yy\-logout-Meldung +.sp 1 +"ing_db vers logout + + Auf Wiedersehen [] -- Kommen Sie bald wieder" +.DE +.NH 4 +.ft B +Reset +.ft R +.LP +.sp 1 +\er +.br +\ereset +.IP +Der Inhalt des Monitor-Puffers wird gel\o'o"'scht. +.NH 4 +.ft B +Shell +.ft R +.LP +.sp 1 +\es [] +.br +\esh [] +.br +\eshell [] +.IP +Das Kommando dient der Ausf\o'u"'hrung von \*(xx\-Programmen +w\o'a"'hrend der \*(yy\-Sitzung, insbesondere unter +Steuerung des \*(xx\-Kommandointerpreters SHELL. +Das Kommando kann weitreichender benutzt werden. + +Es wird ein neuer process "geforkt" (Systemabbruch mit Meldung +"shell: fork", wenn das nicht gelingt), +ein Programm geladen und +die Meldung +.DS C +">> " +.DE +gebracht. +Das Programm wird als File +.DS C + +.DE +zu laden versucht. Ist dieser Makro definiert und ge\%lingt der +Ladevorgang nicht, wird der Makro +{errorcount} auf -1 gesetzt und der Makro {exetrap} ausgef\o'u"'hrt. +.IP +Gelingt der Ladevorgang, +wurde dem gerufenen Programm als 0.Parameter +der Programmname, +als 1.Parameter der File_name +des Monitor-Puffers +und als 2.Parameter +der Wert des ggf. durch den Makro-Prozessor transformierten +\eshell-Kommandoparameters \o'u"'bergeben. +.LP +Ist der Makro nicht definiert, +wird eine instal\%lation\%sab\%h\o'a'n\%gige +SHELL aufgerufen. +.DS C +//sh//csh//vsh +.DE +geladen. +.br +Gelingt das nicht, erfolgt ein Systemabbruch mit der Meldung +.DS C +"shell: exec" +.DE +.sp 1 +Falls in diesem Falle das \eshell-Kommando keinen hatte, +wird die geladene SHELL als interaktive SHELL gestartet; +durch Abgabe eines quit-SHELL-Signals kommt man in den +Monitor zur\o'u"'ck. +Falls das \eshell-Kommando hatte, +wird \o'u"'ber eine SHELL das, durch MACRO() +bezeichnete, SHELL-Kommando aufgerufen. +Man beachte, dass aus mehreren +durch getrennten W\o'o"'rtern bestehen darf +( reicht bis zum nicht kaschierbaren Zeilenende +des Monitor-Kommandos !). +Dadurch k\o'o"'nnen dem SHELL-Kommando Parameter +\o'u"'bermittelt werden. +Die R\o'u"'ckkehr zum Monitor erfolgt automatisch mit +Beendigung des aufgerufenen SHELL-Kommandos. +.sp 1 +In Auswertung eines R\o'u"'ckkehrcodes +des aufgerufenen Programms, +der interaktiven SHELL oder des SHELL-Kommandos +erfolgt +durch den \*(yy\-Monitor +die Ausf\o'u"'hrung des {exectrap}, wenn der +R\o'u"'ckkehrcode\ !=\ 0 war. +Das erfolgt in einer Form, als g\o'a"'be man selbst +das Monitor-Kommando +.DS C +{exectrap}\eeval +.DE +Nach R\o'u"'ckkehr aus der SHELL ist der Monitor wieder im vorangehend +verlassenen Eingabe-Status. +.NH 4 +.ft B +Time und Date +.ft R +.LP +.sp 1 +\ed +.br +\etime +.br +\edate +.IP +Die aktuelle Zeit wird auf dem Terminal ausgegeben. +Im Monitor-Puffer wird ein Zeilenwechsel eingetragen. +.NH 4 +.ft B +Eval +.ft R +.LP +.sp 1 +\ev +.br +\eeval +.IP +Dem Makro-Prozessor wird der +Monitor-Puffer als Eingabetext +angeboten, wodurch insbesondere die define-Makros +in die Makro-Tabelle \o'u"'bernommen (s. Makro-Prozessor), +aber ggf. auch andere Funktions-Makros abgearbeitet werden. +.sp 1 +Im Unterschied zum \elist-Kommando erfolgt +keine Einbe\%ziehung von {begintrap} und {endtrap} +und keine Anli\%stung des +Makro-Ausgabetextes. +Es erfolgen aber die auf standard_output +wirkenden Ausgaben der +{dump;...}-, {type;...}- und {read....}-Makros. +Weiterhin wird anschliessend der Monitor-Puffer +zum L\o'o"'schen vorgemerkt (falls nicht "-a" gesetzt war, +autoclear_mode). +.sp 1 +Damit ist das \eeval-Kommando +das f\o'u"'r die Abarbeitung von Funktions-Makros +zu bevorzugende Kommando (s. Makro-Prozessor) +.sp 1 +Der Monitor meldet sich nach Kommando-Ausf\o'u"'hrung mit einer +Prompt-Meldung "ING_db>" oder "ING_db:". +.NH 4 +.ft B +Write +.ft R +.LP +.sp 1 +\ew +.br +\ewrite +.IP +Der Monitor-Puffer wird auf das File +.DS C + / )> +.DE +(s. \echdir-Kommando) ausgeschrieben +(das File wird mit Modus 0644 cre\o'i"'ert). +.sp 1 +Es k\o'o"'nnen folgende Fehlermeldungen den Misserfolg anzeigen: +.DS B +"unakzeptabler file name )>" +"create WRITE-file )>" +.DE +.sp 1 +Nach Ausf\o'u"'hrung des Kommandos meldet sich der Monitor +wieder mit einer Prompt-Meldung "ING_db>" oder "ING_db:". +.sp 1 +.LP +Der Monitor als Programm-Prozess bringt einige Fehlermeldungen, +die sich auf die Ausgabe von Fehlertexten aus anderen +\*(yy\-Prozessen beziehen, wenn die dazu n\o'o"'tigen Fehlertext-Files +nicht lesbar, oder syntaktisch regelwidrig sind. +