Você está na página 1de 22

Manual de programao IMS/VS- DL/I

Programao de Aplicao IMS/VS DL/I

10/10/2002

ScannapiecoPgina 1 de 22

Manual de programao IMS/VS- DL/I

MANUAL DE PROGRAMAO IMS/VS- DL/I......................................................................................................................1 MANUAL DE PROGRAMAO IMS/VS- DL/I......................................................................................................................2 Introduo..............................................................................................................................................................................3 Fluxo de acesso Batch...........................................................................................................................................................4 SISTEMA OPERACIONAL.........................................................................................................................................................4 ..........................................................................................................................................................................................4 Estrutura do Banco de Dados Hierrquica (IMS).................................................................................................................6 Definio de Database Descripiton (DBD)...........................................................................................................................9 Definio de PSB (Programa Specification Block).............................................................................................................11 Funes disponveis para acesso.........................................................................................................................................13 Recuperao de Banco de Dados........................................................................................................................................15 Codificao do programa de aplicao..............................................................................................................................16

10/10/2002

Pgina 2 de 22

Manual de programao IMS/VS- DL/I

Introduo

DL/I uma Interface entre o programa de aplicao e o DATABASE.

Banco de Dados

Sistema Operacional

sub-sistema

DL / I

Programa de Aplicao

10/10/2002

Pgina 3 de 22

Manual de programao IMS/VS- DL/I

Fluxo de acesso Batch

Sistema Operacional
PSB DL/I Controller
PCB

Input 2

Programa de Aplicao Data Language/1 Interface Banco de Dados 6


DBD

Output 5 4

Data Language/1

Mtodos de Acesso

Data Base Logging

LOG

Database Buffers Pools

10/10/2002

Pgina 4 de 22

Manual de programao IMS/VS- DL/I

Descritivo fluxo de dados

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

O programa de aplicao acessa um segmento do DB, atravs da PCB, que est definida dentro da PSB. So permitidos quaisquer tipos de arquivos de entrada. So permitidos quaisquer tipos de arquivos de sada. O programa de aplicao emite uma chamada (Call) ao Banco de Dados A interface DL/I identifica qual a PCB a ser utilizada. A interface DL/I identifica qual a estrutura do banco de dados atravs da DBD. Com as informaes passadas pelo programa, pela PSB e pela DBD, a interface cria um mtodo de acesso para localizar o segmento. O banco acessado. As alteraes efetivadas nos bancos de dados so registradas na fita LOG. E utilizada uma rea intermediria chamada DATABASE BUFFERS POOL para receber uma quantidade de informaes recuperadas do DB. Nessa rea so processadas as alteraes, antes de serem efetivadas no DB fisicamente.

10/10/2002

Pgina 5 de 22

Manual de programao IMS/VS- DL/I

Estrutura do Banco de Dados Hierrquica (IMS)

As informaes so armazenadas numa estrutura hierrquica, chamada de DBD (DataBase Descripiton) , onde so separadas em entidades, mantendo uma relao UM-- Muitos . Exemplo: Um cliente possui muitos endereos. Um cliente possui muitos telefones.

Segmento Cliente

Segmento Endereo

Endereo Telefone

10/10/2002

Pgina 6 de 22

Manual de programao IMS/VS- DL/I

Cada nvel hierrquico recebe o nome de segmento, que so classificados da seguinte forma: Segmento ROOT Segmento PAI Segmento Filho Segmento TWIN o segmento definido no 1. Nvel da estrutura; o segmento , em qualquer nvel, que possua filhos; o segmento que possui outro nvel superior ao seu; so ocorrncias de um mesmo tipo de segmento. Segmento PAI Segmento ROOT

Cliente Nvel 1

Segmentos Twins Segmento Endereo Endereo Telefone Nvel 2

Segmentos Filhos Regras de estrutura 1. 2. 3. 4. 5. Um banco de dados pode ser composto de 1 a N registros Um registro pode ser composto de 1 a N segmentos O nmero mximo de segmentos so 255. Um banco de dados pode ter at 15 nveis O acesso feito de cima para baixo e da esquerda para direita.

10/10/2002

Pgina 7 de 22

Manual de programao IMS/VS- DL/I

A estrutura completa de um banco de Dados codificadas atravs da DBD e transformada em mdulo objeto, dentro de uma biblioteca de DBDs. A viso que o programa tem da estrutura codificada no Program Specification Block (PSB). As DBDs e PSBs so compiladas em bibliotecas especficas. O programa de aplicao acessa apenas a uma parte da estrutura de DB, no necessitando contemplar todas as informaes nela contidas, a PSB permite esse acesso parcial. A PSB deve fazer referncia apenas aos segmentos da estrutura que sero teis ao programa de aplicao.

Segmento A PSB PGM

Segmento B

Segmento C

Segmento D

Segmento E

Estrutura Completa

10/10/2002

Pgina 8 de 22

Manual de programao IMS/VS- DL/I

Definio de Database Descripiton (DBD)

A DBD a imagem do banco de dados, onde so definidos os segmentos, os campos, o tamanho dos campos as chaves, tipo de arquivo, etc. A codificao de uma DBD feita pela rea de arquitetura . A seguir teremos um exemplo de uma DBD, onde aprenderemos a ler essas informaes. *********************************************************************** * Exemplo de uma DBD * *********************************************************************** * DBD NAME=D20FUN01,ACESS=(HIDAM,VSAM) * DATASET DD1=FUN20DS1,DEVICE=3375,SIZE=4096 * *********************************************************************** * SEGMENTO FUNDOS (ROOT) * *********************************************************************** * SEGM NAME=FUN20FUN,PARENT=0,BYTES=100,RULES=(PPP),PTR=TB * FIELD NAME=(FUN20COD,SEQ,U),BYTES=03,TYPE=C,START=01 * *********************************************************************** * DEFINICAO DO SEARCH FIELD P/INDICE PRIMARIO * *********************************************************************** * LCHILD NAME=(FUN20IX1,D20FUN02),PTR=INDX *********************************************************************** * FIELD NAME=FUN20NOM,BYTES=50,TYPE=C,START=04 FIELD NAME=FUN20ABV,BYTES=30,TYPE=C,START=54 FIELD NAME=FUN20APF,BYTES=05,TYPE=C,START=84 FIELD NAME=FUN20CIR,BYTES=03,TYPE=C,START=89 FIELD NAME=FUN20FIL,BYTES=08,TYPE=C,START=92

10/10/2002

Pgina 9 de 22

Manual de programao IMS/VS- DL/I

*********************************************************************** * SEGMENTO EMISSAO DE EXTRATO * *********************************************************************** * SEGM NAME=FUN20EEX,PARENT=FUN20FUN,BYTES=14,PTR=T * FIELD NAME=(EEX20PEE,SEQ,U),BYTES=02,TYPE=C,START=01 FIELD NAME=EEX20CEE,BYTES=01,TYPE=C,START=03 FIELD NAME=EEX20NML,BYTES=02,TYPE=C,START=04 FIELD NAME=EEX20SMC,BYTES=08,TYPE=P,START=06 *********************************************************************** * DBDGEN FINISH END

10/10/2002

Pgina 10 de 22

Manual de programao IMS/VS- DL/I

Definio de PSB (Programa Specification Block)

Regras de Codificao das PSBs 1. 2. 3. 4. 5. Iniciar a codificao dos comandos a partir da coluna 2. Um asterisco na coluna 1 abre uma linha de comentrio. Terminar a codificao na coluna 71. Um X na 72 permite continuar o comando na coluna 16 da prxima linha. Se no quiser expanso codificar: PRINT NOGEN antes de dar incio a PSB.

Vamos imaginar uma DBD com as seguintes caractersticas. D23CON01 Conta Segmento CONTA (60 Bytes) Chave = CODICONT NOME Filler 7 30 50 Bytes Bytes Bytes

Lancto

Segmento LANCTO (75 Bytes) Chave = DATA VALOR FILLER

6 8 30

Bytes Bytes Bytes

Uma PSB para atender ao acesso desse banco , ser codificada da seguinte maneira; PRINT NOGEN PCB TYPE=DB,DBDNAME=D230CON01,KEYLEN=13 SENSEG NAME = CONTA,PARENT=0,PROCOPT = G SENFLD NAME=CODICONT,START=1,REPLACE=NO SENFLD NAME=NOME,START=8,REPLACE=NO SENSEG NAME=LANCTO,PARENT=CONTA,PROCOPT=RI SENFLD NAME=DATA,START=1,REPLACE=NO SENFLD NAME=VALOR,START=7 PSBGEN PSBNAME=OK101,LANG=COBOL END

10/10/2002

Pgina 11 de 22

Manual de programao IMS/VS- DL/I

O KEYLEN a somatria das chaves de todos os segmentos a serem acessados (pais e filhos) de maior caminho. A PSB pode ser composta de vrias PCBs (uma para cada DBD). Para que o programa de aplicao possa acessar a PSB, ns devemos codificar as PCBs de programa, como veremos a seguir. LINKAGE SECTION. 01 PCB-CONTAS. 03 DBDNAME-L 03 SEG-LEVEL 03 STATUS-CODE 03 PROC-OPTIONS 03 RESERVE-DLI 03 SEG-NAME-FB 03 LENGTH-FB-KEY 03 NUMB-SENS-SEGS 03 KEY-FB-AREA DBDNAME SEG-LEVEL STATUS-CODE corretamente PROC-OPTIONS permite : = = = =

PIC X(08). PIC X(02). PIC X(02). PIC X(04). PIC S9(05) COMP. PIC X(08). PIC S9(05) COMP. PIC S9(05) COMP. PIC X(68).

Nome do DB, constante da DBD Nvel do segmento que foi acessado Cdigo retornado informando se o segmento foi acessado Informa o tipo de sensibilidade que a PSB, dentro da PSB, = Qualquer acesso = Replace (Alterao) = Insert (Incluso) = Delete (Excluso) = Get (Leitura) Reservado para o DL/I Nome do segmento acessado Tamanho da chave Nmero do segmento acessado Chave concatenada do segmento acessado

A R I D G RESERVE-DLI = SEG-NAME-FB = LENGTH-FB-KEY = NUMB-SENS-SEGS = KEY-FB-AREA =

Cada PCB codificada na PSB, dever Ter uma correspondente na LINKAGE SECTION do programa de aplicao.

10/10/2002

Pgina 12 de 22

Manual de programao IMS/VS- DL/I

Funes disponveis para acesso

Leitura Funo GET UNIQUE (Gubb) Recupera um segmento de banco de dados. Esta a nica funo que permite caminhar para trs atravs da estrutura do banco de dados. Seu uso e para um acesso direto a um segmento especfico definido na SSA. Funo GET NEXT (GNbb) Recupera o prximo segmento dentro da hierarquia do banco de dados. Se no houver sido executado um CALL de GU, ser recuperado o primeiro segmento do DB. Com esse comando , a estrutura ser varrida de cima para baixo, da esquerda para direita e sempre para frente. Funo GET NEXT WITHIN PARENT (GNPb) Idntico ao GN, contudo os CALLs de acesso ao banco de dados ficam limitados aos dependentes de um pai preestabelecido atravs de um CALL de GU ou de GN. Funo GET HOLD UNIQUE (GHUb) GETHOLD NEXT (GHNb) GETHOLD NEXT WITHIN PARENT (GHNP) Os comandos acima , seguidos da letra H (HOLD), prenderam o segmento at que seja executados um comando de DELETE ou de REPLACE.

10/10/2002

Pgina 13 de 22

Manual de programao IMS/VS- DL/I

Incluso Funo INSERT (ISRT) Adiciona um novo segmento banco de dados, o qual consta na I-O-AREA. Excluso Funo DELETE (DLET) Exclui um segmento do banco de dados, que tenha sido acessado anteriormente atravs de um CALL de leitura com a clusula HOLD, sendo excludo todos os seus dependentes. Alterao Funo UPDATE/REPLACE (REPL) Altera o contedo de um segmento de banco de dados, que foi recuperado previamente atravs de um CALL de leitura com a clusula HOLD, utilizando para atualizao, o contedo constante na I-O-AREA.

10/10/2002

Pgina 14 de 22

Manual de programao IMS/VS- DL/I

Recuperao de Banco de Dados

O DL/I constitudo de comandos especficos que sero incorporados as instrues normais de um programa de aplicao (Cobol). Todas as alteraes que so efetuadas em um DB so registradas em uma log., com a finalidade de permitir a recuperao do DB ao estado anterior a execuo do programa em caso de trmino anormal com a execuo do utilitrio Backout.

Programa de Aplicao

LOG

Banco de Dados

Utilitrios Backout

10/10/2002

Pgina 15 de 22

Manual de programao IMS/VS- DL/I

Codificao do programa de aplicao Os programas de aplicao, so programas normais codificados em COBOL, incluindo as instrues de IMS. Aps a execuo de um comando CALL , o retorno do acesso dever ser verificado e para isso usamos o campo STATUS-CODE, que foi definido na LINKAGE SECTION dos programas. A primeira instruo de um programa em COBOL que utiliza DL/I a execuo do comando ENTRY, que ir carregar as informaes das PCBs contidas na LINKAGE SECTION, com as PCBs descritas na PSB . O ENTRY deve fazer referencia as PCBs na mesma ordem que so definidas nas PSBs. Exemplo: LINKAGE SECTION 1 DB-PCB1. 03 DBDNAME-1 03 SEG-LEVEL-1 03 STATUS-CODE-1 03 PROC-OPTIONS-1 03 RESERVE-DLI-1 03 SEG-NAME-FB-1 03 LENGTH-FB-KEY-1 03 NUMB-SENS-SEGS-1 03 KEY-FB-AREA-1 DB-PCB2. 03 DBDNAME-2 03 SEG-LEVEL-2 03 STATUS-CODE-2 03 PROC-OPTIONS-2 03 RESERVE-DLI-2 03 SEG-NAME-FB-2 03 LENGTH-FB-KEY-2 03 NUMB-SENS-SEGS-2 03 KEY-FB-AREA-2 PIC X(08). PIC X(02). PIC X(02). PIC X(04). PIC S9(05) COMP. PIC X(08). PIC S9(05) COMP. PIC S9(05) COMP. PIC X(68). PIC X(08). PIC X(02). PIC X(02). PIC X(04). PIC S9(05) COMP. PIC X(08). PIC S9(05) COMP. PIC S9(05) COMP. PIC X(68).

01

10/10/2002

Pgina 16 de 22

Manual de programao IMS/VS- DL/I

PROCEDURE DIVISION. Entry DLITCBL USING DB-PCB1, DB-PCB2

Os acessos ao banco de dados feito atravs de CALLs, seguindo a seguinte estrutura; CALL CBLTDLI USING COUNT FUNCTION PCB I/O AREA SSA.

Parmetro COUNT um endereo de 4 bytes binrios que contem o nmero de parmetros que seguem num CALL. Esse parmetro obrigatrio apenas para programas escritos em linguagem PL/1, sendo opcional para programas COBOL e ASSEMBLER. um endereo de 4 bytes binrios que contem o nmero de parmetros que seguem num CALL. Parmetro FUNCTION So os tipos de acesso que ns desejamos efetuar no banco de dados, exemplo: GU,GHU GN,GHN GNP,GHNP ISRT, REPL, DLET

10/10/2002

Pgina 17 de 22

Manual de programao IMS/VS- DL/I

Cdigos retornados para a funo GU ; bb GE GG segmento encontrado segmento no encontrado pointer invlido

Sensibilidade na PSB dever ser G ou A. Cdigos retornados para a funo GN ; bb GA GB GG GK segmento encontrado o CALL provocou acesso a segmento em nvel superior ao que estava posicionado. Fim do DB pointer invlido tipo de segmento acessado no mesmo nvel da estrutura diferente ao anteriormente acessado.

Sensibilidade na PSB dever ser G ou A. Cdigos retornados para a funo GNP ; bb GA GE GG GK GP segmento encontrado o CALL provocou acesso a segmento em nvel superior ao que estava posicionado. segmento no encontrado pointer invlido tipo de segmento acessado no mesmo nvel da estrutura diferente ao anteriormente acessado. no foi estabelecida a paternidade deste segmento atravs de um CALL de GU ou GN para seu pai.

Sensibilidade na PSB dever ser G ou A.

10/10/2002

Pgina 18 de 22

Manual de programao IMS/VS- DL/I

Cdigos retornados para a funo DLET ; bb DA DS VI segmento excludo segmento no pode ser excludo, uma vez que a chave dentro da I-OAREA foi alterada segmento no pode ser excludo pois no foi lido com a clusula HOLD o tamanho do segmento varivel constante na I-O-AREA est incorreto

Sensibilidade na PSB dever ser GD ou A. Cdigos retornados para a funo REPL ; bb DA DJ VI segmento excludo segmento no pode ser excludo, uma vez que a chave dentro da I-OAREA foi alterada segmento no pode ser excludo pois no foi lido com a clusula HOLD o tamanho do segmento varivel constante na I-O-AREA est incorreto

Sensibilidade na PSB dever ser GR ou A. Cdigos retornados para a funo ISRT ; bb GE II segmento includo segmento no encontrado segmento j existente no DB

Sensibilidade na PSB dever ser I ou A.

10/10/2002

Pgina 19 de 22

Manual de programao IMS/VS- DL/I

Parmetro PCB o nome da PCB que ns definimos na LINKAGE SECTION, lembrando que cada banco de dados ter a sua PCB especfica. Parmetro I/O AREA Parmetro I/O AREA ser o nossa rea de recepo/envio dos dados para o banco de dados, e caso a nossa PSB esteja definida sensibilizando apenas alguns campos, essas rea dever Ter o mesmo formato descrito na PSB. Parmetro SSA (Segment Search Argument) Esse parmetro ser o nome do campo definido na working-storage section, e nela estar definido o nome do segmento e as chaves de acesso que ns desejamos acessar. As SSAs pode ser divididas em trs grupos; SSA desqualificada; SSA qualificada; SSA boleana.

10/10/2002

Pgina 20 de 22

Manual de programao IMS/VS- DL/I

SSA desqualificada Para definirmos uma SSA desqualificada, ns precisamos apenas do nome do segmento que desejamos acessar, seguido de um bytes em branco; NOME DO SEGMENTO 8 03 SSAD-DB1 branco 1 PIC X(9) VALUE FUN20FUN .

Ns utilizaremos a SSA definida acima para ler a base de dados de forma seqencial, atravs do comando GN ou GNP. SSA Qualificada As SSAs qualificadas sero utilizadas para acessos diretos, sendo que devero conter o nome do segmento , nome da chave do segmento, qualificador de operao e contedo desejado, seguindo as sintaxe abaixo:

Nome do segmento 8 03 05 05 05 05 05 05

( 1 SSAQ-DB1. FILLER FILLER FILLER FILLER CONTEUDO FILLER

Nome do campo chave 8

Operador compara o 2

Valor de compara o 1 A 255

) 1

PIC X(08) VALUE FUN20FUN. PIC X(01) VALUE ( . PIC X(08) VALUE FUN20COD. PIC X(02) VALUE EQ. PIC 9(03) VALUE 010. PIC X(01) VALUE ) .

10/10/2002

Pgina 21 de 22

Manual de programao IMS/VS- DL/I

SSA Boleana As SSAs boleana so utilizadas para leitura de um registro que satisfaa as vrias condies , seguindo as sintaxe abaixo:
Segmento Comando Codes(*) * 8 1 b 1 ( 1 Qualificador Nome Campo 8 OP 2 Valor 1 a 255 Fim OU Conector ) OU * OU & 1 Qualificador Nome Campo 8 OP 2 Valor 1 a 255 Fim ) 1

03 05 05 05 05 05 05 05 05 05 05

SSAQ-DB1. FILLER FILLER FILLER FILLER CONTEUDO FILLER FILLER FILLER CONTEUDO FILLER

PIC X(08) VALUE FUN20FUN. PIC X(03) VALUE ( . PIC X(08) VALUE FUN20COD. PIC X(02) VALUE GE. PIC 9(03) VALUE 001. PIC X(01) VALUE & . PIC X(08) VALUE FUN20COD. PIC X(02) VALUE LE. PIC 9(03) VALUE 010. PIC X(01) VALUE ) .

Operadores de comparao vlidos; =b >b <b => =< NE ou ou ou ou ou EQ GT LT GE LE ou ou ou ou ou b= b> b< >= <=

10/10/2002

Pgina 22 de 22

Você também pode gostar