Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, プログラミング・ガイド

VSAM 編成

PL/Iは、次の 3 つのタイプの VSAM データ・セットをサポートします。

上記のデータ・セットはそれぞれ、PL/I の索引付きデータ・セット編成、 連続データ・セット編成、および領域データ・セット編成とほぼ対応しています。 これらはすべて順序を付けられ、中にあるレコードに関連付けられたキーを持つことができます。 3 つのタイプ全部において、順次アクセスとキーによるアクセスの両方を行うことができます。

キー順データ・セットだけがその論理レコードの一部としてキーを持つことができますが、 入力順データ・セット (相対バイト・アドレスを使用) および相対レコード・データ・ セット (相対レコード番号を使用) でもキー順アクセスを行うことができます。

VSAM データ・セットはすべて直接アクセス・ストレージ・デバイスに保持され、 そのデータ・セットを使用するには、仮想記憶オペレーティング・システムが必要です。

VSAM データ・セットの物理編成は、他のアクセス方式で使用するものとは異なります。 VSAM ではブロック化の概念は適用されず、また、 相対レコード・データ・セットの場合を除き、レコードは固定長でなくてもかまいません。VSAM 編成のデータ・セットでは、 データ項目は制御インターバル に並べられ、 さらにそれが制御域 内に並べられます。 処理に備えて、制御インターバル内のデータ項目は論理レコード内に並べられます。 制御インターバルは、1 つ以上の論理レコードを収容することができ、1 つの論理 レコードが複数の制御インターバルにスパンしてもかまいません。VSAM では、ブロック化因数とレコード長に対する配慮は大きく軽減されますが、 レコードは、最大指定サイズを超えてはなりません。VSAM では制御インターバルへアクセスすることもできますが、 このタイプのアクセスは PL/I ではサポートされていません。

VSAM データ・セットは、2 つの索引タイプを持つことができます。それは、基本と代替です。基本索引 はデータ・セットを定義するときに設定される KSDS に 対する索引で、常に存在し、また KSDS で可能な唯一の索引です。KSDS または ESDS に 対して、1 つ以上の 代替索引 を使用することができます。 ESDS に代替索引 を定義すると、一般に ESDS を KSDS として使用できます。KSDS の代替索引は、 基本索引とは異なる論理レコードのフィールドをキー・フィールドとして使用できます。 代替索引は重複キーが使用できる非固有、 重複キーが使用できない固有 のいずれかにすることができます。 基本索引には、重複キーがあってはなりません。

代替索引を持つデータ・セット内の変更は、 今後も使用するすべての索引に反映されなければなりません。この活動は、 索引アップグレード として知られ、データ・セット内の 索引アップグレード・セット 内の任意の索引について、VSAM が行います。(KSDS の場合は、 基本索引は常に索引アップグレード・セットのメンバーです。) しかし、 基本索引または固有代替索引に重複キーを作成する、データ・セット内の変更は避けてください。

VSAM データ・セットを初めて使用する前に、 アクセス方式サービスの DEFINE コマンド を使ってそのデータ・セットをシステムに対して 定義しなければなりません。これは、データ・セットのタイプ、構造、 および必要スペースを完全に定義するのに使用できるコマンドです。 このコマンドはまた、データ・セットが KSDS であるかまたは 1 つ以上の代替索引を持つ場合に、 そのデータ・セットの索引 (キーの長さと位置も一緒に) と索引アップグレード・セットも定義します。 したがって、VSAM データ・セットはアクセス方式サービスによって「作成」されます。

初期データを新たに作成した VSAM データ・セットに書き込む操作 を、本書ではロードする という表現で示しています。

3 つのタイプのデータ・セットは、次の各目的別に使用します。

どのタイプの VSAM データ・セット内のレコードにも、 キーを使用して直接、または順次に (逆方向または順方向に) アクセスできます。2 方向の組み合わせを使用することもできます。 キーで開始点を選択し、その点から順方向あるいは逆方向に 読み取りを行います。

キー順および入力順データ・セットに代替索引 を作成できます。 作成後は、 多くのシーケンスを使用して、または多くのキーのうちのいずれかを使用して、ユーザー・データにアクセスできます。 例えば、 従業員番号順に保持されているか、索引を付けられているデータ・セットを使用して、 代替索引 内に名前でそれに索引を付けることができます。それから、 英字順、逆英字順、または名前を直接キーとして使用して、そのデータ・セットにアクセスできます。 従業員番号の同じ種類の組み合わせによって、データ・セットにアクセスすることもできます。

表 25 に、同一データをどのように この 3 つの異なったタイプの VSAM データ・セット内に保持できるかを示し、 それぞれの利点と欠点を示しています。

表 25. VSAM データ・セットのタイプと利点
データ・セット・タイプ ロード方式 読み取り方式 更新方式 利点と欠点
キー順 順次に並んだ索引または固有でなければならない基本索引。 基本索引でレコードのキーを指定した KEYED。

任意の索引を逆方向または順方向に SEQUENTIAL。

キーで位置決めした後に、逆方向または順方向の順次読み取り。

任意の索引内で固有キーを指定して KEYED。

固有キーで位置決めした後に SEQUENTIAL。

レコードの削除が許可される。

レコードの追加が許可される。

利点 : 完全アクセスおよび更新。

欠点 : ロード前にレコードが基本索引順にソートされていなければならない。

使用 : アクセスがキーと関連する場合に使用。

入力順 順次 (順方向のみ)。

各レコードの RBA を入手して、キーとして使用可能。

SEQUENTIAL 逆方向または順方向。

RBA を使用して KEYED。

キーで位置決めをした後で、逆方向または順方向に順次。

新しいレコードは終わりにのみ。

既存レコード長は変更不可。

レコードの削除不可。

利点 : 簡単迅速に作成。

固有索引は不要。

欠点 : 限定された更新機能。

使用 : データが主として順次式でアクセスされる場合。

相対レコード スロット 1 から順次。

スロット番号を指定して KEYED。

キーで位置決めした後で、順次書き込み。

番号をキーとして指定して KEYED。

空きレコードを省いて、順方向または逆方向へ順次。

指定したスロットから開始し、次のスロットへ順次。

番号をキーとして指定して KEYED。

レコードの削除が許可される。

空きスロットへのレコード追加が許可される。

利点 : 番号によるレコードへの高速アクセス。

欠点 : 構造が番号付けに拘束される。

固定長レコード。

使用 : レコードが番号によってアクセスされる場合に使用。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)