WordPerfect 5.1-Datei PostScript-Datei

allegro-C Logo

allegro - news Nr. 23 (91/3)

2. Aug. 1991

Universitätsbibliothek der Technischen Universität Braunschweig, Universit√§tsplatz 1, W-3300 Braunschweig, Tel. (0531)391-5026, FAX 391-5836


Version 11.2

wird Ihnen, wenn Sie Abonnent sind, mit dieser Ausgabe zugesandt. Es gibt einige größere Neuerungen und eine Menge kleinere Verbesserungen. Die Rechenfunktionen sind da, auch die verlängerten Indexeinträge gehen jetzt. Damit sich's aber gleich richtig lohnt, gibt es noch was ganz neues: Satzverknüpfungen. Ab sofort ist allegro damit ein sog."Mehrdateisystem".

Am CockPit wurde einige berechtigte Kritik geübt: es ging nicht alles in allen Situationen so wie es sollte. Alle Funktionen wurden durchgecheckt und im eigenen Hause den Anforderungen der Praxis ausgesetzt, auch im Netzbetrieb.Wenn Sie nach ersten Bruchlandungen ein wenig Angst vor'm Fliegen hatten - steigen Sie mal wieder ein!

Entwicklungsabteilung verstärkt

Die weitaus wichtigste Nachricht ist, daß der in den Ausgaben 21 und 22 schon erwähnte Arbeitsplan vom NiedersächsischenMinisterium für Wissenschaft und Kultur nicht nur gebilligt, sondern sogar mit Personal- und Sachmitteln bis Ende 1993 unterstützt wird. Zusätzliche Verstärkung kommt aus Nordrhein-Westfalen. Der Plan wurde inzwischen im "Bibliotheksdienst" (Heft 6) veröffentlicht. Die Abteilung bezieht nun in einem Nebengebäude eigene Räumlichkeiten.

Neu in der Abteilung sind:

  • Dipl.-Ing. Matthias Evers (Tel. ...-5065,-5003), schon im November 1990 hinzugestoßen, Experte für Hardware und Betriebs- software. Er hat wesentlichen Anteil am Aufbau des PC-Netzes in der UB und hat sich mittlerweile auch einigesallegro-Knowhow angeeignet. Er realisierte auch den Zeichensatz DIN 31628.
  • Dr. Peter Pfeiffer (-5066), seit 1.7.91, Experte für C und UNIX. Es ist ein besonderer Glücksfall, daß er für dieses Projekt gewonnen werden konnte. In einer zukunftsweisenden Kooperation wurde allegro durch ihn schon zu DDR- Zeiten in den östlichen Landesteilen populär, denn er war Leiter des (inzwischen aufgelösten) Organisations- und Rechenzentrumsan der Deutschen Staatsbibliothek. Bis Juni 91 hat er an der Herzog August Bibliothek in Wolfenbüttel allegro- X auf einem Siemens MX-500 zum Laufen gebracht. (Wie es allerdings auf der UNIX-Schiene weitergehen wird, ist zur Stunde noch nicht zu sagen.)
  • Dipl.-Inform. Siegfried Busemann (-5064), seit 1.7.91, als Informatiker nicht ohne Datenbank-Erfahrung, aber noch neu in derallegro-Umgebung. Im Auftrag des Landes Nordrhein-Westfalen soll er sich um die Schnittstellen- problematik zwischen HBZ und den Hochschulinstituten kümmern.
  • Ein halbes Jahr ohne Ausfälle

    hat jetzt der allegro-Katalog der UB Braunschweig hinter sich. Es gab in diesem Zeitraum nur zwei Probleme an der Datenbank, die aber beide durch unvorsichtiges Experimentieren entstanden und sofort behebbar waren. DerBenutzerzugriff brauchte nie unterbrochen zu werden. Am Netz hängen jetzt 27 Rechner, davon im Publikumsbereich 8. Kürzlich wurde der Index noch einmal erneuert. Er wird jetzt mit einer Schlüssellänge von 72 betrieben (bisher waren es 60). Die Arbeit wurde dieses Mal von einem 486er Rechner (25 MHz) erledigt: aus den 150.000 Datensätzen entstanden 2.23 Millionen Schlüssel in11.5 Stunden. Ansonsten wird praktisch ständig im Mehrplatzbetrieb an der Datenbank gearbeitet. Schon sehr bald soll eine Datenbank von 110.000 Titeln der Städtischen Bibliotheken hinzukommen. Die Datenverwaltung des allegro- Systems darf nach dieser ausgedehnten Belastungsprobe nun wohl als sehr zuverlässig gelten. Das löst bei allen BeteiligtenErleichterung aus, zumal (noch) keine unterbrechungsfreie Stromversorgung vorhanden ist! Alles hängt an ganz normalen Steckdosen. Ausfälle passieren gelegentlich am Wochenende und hatten höchstens zur Folge, daß man den Server aus- und wieder einschalten mußte, dann war der Fall erledigt. Meistens aber kommt alles selbsttätig wieder zum Laufen. SoftwarebedingteAusfälle am Server oder Netz gab es nicht. Der GAU wäre ein (Hardware- oder Software-) Absturz des Servers während eines Schreibzugriffs am Index. Das könnte zur Folge haben, daß man ihn erneuern müßte. Das Verfahren nach Kap. 0.7 des Handbuchs (Einspielen der .LOG-Datei in die Sicherungskopie, die wöchentlich gemacht wird), würde aber allenfalls eine Stunde dauern.

    CockPit

    Eine ausführlichere Beschreibung seiner verschiedenen Menüs muß dem neuen Handbuch vorbehalten bleiben, das etwa Ende September erscheinen soll. Allerdings erklärt sich vieles selbst, und die Hilfszeile gibt oft Hinweise auf die zuständigen Kapitel desHandbuchs. Außerdem finden Sie Kommentare in der Datei DEFAULT.OPT, in der die Vorgaben stehen, und in ACPS.BAT, dem Startprogramm. Drucken Sie sich diese Dateien aus. Hier sollen nur die Verbesserungen gegenüber der Vorversion kurz beschrieben werden:

    Programmpfad

    Die Eintragung unter P in der DEFAULT.OPT wird nun auch an die aufgerufenen Programme "weitergereicht", und zwar als Option -P.D.h., Sie können auch in eigenen Makros jetzt mit der Option -P den Programmen mitteilen, auf welchem Pfad sich die Programme befinden. Der Programmpfad kann auch mit set -P=pfadname vorbestimmt werden.

    Einzelplatz-/Mehrplatzbetrieb

    Auf vielen Einzelplätzen konnte PRESTO nicht vom CockPit aus benutzt werden, da es dann automatisch im Mehrplatzmodus gestartet wurde, und dann ging das Speichern nicht. Es gab zwar Abhilfen (z.B.: vorher den MS-DOS-Befehl SHAREgeben, damit der Rechner so tut, als wäre er ein Mehrplatzsystem), aber jetzt sind die Probleme beseitigt:

    Unten links über den zwei bekannten Zeilen steht jetzt "Einzelplatzbetrieb" oder (in Rot) "Mehrplatzbetrieb", damit Sie jederzeit wissen, was gerade gespielt wird. Zum Umstellen ist folgendes zu tun:

    In ACPS.BAT finden Sie eine Zeile, in der das eigentliche Programm ACP.EXE aufgerufen wird. In dieser Zeile steht ein -S . Diese Option wird dann an PRESTO weitergegeben, und alles läuft. Nehmen Sie die Option -S weg, wenn Sie CockPit im Mehrplatzbetrieb einsetzen. Starten Sie immer mit dem Befehl acps.

    Die Hauptroutinen

    Die wichtigsten Routinearbeiten, die an einer Datenbank zu machen sind, wurden auf diesem Menü zusammengefaßt. Das werden Siezu schätzen wissen, auch wenn Sie ansonsten das CockPit nicht benutzen:

    benutzen Das Programm PRESTO wird aufgerufen und die auf den unteren Zeilen angegebene Datenbank angesteuert
    anlegen Ein dreiteiliges Menü erscheint, auf dem Sie die Konfiguration, die Index- Parameter und den Datenbankpfad einstellen können. Sodann wird die Datenbank, wenn sie noch nicht existiert, neu angelegt und es erscheint die Abfrageliste für die Eingabe des ersten Datensatzes.
    sichern Die im Kap.0.7 beschriebenen Sicherungsfunktionen (komplett oder teilweise) können hier ausgewählt und gestartet werden.
    wiederherst. Zum Sichern wird das MS-DOS-BACKUP bzw. RESTORE verwendet. Wenn Sie andere Sicherungssoftware oder ein Magnetband verwenden wollen, schreiben Sie dazu am besten ein Batchfile und installieren es im unteren Teil des Routinen-Menüs (in DEFAULT.OPT).
    organisieren Ein Untermenü stellt u.a. folgende Punkte zur Auswahl:

    i Index wiederherstellen (wenn Index-Parameterdatei geändert wurde)
    c Index kompaktieren (in größeren Abständen sinnvoll)
    7 Datenbank völlig neu aufbauen
    n Nummerntreue Erneuerung der Datenbank

    r einzelne Datenbankdatei entlüften
    R Datenbank entlüften (Datei und Satznummern bleiben erhalten!)
    u ungenutzten Platz prüfen (Gesamtlänge der gelöschten Sätze)
    s Datenbank sperren
    e Datenbank freigeben

    Die beiden letzten Punkte sind im Mehrplatzbetrieb wichtig: eine gesperrte Datenbank erlaubt nur noch Lesezugriff, so daß man anschließend z.B. gefahrlos eine Sicherungskopie machen kann. Die betroffenen Teilnehmer bemerken die Sperrung beim Speicherversuch an der Meldung bitte warten, die sonst nur ganz kurz erscheint, wenn gerade jemand anders im selben Moment F10 gedrückt hat.

    Wenn beim Einzelplatz endlos bitte warten kommt und kein Speichern möglich ist, können Sie das mit der Funktion "Datenbank freigeben" beheben! (Aus der Situation kommt man nur mit Warmstart (Ctrl+Alt+Del) wieder raus, was aber der Datenbank nicht schadet.)

    Export

    Die gewichtigsten Neuerungen, Rechenbefehle und Satzverknüpfungen, gehören in den Bereich der Export-Parametrierung. Die Exportsprache wurde dazu wieder einmal durch neue Befehle erweitert. Hier können wir nur eine recht dürre Beschreibung geben.Es wird die Aufgabe der nächsten Monate sein, instruktive Beispiele vor allem in den Bereichen Erwerbung und Normdateien auszuarbeiten. Daraus wird mehr zu lernen sein als aus einer abstrakten Beschreibung, die vorerst nur den Allegrologen hilft, die sich mit der Exportsprache auskennen.

    Rechenbefehle

    Gerechnet werden soll mit den Inhalten von Kategorien. Dabei kann es nötig sein, den in der Kategorie stehenden Text noch auf andere Art vor- oder nachzubehandeln. Daher lag es nahe, die Rechenfunktionen als neue Manipulationsbefehle zu entwickeln (==> Kap.10.2.6.3), damit man alle nötigen Bearbeitungen miteinander kombinieren kann. Aus Gründen der Effizienz wurde nurein einziger neuer Befehl geschaffen: der Buchstabe x wird benutzt, um alle Rechenoperationen einzuleiten. Mehrere x-Befehle können hintereinander ausgeführt werden. Ein erstes Beispiel: der Inhalt einer Kategorie #79p soll ausgegeben werden, aber vorher sollen 20% abgezogen und das Ergebnis mit 1.14 multipliziert und dann auf 2 Stellen gerundet werden. Daswürde so aussehen:

    #79p x"*0.8" x"*1.14" x"r2"

    Wenn vorher in #79p z.B. "531,9" gestanden hat, würde daraus "485.09" entstehen und ausgegeben.

    Die Rechenbefehle selbst müssen also einzeln jeweils hinter einem x in Anführungszeichen stehen.

    Die allgemeine Form eines Rechenbefehls ist

    x"OpWert"

    mit einem Operatorzeichen Op und dem zu verrechnenden Wert. Die Operation wird dann jeweils auf den aktuellen Arbeitstext angewendet, das Ergebnis ist ein neuer Arbeitstext - wie bei den anderen Manipulationsbefehlen. Es hat immer 10Nachkommastellen (auch bei ganzen Zahlen), aber stets mit Punkt, nicht Komma.

    Es macht nichts, wenn der Arbeitstext vor oder hinter der Zahl noch andere Angaben enthält: das Programm schält sich die Zahl heraus (Punkt oder Komma ist dabei egal) und läßt den Rest fort.

    Es gibt folgende Operatorzeichen:

    + - * / Grundrechenarten
    % Divisionsrest
    r Rundung (Dahinter als Wert eine Ziffer, 0 für Rundung auf ganze Zahl)
    = Gleichsetzung (der aktuelle Arbeitstext (nicht die Kategorie!) wird durch Wert ersetzt)
    > >= Vergleiche: Diese Befehle verändern den Arbeitstext nicht. Er wird nur mit dem Wert verglichen, und auf das Ergebnis kann man mit einem bedingten Sprung reagieren. (==> Kap.10.26.1)
    < <= Wenn die Bedingung zutrifft, wird mit demselben Arbeitstext die Zeile fortgesetzt, wenn nicht,
    == wird sie ergebnislos abgebrochen und zur nächsten übergegangen. (Vergleichen Sie dies mit den Manipulationsbefehlen 'b' und 'c'.) Insbesondere kann man so auch bedingte Sprünge auslösen.

    Die Zeile

    #77 +M x">=500" e0

    bewirkt, daß zur Sprungmarke #-M gegangen wird, wenn die Seitenzahl größer oder gleich 500 ist. Dies funktioniert auch, wenn in der Aufnahme so etwas wie #77 ca. 600 S. steht! Römische Zahlen werden übergangen! Die Operation == bewirkt Prüfung auf Gleichheit.

    Als Wert kann man drei verschiedene Dinge einsetzen:

    Zahl eine sog. "Gleitkommazahl" mit Dezimalpunkt oder -komma. Auch negative Zahlen sind möglich.
    Anw.var. eine Anwendervariable, dann wird deren Inhalt genommen und mit dem Arbeitstext verrechnet, z.B. x"+vb" (für #uvb ; wenn diese noch nicht belegt ist, ist der Wert Null.)
    Kat eine normale Kategorie mit '#', also z.B. x"+#76"

    Einige Hinweise auf nützliche Manipulationen: e"." schneidet den Dezimalteil ab, E".??" schneidet hinter der zweiten Nachkommastelle ab, x"r0" rundet auf eine ganze Zahl, x"r2" rundet auf zweiNachkommastellen, und x"r2" r7,$ tut dasselbe, macht aus dem Ergebnis aber eine siebenstellige, rechtsbündige Zeichenkette und füllt diese links mit '$' auf. Mit dem Befehl =xy Z weist man das Ergebnis der Anwendervariablen #uxy zu, das Z bewirkt, daß nur diese Zuweisung, aber keine Ausgabe des Ergebnisseserfolgt. So lassen sich Rechenergebnisse zwischensprichern und von einer zur nächsten Aufnahme weiterreichen. Das folgende Beispiel nutzt dies aus:

    Anwendungsbeispiel "Seitensumme"

    Natürlich will man nicht nur mit den Kategorien bestimmter Aufnahmen etwas berechnen. Der häufigste Wunsch ist, Summen undDurchschnittswerte von bestimmten Kategorieinhalten bilden zu können, und zwar über die gesamte Datenbank oder beliebige Teilmengen. Nehmen wir an, wir wollen dies für die Seitenzahl, Kategorie #77, durchführen. Man benötigt für die Ergebnisausgabe einen sog. "Fußabschnitt" in der Parameterdatei (==> Kap.10.2.6.5.3). Eine vollständige Parameterdatei, die dies und nochetwas mehr leistet, sieht so aus:

    
    pn="Seitensumme"
    
    ff=2     Diese zwei Befehle müssen sein, damit die
    
    zm=0     Kopf- und  Fußabschnitte ausgeführt werden
    
    
    
             Der neue Befehl  Z  bewirkt, daß die Zeilen jeweils nur
    
             ausgeführt werden, aber keine Ausgabe bewirken. (Gleichwertig
    
             ist das schon bekannte e0.)
    
             In den betreffenden Zeilen werden also jeweils nur die
    
             Anwendervariablen bedient, die Zeilenergebnisse aber nicht
    
             ausgedruckt.
    
             Die folgenden 2 Zeilen enthalten das eigentliche Programm.
    
             Sie brauchen nur die #77 zu ändern,
    
             wenn eine andere Kategorie summiert werden soll.
    
    #77 x"+su" =su Z        x"+su" : Inhalt von #usu zur Seitenzahl addieren,
    
                            =su    : Ergebnis wieder unter #usu ablegen
    
    #unr x"+1" =nr Z        #unr um 1 erhöhen (1 draufaddieren,
    
                            dann wieder ablegen)
    
                            Kopfabschnitt: wird vor der ersten
    
                            Ausgabe automatisch ausgeführt, kann
    
                            außerdem in PRESTO mit
    
                            F2 K  von Hand ausgeführt werden.
    
    K
    
    #dt x"=0" =su Z         Anwendervariablen #usu und #unr auf Null setzen
    
    #dt x"=0" =nr Z         (Sonderkategorie #dt wird nur als Hilfskategorie
    
                            genommen!)
    
                            #usu steht für die Summe, #unr für die
    
                            Anzahl der Aufnahmen
    
    
    
    F                           Fußabschnitt:
    
                                Ausgabe der Ergebnisse#t{ "Ergebnisse: " }
    
    #usu C e"." r7 p"Summe:  "        #usu und #unr ausgeben, mit e"."
    
                                      Dezimalteil abschneiden!
    
    #unr C e"." r7 p"Anzahl: "
    
    #usu C C x"/nr" p"Durchschnitt: "      #usu durch #unr teilen, dann ausgeben
    
    
    
    

    Eine ähnliche Datei, die noch etwas mehr macht (z.B. Bestimmung des größten und kleinsten Wertes) wird unter dem Namen SUMME.APR mitgeliefert. Nehmen Sie sie als Grundlage für eigene Rechenexperimente.

    Der praktische Einsatz geht so vor sich:

    Satzverknüpfungen

    Nach moderner Vorstellung sollen Datensätze in einer bibliothekarischen Datenbank nicht isolierte Einheiten sein, die beziehungslos nebeneinander stehen. Nun lassen sich zwar bereits mit der Indexierungstechnik vonallegro vielfältige Beziehungen und Querverbindungen herstellen. Aus der Sicht der gängigen Theorie, die mit den Konstrukten "Normdatei" und "Mehrdateisystem" operiert, gibt es aber hierbei noch mehrere Mängel:

    Es klingt nicht sehr glaubwürdig, aber diese Mängel sind nun sämtlich behoben, und zwar mußten dazu nur zwei neue Befehle in der Exportsprache geschaffen werden, und das Programm PRESTO vergrößerte sich dabei nur um weniger als 1 K. Die meisten notwendigen Funktionen waren ohnehin schon vorhanden, und die Datenhaltung im Arbeitsspeicher war schon immer zurgleichzeitigen Unterbringung mehrerer Sätze geeignet. Das Problem war nur der logische Entwurf der neuen Funktionen für die Exportsprache. (Zum Vergleich: die Rechenfunktionen brachten eine Vergrößerung um 15 K mit sich, denn dafür mußten Gleitkomma- Rechenroutinen eingebunden werden, die vorher nicht da waren.)

    Warum nun ist die Exportsprache der logische Ort für die Satzverknüpfungen? Nun, die oben aufgezählten Probleme haben eins gemeinsam: die Zusammenführung des jeweils Zusammengehörigen muß immer nur zum Zeitpunkt einer Anzeige oder Ausgabe erfolgen,und genau dafür ist ja die Exportsprache zuständig. Ansonsten können alle Daten in der Datenbank stehen, wo sie wollen. Solange niemand sie betrachtet oder ausdruckt, sind die Beziehungen uninteressant.

    Der grundlegende Mechanismus, den man braucht, um die besagten Probleme zu lösen, ist leicht zu beschreiben:

    Anwendungsbeispiel "Zitat"

    Nehmen wir als Beispiel die Erfassung von Aufsatzdaten. Die wesentlichen Kategorien sind

    
    #20  Aufsatztitel
    
    #40  Verfasser#70  Quelle (Zeitschriftentitel)
    
    #704 Band
    
    #706 Heft#708 Seitenzahlen
    
    #70c CODEN  (in Kleinbuchstaben)
    
    

    Nun würden wir gern auf die Eingabe des vollständigen Zeitschriftentitels unter #70 verzichten, müssen dann aber auf einen "Stammsatz" für die Zeitschrift zurückgreifen können. Dieser Stammsatz hätte die Kategorien (==> Handbuch Anhang B)

    
    #8n  Zeitschriftentitel (normierte Ansetzung)#8n1 Titel für Zitierformat 1
    
    #8n2 Titel für Zitierformat 2
    
    #8nr andere Verweisungsformen des Titels (getrennt durch "; ")#74  Erscheinungsort
    
    #88c CODEN
    
    

    (Der sog. CODEN ist eine besonders in der Chemie verwendete internationale Zeitschriftenkennung. Dasselbe würde auch mit der ISSN oder mit einem normierten Kurztitel gehen.) Der CODEN soll im Index 9 registriert sein, und zwar in Kleinbuchstaben.

    Unter #8n1, #8n2... kann man mehrere verschiedene Zitiertitel unterbringen. Nehmen wir an, die Aufsatzdaten sollen mit dem Zitiertitel 2 gedruckt werden. Innerhalb der Druckparameterdatei ZITAT.APR können wir dann schreiben:

    
    #70c |90           nimm Inhalt von #70c und suche danach im Index 9,
    
                       lade den zugehörigen Stammsatz,
    
                       anschließend kann man daraus Daten entnehmen:
    
    #8n2 C p"In: "     Zitiertitel 2 ausgeben auf neuer Zeile, "In: " davorsetzen
    
    #<              zurückschalten, d.h. Stammsatz wieder vergessen,
    
                       Titelsatz reaktivieren
    
    #704 p", "         restliche Aufsatzdaten ausgeben, so daß die Form
    
    #76 p"(" P")"      Titel, Band(Jahr)Heft, S.nnn-nnn    entsteht
    
    #706
    
    #708 p", S."
    
    

    Die zwei neuen Befehle sind der Manipulationsbefehl |90 , der das Nachladen des Stammsatzes bewirkt, und derSteuerbefehl #< , der ihn wieder beseitigt, so daß die Arbeit am Ausgangssatz weitergehen kann.

    Nun zur allgemeinen Form der Befehle.

    Das Laden eines anderen Datensatzes wird durch den Manipulationsbefehl '|' veranlaßt. Man muß also zuerst die Kategorie angeben, in der der zu suchende Schlüssel steht. Man sorgt dafür, daß der Arbeitstext genau dem zu suchenden Schlüssel entspricht (auch bzgl. Groß-/Kleinschreibung!). Wenn also z.B. in #70c hinter dem CODEN noch etwas anderes stehenkönnte, wäre #70c e6 |90 richtig gewesen (der CODEN hat immer 5 Stellen + 1 Prüfzeichen). Der Nachladebefehl nimmt dann den Arbeitstext und sucht im Index danach. Bei Erfolg wird die zugehörige Aufnahme in den Arbeitsspeicher geholt und zur aktuellen Aufnahme gemacht. Nachfolgende Exportbefehle beziehen sich also auf diese! Die allgemeine Form desNachladebefehls sieht so aus:

    |im

    i =
    Indexziffer (1..9): die Nummer des Index, in dem gesucht werden soll,
    m =
    Modusziffer (0..7), und zwar: gesucht wird immer nach dem gerade aktuellen Arbeitstext, es gibt jedoch unterschiedlicheModalitäten, wie gesucht werden soll:
    0 : der erste Satz mit genau gleichem Schlüssel
    1 : der nächste mit genau gleichem Schlüssel (ein Befehl mit 0 muß vorangehen)
    2 : wie 0, aber der gefundene Schlüssel darf länger sein als der Arbeitstext, nur sein Anfangsteil muß mit dem gesamten Arbeitstext übereinstimmen
    3 : anwendbar nach einem Zugriff mit 2 : der nächste solche Schlüssel wird gesucht
    Falls mehrere Ladebefehle aufeinander folgen, bleiben die nachgeladenen Sätze jeweils im Arbeitsspeicher, falls man nicht #< gibt. Dies kann zwar erwünscht sein, manchmal jedoch nicht - dann addiert man besser gleich eine 4 auf die Modusziffer, also
    4 : wie 0, aber ein vorher geladener Satz wird beseitigt
    5 : wie 1, usw.

    Im Beispielfall geht es nur um einen einzigen Nachladesatz pro Ausgabesatz, dann wäre der Effekt bei |94 derselbe wie bei |90.

    Wenn es ungewiß ist, ob ein Stammsatz existiert, kann man durch einen bedingten Sprung auch Fehlerbehandlungen programmieren:

    
    #70c +M |90                                suche exakten Inhalt von #70c im Index 9, wenn gefunden, gehe zu #-M
    
    

    würde bewirken, daß im Erfolgsfall zur Sprungmarke #-M gegangen wird, bei Mißerfolg aber mit der nächsten Zeile weitergemacht wird. Die Zeile selbst bewirkt in keinem Fall eine Ausgabe, sie dient nur zum Auslösen des Nachladens.

    Die nachgeladene Aufnahme bleibt solange aktuelle Aufnahme, bis

    In der Regel wird man aus dem nachgeladenen Satz eine oder mehrere Kategorien entnehmen, anschließend aber mit dem Ausgangssatz weitermachen wollen (wie im obigen Beispiel). Dann kommt der zweite neue Befehl zum Einsatz, der

    Schaltbefehl

    Es gibt 3 Formen, jede beginnt mit #< :

    #<+M
    "zurückschalten", d.h. weitermachen mit der aufrufenden Aufnahme. Diese kann ihrerseits eine vorher nachgeladene Aufnahme sein! Wenn die Rückschaltung ausgeführt werden konnte, geht es bei der Sprungmarke #-M weiter. +M darf fehlen, dann geht es mit der nächsten Zeile weiter.
    #<^M
    Wirkung von #< rückgängig machen, d.h. wieder "hinaufschalten" zu der vorher nachgeladenen Aufnahme. Wenn manabwechselnd #< und #<^ gibt, kann man beliebig oft zwischen den momentan geladenen Aufnahmen hin- und zurückschalten, ohne daß immer neu von der Platte nachgeladen werden muß.
    #<<M
    zurückschalten zur Ausgangsaufnahme, damit diese weiterbearbeitet werden kann, und zwar geht es weiter mit der auf diesen Befehl folgenden Zeile (hier keine zusätzliche Sprungmarke möglich). Mit #<^ ist jedoch (evtl. mehrfach) einRückschalten mit #<^ zu den vorher geladenen Aufnahmen weiterhin möglich.
    #</M
    dasselbe, aber mit völligem "Vergessen" der nachgeladenen Aufnahmen, d.h. anschließend kann man nicht mehr wieder mit #<^ hinaufschalten.

    Das M darf in jedem Fall fehlen. Dann fährt das Programm nach Ausführung mit der nachfolgenden Zeile fort. Wenn M aber gesetzt ist (erlaubt sind alle druckbaren Zeichen), wird nach erfolgreicher Ausführung des Schaltbefehls zur Sprungmarke #-M gegangen, und nur bei Mißerfolg (wenn gar kein nachgeladener Satz vorhanden war) geht es mitder nachfolgenden Zeile weiter. Folglich kann man auf jede Situation angemessen reagieren.

    Anwendungsbeispiel "Mehrbändiges Werk"

    Vorab: Die bisherige Darstellungsweise mehrbändiger Werke kann uneingeschränkt beibehalten werden. Man kann sogar innerhalb derselben Datenbank wahlweise diese oder die im folgenden beschriebene neue Technik anwenden.

    Es soll eine neuartige Speicherungstechnik für mehrbändige Werke realisiert werden. Hauptaufnahme und Bände sollen getrennte,unabhängig voneinander gespeicherte Datensätze sein. Stößt man beim Zugriff auf einen Band, so soll er zusammen mit der Hauptaufnahme angezeigt werden, findet man letztere, soll das Programm sie mit allen zugehörigen Bänden präsentieren können. Aber es sollen auch mehrere Hierarchiestufen möglich sein ...

    Eine Vorbemerkung: Bisher brauchte man nicht unbedingt eine eigenständige, eindeutige Indentifikationsnummer für jede Aufnahme, jetzt aber geht es nicht ohne, denn die besagte Methode ist auf einen zuverlässigen Schlüssel angewiesen. In der Kategorie #00 der Hauptaufnahme muß also, zumindest bei den mehrbändigen Werken, etwas stehen, was eindeutig ist, und man muß es indexieren.(KAT.API macht dies im Index 9.) Es kann sich um eine Zugangsnummer oder Signatur handeln, oder die ID.-Nummer eines Verbundes, oder aber so etwas wie die Library of Congress Card Number. (Statt #00 dürfte es auch jede andere Kategorie sein, denn die Realisierung ist ja vollständig parametriert.)

    Statt eine unselbständige Unteraufnahme an die Hauptaufnahme anzuhängen (mit einer Kategorie #01) tut man jetzt so, als erfasse man eine neue Hauptaufnahme. Mit zwei Unterschieden:

    Daß eine Aufnahme unselbständig ist, kann am '+' in der #00 erkannt werden. Die Ordnungsnummer ordnr kann mehrteilig sein, wennes sich um hierarchische Unterteilungen von Bänden handelt. Wenn man bisher z.B. #01 2 und #02 A gehabt hat, kann man nun z.B. #00 idnr+02+A geben, man trennt also die Stufen durch '+' . Die Gestaltung der sortierfähigen Bandnummern ist freigestellt und muß sich nach den Eigenheiten der vorliegenden Zählung richten. Die maximal mögliche hierarchische Gliederungstiefe ist dabei12 (nach der alten Methode 6).

    Wichtig ist ferner: die Kategorie #00 muß einschließlich der sortierfähigen Bandnummern indexiert sein. Dadurch entsteht im Index eine aufsteigende Folge der Identifikationsnummern: zuerst die der Hauptaufnahme (ohne '+'), dann die der Bände.

    In der Hauptaufnahme braucht man außer der Speicherung der Id.Nr. in #00 keine weiteren Vorkehrungen für die Verknüpfungstechnik zu treffen! Die Feststellung, ob zugehörige Bandaufnahmen existieren, wird mit den oben beschriebenen Befehlen über den Index durchgeführt. Es werden also, um es ganz deutlich zu sagen, keine Satznummern, -adressen oder-schlüssel irgendwelcher Art von untergeordneten Aufnahmen innerhalb der übergeordneten gespeichert. Die Zusammenführung und die Herstellung der Reihenfolge erfolgen über den Index.

    Eine Parameterdatei für Anzeige oder Druck solcher Datensätze sollte nach folgender Vorschrift arbeiten:

    1. Prüfe, ob die aktuelle Aufnahme eine unselbständige ist. Wenn ja, lade die übergeordnete Aufnahme und mache sie zur aktuellen Aufnahme.
      Wiederhole das solange, bis die nachgeladene Aufnahme eine Hauptaufnahme ist. (Dieser Vorgang läuft höchstens 12 mal ab, das wäre allerdings sehr extrem.)
    2. Gib die geladenen Aufnahmen in umgekehrter Reihenfolge aus, also zuerst die übergeordneten Stufen, die ursprüngliche Aufnahme dann als letzte.
    3. Prüfe, ob mit der Ausgangsaufnahme noch unselbständige Sätze einer höheren Stufe verknüpft sind, mit anderen Worten, ob sieselbst die Hauptaufnahme eines mehrbändigen Werkes darstellt. Dann sollen alle nacheinander geladen und ausgegeben werden. (Dieser Vorgang ist potentiell unbegrenzt, denn die Anzahl der möglichen Untersätze unterliegt keiner Beschränkung.)

    Bei normalen einbändigen Werken wird zwangsläufig nur 2. ausgeführt.

    Eine vollständige Parameterdatei, die diese Vorgänge alle enthält, wird unter dem Namen COMPLEX.APR mitgeliefert. Sie istausreichend kommentiert und wird sehr zum Nachvollziehen empfohlen. In der Beispieldatenbank finden Sie im Index 9 eine mehrstufige Aufnahme unter dem Schlüssel 123456 . Laden Sie bei der Benutzung der Beispieldatenbank die Parameterdatei COMPLEX (mit F2 F2 vom Anzeigemenü aus), dann können Sie die Wirkung selbst testen.

    Befehl c verbessert

    Der Manipulationsbefehl c"xyz" in der Exportsprache (==>

    10.2.6.3) wurde etwas erweitert: wenn man c"~xyz" schreibt, wird ohne Rücksicht auf Groß-/Kleinschreibung gearbeitet.

    INDEX

    Das Programm konnte nochmals um ca. 10% beschleunigt werden. Ansonsten sind folgende Anmerkungen zu machen:

    Superlange Zugriffsschlüssel

    Die Schlüssellänge war bisher auf 60 Zeichen festgelegt. Das bleibt auch der Standardwert, damit vorhandene Datenbanken problemlos weiter benutzt werden können. Wenn man aber nun längere Schlüssel will, schreibt man in die Index-parameterdatei (z.B. NMN.API oder KAT.API) die Zeile

    il=250

    was der Maximalfall wäre. Sinnvoll, weil genau auf den Bildschirm passend, ist il=72.

    Die Anzeige der überlangen Schlüssel geht so vor sich, daß zunächst nur 72 Zeichen erscheinen, es findet also keinZeilenumbruch bei der Index-Anzeige statt. Will man mehr sehen, drückt man die TAB-Taste, dann rutscht alles um 40 Zeichen nach links, bis auf die Zeilen, die schon vollständig erschienen sind. Mit Shift+TAB geht es zurück. Das mag irritierend erscheinen, ist es in der Praxis aber kaum: man achtet bei der tatsächlichen Benutzung vornehmlich auf die Zeilen, für die man sich geradeinteressiert, und die anderen Zeilen nimmt man kaum wahr. Beim Umschalten auf einen anderen Index wird die Verschiebung aufgehoben.

    Am einfachsten führen Sie eine Indexverlängerung so durch: sie setzen den il-Befehl in Ihre .cPI-Datei ein undmachen die nötigen Längenanpassungen bei denjenigen Schlüsseln, wo Sie selbst die Länge per e-Befehl vorgegeben haben. Dann starten Sie vom CockPit aus unter "organisieren" den Punkt i = Index erneuern.

    Achtung Testpiloten: wenn Sie mit einer der vorab verschickten "Beta-Versionen" einen Index gemacht haben, sollten Sie den Wertil jetzt um 4 vermindern. Wenn Sie genau beobachtet haben, werden Sie schon wissen, daß die tatsächliche Länge um 4 geringer war. Jetzt ist diese Ungereimtheit beseitigt.

    Übrigens: Sie brauchen in der Index-Parameterdatei nicht selbst dafür zu sorgen, daß die Länge der einzelnen Schlüssel stimmt,denn das Programm schneidet selbständig alles bei der Maximallänge ab. Nach unseren Beobachtungen wirkt sich die Vergrößerung der Schlüssel nicht sehr spürbar auf die Größe der Indexdatei oder auf die Zugriffszeiten aus. Mit anderen Worten: man braucht nicht zu knausern.

    Verschwundene Kategorien

    Wenn man in einer Datenbank mehrere Dateien (Typ .cLD) hatte und eine Index-Erneuerung durchführte (Funktionen -fi, -f7 oder-fn), so konnte es geschehen, daß von der jeweils ersten Aufnahme einer Datei (mit Ausnahme der ersten) die erste Kategorie verschwand bzw. die Aufnahme nicht korrekt indexiert wurde. Die Ursache dieses sehr unerwünschten Verhaltens wurde aufgespürt und der Fehler beseitigt.

    Dateinummern

    bleiben beim Reorganisieren (Funktionen -f7, -fn und -fr) erhalten, wenn man die Frage nach der "Dateinummer für die neuenDaten" mit 0 beantwortet oder beim Start die Option -n0 gibt. Die alten Dateien bleiben dann noch stehen, der Name wird aber von .cLD auf .c1D geändert. Das Programm macht darauf aufmerksam, daß man sie löschen sollte. Es ist einfach eine zusätzliche Sicherungsmaßnahme, daß es sie nicht automatisch löscht. Man wird sich evtl. zuerst vom ordnungsgemäßen Zustand derreorganisierten Datenbank überzeugen wollen, bevor man die Dateien löscht.

    Überschriften für den Index

    Jetzt können die einzelnen Indizes mit selbstgewählten Überschriften versehen werden. Dazu ist es nötig, in der Index- Parameterdatei (.cPI-Datei) der Datenbank für jeden Index eine Zeile einzutragen. Wenn der Index 5 z.B. die Serientitel enthält, könnte die Eintragung so lauten:

    |5=Reihen : Serientitel mit Bandzählung

    In KAT.API sehen Sie, wie es aussehen muß. Wenn man keine solchen Überschriften festlegt, wird automatisch der Index 1 mit der Überschrift "Register" versehen, die anderen erhalten die Überschrift "Index 2", Index 3" usw.

    Es waren gewisse Änderungen in der UIF1-Datei nötig, damit es funktioniert. Übertragen Sie diese Änderungen in Ihre eigenenVersionen, wenn Sie solche haben!

    Mehrfacheinträge und Nichtsortierzeichen

    vertrugen sich nicht: wenn man z.B. in #60 mehrere Körperschaften eintrug, getrennt durch "; ", und dann mit dem Befehl

    ak=60"; "+K

    sowie

    
    #-K
    
    #u1 u ...
    
    

    operierte, fehlten hinterher im Index diejenigen Einträge, die ein Nichsortierzeichen enthielten. Jetzt klappt es.

    PRESTO

    Ein Speicherfehler

    trat bis Version 11.1 in folgender Situation auf: im Editor wird versehentlich der Befehl #k gegeben, dadurch verdoppelt sich die Aufnahme im Arbeitsspeicher und wird auch doppelt abgespeichert. Das verursacht nur dann Probleme, wenn

    1. der Index mit Funktion -fi oder -fn erneuert oder die Datei mit -fr entlüftet wird. Dann kann es zu einer extremen Vergrößerungder .TBL-Datei kommen.
    2. es wird mit UPDATE eine Reorganisation gemacht, d.h. die .LOG-Datei eingespielt. Dabei kann die verdoppelte Aufnahme ebenfalls Probleme verursachen.

    Abhilfe: Datenbank mit INDEX -f7 neu aufbauen, dann sind die Folgen beseitigt.

    Mehr Hilfe

    durch längere Hilfsseiten! Jetzt können die Hilfsseiten H1.. den ganzen Bildschirm ausfüllen, denn er wird anschließendvollständig regeneriert. Es gibt eine neue Hilfsseite: H1I erscheint auf dem Indexmenü, wenn man Alt+F1 drückt. Bisher kam dann H1F - die kommt jetzt nur noch im Funktionsmenü.

    Bearbeiterkennung

    Mit der neuen Option -O xyz (der Großbuchstabe O, nicht die 0!) kann man dem Programm den Namen des Bearbeiters oder ein Kürzel übergeben. Dieses kann man beim Export als Sonderkategorie #op (für "operator") verwenden.

    IMPORT

    Es gibt drei neue globale Befehle:

    P
    Wenn auf einen Punkt ein Buchstabe folgt, wird ein Leerzeichen dazwischen gesetzt.
    S
    Mehrfach-Leerzeichen werden beseitigt
    Ä
    Leerzeichen innerhalb Klammern werden durch den ASCII-Code 253 ersetzt. (Das wurde in einem Spezialfall gebraucht.)

    Konfiguration

    Änderungsschutz

    kann man jetzt gezielt einzelnen Kategorien angedeihen lassen. In der Kategorieliste der .CFG-Datei setze man als Prüfbuchstaben ein 'z' hinter die zu schützenden Kategorien. Der Bearbeiter kann sie dann weder ändern noch neu eingeben.

    Artikelliste

    Wenn man d-Befehle in der .CFG-Datei gibt, wird die Artikelliste nicht, wie das Handbuch sagt, ergänzt, sondern komplett ausgetauscht. Man muß also (evtl. in mehreren d-Zeilen) alle als Artikel geltenden Wörter vorgeben.

    Weitere technische Neuerungen und Änderungen entnehmen Sie wie immer der Datei README, die auf der Diskette mitgeliefert wird.

    Planung, Termine, ...

    Der mit der Ausgabe 22 verschickte Fragebogen schon wurde von ca. 90 Anwendern beantwortet. Über die Ergebnisse werden wir nochnäher berichten. Vorerst haben wir folgende Schlüsse gezogen:

    Veranstaltungen in Sachsen-Anhalt

    Das Niedersächsische Ministerium für Wissenschaft und Kultur greift der UB finanziell unter die Arme, damit man allegro-Tagungen in Sachsen-Anhalt durchführen kann. Eine erste fand schon an der TU-Bibliothek in Magdeburg statt. Als weitere Termine sind vorgesehen:

    1. 26./27. August an der TH Merseburg (dort ist zuständig: Herr Noske)
    2. Woche 30.9.-4.10., sehr wahrscheinlich an der Uni Jena
    3. Woche 11.-15.11.

    Die genauen Tage und Orte für 2. und 3. stehen noch nicht fest. Wer kommen möchte, kann sich immerhin schon einmal melden, wirschicken dann so bald wie möglich die Einladung. Im Rahmen der jeweiligen Möglichkeiten sind auch Teilnehmer aus anderen neuen Bundesländern willkommen.

    Ach ja, DIN 31628/2 !

    Dieser oftmals begehrte Zeichensatz kann nun, allerdings nur auf VGA-Bildschirmen, benutzt werden. Druckbar sind die Zeichenauf allen EPSON-kompatiblen Druckern und HP Laserjet. Die dazu nötige Hilfssoftware erhalten Sie auf Anfrage.

    WordPerfect 5.1-Datei PostScript-Datei

    Datum der letzen Änderung: 02.08.91

    © 1995, UB Braunschweig

    Bernhard Eversberg (b.eversberg@tu-bs.de)