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