以下の情報は、アプリケーションで単一バッファ処理が選択され、要求が単文の場合に適用されます。 CLIは、たとえ二重バッファ処理が設定され、応答の再位置付けが要求されている場合でも、単一バッファ モードにおいてのみ応答を取り出します。
アプリケーション
アプリケーションは、DBCAREAで次のタスクを実行します。
- 必要な応答のセッションidと要求idを与えます。
- 要求が移動モードの処理オプション付きで実行依頼された場合には、応答領域の長さと応答領域を指すポインタを与えます。
- 必要に応じて、DBCAREAフィールドのfields positioning_action、positioning_value、positioning_stmt_numberを設定します。
- 関数コードをFETCH(DBFFET)に設定します。
- DBCHCLを呼び出します。
DBCHCL
特定のセッションがアクティブで、同セッションの接続先となるデータベースが、カーソルの再位置付けをサポートしている場合、
- 活動状態の要求用のRCBが作成されます
- waitdataオプション フラグと、その他のカーソル再位置付けフラグが、セッション識別子や要求識別子と合わせて、MTDPに渡されます。
- MTDPが、要求が完了するのを調べるか待つために呼び出されます。
以下のケースでは、アプリケーションにエラーが返されます。
- 要求の開始時、keep_respが「P」に設定されていない場合
- 要求が正常に終了しなかった場合
- 要求された再位置付けが無効な場合
その他の場合、DBCHCLはPclROWPOSITION/PclOFFSETPOSITIONパーセルをその要求の要求バッファ内に置き、指定された要求のセッションidと要求idをMTDPCBに与え、MTDPCBの関数コードをMTDPCONTに設定して、MTDPを呼び出します。
MTDP
MTDPは、Continue Requestメッセージをデータベースに送信します。 MTDPは、そのあとで制御をDBCHCLに返します。
DBCHCL
成功または失敗のメッセージがDBCAREAのメッセージ フィールドに生成されて、DBCHCLは制御をアプリケーションに返します。
アプリケーション
DBCAREAの戻りコードまたはエラー フラグが正常でなければ、アプリケーションは適切な変更を行なって、そのDBCAREAをDBCHCLに再実行依頼します。正常であれば、再配置しない場合と同様にフェッチを実行し、その単位の応答を消費します。通常、アプリケーションはEndRequestパーセルを取得するまで、ループ バックして別の単位の応答を処理します。