VSAM - Índice Alternativo

O índice alternativo é o índice adicional criado para conjuntos de dados KSDS / ESDS, além de seu índice primário. Um índice alternativo fornece acesso aos registros usando mais de uma chave. A chave do índice alternativo pode ser uma chave não exclusiva, ela pode ter duplicatas.

Criação de Índice Alternativo

As etapas a seguir são usadas para criar um índice alternativo -

  • Definir Índice Alternativo
  • Definir caminho
  • Índice de construção

Definir Índice Alternativo

Índice alternativo é definido usando 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))

A sintaxe acima mostra os parâmetros que são usados ​​ao definir o índice alternativo. Já discutimos alguns parâmetros no Módulo Define Cluster e alguns dos novos parâmetros são usados ​​na definição do Índice Alternativo que discutiremos aqui -

Sr. Não Parâmetros com Descrição
1

DEFINE AIX

O comando Definir AIX é usado para definir o Índice Alternativo e especificar atributos de parâmetro para seus componentes.

2

NAME

NAME especifica o nome do Índice Alternativo.

3

RELATE

RELATE especifica o nome do cluster VSAM para o qual o índice alternativo é criado.

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEY especifica que o índice alternativo é exclusivo e NONUNIQUEKEY especifica que podem existir duplicatas.

5

UPGRADE / NOUPGRADE

UPGRADE especifica que o índice alternativo deve ser modificado se o cluster base for modificado e NOUPGRADE especifica que os índices alternativos devem ser deixados sozinhos se o cluster base for modificado.

Exemplo

A seguir está um exemplo básico para mostrar como definir um índice alternativo em 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 você for executar o JCL acima no servidor Mainframes. Ele deve ser executado com MAXCC = 0 e criará o índice alternativo MY.VSAM.KSDSAIX.

Definir caminho

Definir caminho é usado para relacionar o índice alternativo ao cluster base. Ao definir o caminho, especificamos o nome do caminho e o índice alternativo ao qual esse caminho está relacionado.

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

A sintaxe acima possui dois parâmetros. NAME é usado para especificar o nome do caminho do índice alternativo e PATHENTRY é usado para especificar o nome do índice alternativo.

Exemplo

A seguir está um exemplo básico para definir o caminho em 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 você for executar o JCL acima no servidor Mainframes. Ele deve ser executado com MAXCC = 0 e criará um caminho entre o Índice Alternativo para o cluster base.

Índice de construção

O comando BLDINDEX é usado para construir o índice alternativo. BLDINDEX lê todos os registros no conjunto de dados indexados VSAM (ou cluster base) e extrai os dados necessários para construir o índice alternativo.

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

A sintaxe acima possui dois parâmetros. INDATASET é usado para especificar o nome do cluster VSAM e OUTDATASET é usado para especificar o nome do índice alternativo.

Exemplo

A seguir está um exemplo básico para construir índice em 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 você for executar o JCL acima no servidor Mainframes. Ele deve ser executado com MAXCC = 0 e criará o índice.