![]() Home Grundsätzliches Installation Konfiguration Erste Schritte Laufzeitschalter Textdateien Systemfunktionen Tabellenfunktionen Indexfunktionen Volltext-Indizierung Memos und Blobs Semaphoren-Konzept Support Datenbank Einführungskurs |
Laufzeitschalter der tdbengineÜber Laufzeitschalter wird das Verhalten der tdbengine gesteuert. Mit Ausnahme von AK werden alle Schalter erst zur Laufzeit aktiviert und gelten grundsätzlich global.Setzen und AuslesenZum Setzen eines Schalters bestehen zwei Möglichkeiten:
.ec 1, nb 0 Da in der nächsten Hauptversion (6.3.x) die Zeilenstruktur in EASY-Programmen aufgehoben wird, sollte von dieser Art der Schaltersetzung nicht mehr Gebrauch gemacht werden. An dessen Stelle tritt die Funktion SetPara SetPara(Schalter : STRING) : REAL Hier werden die Schalter als String übergeben (ohne führenden Punkt) - ebenfalls durch Komma getrennt: SetPara('ec 1, nb 0') Der Rückgabewert der Funktion ist immer 0, bei einem illegalen Befehl wird ein Laufzeitfehler ausgelöst. Der Wert eines Schalters kann mit der Funktion GetParam abgefragt werden. GetPara(Schalter : STRING) : REAL Beispiel: GetPara('ec') -> 0|1 (je nachdem)
Alle Schalter in der Übersicht ...
... und im Detail
Dieser Schalter wird nur bei dynamischen Tabellenauswertungen verwendet,
also beispielweise bei FindAndMark oder .SUB, wenn hier auf Datenfelder
via Feldbezeichner Bezug genommen wird. Es handelt sich um ein recht altes
Relikt aus DOS-TDB-Zeiten. Im Normalfall sollte man es bei der Grundeinstellung
(Abkürzungen verboten) belassen.
ec Bei allen kritischen Fehlerzuständen erzeugt die tdbengine einen Laufzeitfehler mit einem entsrpechenden Eintrag in der Datei bin/error.log. Erfolgt der Fehler bei einer Variablenzuweisung, so kann der Laufzeitfehler abgefangen werden, indem der Schalter ec 1 gesetzt wird. Die Fehlerbehandlung muss dann vom Programm übernommen werden. Die Behandlung der Schalter als Laufzeitfunktion (und nicht etwa als Flag zur Codeerzeugung) bedingt, dass bei einer lokalen Verwendung der Schalter explizit zurückgesetzt werden muss. Beispiel:
Hier wird das Zurücksetzen des Schalters nie erreicht, und so bleibt
im restlichen Programm der Schalter gesetzt, bis er irgendwo eventuell
wieder zurückgesetzt wird. Deshalb die bessere Lösung:
In diesem Beispiel ging es nur um die Positionierung des Schalters. Zur Fehlerbehandlung selbst stellt EASY die folgenden Funktionen zur Verfügung: TDB_LastError liefert den Fehlercode
Zudem wird folgenden Systemvariable gesetzt (hier ist auf Groß/Kleinschreibung zu achten) : TDB_ErrorMsg liefert den (rückübersetzten) Ausdruck, in dem der Fehler auftrat Hier nun eine Beispiel mit Fehlerbehandlung:
em Mit diesem Schalter wird die Behandlung der Maskenzahl bei der Volltextindierung
und -suche gesteuert. Näheres siehe in der Dokumentation zur Volltextsuche.
de Damit wird die Reihenfolge der Datensätze der Primärtabelle bei (Sub-)Reports festgelegt. Normalerweise ist die Reihenfolge aufsteigend. Mit SetPara('de 1') kann auf absteigende Reihenfolge umgeschaltet werden. Beispiel: erst aufsteigend ...
... dann absteigend
nb Um bei einer Endlosschleife (oder einem sonstwie irrlaufenden Programm) eine einfache Abbruchmöglichkeit (auch für Nicht-Roots) zu haben, wird jede Sekunde während des Programmlaufs das Vorhandensein einer Datei mit dem Namen 'abort' im Verzeichnis der tdbengine geprüft. Ist eine solche Datei vorhanden, wird das Programm abgebrochen und (falls die Rechte dazu ausreichen) die Datei gelöscht. Während der Testphase eines Programm sollte dieser Schalter auf 0 (Vorgabe) gesetzt bleiben. Wenn aber ein Programm ausgetestet und Endlosschleifen ausgeschlossen sind, kann der Schalter auf 1 gesetzt werden, was zu einer deutlich spürbaren Performancesteigerung führt. Hinweis: Der Abbruch mittels "abort" funktioniert nicht bei der Ausführung der Systemfunktionen, also beispielsweise während eines Indizierungslaufs. Tipp: Falls sich die tdbengine "komisch" verhält
und längere Programme ohne Fehlermeldung abbricht, so kann dafür
eine "abort"-Datei verantwortlich sein, die nicht gelöscht werden
kann (weil die Rechte des anonymen http-users nicht ausreichen odes es
sich um ein Verzeichnis handelt)
nv Die Stellung dieses Schalters wird nur im Zusammenhang mit der Standard-Funktion VAL ausgewertet. Diese Funktion interpretiert das übergebene String-Argument als EASY-Ausdruck und berechnet dessen Wert. In der eingeschränkten Version (Schalterstellung 1 = Vorgabe) werden nur gültige Zahlenkonstanten ausgewertet. Alle anderen Ausdrücke werden mit dem Fehler "illegale Zahlenkonstante" zurückgewiesen. In der erweiterten Version (Schalterstellung 0) sind hingegen beliebige Ausdrücke zugelassen. Dies kann zu einem massiven Sicherheitsproblem werden, wenn ungefilterte CGI-Variblen an die Funktion VAL übergeben werden. Beispiel: ...
Erfolgt der Programmaufruf mit ...?recno=rm+-r+*, so erhalten Sie mit "nv 1" einen Programmabbruch mit Fehlermeldung, mit "nv 0" jedoch eine Katastrophe. |