[Allegro] Trick 64: 1. FLEX ohne Db? / 2. Jedem seinen _start.flx

Bernhard Eversberg ev at biblio.tu-bs.de
Mi Jan 9 14:09:49 CET 2008



Trick 64:  FLEXiermaschine
            1. FLEX ohne Datenbank?
            2. Jedem User seinen _start.flx

Aufgabe: Ein FLEX, der mit einer Datenbank gar nichts zu tun hat,
          soll erledigt werden - geht das ohne a99? (Z.B., ein
          Kalenderblatt erstellen als RTF-Datei, oder eine Zins-
          berechnung für einen Kredit...)

Warum: Mit FLEX kann man z.B. dank der Dateifunktionen viel Nützliches
        programmieren, was mit der Datenbank gar nichts zu tun hat!
        Das müßte sich doch ausnutzen lassen, um sonstwas machen zu
        können!? Es sei denn, man hat z.B. Perl gelernt, versteht sich.
        Wer das kann, braucht Ziffer 1. nicht.
        Ziffer 2. kann dagegen überall virulent werden, wo es diffizile
        Unterschiede zwischen Anwendern gibt.

Lösung:
Gleich vorweg: Ohne Datenbank geht es nicht, a99 kann nicht als
FLEXiermaschine völlig losgelöst von jeder Datenbank arbeiten.
Das macht aber nichts - jeder HAT ja eine Datenbank: warum nicht die
DemoBank für diesen Zweck als "Strohmann" benutzen?! Sie muß nur
da sein, ihr Inhalt ist egal und wird nicht verändert.

Es zeigt sich überraschenderweise, daß man mit der Lösung zugleich
das ganz andere Problem erschlägt: Wie kann man jedem Nutzer
seinen eigenen  _Start.flx  geben?

Der Trick ist drei- bzw. zweiteilig:

1. Am Ende des _start.flx diese 3 Zeilen anhängen:

var "myjob.flx"
fsize
if >0 exec myjob

2. Den FLEX, der eigentlich zu erledigen ist, auf dem Startverzeichnis
    ablegen und  myjob.flx  nennen

3. Ans Ende des  myjob.flx  den Befehl  STOP  setzen.


Wenn es  myjob.flx  nicht gibt, startet die Datenbank normal und es
kommt wegen der Prüfung mit  fsize  auch keine Fehlermeldung.

Wer auf einem anderen Verzeichnis startet und dort keinen  myjob.flx
zu liegen hat, merkt nichts. D.h. die drei Zeilen im _start.flx  haben
keine unerwünschte Nebenwirkung.

Zweittrick: (und nur dieser ist auch für Perlianer interessant)
Wenn Punkt 3. entfällt, ist der  myflex.flx  praktisch eine
individuelle Erweiterung des  _start.flx !!! Denn die Datenbank
arbeitet dann normal.

Hinweis zu Ziffer 1.:
Wer eine avanti-Installation auf seinem PC hat, kann auch avanti-cl
zum Abarbeiten von datenbankfremden FLEXen entzweckfremden:
Der FLEX muß nur eine entsprechende Endzeile mit @ haben, z.B.
@ DB=avdemo ID=opac/OPAC
und dann gibt man nur den Befehl   avanti-cl <myflex.flx
Wobei die Unterschiede zwischen a99 und avanti zu beachten sind!
Der Vorteil ist: avanti-cl braucht weniger Zeit.

Hinweis zu Ziffer 2.:
Wenn man will, daß jeder Nutzer einen ganz individuellen  _start.flx
hat, dann ginge das auch so, daß man keinen solchen auf
DbDir, ProgDir und ProgDir\FLEX hat, sondern jeweils den ganz
individuellen auf dem Arbeitsverzeichnis des Nutzers.
Besser wäre gewiß, der Name "_start.flx" wäre nur default und
man könnte in der INI-Datei einen Namen vorgeben.
Kommt auf den Zettel, mit H-Faktor 2.





Mehr Informationen über die Mailingliste Allegro