WordPerfect 5.1-Datei PostScript-Datei

allegro-C Logo

allegro - news Nr.39 (95/3)

11. Sept. 1995

Universitätsbibliothek der Technischen Universität Braunschweig, Universitätsplatz 1, D-38106 Braunschweig, Tel. (0531)391-5011, - 5026, FAX -5836

Do problems ever go away
if only someone bothers?
They do,
it's true,
but only to...
be replaced by others.

avanti

Heinrich der Löwe, zu dessen 800. Todestag in Braunschweig derzeit eine große Mittelalterausstellung stattfindet, hatte wohl eine Vorstellung davon, welch hoher Arbeitsaufwand, wieviel Sachkenntnis und handwerkliches Geschick notwendig waren, ein vorzeigbares Buch anzufertigen. Das Evangeliar, das er um 1188 beim Mönch Herimann von Helmarshausen in Auftrag gab, war ihm nicht nur eine stolze Summe Geldes wert, es war auch ein Kultobjekt ersten Ranges. Daß es rund 800 Jahre später für DM 32 Mio. zurückgekauft werden sollte, konnte er nicht ahnen, doch es zeigt, daß die materielle Wertschätzung für solcherlei Objekte nicht verlorenging. Das Buch war damals jedoch ganz allgemein, ob Kultobjekt oder nicht, ein hoch geschätztes Gut, was auch in seiner Knappheit begründet lag. Das hat sich gründlich gewandelt: Bücher (oder Objekte, die so aussehen) gibt es im Überfluß, und wie jeder Überfluß scheint auch dieser zum Überdruß zu führen. Man will, wenigstens in der wissenschaftlichen Kommunikation, die Papierbindung überwinden, möglichst vieles soll online verfügbar werden. Der Überdruß wird allerdings gar nicht vom Papier verursacht, sondern von seiner Masse. Es wird zuviel veröffentlicht. Das elektronische Medium erleichtert indessen nicht nur den Umgang mit Dokumentenmassen, sondern auch zugleich ihre Vergrößerung; es verschiebt folglich das Kernproblem in neue Dimensionen, löst es aber nicht. Ein anderer alter Braunschweiger, Carl Friedrich Gauß, hatte den Wahlspruch "Pauca sed matura" - Weniges, aber Reifes. Man fand in seinen Schubladen viele Arbeiten, die veröffentlichungsreif aussahen, ihm aber noch nicht genügend ausgefeilt gewesen waren. Gauß fühlte offenbar eine Verantwortung, Kollegen nicht die Zeit zu stehlen mit Arbeiten, in die er selber noch nicht genügend Zeit zu ihrer Vervollkommnung investiert hatte. Zum Vorbild wurde diese Haltung aber nicht.

Für Heinrich den Löwen noch undenkbar, für Gauß noch entbehrlich, ist für uns Heutige die Datenbank für die Verwaltung vonDokumentbeständen zum notwendigen Arbeitsinstrument geworden, damit wir aus der Masse der uns anvertrauten Dokumente die vorzeigbaren oder ausgereiften noch herausfinden können - wozu freilich die Elektronik nur formale Unterstützung, nicht Entscheidungshilfe leisten kann. Gern hätten wir schon ein wirklich perfektes Instrument, das wie jedes gute Werkzeug nicht als solches unsere Zeit beansprucht, sondern uns möglichst viel Zeit freimacht für unsere wahren Zwecke - welche das auch immer sind. Daß nun allegro - rein zufällig auch aus Braunschweig - bereits ein solches Werkzeug sei, behauptet niemand, auch nicht die Entwicklungsabteilung. Konturen angenommen hat aber nun doch, nach langem Nachdenken über neue Ansätze, ein Entwurf, der einerseits dem allegro-Konzept Kontinuität sichert, andererseits aber die Software auf eine ganz neue Grundlage stellt. Diese Grundlage soll für drei Ebenen neue Möglichkeiten eröffnen:

  1. Entwicklungsarbeit: ein plattformunabhängiges Kernsystem in objektorientierter Methodik.
  2. Anwendungsprogrammierung: ein Entwicklungssystem (Programmierschnittstelle), aufbauend auf dem Kernsystem, für die Gestaltung neuer Anwendungen auf der Basis von allegro-Datenbanken.
  3. Anwendung: mehr Komfort durch graphische Benutzeroberfläche nach gängigen Standards.
Natürlich warten die weitaus meisten Anwender auf Ergebnisse der Ebene 3. Um deutlich zu machen, warum man sich damit in Braunschweig so viel Zeit läßt, und um Einblicke zu geben, auf welchen Wegen die erwarteten Lösungen angesteuert werden, soll diese Nummer erstmals über das Projekt avanti berichten. Schon mehrfach hat sich gezeigt, wie leicht völlig unzutreffende Gerüchte entstehen. Es war deshalb Politik des Hauses, über ungelegte Eier grundsätzlich nichts zu sagen. Nachdem aber ein paar wichtige Eier inzwischen gelegt werden konnten, weiß man wenigstens über Farbe, Größe und Gewicht endlich Bescheid. Der alte Gauß würde zwar noch immer nichts verlauten lassen, sondern die Eier erst noch in Ruhe alle ausbrüten. Fakten, die sich kaumnoch ändern dürften, sollte man aber wohl doch mitteilen. Nicht nur, um Gerüchten vorzubeugen, sondern auch, um auf Möglich- keiten aufmerksam zu machen, die sich schon klar abzeichnen, und die für vielerlei Planungen als Denkanstoß dienen können.

Damit kein Mißverständnis oder gar Gerücht aufkommt: der Name allegro bleibt bestehen, schon um deutlich zu machen, daß bei allem tiefgreifenden Wandel die Kontinuität und Kompatibilität nicht aus dem Auge gelassen wird. Mit avanti wurde bisher nur intern ein Projekt bezeichnet, jetzt soll dieser Name den gesamten Komplex der Neuerungen auf einen Begriff bringen. Der Name soll nicht andeuten, daß nun hastig auf den Windows-Zug aufgesprungen wird, oder daß es höchste Zeit wird, diesem nun endlich hinterherzulaufen. avanti heißt schlicht "vorwärts", d.h. es verbindet sich damit die Einschätzung, Schritte in die richtige Richtung zu tun. Was für Schritte das sind, und in welche Richtung, das sollen die nachfolgenden Seiten wenigstens umrißweise verdeutlichen.

Das Konzept avanti soll und kann darauf hinauslaufen, daß eine neue Produktlinie entsteht. Der sich jetzt herausbildende neue Kern wird die bewährten Komponenten als Bausatz (sog. "Klassenbibliothek") bereitstellen, der sich mit anderen Bausätzen (etwa für Oberflächengestaltungen) auf der Ebene C++ leicht und schnell kombinieren läßt. Der Kern ist in keiner Weise mehr auf eine bestimmte Plattform, weder DOS noch Windows, festgelegt. Die Entwicklungsabteilung kann natürlichnicht, aber muß dann auch nicht mehr, alles selber machen, denn es wird eine Lizenz für das Kernsystem geben, d.h. der Bausatz als solcher wird erhältlich sein und als Basis für eine Vielzahl von Fremdprodukten dienen können.

Im Systemhandbuch stand seit Version 9.7 (1989) diese Bemerkung:

"Benutzeroberflächen sind im übrigen besonders problematisch hinsichtlich der Portabilität. Für allegro wird angestrebt, daß es unter MS-DOS und UNIX lauffähig ist und bleibt. Dazu ist es notwendig, Oberfläche und Kern in den Programmen so zu trennen, daß nur relativ kleine Programmteile systemspezifisch zu schreiben sind. Längerfristig wird sich diese Bemühung auszahlen, zunächst geht es dadurch aber langsamer voran, als wenn man sich ausschließlich auf ein Betriebssystem konzentrieren würde." (aus: Nachwort zu Kap.0)

Dahinter steckte die Devise: "Die Zeit arbeitet für uns", und zwar indem der Markt zunehmend mächtige Tools hervorbringt, die Standardisierung vorangetrieben wird, und ganz allgemein die Vorstellungen von und Kenntnisse über Konzepte der Datenbankorganisation und der Benutzungsoberflächen heranreifen. Es scheint, die Zeit hat nun lange genug gearbeitet; die praktische Umsetzung der jetzt erkennbaren Möglichkeiten kann sie uns nicht auch noch abnehmen.

Beispiel für ein objektorientiertes Programm

Anwender ohne Interesse an Fragen der Programmierung können die folgenden drei Seiten überspringen!

Damit (angehende) C-Programmierer unter den Anwendern sich einen Eindruck verschaffen können, was ein avanti-Programm sein wird, drucken wir hier in einiger Ausführlichkeit ein Musterprogramm ab. Dies soll helfen, die sehr abstrakten Ausführungen der Einleitung zu konkretisieren und einen Vorab-Einblick in die entstehende Programmierschnittstelle zu vermitteln.

Dieses Programm ist in der Sprache C++ geschrieben. Das Symbol // leitet Kommentare ein, d.h. der Rest der Zeile wird vom Compiler ignoriert.

Der "Bausatz" (die Klassenbibliothek) des Kernsystems enthält u.a. folgende Klassen (= Objektbeschreibungen):

KONFIG
Konfiguration. Nimmt praktisch den Inhalt einer Konfigurationsdatei auf. Diese Klasse enthält "Methoden" (auch "Memberfunktionen" genannt), um Kategorien zu überprüfen, d.h. anhand der Kategorieliste ihre formale Korrektheit festzustellen: ist es eine zulässige Kategorie? enthält sie unerlaubte Teilfelder?, usw.
RECORD
Datensatz. Dient zum Laden von Sätzen aus der Datenbank. Wichtige "Methoden" sind das Einordnen neuer Kategorien in den Datensatz, das Finden und das Löschen von Kategorien und Untersätzen.
EXET
Export-Set. Nimmt eine Export-Parameterdatei auf. Die wichtigste "Methode" ist die Funktion Exp(), die den Export eines Satzes ausführt. Man übergibt also dieser Funktion ein Objekt der Klasse RECORD, um diesen Datensatz zu exportieren.
INDEX
Indexdatei. Ein Objekt dieser Klasse stellt den Index einer Datenbank dar. Es gibt eine Anzahl Methoden (Funktionen), die den Zugriff auf die Register ermöglichen, aber auch die Berechnung der Schlüssel eines Datensatzes.
ABASE
allegro-Datenbank. Diese Klasse umfaßt ein Objekt INDEX, aber zusätzlich alle Methoden, um Sätze zu laden, zu löschen, und bearbeitete Sätze zurückzuspeichern, einschließlich aller Indexveränderungen.
RESULT
Ergebnismenge. Indem die Ergebnisse eines Suchvorganges zu einem Objekt zusammengefaßt werden, ergibt sich zwanglos die Möglichkeit, Ergebnismengen aufzubewahren und miteinander zu verknüpfen.

Diese Klassen sind genauestens beschrieben in Dateien mit den Namen KONFIG.HPP, RECORD.HPP usw. Der Programmierer kann daraus alle Strukturen und Methoden ersehen, die in einem C++-Programm verwendet werden können. Diese Dateien dokumentieren also zugleich die "Programmierschnittstelle". Da diese Klassen keine interaktiven Teile enthalten (d.h. keine Tastatur- und Bildschirmprozeduren), sind sie mit beliebigen Klassenbibliotheken für GUI-Gestaltungen, aber z.B. auch für den Z39.50- Standard, für EDIFACT oder Client/Server-Anwendungen, kombinierbar. Das allegro-Datenbanksystem wird damit endlich auch auf Programmierebene zu einem absolut offenen System.

Es folgt auf den nächsten zwei Seiten ein kleines Musterprogramm, welches ein wenig verdeutlichen soll, wie die genannten Klassen eingesetzt werden. Das Programm macht folgendes:

Um die Lesbarkeit zu verbessern, sind Kommentare kursiv gedruckt, der eigentliche Programmtext fett.




//                         Musterprogramm TEST.CPP



// Allgemeine Vorbereitungen:



// Klassenbeschreibungen: 

// die Datei  ABASE.HPP  enthält alle Beschreibungen

#include "abase.hpp" 





//  Hier beginnt das Programm:



int Amain()

{

 

 if(!uifRead('0')) A_EXIT(10);   // Lies die Datei UIF0GER

 if(!uifRead('1')) A_EXIT(10);   // Lies die Datei UIF1GER



// Zuerst wird A.CFG geladen, und zwar vom Verzeichnis C:\ALLEGRO\DEMO2 :

//   (eine Konfiguration wird immer gebraucht) 



KONFIG *kfg=new KONFIG("A","C:\\ALLEGRO\\DEMO2\\");



if(*Aerror) { printf("\n%s\n",Aerror); A_EXIT(10); }  // Fehler in A.CFG?

// Fehlermeldungen solcher Funktionen stehen immer in der Variablen Aerror

//  if(*Aerror) bedeutet: steht etwas in Aerror? Wenn ja, wird die

//                        nachfolgende Klammer ausgeführt

//  A_EXIT(10) heisst: Programm wird mit Fehlercode 10 beendet



// Im folgenden wird jeweils die Konfiguration  kfg  benutzt, um Objekte

//   zu erzeugen



// Exportparameter D-SHOW.APR werden geladen in ein Objekt der Klasse EXET,

//   welches den Namen  eee  bekommt:



EXET *eee=new EXET("D-SHOW",kfg,0, "C:\\ALLEGRO\\DEMO2\\");



if(*Aerror) { printf("Aerror=%s\n",Aerror); A_EXIT(10); }

// zum Ausgeben soll die Funktion putchar() dienen, d.h. Ausgabe auf Bildschirm;

//   deshalb wird der Name dieser Funktion an das Objekt  eee  uebergeben:



eee->Outfunc(putchar);

// Ein Objekt RECORD (Datensatz) wird geschaffen, es beruht gleichfalls auf kfg:



RECORD *satz=new RECORD(kfg);



// Die Datenbank CAT auf C:\ALLEGRO\DEMO2 wird geoeffnet:

// (d.h. ein Objekt der Klasse ABASE wird angelegt)



ABASE *xyz=new ABASE("C:\\ALLEGRO\\DEMO2\\","CAT", kfg,1);



if(*Aerror) { printf("IndexParamFehler: %s\n",Aerror); A_EXIT(10); }

// wenn in Aerror was steht, hat es nicht geklappt!



// Jetzt wird mit den erstellten Objekten einiges ausprobiert:







// ein paar Variablen werden gebraucht:



CHAR txt[256];       // soll den Text einer Registerzeile aufnehmen



long results[1000];  // Ergebnismenge: bis zu 1000 Satznummern



int rs;              // Anzahl der Ergebnisse



// Im Register 3 wird nach Eintraegen gesucht, die mit "biochem" anfangen:

// Die Satznummern werden in  results  eingetragen:

//     (die Klasse RESULT wird in diesem Fall nicht benutzt!)



rs=xyz->ADXget(3,"biochem",results,1);



// Am Bildschirm wird angezeigt, wieviele Ergebnisse (rs) es waren:



cout << endl << "Ergebnisse : " << rs << endl;



// "endl" heisst "end of line"  und erzeugt einen Zeilenvorschub

// Alle Saetze der Ergebnismenge werden jetzt als Kurztitel (entnommen

// aus der .STL-Datei) angezeigt, dann geladen und mit der

// Exportdatei  eee  exportiert (gleichfalls auf den Bildschirm)



if(rs>0)  // d.h. wenn es Ergebnisse gibt:



{ int i=0;    // Variable fuer die laufende Nummer

  while(i<rs) 

  {

   cout << results[i] ;  // laufende Nummer



   // Kurztitelzeile holen, in  txt  zwischenspeichern:



   k=xyz->STLget(results[i],txt);



   // und dann anzeigen: (die C-Funktion printf() wird benutzt)

   printf(", Kurztitel: %s\n",txt);

   // Datensatz holen und im Objekt  satz  zwischenspeichern:



   xyz->Get(results[i++],satz,0);



   // Kategorie #30a mit Inhalt BTC in den Satz einordnen:



   satz->Ins("#30aBTC");



   // und dann den Satz mittels  eee  exportieren:

   // (ein Objekt der Klasse EXET hat eine "Memberfunktion" Exp(), die den

   // eigentlichen Export ausfuehrt, d.h. die Parameter abarbeitet)



   eee->Exp(satz);   // Datensatz speichern (Indexbearbeitung erfolgt dabei automatisch)



   xyz->Put(satz);

   getch();   // nach jedem Satz anhalten und auf Taste warten

  }  // Ende der while()-Schleife

}

return 1;   // zurueck zu main(), Beendigung des Programms 

}



PRESTO

Verklebte Datensätze

Aufmerksame Anwender lieferten Hinweise, mit denen zwei mögliche Fehlerursachen endlich aufgespürt werden konnten. Beide Probleme lassen sich vermeiden, wir werden aber die Programme PRESTO und MENUED auf FTP-Server und Mailbox daraufhin korrigieren, so daß es fehlersichere Versionen geben wird, die ansonsten dem Stand V14a entsprechen.

"Verklebte" Datensätze erkennt man daran, daß an einem normalen Datensatz am Ende noch ein weiterer auftaucht, sichtbar nur nach Umschaltung der Anzeige mit F5, der mit dem ersten gar nichts zu tun hat. Dieser zweite läßt sich dann nicht mehr normal bearbeiten, denn beim Zugriff auf ihn kommt eine Meldung wie "fehlerhafte Satznummer". Das Hilfsprogramm SNIFFER ermöglicht es, solche Fälle aufzufinden. Zustande kommt das Problem dadurch, daß der erste (normale) Datensatz beim Zurückschreiben nach einer Korrektur leider um ein oder mehrere Zeichen zu lang war, das Programm dies jedoch nicht bemerkte. Dann wurde das Steuerzeichen am Anfang des nachfolgenden Satzes überschrieben, und dies führt dazu, daß beim späteren Einlesen des ersten dessen Ende nicht mehr erkannt wird. Ein Steuerzeichen "Satzende" gibt es nämlich nicht, das Anfangszeichen des nächsten ist zugleich Endpunkt des vorangehenden Satzes. Deshalb wird, ist dieses Zeichen überschrieben, der nachfolgende Satz gleich mit eingelesen, aber ein normales Arbeiten ist damit dann nicht mehr möglich. Am besten macht man von einem solchen Satz eine Kopie mit 'C', oder kopiert mit Shift+F5 das Ganze in den Hintergrundspeicher, und versucht dann beide Sätze daraus zu rekonstruieren und normal abzuspeichern. Den verdorbenen Satz mit Anhängsel löscht man. Es bleiben dann aber noch Registereinträge des zweiten Satzes stehen. Diese verschwinden nur, wenn man den Index erneuert (Unterfunktion 'i' der Routine "organisieren").

Nun aber zu der Frage, wie man solche Fälle vermeidet, wenn man noch nicht das neueste PRESTO oder MENUED hat:

  1. Vorsicht bei Bearbeitung mit #b : nicht das ganze Fenster löschen!
    Der Befehl #b ist an sich ungefährlich, aber eines darf man nicht tun: den gesamten Kategorietext im Fenster löschen, einschließlich der Kategorienummer, dann <Enter> drücken und anschließend mit F10 speichern. Das Problem ist die intern falsche Verarbeitung des leeren Fensters, wodurch das Programm sich hinterher um ein Byte verzählt, d.h. eines zuviel speichert. Diese Auswirkung ist gänzlich unplausibel, deshalb wurde sie wohl auch so spät entdeckt. Sicher haben Anwender gelegentlich angenommen, daß man eine Kategorie löschen kann, wenn man einfach das gesamte Bearbeitungsfenster löscht. Das stimmt also leider nicht.
    Vermeidung: Zum Löschen muß man entweder den #v -Befehl benutzen oder die Kategorienummer ohne Text eingeben, also z.B. im Fenster die Kategorienummer noch stehen lassen, bevor man <Enter> drückt.
  2. Vorsicht beim Import von Daten aus Textsystemen und aus DNB-CD
    Dies ist eine ganz andere Fehlerursache, die Wirkung sieht aber genauso aus. Nicht PRESTO, sondern UPDATE ist verantwortlich. Der Fehler tritt auf, wenn Fremddaten einen der Codes 01 bis 06 (' ' bis ' ') enthalten oder das Tabulator- zeichen, Code 09. Besonders wenn Daten mit Textsystemen erstellt wurden, kann dieser Code vorkommen, aber das Infame ist, daß man das Zeichen normalerweise nicht sieht: es stehen an der Stelle scheinbar mehrere Leerzeichen.
    Abhilfe: man schreibe prophylaktisch in jede Import-Parameterdatei, wenn man sich über den Inhalt der Fremddaten in diesem Punkt nicht sicher ist, diese Zeilen (egal an welcher Stelle):
    y .1 32
    y .2 32
    ... (dsgl. für 3,4,5)
    y .6 32
    y .9 32

    Dann werden die genannten Zeichen alle durch Leerzeichen ersetzt. Wahlweise nehme man 256 statt 32, wenn eines der Zeichen beim Importieren ganz verschwinden soll. Die Ersetzung findet schon beim Einlesen des Fremdtextes statt, d.h. die Importbefehle finden diese Zeichen dann schon gar nicht mehr vor. Das muß man evtl. berücksichtigen.
    Wichtiger Hinweis: In den Daten der DNB-CDROM (1991-) kommt das Zeichen 05 = ' ' vor. Wenn man solche Daten importiert, dann unbedingt die angegebenen Zeilen einbauen, z.B. in die DBCD.AIM.

Mißverständnis

Die Datei CP.OPT wird nur vom CockPit gelesen (d.h. vom Programm ACP.EXE), nicht von PRESTO! Wenn daher in der CP.OPT eine Option q oder e für PRESTO steht, also Druck- bzw. Exportparameter vorgegeben werden, dann werden sie nur wirksam, wenn PRESTO vom CockPit aus gestartet wird: über die Routine "Datenbank benutzen" oder die Funktion 1. Nicht jedoch, wenn PRESTO per Hand oder aus einem Batch heraus gestartet wird. Dabei muß man die Optionen immer ausdrücklich mit angeben.

Also konkret: Wenn ich den Befehl presto -dkatalog -n1 -S von Hand eingebe, wird keine Druck-Parameterdatei geladen, auch nicht wenn in CP.OPT die Angabe q p-karte steht.

"ctree fatal error #222"

Wenn PRESTO oder APAC mit dieser Meldung den Dienst versagen, reicht der Parameterspeicher nicht aus. Die Dateien für Index, Anzeige und Druck oder Export sind insgesamt zu groß. Abhilfe: den Wert mX in der CFG höher setzen, z.B. mX50000 . Standard ist mX40000 bei PRESTO, aber nur mX30000 bei APAC.

Fehler in der Titelanzeige: Verlagsort kommt nicht

Bei Verwendung der mitgelieferten Standard-Anzeigeparameter D-1.APR kommt es zu merkwürdigen Fehlern: statt Verlagsort (#74) kommt oft ein Teil eines Personennamens zum Vorschein.

Diesen Fehler korrigiert man so: (führen Sie die nachfolgenden Zeilen genau wie angegeben aus)

CockPit-Menü "Dateien", Unterpunkt "Export-Parameterdateien" aktivieren

Datei D-1.APR anwählen, zweimal <Enter>, die Datei erscheint zum Bearbeiten


f #55  <Enter>

<Einfg>

<Ende>

<Enter>

#74 e0

<Esc> q s

Damit hat man eine Zeile "#74 e0" hinter die Zeile mit "#55..." eingefügt. Diese verhindert den Fehler. Er beruht auf Komplikationen mit bedingten Postfixen, in denen Unterprogramme aufgerufen werden.

Die Datei P-KARTE.APR für den Kartendruck ist an dieser Stelle anders konstruiert, daher hat sie den Fehler nicht.

Abfrageproblem

Vorsicht: eine Abfragezeile mit Vorgabe in dieser Form:

#123""xyz<

ist nicht nur wenig sinnvoll sondern führt sogar zum Absturz. Entweder keine Anführungszeichen oder mindestens ein Zeichen dazwischen!

APAC

Drucken oder "Downloaden" am OPAC

Wenn OPAC-Benutzern das Ausgeben von Daten erlaubt werden soll, muß man APAC mit Option -e starten:

apac ... -e exppar /prn oder apac ... -e exppar/dateiname

Die Exportparameterdatei exppar.APR kann jede für diesen Zweck geeignete Datei sein. "prn" ist eigentlich ein Spezialfall, denn "prn" wird von MS-DOS als Name des direkt angeschlossenen Druckers interpretiert.

Wenn APAC so gestartet wurde, erscheint auf dem Esc-Menü der Punkt "Daten exportieren". Dieser steht als Nummer 380 in der Datei UIFAGER und kann dort z.B. in "Ergebnisse drucken" geändert werden. Anwahl des Punktes bewirkt dasselbe wie F4 in PRESTO.

Will man mehrere Druck- oder Exportmöglichkeiten zur Auswahl anbieten, kann man dies nur durch ein übergeordnetes Menü realisieren, wodurch dann APAC jeweils mit einer anderen Option -e aufgerufen würde. Eine Umschaltung innerhalb von APAC auf andere Exportparameter ist nicht möglich.

Register-Überschriften

Die Bildschirm-Überschriften werden festgelegt mit den Befehlen |1=... bis |;=... für die Register 1 bis 11 bzw. |a=... für die Titelanzeige (s. Kap.10.2.1, S.163). Eine Überschrift soll oftmals Mehrfach-Leerzeichen enthalten. Das ist möglich, indem man den auf '=' folgenden Text in Anführungszeichen setzt, z.B.:

i6=" Verlage Erscheinungsorte Erscheinungsjahre"

Ohne die Anführungszeichen würde die Überschrift hinter "Verlage" abgeschnitten.

OPACSHOW : Selbstlaufende Demo zum Programm APAC

An der "Bibliothek für Bildungsgeschichtliche Forschung" in Berlin hat Herr Ritzi ein Programm erstellt, das den allegro-OPAC in einer selbstlaufenden und interaktiven Demo vorstellt.

Grundlage ist die Software "Supershow 5", die man für ca. DM 180.- bei CDV-Software in Karlsruhe bekommen kann. Es gibt 6 Kapitel:

  1. Recherchen nach Verfassern
  2. Recherchen in unterschiedlichen Registern
  3. Suchbegriffe trunkieren
  4. Ergebnismenge erweitern (ODER -suche)
  5. Ergebnismenge reduzieren (UND-Suche)
  6. Ergebnismenge auf Diskette exportieren

Jedes Kap. braucht ca. 10 Minuten.

Das Paket liegt auf dem FTP-Server: OPACSHOW.EXE auf Verzeichnis ANWENDER. (Es ist ein selbstentpackendes Archiv ( Umfang knapp 410.000 Byte), das man einmal auf einem eigenen Verzeichnis startet, dann entpackt es sich, danach startet man immer wieder mit dem Befehl "allegroc".

Weitere Information: Christian Ritzi, Tel. (030)306490-34, E-Mail 100417,2102@compuserve.com.

UPDATE

Falsche Datumsstempel bei Playback

Wenn eine .LOG-Datei mittels update -f9 in eine Sicherungskopie eingemischt wird, sollen die Datumskategorien nicht verändert werden. Die .LOG-Datei enthält ja Kopien von Datensätzen, die unmittelbar nach dem Speichern in die Datenbankangefertigt wurden. Wenn der seltene Fall eintritt, daß eine Datenbank wiederhergestellt werden muß, erneuert das Programm UPDATE von V14a leider die Datumskategorien, so daß nicht der exakte "Zustand vor dem Zusammenbruch" wiederhergestellt wird. Echte Datenfehler entstehen jedoch in keinem Fall.

Abhilfe: Wenn der Fall eintritt, die Datenbank wiederherstellen zu müssen, vorher in der .CFG die Datumsbefehle ce und cn ungültig machen (Leerzeichen davorsetzen), hinterher diese Zeilen wieder gültig machen.

Oder: vom FTP-Server oder der Mailbox die aktuelle Datei UPDATE.LZH abholen, die das korrigierte Programm enthält.

Fehler bei -fm41

Folgende (seltene) Situation ist kritisch: ein Datensatz besteht nur aus mehreren Kategorien mit gleicher Nummer und unterschiedlichen Wiederholungszeichen. Per update -fm41 wird der Satz durch einen neuen ersetzt, der eine Kategorie weniger hat. Dann verschwindet das letzte Feld des alten Satzes. Ein Fall, wo dies auftreten kann, sind Exemplarsätze, die nur aus zwei oder drei Kategorien #9D X bestehen.

Abhilfe: solchen Datensätzen noch mindestens eine weitere Kategorie spendieren (#00 oder #99n z.B.), oder das neue UPDATE.LZH vom Server holen.

INDEX

Index-Parameter: Probleme mit Code 08

V14a bietet die Möglichkeit, mit einem ak-Befehl mehrere Schlüssel zu erzeugen, indem der Code 08 zwischen die einzelnen Schlüssel gesetzt wird, z.B. mit dem Befehl #t{ 8 } (siehe news 38, S.4: "Sieben auf einen Streich"). Ganz ohne Probleme ist das nicht, man muß in zwei Fällen diese Arbeitsweise vermeiden:

Der zweite Fall führt zu der Empfehlung: Konstruieren Sie Ihre Indexparameter so, daß der erste ak-Befehl ak=zz+@ lautet, und daß in dem bei #-@ beginnenden Abschnitt in jedem Fall, also für jeden Satztyp, tatsächlichder Primärschlüssel entsteht, aber nur dieser.

Neuaufbau einer Datenbank

Wenn die "Organisier"-Routine 7 (dahinter steckt der Aufruf index -f7 ) vom CockPit aus benutzt wird, um eine Datenbank komplett zu erneuern, passiert folgendes:

Das Programm INDEX sucht sich auf dem Datenverzeichnis alle Dateien der Typen .ALD und .ALG und macht daraus eine neue Datenbank; die Numerierung der Dateien wird durch Option -n geregelt: gibt man z.B. -n7 , kommt alles in eine neue Datei mit Nummer 7, gibt man -n0 , werden neue Dateien mit den Nummern der alten angelegt, so daß die neuen dann inhaltlich den alten Dateien entsprechen, bis auf die gelöschten Sätze, welche verschwinden. Die Dateien werden auf den Typ .A1D bzw. .A1G umbenannt, bevor es losgeht, hinterher wird das rückgängig gemacht, wenn es geht. Wenn CAT_1.ALD neu entstanden ist, kann natürlich CAT_1.A1D nicht zurückbenannt werden und bleibt so stehen. Soviel zum Ablauf. Was kann dabei schiefgehen? Wenn man immer vom CockPit aus gearbeitet hat, normalerweise nichts. Ansonsten aber zwei Dinge:

Daraus folgt: Wenn man "eigenmächtig", also außerhalb des CockPit, mit Dateien der Typen .ALD oder .ALG hantiert hat, oder wenn INDEX mal mit Option -ni (mit i>0, also nicht -n0 ) gestartet wurde, dann prüfe man vor dem Neuaufbau, ob Dateien der genannten Art vorliegen (CockPit-Menü "Dateien" / "Sämtliche Dateien" anwählen, dann sieht man sie).

Kurz: Man sorge dafür, daß nur noch diejenigen Dateien des Typs .ALD auf dem Datenverzeichnis stehen, die wirklich zurDatenbank gehören, und keinesfalls irgendwelche .ALG-Dateien.

Export

Neuer Strukturbefehl s

Innerhalb einer Steuerzeichenkette kann bei V14a der neue Strukturbefehl (siehe Kap. 10.2.0, S.155) s verwendet werden. Er verändert für die nachfolgenden Befehle den Anfangspunkt der Kategorietexte, also den Parameter ks (Kap. 10.2.5, S.171). Bisher war diese Einstellung unveränderbar während des Programmlaufs. Nun bewirkt ein Befehl wie #t{ s0 } daß von diesem Punkt an der gesamte Kategorietext, also einschließlich '#' und Nummer, ausgegeben wird. Zu Beginn eines neuen Satzes wird automatisch auf den Ausgangswert von ks zurückgeschaltet.

Sonderkategorie #uxb : Nummer des aktuellen Index

Neben der Sonderkategorie #uxa , die den Indexeintrag enthält, von dem aus man zugegriffen hat, gibt es ab V14 die Sonderkategorie #uxb , und zwar enthält sie die Ziffer des Registers (':' für 10 und ';' für 11), welches dabei benutzt wurde. Das bedeutet, man kann Anzeigeparameter machen, die für jedes Register eine andere Anzeige erzeugen. Manbaut am besten dann einige Sprungbefehle ein, etwa so:


#uxb +X c"1" e0     enthält #uxb die Ziffer 1? Dann nach #-X springen

#uxb +Y c"2" e0

...

#-X



Benutzt wurde diese Methode in der Datei D-1.CPR zur Formate-Datenbank (s. Seite 9).

Kopf- und Fußzeilen

Wenn man mit Kopf- und Fußabschnitten arbeitet, erscheinen die Zeilen in falscher Reihenfolge, wenn es sich um mehr als zwei Zeilen handelt. Dafür gibt es leider keine Abhilfe. Das Problem ist nicht relevant, wenn man Listen mit Textprogrammen weiterverarbeitet, weil dann der Seitenumbruch sinnvollerweise nicht von allegro, sondern von der Textsoftware gemacht wird.

Lokale Ersetzung von Leerzeichen

Wenn man mit einem Manipulationsbefehl ,"_ _X_" alle Leerzeichen in einer Kategorie durch 'X' ersetzen will, klappt das im Bereich der ersten 5 Zeichen nicht.

Abhilfe: man ergänzt den Befehl wie folgt: #nn p"12345" ,"_ _X_" b5 .

ASORT

Das Programm benötigt zum Arbeiten freien Plattenraum von der doppelten Größe der zu sortierenden Datei. Ist das nicht gegeben,verweigert es den Dienst mit der Meldung "nirgends genug Platz", nachdem es vorher noch die Laufwerke A: und B: prüft (wenn eins davon nicht vorhanden ist, gibt es an dieser Stelle einen Fehler).

Folgendermaßen kann man u.U. trotzdem sortieren:

Wenn z.B. die Ausgangsdatei auf C: liegt und auf einer anderen Platte (oder Partition) genug Platz ist, z.B. auf D:, schaltet man auf D: um und startet ASORT von dort aus mit dem Aufruf:

asort -ic: <ausgangsdatei> -o <zieldatei>

Die zieldatei entsteht dann ohne Problem auf D:.

IMPORT

Beschränkungen

Die Parameter rs , re und fe (s. Kap.11.2.1, S.222/23) sind in der Länge auf 25 Zeichen beschränkt. Hat man tatsächlich einmal eine längere Zeichenkette für einen dieser Zwecke, nehme man für rs und re davon den Endabschnitt, für fe den Anfangsabschnitt, und zwar so, daß der Text dann noch signifikant ist. Wird das nicht beachtet, kann es zum Absturz kommen.

Ärger mit Fremddaten

(s.a. unter PRESTO, S.5)

Die CD-Produkte VLB, DNB und Books-in-Print haben in der letzten Zeit z.T. mehrfach ihre Struktur verändert. Wenn ein Import aus einer dieser Quellen plötzlich nicht mehr oder fehlerhaft abläuft, holen Sie sich zunächst die neuesten Versionen der Dateien VLB.AIM, DBCD.AIM bzw. BIP.AIM vom FTP-Server.

UNIX

V14a verfügbar

Zuerst für die Plattformen Solaris und Linux, in Kürze auch für AIX, Sinix und HP-UX, wurden die Programme neu kompiliert, getestet und bereitgestellt. Die Anwender finden die jeweils aktuellen Dateien und weitere Informationen auf den bekannten Verzeichnissen des FTP vor.

Groß-Kleinschreibung der Dateinamen

Die neuesten Versionen der Programme arbeiten auch mit klein geschriebenen Dateinamen. Z.B. wird zuerst nach A.CFG gesucht ($A.CFG geht unter UNIX übrigens nicht!), wenn es nicht existiert, wird a.cfg gesucht. Dann aber müssen die Datenbankdateien auch .ald und nicht .ALD heißen. Man hat hier eine Möglichkeit, die UNIX-Parameterdateien abweichend von den DOS-Dateien zugestalten und die Typbezeichnung dann in Großbuchstaben zu geben. Um Probleme ganz zu vermeiden, ist es aber vielleicht die beste Politik, generell nur Kleinschreibung zu verwenden, besonders wenn ein Filesystem zugleich von DOS und UNIX aus benutzt wird. Auch das Kopieren per FTP wird so erleichtert.

Nützliche Tabellen

Das Problem des Zeichensatzes (DOS-ASCII vs. UNIX-ANSI) läßt sich vorerst nur so lösen:

In der Regel kopiert man eine DOS-Datenbank unverändert mittels FTP (Modus BIN!) in ein UNIX-Filesystem. In die Anzeigeparameter (meistens D-1.cPR) baut man diese Befehle ein:

dx=1

tD

Damit wird eine Tabelle D.APT geladen. (Sie liegt auf dem Verzeichnis UNIX-14.) Diese Tabelle setzt die Zeichen von des OSTWEST.FON (erweitertes DOS-ASCII) nach UNIX-ANSI um. Wenn man nicht A.CFG sondern z.B. P.CFG verwendet, muß sie D.PPT heißen. Außerdem muß man in der D-1.cPR die evtl. vorhandenen Farbbefehle (meistens sind das die Zwischenteile 71 bis 78) ausblenden.

Wenn man allerdings dann in den Editor geht, findet man plötzlich ganz falsche Zeichen vor. Auf dieser Ebene wird die Umcodierung (noch) nicht wirksam. Also muß man vorerst alle Bearbeitungen und Eingaben auf der DOS-Ebene durchführen.

Die umgekehrte Umwandlung (d.h. wenn man eine unter UNIX erstellte Datenbank als Kopie in einem DOS-System verfügbar machen will) wird durch eine Tabelle A.APT unterstützt, die man in gleicher Weise in die D-1.APR des DOS-Systems einbinden muß. Diese Tabelle wird erst im Oktober verfügbar sein, ist aber reine Fleißarbeit.

WWW

Man erreicht die Leitseite der UB weiterhin über http://www.tu-bs.de . Neben den Zugängen zu den diversen Datenbanken (in Kürze auch der Zeitschriftendienst ZD des DBI und in Kürze das Archiv der allegro-Liste) findet man hier unter dem Stichwort "Hintergründe" eine Dokumentation (Stand: 29.6.95, weitere Verbesserungen stehen bevor) der gesamten Methodik und Implementierung (samt HTML-Dateien und Perl-Skript), erarbeitet von Dierk Höppner (e-mail-Adresse: D.Hoeppner@tu-bs.de ).

Formate-Datenbank

Die UB Braunschweig hat 1994 eine Neuauflage des Werkes "Was sind und was sollen bibliothekarische Datenformate" herausgebracht, wobei eine Diskette mit einer allegro-Datenbank mitgeliefert wurde. Diese Datenbank umfaßt eine Gesamtkonkordanz der Formate Pica3, Pica+, USMARC, UNIMARC, MAB, ZDB-Zeta, allegro (A.CFG) und NZN. Nachdem zu den Formaten USMARC, UNIMARC und MAB neue Handbücher erschienen sind, muß diese Datenbank überarbeitet werden. Zu einem großen Teil ist das schon geschehen. Eine Neuausgabe des gedruckten Werkes soll vorerst nicht erscheinen, aber die Datenbank wurde in der aktuellen Fassung auf dem FTP-Server unter ANWENDER\FORMAT.EXE (ein selbstentpackendes Archiv incl. Parameterdateien und Programm APAC) bereitgestellt.

ORDER

V14a

Die Software wurde an den neuesten Stand des Kernsystems angepaßt und vor kurzem an die Anwender ausgeliefert sowie auf FTP verfügbar gemacht. Funktionale Verbesserungen sind in der neuen Handbuchauflage schon veröffentlicht worden.

Parameterfehler

Es gibt einen Fehler in der Parameterdatei KONTR1.APR. Sie wird im Zusammenhang mit der Kontingentrekonstruktion benutzt. Der Rückschaltbefehl in Zeile 105 (#<) muß hinter Zeile 107 ( #-n ) verschoben werden, sonst kann es zum Fehler 'retrieval stack overflow' kommen.

aLF

V14a

Auch das Ausleihsystem wurde, mit vielen funktionalen Erweiterungen gegenüber der V12-Ausgabe und Verbesserungen der Benutzung,inzwischen ausgeliefert. Die ÖB-Anwender werden über die Büchereizentrale Lüneburg betreut, soweit sie das dort gepflegte Schema O.CFG einsetzen. Lüneburg erarbeitet auch die Anwendungsbeschreibung. Alle anderen Abonnenten haben eine Diskette erhalten, die auch die derzeit vorliegende Dokumentation für das Schema A.CFG enthält. Eine Datei !README.WB auf dieser Diskette (enthalten in der Archivdatei A9401WB.EXE) informiert über die Installation und die für das Parametrieren zu beachtenden Einzelheiten. Wer die vorige Version schon im Einsatz hatte, muß einige Umstrukturierungen an den Daten und Parametern durchführen und den Index erneuern.

Systemanforderungen

Weil oft danach gefragt wird, fassen wir ganz knapp die Anforderungen des allegro-Systems an Hard- und Software etc. zusammen, die man für V14a veranschlagen muß.

Hardware
Prozessor ab 386. Das OPAC-Programm APAC kann auch noch auf 286 laufen, aber nicht mehr bei 512K Arbeitsspeicher. Es gibt sogar noch eine Version XTAPAC für 8086-Rechner.
Speicher
Wenn mehr als 640K vorhanden: LOADHIGH benutzen, um Treiber o.a. in den oberen Bereich zu bringen und so mehr freien Platz zu gewinnen.
Betr.System
Jedes DOS ab 3.20 oder DR-DOS/Novell-DOS. Unter Windows oder OS/2 kann man in einer DOS-Box starten. Mehrplatzbetrieb auf allen PC-Netzen möglich.
UNIX: AIX, HP-UX, Linux, Sinix, Solaris
Software
Kein kommerzielles Datenbanksystem o.a. erforderlich
Funktionen
Kernsystem mit Erfassung, Bearbeitung, Fremddatennutzung, OPAC, Export, Volltextsuche, Update (offline-Einspielen neuer Daten), Datensicherung
Ausleihe (Programm aLF) mit allen Leihfunktionen, Gebührenverwaltung, Statistik
Monographienerwerbung (Programm ORDER): voll ausgebaut.
Dokumentation
Systemhandbuch, Lehrbuch mit Lerndiskette, Zusatzhandbücher für Erwerbung und Ausleihe
Internformate
individuell konfigurierbar. Es existieren Konfigurationen für MAB, MARC, Pica neben dem sog. "konsolidierte Format", welches die meisten Anwender benutzen.
Sprache
Es kann in Deutsch oder Englisch gearbeitet werden. OPAC-Menüs sind vollständig anpassungsfähig an lokale Anforderungen.

Handbuch-Korrekturen

S.25: (Kap. 0.7) Zu dem Aufruf des Programms UPDATE muß die Option -S ergänzt werden, wenn diese Prozedur auf einem Einzelplatzsystem benutzt wird. Sonst läuft UPDATE sehr langsam und kann die Schlüssel nicht einordnen, d.h. man findet hinterher die neuen Daten nicht!

S.50 Ein Programm KEYTEST wird erwähnt. Gemeint ist QRIX, aufrufbar vom CockPit-Menü "Funktionen".

Internet-Diskussionsliste

Diese Liste, eingerichtet in Bonn von Herrn Berger, hat sich für den Erfahrungsaustausch sehr bewährt. Die

Entwicklungsabteilung nutzt dieses Medium gern zur Verbreitung von Verlautbarungen. Für alle, die noch nicht lange am Internet hängen, wiederholen wir die Angaben, die man braucht, um sich einzuklinken:

E-mail-Adresse: allegro@mpim-bonn.mpg.de

An diese Adresse schickt man eigene Mitteilungen, die dann von allen Teilnehmern empfangen werden. Wenn Sie Ihrerseits alles lesen wollen, was die anderen schreiben, senden Sie an folgende Adresse:

listserv@mpim-bonn.mpg.de (aber bitte nur an diese, nicht an die oben genannte!)

die Meldung

subscribe allegro Vorname Nachname ... und später, um sich abzumelden: unsubscribe allegro

dann geht das seinen Gang, d.h. Sie bekommen ab sofort etwas mehr Post als vorher, und Sie können Fragen und Kommentare an die ganze Runde schicken, also an die Adresse allegro@mpim-bonn.mpg.de .

WordPerfect 5.1-Datei PostScript-Datei

Datum der letzen Änderung: 11.09.95

© 1995, UB Braunschweig

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