アプリケーションからのアクティブなリクエストまたはContextAreaに関連付けられているイベントの完了を待ちます。
完了したリクエストは、トークンとセッションIDを返します。完了したイベントは、イベントの完了を示す値をReturnCodeに返します。
提供されているセッション リストで定義されているセッションだけが適格とみなされます。
パラメータ
Int32 DBCHWL (ReturnCode, ContextArea,sessions, sessid, reqtoken) | |
Int32 *ReturnCode; | |
char **ContextArea; | |
SESSIONS_PTR sessions | |
Int32 *sessid; | |
Int32 *reqtoken; |
次のような場合に当てはまります。
パラメータ | 内容 |
---|---|
ReturnCode | アプリケーション プログラムによって割り振られた4バイトの符号付き整数のアドレス。 DBCHWLから制御が戻ると、この整数には、成功または失敗を表わすコード値が入っています。 ゼロの戻り値は、成功を示します。ゼロ以外の戻りコードは、失敗の理由を示します。 sessions配列がNULLの場合は、NOSESSIONエラーが返されます。 ContextAreaが正しく初期設定されていない場合は、BADUECNTAエラーが返されます。 ユーザー提供のイベントがタイムアウトになった場合は、EM_TIMEEXCEEDEDエラーが返されます。 |
ContextArea | 文字ポインタを指す間接ポインタ。 DBCHUEはContextAreaを初期設定し、イベントをこのContextAreaに関連付けます。 このパラメータが非NULLの場合、DBCHWLは、定義されたイベントまたはセッション リスト内に含まれる完了済みリクエストのうち、どちらかが完了するのを待ちます。 |
sessions | アプリケーションがリクエストの完了に関心を持つセッションのIDを含む、SESSIONS_PTRの配列。 このユーザー提供配列には、この配列を終了させるNULLのセッション配列エレメントが含まれている必要があります。 |
sessid (session) | 4バイトの符号付き整数を指すポインタ。 制御がDBCHWLから正常に戻ると、sessidに、完了したリクエストのセッションIDの値が入ります。 |
reqtoken | 4バイトの符号付き整数へのポインタ。コントロールがDBCHWLから正常に戻った後、reqtokenにはユーザーが提供するセッション リストから最初に完了するアクティブ リクエスト関連付けられている任意選択のユーザー トークンが入ります。 |
使用上の注意
DBCHWLには、SESSIONS_PTR配列のエレメントを終了させるNULLセッションが含まれている必要があります。
DBCHWLは、指定されたセッションのリストまたはDBCHUEで定義されているContextAreaに関連付けられたイベントに対するリクエストを待ちます。
DBCHWLのイベント タイプとして、CLI_WIN_TIMEOUTイベントだけがサポートされています。 このイベントに関連する戻りコードは、EM_TIMEEXCEEDEDです。
この関数は、多重スレッドのCLIをサポートします。
例
単一セッションからのリクエストを5秒間だけ待ちます。
/* supplied from a previous call to DBCHUE - char *cnta, which contains a 5 second timeout event */ SESSIONS_PTR Sessions; Int32 Active; Int32 retcode = 0; Int32 result = 0; struct DBCAREA dbc; /* allocate 2 session arrays and initialize arrays to 0's */ Sessions = (SESSIONS_PTR)calloc(2, sizeof(SESSIONS)); /* the dbcarea has been updated from the dbc.o_sess_id from DBFCON CLI function */ /* first session is set, second session is NULL */ Sessions[0].session = dbc.i_sess_id; retcode = DBCHWL(&result, (char **) &cnta, Sessions, &Active,&dbc.token); /* done with the event - delete the event and free memory */ retcode = DBCHUE(&result, (char **) &cnta, &time_event, DELETE_EVENT);