以下の情報は、要求開始時、アプリケーションで単一バッファ処理が選択され、keep-responseで「Y」が設定されている場合のみ適用されます。ここでは、応答を巻き戻して調べることを選択する場合について説明します。
アプリケーション
- 必要な応答のセッションidとリクエストidを与えます。
- リクエストが移動モードの処理オプション付きで実行依頼された場合には、応答領域の長さと応答領域を指すポインタを与えます。
- 関数コードをRewindおよびFetch(DBFREW)に設定します。
- DBCHCLを呼び出します。
DBCHCL
- 活動状態のリクエスト用のRCBが作成されます。
- リクエストに対するwaitdataオプションのフラグが、セッション識別子およびリクエスト識別子とともに、MTDPCB内のMTDPに渡されます。
- MTDPが、リクエストが完了するのを調べるか待つために呼び出されます。
リクエストが正常に完了しなかった場合には、エラー メッセージがアプリケーションに返されます。
現在の応答バッファがリクエストに対する最初の応答バッファであった場合には、バッファ ポインタがそのバッファの先頭に再設定され、DBCHCLは制御をアプリケーションに正常に返します。 KeepRespがリクエストに指定されていなかった場合に応答バッファにEndRequestパーセルが入っていれば、DBCHCLは、応答を巻き戻せないことを示すメッセージを返します。 KeepRespがリクエストに指定されていた場合には、DBCHCLは、RewindパーセルとKeepRespまたはRespのどちらかのパーセル(KeepResp処理オプションの値に応じて決まる)をそのリクエストのリクエスト バッファ内に置き、指定されたリクエストのセッションidとリクエストidをMTDPCBに与え、MTDPCBの関数コードをMTDPCONTに設定して、MTDPを呼び出します。
MTDP
MTDPは、Continue Requestメッセージをデータベースに送信します。 MTDPは、そのあとで制御をDBCHCLに返します。
DBCHCL
成功または失敗のメッセージがDBCAREAのメッセージ フィールドに生成されて、DBCHCLは制御をアプリケーションに返します。
アプリケーション
DBCAREA内の戻りコードまたはエラー フラグが正常でなければ、上に述べたように、アプリケーションで、DBCAREAセッションでの作業制御ブロックを適切に変更してDBCHCLに再び送ります。 それらが正常であれば、アプリケーション プログラムは、巻き戻しをしない場合と同様に取り出しを実行して、その単位の応答を消費します。 多くの場合には、アプリケーション プログラムは、EndRequestパーセルを入手するまで、ほかの単位の応答を処理するために出発点に戻ります。