VSAM: índice alternativo

El índice alternativo es el índice adicional que se crea para los conjuntos de datos KSDS / ESDS además de su índice principal. Un índice alternativo proporciona acceso a los registros mediante el uso de más de una clave. La clave del índice alternativo puede ser una clave no única, puede tener duplicados.

Creación de índice alternativo

Los siguientes pasos se utilizan para crear un índice alternativo:

  • Definir índice alternativo
  • Definir ruta
  • Índice de construcción

Definir índice alternativo

El índice alternativo se define mediante DEFINE AIX mando.

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 sintaxis anterior muestra los parámetros que se utilizan al definir el índice alternativo. Ya hemos discutido algunos parámetros en Definir módulo de clúster y algunos de los nuevos parámetros se utilizan para definir el índice alternativo que discutiremos aquí:

No Señor Parámetros con descripción
1

DEFINE AIX

El comando Definir AIX se utiliza para definir el índice alternativo y especificar atributos de parámetros para sus componentes.

2

NAME

NAME especifica el nombre del índice alternativo.

3

RELATE

RELATE especifica el nombre del clúster VSAM para el que se crea el índice alternativo.

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEY especifica que el índice alternativo es único y NONUNIQUEKEY especifica que pueden existir duplicados.

5

UPGRADE / NOUPGRADE

UPGRADE especifica que el índice alternativo debe modificarse si se modifica el clúster base y NOUPGRADE especifica que los índices alternativos deben dejarse en paz si se modifica el clúster base.

Ejemplo

A continuación se muestra un ejemplo básico para mostrar cómo definir un índice alternativo en 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 va a ejecutar el JCL anterior en el servidor Mainframes. Debería ejecutarse con MAXCC = 0 y creará MY.VSAM.KSDSAIX Alternate Index.

Definir ruta

Definir ruta se utiliza para relacionar el índice alternativo con el clúster base. Al definir la ruta, especificamos el nombre de la ruta y el índice alternativo con el que está relacionada esta ruta.

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

La sintaxis anterior tiene dos parámetros. NAME se utiliza para especificar el nombre de ruta de índice alternativo y PATHENTRY se utiliza para especificar el nombre de índice alternativo.

Ejemplo

A continuación se muestra un ejemplo básico para definir la ruta en 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 va a ejecutar el JCL anterior en el servidor Mainframes. Debería ejecutarse con MAXCC = 0 y creará una ruta entre el índice alternativo y el clúster base.

Índice de construcción

El comando BLDINDEX se usa para construir el índice alternativo. BLDINDEX lee todos los registros en el conjunto de datos indexados VSAM (o clúster base) y extrae los datos necesarios para construir el índice alternativo.

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

La sintaxis anterior tiene dos parámetros. INDATASET se utiliza para especificar el nombre del clúster VSAM y OUTDATASET se utiliza para especificar el nombre de índice alternativo.

Ejemplo

A continuación se muestra un ejemplo básico para crear índices en 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 va a ejecutar el JCL anterior en el servidor Mainframes. Debería ejecutarse con MAXCC = 0 y construirá el índice.