IMS DB - Funções DL / I

A função DL / I é o primeiro parâmetro usado em uma chamada DL / I. Esta função informa qual operação será executada no banco de dados IMS pela chamada IMS DL / I. A sintaxe da função DL / I é a seguinte -

01 DLI-FUNCTIONS.
   05 DLI-GU        PIC X(4)    VALUE 'GU  '.
   05 DLI-GHU       PIC X(4)    VALUE 'GHU '.
   05 DLI-GN        PIC X(4)    VALUE 'GN  '.
   05 DLI-GHN       PIC X(4)    VALUE 'GHN '.
   05 DLI-GNP       PIC X(4)    VALUE 'GNP '.
   05 DLI-GHNP      PIC X(4)    VALUE 'GHNP'.
   05 DLI-ISRT      PIC X(4)    VALUE 'ISRT'.
   05 DLI-DLET      PIC X(4)    VALUE 'DLET'.
   05 DLI-REPL      PIC X(4)    VALUE 'REPL'.
   05 DLI-CHKP      PIC X(4)    VALUE 'CHKP'.
   05 DLI-XRST      PIC X(4)    VALUE 'XRST'.
   05 DLI-PCB       PIC X(4)    VALUE 'PCB '.

Esta sintaxe representa os seguintes pontos-chave -

  • Para este parâmetro, podemos fornecer qualquer nome de quatro caracteres como um campo de armazenamento para armazenar o código da função.

  • O parâmetro de função DL / I é codificado na seção de armazenamento de trabalho do programa COBOL.

  • Para especificar a função DL / I, o programador precisa codificar um dos 05 nomes de dados de nível, como DLI-GU em uma chamada DL / I, uma vez que COBOL não permite codificar literais em uma instrução CALL.

  • As funções DL / I são divididas em três categorias: Obter, Atualizar e Outras funções. Vamos discutir cada um deles em detalhes.

Obter funções

As funções get são semelhantes à operação de leitura suportada por qualquer linguagem de programação. A função Get é usada para buscar segmentos de um banco de dados IMS DL / I. As seguintes funções Get são usadas no IMS DB -

  • Seja único
  • Avançar
  • Seja o próximo no pai
  • Get Hold Unique
  • Segure-se em seguida
  • Obtenha o próximo passo no pai

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

Seja único

O código 'GU' é usado para a função Get Unique. Funciona de forma semelhante à instrução de leitura aleatória em COBOL. É usado para buscar uma ocorrência de segmento particular com base nos valores do campo. Os valores de campo podem ser fornecidos usando argumentos de pesquisa de segmento. A sintaxe de uma chamada GU é a seguinte -

CALL 'CBLTDLI' USING DLI-GU
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Se você executar a instrução de chamada acima, fornecendo valores apropriados para todos os parâmetros no programa COBOL, poderá recuperar o segmento na área de E / S do segmento do banco de dados. No exemplo acima, se você fornecer os valores dos campos Biblioteca, Revistas e Saúde, obterá a ocorrência desejada do segmento Saúde.

Avançar

O código 'GN' é usado para a função Get Next. Funciona de forma semelhante à instrução read next em COBOL. É usado para buscar ocorrências de segmento em uma sequência. O padrão predefinido para acessar ocorrências de segmento de dados é hierarquicamente inferior e da esquerda para a direita. A sintaxe de uma chamada GN é a seguinte -

CALL 'CBLTDLI' USING DLI-GN
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Se você executar a instrução de chamada acima, fornecendo valores apropriados para todos os parâmetros no programa COBOL, poderá recuperar a ocorrência do segmento na área de E / S do segmento do banco de dados em uma ordem sequencial. No exemplo acima, ele começa acessando o segmento Biblioteca, depois o segmento Livros e assim por diante. Realizamos a chamada GN repetidamente, até chegarmos à ocorrência do segmento que desejamos.

Seja o próximo no pai

O código 'GNP' é usado para Get Next dentro do Parent. Esta função é usada para recuperar ocorrências de segmento em sequência subordinada a um segmento pai estabelecido. A sintaxe de uma chamada GNP é a seguinte -

CALL 'CBLTDLI' USING DLI-GNP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Get Hold Unique

O código 'GHU' é usado para Get Hold Unique. A função Hold especifica que vamos atualizar o segmento após a recuperação. A função Get Hold Unique corresponde à chamada Get Unique. Dada a seguir está a sintaxe de uma chamada GHU -

CALL 'CBLTDLI' USING DLI-GHU
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Segure-se em seguida

O código 'GHN' é usado para Get Hold Next. A função Hold especifica que vamos atualizar o segmento após a recuperação. A função Get Hold Next corresponde à chamada Get Next. Dada abaixo está a sintaxe de uma chamada GHN -

CALL 'CBLTDLI' USING DLI-GHN
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Obtenha o próximo passo no pai

O código 'GHNP' é usado para Get Hold Next no Parent. A função Hold especifica que vamos atualizar o segmento após a recuperação. A função Get Hold Next dentro do Parent corresponde à chamada Get Next dentro do Parent. A seguir está a sintaxe de uma chamada GHNP -

CALL 'CBLTDLI' USING DLI-GHNP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Atualizar funções

As funções de atualização são semelhantes às operações de reescrever ou inserir em qualquer outra linguagem de programação. As funções de atualização são usadas para atualizar segmentos em um banco de dados IMS DL / I. Antes de usar a função de atualização, deve haver uma chamada bem-sucedida com a cláusula Hold para a ocorrência do segmento. As seguintes funções de atualização são usadas no IMS DB -

  • Insert
  • Delete
  • Replace

Inserir

O código 'ISRT' é usado para a função Inserir. A função ISRT é usada para adicionar um novo segmento ao banco de dados. É usado para alterar um banco de dados existente ou carregar um novo banco de dados. A seguir está a sintaxe de uma chamada ISRT -

CALL 'CBLTDLI' USING DLI-ISRT
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Excluir

O código 'DLET' é usado para a função Excluir. É usado para remover um segmento de um banco de dados IMS DL / I. A seguir está a sintaxe de uma chamada DLET -

CALL 'CBLTDLI' USING DLI-DLET
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Substituir

O código 'REPL' é usado para Get Hold Next dentro do Parent. A função Substituir é usada para substituir um segmento no banco de dados IMS DL / I. A seguir está a sintaxe de uma chamada REPL -

CALL 'CBLTDLI' USING DLI-REPL
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Outras funções

As seguintes outras funções são usadas em chamadas IMS DL / I -

  • Checkpoint
  • Restart
  • PCB

Checkpoint

O código 'CHKP' é usado para a função Checkpoint. Ele é usado nos recursos de recuperação do IMS. A seguir está a sintaxe de uma chamada CHKP -

CALL 'CBLTDLI' USING DLI-CHKP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Reiniciar

O código 'XRST' é usado para a função Reiniciar. Ele é usado nos recursos de reinicialização do IMS. A seguir está a sintaxe de uma chamada XRST -

CALL 'CBLTDLI' USING DLI-XRST
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

PCB

A função PCB é usada em programas CICS no banco de dados IMS DL / I. Dada a seguir está a sintaxe de uma chamada PCB -

CALL 'CBLTDLI' USING DLI-PCB
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Você pode encontrar mais detalhes sobre essas funções no capítulo de recuperação.