DBCHERRはCLIエラー コードに対応するエラー テキストを取得します。
パラメータ
DBCHERR (ErrorCode, dbcptr, ErrPtr)
次のような場合に当てはまります。
パラメータ | 内容 |
---|---|
ErrorCode | 4バイトの整数エラー コード |
dbcptr | DBCAREAとして使用するためにアプリケーションによって割り振られた領域へのポインタ。 アプリケーション プログラムとCLIは、DBCAREAを共有して、CLIへの値の入力およびCLIからの値の出力にDBCAREAを使用します。 |
ErrPtr | エラー コードを受け取るための構造体を指すポインタ。 この構造体は、次に示す形式でCOPTYPES.Hの中に定義されます。typedef struct err_code { int e_class; int e_reason; long e_syst; } *errpt_t; この引数はオプションであり、特定のエラー コードが必要でなければ、NULLにする必要があります。 |
使用上の注意
- エラー テキストの取得方法は2つあります。
方法1: DBCAREA内のmsg_text
dbcptr->dbciMsgPがNULLの場合、取得されたエラー テキストはDBCAREA内のmsg_textバッファに76バイトまで格納されます。その長さはdbcptr->msg_lenに格納されます。 詳細については、DBCAREAのMessage TextおよびMessage Lengthを参照してください。
方法2: DBCAREA内のdbciMsgP
dbcptr->dbciMsgPがNOT NULLで、dbcptr->dbciMsgM >0の場合、取得されたエラー テキストはdbciptr->dbciMsgPで示されたメモリ領域に格納され、その長さはdbcptr->dbcoMsgLに格納されます。 アプリケーションはメモリの割り当ておよび割り当て解除を行ないます。 詳細については、DBCAREAのMessage Area PointerおよびMessage Length Returnedを参照してください。
- DBCHINI()およびDBCHCL()関数はエラー コードとエラー テキストを両方返します。 したがって、アプリケーションはこれらの関数を呼び出した後にDBCHERR()を呼び出してエラー テキストを取得する必要がありません。
方法1の例
. . struct DBCAREA dbc; Int32 result = DBCHWL(...); dbc.dbciMsgP = NULL; if (DBCHERR(result, &dbc, NULL) != 0) { printf("Error Text is %.*s\n", dbc.msg_len, dbc.msg_text); } . .
方法2の例
. . struct DBCAREA dbc; Int32 result = DBCHWL(...); dbc.dbciMsgP = (char *)malloc(200); dbc.dbciMsgM = 200; if (DBCHERR(result, &dbc, NULL) != 0) { printf("Error Text is %.*s\n", dbc.dbcoMsgL, dbc.dbciMsgP); } free(dbc.dbciMsgP); dbc.dbciMsgP = NULL; dbc.dbciMsgM = 0; . .