Vb.34: Codierbefehle mit Ausnahmen

Bernhard Eversberg EV at buch.biblio.etc.tu-bs.de
Do Okt 26 14:17:18 CET 1995


Verlautbarung 34 der Entw.Abt.
------------------------------

Codierbefehle
-------------

Frau Dorsch hatte ein Problem identifiziert:

p ; ;

ergab > statt ; . Wenn man

p : :

schreibt, erhaelt man = statt :.
Das sind Ausnahmefaelle. Sie ergeben sich als Nebenwirkung aus der
AEnderung bei den Registerpraefixen fuers Nachladen: Statt bisher |102 
oder |110 kann nun auch |:2 bzw. |;0 geschrieben werden. Somit wurden
aergerliche Ausnahmen um den Preis neuer Ausnahmen beseitigt, die offen-
sichtlich gleichfalls AErger erzeugen koennen.
Die p und q-Befehle funktionieren am sichersten, wenn man den zweiten
Wert als Dezimalzahl angibt, also

p ; 59
p : 58

fuer die obigen Beispiele. Auch

p ; ";"
p : ":"

gehen zwar, aber diese Form erzeugt intern einen hoeheren Aufwand. Diese
Form ist gedacht zur Ersetzung einzelner Zeichen durch Zeichenketten,
also z.B.

p ; "Semikolon"
p : "Doppelpunkt"

Wenn das erste Argument des p-Befehls nicht als Zeichen darstellbar oder
eingebbar ist, ersetzt man es durch den Dezimalen ASCII-Wert mit voran-
gestelltem Punkt:

p .59 59

und insbesondere, fuer den Punkt als Zeichen:

p .46 46

anders geht's in diesem Sonderfall nicht.

Ein Punkt vor dem zweiten Argument ist NUR zu verwenden, wenn man ein
Zeichen durch eine Esc-Sequenz o.ae. ersetzen will, die man ebenfalls
nicht als druckbare Zeichen darstellen kann:

p u .27 82 11 126 27 82 2    (u mit accent aigu, fuer Epson-Drucker)

Diese Ersetzungen finden erst ganz zum Schluss, unmittelbar vor der Ausgabe
statt, d.h. in die Zeilenlaengenberechnung gehen solche Zeichen nur als
einzelnes Zeichen ein, waehrend ein Befehl p x "abc" natuerlich mit
3 Zeichen zu Buche schlaegt. Auf die Bildschirmanzeige haben solche
Befehle ausserdem keinen Einfluss, d.h. werden nicht ausgefuehrt, wenn
die Datei als Anzeigeparameter benutzt wird. Auch daran muss man denken.

Im uebrigen muss man einen Befehl wie

p ; 59

nur dann machen, wenn man vorher z.B.

p :/@ =1

gemacht hat, um alle zeichen der Sequenz  : ; < = > ? @  auszublenden.
Denn sonst wuerde das ';' ja sowieso als ';' ausgegeben.

Das sind eine Menge Einzelheiten, zugegeben. Das Problem, dies alles korrekt
anzuwenden, wird nur uebertroffen von dem Problem, das Programm zu schreiben,
das diese Dinge alle ausfuehrt ;-)

MfG  B.E.



Mehr Informationen über die Mailingliste Allegro