#X Endabschnitt in der #90 löschen (DOS-Version)

Thomas Berger ThB at gymel.com
Mo Jul 14 11:20:31 CEST 2003


Lieber Herr Eversberg,

> >    Hinter "=yx" sollte man jedoch vorsichtshalber e0 (oder
> >    Z, was dasselbe ist) setzen.
> 
> Braucht man aber nicht. Wenn nichts hinter =xy folgt, wird einfach nichts mehr
> gemacht, wie bei axy und Axy.

stimmt. Ich habe das einmal genutzt, um meinem Unbehagen 
bei "=xy" systematisch nachzugehen:

>>>
1=""
#t{"start" C}

#20 dxy Z
#20 +#98z P{C "post 1" C} =xy,1 p{"pre 1" C}
#t{"fell through 1" C}

#98z
#20 +#98z P{C "post 2" C} =xy,1 p{"pre 2" C}
#t{"fell through 2" C}

#98z
#t{"end" C}
<<<

liefert:
>>>
start
pre 1
Troilus and Cressida
post 1
fell through 2
end
<<<

Das ist o.k.

Dasselbe mit "=xy,0" statt "=xy,1" liefert:
>>>
start

post 1
fell through 2
end
<<<

Der Unterschied ist also, dass beim "magischen" Zwischenteil 0
Kategorieinhalt und (nach der Zuweisung definiertes) Praefix nicht
ausgegeben wird (ich finde jedoch: Es sollte, obwohl das Handbuch 
einen "Sonderfall ,0" angibt). Gleich ist, dass der bedingte 
Sprung in Abhaengigkeit von der Vorbelegung von #uxy ausgefuehrt 
oder nicht ausgefuehrt wird und die Ausgabe des (vor der
Zuweisung definierten) Postfixes.

Dasselbe mit "=xy" liefert ein identisches Resultat:
>>>
start

post 1
fell through 2
end
<<<

d.h. auch der scheinbare Zuweisungsbefehl "=xy" enthaelt
den impliziten Vergleich mit "magischem Zwischenteil 0"
mit den ueblichen Auswirkungen auf die Abarbeitung bedingter
Spruenge, und die Angabe im Handbuch "Indirekte Prae- und 
Postfixe werden jedoch ausgegeben, wenn welche definiert sind",
ist soweit falsch, da nur diejenigen beruecksichtigt werden,
die vor dem "=xy" notiert wurden und sie werden in Abhaengigkeit
von der Vorbelegung von #uxy ausgegeben oder nicht ausgegeben.

Ich finde, "=xy" sollte ganz ohne Vergleich implementiert
werden (und wie Axy, axy den Arbeitstext auf "" setzen, d.h.
die Verarbeitung der Anweisung beenden), "=xy,0" sollte sich
jedoch so verhalten wie "=xy,n", d.h. die volle Logik der
erst-Pruefung-dann-Zuweisung implementieren, ohne den
Sonderweg der unbedingten AT-Leerung.

Die derzeitige Implementation hat ein wirklich unerwartetes
(auch nach Lesen des Handbuchs) Verhalten fuer die scheinbare
Zuweisung =xy und einen "Sonderfall ,0" der identisch mit 
dem Verhalten bei "=xy" ist und m.E. sowieso keine sinnvolle
Funktionalitaet liefert (ich baue staendig Parameterdateien
mit 1="" wie im obersten Beispiel, weil das wirklich gebraucht
ist und =xy,0 es nun gerade nicht kann).

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro