a99/avanti: write-Befehl verbessert

Bernhard Eversberg EV at buch.biblio.etc.tu-bs.de
Mon Mar 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