[Allegro] More Joy of FLEX

Bernhard Eversberg ev at biblio.tu-bs.de
Mo Jun 20 08:26:21 CEST 2005


More Joy of FLEX
----------------
Das Vergnuegen am FLEXen wurde durch V25.5 weiter gesteigert. Auf dem 
Expertentreffen erhielten die teilnehmenden FLEXperten Einblicke in neue 
Funktionen und Techniken. Aufgewertet wurde auch die Dokumentation,
jetzt FLEXikon genannt.
In der DV-Welt gibt es keine Vollkommenheit, wie wir laengst wissen.
So wunderte es keine(n), als neue Wünsche aufkeimten. Einer, der schon
lange in der Luft hing, ist der nach längeren Variablennamen. Ein
anderer heisst "echte Unterprogramme".
Kollege Berger formulierte zu diesen Dingen einen Feature Request:
http://www.gymel.com/bugzilla/show_bug.cgi?id=397

Umgehend setzten bei uns die Denkprozesse ein und es wurden auch schon
Loesungsansaetze gefunden:

1. Lange Variablennamen
    Die wird es geben! Man wird mit einem vorgesetzten $ jeden
    beliebigen Namen verwenden koennen, um Inhalte aufzubewahren.
    Besonderheit: Beginnt der Name mit einem Grossbuchstaben, bleibt er
    fuer die gesamte Sitzung gueltig, sonst nur innerhalb des FLEXes.
    Man wird sogar Variablen von Sitzung zu Sitzung weitergeben koennen.
    Die $-Variablen gelten nur in FLEXen, sie sind nicht in den
    Parametern zugaenglich. Die #u-Variablen bleiben in allen
    Aspekten davon unberuehrt. (siehe aber unten: Besonderer Tip)

2. Echte Unterprogramme
    Es ist nicht machbar, einen FLEX aus einem anderen heraus aufzu-
    rufen und anschliessend im aufrufenden FLEX fortzufahren! Das geht
    einfach deshalb nicht, weil ein FLEX kein Objekt ist, sondern ein
    nicht-rekursives Unterprogramm. Was aber gehen wird:
    include <dateiname>
    Dann wird die Datei <dateiname> beim Einlesen der FLEX-Datei an der
    Stelle eingefuegt, wo der include-Befehl steht. Dieselbe Funktion
    also, die es beim Export mit dem t-Befehl gibt.
    Tip: Statt der Unterprogrammtechnik kann man auch mehrere FLEXe so
    organisieren, dass sie sich sukzessive mit exec starten. Also
    statt eines FLEX mit dem Aufruf eines anderen in der Mitte dann
    drei FLEXe hintereinander. Parameteruebergabe per #u-Variablen oder
    kuenftig mit den "grossen" $-Variablen.

Mehr dazu voraussichtlich schon in dieser Woche, denn die M-Stufen 
dieser Probleme sind nicht besonders hoch (d.h. die zu knackenden Nuesse 
nicht besonders hart). Testversion evtl. schon uebermorgen...


SonderTip
---------
Es gibt schon jetzt und schon lange weitere Moeglichkeiten, Variable
zu speichern, die noch so gut wie unbekannt sind!

1. Phrasen
    Diese koennen auch als Variable herangezogen werden:
      phrase 17 Text   belegt Phrase 17 mit Text
      var ... v17 ...  verwendet Phrase 17 in einem cstring

2. Einbuchstabige #u-Variablen! (Warum hat das noch keiner gemerkt?)
    Fuer alle Konfigurationen funktionieren nicht nur #uxy, sondern
    auch  #ux  ohne y. x kann dabei jedes beliebige Zeichen sein
    ausser 1 und 2.
    (Denn #u1 und #u2 sind von alters her Sonderfelder, die zum Datensatz
    gehoeren und immer vor der #00 stehen.)
    In Standard-FLEXen kommen solche Variable nicht vor und werden auch
    in Zukunft nicht verwendet. Sie sind also komplett frei fuer
    den Bedarf der Anwender.
    Uebrigens funktionieren sie auch in Parametern, d.h. man kann
    schreiben
    #40 =v
    und hat dann den Namen des Verfassers in  #uv
    (Ist natuerlich skurril, dass die Bedeutung der Gleichsetzung hier
    umgekehrt ist wie sonst ueberall im Programmiererleben)

MfG B.E.

-- 
Bernhard Eversberg
UB Braunschweig
Tel. 0531 391 5026
E-Mail: b.eversberg at tu-bs.de



Mehr Informationen über die Mailingliste Allegro