キー情報レコードは、ファイル内で使用するすべてのキーの物理特性を記述します。この情報には、各キーの長さ、データ レコード内のキーが定義される場所、重複が許可されるかどうか、などが含まれます。キー情報レコード構造内には、キー ブロックというサブ構造があります。キー ブロックは、定義されているキーごとに作成されます。最初のキー ブロックは、常に主キーを記述します。次に続くキー ブロックは、ファイルの作成時に指定した順序で副キーを定義します。キー情報レコードが、定義されているすべてのキーのキー ブロックを格納できる大きさである場合は、同じサイズの継続レコードが作成され、各レコードは、すべてのキーが定義されるまで次のレコードを示します。
キー情報レコードには、次のフィールドがあります。
サイズ |
フィールドの説明 |
2 |
レコード ヘッダー索引ノードにレコード ヘッダーがある場合にのみ存在します。詳細については、「索引ファイルの種類」のトピックを参照してください。 |
2 |
- ビット 15
- セキュリティ フラグ。値は 0 です。
- ビット 14-0
- このレコードの先頭を基準として、レコード内の最終キー ブロック入力の末尾を指すポインター
|
file-pointer-size |
後続レコードのアドレス。その後に続く継続レコードがない場合はゼロになります。 |
n |
主キーのキー ブロック |
... |
ファイルの副キーごとに 1 つあります。 |
n |
キー ブロック |
1 |
予約済み。値は x"FF" です。 |
1 |
予約済み。値は x"7E" です。 |
IDXFORMAT"8" または IDXFORMAT"12" 以外の形式の索引ファイルでは、キー ブロックは次のような構造になります。
サイズ |
フィールドの説明 |
2 |
このエントリの長さ (バイト数) |
4 |
このキーのルート索引ノード レコードのアドレス |
1 |
キー圧縮の種類
- ビット 2
- 後続空白文字の圧縮
- ビット 1
- 先行文字の圧縮
- ビット 0
- 重複の圧縮
|
5 |
キー構成要素ブロック |
... |
キーを分割する場合は、構成要素ごとに 1 つのブロックになります。 |
5 |
キー構成要素ブロック |
IDXFORMAT"8" および IDXFORMAT"12" ファイルの場合は、キー ブロックに次のフィールドが含まれます。
サイズ |
フィールドの説明 |
2 |
このエントリの長さ (バイト数) |
1 |
スパース キー文字 |
13 |
予約済み。 |
1 |
キー圧縮の種類
- ビット 3
- 後続ヌル文字の圧縮
- ビット 2
- 後続空白文字の圧縮
- ビット 1
- 先行文字の圧縮
- ビット 0
- 重複の圧縮
|
1 |
キーフラグ
- ビット 6
- 重複可能
- ビット 1
- スパース キー
|
6 |
キー構成要素ブロック |
... |
キーを分割する場合は、構成要素ごとに 1 つのブロックになります。 |
6 |
キー構成要素ブロック |
IDXFORMAT"8" または IDXFORMAT"12" 以外の形式の索引ファイルでは、キー コンポーネント ブロックは次のような構造になります。
サイズ |
フィールドの説明 |
2 |
- ビット 15
- 重複の可否を示すフラグ。このフラグを設定すると、重複が許可されます。
- ビット 14-0
- 構成要素の長さ (バイト数)
|
2 |
データ レコード内の構成要素のオフセット。値は 0 以上です。 |
1 |
構成要素の種類。値はゼロです。 |
IDXFORMAT"8" および IDXFORMAT"12" ファイルの場合は、キー コンポーネント ブロックに次のフィールドが含まれます。
サイズ |
フィールドの説明 |
2 |
構成要素の長さ (バイト数) |
2 |
データ レコード内の構成要素のオフセット。値は 0 以上です。 |
1 |
構成要素フラグ
- ビット 6
- 降順
|
1 |
構成要素の種類
- ビット 7
- 数値
- ビット 6
- 符号付き
- ビット 5-0
- 数値でない場合
0 (英数字)
数値の場合は、次のようになります。
h"00" – DISPLAY (SIGN TRAILING INCLUDED)
h"01" – DISPLAY (SIGN TRAILING SEPARATE)
h"02" – DISPLAY (SIGN LEADING INCLUDED)
h"03" – DISPLAY (SIGN LEADING SEPARATE)
h"20" – COMP
h"21" – COMP-3
h"22" – COMP-X
h"23" – COMP-5
h"24" – FLOAT
|