     MONITOR(IQL)                 DABA16                  MONITOR(IQL)

     NAME
          monitor - interaktiver Terminal-Monitor

     BESCHREIBUNG
          Der Terminal-Monitor realisiert zusammen mit  dem  DBBS  das
          interaktive Interface (Nutzeroberflaeche) IQL von DABA.

          Der  Monitor  stellt  einen  Monitor-Puffer,  die  Terminal-
          Monitor-Kommando-Unterstuetzung  und die Makrounterstuetzung
          (Makroprozessor) (macros(iql))  nach  seinem  Start  bereit.
          Die  von  der  Monitor-Kommando-Unterstuetzung verarbeiteten
          Monitor-Kommandos erlauben u.a. in Zusammenarbeit mit  einem
          Editor und dem Makro-Prozessor die Manipulation des Inhaltes
          des Monitor-Puffers.  Dieser manipulierte  Inhalt  wird  dem
          DBBS  als  QL-Anfragenstapel  uebergeben und von diesem ver-
          arbeitet.  Ausserdem gestatten die Kommandos einen vorueber-
          gehenden  Wechsel der interaktiven Umgebung (Shell bzw. Edi-
          tor).

          Die Monitor-Kommandos gestatten in vom Nutzer vorgefertigten
          Kommandofiles (Monitor-Programme als Include-Files) eine Ab-
          laufsteuerung. Diese Files (aber auch Terminal-Eingaben) ko-
          ennen  Monitor-Kommandos, Makro-Anweisungen und als wichtig-
          ste  QL-Anweisungen  (bzw.  Text,  aus  dem  mittels  Makro-
          Substitution QL-Anweisungen erzeugt werden) enthalten.

          Zusammenstellung der Monitor-Kommandos

          Der Monitor-Puffer kann mit Monitor-Kommandos:

          - geloescht (\reset, \r),
          - editiert (Aufruf eines Editors) (\editor, \edit, \ed,
            \e),
          - angezeigt (\list, \l oder \print, \p),
          - durch Terminal-Eingaben ersetzt (Eingabe nach \go
            und Autoloeschfunktion "ein")
            oder ergaenzt (Eingabe nach \append, \a oder \e, \l
            bzw. \p),
          - durch den Inhalt eines MUTOS-File ersetzt (\include,
            \read, \i)
            oder ergaenzt (\include, \read, \i nach \a, \l bzw.
            \p) bzw.
          - in ein MUTOS-File geschrieben (\write, \w)

          werden.

          Ausserdem gibt es Monitor-Kommandos fuer:

          - die Flucht in eine MUTOS-Shell (\shell, \sh, \s),
          - den Ausgang aus DABA (\quit, \q),
          - die Verarbeitung eines sich im Puffer befindlichen
            Monitor-Makros durch den Makroprozessor (\eval, \v),
          - das Anzeigen von Uhrzeit und Datum (\date, \time, \d),
          - das Anzeigen von Komponentenbeschreibungen des Handbuches
            in Lang- oder Kurzform (\H bzw. \h),
          - das Aendern des Arbeits-Directory (\chdir, \cd),
          - das Setzen von Sprungmarken (\mark, \k),
          - das Verzweigen zu einer Sprungmarke (\branch, \b)
            (bedingt oder unbedingt),
          - die Uebergabe des Inhaltes des Monitor-Puffers (QL-
            Anfragenstapel) zur Verarbeitung durch das DBBS (\go, \g)
          - und zur Aenderung des Kommandokennzeichens (\monitor, \m).


     Nachrichten und Eingabe-Aufforderungen (Prompts)

     Um den Nutzer ueber den Status des Monitors und des  Anfragenpuf-
     fers zu informieren, gibt der Terminal-Monitor verschiedene Nach-
     richten aus.

     Wenn DABA bereit ist, Eingaben zu akzeptieren, wird die Nachricht
     "DABA>"  angezeigt.   Das  bedeutet, dass der Anfragenpuffer leer
     ist.

     Die Nachricht "DABA:" erscheint, wenn  der  Anfragenpuffer  nicht
     leer ist.

     In jedem Falle wird der Nutzer durch einen Stern "*" (Prompt) auf
     der naechsten Zeile zur Eingabe aufgefordert.

     Die Ausgaben "DABA>" bzw. "DABA:" und "*" werden bei einer  "-s"-
     Option unterdrueckt.

     Der Monitor schreibt den Eingabetext in  den  Monitor-Puffer,  je
     nach  eingestelltem  Terminalmodus entweder sofort (cbreak-Modus)
     oder erst nach <nl> (echo-Modus), dann sind Korrekturen vor  <nl>
     mit <kill> oder <erase> moeglich.
     Bei der Eingabe werden alle Zeichen mit Ausnahme von <tab>,  <nl>
     und  <escape>,  die kleiner als oktal 040 sind, in Blanks konver-
     tiert, wobei die Warnung:

               Zeichen 0xx konvertiert in Blank

     erscheint.




     Nachdem die Eingabe in den Monitor-Puffer uebernommen wurde, kann
     sie  dort  nur  noch durch \edit editiert oder der gesamte Puffer
     durch \reset geloescht werden.

     Bei der Uebernahme der Eingabe in den Monitor-Puffer filtert  der
     Terminal-Monitor  die  Monitor-Kommandos aus und fuehrt diese so-
     fort aus.

     Das Monitor-Kommando \go  (oder  \g)  uebergibt  den  Inhalt  des
     Monitor-Puffers  an  den  Parser des DBBS, der die QL-Anweisungen
     analysiert und zur Ausfuehrung weitergibt.  Bei einer Bearbeitung
     der Anfrage (bzw. Anfragenstapels) erscheint die Meldung:

               DABA . . .

     (nicht bei "-s"-Flag), wodurch signalisiert wird, dass der  Moni-
     tor auf die Beantwortung der Anfrage wartet.

     Wird ein \edit- oder ein \shell-Kommando spezifiziert,  erscheint
     die Nachricht:

             >>"Aufrufparameter"

     So ergeben z.B. die Eingaben "\ed", "\sh"  und  "\sh  ls  -l  die
     Nachrichten  ">>/bin/ed",  ">>sh" und ">>ls -l".  Im interaktiven
     Modus des Editors (Eingabe: "\edit")  bzw.  der  Shell  (Eingabe:
     "\sh")  erscheinen anschliessend die Standard-Prompts dieser Pro-
     gramme.

     Nach einem \go-Monitor-Kommando (oder \eval) wird  der  Anfragen-
     puffer  standardmaessig  (Autoloeschfunktion "ein") zur Loeschung
     vorgemerkt.  Wenn unmittelbar anschliessend eine  andere  Anfrage
     eingegeben  wird,  erfolgt  das Loeschen des Puffers.  Es erfolgt
     nicht, wenn unmittelbar nach der Bearbeitung des  Anfragenstapels
     (\go)  bzw. nach \eval die Vormerkung zum Loeschen durch die Kom-
     mandos \append, \print, \list oder \edit aufgehoben wurde.

     Nach der Eingabe:
             help teile
             \go
             print teile
     enthaelt der Anfragenpuffer:
             print teile
     Die Eingabe :
             help teile
             \go
             \print
             print teile
     ergibt als Inhalt des Anfragenpuffer :
             help teile
             print teile

     Ist die Autoloeschfunktion ausgeschaltet ("aus"), wird jede  neue
     Anfrage  an den Inhalt des Monitor-Puffers angehangen, sodass vor
     einer Neueingabe  der  Puffer  stets  explizit  mit  dem  \reset-
     Kommando zu loeschen ist.

     Monitor-Kommandos

     Ein Monitor-Kommando besteht aus dem  Kommandopraefix  (Standard:
     \), dem Namen des Monitor-Kommandos und wahlweisen Parametern als
     Argument des Kommandos.  Zwischen diesen Bestandteilen  sind  als
     Trennzeichen  entweder  Leerzeichen oder Tabulatorzeichen erlaubt
     (nach Kommandopraefix) bzw. notwendig (ansonsten).

     Einige Terminal-Monitor-Kommandos enthalten nach dem  Kommandona-
     men  bis zum Zeilenende ein Argument (u.U. aus mehreren Woertern)
     (z.B. Filenamen).  Diese Kommandos duerfen  auf  der  Zeile  kein
     weiteres  Kommando  beinhalten.  Die maximale ausgewertete Laenge
     des Argumentes dieser Kommandos betraegt 100 Byte.  Es ist zu be-
     achten,  dass  das  Argument  dieser  Kommandos  ueber den Makro-
     Prozessor ausgewertet wird!



     Kommandos ohne Parameter koennen auf der Zeile  aneinandergereiht
     werden.

     Durch
             \date\go\date
     wird die Zeit vor und nach der Ausfuehrung des Inhaltes  des  An-
     fragenpuffers angezeigt.
     Nachfolgend werden die Kommandos im Detail beschrieben, wobei al-
     le  Kommandos keinen Parameter haben duerfen, bei denen er in der
     Erlaeuterung nicht erwaehnt wird.

          \h
          \help Anzeige einer Komponenten-Kurzbeschreibung  (Name  als
                    Parameter)  bzw.  der  Kurzfassung des Inhaltsver-
                    zeichnisses der Komponenten (ohne Parameter).

          \H
          \HELP Anzeige einer Komponentenbeschreibung (Name als  Para-
                    meter)  bzw.  des Inhaltsverzeichnisses der Kompo-
                    nenten (ohne Parameter).

          \m
          \monitor Ersetzen des  \-Zeichens  (Monitor-Kommandopraefix)
                    Ein   Parameter  ist  das  neue  Terminal-Monitor-
                    Kommandopraefix. Wenn er fehlt, wird der  Standard
                    (\) eingestellt.

                    Nach  einer  Neudefinition  des  Monitor-Praefixes
                    sind  u.U.   bestehende  Kommando-Files  (Include-
                    Files) nicht mehr abarbeitbar!

          \r
          \reset Loeschen des Monitor-Puffers (Ruecksetzen des  Anfra-
                    genpuffers).   Danach ist der Inhalt des Anfragen-
                    puffers unwiederbringlich verloren.

          \p
          \print Anzeigen des Anfragenpuffers.  Der Inhalt des  Anfra-
                    genpuffers   wird  (ohne  Veraenderung  durch  den
                    Makro-Prozessor) am  Terminal  des  Nutzers  ange-
                    zeigt.

          \l
          \list  Anzeigen  des  aktuellen  Anfragenstapels,  nach  der
                    Makro-Verarbeitung.   Nebeneffekte  bei der Arbeit
                    des  Makro-Prozessors,   wie   z.B.   die   Makro-
                    Definition,  werden ausgefuehrt.  Dem Makroprozes-
                    sor wird der Inhalt des  Monitor-Puffers  ueberge-
                    ben,  dem  der Makro {begintrap} vorangestellt und
                    der Makro {endtrap}  nachgestellt  werden.   Damit
                    wird dem Nutzer angezeigt, welcher Text dem Parser
                    des DBBS bei einem \go-Kommandos uebergeben werden
                    wuerde.  Es ist zu beachten, dass bei wiederholter
                    Anwendung durch die vorherige Definition von  Sub-
                    stitutionsmakros  andere  Ergebnisse auftreten ko-
                    ennen.

          \v
          \eval Der Makro-Prozessor verarbeitet den Anfragenpuffer und
                    ersetzt  seinen  Inhalt  durch  das  Ergebnis  der
                    Makro-Verarbeitung.  Definierte Makros  werden  in
                    die Makro-Tabelle des Makro-Prozessors uebernommen
                    und sind damit aktiviert.

                    Im Unterschied zum  \list-Kommando  erfolgen  kein
                    Einbeziehen  der  Makros {begintrap} und {endtrap}
                    und keine  Anzeige  am  Terminal.   Auf  Standard-
                    Output wirkende Ausgaben der Makros {dump}, {type}
                    und {read...} werden ausgefuehrt.

                    Das \eval-Kommando ist das  fuer  die  Abarbeitung
                    von Funktionsmakros zu bevorzugende Kommando.

          \e
          \ed
          \edit
          \editor Eintritt in einen der MUTOS-Text-Editoren (z.B. "ed"
                    als Standard-Text-Editor).  Wird "ed" benutzt, ist
                    ein "w"- gefolgt von  einem  "q"-ed-Kommando  ein-
                    zugeben, um die Steuerung an DABA zurueckzugeben.
                    Wird ein File-Name als Parameter spezifiziert, er-
                    folgt  ein  Aufruf  zum  Editieren dieses File und
                    nicht der Aufruf eines anderen Editors!
                    Wurde  in  einem   der   Start-Files   der   Makro
                    "{editor}"  definiert,  wird  er  benutzt,  um den
                    Pfadnamen eines spezifizierten Editors (z.B.  "vi"
                    oder   "em")  einzugeben.   Standardmaessig  (ohne
                    "{editor}"-Makro) wird als Pfadname "/bin/ed"  be-
                    nutzt.

                    Innnerhalb   des   Editors    darf    kein    "e"-
                    Kommandoaufruf erfolgen.  Wenn er irrtuemlich doch
                    erfolgte, geht der Name des  Anfragenpuffers  ver-
                    loren.

          \g
          \go Verarbeitet die aktuelle Anfrage (Anfragenstapel).   Der
                    Inhalt  des  Puffers wird vom Makro-Prozessor ver-
                    arbeitet, DABA uebergeben  und  ausgefuehrt.   Bei
                    den  tupelorientierten  QL-Anweisungen "retrieve",
                    "replace", "append" und "delete"  wird  der  Makro
                    {tuplecount} mit der Anzahl der bearbeiteten Tupel
                    definiert (an  den  Nutzer  zurueckgegeben).   Dem
                    Parser wird vom Makro-Prozessor der Inhalt des Mo-
                    nitorpuffers uebergeben, dem der Makro {begintrap}
                    voran und der Makro {endtrap} nachgestellt werden.
                    Es ist darauf zu achten, dass nach  der  Verarbei-
                    tung  durch  den  Makro-Prozessor,  dem  DBBS aus-
                    schliesslich  QL-Anweisungen   uebergeben   werden
                    (u.U. Bereinigen des Puffers).

          \a
          \append Anfuegen der folgenden Eingaben an den  Anfragenpuf-
                    fer.   Nach Eingabe eines \a wird die automatische
                    Loeschunterstuetzung  des  Anfragenpuffers  (falls
                    sie  "ein" war) ausgeschaltet und damit der Anfra-
                    genpuffer nicht zurueckgesetzt (kein reset).

          \d
          \time
          \date Anzeigen der aktuellen Tageszeit und des Datums.

          \s
          \sh
          \shell Flucht in eine MUTOS-Shell.  Wurde der  {shell}-Makro
                    definiert,  wird dieses Shell-Programm zur aktiven
                    Shell. Wenn nicht, wird "/bin/sh" aktiv.

                    Der Aufruf des \shell-Monitor-Kommandos  kann  mit
                    oder ohne Parameter erfolgen.

                    Ein Aufruf ohne Parameter startet die Shell inter-
                    aktiv.  Danach  kann wie unter einer normalen, dem
                    Terminal zugeordneten Shell gearbeitet werden, bis
                    diese    entsprechend   den   Konventionen   (z.B.
                    Control-z oder Control-d ) verlassen wird und eine
                    Rueckkehr zum Monitor erfolgt.

                    Sind Parameter spezifiziert, werden diese als Auf-
                    ruf  eines  einzigen MUTOS-Programmes (1.Parameter
                    ist der Shell-Kommandoname  (Filename  des  auszu-
                    fuehrendes Files), die weiteren Parameter sind die
                    dem Kommando zu uebergebenden Parameter)  verstan-
                    den,  das  unter Steuerung der aktiven Shell abzu-
                    arbeiten ist.  Anschliessend  erfolgt  automatisch
                    die  Rueckkehr  zum Monitor.  Wenn z.B. "\shell ls
                    -l" spezifiziert wird, erfolgt die Anzeige des In-
                    haltes  des  Arbeits-Directory in der Langform und
                    anschliessend sofort die Rueckkehr  zum  Terminal-
                    Monitor.

          \q
          \quit Ausgang aus DABA (Verlassen des IQL-Interfaces).

          \cd
          \chdir Aendern des Arbeits-Directory fuer den Monitor in ein
                    benanntes Directory (Parameter).

          \i
          \include
          \read Umschalten der Eingabe auf ein benanntes File (Parame-
                    ter).   Backslash-Zeichen  im  File (Include-File)
                    werden wie bei der Eingabe vom Terminal behandelt.

                    Ohne Parameter wird die entsprechende Programmebe-
                    ne  verlassen.  In  der  Basis-Terminal-Ebene ent-
                    spricht die Wirkung dem \quit-Kommando.

                    Die maximale Schachtelungstiefe  ist  5  (generie-
                    rungsabhaengig).

                    Ist in einem Include-File ein  \read-Kommando  mit
                    dem  Zeichen  "-" spezifiziert erfolgt die Meldung
                    "<Eingabe>" und zwischenzeitlich (bis  <EOF>)  ist
                    das  Terminal die Eingabe.  Anschliessend wird die
                    Eingabe aus dem Include-File fortgesetzt.


          \w
          \write Schreiben des Inhaltes des Anfragenpuffers in ein be-
                    nanntes  File  (Parameter).   Der File-Modus eines
                    neu erstellten Files ist oktal "0644".

          \b
          \branch Springen (Verzweigen der Steuerung) bedingt  (Frage-
                    zeichen,  Ausdruck  und  Marke als Parameter) oder
                    unbedingt (Marke als  Parameter)  innerhalb  eines
                    Include-File (s.a. Abschnitt "Springen").

          \k
          \mark Setzen einer Sprungmarke (Parameter).  Diese  ist  die
                    Zielangabe    eines    auszufuehrenden    \branch-
                    Kommandos.

          \<irgendein anderes Zeichen>
                    Ignoriert irgendeine spezielle Bedeutung des nach-
                    folgenden  Zeichens.  Das erlaubt, das "\" als li-
                    terales Zeichen einzugeben (ql(iql).  Es ist wich-
                    tig  zu  bemerken,  dass Backslash-Folgen manchmal
                    durch den Makro-Prozessors verloren  gehen.   Des-
                    halb  sind zwei Backslash zu schreiben, wenn einer
                    zu senden ist.

          Makros

          Eine ganaue Beschreibung der Makros ist in (macros(iql))  zu
          finden.

          Springen

          Die \branch und  \mark  Kommandos  erlauben  ein  beliebiges
          Springen  innerhalb  eines Include-File.  Dem \mark Kommando
          muss eine Marke folgen.  Dem \branch kann eine Marke  folgen
          (entspricht  einem  unbedingten  Sprung),  oder es folgt ein
          Ausdruck, dem ein Fragezeichen ("?") vorangeht und eine Mar-
          ke  folgt  (bedingter Sprung).  Der Sprung wird ausgefuehrt,
          wenn der Ausdruck groesser als Null ist.

          Das Kommando :

                     \branch ?{tuplecount}<=0 notups




          verzweigt zur Marke "notups", wenn der Makro  "{tuplecount}"
          kleiner oder gleich Null ist (keine relevanten Tupel).

          Die Ausdruecke, die im \branch  spezifizierbar  sind,  haben
          folgende Einschraenkungen.

          Die Operatoren +, -, *, /, <=, >=, <, >, =, and != sind, wie
          ueblich definiert.  Der linke, einstellige Operator "!" kann
          fuer eine logische  Negation  benutzt  werden.   Leerzeichen
          (Blanks) innerhalb des Ausdruckes sind nicht erlaubt, da ein
          Leerzeichen den Ausdruck beendet.   Folgende  Besonderheiten
          sind zu beachten:

          - Ueberfluessige Endklammern werden ignoriert.

          - Ueberfluessige Anfangsklammern ergeben Null aus
            Ausdruckswert.

          - Ein leerer Ausdruck bekommt den Wert Null.

          - Nur ein nicht akzeptiertes Zeichen als Ausdruck hat den
            Wert Null.

          - Der Wert eines Zeichens, dass kein Operator ist wird Null.

          - Die Division durch Null ergibt den Wert Null.


          Wenn das \branch-Kommando als Eingabetext vom  Terminal  ge-
          geben wurde, wird das abgelehnt ("Kein Sprung am Terminal").

          Aus einem Include-File wird zuerst ein vorhandener  Ausdruck
          ausgewertet  und bei einem Wert groeser Null ein Sprung ver-
          sucht.

          Wird eine Marke gefunden, wird mit der dieser Marke  folgen-
          den Textposition die Eingabe des Textes fortgesetzt.

          Ist keine Marke gefunden worden, wird, falls der Makro  {de-
          fault} definiert wurde, zu dieser dort definierten Marke ge-
          sprungen.

          Andernfalls wird eine Meldung ausgegeben ("? Label ...").

          IQL-Start

          Beim IQL-Start  (iql(mutos))  wird  zuerst  eine  bei  allen
          DABA-MUTOS-Kommandos ausgefuehrte Startprozedur durchlaufen.
          Dabei wird auf das MUTOS-File  /etc/passwd  zugegriffen  und
          der  Eintrag des Nutzers "daba" gelesen.  Aus diesem Eintrag
          wird der Pfadname des Home-Directory  gemerkt.   Mit  diesem
          Pfadnamen  (durch .../ gekennzeichnet) sind alle nachfolgen-
          den DABA-Files lokalisierbar.  Mit dem Nutzercode  des  auf-
          rufenden  Nutzers wird im File .../sys/etc/users ein Nutzer-
          eintrag gelesen.  Ist ein solcher nicht vorhanden,  ist  der
          Nutzer  nicht  autorisiert DABA anzuwenden.  Aus dem Nutzer-
          eintrag wird ermittelt, ob der Nutzer  berechtigt  ist,  die
          spezifizierte  Datenbank  zu  nutzen.  Wenn ja, erfolgt eine
          Pruefung auf das Vorhandensein dieser Datenbank.  Anschlies-
          send werden die spezifizierten Optionen (Flags) auf Gueltig-
          keit geprueft.  Danach erfolgt entsprechend  der  Prozessta-
          belle  im  vorliegenden  Falle  das  Laden  des DBBS und des
          Terminal-Monitor-Programmes.

          Initialisierung

          Nach Ablauf der allgemeinen Startprozedur steht das DBBS zur
          Arbeit   bereit,  und  es  beginnt  eine  Startprozedur  des
          Terminal-Monitors (Initialisierung), bevor dieser seinen Ar-
          beitszyklus beginnt.

          Erstens werden vom Monitor-Programm die  Makros  {pathname},
          {usercode},  {database} und {tuplecount} (macros(iql)) defi-
          niert, sodass sie fuer die Nutzung bereitstehen.

          Zweitens wird das allgemeine Initialisierungs-  oder  Start-
          File  (startup(files)) gelesen und verarbeitet.  Dieses File
          ist vorgesehen, um z.B. mittels Makrodefinitionen  den  fuer
          alle  Nutzer  anwendbaren  Standard-Editor und die Standard-
          Shell zu definieren.

          Ist im Nutzereintrag des Files  "users"  (users(files))  ein
          nutzerspezifisches   Start-File  (Standard-Filename:  ".ql")
          spezifiziert, wird drittens dieses gelesen und  verarbeitet.
          Diese  File  kann die speziellen Spezifikationen des Nutzers
          enthalten.  So kann z.B. in diesem File  ein  nutzerspezifi-
          scher  Editor bzw. eine Shell definiert werden.  Es ist aber
          auch moeglich, mit den  Spezifikationen  vorbereitende  nut-
          zerspezifische Arbeiten auszufuehren.

          Am Ende der Initialisierung wird die  Steuerung  standardma-
          essig an das Nutzerterminal uebergeben.

          Flags

          Die Arbeitsweise des Terminal-Monitors wird  durch  folgende
          Optionen  (Flags) beim Aufruf des interaktiven Interface IQL
          (iql(mutos)) gesteuert:

          -d Anzeige (keine Anzeige) des Inhaltes des "dayfile"  (day-
                    file(files)) (Standard: Anzeige).
          -s Anzeige  (keine  Anzeige,  "schweigendes  Arbeiten")  von
                    Monitor-Nachrichten  (Standard:  Anzeige).  Das -s
                    Flag unterdrueckt alle Nachrichten (ausser Fehler-
                    nachrichten)  des  Monitors,  einschliesslich  der
                    Login- und Logout-Nachrichten  sowie  die  Ausgabe
                    des  "dayfile"-Inhaltes (entspricht -d Flag "ein")
                    und   die   Ausgabe   der    Eingabeaufforderungen
                    (Prompts).
          -/+a   Autoloeschfunktion   (automatisches   Loeschen    des
                    Terminal-Monitorpuffers)  "aus" ("ein") (Standard:
                    "ein").  Das -a Flag unterdrueckt die automatische
                    Loeschfunktion  (nach  \go bzw. \eval), sodass der
                    Anfragenpuffer nicht automatisch  geloescht  wird.
                    Die  Wirkung  ist so, als wuerde stets ein \append
                    nach jedem \go eingegeben werden.

                    Fuer den Nutzer bedeutet dies, dass vor jeder  neu
                    eingegebenen  Anfrage  der Anfragenpuffer explizit
                    durch \reset geloescht werden muss.

     Das -I Flag gestattet, zum IQL-Start ein  Include-File  einzuzie-
     hen.  Wurde  das  -I  Flag mit einem Filenamen spezifiziert, wird
     dieses File abgearbeitet, Standard-Input bleibt aber dem Terminal
     zugeordnet.

     Standardmaessig  arbeitet  der  Terminal-Monitor  in  der  Basis-
     Terminal-Ebene  (Eingaben von Standard-Input).  Wenn ein Include-
     File eingezogen wurde, erfolgt die Arbeit  des  Terminal-Monitors
     durch das Include-File gesteuert, und das File ist die Quelle des
     Eingabetextes.  Werden aus dem  Include-File  neue  Include-Files
     eingezogen,  kann  das  als neue Programmebene betrachtet werden.
     Der Ruecksprung in die uebergeordnete Programmebene erfolgt durch
     ein "include" ohne Operanden.

     Erfolgte eine Fileumlenkung (Standard-Input einem  File  zugeord-
     net), werden alle Eingaben aus diesem File erwartet.

     Die Ausgaben des  Monitors  erfolgen  stets  auf  Standard-Output
     (i.allg.  dem  Terminal zugeordnet).  Die Eingaben der Funktions-
     makros {read} und {readdefine} (macros(iql)) werden in allen Pro-
     grammebenen von Standard-Input erwartet.

     Unterbrechungen

     Wenn der Terminal-Monitor auf das Ende der Bearbeitung einer  An-
     frage durch das DBBS wartet, besteht die Moeglichkeit, die Arbeit
     des DBBS durch ein Unterbrechungssignal (Control-c) zu  unterbre-
     chen, um die Steuerung dem Monitor zuruueckzugeben.  Achtung, bei
     der Bearbeitung von QL-Anweisungen, die die Datenbank veraendern,
     ist  eine  Unterbrechung  nicht  angebracht (obwohl das DBBS fuer
     "normale" Unterbrechungen nicht unterbrechbar ist)!

     Eine Unterbrechung waehrend der  Arbeit  mit  einem  Include-File
     fuehrt zur Rueckkehr in die Basis-Terminal-Ebene.

     Ein <EOF> in einer unter der Basis-Terminal-Ebene liegenden  Pro-
     grammebene  fuehrt  zur  Rueckkehr in die darueber liegenden Pro-
     grammebene.  Ein <EOF> in der Basis-Terminal-Ebene entspricht dem
     \quit-Kommando.

     Fehler

     Die Kommandos \edit und \shell erfordern das Erzeugen eines neuen
     Prozesses (Betriebssystem-Kommandos "fork" und "exec") .  Gelingt
     das  nicht,  erfolgen  die  Fehlermeldungen  "edit:  fork"   bzw.
     "shell:  fork". Gelingt es nicht, die in den Makros {editor} bzw.
     {shell} spezifizierten Programme zu laden, wird der Makro {error-
     cout}  auf  den  Wert  -1 gesetzt und der Makro {exectrap} ausge-
     fuehrt.  Als Ergebnis werden  die  Fehlermeldungen  "edit:  exec"
     bzw. "shell: exec" ausgegeben.




     Liefern die Editor- bzw. Shell-Programme einen Rueckkehrwert ver-
     schieden von Null, wird der Makro {exectrap} ausgefuehrt.

     Bei einem \go-Kommando kann die Fehlermeldung "go: open  1"  aus-
     gegeben werden, wenn die Eroeffnung des Monitor-Puffers nicht ge-
     lingt.

     Bei einer ueber der maximal zugelassenen  Schachtelungstiefe  er-
     folgenden  \include-Kommando  wird  die Fehlermeldung "Mehr als 5
     INCLUDE'S" ausgegeben.

     Wurde ein \write-Kommando spezifiziert koennen die  Fehlermeldun-
     gen "unakzeptabler file name ..." und "create WRITE-file ..." er-
     scheinen.

     SIEHE AUCH
          daba(mutos), macros(iql), ql(iql),

     DIAGNOSE
          DABA>               Eine neue Anfrage kann begonnen werden.

          DABA:               Die vorherige Anfrage ist beendet, jedo-
                              ch enthaelt der Puffer einen Inhalt. Der
                              Monitor besitzt wieder die Steuerung.

          DABA . . .          Die Anfrage wird von DABA bearbeitet.

          >>ed                Es wird im MUTOS-Text-Editor gearbeitet.

          >>sh                Es wird zwischenzeitlich in  der  MUTOS-
                              Shell gearbeitet.

          Zeichen 0xx konvertiert in Blank
                              DABA  hat  ein  nichtdruckbares   ASCII-
                              Zeichen  (oktal  0xx)  in Blank umgewan-
                              delt.  Diese Nachricht  zeigt  an,  dass
                              eine  solche Konvertierung fuer das Zei-
                              chen (0xx) erfolgte.
     FEHLERQUELLEN
