[Allegro] Frage zu #t{'…'} im Indexparameter; Wiederholungskategorien

Fischer, Thomas fischer at sub.uni-goettingen.de
Mi Nov 13 15:37:35 CET 2013


Hallo Herr Eversberg,

> > Allerdings fällt es mir schwer, mir vorzustellen, was denn genau
> > passiert ist. Das ke=8 steht offensichtlich dort um zu verhindern,
> > dass einzelne Werte zusammengeklebt werden statt einzeln im
> > Register zu stehen. Offenbar wird die "8" aber meistens (?) gar
> > nicht angehängt, sonst hätte schon meine Ausganssituation
> > #udx
> > #ute
> > #t{8}
> > nicht funktionieren können.

> Weil ke=8 gesetzt ist, wird schon hinter #udx und vor #ute die 8
> gesetzt, denn ke bedeutet: setze diesen Wert hinter jede mit
> # angegebene Kategorieangabe, also auch hinter den Wert von #udx, falls
> da kein bedingtes Postfix angegeben war.
> Das wollen Sie aber nicht.

Nein das wollte ich  nicht, das ist aber auch nicht passiert, sonst wäre es mir
sofort aufgefallen. Hinter dem #udx kam eben *keine* "8" und
#udx
#ute
#t{8}
funktionierte wie gewünscht.

> Der Registereintrag wird beendet, wenn #+# kommt. Es steht dann
> nämlich ein Code 0 am Ende der erzeugten Zeichenfolge. Und die wird dann
> sofort verarbeitet, bevor die nächste ak-Anweisung eine neue
> Zeichenfolge generiert.

Und was passiert bei Beendigung oder Abbruch eines Unterprogramms?
Von selbst erst einmal nichts?

> > Es sieht so aus, als ob ein #t{'Text'} eine vorherige Ausgabe des
> > Trennzeichens ke erzwingen würde; gilt das nur für Indexparameter
> > oder auch für andere Dateien in der Exportsprache?
> >
> Ja natürlich! Denn wenn eine Zeile #t... kommt, was soll das
> Programm denn machen? Es ist in dem Moment entweder ein bedingtes
> Postfix definiert, oder nicht. Wenn nicht, dann wird ke genommen,
> sobald die nächste mit #t beginnende Zeile kommt. Denn man wird
> ja nicht wollen, daß das Postfix erst NACH der #t-Zeile wirklich
> rauskommt, das ergäbe ein Durcheinander.

Das ist plausibel.

> >> Überzählige Codes 8 an einem Schlüsselende machen nichts aus,
> >> aber zwischen Präfix und Text bzw. zwischen zwei Teilen eines
> >> Schlüssels machen sie Ärger.

> > Ja, aber offenbar erst, wenn noch ein #t{'x'} dazukommt. Ist das
> > nicht seltsam?

> Nein, aus oben erklärten Gründen.

Soweit ich sehe ist mein Problem gewesen, dass das ke in der
Indexparameterdatei nicht regelkonform abgearbeitet wurde,
erst ein #t{'x'} führte dazu, dass ke ausgegeben wurde.
Soweit ich es testen kann wird es fast nie ausgegeben, nur bei
einem neuen Kopfbefehl wird ein Registereintrag beendet, das
kann aber auch an dem #+# liegen.
Bei einer anderen Sprache würde ich das einen Bug nennen.
Wie sicher ist es, dass dieses Verhalten nur in Index- und nicht
in Exportparametern auftritt?
Oder anderes gefragt: unter welchen Bedingungen wird ke hinter
Variablen wie #udx ausgegeben und wann nur nach Feldern wie
#12, #u1, #cc etc.?

Mit freundlichen Grüßen
Thomas Fischer






Mehr Informationen über die Mailingliste Allegro