#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