[Allegro] Vorabdruck Vb.271 : Mehr zum Thema "Unicode intern"

Bernhard Eversberg b.eversberg at tu-braunschweig.de
Fr Jul 24 10:13:16 CEST 2015


VORABDRUCK

Verlautbarung 271 der Entw.Abt.                              2015-07-28
-------------------------------

V35.7 kommt!
------------

dnx.flx : Besserer Ersatz fuer dnb.flx
--------------------------------------
Wie schon berichtet, wurde ein neuer FLEX dnx.flx geschaffen, der von
DNB die Daten nun im MARCXML-Format abruft. Was bis dato nur fuer die
etwas aelteren Daten ging. Das ist besser als die Umwandlung der
oberflaechlichen Anzeige, wie sie im Portal erscheint.


Zum Thema "Unicode intern"
--------------------------

Es soll mit V35.8 eine neue DemoBank geben, die intern in UTF-8 codiert
ist, was auch bisher schon ging, nun aber mit etwas mehr Unterstuetzung
in einigen wichtigen Funktionen.
Was weiterhin und auch in Zukunft NICHT gehen wird, ist die Anzeige von
UTF-Daten im Auswahlfeld, Schreibfeld, Befehlszeile und in den
Formularen, vom Index gar nicht erst zu reden. Die dafür notwendigen
Umstellungen der Kernprogramme sind nicht zu leisten, wie wir schon
früher definitiv festgestellt hatten, um unrealistische Hoffnungen
gar nicht aufkommen zu lassen.
Im Anzeigefeld kann dagegen UTF-Text korrekt erscheinen, weil dies
ein RTF-Feld ist, und ein solches ermöglicht die Anzeige, wenn die Daten
in bestimmter Weise codiert sind, siehe unten 6. Das war auch schon
bekannt, nun kommt eine verbesserte Bearbeitungsoption hinzu.

NEU...NEU...NEU
===============
a99 : Bearbeitung von UTF-8-Daten im Anzeigefeld
------------------------------------------------
[Nur fuer Datenbanken mit UTF-8 als interner Codierung!]
Ein neuer FLEX namens  allers.flx  ermoeglicht es, im Anzeigefeld
Datensaetze zu bearbeiten, die intern im UTF-8-Code vorliegen. Das ist
der Fall bei der Unicode-Variante der DemoBank. Diese wird in
aktualisierter Form neu bereitgestellt.
Der FLEX heisst so, weil ein wesentliches UP vom Kollegen Heinrich
Allers geschrieben wurde, der am 14.8.2013 tragisch ums Leben kam.
Wir wollen damit seine Verdienste um allegro noch einmal wuerdigen.

Wie ist vorzugehen?

1. Datensatz mit F5 in Kategorieform anzeigen lassen,
2. im Anzeigefeld bearbeiten,
3. mit  X allers  wieder einlesen in den Arbeitsspeicher,
      Satz wird mit den Korrekturen erneut angezeigt.
4. Falls noch nicht ok, Vorgang ab 1. wiederholen
5. Falls ok, speichern.

Voraussetzungen in den Parametern etc.:

1. o.apt: Nur die folgenden zwei Zeilen drin, sonst nichts:
    o .31 178   Unterfeld-Dreieck
    o .178 31   und umgekehrt

2. INI-Datei: diese Zeile
    Phrase=unicode.a99

3. Datei unicode.a99 kann zunaechst eine Kopie sein von phrase.a99
    Dann, falls Code 20 gewuenscht wie in Standardversion,
    in  unicode.a99  diese 2 Zeilen:
    20 = ^t
    ¶
    Dann ist mit Strg+t Eingabe des Absatzendezeichens ¶ moeglich

4. d-krtf.apr  aus dem demou-Ordner als Anzeigeparameter nehmen,
    Oder in den Anzeigeparametern muss der Abschnitt stehen,
         der in d-krtf.apr unter #-( steht (Intern-Anzeige).

5. aw-utf.apt  muss vorhanden sein (unveraendert seit 2005)

6. Entweder
    a) in den Anzeigeparametern den Befehl
       tutf-rtf   zum Laden der Tabelle utf-rtf.apt
    oder
    b) die Datei disphead.rtf mit \urtf1 versehen in das DbDir
       kopieren

Fuer Interessierte:
allers.flx speichert die Anzeige als RTF-Datei mit "file record.rtf".
Darin kann man sehen, dass die Unicode-Zeichen nicht als UTF-8
gespeichert werden, sondern in der RTF-Codierung, also z.B.
\u1057?  fuer das kyrillische C statt der 2 Bytes  D0 A1
(egal wie man bei Punkt 6. vorgeht). Der allers.flx muss deshalb
die Zahl 1057 wieder umrechnen in D0 A1. (Genau das hatte Allers
seinerzeit programmiert.) Jedoch: Die im RTF-zeichensatz vorhandenen
Zeichen werden beim Speichern nicht so codiert, sondern in der Notation
\'hh mit zwei Hex-Ziffern, z.B. \'80 fuer den Euro und \'e4 für das ä.
Dies war zusaetzlich zu programmieren, d.h. daraus beim Einlesen wieder
die UTF-Codes C3 A4 fuer das ä zu machen. Der allers.flx ist sehr
ausfuehrlich kommentiert. Wir haben damit erreicht, dass man fuer
diesen Zweck keine Drittmittel wie etwa Perl einzusetzen braucht, denn
so etwas wollen wir grundsaetzlich nicht dem Endanwender zumuten.

***********************************************************************


FLEX : Neuer Befehl  export Px ...  [a99 und acon]
----------------------------------
Jetzt ist es möglich, die meisten Werte in den momentan geladenen
Parametern fuer Anzeige, Export und Indexierung schnell mal eben
im laufenden Betrieb zu ändern. Und zwar betrifft das Grundparameter
und Tabellenwerte, nicht die eigentlichen Exportbefehle, die mit #
oder ! beginnen.
x steht für   i=Index, d=Anzeige, x=Export   [d nur in a99]
               [wie der Wert a beim Befehl xcode]
und anstelle von ... schreibt man die Befehlszeile genau so, wie sie
in einer Parameterdatei aussehen wuerde.
Will man z.B. zwischendurch mal fuer den Export eines oder mehrerer
Saetze den Ausgabewert des Zeichens '&' auf "und" aendern, so schriebe
man wie folgt:

export Px p & "und"
export
...
   Ruecksetzung:
export Px p & &

Das wird ausgenutzt in allers.flx, wo das Zeichen 31 (Dreieck) sonst
ein unloesbares Problem bereiten wuerde. Hier ist aber die o-Tabelle
zu aendern, und zwar in den Indexparametern.
Solche Aenderungen bleiben gueltig bis zum Sitzungsende oder bis zur
naechsten Aenderung an derselben Sache, je nachdem was zuerst kommt.

Eine Parameterdatei als solche wird dadurch nicht veraendert, sondern
nur ihre geladene Praesenz innerhalb des Programms. Es ist dann, als
sei der betr. Befehl in der Datei tatsaechlich dringewesen.
Tip: Wenn's nur um Tabellenwerte geht, und um mehr als nur einige
      wenige, kann man allerdings auch die betr. Tabelle komplett
      austauschen mit z.B.  disp tab <dateiname>.



a99: Kleiner Fehler
-------------------
Mit

ins $a-#mmm

kann der iV-Inhalt in das Unterfeld $a von #mmm übertragen werden.
Dabei trat eine kleine, unschädliche Ungenauigkeit auf: Wenn in dem
Moment #mmm noch nicht belegt war wurde es zwar neu erzeugt, aber vor
dem Inhalt $a... stand dann noch das erste Zeichen m.
Aufgefallen war das bei der aLF-Funktion "Exemplar vormerken".
Obzwar nur ein Irritat ohne Nebenwirkung, haben wir's denn doch
gerichtet.






Mehr Informationen über die Mailingliste Allegro