AW: [Allegro] Exportparameter

Thomas Fischer fischer at sub.uni-goettingen.de
Do Apr 16 14:11:49 CEST 2009


Hallo Herr Eversberg,

> > 1. Gibt es eine effektive Methode um zu testen, ob ein Feld 
> > leer ist?

> Schreiben Sie
> #10 $$ b0 ...
> Dann wird ... nur ausgeführt, falls in $$ was steht, sonst 
> wird ... auch dann ausgeführt (also Prä-/Postfixe ausgegeben 
> etc.), wenn es nicht leer ist. Dasselbe gilt für "richtige" 
> Teilfelder.
> (Der Befehl bn führt genau dann zum Abbruch, wenn nach seiner 
> Ausführung das Feld leer ist, d.h. wenn n>=Länge des Feldes ist.)

Aha, das hilft! Schönen Dank! (Muss man erst einmal drauf kommen, das macht
wohl den Allegrologen...)

> > 2. Wird irgendwo schlüssig erklärt, wann Daten bei Test mit "=" 
> > ausgegeben werden?
> Auf S. 199: Mit der "Anwendervariable st" ist dort jeweils 
> #ust gemeint.
> Damit wird der aktuelle Arbeitstext verglichen. Bei 
> Ungleichheit wird #ust durch den AT-Inhalt ersetzt und die 
> Zeile fortgesetzt, ohne daß sich am AT was ändert. Bei 
> Gleichheit wird die Zeile ohne Wirkung abgebrochen, insbes. 
> der bed. Sprung nicht ausgeführt.

Das kenne ich. Aber verstanden hatte ich nicht, wieso dies das
unterschiedliche Verhalten von 
#cc $e drl =rl+- >U
und
#cc $e drl =rl+- P>U
bezüglich der Ausgabe des Wertes von #cc $e erklärt.

Ich versuche einmal, das nachzuvollziehen.
1. Bei den Vergleichen
=rl+X  und =rl,N
wird bei Ungleichheit die Variable belegt, der Text ausgegeben und die
entsprechende Zeile weiter abgearbeitet. (Das steht so im Beispiel.)
Bei dem Vergleich
=xy
wird bei Ungleichheit nur die Variable belegt, aber kein Text ausgegeben und
die Zeile auch nicht weiter bearbeitet. Insbesondere führt
#cc $e drl =rl P>U
weder zu einer Ausgabe noch zu einem Aufruf des Programms U.
Das kann ich nur indirekt aus 

"Wenn weder ",z" noch "+M" angegeben sind, wird der Arbeitstext in die
Anwendervariable xy kopiert - zum späteren Gebrauch - er wird aber nicht
ausgegeben. Indirekte Prä- und Postfixe werden jedoch ausgegeben, wenn
welche definiert sind."

entnehmen. Grundsätzlich halte ich übrigens nichts davon, solche
Sachverhalte "am Beispiel" zu erklären, da bleibt zu viel Unklarheit übrig.
Lieber wäre mir eine Erklärung, die in jedem der zwei (=xy..; =yx) oder drei
(=yx,N; =xy+M; =xy) Fälle genau sagt, was bei Gleichheit und bei
Ungleichheit mit dem Arbeitstext und dem Rest der Zeile passiert und was
ausgegeben wird. 

2. Beim Aufruf eines Unterprogramms wird bei
P>U
der Arbeitstext ausgegeben, nicht aber bei
p>U und >U

Das wird mir aus dem Text

"Der Aufruf kann nicht nur anstelle eines Exportbefehls stehen, wie hier
gezeigt, sondern auch als Manipulationsbefehl (anstatt Präfix) oder anstelle
einer Postfix-Nummer.
Wenn man einen UP-Aufruf als Manipulationsbefehl benutzt, bewirkt die Zeile
selbst keine Ausgabe;..."

auch nicht klar.

Mit freundlichen Grüßen
Thomas Fischer 




Mehr Informationen über die Mailingliste Allegro