DBCHCLNは、CLIのメモリを一掃(クリーンアップ)します。
どのように機能するか
アプリケーションは、データベースとのインターフェースに関係する処理がすべて完了したときにDBCHCLNルーチンを呼び出します。
DBCHCLNは、アイドル セッションをログオフし、アクティブ セッションについては、完了を待ってから(DBCHLNは、まだログオンしているセッションにDBFDSCを内部的に呼び出します)ログオフします。CLIによって割り当てられた内部メモリとコンテキスト情報をすべて解放します。
DBCHCLNは、DBCHINIによって割り当てられた内部データ構造体の割り当てを解除します。
DBCHCLNは、すべてのセッションのログオフとすべての内部文脈のクリーンアップが終了してから、アプリケーションに制御を返します。
DBCHCLNの呼び出しは、DBCAREAの割り当てを解除しません。 DBCAREAの割り当て解除は、プログラミング言語にその機能があれば、アプリケーション プログラム自体で行なうことができます。
DBCHCLNはプロセスごとにクリーンアップを実行します。DBCHCLNの発行は1度のみにする必要があります。アプリケーション プログラムがCLIv2を使用する複数のスレッドで構成されている場合、1つ以上のスレッドがCLIv2を実行中にDBCHCLNを発行すると、エラーとなることがあります。この状況を回避するためには、アプリケーション プログラムで、すべてのスレッドがCLIv2の使用を完了した後に、制御または管理スレッドからのみDBCHCLNが発行されるようにしなければなりません。同様に、アプリケーション プログラムはC/C++ランタイム ライブラリのatexit()関数を次のように使用して、プロセスの終了時にDBCHCLNを起動できます。
if (atexit(clean_up)) { perror("atexit failed"); exit(8); } ... void clean_up(void) { DBCHCLN(&result, cnta); }
atexit()によって登録されたプロセス終了出口は、正常終了に対してのみ呼び出されます。 プログラムがabort()によって終了されている場合は、制御を受けません。 詳細については、システムのマニュアルを参照してください。
成功の場合0を返し、それ以外の場合はエラーを返します。
パラメータ
Int32 | DBCHCLN (ReturnCode, ContextArea) |
Int32 | *ReturnCode; |
char | *ContextArea; |
次のような場合に当てはまります。
パラメータ | 内容 |
---|---|
ReturnCode | アプリケーション プログラムが4バイトの符号付き整数の記憶域として割り当てた領域の4バイト アドレス。 DBCHCLNから制御が戻ると、整数には、クリーンアップの成功または失敗を表わすコード値が入っています。 ゼロの戻りコードは、成功を示します。ゼロ以外の戻りコードは、失敗を示すと同時にその値が失敗の理由を示します。 |
ContextArea | CLIおよびアプリケーション プログラムでは使用されないため、任意の値を入れることができる4バイトのフィールド。 メインフレーム クライアントでの呼び出しとの互換性を維持するために提供されています。 |