アプリケーション
DBCAREAで、アプリケーションは、データを取り出す必要のあるリクエストのセッションidとリクエストidを与え、関数コードをDBFFETに設定します。
リクエストが移動モードの処理オプション付きで実行依頼された場合には、アプリケーション プログラムは、応答領域の長さと応答領域を指すポインタもDBCAREAに与えなければなりません。次に、DBCHCLが取り出しを実行するために呼び出されます。
DBCHCL
DBCHCLは、指定されたリクエストのRCBのオプションのフラグ、またはDBCAREAのsetオプションのフラグが設定されているかどうかを最初に判定します。 setオプションのフラグがYであればDBCAREAのオプションが使用され、Yでなければ、RCB内のオプションが使用されます。
- 指定されたリクエストのセッション識別子とリクエスト識別子をMTDPCBに与えます。
- RespまたはKeepRespパーセルを作成することによって、続きのリクエストをそのリクエストのためのリクエスト バッファに作成します。
- MTDPCBの関数コードをMTDPCONTに設定します。
- MTDPを呼び出します。
MTDP
MTDPは、Continue Requestメッセージをデータベースに送信します。 MTDPは、そのあとで制御をDBCHCLに返します。
DBCHCL
- 活動状態のリクエストのセッションidとリクエストidを、MTDPCBに与えます。
- 入力オプションのwaitdata値に応じて、waitdataオプションのフラグを設定します。
- 関数コードをMTDPRETに設定します。
- MTDPを呼び出します。
MTDP
MTDPは、リクエストが完了したかどうかを調べて、waitdataがTRUEであれば、その前のリクエストに対する応答メッセージが到着するかエラーが発生するまで待ったあとで、制御をDBCHCLに返します。
DBCHCL
MTDPに対して以前に実行されたすべての呼び出しが正常に返された場合には、DBCHCLはバッファのオーバーフローを調べます。オーバーフローが見つかれば、バッファはさらに大きな応答を収容できるように増やされて、リクエストが続行されます。 DBCHCLは、その次のパーセルを見つけ出して、応答バッファ内を指すポインタによって、それをアプリケーションに返すか、または移動モードが指定されていれば、アプリケーションによって提供され、DBCAREAのデータ フィールドとしてポインタで指し示されたバッファ内にそのパーセルをコピーして、そのパーセルをアプリケーションに返すことによって、その次の単位の応答をアプリケーション プログラムで使用できるようにします。
アプリケーション
DBCAREAの戻りコードまたはエラー フラグが正常でない場合、アプリケーションは適切な変更を行って、MTDP制御ブロックをDBCHCLに再実行依頼します。それ以外の場合、アプリケーションはその単位の応答を消費します。通常、アプリケーションはEndRequestパーセルを取得するまで、ループ バックして別の単位の応答を処理します。