ProcCompile
ProcCompile(alpha1) : int
Prozedur zur Laufzeit übersetzen
Details
- alpha1: Name der Prozedur
- Resultat:
intFehlerwert - Siehe:
ProcCacheClear (), System
Mit dieser Anweisung wird die in (alpha1) übergebene Prozedur übersetzt. Als Resutat wird der Fehler beim Übersetzen zurückgegeben. Bei der Rückgabe von _ErrOk konnte die Prozedur übersetzt werden. Der Fehlerwert steht ebenfalls in der Eigenschaft ErrCode zur Verfügung. Er kann mit einer der _ErrCpl...-Konstanten verglichen werden.
Ist bei der Übersetzung ein Fehler aufgetreten, können weitere Informationen über folgende Eigenschaften des System -Objekts ermittelt werden:
ErrCode: FehlerwertErrText: FehlertextErrProc: Name der übersetzten ProzedurErrSource: Name der Quelltextprozedur (kann vom Namen der übersetzten Prozedur abweichen, wenn eine Prozedur mit der Include -Anweisung eingebunden wird)ErrSourceLine: Quelltextzeile in der der Fehler aufgetreten istErrLine: Nummer der Fehlerzeile im QuelltextErrPos: Fehlerposition in der Zeile
Unter folgenden Umständen kann eine Prozedur nicht übersetzt werden:
- Die Prozedur enthält ein
with-Konstrukt. - Die Prozedur wird gerade ausgeführt oder ist von einem anderen Client gesperrt.
- Die Prozedur ist keine A+ Prozedur (siehe
@A+).
Falls die übersetzte Prozedur globale Datenbereiche (siehe global) enthält, dürfen diese nicht verändert werden, da die Änderungen nicht in die Runtime-Umgebung übernommen werden können und somit die Gefahr von Laufzeitfehlern bei Prozeduren, die diese Datenbereiche verwenden entsteht.
Falls Elemente der Prozedur geändert werden, die von anderen Prozeduren verwendet werden (andere Argumente bei Funktionen, Modifikationen von globalen Datenbereichen oder ähnliches) kann dies zu Laufzeitfehlern oder im ungünstigsten Fall zum Beenden des Clients führen. Dies gilt auch für alle anderen aktiven Clients der Datenbank, sofern diese die übersetzte Prozedur verwenden.
Sofern die übersetzte Prozedur auf anderen Arbeitsstationen aufgerufen wird, müssen in diesen Clients eventuell vorhandene ältere Codefragmente der übersetzten Prozedur aus dem Prozedurcache entfernt werden. Andernfalls können Laufzeitfehler enstehen. Dies wird mit dem Befehl ProcCacheClear () durchgeführt.