Escolar Documentos
Profissional Documentos
Cultura Documentos
10/10/2002
ScannapiecoPgina 1 de 22
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
Introduo
Banco de Dados
Sistema Operacional
sub-sistema
DL / I
Programa de Aplicao
10/10/2002
Pgina 3 de 22
Sistema Operacional
PSB DL/I Controller
PCB
Input 2
Output 5 4
Data Language/1
Mtodos de Acesso
LOG
10/10/2002
Pgina 4 de 22
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
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
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 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
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 B
Segmento C
Segmento D
Segmento E
Estrutura Completa
10/10/2002
Pgina 8 de 22
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
*********************************************************************** * 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
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
6 8 30
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
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
Cada PCB codificada na PSB, dever Ter uma correspondente na LINKAGE SECTION do programa de aplicao.
10/10/2002
Pgina 12 de 22
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
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
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
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
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
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.
10/10/2002
Pgina 18 de 22
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
10/10/2002
Pgina 19 de 22
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
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
Operador compara o 2
) 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
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