a99/avanti: write-Befehl verbessert
Bernhard Eversberg
EV at buch.biblio.etc.tu-bs.de
Mo Mär 24 08:40:54 CET 2003
Vorige Woche war bemerkt worden, dass der Befehl "write" die Daten
nicht umcodiert. Das war Handlungsbedarf, und es wurde gehandelt.
Wir haben die Unicode-Verlautbarung (Vb.164) daraufhin erweitert:
es wurde der neue Punkt 3. eingeschoben (4-6. war vorher
3-5.)
Hier folgen nur die neuen Punkte, die vollstaendige Vb ist in a99.lzh
mit drin. Das GP ist noch nicht erneuert. avanti fuer Sun und Linux
wird heute noch erneurt, procav ist schon jetzt erneuert.
a99/alcarta und procav liegen bereit.
Die Dokumentationen zu "write" und was damit zusammenhaengt werden
fuer das GP noch ueberarbeitet.
Der entscheidende Punkt ist: der output von "write" kann jetzt bei
Bedarf automatisch durch eine Exportparameterdatei geschickt werden.
(o.apt hat dann hierfuer keine Bedeutung!)
Damit hat man alle noetigen Freiheitsgrade. Im a99.lzh ist eine
Beispiel-Parameterdatei p-unicod.apr enthalten, mit Kommentar.
1. UTF-8-Codes beim Einlesen umwandeln
2. Akzente vertauschen (wg. Unicode)
3. avanti/a99: Befehl 'write' wandelt automatisch um
4. Nutzereingaben von UTF-8 in DOS-Codes verwandeln
5. "V14" wird aufgebohrt : Sequenzen ohne Grenzen
6. Alternative zur V14-Methodik (die alte bleibt voll gueltig!)
3. a99/avanti: Befehl 'write' wandelt automatisch um
----------------------------------------------------
Unbefriedigend war auch schon ohne Unicode das Verhalten des Befehls
'write' in der avanti- und FLEX-Sprache. Er gab die gewuenschten
Daten ohne jede Umwandlung aus. Man musste zu Tricks greifen, um
eine konvertierte Ausgabe zu bekommen, direkt mit 'write' ging
es nicht. Besonders bei avanti war das misslich, wo ja der Ausgabe-
strom meistens direkt in einen HTML-Text fliesst.
Jetzt geht es - ohne Vorbereitung aber auch nicht: irgendwie muss
man dem Programm zu verstehen geben, WAS es denn machen soll.
Vorbereitung:
a) Bereitstellen einer Parameterdatei p-unicode.xpr
mit einem Abschnitt #-X zum Erzeugen der Ausgabe.
In diesem Abschnitt muss die Variable #u1 verwendet werden.
b) Laden und Aktivieren dieser Parameter im FLEX mittels Befehl
dow p p-unicode Lade p-unicode.apr
dow wX Aktiviere darin Abschn. #-X
Alternativ: wenn ohnehin eine Export-Parameterdatei benutzt wird,
kann man auch den Abschnitt #-X darin einbetten.
Mit dow wa kann man JEDEN Abschnitt #-a zum write-Abschnitt
erklaeren, nicht nur #-X.
Mit dow w0 schaltet man die Funktion wieder ab. Die Schaltung
gilt nur fuer die Dauer des FLEXes, bei jedem Start eines FLEXes
ist sie abgeschaltet.
Mit diesen Vorbereitungen laeuft's dann so:
Befehl 'write' produziert zuerst einen Arbeitstext. Erst wenn die
'write'-Zeile zu Ende ist, wird der Arbeitstext als Variable #u1
an die Parameterdatei uebergeben. Das Einfachste ist, den
Abschnitt #-X so zu schreiben:
#-X
#u1
#+#
td-utf8 dieser Befehl kann auch woanders stehen
tasciansi wenn statt dessen Output im Windows-Code entstehen
soll
Dadurch wird der Arbeitstext mit der Tabelle p-utf8.apt umgewandelt.
Alternativ kann man d-html4 nehmen.
Im Prinzip aber kann jede beliebige Umwandlung vorgenommen werden,
die mit der Exportsprache moeglich ist.
Ferner ist es moeglich, unterschiedliche Abschnitte vorzubereiten
und dann mit dem Befehl "dow wa" mal diesen, mal jenen einzu-
schalten, im Extremfall fuer jeden write-Befehl einen anderen.
Im FLEX sollte man, wenn es wirklich um Unicode geht, ausserdem
VOR den write-Befehlen dow a sagen und hinterher dow A, um die
Akzentvertauschung einzubeziehen.
Wir haben eine Parameterdatei p-unicod.apr als Muster vorbereitet,
ferner die PHP-Dateien ask.htm und show.php. Letztere ist zugleich
ein Muster fuer eine minimale PHP-Datei, in der man sehen kann, aus
was so eine Datei bestehen muss. Man kann sie als Startbeispiel
nehmen, wenn man mit PHP beginnen will!
Bernhard Eversberg
Universitaetsbibliothek, Postf. 3329,
D-38023 Braunschweig, Germany
Tel. +49 531 391-5026 , -5011 , FAX -5836
e-mail B.Eversberg at tu-bs.de
Mehr Informationen über die Mailingliste Allegro