[Allegro] FLEX-Probleme mit hierarchischen Untersätzen

Bernhard Eversberg ev at biblio.tu-bs.de
Mo Jan 13 08:23:33 CET 2014


Wer keine hierarchischen Untersätze hat (#01 ...), ist unbetroffen.

Ein seit je bestehendes FLEX-Problem bei *hierarchischen* Sätzen
(nicht bei verknüpften!) ist dieses, und zwar auch für acon:

var #41

liefert z.B. den Inhalt von #41, AUCH WENN dieses Feld gar nicht im
Hauptsatz steht, sondern in irgendeinem hierarch. Untersatz.
Nicht nur der Befehl "var" hat diese Eigenheit, auch "if" ist damit
behaftet: (Für acon gilt dies nicht!)

if #41 mes Zum Kuckuck

bringt die Message "Zum Kuckuck" AUCH DANN, wenn #41 nur in einem der
hierarchischen Untersätze vorkommt.

FALLS jedoch vorher mit  sub #01 3  auf den Untersatz mit #01 3
geschaltet wurde, ergeben die Befehle nur dann etwas, wenn das betr.
Feld in diesem Untersatz oder einem der nachfolgenden auftritt. Das
ist erst recht ominös.


Weil das aber seit Anbeginn (1996) so war, ist nun die Frage:
Sollen wir's ändern?

In den Exportparametern ist das jedenfalls immer schon anders gewesen,
und aus guten und auf der Hand liegenden Gründen, die man durchaus auch
für FLEX geltend machen kann!

Denkbar ist aber, daß irgendwo da draußen einer oder viele FLEXe
ihr Ding machen, die bei einer Änderung versagen würden, weil sie auf
eben diese Eigenheit angewiesen sind. Wir neigen deshalb eher dazu,
eine einschaltbare Option zu schaffen, die das besagte Verhalten
für die Laufzeit des FLEXes abstellen würde.

Andererseits bin ich nicht sicher, ob es evtl. einen Pogrammierer-
Sinnspruch gibt, besagend, man solle nicht ändern, worüber keiner
lamentiert. Wie auch immer das sei, es wird sicher nur wenige
Anwender geben, die hierarchische Sätze machen, und unter diesen
nicht viele, die eigene FLEXe schreiben, unter welchen dann kaum
einer sein wird, in dem hierarchische Untersätze Ärger machen könnten.

(Zu den Quellen: Eine Änderung wäre nötig in der Funktion RAdr() in
a99.cpp, wo jetzt in jedem Fall zuerst im aktuellen Teilsatz (Haupt-
oder Untersatz) gesucht wird, bei Negativerfolg aber sofort auch
in den nachfolgenden Untersätzen, ohne daß über den wahren Sachverhalt
etwas rückgemeldet oder geflaggt würde.)


Aber noch ein Irritat, und das geht wirklich gar nicht:
Wenn ein FLEX mit einem "sub"-Befehl auf einen Untersatz schaltet, dann
bleibt diese Schaltung gültig, bis ein neuer Satz geladen wird oder
ein anderer Sub-Befehl kommt. D.h. ein nachfolgender FLEX auf demselben
Satz (bevor ein anderer geladen wird) findet #41 nicht, wenn das Feld
nicht in dem betr. Unterfeld oder weiter unten steht.
Der Lösungsfindungsprozeß wurde eingeleitet.

B.E.





Mehr Informationen über die Mailingliste Allegro