Btrieve API Guide (v11)

Stat(15)

Stat オペレーション(B_STAT)では、ファイルに定義されている特性を取得します。また、ファイル内のレコード数、ファイルの各インデックスに格納されている重複のないキー値の数、ファイル内の未使用ページ数など、ファイルの内容についての情報も返します。

パラメーター

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

戻り値
 
 

 

前提条件

対象となるファイルが開いていることが必要です。

手順

  1. オペレーション コードに 15 を設定します。
  2. ファイルのポジション ブロックを渡します。
  3. ファイルに定義されている統計情報を格納するのに十分なデータ バッファーを確保します。
  4. データ バッファー長を指定します。ファイルの統計情報を十分に格納できる長さが必要です(詳細については、表 27 および表 28 を参照してください)。
  5. 少なくとも 255 バイトのキー バッファーを指定します。
  6. 次のようにキー番号を設定します。

詳細

トランザクショナル インターフェイスでは、ファイルの作成以降に追加されたキーも含めて、ファイル内のすべてのキーについての情報が返されます。このキー情報には、適用可能な ACS 定義も含まれます。データ バッファー領域を確保する際、このような追加情報について考慮する必要があります。特に、ここでは、Create(0)オペレーションで使用したものと同じデータ バッファーは使用しないでください。

トランザクショナル インターフェイスでは、ファイルに最大 119 までのキーと複数の ACS を定義できるため、可能な最長データ バッファーは 33,455 バイトになります(つまり、16 + (119 * 16) + (119 * 265) です)。しかし、これほど大きなデータ バッファーが必要になることはおそらくありません。実際、ある特定の情報しか必要ない場合は、データ バッファーを小さくした方が良い場合があります。たとえば、データ バッファー長を 1,920 バイト(つまり、16 + (16 * 119))に設定したとします。実際、このような設定にした場合、キー情報はすべて返されますが、ACS は必ずしもすべては返されません。アプリケーションで ACS についての情報が必要ない場合は、この方法を使うことができます。

キー番号パラメーターに値 0 を指定した場合、トランザクショナル インターフェイスでは次の表に示すような Stat 情報が返されます。

表 27 ファイルのバージョン情報を除外したデータ バッファー
要素
説明
長さ
(バイト単位)
ファイル仕様
レコード長
2
 
ページ サイズ
2
 
インデックス数
2
 
レコード数
4
 
ファイル フラグ
2
 
予約ワード
2
 
未使用ページ
2
キー仕様(各セグメントについて繰り返される)
キー ポジション
2
 
キー長
2
 
キー フラグ
2
 
重複のないキー値の数
4
 
拡張データ型
1
 
ヌル値
1
 
予約済み
2
 
キー番号
1
 
ACS(オルタネート コレーティング シーケンス)番号
1
ACS 番号 0
ACS
265
. . .
. . .
 . . .
ACS 番号 x
ACS
265

キー番号パラメーターに値 -1 を指定した場合、トランザクショナル インターフェイスでは次の表に示すような Stat 情報が返されます。

表 28 ファイルのバージョン情報を含むデータ バッファー
要素
説明
長さ
(バイト単位)
ファイル仕様
レコード長
2
 
ページ サイズ
2
 
インデックス数
1
 
ファイルのバージョン番号
1
 
レコード数
4
 
ファイル フラグ
2
 
未使用の重複ポインター数
1
 
予約バイト
1
 
未使用ページ
2
キー仕様(各キー セグメントについて繰り返される)
キー ポジション
2
 
キー長
2
 
キー フラグ
2
 
重複のないキー値の数
4
 
拡張データ型
1
 
ヌル値
1
 
予約済み
2
 
キー番号
1
(キー仕様の最後のメンバー。ここまでが繰り返される要素)
ACS(オルタネート コレーティング シーケンス)番号
1
ACS 番号 0
ACS
265
. . .
. . .
. . .
ACS 番号 x
ACS
265

ファイル仕様

戻りデータ バッファーのファイル仕様フィールドは、次の点を除いて、Create(14)で説明したものとまったく同じです。

キー仕様

戻りデータ バッファーのキー仕様フィールドは、表 10 で説明したものと基本的には同じです。ただし、キー フラグ フィールドの後に 4 バイトの重複のないキー値の数が続き、指定されたキーに対して一意で重複のない値を持つレコードの数が示される点が異なります。

ACS

戻りデータ バッファーの ACS 定義は、Create(14)で説明したものとまったく同じです。

結果

Stat オペレーションが正常に終了した場合、トランザクショナル インターフェイスではファイルおよびキーの特性がデータ バッファーに返され、データ バッファーの長さがデータ バッファー長に返されます。対象となるファイルが拡張ファイルである場合、トランザクショナル インターフェイスでは先頭のエクステンション ファイルのファイル名がキー バッファーに返されます。先頭のエクステンション ファイルのファイル名が 63 バイトを超える場合、トランザクショナル インターフェイスではファイル名が切り詰められます。ファイルが拡張ファイルでない場合は、トランザクショナル インターフェイスではキー バッファーの先頭バイトが 0 に初期化されます(Stat Extended オペレーションを使うと、拡張ファイルに関する統計情報を取得できます)。

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

3
ファイルが開いていません。
22
データ バッファー パラメーターが短すぎます。

ポジショニング

Stat オペレーションは、ポジショニングにまったく影響しません。


Set Owner(29)

Stat Extended(65)(Btrieve API)