索引ファイル

索引ファイルでは、各レコードが主キーを持っています。各レコードを互いに区別するために、主キーの値は各レコードに対して一意にする必要があります。レコードの主キーの値を指定すると、レコードにランダムにアクセスできます。索引ファイルのレコードには、順次アクセスも可能です。

索引ファイルでは、主キーの他に、副キーと呼ばれる追加キーを 1 つ以上指定できます。レコードの副キーの値は、一意にする必要はありません。

ファイルを索引ファイルとして定義するには、COBOL プログラムでファイルに対して SELECT 句に ORGANIZATION IS INDEXED を指定します。また、RECORD KEY 句を使用して主キーも指定する必要があります。

 select idxfile assign to "idx.dat"
    organization is indexed
    record key is idxfile-record-key.

ほとんどの索引ファイルは、実際にはデータ ファイル (レコード データを含む) および索引 (索引構造体を含む) という 2 つの別のファイルで構成されています。この形式では、COBOL プログラムで指定した名前がデータ ファイル名になります。関連付けられる索引の名前は、データ ファイル名に .idx という拡張子が追加されて作成されます。他の用途に拡張子 .idx を使用しないでください。

索引はレコードの増加に伴って大きくなる逆ツリー構造として構築されます。

索引ファイルでは、ランダムに選択したレコードを検索するためのディスク アクセス回数は、主にファイル内のレコード数およびレコード キーの長さによって異なります。ファイルの入出力は、ファイルを順次読み込んでいく場合よりも高速になります。

すべての種類のファイルを定期的にバックアップすることを強く推奨します。ただし、索引ファイルに関しては、媒体が破損した場合などに、2 種類のファイルのうちのどちらかのみが使用できなくなる可能性があります。索引を損失した場合には、リビルド ユーティリティを使用してデータ ファイルから索引を復元し、障害の復旧にかかる時間を短縮できます。詳細については、「リビルド」を参照してください。