VSAM-代替インデックス

代替インデックスは、プライマリインデックスに加えて、KSDS / ESDSデータセット用に作成される追加のインデックスです。代替インデックスは、複数のキーを使用してレコードへのアクセスを提供します。代替インデックスのキーは、一意でないキーにすることができ、重複する可能性があります。

代替インデックスの作成

次の手順を使用して、代替インデックスを作成します-

  • 代替インデックスを定義する
  • パスを定義する
  • ビルインデックス

代替インデックスを定義する

代替インデックスは、を使用して定義されます DEFINE AIX コマンド。

DEFINE AIX                              -
(NAME(alternate-index-name)             -
RELATE(vsam-file-name)                  -
CISZ(number)                            -
FREESPACE(CI-Percentage,CA-Percentage)  -
KEYS(length offset)                     -
NONUNIQUEKEY / UNIQUEKEY                -
UPGRADE / NOUPGRADE                     -
RECORDSIZE(average maximum))            -
DATA                                    -
   (NAME(vsam-file-name.data))          -
INDEX                                   -
   (NAME(vsam-file-name.index))

上記の構文は、代替インデックスの定義時に使用されるパラメーターを示しています。クラスターモジュールの定義でいくつかのパラメーターについてはすでに説明しました。新しいパラメーターのいくつかは、ここで説明する代替インデックスの定義に使用されます。

シニア番号 説明付きのパラメーター
1

DEFINE AIX

「AIXの定義」コマンドは、代替索引を定義し、そのコンポーネントのパラメーター属性を指定するために使用されます。

2

NAME

NAMEは、代替インデックスの名前を指定します。

3

RELATE

RELATEは、代替索引が作成されるVSAMクラスターの名前を指定します。

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEYは、代替インデックスが一意であることを指定し、NONUNIQUEKEYは、重複が存在する可能性があることを指定します。

5

UPGRADE / NOUPGRADE

UPGRADEは、ベースクラスターが変更された場合に代替インデックスを変更する必要があることを指定し、NOUPGRADEは、ベースクラスターが変更された場合に代替インデックスをそのままにしておく必要があることを指定します。

以下は、JCLで代替インデックスを定義する方法を示す基本的な例です。

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE AIX (NAME(MY.VSAM.KSDSAIX)      -
   RELATE(MY.VSAM.KSDSFILE)               -
   CISZ(4096)                             -
   FREESPACE(20,20)                       -
   KEYS(20,7)                             -
   NONUNIQUEKEY                           -
   UPGRADE                                -
   RECORDSIZE(80,80))                     -
   DATA(NAME(MY.VSAM.KSDSAIX.DATA))       -
   INDEX(NAME(MY.VSAM.KSDSAIX.INDEX))
/*

メインフレームサーバーで上記のJCLを実行する場合。MAXCC = 0で実行する必要があり、MY.VSAM.KSDSAIX代替インデックスが作成されます。

パスを定義する

パスの定義は、代替インデックスをベースクラスターに関連付けるために使用されます。パスを定義するときに、パスの名前と、このパスが関連する代替インデックスを指定します。

DEFINE PATH                        -
NAME(alternate-index-path-name)    -
PATHENTRY(alternate-index-name))

上記の構文には2つのパラメーターがあります。NAMEは代替インデックスパス名を指定するために使用され、PATHENTRYは代替インデックス名を指定するために使用されます。

以下は、JCLでパスを定義するための基本的な例です。

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
DEFINE PATH                          -
   NAME(MY.VSAM.KSDSAIX.PATH)    -
   PATHENTRY(MY.VSAM.KSDSAIX))
/*

メインフレームサーバーで上記のJCLを実行する場合。MAXCC = 0で実行する必要があり、代替インデックスからベースクラスターへのパスを作成します。

ビルインデックス

BLDINDEXコマンドは、代替索引を作成するために使用されます。BLDINDEXは、VSAM索引付きデータ・セット(または基本クラスター)内のすべてのレコードを読み取り、代替索引を作成するために必要なデータを抽出します。

BLDINDEX                           -
INDATASET(vsam-cluster-name)       -
OUTDATASET(alternate-index-name))

上記の構文には2つのパラメーターがあります。INDATASETはVSAMクラスター名を指定するために使用され、OUTDATASETは代替索引名を指定するために使用されます。

以下は、JCLでインデックスを作成するための基本的な例です。

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   BLDINDEX                           -
   INDATASET(MY.VSAM.KSDSFILE)        -
   OUTDATASET(MY.VSAM.KSDSAIX))
/*

メインフレームサーバーで上記のJCLを実行する場合。MAXCC = 0で実行する必要があり、インデックスを作成します。