IMS DB - recuperação de dados

Os vários métodos de recuperação de dados usados ​​em chamadas IMS DL / I são os seguintes -

  • Chamada GU
  • GN Call
  • Usando códigos de comando
  • Processamento Múltiplo

Vamos considerar a seguinte estrutura de banco de dados IMS para entender as chamadas de função de recuperação de dados -

Chamada GU

Os fundamentos da chamada GU são os seguintes -

  • A chamada GU é conhecida como chamada Get Unique. É usado para processamento aleatório.

  • Se um aplicativo não atualizar o banco de dados regularmente ou se o número de atualizações do banco de dados for menor, usamos o processamento aleatório.

  • A chamada GU é usada para colocar o ponteiro em uma posição particular para posterior recuperação sequencial.

  • As chamadas GU são independentes da posição do ponteiro estabelecida pelas chamadas anteriores.

  • O processamento de chamadas GU é baseado nos campos-chave exclusivos fornecidos na instrução de chamada.

  • Se fornecermos um campo-chave que não seja único, DL / I retornará a primeira ocorrência de segmento do campo-chave.

CALL 'CBLTDLI' USING DLI-GU
                     PCB-NAME
                     IO-AREA
                     LIBRARY-SSA
                     BOOKS-SSA
                     ENGINEERING-SSA
                     IT-SSA

O exemplo acima mostra que emitimos uma chamada GU fornecendo um conjunto completo de SSAs qualificados. Inclui todos os campos-chave, começando do nível raiz até a ocorrência do segmento que desejamos recuperar.

Considerações sobre a chamada GU

Se não fornecermos o conjunto completo de SSAs qualificados na chamada, DL / I funcionará da seguinte maneira -

  • Quando usamos um SSA não qualificado em uma chamada GU, DL / I acessa a primeira ocorrência de segmento no banco de dados que atende aos critérios que você especificar.

  • Quando emitimos uma chamada GU sem SSAs, DL / I retorna a primeira ocorrência do segmento raiz no banco de dados.

  • Se alguns SSAs em níveis intermediários não forem mencionados na chamada, DL / I usa a posição estabelecida ou o valor padrão de um SSA não qualificado para o segmento.

Códigos de status

A tabela a seguir mostra os códigos de status relevantes após uma chamada GU -

S.Não Código de status e descrição
1

Spaces

Chamada bem sucedida

2

GE

DL / I não consegui encontrar um segmento que atendesse aos critérios especificados na chamada

GN Call

Os fundamentos da chamada GN são os seguintes -

  • A chamada GN é conhecida como chamada Get Next. É usado para processamento sequencial básico.

  • A posição inicial do ponteiro no banco de dados é antes do segmento raiz do primeiro registro do banco de dados.

  • A posição do ponteiro do banco de dados é antes da próxima ocorrência de segmento na sequência, após uma chamada GN com sucesso.

  • A chamada GN começa no banco de dados a partir da posição estabelecida pela chamada anterior.

  • Se uma chamada GN não for qualificada, ela retornará a próxima ocorrência do segmento no banco de dados, independentemente do seu tipo, em seqüência hierárquica.

  • Se uma chamada GN incluir SSAs, DL / I recupera apenas segmentos que atendem aos requisitos de todos os SSAs especificados.

CALL 'CBLTDLI' USING DLI-GN
                     PCB-NAME
                     IO-AREA
                     BOOKS-SSA

O exemplo acima mostra que emitimos uma chamada GN fornecendo a posição inicial para ler os registros sequencialmente. Ele busca a primeira ocorrência do segmento LIVROS.

Códigos de status

A tabela a seguir mostra os códigos de status relevantes após uma chamada GN -

S.Não Código de status e descrição
1

Spaces

Chamada bem sucedida

2

GE

DL / I não consegui encontrar um segmento que atendesse aos critérios especificados na chamada.

3

GA

Uma chamada GN não qualificada sobe um nível na hierarquia do banco de dados para buscar o segmento.

4

GB

O fim do banco de dados foi alcançado e o segmento não foi encontrado.

GK

Uma chamada GN não qualificada tenta buscar um segmento de um tipo particular diferente daquele que acabou de ser recuperado, mas permanece no mesmo nível hierárquico.

Códigos de Comando

Os códigos de comando são usados ​​com chamadas para buscar uma ocorrência de segmento. Os vários códigos de comando usados ​​com chamadas são discutidos abaixo.

Código de Comando F

Pontos a serem observados -

  • Quando um código de comando F é especificado em uma chamada, a chamada processa a primeira ocorrência do segmento.

  • Os códigos de comando F podem ser usados ​​quando queremos processar sequencialmente e podem ser usados ​​com chamadas GN e GNP.

  • Se especificarmos um código de comando F com uma chamada GU, ele não terá qualquer significado, pois as chamadas GU buscam a primeira ocorrência de segmento por padrão.

Código de Comando L

Pontos a serem observados -

  • Quando um código de comando L é especificado em uma chamada, a chamada processa a última ocorrência do segmento.

  • Os códigos de comando L podem ser usados ​​quando queremos processar sequencialmente e podem ser usados ​​com chamadas GN e chamadas GNP.

Código de Comando D

Pontos a serem observados -

  • O código de comando D é usado para buscar mais de uma ocorrência de segmento usando apenas uma única chamada.

  • Normalmente DL / I opera no segmento de nível mais baixo especificado em um SSA, mas em muitos casos, queremos dados de outros níveis também. Nesses casos, podemos usar o código de comando D.

  • O código de comando D facilita a recuperação de todo o caminho dos segmentos.

Código de Comando C

Pontos a serem observados -

  • O código de comando C é usado para concatenar chaves.

  • Usar operadores relacionais é um pouco complexo, pois precisamos especificar um nome de campo, um operador relacional e um valor de pesquisa. Em vez disso, podemos usar um código de comando C para fornecer uma chave concatenada.

O exemplo a seguir mostra o uso do código de comando C -

01 LOCATION-SSA.
   05 FILLER		     PIC X(11) VALUE ‘INLOCSEG*C(‘.
   05 LIBRARY-SSA      PIC X(5).
   05 BOOKS-SSA        PIC X(4).
   05 ENGINEERING-SSA  PIC X(6).
   05 IT-SSA           PIC X(3)
   05 FILLER		     PIC X	VALUE ‘)’.

CALL 'CBLTDLI' USING DLI-GU
                     PCB-NAME
                     IO-AREA
                     LOCATION-SSA

Código de Comando P

Pontos a serem observados -

  • Quando emitimos uma chamada GU ou GN, o DL / I estabelece sua ascendência no segmento de nível mais baixo que é recuperado.

  • Se incluirmos um código de comando P, o DL / I estabelece sua linhagem em um segmento de nível superior no caminho hierárquico.

Código de Comando U

Pontos a serem observados -

  • Quando um código de comando U é especificado em um SSA não qualificado em uma chamada GN, o DL / I restringe a busca pelo segmento.

  • O código de comando U é ignorado se for usado com um SSA qualificado.

Código de Comando V

Pontos a serem observados -

  • O código de comando V funciona de forma semelhante ao código de comando U, mas restringe a busca de um segmento em um nível específico e todos os níveis acima da hierarquia.

  • O código de comando V é ignorado quando usado com um SSA qualificado.

Código de Comando Q

Pontos a serem observados -

  • O código de comando Q é usado para enfileirar ou reservar um segmento para uso exclusivo de seu programa aplicativo.

  • O código de comando Q é usado em um ambiente interativo onde outro programa pode fazer uma alteração em um segmento.

Processamento Múltiplo

Um programa pode ter várias posições no banco de dados IMS, o que é conhecido como processamento múltiplo. O processamento múltiplo pode ser feito de duas maneiras -

  • Múltiplos PCBs
  • Posicionamento Múltiplo

Múltiplos PCBs

Vários PCBs podem ser definidos para um único banco de dados. Se houver vários PCBs, um programa aplicativo pode ter diferentes visualizações dele. Este método para implementar processamento múltiplo é ineficiente por causa das sobrecargas impostas pelos PCBs extras.

Posicionamento Múltiplo

Um programa pode manter várias posições em um banco de dados usando um único PCB. Isso é conseguido mantendo uma posição distinta para cada caminho hierárquico. O posicionamento múltiplo é usado para acessar segmentos de dois ou mais tipos sequencialmente ao mesmo tempo.