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.