[Allegro] Fortbildung 13.3: Wir machen eine neue FLEX-Datei

Bernhard Eversberg ev at biblio.tu-bs.de
Mo Jun 20 07:49:13 CEST 2005


                                                              14-03-2005
Fortbildungskurs                                             20-06-2005

    13  Sonstige Fragen
    13.3  Wir machen eine neue FLEX-Datei

[Dieser Punkt war schon knapp in Lektion 9.2 angesprochen worden, jetzt
machen wir das viel ausführlicher. Zur Wiederholung:  h flexw  geben]

Nachdem wir nun einigermaßen wissen, was FLEX eigentlich ist, steht
vielleicht mancher vor den Fragen: "Aber wie kann ich denn eine eigene
FLEX-Datei machen, und wie kann ich sie dann in meine Arbeit
integrieren?"
Diese Lektion soll deshalb zeigen, Schritt für Schritt, wie man es
anstellt.
Um ein wirklich brauchbares Beispiel zu haben, nehmen wir mal diese
Aufgabe: Ein FLEX soll die momentane Ergebnismenge durcharbeiten
und dabei in jeden Datensatz ein Feld #31 mit einem neuen Schlagwort
einfügen. Dabei kann es zwei Varianten geben:
A) Jeder Satz bekommt dasselbe Schlagwort
B) Bei jedem Satz wird der Nutzer nach einem neuen SW gefragt.

Hier das Rezept, ausführen und testen am besten an der DemoBank!
Die FLEXe sind hinterher auch an der eigenen Datenbank einsetzbar,
wenn man die Datei im eigenen Startverzeichnis speichert, was
automatisch der Fall ist. (Oder im FLEX- oder Programmverzeichnis,
falls man dort das Recht hat.) Empfehlung: ins Datenverzeichnis legen,
wenn der FLEX im Netz für alle ausführbar sein soll.

1. Neue Datei anlegen:
    Alt+h (Füllhorn öffnen)
    Klicken auf "Neue Textdatei schreiben" (Mitte rechts)
    Anzeigefeld wird leer und breit. (Mit F11 schmal machen, wenn Sie
    wollen. Das hat keine Wirkung auf den Inhalt!)

2. In das Anzeigefeld hinein schreiben wir den Text des neuen FLEXes.
    Kopieren Sie die folgenden Zeilen von hier weg in das Anzeigefeld:
    (Alle Zeilen, die zwischen den Strichen stehen! Tip: Zuerst die
    Schreibmarke an den Anfang setzen, dann Shift-Taste runter und fest-
    halten, Pfeil-nach-unten-Taste so lange, bis man bei der unteren
    Zeile mit ---- angekommen ist, dann Strg+c - dann ist der Inhalt in
    der Zwischenablage! In das Anzeigefeld klicken und Strg+v.)

   ---------------------------------------------------------------------
   SW-NEU.FLX : Neues Schlagwort in jeden Satz der Erg.Menge einfuegen
   2005-03-14  Variante A: Dasselbe neue SW fuer alle Saetze

   Zuerst das gewuenschte neue Schlagwort abfragen:
ask Wie soll das Schlagwort lauten?
if "" end
   und in #uSW speichern
ins #uSW
   Gibt es ueberhaupt eine Erg.Menge? Wenn nein -> :keine
if empty jump keine
   Ersten Satz der Erg.Menge laden
first
   Folgende Schleife wird fuer jeden Satz ausgefuehrt:
:schleife
   Schlagwort in #31 einsetzen, aber wenn da schon was steht,
    mit "; " hinten anhaengen!
if #31 var #31 "; " #uSW
if not #31 var #uSW
ins #31
   und Satz wieder speichern:
put
   naechsten Satz laden:
next
   Wenn es noch einen gab, dann Sprung nach :schleife
if yes jump schleife
   Sonst ist Schluss:
jump schluss

:keine
   Keine Erg.Menge, dann nur den momentanen Satz verarbeiten
   Neues SW an #31 anhaengen
if #31 var #31 "; " #uSW
if not #31 var #uSW
ins #31
   und Satz wieder speichern
put

:schluss
   Den momentanen Datensatz noch neu anzeigen
show rec
disp
mes Erledigt!
   --------------------------------------------------------
   --- >>>  Variante B unten als Anhang! <<<---------------

3. Diesen Text speichern
    Alt+s oder den Button [Speichern], dann
    den Namen  sw-neu.flx  im Feld "Dateiname" eingeben

4. Den FLEX ausprobieren
    Im Schreibfeld eingeben:
    X sw-neu
    Auf diese Weise kann man jede FLEX-Datei jederzeit starten!
    (Ob dabei immer was sinnvolles passiert, das kommt drauf an...)

5. Modifizieren (>>SuperTip!<<)
    Diese FLEX-Datei kann jetzt benutzt werden, um andere neue FLEXe
    zu bauen! Denn der Hauptteil, wo die Aktion eigentlich passiert,
    das sind nur die Zeilen:

    if #31 var #31 "; " #uSW
    if not #31 var #uSW
    ins #31
      und Satz wieder speichern
    put

    Nur diese Zeilen braucht man zu ändern, wenn man eine andere
    Aktion mit einer Ergebnismenge machen will! Alles andere kann
    genauso übernommen werden.

6. Wie macht man es, das Modifizieren? So:
    h sw-neu.flx   eingeben, Text erscheint
    Aenderungen ausfuehren
    Mit  Alt+s  wieder speichern, dabei den Namen ändern, wenn es eine
    neue Variante sein soll - die alte Datei wäre ja sonst weg!

7. FLEX auf einen Flip-Button legen
    a) Nur für die Dauer der Sitzung
       Eingeben:   x flip 1&1: SW-NEU=X sw-neu
       Schon kann man mit Alt+1  oder Druck auf Button 1 den neuen
       FLEX starten
    b) Für die längere Dauer: Einbau in die Datei _start.flx
       Eingeben:  h _start.flx

       Man sieht, daß es da schon acht Flip-Befehle gibt.
       Einen davon muß man sich aussuchen, den man nicht braucht und
       durch den eigenen ersetzen kann. Sagen wir, die Nummer 3.
       Dann ersetzen wir die Zeile "flip 3 ..." mit der folgenden;
       flip 3&3: SW-NEU=X sw-neu
       Auf dem Button 3 wird dann stehen:  3: SW-NEU
       und die 3 wird unterstrichen sein, d.h. mit ALt+3 ausloesbar.

8. Einbau in eine RTF-Hilfedatei
    8.1. Dazu legen wir wieder eine neue Datei an, wie oben Punkt 1
    8.2. Folgendes hineinschreiben: (was zwischen den Strichen steht)

   ---------------------
Eigenes Menü

Neues Schlagwort einsetzen 
Jeden Datensatz der Ergebnismenge mit einem neuen Schlagwort versehen
   ---------------------

    8.3. Dann die drei Wörter "Neues Schlagwort einsetzen" markieren
    8.4. Rechte Maustaste, Funktion "Flip"
    8.5. Es wird eine Zeile unten erscheinen, die so aussieht;
?Neues Schlagwort einsetzen=
    8.6. Hinter das = schreibt man   X sw-neu
    8.7. Mit Alt+s speichern, und zwar unter dem Namen  e-menu.rtf
    8.8. Aufrufen mit  h e-menu
    Wenn der Flip nicht funktioniert:
    8.9. Im Schreibfeld eingeben   Dos edit e-menu.rtf
       Man sieht dann vielleicht eine Zeile, die so aussieht;
\par \f0 ?Neues Schlagwort einsetzen=\f1 X e-menu
       Sie muß aber so aussehen:
\par ?Neues Schlagwort einsetzen=X e-menu
       Nehmen Sie die überflüssigen Elemente \f0 und \f1 heraus,
       dann mit Alt+d und "Beenden" den Text wieder speichern.
    Wenn das geschafft ist, können Sie in Zukunft den neuen FLEX immer
    über dieses Menü aufrufen, also  h e-menu  eingeben, dann klicken.
    Das neue Menü ist eine RTF-Textdatei. Die können Sie mit weiteren
    Menüpunkten nach demselben Rezept immer weiter ausbauen:
    8.10.  h e-menu.rtf  eingeben (also mit .rtf)
         Dann sieht man auch die Flip-Zeilen mit dem ? am Anfang, die
         man nicht sieht, wenn man nur  h e-menu  eingibt
    8.11.  Neue Menüpunkte einbauen
    8.12.  Schritte 3.-6. für jeden neuen Menüpunkt ausführen
    8.13.  Schritte 7.-9. zum Testen ausführen


Und jetzt wollen Sie dasselbe machen, aber nicht mit #31, sondern mit
einer anderen Kategorie? Das wäre eine gute Übung! (siehe Punkt 6.)
-----------------------------------------------------------------------

ANHANG
------
Variante B: Suum cuique : Jedem Satz sein eigenes Schlagwort

   ---------------------------------------------------------------------
   SW-NEUB.FLX : Neues Schlagwort in jeden Satz der Erg.Menge einfuegen
   2005-03-14  Variante B: Anderes SW fuer jeden Satz

   Gibt es ueberhaupt eine Erg.Menge? Wenn nein -> :keine
if empty jump keine
   Ersten Satz der Erg.Menge laden
first
   Folgende Schleife wird fuer jeden Satz ausgefuehrt:
:schleife
   Den Satz anzeigen
sho rec
disp
   Das gewuenschte neue Schlagwort abfragen:
   (Wenn #uSW schon belegt, erscheint es als Vorgabe)
ask Wie soll das Schlagwort fuer diesen Satz lauten?=#uSW
if "" end
   und in Hilfsvariable #uSW einfuegen
ins #uSW

   Schlagwort in #31 einsetzen, aber wenn #31 schon besetzt, dann
     das neue hinten mit "; " anhaengen
if #31 var #31 "; " #uSW
if not #31 var #uSW
ins #31
   und Satz wieder speichern:
put
   naechsten Satz laden:
next
   Wenn es noch einen gab, dann Sprung nach :schleife
if yes jump schleife
   Sonst ist Schluss:
jump schluss

:keine
   Das gewuenschte neue Schlagwort abfragen:
ask Wie soll das Schlagwort fuer diesen Satz lauten?=#uSW
if "" end
   und in #uSW speichern
ins #uSW
   dann an #31 anhaengen
if #31 var #31 "; " #uSW
if not #31 var #uSW
ins #31
   und Satz wieder speichern
put

:schluss
   Den momentanen (also letzten) Datensatz noch neu anzeigen
show rec
disp
mes Erledigt!

   --------------------------------------------------------

Wenn man beide FLEXe braucht, muß man ihnen natürlich verschiedene
Namen geben. Und in den Punkten 7. und 8. jeweils den richtigen
Namen verwenden.

Übung: Denken Sie sich weitere Varianten aus! Z.B., eine Kategorie
zu beseitigen oder ihr eine andere Nummer zu geben.

 >>SonderTip: Das erste Wort einer FLEX-Zeile ist immer ein Befehlswort
(Ausnahmen: Sprungziele! Die fangen mit : an. Und die eingerückten
Zeilen sind nur Kommentare.)
Um zu einem Befehl die Doku zu finden:   h xa   geben und den
Befehl auf der Liste anklicken. (Befehlswörter sind oft verkürzt auf
die ersten drei oder vier Buchstaben.)





Mehr Informationen über die Mailingliste Allegro