VSAM - Indice alternativo

L'indice alternativo è l'indice aggiuntivo creato per i set di dati KSDS / ESDS oltre al loro indice principale. Un indice alternativo fornisce l'accesso ai record utilizzando più di una chiave. La chiave dell'indice alternativo può essere una chiave non univoca, può avere duplicati.

Creazione di un indice alternativo

I passaggi seguenti vengono utilizzati per creare un indice alternativo:

  • Definisci indice alternativo
  • Definisci percorso
  • Indice di costruzione

Definisci indice alternativo

L'indice alternativo viene definito utilizzando DEFINE AIX comando.

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 sintassi sopra mostra i parametri utilizzati durante la definizione dell'indice alternativo. Abbiamo già discusso alcuni parametri in Define Cluster Module e alcuni dei nuovi parametri sono utilizzati nella definizione dell'Indice Alternativo che discuteremo qui -

Suor n Parametri con descrizione
1

DEFINE AIX

Il comando Define AIX viene utilizzato per definire l'indice alternativo e specificare gli attributi dei parametri per i suoi componenti.

2

NAME

NAME specifica il nome dell'indice alternativo.

3

RELATE

RELATE specifica il nome del cluster VSAM per cui viene creato l'indice alternativo.

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEY specifica che l'indice alternativo è univoco e NONUNIQUEKEY specifica che possono esistere duplicati.

5

UPGRADE / NOUPGRADE

UPGRADE specifica che l'indice alternativo deve essere modificato se il cluster di base viene modificato e NOUPGRADE specifica che gli indici alternativi devono essere lasciati soli se il cluster di base viene modificato.

Esempio

Di seguito è riportato un esempio di base per mostrare come definire un indice alternativo in 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))
/*

Se eseguirai il JCL sopra sul server Mainframes. Dovrebbe essere eseguito con MAXCC = 0 e creerà l'indice alternativo MY.VSAM.KSDSAIX.

Definisci percorso

Define Path viene utilizzato per correlare l'indice alternativo al cluster di base. Durante la definizione del percorso, specifichiamo il nome del percorso e l'indice alternativo a cui questo percorso è correlato.

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

La sintassi sopra ha due parametri. NAME viene utilizzato per specificare il nome del percorso dell'indice alternativo e PATHENTRY viene utilizzato per specificare il nome dell'indice alternativo.

Esempio

Di seguito è riportato un esempio di base per definire Path in 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))
/*

Se eseguirai il JCL sopra sul server Mainframes. Dovrebbe essere eseguito con MAXCC = 0 e creerà il percorso tra l'indice alternativo e il cluster di base.

Indice di costruzione

Il comando BLDINDEX viene utilizzato per creare l'indice alternativo. BLDINDEX legge tutti i record nel set di dati indicizzato VSAM (o cluster di base) ed estrae i dati necessari per creare l'indice alternativo.

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

La sintassi sopra ha due parametri. INDATASET viene utilizzato per specificare il nome del cluster VSAM e OUTDATASET viene utilizzato per specificare il nome dell'indice alternativo.

Esempio

Di seguito è riportato un esempio di base per creare un indice in 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))
/*

Se eseguirai il JCL sopra sul server Mainframes. Dovrebbe essere eseguito con MAXCC = 0 e costruirà l'indice.