 |
Btrieve API Guide (v11) |
 |
|
Stat(15)
Stat オペレーション(B_STAT)では、ファイルに定義されている特性を取得します。また、ファイル内のレコード数、ファイルの各インデックスに格納されている重複のないキー値の数、ファイル内の未使用ページ数など、ファイルの内容についての情報も返します。
パラメーター
|
オペレーション コード
|
ポジション ブロック
|
データ バッファー
|
データ バッファー長
|
キー バッファー
|
キー番号
|
送り値
|
|
|
|
|
|
|
戻り値
|
|
|
|
|
|
|
前提条件
対象となるファイルが開いていることが必要です。
手順
- オペレーション コードに 15 を設定します。
- ファイルのポジション ブロックを渡します。
- ファイルに定義されている統計情報を格納するのに十分なデータ バッファーを確保します。
- データ バッファー長を指定します。ファイルの統計情報を十分に格納できる長さが必要です(詳細については、表 27 および表 28 を参照してください)。
- 少なくとも 255 バイトのキー バッファーを指定します。
- 次のようにキー番号を設定します。
- ファイルのバージョンおよび未使用の重複ポインターについての情報を除外する場合は、0 を指定します。表 27 を参考にして、戻りデータ バッファーを解析します。
- ファイルのバージョンおよび未使用の重複ポインターについての情報を含める場合は、-1(0xFF)を指定します。表 28 を参考にして、戻りデータ バッファーを解析します。
詳細
トランザクショナル インターフェイスでは、ファイルの作成以降に追加されたキーも含めて、ファイル内のすべてのキーについての情報が返されます。このキー情報には、適用可能な 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)で説明したものとまったく同じです。
- ファイル仕様領域
- データ バッファーにファイルのバージョン情報が含まれている場合は、インデックス数が 1 バイト長になり、その後に 1 バイトのファイルのバージョン情報が続きます。ファイルのバージョン番号の値を 10 進数に変換しないでください。0x70 という値はそのファイルが v7.0 ファイルであることを示し、0x60 という値はそのファイルが v6.x ファイルであることを示します(以下同様)。トランザクショナル インターフェイスではファイルを作成するとき、ファイルに定義されている属性に従ってバージョン番号が割り当てられます。
- レコード数は、ファイル内のレコードの数を表す 4 バイト長の値です。
- ファイル フラグ ワードで、ビット 9 と 12 は次のような意味を持ちます。
ビット 9 = 1 かつ ビット 12 = 0
|
ファイルはシステム データを使って作成されました。(これは、必ずしもシステム定義のログ キーが現在使用されていることを意味しません。削除された可能性もあります。)
|
ビット 9 = 1 かつ ビット 12 = 1
|
ファイルはシステム データを使わずに作成されました。
|
-
Stat オペレーションでは、システム データがデフォルトで組み込まれたのか、明示的に組み込まれたのかは示されません。
- データ バッファーにファイルのバージョン情報が含まれている場合、1 バイトの未使用重複ポインターの数がファイル フラグ フィールドに続き、ファイル内に残っている未使用の重複ポインターの数が示されます。
- 予約領域が割り当てられますが、トランザクショナル インターフェイスは Stat オペレーションではこの領域を無視します。
キー仕様
戻りデータ バッファーのキー仕様フィールドは、表 10 で説明したものと基本的には同じです。ただし、キー フラグ フィールドの後に 4 バイトの重複のないキー値の数が続き、指定されたキーに対して一意で重複のない値を持つレコードの数が示される点が異なります。
ACS
戻りデータ バッファーの ACS 定義は、Create(14)で説明したものとまったく同じです。
結果
Stat オペレーションが正常に終了した場合、トランザクショナル インターフェイスではファイルおよびキーの特性がデータ バッファーに返され、データ バッファーの長さがデータ バッファー長に返されます。対象となるファイルが拡張ファイルである場合、トランザクショナル インターフェイスでは先頭のエクステンション ファイルのファイル名がキー バッファーに返されます。先頭のエクステンション ファイルのファイル名が 63 バイトを超える場合、トランザクショナル インターフェイスではファイル名が切り詰められます。ファイルが拡張ファイルでない場合は、トランザクショナル インターフェイスではキー バッファーの先頭バイトが 0 に初期化されます(Stat Extended オペレーションを使うと、拡張ファイルに関する統計情報を取得できます)。
Stat オペレーションが正常に実行されなかった場合は、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。
3
|
ファイルが開いていません。
|
22
|
データ バッファー パラメーターが短すぎます。
|
ポジショニング
Stat オペレーションは、ポジショニングにまったく影響しません。
 Set Owner(29) |
 Stat Extended(65)(Btrieve API) |
|