標準レコード ヘッダー

可変構造ファイルの各レコードの前には、2 バイトまたは 4 バイトのレコード ヘッダーがあります。このヘッダーの最初の 4 ビットはレコードの状態を示します。たとえば 0100 の値は、このレコードが標準のユーザー データ レコードであることを示します。

レコード ヘッダーの残りの部分には、レコード長が格納されます。最大レコード サイズが 4095 バイト未満 (レコード ヘッダーを除く) のすべてのファイルでは、レコード ヘッダーの長さは 2 バイトです。他のすべてのファイルでは、レコード ヘッダーの長さは 4 バイトです。

各レコードのレコード ヘッダーの先頭アドレスは、常に該当するファイル タイプのデータの境界整列値の整数倍になります (データの境界整列値の詳細については、「索引ファイルの種類」を参照してください)。その結果、レコードの直後には最大 n 個のパディング文字 (通常は空白文字) が格納される場合があります。これらのパディング文字は、レコード長には含まれません。

最初の 4 ビット レコード タイプ
1 (0001) システム レコード。データ ファイルの重複出現レコードを示します。
2 (0010) 削除されたレコード (空き領域リストを介して再使用可能)。
3 (0011) システム レコード
4 (0100) 通常のユーザー データ レコード
5 (0101) 縮小ユーザー データ レコード (索引ファイルのみ)。データの直後の領域 (ヘッダーの長さで示される) は、データ レコードの末尾 (パディング文字が存在する場合はパディング文字列の末尾) から、次のレコード ヘッダーの先頭までの間の長さを示します。この情報は、2 バイトまたは 4 バイトのフィールドに格納されています (詳細は「索引ファイルの種類」を参照)。
6 (0110) ポインター レコード (索引ファイルのみ)。レコード ヘッダー直後の n バイト (n は索引ファイルのファイル ポインター サイズ) には、ユーザー データ レコードの位置までの、ファイル内でのオフセットが含まれます (詳細は「索引ファイルの種類」を参照)。
7 (0111) ポインター レコードで参照されるユーザー データ レコード
8 (1000) ポインター レコードで参照される縮小ユーザー データ レコード
9 (1001) 将来使用するために予約されています。
10 (1010) トランザクション中のユーザー データ レコード (ただし、まだ COMMIT されていない Fileshare トランザクションのレコード以外は 4)
11 (1011) トランザクション中の縮小ユーザー データ レコード (ただし、まだ COMMIT されていない Fileshare トランザクションのレコード以外は 5)
12 (1100) ポインター レコードによって参照されるトランザクション中のユーザー データ レコード (ただし、まだ COMMIT されていない Fileshare トランザクションのレコード以外は 7)
13 (1101) ポインター レコードによって参照されるトランザクション中の縮小ユーザー データ レコード (ただし、まだ COMMIT されていない Fileshare トランザクションのレコード以外は 8)