[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