DBCHCLは、アプリケーション プログラムによって要求される関数を呼び出します。
DBCHCLに関連する関数の概要は、CLIv2ルーチンの使用: 表形式のサマリーの下のテーブルに示してあります。 個々の関数については、この章のあとの方で詳しく説明します。
どのように機能するか
DBCHCLを呼び出す前に、アプリケーション プログラムでDBCAREAを変更して、要求する動作を指定し、その動作に関連する入力フィールドに値を入れます。
DBCHCLは、DBCAREA内の関数コードで指定された関数を実行し、戻りコードなどが入っているDBCAREAを呼び出し側に返します。
アプリケーションでは、DBCAREAの戻りコードを調べます。CLIおよびMTDPが問題を検出した場合には、この戻りコードにそのことが示されます。 その呼び出しによって複数のパーセルが応答バッファに渡された場合には、アプリケーションで最初のパーセル(ErrorまたはFailureのパーセルなど)を調べます。
パラメータ
DBCHCLパラメータは次のとおりです。
Int32 | DBCHCL (ReturnCode, ContextArea, DBCAREA) |
Int32 | *ReturnCode; |
char | *ContextArea; |
struct | dbcarea_struct *dbcarea; |
次のような場合に当てはまります。
パラメータ 1バッファ分 | 内容 |
---|---|
ReturnCode | アプリケーション プログラムが4バイトの符号付き整数の記憶域として割り当てた領域の4バイト アドレス。 DBCHCLから制御が戻ると、CLIやMTDPでの場合と同様に、この整数には、関数の成功または失敗を表わすコード値が入っています。 ゼロの戻りコードは、成功を示します。ゼロ以外の戻りコードは、失敗を示すと同時にその値が失敗の理由を示します。 この戻りコードは、クライアントで実行された処理のみ対象となります。データベースで実行された処理は、対象となりません。
|
ContextArea | CLIおよびアプリケーション プログラムでは使用されないため、任意の値を入れることができる4バイトのフィールド。 Context Areaは、メインフレーム接続システムでの呼び出しとの互換性を維持するために備えられています。 |
DBCAREA | アプリケーション プログラムがDBCAREA用に割り当てた領域の4バイト アドレス。 アプリケーション プログラムとCLIは、DBCAREAを共有して、CLIへの値の入力およびCLIからの値の出力にDBCAREAを使用します。 |
使用上の注意
DBCHCLを呼び出す前に、
- アプリケーション プログラムでDBCHINIを呼び出して、DBCHCLによって使用されるDBCAREAを初期設定する必要があります。
- アプリケーション プログラムで、DBCHCLに渡されるアドレスのDBCAREAに入力値を与えなければなりません。 関数コードは、必ず与えなければなりません。 その他の与えなければならない入力値は、選択した関数コードによって決まります。
DBCHCLから制御がアプリケーション プログラムに戻った後で、アプリケーション プログラムで戻りコードを調べなければなりません。 戻りコードは、パラメータ リスト内、DBCAREA内、またはDBCHCLの関数内のいずれかで調べることができます。 この3つすべてに同じ値が入っています。
- Wait For Responseを'Y'に設定してアプリケーション プログラムを実行している場合には、ビジーの戻りコード(EM_NODATA 211)は発生しない。
- Wait For Responseを'N'に設定してアプリケーション プログラムを実行している場合には、ビジーの戻りコードが発生することがある。
「ビジー」の意味
「ビジー」は、セッションが保留状態(CLIが、そのセッションで要求した情報がデータベースから送られてくるのを待っている状態)であったために、要求された関数が開始または完了されなかったことを意味します。ビジー応答に対処するためには、以下の2つの方法のどちらかをコーディングします。
- DBCHCLからの戻りコードがビジーの場合には、同じ関数のDBCHCLを呼び出して繰り返します。
- DBCHCLからの戻りコードがビジーの場合には、DBCHWATを呼び出してDBCHWATの戻りコードがゼロであることを確認し、同じ関数のDBCHCLを呼び出して繰り返します。
2番目の方法は待機中にシステムとかかわり合っていないため、この方法が便利です。
繰り返し回数は状況に応じて変えることができるので、決まった回数をコーディングしないようにします。