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.