Btrieve API Guide (v11)

Get Direct/Record(23)

Get Direct/Record オペレーション(B_GET_DIRECT)では、定義されているキー パスではなく、ファイル内の物理位置を使ってレコードを取得します。

以下のような操作を実行する場合は、Get Direct/Record オペレーションを使用してください。

パラメーター

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

 

戻り値
 

 


メモ

データオンリー ファイルで Get Direct/Record オペレーションを実行する場合は、キー番号パラメーターは必要ありません。


前提条件

手順

  1. オペレーション コードに 23 を設定します。オプションで、ロック バイアスも指定できます。
  2. ファイルのポジション ブロックを渡します。
  3. データ バッファーの先頭の 4 バイトに、目的のレコードの位置を表す 4 バイト値を格納します。
  4. データ バッファー長に取得するレコードの長さ以上の値を設定します。
  5. キー番号には、トランザクショナル インターフェイスで論理カレンシーを確立するパスのキー番号を設定します。トランザクショナル インターフェイスで論理カレンシーの確立を必要としない場合は、-1 を指定します。システム定義のログ キー(システム データ)を使用するには、125 を指定します。

結果

Get Direct/Record オペレーションが正常に終了した場合、トランザクショナル インターフェイスでは要求したレコードがデータ バッファーに、レコード長がデータ バッファー長に、指定したキー パスのキー値がキー バッファーにそれぞれ返されます。

Get Direct/Record オペレーションが正常に実行されず、要求したレコードをトランザクショナル インターフェイスが取得できなかった場合は、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。

22
データ バッファー パラメーターが短すぎます。(論理カレンシーはまだ確立されています)
43
指定されたレコード アドレスが不正です。(論理カレンシーは確立されていません)
44
指定されたキー パスが不正です。(論理カレンシーは確立されていません)
82
トランザクショナル インターフェイスがポジショニングを失いました。(論理カレンシーは確立されていません)

ポジショニング

Get Direct/Record オペレーションを実行すると、既存の論理カレンシー情報が消去され、指定したキー番号に従って新しい論理カレンシーが確立されます。物理カレンシー情報にはまったく影響しません。


Get Direct/Chunk(23)

Get Directory(18)