Queremos incluir DL/I COBOL chamadas dentro programa de aplicação para se comunicar com o IMS banco de dados. Utilizamos os seguintes DL/I as declarações no programa em COBOL para acessar o banco de dados:
Ele é usado para passar o comando da DL/I do programa em COBOL. Aqui é a sintaxe da entrada declaração:
ENTRY 'DLITCBL' USING pcb-name1 [pcb-name2]
A declaração acima é codificado no processo Divisão de um programa em COBOL. Vamos entrar nos detalhes da entrada declaração no programa em COBOL:
O lote a inicialização módulo aciona o programa de aplicação e é executado sob o seu controlo.
O DL/I carrega o necessário módulos e blocos de controle e o programa aplicativo e controle é dado para o programa de aplicação.
DLITCBL representa a DL/I a COBOL. A entrada é usado para definir o ponto de entrada do programa.
Quando chamamos um sub-programa em COBOL, seu endereço também é fornecido. Da mesma forma, quando o DL/I dá o controle para o programa de aplicação, ele também fornece o endereço de cada PCB definida no programa do PSB.
Todos os PCB utilizado no programa de aplicação deve ser definida dentro da seção de articulação do programa em COBOL porque PCB reside fora do programa aplicativo.
A PCB definição dentro da articulação Seção é chamada como os PCB máscara.
A relação entre máscaras e real PCB PCB no armazenamento é criado através de uma lista do PCB na entrada. A seqüência da lista na entrada declaração deverá ser o mesmo que eles apareçam no PSBGEN.
Ele é usado para passar o controle para o programa de controle DO IMS. Sintaxe é a seguinte do retrocesso declaração:
GOBACK
Abaixo estão listados os pontos fundamentais para a nota sobre o retrocesso declaração:
RETROCESSO é codificado no final do programa aplicativo. Ela devolve o controle ao DL/I, a partir do programa.
Não devemos usar PARAR CORRER como ele retorna o controle para o sistema operacional. Se quisermos usar PARAR CORRER, a DL/I nunca tem a oportunidade de realizar sua encerra funções. É por essa razão que, no DL/I programas de aplicação, retrocesso declaração é usada.
Antes da emissão de um retrocesso, todos os não-DL/I datasets utilizados na linguagem COBOL programa aplicativo deve ser fechada, caso contrário, o programa irá encerrar anormalmente.
Comando Call é utilizado para solicitar a DL/I serviços como executar determinadas operações no IMS banco de dados. Aqui é a sintaxe do comando call:
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 o comando call. Vamos discutir cada um deles na tabela a seguir:
S.No. | Parâmetros Descrição |
---|---|
1 | Código função DLI Identifica o DL/I função a ser executada. Este argumento é o nome dos quatro campos de caracteres que descrevem a operação de I/O. |
2 | Máscara PCB A PCB definição dentro da articulação Seção é chamada como os PCB máscara. Eles são usados na entrada. Não SELECIONAR, ATRIBUIR, abrir ou fechar as declarações são necessárias. |
3 | Segmento Área de I/O. Nome de um input/output área de trabalho. Esta é uma área do programa de aplicação em que o DL/I coloca um segmento pedido. |
4 | Segmento argumentos de Pesquisa Estes são parâmetros opcionais dependendo do tipo de apelo. Eles são usados para pesquisar segmentos de dados dentro do IMS banco de dados. |
Abaixo estão os pontos de observação sobre a chamada declaração:
COBOL CBLTDLI representa a DL/I. É o nome de um módulo de interface que é link editado com o programa do módulo objeto.
Depois de cada DL/apelo, a DLI armazena um código de status para o PCB. O programa pode usar este código para determinar se a chamada foi bem sucedida ou não.
Para uma maior compreensão da linguagem COBOL, você pode ir através de nossa linguagem COBOL tutorialhere. O exemplo a seguir mostra a estrutura de um programa em COBOL que utiliza bancos de dados IMS e DL/I as chamadas. Vamos discutir em detalhe cada um dos parâmetros utilizados 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.