Btrieve API Guide (v11)

Get Previous(7)

Get Previous オペレーション(B_GET_PREVIOUS)では、指定されたキーに基づいて、論理位置で前にあるレコードを取得します。Get Previous オペレーションを使うと、重複するキー値を持つレコードのグループの中でレコードを検索できます。Get Key(+50)バイアスを使うと、ファイル内に値が存在するかどうかを検出することもできます。一般に、Get Key オペレーションの方が高速に処理されます。

パラメーター

 
オペレーション コード
ポジション ブロック
データ バッファー
データ バッファー長
キー バッファー
キー番号
送り値

 

戻り値
 

 

前提条件

手順

  1. オペレーション コードに 7 を設定します。オプションで、ロック バイアスも指定できます。
  2. ファイルのポジション ブロックを渡します。
  3. データ バッファー長に取得するレコードの長さ以上の値を設定します。
  4. キー バッファーに前のオペレーションで取得したキー値を指定します。キー バッファーには、前の呼び出しでトランザクショナル インターフェイスが返したキー値とまったく同じものを渡します。トランザクショナル インターフェイスでは、ファイル内の現在の位置を決定するために、直前にキー バッファーに格納された情報が必要となるからです。
  5. キー番号パラメーターに、前の呼び出しで使用したキー パスを設定します。Get Previous オペレーションを使ってキー パスを変更することはできません。

結果

Get Previous オペレーションが正常に終了した場合、トランザクショナル インターフェイスではキー バッファーが新しいレコードのキー値を使って更新され、データ バッファーに前のレコードが返され、データ バッファー長にそのレコードの長さが返されます。

Get Previous オペレーションが正常に実行されなかった場合は、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。

3
ファイルが開いていません。
6
キー番号パラメーターが不正です。
7
キー番号が変更されました。
8
現在のポジションが不正です。
9
オペレーションが EOF(end-of-file)を検出しました。
22
データ バッファー パラメーターが短すぎます。
82
トランザクショナル インターフェイスがポジショニングを失いました。

このオペレーションの実行により、論理位置の直前がファイルの先頭よりも前を指す場合は、ステータス コード 9 が返されます。

ポジショニング

Get Previous オペレーションを実行すると、完全な論理カレンシーおよび物理カレンシーが確立し、取得したレコードが現在のレコードになります。


Get Position(22)

Get Previous Extended(37)