C16_ProcCompile
C16_ProcCompile(const vPHANDLE aInstHdl, vCHAR* aProcName, const vCHAR* aLangID, vC16_CompileInfo* aInfoBlock) : vERROR
Prozedur übersetzen
Details
- aInstHdl: Instanz-Handle
- aProcName: Name der zu übersetzenden Prozedur
- aLangID: Sprach-ID oder
NULL - aInfoBlock: Informationsstruktur oder
NULL - Resultat: vERROR Fehlerwert
- Siehe: Befehle der Programmierschnittstelle , C16_ProcCall()
Mit dieser Anweisung wird die in (aProcName) übergebene Prozedur übersetzt. Im Parameter (aInstHdl) wird der von C16_InitInstance() bereitgestellte Instanz-Handle, der in der Funktion C16_OpenArea() zum Öffnen der Datenbank verwendet wurde, übergeben.
Mit dem Argument (aLangID) kann die Sprache für Fehlermeldungen definiert werden. Folgende Werte können abgegeben werden:
"DE": Deutsch"EN"/NULL: U.S. Englisch"*U": Systemsprache des aktuellen Windows-Benutzers
Bei Fehlern wird, sofern übergeben, eine Struktur vom Typ vC16_CompileInfo gefüllt. Die Struktur hat den folgenden Aufbau:
typedef struct
{
vERROR ErrorCode;
vINT ErrorLine;
vINT ErrorColumn;
vCHAR ErrorProcSource[64];
vCHAR ErrorLineText[512];
vCHAR ErrorCodeText[128];
}
vC16_CompileInfo;
Die Struktur sollte zuvor mit memset geleert werden.
- Komponente: Beschreibung
ErrorCode: Fehlerwert (Identisch mit Rückgabewert)ErrorLine: Nummer der Fehlerzeile im QuelltextErrorColumn: Fehlerposition in der ZeileErrorProcSource: Name der Quelltextprozedur (kann vom Namen der übersetzten Prozedur abweichen, wenn eine Prozedur mit der Include -Anweisung eingebunden wird)ErrorLineText: Inhalt der Quelltextzeile in der der Fehler aufgetreten istErrorCodeText: Fehlertext
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+ ).
Der Rückgabewert vom Typ vERROR beinhaltet entweder 0 (kein Fehler) oder einen negativen Fehlerwert (siehe Fehlerwerte ). Ist der Rückgabewert gleich C16ERR_INSTANCE_HDL_INVALID, ist der übergebene (aInstHdl) ungültig.
Fehlercodes zwischen -1104 und -1154 entsprechen den Fehlercodes zwischen -104 und -154, die unter Fehlermeldungen beim Übersetzen mit dem Editor beschrieben sind.
Beispiel:
memset(&tCompileInfo, 0, sizeof(tCompileInfo));
tErr = C16_ProcCompile(tInstHdl, tProcName, "DE", &tCompileInfo);
printf("C16_ProcCompile (result=%d)\n",tError);
printf("Compile error (%d / %s)\n", tCompileInfo.ErrorCode, tCompileInfo.ErrorCodeText);
printf("Line/Column (%d/%d)\n", tCompileInfo.ErrorLine, tCompileInfo.ErrorColumn);
printf("Line (%s)\n", tCompileInfo.ErrorLineText);
printf("Proc (%s)\n", tCompileInfo.ErrorProcSource);