VSAM - Index alternatif

L'index alternatif est l'index supplémentaire créé pour les ensembles de données KSDS / ESDS en plus de leur index principal. Un autre index permet d'accéder aux enregistrements à l'aide de plusieurs clés. La clé de l'index alternatif peut être une clé non unique, elle peut avoir des doublons.

Création d'un index alternatif

Les étapes suivantes sont utilisées pour créer un index alternatif -

  • Définir un autre index
  • Définir le chemin
  • Indice de construction

Définir un autre index

L'index alternatif est défini en utilisant DEFINE AIX commander.

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))

La syntaxe ci-dessus montre les paramètres utilisés lors de la définition de l'index alternatif. Nous avons déjà discuté de certains paramètres dans Define Cluster Module et certains des nouveaux paramètres sont utilisés pour définir un autre index dont nous discuterons ici -

Sr. Non Paramètres avec description
1

DEFINE AIX

La commande Define AIX est utilisée pour définir un autre index et spécifier les attributs de paramètre pour ses composants.

2

NAME

NAME spécifie le nom de l'index alternatif.

3

RELATE

RELATE spécifie le nom du cluster VSAM pour lequel l'index alternatif est créé.

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEY spécifie que l'index alternatif est unique et NONUNIQUEKEY spécifie que des doublons peuvent exister.

5

UPGRADE / NOUPGRADE

UPGRADE spécifie que l'index alternatif doit être modifié si le cluster de base est modifié et NOUPGRADE spécifie que les index alternatifs doivent être laissés seuls si le cluster de base est modifié.

Exemple

Voici un exemple de base pour montrer comment définir un autre index dans 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))
/*

Si vous exécutez le JCL ci-dessus sur le serveur Mainframes. Il doit s'exécuter avec MAXCC = 0 et créer un autre index MY.VSAM.KSDSAIX.

Définir le chemin

Define Path est utilisé pour relier l'index alternatif au cluster de base. Lors de la définition du chemin, nous spécifions le nom du chemin et l'index alternatif auquel ce chemin est lié.

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

La syntaxe ci-dessus a deux paramètres. NAME est utilisé pour spécifier le nom de chemin d'index alternatif et PATHENTRY est utilisé pour spécifier le nom d'index alternatif.

Exemple

Voici un exemple de base pour définir Path dans 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))
/*

Si vous exécutez le JCL ci-dessus sur le serveur Mainframes. Il doit s'exécuter avec MAXCC = 0 et il créera un chemin entre l'index alternatif et le cluster de base.

Indice de construction

La commande BLDINDEX est utilisée pour créer l'index alternatif. BLDINDEX lit tous les enregistrements de l'ensemble de données indexées VSAM (ou du cluster de base) et extrait les données nécessaires pour créer l'index alternatif.

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

La syntaxe ci-dessus a deux paramètres. INDATASET est utilisé pour spécifier le nom du cluster VSAM et OUTDATASET est utilisé pour spécifier un autre nom d'index.

Exemple

Voici un exemple de base pour créer un index dans 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))
/*

Si vous exécutez le JCL ci-dessus sur le serveur Mainframes. Il doit s'exécuter avec MAXCC = 0 et il construira l'index.