COBOL - VSAM data sets: KSDS, ESDS, RRDS - www.cadcobol.com.br



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - VSAM data sets: KSDS, ESDS, RRDS - In English

O CICS® suporta o acesso aos seguintes tipos de conjunto de dados, conjunto de dados sequenciados por chave (KSDS), conjunto de dados sequenciado de entrada (ESDS) e conjunto de dados de registro relativo (RRDS) (comprimentos de registro fixos e variáveis).

Os conjuntos de dados VSAM são mantidos no armazenamento auxiliar de dispositivos de armazenamento de acesso direto (DASD).
VSAM divide seu armazenamento de conjunto de dados em áreas de controle (CA), que são posteriormente divididas em intervalos de controle (CI).
Os intervalos de controle são a unidade de transmissão de dados entre o armazenamento virtual e o auxiliar.
Cada um tem tamanho fixo e, em geral, contém uma série de registros.
Um KSDS ou ESDS pode ter registros que se estendem por mais de um intervalo de controle.
Eles são chamados de registros estendidos.

Conjunto de dados sequenciados por chave (KSDS)

Um conjunto de dados sequenciado por chave tem cada um de seus registros identificados por uma chave.
A chave de cada registro é um campo em uma posição predefinida dentro do registro.
Cada chave deve ser única no conjunto de dados.

Quando o conjunto de dados é inicialmente carregado com dados ou quando novos registros são adicionados, a ordem lógica dos registros depende da sequência de intercalação do campo-chave.
Isso também corrige a ordem na qual você recupera os registros ao navegar pelo conjunto de dados.

Para encontrar a localização física de um registro em um KSDS, o VSAM cria e mantém um índice.
Isso relaciona a chave de cada registro à localização relativa do registro no conjunto de dados.
Quando você adiciona ou exclui registros, esse índice é atualizado de acordo.

O CICS suporta, no modo RL e não RLS, conjuntos de dados KSDS que são definidos com formato estendido e atributos de endereçamento estendido.

Conjunto de dados sequenciados de entrada (ESDS)

Um conjunto de dados sequenciado por entrada é aquele em que cada registro é identificado por seu endereço de byte relativo (RBA).

Os registros são mantidos em um ESDS na ordem em que foram carregados pela primeira vez no conjunto de dados.
Novos registros adicionados a um ESDS sempre vão após o último registro no conjunto de dados.
Você não pode excluir registros ou alterar seus comprimentos.
Depois que um registro é armazenado em um ESDS, seu RBA permanece constante.
Durante a navegação, os registros são recuperados na ordem em que foram adicionados ao conjunto de dados.

Um RBA padrão é um número de 32 bits sem sinal.
O uso de um RBA de 32 bits significa que um ESDS padrão não pode conter mais de 4 GB de dados.
No entanto, existe um ESDS diferente que suporta endereços de bytes relativos estendidos de 64 bits (XRBA s) e que, portanto, não está sujeito ao limite de 4 GB.
Este tipo de ESDS é denominado formato estendido, conjunto de dados ESDS de endereçamento estendido.
Por questões de brevidade, iremos nos referir a ele como ESDS de endereçamento estendido ou ESDS estendido.
O CICS suporta XRBAs de 64 bits e conjuntos de dados ESDS estendidos.

Conjunto de dados de registro relativo (RRDS)

Um conjunto de dados de registro relativo possui registros que são identificados por seu número de registro relativo (RRN).
O primeiro registro no conjunto de dados é RRN 1, o segundo é RRN 2 e assim por diante.

Os registros em um RRDS podem ser registros de comprimento fixo ou variável e a maneira como o VSAM trata os dados depende se o conjunto de dados é um RRDS fixo ou variável.
Um RRDS fixo possui slots de comprimento fixo predefinidos para VSAM, nos quais os registros são armazenados.
O comprimento de um registro em um RRDS fixo é sempre igual ao tamanho do slot.
VSAM localiza registros em um RRDS fixo multiplicando o tamanho do slot pelo RRN (que você fornece na solicitação de controle de arquivo), para calcular o deslocamento de byte desde o início do conjunto de dados.

Uma variável RRDS pode aceitar registros de qualquer comprimento até o máximo para o conjunto de dados.
Em uma variável RRDS VSAM localiza os registros com um índice.

Um RRDS fixo geralmente oferece melhor desempenho.
Uma variável RRDS oferece uma função maior.

O CICS suporta o acesso a conjuntos de dados RRDS ou VRRDS estendidos se você usar um RRN que pode ser especificado em um campo RRN de quatro bytes para acessar os registros que residem além do limite de 4 GB.

Conjuntos de dados vazios

Um conjunto de dados vazio é um conjunto de dados que ainda não teve nenhum registro gravado nele.
O VSAM impõe várias restrições a um conjunto de dados vazio que é aberto no modo de acesso não RLS.
No entanto, o CICS oculta todas essas restrições de você, permitindo que você use um conjunto de dados vazio da mesma maneira que um conjunto de dados que contém dados, independentemente do modo de acesso.

Índices alternativos VSAM

Às vezes, você deseja acessar o mesmo conjunto de registros de maneiras diferentes.
Por exemplo, você pode ter registros em um conjunto de dados pessoais que têm como chave um número de funcionário.
Não importa quantos Smiths você tenha, cada um deles tem um número de funcionário exclusivo.
Pense nisso como a chave primária.

Se você estivesse produzindo uma lista telefônica a partir do conjunto de dados, gostaria de listar as pessoas pelo nome em vez do número do funcionário.
Você pode identificar registros em um conjunto de dados com uma chave secundária (alternativa) em vez da chave primária descrita anteriormente.
Portanto, a chave primária é o número do funcionário e o nome do funcionário é a chave alternativa.
As chaves alternativas são como a chave primária em um KSDS - campos de comprimento fixo e posição fixa dentro do registro.
Você pode ter qualquer número de chaves alternativas por arquivo base e, ao contrário da chave primária ou base, as chaves alternativas não precisam ser exclusivas.

Para continuar o exemplo pessoal, o código de departamento do funcionário pode ser definido como uma chave alternativa adicional.

O VSAM permite que os conjuntos de dados KSDS e ESDS (mas não RRDS ou ESDS estendido) tenham chaves alternativas.
Quando o conjunto de dados é criado, um índice secundário ou alternativo é construído para cada chave alternativa no registro e está relacionado à chave primária ou básica.
Para acessar registros usando uma chave alternativa, você deve definir um objeto VSAM adicional, um caminho de índice alternativo.
O caminho então se comporta como se fosse um KSDS, no qual os registros são acessados ??usando a chave alternativa.

Quando você atualiza um registro por meio de um caminho, o índice alternativo correspondente é atualizado para refletir a mudança.
No entanto, se você atualizar o registro diretamente por meio da base ou por um caminho diferente, o índice alternativo só será atualizado se tiver sido definido para VSAM (quando criado) para pertencer ao conjunto de atualização do conjunto de dados base.
Para a maioria dos aplicativos, você provavelmente deseja que seu índice alternativo esteja no conjunto de atualização.

Um programa de aplicativo CICS desconsidera se o arquivo que está acessando é um caminho ou a base.
Em um sistema CICS em execução, o acesso a um único conjunto de dados de base pode ser feito por meio da base e por qualquer um dos caminhos definidos para ela, se cada rota de acesso for definida para o CICS.

Também é possível para um programa de aplicativo CICS acessar um arquivo que foi diretamente definido como um índice alternativo em vez de um caminho.
Isso resulta em dados de índice sendo retornados ao programa aplicativo em vez de dados de arquivo.
Esta operação não é compatível com arquivos abertos no modo de compartilhamento de nível de registro (RLS).