IMS DB - Cobol Basics
Incluímos chamadas DL / I dentro do programa de aplicação COBOL para se comunicar com o banco de dados IMS. Usamos as seguintes instruções DL / I no programa COBOL para acessar o banco de dados -
- Declaração de entrada
- Declaração Goback
- Declaração de Chamada
Declaração de entrada
É usado para passar o controle do DL / I para o programa COBOL. Aqui está a sintaxe da instrução de entrada -
ENTRY 'DLITCBL' USING pcb-name1
[pcb-name2]
A declaração acima está codificada no Procedure Divisionde um programa COBOL. Vamos entrar em detalhes da instrução de entrada no programa COBOL -
O módulo de inicialização em lote aciona o programa aplicativo e é executado sob seu controle.
O DL / I carrega os blocos de controle e módulos necessários e o programa aplicativo, e o controle é fornecido ao programa aplicativo.
DLITCBL significa DL/I to COBOL. A instrução de entrada é usada para definir o ponto de entrada no programa.
Quando chamamos um subprograma em COBOL, seu endereço também é fornecido. Da mesma forma, quando o DL / I passa o controle para o programa aplicativo, ele também fornece o endereço de cada PCB definido no PSB do programa.
Todos os PCBs usados no programa aplicativo devem ser definidos dentro do Linkage Section do programa COBOL porque o PCB reside fora do programa aplicativo.
A definição de PCB dentro da seção de ligação é chamada de PCB Mask.
A relação entre as máscaras de PCB e os PCBs reais no armazenamento é criada listando os PCBs na instrução de entrada. A seqüência de listagem na declaração de entrada deve ser a mesma que aparece no PSBGEN.
Declaração Goback
É usado para passar o controle de volta para o programa de controle IMS. A seguir está a sintaxe da instrução Goback -
GOBACK
Listados abaixo estão os pontos fundamentais a serem observados sobre a declaração Goback -
GOBACK é codificado no final do programa de aplicação. Ele retorna o controle para DL / I do programa.
Não devemos usar STOP RUN, pois ele retorna o controle para o sistema operacional. Se usarmos STOP RUN, o DL / I nunca terá a chance de executar suas funções de terminação. É por isso que, em programas de aplicativos DL / I, a instrução Goback é usada.
Antes de emitir uma instrução Goback, todos os conjuntos de dados não DL / I usados no programa de aplicação COBOL devem ser fechados, caso contrário, o programa será encerrado de forma anormal.
Declaração de Chamada
A instrução de chamada é usada para solicitar serviços DL / I, como a execução de certas operações no banco de dados IMS. Aqui está a sintaxe da instrução de chamada -
CALL 'CBLTDLI' USING DLI Function Code
PCB Mask
Segment I/O Area
[Segment Search Arguments]
A sintaxe acima mostra os parâmetros que você pode usar com a instrução call. Discutiremos cada um deles na tabela a seguir -
S.No. | Parâmetro e Descrição |
---|---|
1 | DLI Function Code Identifica a função DL / I a ser executada. Este argumento é o nome dos quatro campos de caracteres que descrevem a operação de E / S. |
2 | PCB Mask A definição de PCB dentro da seção de ligação é chamada de máscara de PCB. Eles são usados na declaração de entrada. Nenhuma instrução SELECT, ASSIGN, OPEN ou CLOSE é necessária. |
3 | Segment I/O Area Nome de uma área de trabalho de entrada / saída. Esta é uma área do programa aplicativo na qual o DL / I coloca um segmento solicitado. |
4 | Segment Search Arguments Esses são parâmetros opcionais, dependendo do tipo de chamada emitida. Eles são usados para pesquisar segmentos de dados dentro do banco de dados IMS. |
A seguir estão os pontos a serem observados sobre a declaração de convocação -
CBLTDLI significa COBOL to DL/I. É o nome de um módulo de interface editado por link com o módulo de objeto do seu programa.
Após cada chamada DL / I, o DLI armazena um código de status no PCB. O programa pode usar esse código para determinar se a chamada foi bem-sucedida ou falhou.
Exemplo
Para entender melhor o COBOL, você pode seguir nosso tutorial COBOL aqui . O exemplo a seguir mostra a estrutura de um programa COBOL que usa o banco de dados IMS e chamadas DL / I. Discutiremos em detalhes cada um dos parâmetros usados no exemplo nos próximos capítulos.
IDENTIFICATION DIVISION.
PROGRAM-ID. TEST1.
DATA DIVISION.
WORKING-STORAGE SECTION.
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 '.
01 SEGMENT-I-O-AREA PIC X(150).
LINKAGE SECTION.
01 STUDENT-PCB-MASK.
05 STD-DBD-NAME PIC X(8).
05 STD-SEGMENT-LEVEL PIC XX.
05 STD-STATUS-CODE PIC XX.
05 STD-PROC-OPTIONS PIC X(4).
05 FILLER PIC S9(5) COMP.
05 STD-SEGMENT-NAME PIC X(8).
05 STD-KEY-LENGTH PIC S9(5) COMP.
05 STD-NUMB-SENS-SEGS PIC S9(5) COMP.
05 STD-KEY PIC X(11).
PROCEDURE DIVISION.
ENTRY 'DLITCBL' USING STUDENT-PCB-MASK.
A000-READ-PARA.
110-GET-INVENTORY-SEGMENT.
CALL ‘CBLTDLI’ USING DLI-GN
STUDENT-PCB-MASK
SEGMENT-I-O-AREA.
GOBACK.