====== ErrorHandle ====== Möchte man keine ausgefeilte (ESQL/C-)Fehlerbehandlung programmieren - für sehr kleine Programme durchaus sinvoll - kann ein einziger ErrorHandler (für alle Fehlersituationen) definiert werden. Um diesen ErrorHandler den ESQL/C Librarys bekannt zu machen, reicht folgende Zeile (z.B. am Anfang der main()-Funktion): EXEC SQL WHENEVER ERROR CALL errorhandler; Für mehr Flexibilität definieren wir vorher die "errorhandler"-Funktion wie folgt: #define errorhandler() _errorhandler_f_l(__FILE__, __LINE__) Die eigentliche "errorhandler"-Funktion kann dann in etwa so aussehen: #define MSG_LEN 256 void _errorhandler_f_l (char * datei, int zeile) { char meldung[MSG_LEN]; char meldung1[MSG_LEN]; int i; printf("ERROR in file %s, line %d:", datei, zeile); rgetlmsg(SQLCODE, meldung, MSG_LEN, &i); sprintf(meldung1, "SQL Error %d: %s", SQLCODE, meldung); printf(meldung1, sqlca.sqlerrm); if (sqlca.sqlerrd[1]) { rgetlmsg(sqlca.sqlerrd[1], meldung, MSG_LEN, &i); printf("ISAM Error %d: %s", sqlca.sqlerrd[1], meldung); } // if exit(SQLCODE); } // _errorhandler_f_l() Das ganze führt dazu, daß das Programm bei Fehlern sofort abgebrochen wird. Vor dem Abbruch wird jedoch die "errorhandler"-Funktion aufgerufen, die ausführliche Informationen zur Ursache des Abbruchs mitteilt. ---- Stand: 12.01.2011 EOF