[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