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.