[Allegro] Trick 31: FLEXe verschachteln

Heinrich Allers allers at t-online.de
Mo Dez 18 22:58:46 CET 2006


Hallo Herr Fischer:

> ... ich verstehe die verwendete Flex-Sprache noch nicht ganz, weil ich
> einmal wieder die Befehlsbeschreibungen nicht finde. Den
> include-Befehl habe ich in meiner Dokumentation (v.26.8) zunächst nicht
> gefunden, weil er nicht in der alphabetischen Reihenfolge aufgeführt
> ist. 

Es handelt sich bei 'include' ja auch um keinen 
normalen Flexbefehl, den man so ohne weiteres 
unter die Flexbefehle alphabetisch einordnen könnte, 
sondern um das, was hier "Texteinschlußbefehl" 
genannt wird und der deshalb etwas außer der Reihe 
steht.

Um solch Sachen zu finden, benutze ich oft und mit 
großem Erfolg das Füllhorn, gehe dann auf "Letzte 
Neuerungen (ab 2000)" und suche dann dort, hier 
also nach "include" - und schon bin ich fündig!

> Muss das so sein? 

Ja, es kann nicht anders sein, bei den bekannten 
Personalkapazitäten, die hinter Allegro stehen und 
bei dem Komplexitäts- und Differenziertheitsgrad, 
den dieses Programmsystem heute erreicht hat und 
der mit Hilfefunktionen und Dokumentation versorgt 
sein will!

> > 2. Rückaufruf des ersten FLEXes
> ...
> > zuerst die Variable #urC löschen!
> > #urC
> > ins #urC // iV-Inhalt in #urC speichern
> > var #urC // pruefen, ob das mit "jump" anfaengt
> > if "jump" var #urC(b"jump ");jump
> > ... // beliebiger Inhalt
> > exec zweit.flx first;weiter
> > :weiter
> 
> 1. Was bewirkt
> #urC

Die Anwendervariable wird leergefegt, mit dem 
zusätzlichen Effekt, daß sie hinterher auch nicht 
mehr existiert; die Flexbefehlabfolge

if #urC mes Anw.-Var. #urC existiert
if not #urC mes Anw.-Var. #urC existiert nicht

ergäbe die Meldung "Anw.-Var. #urC existiert nicht". 

Ergänzendes Beispiel:

#urCDas Jahr geht zu Ende

bewirkt, daß die Anwendervariable #urC mit dem 
Inhalt "Das Jahr geht zu Ende" besetzt ist.

> ...
> 2.
> Meine Vorstellung ist:
> ins #urC: iV in #urC schreiben
> var #urC: #urC in iV schreiben
> (Mir ist das Verhältnis von "interner Variabler" zu > dem Allegro-Konzept des
> Arbeitstexts nicht ganz klar.)

Ich würde sagen, daß die Rolle, die der _Arbeitstext_ 
im Bereich der klassischen Exportparametrierung 
spielt, vergleichbar ist mit der, die die _interne 
Variable_ (iV) in der Flexwelt spielt.

> So naiv interpretiert würde
> ins #urC
> var #urC
> iV in #urC und #urC in iV schreiben.
> Wofür ist das gut?

'ins #urC' ist gut dafür, den aktuellen Inhalt der iV 
dauerhaft in der Anwendervariablen #urC 
aufzubewahren und die iV frei für neue Besetzungen 
zu haben.

'var #urC' schüttet den Inhalt der 
Anwendervariablen #urC in die iV zurück.

> Und was steht eigentlich nach dem insert-Befehl in der iV?

Das Gleiche, was vorher drinstand - bis in die iV 
etwas Neues hineingeschüttet wird (mit 'ins ...'). Der 
schlichte Befehl 'ins #urC' ändert nichts am Inhalt 
der iV.

> 3.
> if "jump" var #urC(b"jump ");jump
> bewirkt, dass zu <Marke> gesprungen wird, wenn die iV "jump <Marke>"
> enthält.
> Sollte da sicherheitshalber auf
> if "jump "
> geprüft werden, weil auch b"jump " benutzt wird?

Das ist schnuppe; Sie _müssen_ nicht auf 'if "jump "' 
prüfen, denn der Flexprogrammierer würde sich 
selbst ziemliche Stolpersteine in den Weg legen, 
wenn er #urC mit "jumpstart" besetzen würde.

Aber gut, statt

if "jump" var #urC(b"jump ");jump

können Sie auch

if "jump " var #urC(b"jump ");jump

schreiben, aber auch

if "jump" var #urC(b"jump") " ";jump 

oder

if "jump " var #urC(b"jump") " ";jump 

Der Wege gibt's da viele!

> 4. Was ist 
> exec zweit.flx first;weiter
> für eine Konstruktion? Das sieht
> aus als würde das "first;weiter" in dem #urC von zweit.flx ankommen,

Ja, so ist es. Die Zeichenfolge "first;weiter" wird via 
Aufruf von zweit.flx dieser Flexdatei mitgegeben und 
ist dort zu Beginn als Inhalt der iV verfügbar.

> wieso?

Die Möglichkeit der Übergabe von Zeichenfolgen 
beim Aufruf von Flexdateien ist vor nicht sehr langer 
Zeit zur Freude von vielen unter uns eingeführt 
worden. In der Dokumentation steht's drin, aber ich 
habe die Stelle jetzt auf die Schnelle auch nicht 
gefunden.  :-((


Mit den besten Grüßen:

Heinrich Allers

allers at t-online.de * http://www.h-allers.de
* Ich bin ein Integrationsverweigerer! *

-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://bibservices.biblio.etc.tu-bs.de/pipermail/allegro/attachments/20061218/858fc355/attachment.html>


Mehr Informationen über die Mailingliste Allegro