[Allegro] Gleichsetzung und Vergleich

Thomas Fischer fischer at mail.sub.uni-goettingen.de
Mo Feb 19 16:22:39 CET 2007


Liebe KollegInnen,

weil ich einen etwas komplizierten Ablauf steuern möchte, bin ich mal wieder
mit der Gleichsetzung
=xy
=xy,K
=xy+M
beschäftigt.
Ich benutze die Zeilen

#uTi e2 F" 0?." P'.' =Ü1+A dfn =fn+- >U #zz 0    Thema (#28)
#-A

um Überschriften zu erzeugen.
Das Ziel ist, bei Übereinstimmung des Arbeitstextes mit #uÜ1 nichts zu tun
und einfach mit dem Export fortzufahren, bei Ungleichheit aber den
Arbeitstext in #ufn zu kopieren und das Programm U aufzurufen, das dann
irgend etwas damit macht (hier: eine formatierte Ausgabe der durch #ufn
kodierten Überschrift erzeugt).
Die Online-Dokumentation finde ich keine klare Erklärung zu dem Verhalten
und benutze Versuch und Irrtum, um herauszufinden was passiert. Ich habe
unten an diesen Brief die entsprechenden Informationen, wie ich sie der
Online-Dokumentation entnehmen konnte, angehängt.

0. Die Konstruktion
dfn =fn+- >U #zz 0
habe ich mir einmal ausgeguckt, um Parameter an das Programm U
weiterzugeben.
Da hier explizit dafür gesorgt wird, dass Gleichheit nicht auftritt, sollte
die Aktion, die bei Gleichheit durchgeführt wird, eigentlich keine Rolle
spielen. Dem ist nicht so: ohne das "+-" wird das Unterprogramm U nicht
aufgerufen. Allerdings wird bei Ungleichheit der Wert von #ufn auch nicht
ausgegeben.

Ich lasse dies so stehen und wende mich dem
=Ü1...
zu und teste die verschiedenen Möglichkeiten.

1.
=Ü1,0
bricht die Bearbeitung der Zeile bei Ungleichheit ab.
Bei Gleichheit: nichts

2.
=Ü1,1
arbeitet die Zeile bei Ungleichheit ab, unabhängig von der Existenz des
Zwischenteils 1.
Ich kann der Beschreibung nicht entnehmen, dass es bei Ungleichheit einen
Unterschied geben sollte zwischen
=Ü1,1 und =Ü1,0 .
Bei Gleichheit: Ausgabe des Zwischenteils (= nichts, wenn 1 leer ist).

3.
=Ü1+-
arbeitet die Zeile bei Ungleichheit ab, bricht bei Gleichheit den Export des
Datensatzes ab.

4.
=Ü1+A
arbeitet die Zeile bei Ungleichheit ab, bei Gleichheit: Sprung nach #-A

5.
=Ü1
bearbeitet die Zeile nicht, unabhängig von Ungleichheit oder Gleichheit (wie
bei 0.).

6.
=Ü1+#uÜ1
arbeitet die Zeile bei Ungleichheit ab, bei Gleichheit: Abbruch des Exports
wie bei +-
(#uÜ1 wird also nicht als Sprungmarke erkannt – steht auch nirgends, dass
das so sein sollte – , ist hier nur ein Test aus Analogie zu anderen
Sprüngen).

Um mein Ziel zu erreichen, muss ich also entweder eine zusätzlich
Sprungmarke #-A einsetzen (= "Sprung" zur nächsten Zeile!), oder ein leeres
Zwischenteil 1.
Das finde ich beides nicht ganz befriedigend.
Da es auch nicht mit der Dokumentation übereinstimmt, bitte ich um Änderung
(zumindest der Dokumentation, besser des Verhaltens).

Mit freundlichen Grüßen
Thomas Fischer 


–– 
Hier die entsprechenden Ausschnitte aus der Online-Dokumentation, etwas
kondensiert:

ac10-6.rtf:

=xy	2	Vergleiche AT mit Inhalt von #uxy und speichere AT in #uxy
		gleich: nächster Befehl, ungleich: Ausgabe des AT und
bed.Sprung	[199]	

ac10-7.rtf:

=st,17	Wenn der Arbeitstext mit der Anwendervariablen st übereinstimmt,
		gib Zwischenteil 17 aus, aber sonst nichts. Der Rest der
Zeile
		(insbes. Prä- und Postfixangaben und bedingte Sprünge)
bleibt 
		dann unberücksichtigt. 
		Wenn der Text nicht mit st übereinstimmt, ersetze den Inhalt
von st
		durch den neuen Text und fahre normal fort (Präfix ausgeben,
dann den Text,
		dann die angegebenen bedingten Postfixe für die nachfolgende
Kategorie
		vormerken, dann den Sprung ausführen.
=st,0		Sonderfall ,0: der Rest der Zeile wird nicht verarbeitet 

=st+M		Bei Gleichheit den Export an der Sprungmarke #-M fortsetzen
-
		ebenfalls ohne Ausgabe des Arbeitstextes. Die ganze Zeile
bewirkt also
		bei Gleichheit nur eine Verzweigung, bei Ungleichheit das
Umkopieren und
		die Ausgabe des Textes und den bedingten Sprung (falls er
angegeben ist).

=st		Der Arbeitstext wird in die Anwendervariable xy kopiert,
aber nicht ausgegeben.
		Indirekte Prä- und Postfixe werden jedoch ausgegeben, wenn
welche definiert sind. 

		In jedem Fall hat man anschließend den Arbeitstext in #ust. 
	
	




Mehr Informationen über die Mailingliste Allegro