     LIBQ(FILES)                  DABA16                   LIBQ(FILES)

     NAME
          libq - EQL Laufzeit-Bibliothek

     BESCHREIBUNG
          Libq ist die EQL-Laufzeit-Bibliothek, die alle Routinen ent-
          haelt,  die  fuer  das  Laden eines EQL-Programmes notwendig
          sind.  Die Routinen befinden sich bei  der  Auslieferung  in
          der  Bibliothek  .../lib/libq.a,  die durch die Installation
          standardmaessig  nach  /usr/lib  kopiert  werden  muss  (als
          /usr/lib/libq.a  ).   Diese  Bibliothek  muss beim Verbinden
          (Linken) der Objektmoduln spezifiziert werden.  Das  erfolgt
          beim cc Aufruf durch die -lq Spezifikation.

          Verschiedene hilfreiche Routinen, die durch die EQL-Prozesse
          verwendet  werden,  sind in der Bibliothek enthalten.  Diese
          koennen durch den  EQL-Programmierer  verwendet  werden,  um
          eine doppelt Codierung zu vermeiden.






          Es gibt :

          int     IIatoi(buf, i)
          char    *buf;
          int     i;

          char    *IIbmove(source, destination, len)
          char    *source, *destination;
          int     len;

          char    *IIconcatv(buf, arg1, arg2, ..., 0)
          char    *buf, *arg1, ...;

          char    *IIitos(i)
          int     i;

          int     IIsequal(s1, s2)
          char    *s1, *s2;

          int     IIlength(string)
          char    *string;

          IIsyserr(string, arg1, arg2, ...);
          char    *string;


          IIatoi      konvertiert eine durch buf adressierte  Zeichen-
                      kette in die Festkommazahl (Integer) i.  Es wird
                      -1 bei Syntaxfehler, 0 bei keinem Fehler oder  1
                      bei Ueberlauf zurueckgegeben.

          IIbmove     Uebertraegt len Bytes von  der  Quelle  (source)
                      zum  Ziel  (destination),  wobei ein Pointer zu-
                      rueckgegeben wird, der auf die Lokalisation nach
                      dem  letzten  uebertragenen  Byte  verweist.  Es
                      wird kein Null-Byte angehangen, und es  erfolgen
                      auch keine Pruefungen von len und destination.

          IIconcatv   Verkettet nach buf alle seine  Argumente,  wobei
                      ein  Pointer auf das Null-Byte am Ende der Kette
                      zurueckgegeben wird.  Buf darf nicht  mit  einem
                      der arg-n (ausser arg1) uebereinstimmen.

          IIitos      konvertiert eine Festkommazahl (Integer) in eine
                      Zeichenkette (String) und gibt diese zurueck.

          IIsequal    Gibt 1 zurueck (ansonsten 0), wenn  die  Strings
                      s1 und s2 identisch sind.

          IIlength    Gibt die maximale Laenge des String string (ohne
                      das Null-Byte am Ende) zurueck (Maximum : 255).

          IIsyserr    IIsyserr liefert eine Fehlermitteilung ueber die
                      Standardausgabe  und bricht stets mit dem Aufruf
                      der Funktion exit(-1) nach der Ausgabe der  Feh-
                      lernachricht  ab.   Die  Argumente fuer IIsyserr
                      sind in der gleichen Form wie bei der C-Funktion
                      "printf" spezifizierbar, wobei ihre Anzahl auf 5
                      beschraenkt ist.

          Es gibt auch einige globale EQL-Variable, die durch den Nut-
          zer manipuliert werden koennen :

          int         IIerrflag;
          char        *IImainpr;
          char        (*IIprint_err)();
          int         IIret_err();
          int         IIno_err();


          IIerrflag   Wird von DABA  bei einem Fehler auf die  Fehler-
                      nummer  gesetzt.   Dieses  Flag  ist gueltig vom
                      Zeitpunkt des Auftretens des Fehlers bis zur Be-
                      nutzung  der  naechsten  EQL-Anweisung.  Es kann
                      unmittelbar  nach  einer  EQL-Anweisung  benutzt
                      werden,  um  festzustellen,  ob  sie erfolgreich
                      war.

          IImainpr    Das ist ein String, der bestimmt,  von  wo  daba
                      aufgerufen  worden  ist,  wenn  eine  "## daba"-
                      Anweisung verwendet wurde.  Standardmaessig  ist
                      es "/mnt/daba".

          IIprint_err Dieser Funktions-Pointer wird benutzt,  um  eine
                      Funktion aufzurufen, die bestimmt, ob (wenn vor-
                      handen) Fehlernachrichten ausgegeben werden sol-
                      len,  wenn  ein daba-Fehler aufgetreten ist.  Er
                      wird von IIerror() mit der Fehlernummer als  ein
                      Argument  aufgerufen,  und  die Fehlernachricht,
                      die mit der zurueckgegebebnen Fehlernummer  kor-
                      respondiert,      wird     ausgegeben.      Wenn
                      (*IIprint_err)(<errno> )  0  zurueckgibt,  wurde
                      keine  Fehlernachricht  ausgegeben.  Anfaenglich
                      wird IIprint_err auf IIret_err() gesetzt, um den
                      aufgetretenen Fehler auszugeben.

          IIret_err   Gibt sein  einfaches  Integer-Argument  zurueck.
                      Es  wird  benutzt, um (*IIprint_err)() zu veran-
                      lassen, die Ausgabe  des  aufgetretenen  Fehlers
                      auszufuehren.

          IIno_err    Gibt 0 zurueck. Es  wird  benutzt,  damit  (*II-
                      print_err)() die Ausgabe der Fehlernachricht un-
                      terdrueckt.  IIno_err wird benutzt, wenn in  ei-
                      ner  parametrisierten  EQL-Anweisung  ein Fehler
                      auftritt und unterdrueckt die Ausgabe des korre-
                      spondierenden Parser-Fehlers.

     SIEHE AUCH
          eql(daba), eqc(mutos).
