Menu principal                 [Fechar]


CICS - Usando o DL/I com o CICS


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF.

CICS - Usando o DL/I com o CICS

Quando trabalhamos com o CICS, pode haver a necessidade de acessarmos um banco de dados hierarquico usando o DL/I.

O CICS prove a facilidade de acessarmos o DL/I, utilizando todos os conceitos aprendidos com o uso do DL/I.

O PSB que irá ser acessado deverá estar definido em uma tabela propria denominada 'DLZACT'.

EM um programa CICS usando DL/I tambem é necessário a checagem do STATUS apos cada comando de acesso ao banco de dados.

O compilador inclui um item de grupo denominado 'DLZDIB' onde contem o campo 'DIBSTAT' que é o local onde o CICS coloca o status retornado após cada execucao de comando DL/I.

Após cada comando de acesso DL/I deve-se checar o status retornado através do campo 'DIBSTAT'.

Os codigos retornados no 'DIBSTAT' são os códigos padrões do DL/I.

Comando SCHEDULE

Formato do comando:

EXEC DLI SCHEDULE Explicação do argumento
PSB ('NOME PSB') Especifica-se o nome do PSB que deseja-se tornar disponível para o acesso do programa em CICS.

Este comando é utilizado para 'assinalar' um PSB para acesso do programa em CICS.

Este comando será utilizado somente quando houver necessidade de acesso a um banco de dados.

Exemplo do comando:




          EXEC     DLI   SCHEDULE    PSB    ('PS06001')
          END-EXEC.
      

Explicação do exemplo:

O CICS, através do DL/I tornar disponível o PSB especificado para o acesso do programa.

Condicao de excecao:

As condições de exceção deste comando são tratadas pelo programa 'ABENDLI'. portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'.

Comando TERMINATE

Formato do comando:

EXEC DLI TERMINATE Não possui argumentos

Este comando é utilizado para terminar o acesso ao DL/I pelo programa em CICS.

Este comando será utilizado sempre que não mais houver necessidade de acesso ao banco de dados.

Exemplo do comando:



          EXEC     DLI  TERMINATE    
          END-EXEC.
      

Explicação do exemplo:

O CICS, através do DL/I terminará o acesso ao banco de dados atraves do PSB 'SCHEDULADO' anteriormente.

Condição de exceção:

As condições de exceção deste comando são tratadas pelo programa 'ABENDLI'. Portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'.

Comando SYNCPOINT

Formato do comando:

EXEC CICS SYNCPOINT Explicação do argumento
ROLLBACK Especifica-se que as alterações efetuadas devem ser ignoradas.

Este comando é utilizado para ignorar as atualizações efetuadas no banco de dados durante a execução da tarefa.

Este comando será utilizado sempre que ocorrer algum problema na atualização do banco de dados.

A execução do comando sem a opção 'ROLLBACK' efetiva as atualizações até então efetuadas pela tarefa.

Exemplo do comando:



          EXEC     CICS  SYNCPOINT  ROLLBACK
          END-EXEC.
      

Explicação do exemplo:

O CICS irá ignorar todas as atualizações efetuadas no banco de dados pelo programa de aplicação. após a execução deste comando, o banco de dados ficará com os dados inalterados.

Condição de exceção:

As condições de exceção deste comando são tratadas pelo programa 'ABENDLI'. Portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'. Comandos de acesso e atualização do banco de dados.

Os comandos de acesso ao banco de dados seguem ao formato abaixo:



          EXEC     DLI  CODIGO   USING  PCB (NR PCB)
                                        WHERE   (CONDICAO)
                                        FIELDLENGTH (TAMANHO)
                                        SEGMENT (NOME SGTO)
                                        FROM/INTO (AREA DADOS)
                                        SEGLENGTH (TAMANHO)
          END-EXEC.
      

Onde:

  • CODIGO: É o codigo de funcao que deseja-se executar que pode ser GU, GN, GNP, REPL, ISRT e DLET.
  • PCB: especifica-se o numero do PCB no PSB correspondente. Varia de 1 a quantidade de PCB'S no PSB.
  • WHERE: Especifica-se o campo chave do segmento e a condicao de comparacao. equivale a usar um SSA qualificado.
  • FIELDLENGTH: Especifica-se o tamanho do campo chave
  • SEGMENT: Especifica-se o nome do segmento que deseja acessar.
  • FROM: Especifica-se a area de dados de onde o dl/i pegará os dados, se estiver alterando o banco de dados.
  • INTO: Especifica-se a area de dados onde o segmento acessado será armazenado, se estiver lendo o banco de dados.
  • SEGLENGTH: Especifica-se o tamanho da area especificada na opção 'SEGMENT'.
  • END-EXEC: Delimitador para comandos para programas COBOL. Indica o final de um comando CICS.
Exemplo para programa COBOL de um comando com SSA qualificado:


          EXEC     DLI   GU  USING  PCB (1)
                                    SEGMENT (SG0801)
                                    WHERE (FL080101 =
                                    WORK-CARGO-DB08)
                                    FIELDLENGTH (7)
                                    INTO (SG0801)
                                    SEGLENGTH (+100)
          END-EXEC.
      

Explicação do exemplo:

  • O CICS, atraves do DL/I, recuperará o SG0801 que satisfaça a condição especificada no parametro 'WHERE'.
  • O tamanho do campo chave do segmento é 7 bytes e o tamanho do segmento é 100 bytes.
  • Os dados do segmento após o acesso serão colocados na área de dados SG0801.
  • Foi utlizado o primeiro PCB do PSB especificado na tabela "DLZACT" para acesso deste programa.
Exemplo para programa COBOL de um comando coM SSA nao qualificado:


          EXEC     DLI   GNP  USING  PCB (5)
                                     SEGMENT (SG0602)
                                     INTO (SG0602)
                                     SEGLENGTH (+162)
          END-EXEC.
      

Explicação do exemplo:

O CICS, através do DL/I, recuperará o próximo SG0602 que esteja subordinado a um pai especifico estabelecido através de um 'GU' ou 'GN'. O tamanho do segmento é 162 bytes. Os dados do segmento após o acesso serão colocados na área de dados SG0602. Foi utilizado o quinto PCB do PSB especificado na tabela "DLZACT" para acesso deste programa.

Observação:

Lembrar que apos cada comando de acesso ao banco de dados deve ser checado o campo 'DIBSTAT' tomando as providências necessárias para cada caso.




Volta para o início da página

Volta a página anterior

Volta ao Menu Principal