以下の情報は、遅延モードでのLOBデータの取り出しがアプリケーションで選択され、ロケーターの使用による応答の再配置付けが選択された場合に適用されます。
二重バッファ処理が設定され、LOBデータを遅延モードで取り出す場合、CLIは要求開始時、単一バッファ処理モードで応答を取り出し、さらに遅延モードでLOBデータを取り出します。
アプリケーション
- 必要な応答のセッションidと要求idを与えます。
- 要求が移動モードの処理オプション付きで実行依頼された場合には、応答領域の長さと応答領域を指すポインタを与えます。
- 要求の開始時には、静的ロケーター(スプール ロケーター)またはトランザクション ロケーターが返されるかどうかによって、DBCAREAフィールドのresp_modeを「M」、return_objectを「S」または「T」に設定する必要があります。
- 関数コードをFETCH(DBFFET)に設定します。
- DBCHCLを呼び出します。
DBCHCL
指定したたリクエストがアクティブな場合、DBCHCLは次のタスクを実行します。
- 活動状態の要求のセッションidと要求idを、MTDPCBに与えます。
- 入力オプションのwaitdata値に応じて、waitdataオプションのフラグを設定します。
- keep_respが「Y」に設定されていることを確認します。 「Y」が設定されていない場合、アプリケーションにエラーが返されます。
- 関数コードをMTDPRETに設定します。
- MTDPを呼び出します。
MTDP
MTDPは、要求が完了したかどうかを調べて、waitdataがTRUEであれば、その前の要求に対する応答メッセージが到着するかエラーが発生するまで待ったあとで、制御をDBCHCLに返します。
DBCHCL
成功または失敗のメッセージがDBCAREAのメッセージ フィールドに生成されて、DBCHCLは制御をアプリケーションに返します。
アプリケーション
アプリケーションが、この時点でバイナリ ラージ オブジェクト(BLOB)データの受信が可能な場合、
- 前の応答で返されたBLOBロケーターを使用して、SQL SELECT要求を実行します(例えば、USING(A BLOB AS LOCATOR)SELECT :A;)。
このSELECTは、同一のセッションで発行する必要があります。
- CLIとアプリケーションは、同SELECTの取り出し要求を、通常の単一バッファ処理で巻き戻しをしない取り出しと同じ方法で処理します。単一バッファ処理をして巻き戻しをしない場合を参照してください。