Zum Hauptinhalt springen

C16_ProcCompile

C16_ProcCompile(const vPHANDLE aInstHdl, vCHAR* aProcName, const vCHAR* aLangID, vC16_CompileInfo* aInfoBlock) : vERROR

Prozedur übersetzen

Details

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;
info

Die Struktur sollte zuvor mit memset geleert werden.

  • Komponente: Beschreibung
  • ErrorCode: Fehlerwert (Identisch mit Rückgabewert)
  • ErrorLine: Nummer der Fehlerzeile im Quelltext
  • ErrorColumn: Fehlerposition in der Zeile
  • ErrorProcSource: 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 ist
  • ErrorCodeText: Fehlertext
info

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);