AW: Bedingte Postfixe, Zusatzfrage

Thomas Berger ThB at gymel.com
Di Mai 29 17:25:17 CEST 2001


Lieber Herr Englert,

> Meine #84 endet mit Punkt.

[Am Rande: Eingebaute Magie von allegro-Zwischenteilen ist:
Ein "." am Anfang eines Zwischenteils wird eliminiert, wenn er auf
einen "." am Ende des zuvor ausgegebenen Kategorietextes trifft 
oder das erste Zeichen einer Zeile wuerde. Kleiner Bug: Manchmal
enstehen Doppel-Spatien]

> Woher soll meine, sagen wir #87 "wissen", dass kein Prafix "Komma" notig
> ist, wenn 74-86 ausgefallen waren?
> 
> Wie machen Sie das, ohne jede Befehlszeile zweimal hinschreiben zu mussen um
> vorher auf den Wert einer Uservariablen abfragen und unterschiedlich
> reagieren zu konnen? Sowas wie im Import "checke den ganzen Datensatz" geht
> hier ja nicht

Bei HANS mache ich das so, natuerlich per Unterprogramm (und 
unterscheide zwischen normalen Praefixen und der Situation, dass 
die Kategorie die erste auszugebende in einem "Absatz" ist). Hilft 
hier natuerlich nicht.
 
> Soweit ich das alles kapiere, waren mir die guten alten bedingten Postfixe
> schon lieber, wenn ich nur kapieren wurde, warum sie nicht so reagieren, wie
> in den wenigen Zeilen des Handbuches angedeutet.

Hm. Vermutlich hilft es also, Ihr Verstaendnis so zurechtzubiegen,
dass Sie sehen, dass allegro sich wie im Handbuch angedeutet verhaelt.

Ihr urspruengliches Beispiel war ja:

> 8=", "

> #75
> #74 8 #77 8 #zz 0
> #77
> #85

Wenn ich Sie recht verstanden habe, funktioniert das bei Ihnen,
weil #75 immer belegt ist (notfalls mit "o.V.") und daher
das Praefix 8 von #74 nie "sich ans Leere haengt". 

D.h. eigentlich wollen Sie:

leere #75 kommt vor
8 vor #74, wenn vorher etwas ausgegeben wurde
8 vor #77, wenn vorher etwas ausgegeben wurde
Nichts vor #85, auch wenn vorher etwas ausgegeben wurde
(vermutlich nicht, aber vermutlich hat #85 einen
Zeilenbruch als Praefix und dieses Praefix haengt
nicht von den vorigen Ausgaben ab).
[Irgendwo vermisse ich hier #76 :-)]

Dieses war jetzt mal wieder als bedingte Praefixe formuliert,
muss also allegro-gerecht umformuliert werden:

#75 ausgeben falls vorhanden.
    folgt #74, dann ZT 8 dazwischensetzen
    folgt #77, dann ZT 8 dazwischensetzen
    sonst nichts dazwischensetzen
#74 ausgeben, falls vorhanden
    folgt #77, dann ZT 8 dazwischensetzen
    sonst nichts dazwischensetzen
#77 ausgeben falls vorhanden
#85 (mit Praefix, s.o.) ausgeben

das "sonst nichts" muss auch noch umformuliert werden:
Im ersten Fall ist es: "beliebige Kategorie kleiner #74
oder beliebige Kategorie groesser #77", im zweiten Fall
ist es "beliebige Kategorie kleiner #77 oder beliebige 
Kategorie groesser #77".

Alles zusammen dann (bei #75 optimiert durch die
Beobachtung, dass fuer #74 und #75 als naechstes
jeweils derselbe Zwischenteil 8 kommen soll):

#75 0 #73 0 #77 8 #zz 0
#74 0 #76 0 #77 8 #zz 0
#77
#85 ...

Die "0" hinter #75 und #75 ist erforderlich, weil mindestens 
ein Manipulationsbefehl (MB) existieren muss, bevor die bedingten 
Postfixe aufgefuehrt werden koennen. "0" ist ja Kurzschrift
fuer Praefix Zwischenteil 0 und dient hier als Noop-MB.

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro