[Allegro] Vb.188: V26.1. F8 neu belegt, N.CFG, etc.

Bernhard Eversberg ev at biblio.tu-bs.de
Do Jan 26 11:30:43 CET 2006


Verlautbarung 188 der Entw.Abt.                          2006-01-26
-------------------------------
[ersetzt die Vorschau-Version vom 22.12.05]

                         V26.1
                         =====
                 Gesamtpaket liegt bereit:
                 http://www.allegro-c.de/newvers.htm

F8 neu belegt
-------------
Wenn man nichts anderes tut, wird bei F8 der Inhalt des Reservespeichers
im Anzeigefeld gezeigt. F8 sucht aber zuerst nach einem FLEX namens
OnF8.flx und fuehrt ihn, wird er gefunden, aus.
Mit V26 stellen wir einen OnF8.FLX bereit. Er bietet einige Funktionen
an, die gerade moeglich sind - in Abhaengigkeit vom aktuellen Satz.
Wer das nicht will, kann  OnF8.flx  loeschen, dann ist alles beim alten.
Wer seinen eigenen  OnF8.flx  hat oder haben will, legt ihn auf das
Datenverzeichnis, dann wird der Standard dadurch umgangen (wie immer
in solchen Faellen).


Wenn der find-Befehl nichts findet ... dann Google-Automatik
------------------------------------------------------------
... weil er nicht mit einem gueltigen Registernamen anfaengt, ist
bislang das Resultat nicht immer leer! Zwar kommt das nicht bei
Fernglas-Nutzung vor, aber bei manuellen Befehlen oder per FLEX
kann es sein. Jetzt kommt dann wirklich nichts raus. Fuer avanti
gilt dasselbe und wird gleichfalls korrigiert. Bisher wurde da
naemlich stillschweigend noch ein Versuch mit dem vorher zuletzt
verwendeten Registernamen gemacht! Solche klammheimlichen Sachen
soll ein Programm denn doch vermeiden.
Zusaetzlich gibt's einen erweiterten FLEX onfnda99.flx: Dieser
springt an, wenn in der Suchbefehlszeile was eingegeben wurde und
nichts rauskommt. Dann zerlegt der FLEX die Eingabe in seine
Einzelteile und setzt sie mit |1 davor und AND |1 dazwischen wieder
zusammen. Kommt noch immer nichts, dann dasselbe, aber mit ?
hinter jedem Wort.
Ergebnis: man kann im Suchbefehlsfeld zwei, drei Woerter einwerfen
und kriegt was raus - ohne Registernamen. Voraussetzung ist aber,
dass Reg. 1 sowas wie ein ALL-Register ist. Beim N-Format werden
die Standard-Indexparameter so gestaltet. Beim A-Format sollte man
bei Bedarf in onfnda99.flx eingreifen und |3 statt |1 einsetzen!


N.CFG fuer neue, eigene Projekte
--------------------------------
Am 6.12.2005 neu vorgestellt wurde eine Konfiguration N.CFG,
auch "Neutralformat" oder "Nikolausformat" genannt.
Sie erleichtert das Aufsetzen eigener Projekte, wenn es sich
im weitesten Sinne um Dokumente handelt, die man erfassen will.
Mehr dazu steht in einem eigenen Beitrag:
   http://www.allegro-c.de/neutral/
Es wurde versucht, nicht allzu vieles noch offenzulassen, weil sich
dann erfahrungsgemaess allzu schnell Varianten des Standards
herausbilden. Experimente mit diversen vorliegenden Datenbanken
haben viele sinnvolle Verbesserungen erbracht. Bereits einbezogen
sind die Vorkehrungen fuer Schiller-Raeuber, Phrasensuche und
Linkstrunkierung als wahlweise und leicht nutzbare Optionen.
Eine DemoBank zum Ausprobieren findet man hier:
   http://www.biblio.tu-bs.de/db/neutral/
Alles andere, was den Anwender interessieren koennte, findet
man leicht unter den beiden angegebenen Adressen. Vor allem
auch ausfuehrliche Beispiele von Datensaetzen im N-Format und
eine Darstellung der strukturellen Grundsaetze des Formats.
Im Gesamtpaket ist N.CFG noch nicht drin, aber:
Ein Paket zum Herunterladen ermoeglicht sofort das Anlegen einer
eigenen N-Datenbank:
   http://ftp.allegro-c.de/aktuelle-version/n-setup.exe


Weitere Neuerungen der V26.1
============================

Indexparameter: Neuerung beim ak-Befehl
---------------------------------------
Eingebaut in DOS- und Windows-Programme sowie in avanti.

Bis V25.9 ist es so:
ak=nn+x    bedeutet:  Nimm Feld #nn als Variable #u1 und gehe zu #-x
...
#-x
#u1 p"|i"     Inhalt von #u1 (also #nn) soll ins Reg.i (i=1,...,9,:,;)
#+#

oder gleichwertig:

#-x
#t{ "|i" }
#u1
#+#

Ab V26.0 gibt es eine neue ak-Option und einen neuen
Manipulationsbefehl namens J.
Damit wird man genausogut schreiben koennen:

ak=nn+xi      (mit i=1,...,9,:,;)
...
#-x
#u1           Praefix "|i" wird vor Inhalt von #u1 gesetzt
#+#

oder, auch wieder gleichwertig, aber unnoetig aufgeblasen:

#-x
#t{ J }
#u1
#+#

Der Defaultwert des Index-Praefix ist "|1". Das heisst:
Wenn man im ak-Befehl kein i gesetzt hat, wird Register 1 zugeordnet.
Weitere Option: der neue Manipulationsbefehl J
Soll nicht 1 Default sein, schreibt man  Ji, also z.B.  J2. Dann wuerde,
falls im ak-Befehl das i fehlt, Register 2 zugeordnet. Anders gesagt,
das i im ak-Befehl geniesst Prioritaet.

Vorteile: (der groesste ist wohl 3.)
1. Wenn man die Indexparameter konsequent auf diese Weise
    gestaltet, ist schon aus den ak-Befehlen ersichtlich, welchen
    Registern die Felder zugeordnet werden.
2. Aenderungen der Registerzuordnungen brauchen nur in
    den ak-Zeilen gemacht zu werden.
3. Verschiedene Kategorien koennen auf gleiche Weise
    fuer den Index bearbeitet, aber doch unterschiedlichen
    Registern zugeordnet werden, ohne dass man in den
    Verarbeitungsabschnitt unter  #-x  eingreifen muss. Da dieser
    Abschnitt sehr kompliziert sein kann, ist es guenstig, wenn
    man sich darum nicht kuemmern muss.

Ergebnis: Man kann sich bestimmte Verarbeitungsabschnitte fuer
bestimmte Schluesseltypen erstellen.
Z.B. Abschnitte fuer Personennamen, Titel, Schlagwoerter.
Die Zuordnung zu den Registernummern geschieht aber in den
ak-Befehlen. Damit kann man eine bessere, uebersichtlichere
Modularisierung der Indexparameter erreichen.

Alte Parameter bleiben voll gueltig! Die neue Moeglichkeit kommt
als zusaetzliche Option hinzu. Die Programme bis V25.9 koennen
freilich diese Option nicht verarbeiten: es kommen dann falsche
Schluessel im Reg. 1 mit einem J als Praefix heraus, wenn man den
M-Befehl J verwendet, und es wird Reg. 1 zugeordnet, wenn man nur
ak=nn+xi sagt und kein J verwendet.

ExtraTip:
Wer wollte, koennte in seinen Indexparametern folgende Ersetzungen
vornehmen, auch ohne die ak-Befehle zu aendern:

  "|i"      ersetzen durch   Ji
  "|iXYZ"   ersetzen durch   p"XYZ" Ji

und zwar sowohl in den Manipulationsbefehlen wie auch in #t-Befehlen.


FLEX: var #nnn(i,j)   Indikator per FLEX auswerten!
-------------------   (siehe  h xcstring )
Wenn i keine Zahl, sondern der Buchstabe i ist, gilt:
Der Inhalt von #nnn wird nicht ab dem ersten Zeichen genommen, sondern
ab der ersten Indikatorposition. Beim Standardschema macht das nichts
aus. Wenn man aber eine CFG mit t2 und k5 hat (statt k4), dann ergibt
var #99(i,1) genau den Wert des Indikators, d.h. des Zeichens hinter
dem Mehrfachcode von #99. Brauchbar ist dieser Sonderfall bei Formaten
wie MAB und MARC, bei denen es einen bzw. zwei Indikatoren gibt.


Signalfile
----------
Wenn im SGF die 1 gesetzt ist, aber access>4, dann startete a99
kommentarlos trotzdem. Jetzt fragt es wenigstens, ob man das
wirklich will.


ASCII <-> ANSI Umcodierung
--------------------------
Das N-Format arbeitet mit ANSI statt ASCII. An einigen Stellen fiel
unangenehm auf, dass die Umcodierung nicht oder falsch arbeitete.
Diese Stellen wurden alle korrigiert. Notwendig ist aber, in die
Anzeigeparameter (!) die Tabelle oasci.npt einzubinden. Diese ist
identisch mit o.apt. In die Indexparameter muss dagegen  o.npt
eingebunden sein. Das Programm verwendet jeweils die richtige
Tabelle. oasci.npt ist z.B. an den Stellen noetig, wo ein Hilfetext
oder eine ViewListe benutzt wird. Diese sind standardmaessig
in ASCII codiert und das muss auch so bleiben, denn sonst
muessten wir ja von allen diesen Dateien jeweils 2 Versionen
liefern und pflegen!


"Ansicht / Registereintraege" : Absturz
---------------------------------------
... in a99/alcarta. Behoben


Neue ISBN
---------
Die erweiterte Pruefung greift nur dann richtig, d.h. setzt im
Fehlerfall das * hinter die falsche ISBN, wenn diese mit 97
beginnt. Bis auf weiteres beginnen naemlich alle neuen ISBNs
mit 978 oder 979, andere sollte man in der Praxis nicht
antreffen.


PRESTO : Glob.Ersetzung
-----------------------
war nicht ganz in Ordnung. Korrigiert.






Mehr Informationen über die Mailingliste Allegro