Beruflich Dokumente
Kultur Dokumente
DB2 Cobol
NOV/2004
SUMRIO
1 Conceitos de Bases de Dados..................................................................................................................5
Armazenamento de dados ......................................................................................................................................5
File-oriented .............................................................................................................................................................................5
Data base oriented ...................................................................................................................................................................5
2 - DB2.........................................................................................................................................................14
Exemplo de estrutura de uma base de dados ......................................................................................................14
Estrutura de uma base de dados DB2..................................................................................................................14
Exemplos de tabelas DB2.....................................................................................................................................15
Arquivos de configurao e controle usados pelo DB2.......................................................................................18
Built-In Data Types ; formatos de Date e Time .................................................................................................23
DB2 no mainframe................................................................................................................................................24
Execuo de comandos DB2 via batch (IKJEFT01 chama DSNTEP2)................................................................................25
Execuo de comandos DB2 via FileAid...............................................................................................................................28
Execuo de comandos DB2 via aplicativo Cobol (IKJEFT01 chama aplicativo Cobol).....................................................29
3 - SQL ........................................................................................................................................................30
Origem ................................................................................................................................................................30
Execuo de comandos SQL : mtodos ..............................................................................................................31
Resumo dos principais comandos SQL .............................................................................................................38
DDL (Data Definition Language) statements .......................................................................................................................38
DCL (Data Control Language) statements ............................................................................................................................38
DML (Data Manipulation Language) statements .................................................................................................................38
Comandos declarativos auxiliares .........................................................................................................................................38
Outros conceitos......................................................................................................................................................................39
(DSPL - Database Stored Procedure Language) statements ............................................................................................39
(TCL - Transaction Control Language) statements .........................................................................................................39
2
SQLCA / SQLCODE...........................................................................................................................................47
Variveis................................................................................................................................................................ 51
7 Comandos DML....................................................................................................................................59
SELECT............................................................................................................................................................... 59
SELECT - Uso batch em Cobol .............................................................................................................................................59
SEM cursor.........................................................................................................................................................................59
COM cursor........................................................................................................................................................................61
SELECT uso batch no DSNTEP2.......................................................................................................................................66
................................................................................................................................................................................................66
Parmetros do SELECT (Embedded / Dsntep2) ..................................................................................................................67
Exemplos sintticos do SELECT ..........................................................................................................................................71
Exemplos de uso (sem INTO) ...............................................................................................................................................73
Exemplos de uso (com INTO) ...............................................................................................................................................74
Exemplos de Select no DSNTEP2..........................................................................................................................................75
UPDATE .............................................................................................................................................................. 80
UPDATE - Uso batch no DSNTEP2......................................................................................................................................80
3
INSERT................................................................................................................................................................ 83
INSERT - Uso batch no DSNTEP2........................................................................................................................................83
INSERT - Uso batch em Cobol..............................................................................................................................................84
DELETE............................................................................................................................................................... 86
DELETE - Uso batch no DSNTEP2......................................................................................................................................86
DELETE - Uso batch em Cobol.............................................................................................................................................87
WHENEVER .......................................................................................................................................................88
8 - FUNES (Built-In).............................................................................................................................90
APNDICE I - A Relational Model of Data for Large Shared Data Banks - E. F. Codd .....................93
APNDICE II Comandos SQL .............................................................................................................94
APNDICE III Programas Exemplo ....................................................................................................96
Completo (Fontes + Sadas) ...............................................................................................................................96
Leitura com cursor ...........................................................................................................................................108
DB2
DB2/COBOL
4
Base de dados
(Banco de dados / Database) = conjunto de arquivos relacionados entre si, gerenciados de forma
minimamente centralizada, que permitem armazenamento e acesso eficientes de informaes
Tipos de DBMS
Hierrquicos
Estrutura de armazenamento baseada na estrutura de dados RVORE (semelhante ao organograma
de uma empresa; com hierarquia dos dados; um dado principal a raiz de outros dados
subordinados (pertencentes) a ele
Cada pai pode ter 1 a n filhos e cada filho pode ter somente um pai
Rede
Extenso do hierrquico; cada pai pode ter 1 a n filhos e cada filho pode ter 1 a n pais
Relacionais
O modelo de dados relacional baseado na lgica de predicados e na teoria dos conjuntos
Um relational database (RDB) um database composto de um conjunto de tabelas, manipuladas
de acordo com o modelo de dados relacional.
Um relational database management system RDBMS um software que efetua todas as
operaes em um database, e que faz e permite que seja feita pelo DBA sua administrao
Frequentemente RDB e RDBMS so usados sem critrio, para referncia tanto base de dados
quanto ao software
Um RDBMS manipula um conjunto de objetos usados para que dados sejam armazenados,
acessados e mantidos.
Exemplos desses objetos so : tabelas, views, indices, chaves (keys), constraints, funes, etc...
Criado pelo Dr. Edgard F. Codd (IBM) no incio da dcada de 70
As caractersticas do modelo relacional devem ser aplicadas exclusivamente para administrar o
banco de dados (no para armazenar seus dados)
Um RDB assim considerado somente se seguir as seguintes 12 regras :
1. Representao da informao : todas as informaes no banco de dados devem ser representadas
somente de uma forma, por meio de valores em colunas e linhas das tabelas
2. Acesso garantido : todos os dados devem ser acessados sem ambiguidade (identificao /
individualizao = tabela + coluna + primary key da linha
3. Tratamento de NULL : deve ser permitido a qualquer campo (contedo de coluna) a
possibilidade de NO TER contedo (vazio ou nulo) para indicar a ausncia de informao
ou o fato de que no caso ela inaplicvel
4. Catlogo : deve existir um catlogo (com dados a respeito da estrutura do banco de dados
metadados) baseado no modelo relacional, passvel de ser acessado, por pessoas
autorizadas, com a mesma linguagem usada para acessar os dados
5. Linguagem : deve suportar pelo menos uma linguagem relacional que (a) tenha sintaxe linear (b)
possa ser usada tanto interativamente quanto em programas aplicativos e (c) suporte
operaes de (DDL) definio de dados e seus atributos (inclusive views) , operaes de
(DML) manipulao de dados (acesso e atualizao) , administrao de segurana e
integridade, e operaes de controle das transaes (begin, commit, rollback).
6. Atualizao de Views : todas as views que sejam passveis de atualizao, devem ser atualizadas
pelo sistema.
7. Insert, update e delete: o sistema deve permitir operadores insert, update, e delete
8. Independncia fsica de dados : mudanas no armazenamento de dados no nvel fsico no podem
implicar em mudanas nos aplicativos
9. Independncia lgica de dados : mudanas na estrutura lgica (tabelas, colunas, etc) no podem
implicar em mudanas nos aplicativos
10. Independncia de integridade : restries relativas integridade devem ser especificadas
separadamente dos aplicativos e armazenadas no catlogo; mudanas nessas regras no
podem implicar em mudanas nos aplicativos
11. Independncia de distribuio : a distribuio da base de dados, caso ocorra, deve ser
transparente para os usurios (aplicativos que usam a base); caso haja mudana que implique
em mudana de distribuio, os aplicativos devem continuar a rodar sem mudanas
12. No-subverso : se o sistema tiver interface de baixo nvel , a interface no pode ser usada para
subverter o sistema (suas regras), como por exemplo efetuar bypass de verificao de
constraint.
Criando
CREATE TABLE EMP
(EMPNUME
INTEGER(5) NOT NULL,
EMPNOME
CHAR(30)
NOT NULL,
EMPGERE
INTEGER(5) ,
EMPSERV
CHAR(20)
,
EMPADMI
DATE
NOT NULL,
EMPSALA
INTEGER(10,2),
PRIMARY KEY (EMPNUME),
FOREIGN KEY HAS (DEPNUME)
REFERENCES DEPT
ON DELETE RESTRICT
ON UPDATE CASCADE
);
Acessando
SELECT EMPNUME, EMPNOME
FROM EMP
WHERE EMPNUME > 500;
Views
So formas alternativas de visualizar / acessar dados em uma ou mais tabelas.
Uma view , na verdade, uma result table , uma tabela lgica ; ela no tem dados fisicamente, mas
uma mscara por meio da qual pode-se acessar outros dados de outra(s) tabela(s) e / ou outra(s)
view(s)
Especifica-se sua estrutura, por exemplo num SELECT, indicando a origem dos seus dados.
Usa-se views para
Restringir o acesso a dados
Facilitar consultas complexas
Apresentar diferents views de mesmos dados
Tipos :
Logical view - especificao de como os dados so tratados no nvel do aplicativo, podendo
abranger uma ou mais tabelas (, na verdade, uma result table). A transformao do que existe
armazenado para o que o aplicativo necessita feita pelo SGBD.
Physical view - especificao de como os dados esto fisicamente dispostos / armazenados, em
geral num segundo nvel (o primeiro tratado pelo hardware + sistema operacional). A
transformao do que existe armazenado para o que o aplicativo necessita deve ser feita pelo
prprio aplicativo.
Manipulao de VIEWs : exemplos
Criando
CREATE VIEW
AS SELECT
FROM
WHERE
EMPVU10
EMPNO, ENAME,
EMP
DEPTNO = 10;
CREATE VIEW
AS SELECT
FROM
WHERE
EMPVU30
EMPNO NUMERO_EMPREGADO,
EMP
DEPTNO = 30;
JOB
ENAME NOME,
SAL SALARIO
Acessando
SELECT *
FROM
EMPVU10;
ndices
Conjuntos ordenados de pointers para linhas de uma tabela. So baseados nos valores que as colunas
chave contm.
Os ndices so utilizados para : possibilitar acesso atravs de chaves distintas, melhorar a performance,
assegurar a unicidade de chaves.
Keys
um conjunto ordenado de coluna(s) usado para identificar e acessar determinada(s) linha(s). Uma
determinada coluna pode fazer parte de uma ou mais chaves.
Uma composite key composta de mais de uma coluna.
Uma unique key uma key aquela que no permite mais de uma linha com valores iguais.
Uma primary key um caso especial de unique key, e a que permite o armazenamento e acesso
bsico a uma tabela.
Uma foreign key aquela definida atravs de um referential constraint.
Constraints
Um constraint uma regra (propriedade) associada a uma coluna ou conjunto de colunas de uma tabela
que permite a integridade dos dados (data integrity), impedindo a insero de valores com alguns tipos de
inconsistncias. Existem os seguintes tipos de integridade de dados :
Integridade de entidade (Entity Integrity) : assegura que no haja linhas duplicadas numa tabela
Integridade de domnio (Domain Integrity) : restringe o valor de uma coluna por meio de especificao
de tipo, formato, ou faixa de valores possveis. Ex.: salario > 300 e < 1000000
Integridade referencial (Referential integrity) : assegura que linhas no sejam deletadas se estiverem
sendo usadas por outros registros (linhas). Ex.: linha que descreve uma agncia de um banco numa
tabela de agncias, sendo a agncia usada (referenciada) numa tabela de lanamentos.
Integridade definida pelo usurio (User-Defined Integrity) : especifica algum teste ou validao que no
se enquadre em nenhuma das 3 categorias anteriores.
Os constraints so :
PRIMARY KEY
um identificador nico para uma linha numa tabela. Toda tabela deve ter um primary key
constraint em uma coluna, e somente um primary key constraint pode ser criado para uma tabela.
UNIQUE
Um unique constraint uma regra que proibe a duplicidade de valores em uma ou mais colunas de
uma tabela. Unique e primary keys so exemplos de unique constraints. Por exemplo, um unique
constraint pode ser definido no cdigo de fornecedor de uma tabela de fornecedores, para assegurar
que o mesmo cdigo de fornecedor no seja dado a dois (ou mais) fornecedores.
FOREIGN KEY
Um foreign key constraint serve para prevenir aes que possam destruir dados (com valores
iguais) que efetuem a ligao entre tabelas. Uma foreign key numa tabela aponta para uma
primary key em outra tabela. Por meio das foreign keys , por exemplo, impede-se que sejam
deletadas linhas de uma tabela em que a primary key seja foreign key em outra tabela. a
integridade referencial. Exemplo : supor uma tabela de agncias em que a primary key seja o cdigo
de agncia de um banco (supor agncia 010); e que haja outra tabela com os correntistas das
10
agncias; por meio da integridade referencial, no possvel deletar a linha de uma agncia na
primeira tabela enquanto houver linhas na tabela de correntistas que refiram-se agncia 010.
CHECK
Um table check constraint usado para validar valores que devam ser inseridos numa coluna. Por
meio dele, estabelece-se as restries que definem o domnio das informaes vlidas para uma
coluna.Por exemplo, pode-se definir um table check constraint que impea que seja gravado (por
incluso ou atualizao) um salrio de funcionrio < 180,00.
NOT NULL
Um NOT NULL constraint impede que colunas que devam obrigatoriamente ter contedo, sejam
gravadas sem contedo.
Exemplos de manipulao de constraints :
Pode-se incluir constraint de primary ou unique key a uma tabela j existente somente se no
houver linhas duplicadas na tabela.
Para deletar constraint j criado em uma table , usa-se o comando ALTER TABLE :
ALTER TABLE EMPLOYEE
DROP CONSTRAINT PK_EMPLOYEE
Para habilitar ou desabilitar constraints de FOREIGN KEY ou CHECK (para efetuar algumas
operaes especficas) usar o comando ALTER TABLE :
ALTER TABLE EMPLOYEE NOCHECK CONSTRAINT CHECK_SALE
11
Outros exemplos :
Queries
Uma query uma ferramenta / linguagem / comando para a manipulao (recuperao / acesso / obteno)
dos dados em um banco de dados.
Existem diversas linguagens para efetuar queries; em geral, cada SGBD tem a sua.
Uma bastante utilizada nos RDBs o SQL.
Data Base Administrator - Administrador de Base de Dados
Responsvel pela guarda, disponibilidade e acessibilidade das informaes utilizadas nos sistemas de
informao da empresa, tanto em situaes normais quanto de contingncia.
Estuda, analisa, planeja, implanta e acompanha os database systems com base nas necessidades e
objetivos da empresa
Verifica o design de databases para assegurar segurana e eficincia no armazenamento e acesso s
informaes.
Verifica o design de aplicativos para assegurar o uso adequado do database
Verifica a utilizao dos softwares integrados / relacionados ao database para assegurar o uso
adequado do database
Desenvolve e implementa padres de utilizao do database
Prov suporte tcnico para analistas de desenvolvimento e de produo
Recebe notificaes de erro, analisa-as e, caso no seja do aplicativo, providencia correo,
eventualmente atravs de contato com fornecedor(es)
Verifica e monitora o desempenho do database
12
Processo que constri access paths para tabelas DB2 (mtodo usado para acessar os dados
solicitados via statements SQL)
Viso geral do processo de BIND :
L o arquivo DBRM (Data Base Request Module) gerado pelo pr-compilador
Valida os statements SQL (lidos no DBRM)
Verifica autoridade do usurio para manipular os objetos / tabelas indicados no DBRM
Grava um plano (plan)
Responsvel pela guarda, disponibilidade e acessibilidade das informaes utilizadas nos sistemas de
informao da empresa, tanto em situaes normais quanto de contingncia.
13
2 - DB2
Exemplo de estrutura de uma base de dados
INSTNCIA
DATABASE
Arquivos de configurao e de
controle
TABLESPACE
TABLE
DADOS
INDEX
VIEW
DADOS
INDEX
VIEW
STORAGE GROUP
14
Table
ZZA100_CADAGE
ZZA101_AGECLI
ZZA102_SLDCLI
ZZA103_SLDCLI2
ZZA200_CADAGE
ZZA201_AGECLI
ZZA202_SLDCLI
ZZA203_SLDCLI2
ZZA300_CADAGE
ZZA301_AGECLI
ZZA302_SLDCLI
ZZA303_SLDCLI2
ZZA400_CADAGE
ZZA401_AGECLI
ZZA402_SLDCLI
ZZA403_SLDCLI2
ZZA500_CADAGE
ZZA501_AGECLI
ZZA502_SLDCLI
ZZA503_SLDCLI2
ZZA600_CADAGE
ZZA601_AGECLI
ZZA602_SLDCLI
ZZA603_SLDCLI2
ZZA700_CADAGE
ZZA701_AGECLI
ZZA702_SLDCLI
ZZA703_SLDCLI2
ZZA800_CADAGE
ZZA801_AGECLI
ZZA802_SLDCLI
ZZA803_SLDCLI2
ZZA900_CADAGE
ZZA901_AGECLI
ZZA902_SLDCLI
ZZA903_SLDCLI2
ZZB100_CADAGE
ZZB101_AGECLI
ZZB102_SLDCLI
ZZB103_SLDCLI2
ZZB200_CADAGE
ZZB201_AGECLI
ZZB202_SLDCLI
ZZB203_SLDCLI2
ZZB300_CADAGE
ZZB301_AGECLI
ZZB302_SLDCLI
ZZB303_SLDCLI2
ZZB400_CADAGE
ZZB401_AGECLI
ZZB402_SLDCLI
ZZB403_SLDCLI2
ZZB500_CADAGE
Usurio
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
01
01
01
01
02
02
02
02
03
03
03
03
04
04
04
04
05
05
05
05
06
06
06
06
07
07
07
07
08
08
08
08
09
09
09
09
10
10
10
10
11
11
11
11
12
12
12
12
13
13
13
13
14
15
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
ZZB501_AGECLI
ZZB502_SLDCLI
ZZB503_SLDCLI2
ZZB600_CADAGE
ZZB601_AGECLI
ZZB602_SLDCLI
ZZB603_SLDCLI2
ZZB700_CADAGE
ZZB701_AGECLI
ZZB702_SLDCLI
ZZB703_SLDCLI2
ZZB800_CADAGE
ZZB801_AGECLI
ZZB802_SLDCLI
ZZB803_SLDCLI2
ZZB900_CADAGE
ZZB901_AGECLI
ZZB902_SLDCLI
ZZB903_SLDCLI2
ZZC100_CADAGE
ZZC101_AGECLI
ZZC102_SLDCLI
ZZC103_SLDCLI2
ZZC200_CADAGE
ZZC201_AGECLI
ZZC202_SLDCLI
ZZC203_SLDCLI2
ZZC300_CADAGE
ZZC301_AGECLI
ZZC302_SLDCLI
ZZC303_SLDCLI2
ZZC400_CADAGE
ZZC401_AGECLI
ZZC402_SLDCLI
ZZC403_SLDCLI2
ZZC500_CADAGE
ZZC501_AGECLI
ZZC502_SLDCLI
ZZC503_SLDCLI2
ZZC600_CADAGE
ZZC601_AGECLI
ZZC602_SLDCLI
ZZC603_SLDCLI2
ZZC700_CADAGE
ZZC701_AGECLI
ZZC702_SLDCLI
ZZC703_SLDCLI2
ZZC800_CADAGE
ZZC801_AGECLI
ZZC802_SLDCLI
ZZC803_SLDCLI2
ZZC900_CADAGE
ZZC901_AGECLI
ZZC902_SLDCLI
ZZC903_SLDCLI2
ALUNO 14
ALUNO 14
ALUNO 14
ALUNO 15
ALUNO 15
ALUNO 15
ALUNO 15
ALUNO 16
ALUNO 16
ALUNO 16
ALUNO 16
ALUNO 17
ALUNO 17
ALUNO 17
ALUNO 17
ALUNO 18
ALUNO 18
ALUNO 18
ALUNO 18
ALUNO 19
ALUNO 19
ALUNO 19
ALUNO 19
ALUNO 20
ALUNO 20
ALUNO 20
ALUNO 20
ALUNO 21
ALUNO 21
ALUNO 21
ALUNO 21
ALUNO 22
ALUNO 22
ALUNO 22
ALUNO 22
ALUNO 23
ALUNO 23
ALUNO 23
ALUNO 23
ALUNO 24
ALUNO 24
ALUNO 24
ALUNO 24
ALUNO 25
ALUNO 25
ALUNO 25
ALUNO 25
ALUNO 26
ALUNO 26
ALUNO 26
ALUNO 26
PROFESSOR
PROFESSOR
PROFESSOR
PROFESSOR
16
DB2T.ZZCnn0_CADAGE
CD_AGE
NM_AGE
END_AGE
TEL_AGE
INTEGER
CHAR(15)
CHAR(30)
INTEGER
DB2T.ZZCnn1_AGECLI
CD_AGE_CLI
CD_CLI
TP_CLI
NM_CLI
END_CLI
COMPL_CLI
CID_CLI
UF_CLI
CEP_CLI
CMCEP_CLI
TEL_CLI
RG_CLI
CPF_CGC_CLI
DT_INCL_CLI
DT_EXCL_CLI
VL_SDO_CLI
INTEGER
INTEGER
INTEGER
CHAR(35)
CHAR(35)
CHAR(30)
CHAR(30)
CHAR(2)
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
DATE
DATE
DECIMAL(7,2)
DB2T.ZZCnn2_SLDCLI
CD_AGE_SLD
CD_CLI
NM_CLI
TEL_CLI
VL_SDO_CLI
INTEGER
INTEGER
CHAR(35)
INTEGER
DECIMAL(7,2)
DB2T.ZZCnn3_SLDCLI2
CD_AGE_SLD
CD_CLI
NM_CLI
TEL_CLI
VL_SDO_CLI
INTEGER
INTEGER
CHAR(35)
INTEGER
DECIMAL(15,2)
17
Sgbd DB2
Arquivos de dados:
tabelas
ACT0001, etc
Base de Dados
Arquivos de controle
SYSIBM.SYSTABLES
SYSIBM.SYSCOLUMNS
SYSIBM.SYSDBAUTH
SYSIBM.SYSTABAUTH
SYSIBM.SYSINDEXES
SYSIBM.SYSRELS
SYSIBM.SYSTABCONST
18
19
SYSCOLUMNS
NAME
TBNAME
TBCREATOR
COLNO
COLTYPE
LENGTH
SCALE
NULLS
COLCARD
HIGH2KEY
LOW2KEY
UPDATES
IBMREQD
REMARKS
DEFAULT
KEYSEQ
FOREIGNKEY
FLDPROC
LABEL
STATSTIME
DEFAULTVALUE
COLCARDF
COLSTATUS
LENGTH2
DATATYPEID
SOURCETYPEID
TYPESCHEMA
TYPENAME
CREATEDTS
TABELA
VARCHAR(18)
VARCHAR(18)
CHAR(8)
SMALLINT
CHAR(8)
SMALLINT
SMALLINT
CHAR(1)
INTEGER
CHAR(8)
CHAR(8)
CHAR(1)
CHAR(1)
VARCHAR(254)
CHAR(1)
SMALLINT
CHAR(1)
CHAR(1)
VARCHAR(30)
TIMESTMP
VARCHAR(512)
FLOAT(8)
CHAR(1)
INTEGER
INTEGER
INTEGER
CHAR(8)
VARCHAR(18)
TIMESTMP
ACT0001
COLUNA
--NRFILIAL
CDCIDADE
CDNOMEFA
TPFRANQU
CDOFERTA
INGRHEAD
DESCRICAO
---NUMERO FILIAL
CODIGO CIDADE
CODIGO NOME FANTASIA
TIPO FRANQUIA
CODIGO OFERTA
INDICADOR GROUP HEAD
SEQ
--1
2
3
4
5
6
TIPO
---DECIMAL
SMALLINT
SMALLINT
SMALLINT
SMALLINT
CHAR
TAM
--3
2
2
2
2
1
NUL
--N
N
N
N
N
N
20
SYSIBM.tabelas
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
DSNRLST01
IPNAMES
LOCATIONS
LULIST
LUMODES
LUNAMES
MODESELECT
SQLTABLETYPES
SQLTYPEINFO
SYSAUXRELS
SYSCHECKDEP
SYSCHECKS
SYSCHECKS2
SYSCOLAUTH
SYSCOLDIST
SYSCOLDIST_HIST
SYSCOLDISTSTATS
SYSCOLSTATS
SYSCOLUMNS
SYSCOLUMNS_HIST
SYSCONSTDEP
SYSCOPY
SYSDATABASE
SYSDATATYPES
SYSDBAUTH
SYSDBRM
SYSDUMMY1
SYSFIELDS
SYSFOREIGNKEYS
SYSINDEXES
SYSINDEXES_HIST
SYSINDEXPART
SYSINDEXPART_HIST
SYSINDEXSTATS
SYSINDEXSTATS_HIST
SYSJARCONTENTS
SYSJAROBJECTS
SYSJAVAOPTS
SYSKEYCOLUSE
SYSKEYS
SYSLINKS
SYSLOBSTATS
SYSLOBSTATS_HIST
SYSPACKAGE
SYSPACKAUTH
SYSPACKDEP
SYSPACKLIST
SYSPACKSTMT
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
21
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSIBM
SYSPARMS
SYSPKSYSTEM
SYSPLAN
SYSPLANAUTH
SYSPLANDEP
SYSPLSYSTEM
SYSPROCEDURES
SYSPSM
SYSPSMOPTS
SYSRELS
SYSRESAUTH
SYSROUTINEAUTH
SYSROUTINES
SYSROUTINES_OPTS
SYSROUTINES_SRC
SYSSCHEMAAUTH
SYSSEQUENCES
SYSSEQUENCESDEP
SYSSTMT
SYSSTOGROUP
SYSSTRINGS
SYSSYNONYMS
SYSTABAUTH
SYSTABCONST
SYSTABLEPART
SYSTABLEPART_HIST
SYSTABLES
SYSTABLES_HIST
SYSTABLESPACE
SYSTABSTATS
SYSTABSTATS_HIST
SYSTRIGGERS
SYSUSERAUTH
SYSVIEWDEP
SYSVIEWS
SYSVLTREE
SYSVOLUMES
SYSVTREE
USERNAMES
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
VIEW
VIEW
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
22
Obs.
Alfanumrico
Formato DB2
TIME
PIC Cobol
X(8)
Horrio + data
Alfanumrico
TIMESTAMP
X(26)
Data
Alfanumrico
DATE
X(10)
Nmero
SMALLINT
S9(4)
Ou
S9(4)
S9(9)
Ou
S9(9)
GRAPHIC
VARGRAPHIC
DBCLOB
Pointer
DATALINK
Nmero
Nmero
Nmero
Nmero
Nmero
String
String
String grafico
String grafico
String grafico LOB
String LOB
String LOB
Dado externo
INTEGER
(00.00.00 a 24.00.00)
(00.00.00 a 24.00.00)
(00:00:00 a 24:00:00)
(00.00 a 12.00);
(xx=AM ou PM )
(Pode ser LOCAL format = definido pela instalao)
EUR format = yyyy-mm-dd-hh.mm.ss.xxxxxx
ISO format = yyyy-mm-dd
EUR format = dd.mm.yyyy
JIS format = yyyy-mm-dd
USA format = mm/dd/yyyy
(Pode ser LOCAL format = definido pela instalao)
COMP
COMP-4
COMP
COMP-4
No tem
BIGINT
DECIMAL(p,s)
S9(p-s)V9(s) COMP-3
REAL
COMP-1
DOUBLE
Ou
FLOAT
CHAR(n)
COMP-2
VARCHAR(n)
X(n)
CLOB
BLOB
USAGE POINTER
Obs. LOB = LARGE OBJECT : desenhos, fotos, voz, (teses), (livros), etc...
23
DB2 no mainframe
Sistema
Operacional
Gerenciador DB2
IKJFT01
(TSO batch)
comandos SQL
resultados
comandos SQL
resultados
comandos SQL
resultados
DSNTEP2
(SQL batch)
FileAid
Outros Softwares
24
SYSTSIN
BASE DE DADOS
Sistema
Operacional
Gerenciador DB2
indica :
Programa=DSNTEP2
Plano=xxxxx
LoadLib=dsn
Etc...
IKJFT01
(TSO batch)
SYSIN
SELECT * FROM
TABELA_CLIENTES
DSNTEP2
(chamado pelo IKJEFT01)
SELECT * FROM
TABELA_CLIENTES
(RESULTADO)
SYSPRINT
(RESULTADO)
Job submetido :
//JOBNAME JOB (ALBERTO),ALBERTO,MSGCLASS=X,CLASS=R
//STEP001 EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=6M
//STEPLIB DD DSN=SYS1.DSNDB1D.SDSNLOAD,DISP=SHR
//
DD DSN=SYS1.DSNDB1D.RUNLIB.LOAD,DISP=SHR
//DBRMLIB DD DSN=SYS1.DSNDB1D.DBRMLIB.DATA,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DB1D)
RUN PROGRAM(DSNTEP2) PLAN(DSNTEP2) LIB('SYS1.DSNDB1D.RUNLIB.LOAD') PARMS('/ALIGN(MID)')
END
//SYSIN
DD *
SELECT *
FROM DB2T.ZZZ_CADAGE
25
Resultado produzido :
READY
DSN SYSTEM(DB1D)
DSN
RUN PROGRAM(DSNTEP2) PLAN(DSNTEP2)
DSN
END
READY
END
LIB('SYS1.DSNDB1D.RUNLIB.LOAD')
Nome tabela
errado !!!
PAGE
1
***INPUT STATEMENT:
SELECT *
FROM DB2T.ZZZ_CADAGE
SQLERROR ON
SELECT
COMMAND, PREPARE FUNCTION
RESULT OF SQL STATEMENT:
DSNT408I SQLCODE = -204, ERROR: DB2T.ZZZ_CADAGE IS AN UNDEFINED NAME
DSNT418I SQLSTATE
= 42704 SQLSTATE RETURN CODE
DSNT415I SQLERRP
= DSNXOTL SQL PROCEDURE DETECTING ERROR
DSNT416I SQLERRD
= -500 0 0 -1 0 0 SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRD
= X'FFFFFE0C' X'00000000' X'00000000' X'FFFFFFFF'
INFORMATION
26
Resultado produzido :
PAGE
1
***INPUT STATEMENT:
SELECT * FROM DB2T.ZZC900_CADAGE;
+------------------------------------------------------------------------------------+
]
CD_AGE
]
NM_AGE
]
END_AGE
]
TEL_AGE
]
+------------------------------------------------------------------------------------+
1_]
1 ] AGENCIA 01
] ENDER AGE 01
]
1111111 ]
2_]
2 ] AGENCIA 02
] ENDER AGE 02
]
1111111 ]
3_]
3 ] AGENCIA 02
] ENDER AGE 03
]
1111111 ]
4_]
4 ] AGENCIA 02
] ENDER AGE 04
]
1111111 ]
5_]
5 ] AGENCIA 03
] ENDER AGE 05
]
1111111 ]
+------------------------------------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
5 ROW(S)
Caso a totalidade dos dados no coubesse na linha, eles seriam agrupados em conjuntos de colunas
que coubessem nas linhas; exemplo (de outra tabela) :
PAGE
1
*----------------------------------------***INPUT STATEMENT:
SELECT *
FROM DB2T.ZZC901_AGECLI;
+----------------------------------------------------------------------------------------]
CD_AGE_CLI
]
CD_CLI
]
TP_CLI
]
NM_CLI
]
+----------------------------------------------------------------------------------------1_]
1 ]
1 ]
1 ] CLIENTE 1
]
+----------------------------------------------------------------------------------------PAGE
2
-----------------------------------------------------------------------------------------------------------------]
END_CLI
]
COMPL_CLI
]
CID_CLI
] UF_CLI ]
-----------------------------------------------------------------------------------------------------------------1_]
]
]
]
]
-----------------------------------------------------------------------------------------------------------------PAGE
3
-----------------------------------------------------------------------------------------------------------------]
CEP_CLI
]
CMCEP_CLI
]
TEL_CLI
]
RG_CLI
] CPF_CGC_CLI
] DT_INCL_CLI ] DT_EXCL_CLI ]
-----------------------------------------------------------------------------------------------------------------1_]
1 ]
1 ]
1 ]
1 ]
1 ] 09.12.2003 ] 30.12.2003 ]
-----------------------------------------------------------------------------------------------------------------PAGE
4
-------------+
] VL_SDO_CLI ]
-------------+
1_]
1.00 ]
-------------+
SUCCESSFUL RETRIEVAL OF
1 ROW(S)
27
Comandos
BASE DE DADOS
Sistema
Operacional
Gerenciador DB2
Resultados
FileAid
Comandos
Resultados
Consulta
File-AID for DB2 -------- BROWSE Selection Template ---------- Row 1 to 4 of 4
COMMAND ===>
SCROLL ===> CSR
SSID: DB1D
Use EXEC to continue
Use SQL to view/edit the SQL source for DB2T.ZZC100_CADAGE
Save Edit Criteria Information:
Save Template Criteria On Execute
Criteria Dataset Name ===>
Member
===>
Max Rows to Select
===> 2000
===> NO
(Yes or No)
(* = ALL ROWS)
Resultado
File Edit View Options Open Menu Utilities Help
----------------------------------------------------------------------------File-AID for DB2
Browse
DB2T.ZZC100_CADAGE
2 rows
fetched
COMMAND ===>
SCROLL ===>
PAGE
CD_AGE NM_AGE
INTEGER CHAR(15)
----PRIMARY --------------****** **************************** TOP OF DATA
****************************
000001
8 NOME AG 8
000002
10 NOME AG 10
****** ************************** BOTTOM OF DATA
***************************
28
Execuo de comandos DB2 via aplicativo Cobol (IKJEFT01 chama aplicativo Cobol)
SYSTSIN
indica :
Programa=xxxxxxxx
Plano=xxxxx
LoadLib=dsn
Etc...
BASE DE DADOS
Gerenciador
Sistema
DB2
Operacional
IKJEFT01
Aplicativo
(programa xxxxxxxx) (chamado pelo IKJEFT01)
SELECT * FROM
TABELA_CLIENTES
SELECT * FROM
TABELA_CLIENTES
(RESULTADO)
SELECT * FROM
TABELA_CLIENTES
(RESULTADO)
29
3 - SQL
Origem
1970 = modelo base de dados relacional (Dr. E. F. Codd da IBM) = como os BD so concebidos (no
como so usados) : tabelas, colunas, linhas, ndices, chaves, relao entre tabelas, metadados, etc
IBM desenvolveu SYSTEM R (prottipo de um BD relacional).
Para a criao e a manipulao dos dados do System R, a IBM desenvolveu o SEQUEL (Structured
English Query Language).
Segunda verso do SEQUEL = SEQUEL/2, depois renomeada para SQL.
Portanto, SQL uma linguagem que prov o interface com um banco de dados (relacional), tanto para a
manipulao de dados quanto para o seu gerenciamento.
O SQL suportado por ampla gama de RDBMS , como por exemplo : Oracle, Sybase, SQL Server,
MySql, DB2.
Apesar de ser / existir um padro, existem diversas implementaes com variaes.
Alguns padres ANSI: SQL1 (1989) , SQL2 (1992) , SQL3.
30
Interactive SQL (ou invocao direta) : (bulk process) permite que comandos sejam dados em
linha de comando e o resultado aparece na tela.
Dynamic SQL : permite a criao dos statements (e sua sintaxe e suas variveis) durante a execuo
do programa : o string com o comando gerado em tempo de execuo e no em tempo de
codificao; o string passado diretamente para o SGBD ou para uma API (Aplication Program
Interface) que o repassa para o SGBD; neste ltimo caso diz-se que o mtodo CLI (Call-Level
Interface).
EXEMPLOS :
31
SQL interativo
BASE DE DADOS
(SELECT *
FROM
TABELA_CLIENTE
)
Resultados
SQL Plus
Sistema
Operacional
SGBD
DB2
(RESULTADOS)
32
33
SQL dinmico
Consulta
BASE DE DADOS
Resultados
FileAid
Sistema
Operacional
SGBD
DB2
Consulta SQL
Resultados
Consulta
File-AID for DB2 -------- BROWSE Selection Template ---------- Row 1 to 4 of 4
COMMAND ===>
SCROLL ===> CSR
SSID: DB1D
Use EXEC to continue
Use SQL to view/edit the SQL source for DB2T.ZZC100_CADAGE
Save Edit Criteria Information:
Save Template Criteria On Execute
Criteria Dataset Name ===>
Member
===>
Max Rows to Select
===> 2000
===> NO
(Yes or No)
(* = ALL ROWS)
Resultado
34
Resultados
Dados (informaes
para compor uma
consulta ao BD)
BASE DE DADOS
Sistema
Operacional
SGBD
DB2
(Resultados)
35
BASE DE DADOS
IKJEFT01
Sistema
Operacional
SGBD
DB2
Consulta
(no cdigo
executvel)
Resultados
Aplicativo X
consulta em SQL
36
SQL batch
BASE DE DADOS
Avisa que :
Programa=DSNTEP2
Plano=xxxxx
LoadLib=dsn
Etc...
(no arquivo com ddname
SYSTSIN)
IKJEFT01
Sistema
Operacional
SGBD
DB2
Resultados
(SYSPRINT)
Consulta
(no arquivo com
ddname SYSIN)
DSNTEP2
consulta em SQL
(RESULTADOS)
37
Alguns podem ser usados tanto (B) via DSNTEP2 (SQL batch) quanto (E) por programa em linguagem
hospedeira (embedded SQL), podendo apresentar ligeiras diferenas de sintaxe e / ou recursos
Outros podem ser usados somente (E) em embedded SQL
DCLGEN = Processo via ISPF ou via IKJEFT01 para declarar estruturas relativas a tabelas (DECLAREs)
e linguagem hospedeira ; se for Cobol, define as variveis com nvel, nome, PIC, etc.
38
Outros conceitos
(DSPL - Database Stored Procedure Language) statements
Linguagens usadas nas stored procedures, para especificao de procedimentos / programas / rotinas a
rodar disparadas por triggers ou outros eventos; como chegaram bem posteriormente ao nascimento das
linguagens de query, ressentem-se pela falta de padres, e, por decorrncia, pela diversidade existente entre
os diversos s fornecedores.
(TCL - Transaction Control Language) statements
Em alguns contextos, comandos DCL so referenciados como TCL.
39
Pode-se usar busca de fonte DB2/SQL em bibliotecas por meio do comando INCLUDE (equivale
ao COPY do COBOL)
EXEC SQL
INCLUDE ..........
END-EXEC
O INCLUDE na maioria das vezes usado para incluir DECLAREs
Aps toda operao SQL deve-se testar o cdigo de retorno do DB2 referente a ela, disponvel na
varivel SQLCODE, pertencente SQLCA
40
Sada
DCLGEN
(PR-COMPILADOR)
COMPILADOR COBOL
NORMAL
Mensagens
(erros /
resultados da
compilao)
BINDER
Base de dados
Programa Objeto
LINKEDITOR
Data
Base
Mensagens
(erros /
resultados da
linkedio)
PACKAGE
(dados para
executar SQL
esttico)
PROGRAMA
EXECUTVEL
42
Funes do Pr-compilador
Resolver os INCLUDEs , buscando-os na library indicada no JCL (ou que seja default); os
INCLUDES equivalem aos COPYs : INCLUDEs referem-se a dados para o DB2/SQL e so
resolvidos em tempo de pr-compilao; COPYs referem-se a dados (ou procedimentos) do Cobol e
so resolvidos em tempo de compilao.
Efetuar validao bsica de sintaxe dos comandos DB2/SQL baseando-se nos DECLARE e no em
dicionrio de dados (NO feita consulta ao banco de dados em tempo de pr-compilao)
Gerar de 2 arquivos :
Fonte COBOL puro (com os statements DB2/SQL transformados em CALLs ou comentados)
DBRM (Data Base Request Module) : membro de um PDS que tem somente os dados DB2/SQL
Funes do Binder
Bind = atar, amarrar, encadernar / empacotar = associao entre (cdigo objeto dos) statements SQL
do programa com o cdigo objeto do programa propriamente dito.
Converter o DBRM gerado pelo em um package ou plano (application plan).
Escolher os caminhos (paths) que sero usados para acessar os dados na base de dados
Efetuar alguma validao de autorizao para efetuar as operaes
Comandos ao Pr-compilador
INCLUDES
43
DECLARE
Declara estruturas (lay-outs) de tabelas em SQL (usar na Working-Storage Section).
Deve ser colocado antes de qualquer referncia tabela (inclusive em DECLARE de cursor)
EXEC SQL DECLARE EPCV01A1_PAM_EPC TABLE
( CD_PAM_SIS_EPC
CHAR(10) NOT NULL,
DS_PAM_SIS_EPC
CHAR(200) NOT NULL,
TS_INC
TIMESTAMP NOT NULL,
CD_USU_INC
CHAR(8) NOT NULL,
TS_ULT_ATU
TIMESTAMP NOT NULL,
CD_USU_ULT_ATU
CHAR(8) NOT NULL,
CD_PGM_MAN
CHAR(8) NOT NULL
) END-EXEC.
DCLGEN
No comando ao pr-compilador. funo utilitria do ISPF ou do IKJEFT01
De forma anloga ao COPY (para o momento da compilao), usado para facilidade de
padronizao, o fonte gerado pelo DCLGEN tem sua maior utilidade no fato de que, uma vez
gerado e catalogado, todos os programas que forem utilizar uma tabela podem referenciar
declaraes padronizadas dando INCLUDE de dados fonte gerados por DCLGEN
Essas estruturas catalogadas so geradas por meio de funo utilitria DCLGEN (tem DB2I do
ISPF ou em batch por meio do comando DCLGEN do IKJEFT01)
As declaraes geradas pelo DCLGEN so :
em SQL (declarao da estrutura das tabelas) e
em Cobol (das variveis que iro ser usadas para receber dados na leitura ou para enviar dados
na gravao).
Exemplo de DCLGEN usando IKJEFT01 :
//RUNDB2 EXEC PGM=IKJEFT01,DYNAMNBR=20
//STEPLIB DD DSN=SYS1.DSNDB1D.SDSNLOAD,DISP=SHR
//
DD DSN=SYS1.DSNDB1D.RUNLIB.LOAD,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(DB1D)
DCLGEN TABLE(DB2T.ZZC900_CADAGE) LIBRARY('TORI243.T#RPC.SRC(ZZC900)') LANGUAGE(COBOL)
ACTION(REPLACE) /* OU ACTION(ADD) */ QUOTE
END
44
O mais comum que para incorporar as declaraes das estruturas sejam usados INCLUDEs (dos
membros da libraries gerados no DCLGEN); no exemplo, a tabela EPCV01A1 tem INCLUDE do
EPCV01A1 (membro da library gerado pelo DCLGEN) :
WORKING-STORAGE SECTION.
...
EXEC SQL INCLUDE SQLCA END-EXEC
EXEC SQL INCLUDE EPCV01A1 END-EXEC
...
PROCEDURE DIVISION.
...
45
******************************************************************
01 EPCV01A1.
10 CD-PAM-SIS-EPC
PIC X(10).
10 DS-PAM-SIS-EPC
PIC X(200).
10 TS-INC
PIC X(26).
10 CD-USU-INC
PIC X(8).
10 TS-ULT-ATU
PIC X(26).
10 CD-USU-ULT-ATU
PIC X(8).
10 CD-PGM-MAN
PIC X(8).
46
SQLCA / SQLCODE
SQLCA (SQL Communication Area): rea de comunicao entre gerenciador DB2 e aplicativo
Declarao da SQLCA : na Working-Storage Section, em geral via INCLUDE
SQLCODE = varivel pertencente SQLCA
O INCLUDE da SQLCA gera o seguinte conjunto de declaraes :
01 SQLCA.
05 SQLCAID
05 SQLCABC
05 SQLCODE
05 SQLERRM.
49 SQLERRML
49 SQLERRMC
05 SQLERRP
05 SQLERRD
05 SQLWARN.
10 SQLWARN0
10 SQLWARN1
10 SQLWARN2
10 SQLWARN3
10 SQLWARN4
10 SQLWARN5
10 SQLWARN6
10 SQLWARN7
05 SQLEXT.
10 SQLWARN8
10 SQLWARN9
10 SQLWARNA
10 SQLSTATE
PIC X(8).
PIC S9(9) COMP-4.
PIC S9(9) COMP-4.
PIC S9(4) COMP-4.
PIC X(70).
PIC X(8).
OCCURS 6 TIMES
PIC S9(9) COMP-4.
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
X.
X.
X.
X.
X.
X.
X.
X.
PIC
PIC
PIC
PIC
X.
X.
X.
X(5).
WS-COD
PIC 9999.
Importante o picture ser desta forma, para aparecer o sinal no display !!!!! Exemplo :
WORKING-STORAGE SECTION.
01 WS-COD PIC -9999.
...
EXEC SQL INCLUDE SQLCA END-EXEC
...
PROCEDURE DIVISION.
...
EXEC SQL comando ... END-EXEC
IF SQLCODE NOT = ZERO
MOVE SQLCODE TO WS-COD
DISPLAY ERRO!!! SQLCODE= WS-COD
END-IF
...
47
exibido
0000J
0000K
0000L
0000M
0018}
0018J
0031J
0050J
0053}
0053K
0080L
0080M
0080N
0080O
0080P
0081J
0090M
0091J
0091L
Significado
Varivel para DATE, TIME ou TIMESTAMP errada
Necessrio colocar indicador de NULL
Insert ou Update de VARCHAR : valor do campo LEN invlido
Foi dado Fetch sem ter sido dado Open no cursor
Insert ou Update impossvel por constraint de Integridade Referencial
Delete impossvel por constraint de Integridade Referencial
Insert ou Update tentado com chave duplicada (linha j existente)
Select com tabela resultado com mais de uma linha (sem cursor)
Timeout ou recurso no disponvel (por lock, por exemplo)
48
SQLCA : detalhes
NAME
SQLCAID
SQLCABC
SQLCODE
SQLERRML
SQLERRMC
SQLERRP
SQLERRD
SQLERRD(1)
SQLERRD(2)
SQLERRD(3)
SQLERRD(4)
Data type
Char(8)
Field Values
An "eye catcher" for storage dumps containing 'SQLCA'. The sixth byte is 'L' if line number
information is returned from parsing an SQL procedure body.
Integer
Contains the length of the SQLCA, 136.
Integer
Contains the SQL return code. For specific meanings of SQL return codes, see the message
section of the Message Reference.
Code
Means
0
Successful execution (although one or more SQLWARN indicators may be set).
positive Successful execution, but with a warning condition.
negative Error condition.
Smallint
Length indicator for sqlerrmc, in the range 0 through 70. 0 means that the value of sqlerrmc
is not relevant.
Varchar (70) Contains one or more tokens, separated by X'FF', that are substituted for variables in the
descriptions of error conditions.
This field is also used when a successful connection is completed.
When a NOT ATOMIC compound SQL statement is issued, it may contain information on
up to 7 errors.
Char(8)
Begins with a three-letter identifier indicating the product, followed by five digits indicating
the version, release, and modification level of the product. For example, SQL07010 means
DB2 Universal Database Version 7 Release 1 Modification level 0.
If SQLCODE indicates an error condition, then this field identifies the module that returned
the error.
This field is also used when a successful connection is completed.
Array
Six INTEGER variables that provide diagnostic information. These values are generally
empty if there are no errors, except for sqlerrd(6) from a partitioned database.
Integer
If connection is invoked and successful, contains the maximum expected difference in
length of mixed character data (CHAR data types) when converted to the database code page
from the application code page.
A value of 0 or 1 indicates no expansion;
A value greater than 1 indicates a possible expansion in length;
A negative value indicates a possible contraction.
On successful return from an SQL procedure, contains the return status value from the SQL
procedure.
Integer
If connection is invoked and successful, contains the maximum expected difference in
length of mixed character data (CHAR data types) when converted to the application code
page from the database code page.
A value of 0 or 1 indicates no expansion;
A value greater than 1 indicates a possible expansion in length;
A negative value indicates a possible contraction.
If the SQLCA results from a NOT ATOMIC compound SQL statement that encountered one
or more errors, the value is set to the number of statements that failed.
Integer
If PREPARE is invoked and successful, contains an estimate of the number of rows that will
be returned. After INSERT, UPDATE, and DELETE, contains the actual number of rows
affected. If compound SQL is invoked, contains an accumulation of all sub-statement rows.
If CONNECT is invoked, contains 1 if the database can be updated; 2 if the database is read
only.
If CREATE PROCEDURE for an SQL procedure is invoked and an error is encountered
parsing the SQL procedure body, contains the line number where the error was encountered.
The sixth byte of sqlcaid must be 'L' for this to be a valid line number.
Integer
If PREPARE is invoked and successful, contains a relative cost estimate of the resources
required to process the statement. If compound SQL is invoked, contains a count of the
49
SQLERRD(5)
Integer
SQLERRD(6)
Integer
SQLWARN
Array
SQLWARN0
SQLWARN1
Char(1)
Char(1)
SQLWARN2
SQLWARN3
SQLWARN4
Char(1)
Char(1)
Char(1)
SQLWARN5
SQLWARN6
SQLWARN7
Char(1)
Char(1)
Char(1)
SQLWARN8
Char(1)
SQLWARN9
Char(1)
SQLWARN10
Char(1)
SQLSTATE
Char(5)
50
Variveis
Dentro de embedded SQL statements : utiliza-se nomes de objetos que o SQL aceita ( o prcompilador quem vai analisar / resolver );
Variveis Cobol (que recebero dados de colunas ou das quais sero obtidos os dados para
inserir ou alterar nas colunas) : preceder com dois pontos. Exemplos:
:WS-NOM-CLI
:CODOPER
Nomes de colunas de tabelas : no colocar dois pontos; colocar o nome da coluna onde esteja o
dado desejado. Neste caso, caso seja necessrio qualificar, usar tabela coluna (o prcompilador no aceita OF ou IN). Exemplos:
WS-NOM-CLI
Ateno para as regras a respeito dos nomes de colunas de tabelas e para os nomes de variveis
Cobol, colocadas nos quadros ilustrativos dos exemplos a seguir !!!!
Nomes de colunas de tabelas
Exemplos :
EXEC SQL
SELECT CD_AGE, NM_AGE
FROM CADAGE
INTO :CADAGE.CD-AGE,
:CADAGE.NM-AGE
END-EXEC
CLUSTER
DATABASE
INDEX
PACKAGE
PROCEDURE
TABLE
USER
VIEW
CREATE
View
Apelido
Cria a view
o nome da view
especifica nomes para as expresses selecionadas pela consulta da
view (O nmero de apelidos deve corresponder ao nmero de
expresses selecionadas pela view).
52
Subconsulta
WITH CHECK OPTION
Restrio
WITH READ ONLY
CREATE VIEW
AS SELECT
FROM
WHERE
EMPVU10
EMPNO, ENAME,
EMP
DEPTNO = 10;
JOB
ALTER
Usado para alterar objetos (sua estrutura / caractersticas) do database ; alguns objetos:
ALTER
ALTER
ALTER
ALTER
ALTER
ALTER
ALTER
ALTER
CLUSTER
DATABASE
INDEX
PACKAGE
PROCEDURE
TABLE
USER
VIEW
TABLE
DEPT ( ADD
DEPSALA
DECIMAL (10,2) );
DROP
Usado deletar objetos do database ; alguns exemplos de objetos :
DROP
DROP
DROP
DROP
DROP
DROP
DROP
CLUSTER
INDEX
PACKAGE
PROCEDURE
TABLE
USER
VIEW
TABLE
EMP;
COMMENT
Usado para inserir comentrios no data dictionary
53
GRANT
Usado para conceder privilgios de acesso de usurio ao database
Sintaxe:
GRANT <privileges> ON <table name>
TO <grantee> [ { <comma> <grantee> }... ]
[ WITH GRANT OPTION ]
RENAME
Usado para renomear objetos do database
REPLACE
Usado para recriar uma view se ela j existir (substitui uma j existente por uma nova com o mesmo
nome)
Sintaxe:
REPLACE
View
Apelido
Subconsulta
WITH CHECK OPTION
Restrio
WITH READ ONLY
o nome da view
especifica nomes para as expresses selecionadas pela consulta da
view (O nmero de apelidos deve corresponder ao nmero de
expresses selecionadas pela view).
uma instruo SELECT completa
especifica que somente linhas acessveis view podem ser inseridas ou
atualizadas.
o nome atribudo restrio CHECK OPTION
assegura que as operaes DML no possam ser executadas nesta
view.
Exemplo :
REPLACE VIEW
AS SELECT
FROM
WHERE
EMPVU10R
EMPNO, ENAME, JOB
EMP
DEPTNO = 10;
54
REVOKE
Usado para revogar privilgios concedidos pelo GRANT
Sintaxe:
REVOKE [ GRANT OPTION FOR ] <privileges> ON <object name>
FROM <grantee> [ { <comma> <grantee> }... ] <drop behavior>
55
Uma transacao comea quando for executada a primeira instruo SQL executvel.
Ela termina com um dos seguintes eventos:
COMMIT ou ROLLBACK emitida
Instruo DDL (proibido...) ou DCL (COMMIT, SAVEPOINT, ROLLBACK) executada
(commit automtico)
Termina o programa
O sistema cai
Uma operacao que altere os dados (INSERT, UPDATE, DELETE) na verdade deixa pendente sua
efetivacao , que somente acontece no final da transacao ou no COMMIT
ROLLBACK (sem parametros) finaliza a transao atual, NAO EFETIVANDO nenhuma alteraao
pendente desde o incio da transao (primeiro comando SQL do programa ou ltimo COMMIT);
ROLLBACK TO SAVEPOINT nome finaliza a transao atual, NAO EFETIVANDO nenhuma
alteracao pendente DESDE o SAVEPOINT indicado (somente efetiva as pendentes ATE o
SAVEPOINT)
Inicio da transacao
INSERT
Chave 15
COMMIT
Final da transacao
UPDATE
Chave 11
SAVEPOINT A
INSERT
Chave 16
DELETE
Chave 12
SAVEPOINT B
ROLLBACK
56
EMP
DEPTNO = 10
EMPNO = 7782;
COMMIT;
DELETE FROM TEST;
ROLLBACK;
DELETE FROM TEST
WHERE
ID = 100;
SELECT *
FROM TEST
WHERE ID = 100;
COMMIT;
**************************************************************
PROGRAMA.
PERFORM INICIAR.
PERFORM INCLUIR-E-ALTERAR-TABELAS.
PERFORM TERMINAR.
IF WS-RETURN-CODE NOT EQUAL ZERO
GO TO ROLLBECKAR
END-IF.
STOP RUN.
ROLLBECKAR.
DISPLAY 'VAI INICIAR O ROLLBACK'
EXEC SQL
ROLLBACK
END-EXEC
DISPLAY 'ROLLBACK EFETUADO'
MOVE WS-RETURN-CODE TO RETURN-CODE.
STOP RUN.
**************************************************************
58
7 Comandos DML
SELECT
SELECT - Uso batch em Cobol
Para efetuar Query (obter dados; obter colunas / linhas das tabelas)
Se a tabela resultado tiver uma nica linha a acessar : SELECT sem cursor
Se a tabela resultado tiver mais de uma linha a acessar : SELECT com cursor
SEM cursor
Quando for certeza que a tabela resultado tiver uma nica linha
Na Procedure Division, colocar o SELECT em linha, no momento necessrio.
Sintaxe :
SELECT
[ | DISTINCT ou ALL |
coluna(s)-resultado
FROM tab_origem
[ WHERE condicao-filtro ]
[ GROUP BY coluna(s) ]
[ HAVING coluna(s) ]
[ ORDER coluna(s) ]
INTO varivel-working-storage
[ OPTIMIZE FOR n ROW ]
[ FETCH FIRST [n] ROW ONLY ]
Exemplo 1 :
...
...
EXEC SQL
INCLUDE SQLCA
END-EXEC
...
PROCEDURE DIVISION.
...
...
EXEC SQL
SELECT COUNT(*) FROM TABCLI INTO :W-QUANTOS
END-EXEC
...
...
Exemplo 2 :
...
DATA DIVISION.
...
WORKING-STORAGE SECTION.
...
59
60
COM cursor
Conceitos
Quando um programa faz um SELECT, ele consegue acessar uma nica linha por vez da result
table, diferentemente de quando o SELECT feito de forma interativa ou por meio do DSNTEP2,
quando todas as linhas da result table so disponibilizadas (em arquivo tipo texto ou em relatrio /
spool).
CURSOR um recurso do DB2 que permite acessar uma nica linha da tabela resultado de um
SELECT; usado quando o SELECT retorna mais de uma linha, para acessar linha por linha
sequencialmente ( semelhana de uma arquivo sequencial ; o cursor como se fosse um arquivo
sequencial virtual : cada linha da tabela resultado seria equivalente a um registro lgico.)
61
cursor-name
cursor-name
Indica o nome do cursor (para referncia no Open, Fetch e Close).
WITH HOLD
Indica que os recursos (linhas) devem ficar disponveis mesmo aps o trmino de uma
transao DB2
Transaes que terminam com COMMIT:
o Cursores que tenham WITH HOLD na definio e que estejam abertos quando for
dado o COMMIT permanecem abertos mesmo depois do COMMIT; ele fica
posicionado na prxima linha a ser acessada
o Aps o COMMIT, somente podem ser dados os comandos FETCH e CLOSE para o
cursor
Transaes que terminam com ROLLBACK: todos os cursores abertos so fechados
(no podem ser usados depois do ROLLBACK)
FOR
Especifica o SELECT que deve ser efetuado para obter uma result table, da qual sero
obtidas as linhas que sero acessadas pelo cursor.
Sintaxe do SELECT declarado no Cursor :
SELECT
[ | DISTINCT ou ALL |
coluna(s)-resultado
FROM tab_origem
[ WHERE condicao-filtro ]
[ GROUP BY coluna(s) ]
[ HAVING coluna(s) ]
[ ORDER coluna(s) ]
INTO varivel-working-storage
[ OPTIMIZE FOR n ROW ]
[ FETCH FIRST [n] ROW ONLY ]
Exemplos :
62
S DECLARE :
DECLARE C1 CURSOR FOR
SELECT DEPTNO, DEPTNAME, MGRNO
FROM DEPARTMENT
WHERE ADMRDEPT = 'A00';
DECLARE UP_CUR CURSOR FOR
SELECT PROJNO, PRSTDATE, PRENDATE
FROM PROJECT
FOR UPDATE OF PRSTDATE, PRENDATE;
63
OPEN
nome_cursor
nome_cursor
nome_cursor
INTO
lista_variveis_receptoras
Especifica as variveis dentro das quais ser colocado o contedo de cada coluna
solicitada no DECLARE
Deve haver uma varivel para cada coluna
As variveis devem ser especificadas na mesma ordem em que as colunas foram
especificadas no DECLARE
As variveis deve obrigatoriamente ter PIC compatvel com os data-types da coluna
Se a quantidade de variveis receptoras for menor que a quantidade de colunas, na
varivel SQLWARN3 de SQLDA colocado W
Se a quantidade de variveis receptoras for maior que a quantidade de colunas no
dado nenhum aviso
Ao efetuar uma tentativa de obter linha quando todas j foram obtidas, colocado +100
no SQLCODE e 02000no SQLSTATE ; as variveis receptoras no so alteradas
Exemplos :
EXEC SQL
DECLARE C1 CURSOR FOR
SELECT DEPTNO, DEPTNAME, MGRNO FROM TDEPT
WHERE ADMRDEPT = 'A00'
END-EXEC
...
EXEC SQL
OPEN C1 END-EXEC
END-EXEC
...
PERFORM UNTIL SQLCODE NOT =0
EXEC SQL
FETCH C1
INTO :DNUM, :DNAME, :MNUM
END-EXEC
64
END-PERFORM
...
EXEC SQL
CLOSE C1
END-EXEC
65
Exemplo :
SELECT CD_AGE_SLD, SLD_CLI AS VALOR_DEBITO
FROM DB2T.ZZZ333_SLDNEG;
66
FROM TABEXEMPLO
Neste caso a coluna da tabela resultado que ir ter a informao COUNT(*) ter o
nome de QUANTAS_LINS .
Se no fosse especificada a clusula AS com o nome QUANTAS_LINS, a referida
coluna no teria nome
SELECT MAX(SALARIO) AS MAIOR_SALARIO FROM ......
SELECT (SALARIO * 1.2) AS COM_REAJUSTE FROM ......
Se entre os elementos que compem a tabela-resultado for especificado uma funo que faa tratamento
de grupos de linhas , necessrio :
especificar as colunas como coluna(s)-resultado
e
especificar a clusula GROUP BY indicando as mesmas colunas como elementos chave de
agrupamento
As funes que tratam grupos de linhas (funes agregadas) so :
COUNT(coluna)
= retorna o nmero (quantidade) de colunas que sejam NOT NULL .
COUNT(*)
= retorna o nmero (quantidade) de colunas, sejam NULL ou NOT NULL
MAX(coluna) = retorna o maior valor que a coluna tenha em qualquer de suas linhas
MIN(coluna)
= retorna o menor valor que a coluna tenha em qualquer de suas linhas
SUM(coluna) = retorna a somatria de todos os valores que a coluna tenha em todas suas linhas
AVG(coluna) = retorna a mdia aritmtica de todos os valores que a coluna tenha em todas suas linhas
67
FROM tab_origem
pode-se especificar :
nome de uma tabela
nome de mais de uma tabela
outro SELECT (na verdade uma result table)
WHERE condio-filtro (de linhas individuais)
Tipo de comparao
nulo
Igual a
No igual a (diferente de)
<
Menor que
<=
>=
>
>=
<=
LIKE
OR
AND
BETWEEN
IN (X, Y, Z)
que)
que)
que)
que)
Exemplo
CEP IS NULL
CEP = '01313001'
CEP < > '01313001'
CEP < 04000000
AVG(SALDO) < 10000
IDADE < = 16
IDADE > = 21
SALARIO > 2000
SALARIO > = 5000
SALARIO < = 5000
NOME LIKE '%SILVA%'
DATANASC < '1969- 07-21' OR
SALARIO < 16000
DATANASC < '1969- 07-21' AND
SALARIO < 16000
IDADE BETWEEN 16 AND 18
SEXO IN ('M', 'F', 'S', G)
Operador LIKE ::
LIKE
LIKE
LIKE
LIKE
LIKE
%literal%
literal%
%literal
literal_
_literal
:
:
:
:
:
semelhante ao WHERE, mas aplicado a grupos de linhas (relativos a colunas usadas em funes agregadas) ;
as funes agragadas devem ter sido especificadas como coluna(s) resultado.
ORDER coluna(s)-ordenao
Indica que o DB2 deve efetuar acesso diferenciado aos dados, para, de alguma forma, otimizar o
desempenho. Pode-se especificar : OPTIMIZE FOR n ROWS
A cada n linhas o DB2 libera um bloco com essas n linhas para que possam ser processadas, permitindo que
o aplicativo ganhe controle a cada intervalo de tempo menor do que ganharia caso tivesse que esperar o fim
do acesso a todas as linhas da result table do SELET. Exemplo :
SELECT
FROM
ORDER BY
OPTIMIZE
Indica que deve ser retornado pelo DB2 somente as n primeiras linhas da tabela resultado.
Pode-se especificar :
FETCH FIRST ROW ONLY
= traz somente a primeira linha
FETCH FIRST ROWS ONLY
= traz somente a primeira linha
FETCH FIRST 1 ROW ONLY
= traz somente a primeira linha
FETCH FIRST 1 ROWS ONLY
= traz somente a primeira linha
FETCH FIRST n ROW ONLY
= traz somente as n primeiras linhas
FETCH FIRST n ROWS ONLY
= traz somente as n primeiras linhas
Exemplos :
Para obter os 10 maiores salrios de uma empresa :
SELECT
CODFUNC, NOMEFUNC, SALARIO
FROM
TABFUNCS
ORDER BY SALARIO DESC
FETCH FIRST 10 ROWS ONLY;
equivalente a
SELECT
FROM
70
{ | * | coluna(s) | }
FROM tab_origem
WHERE condicao-filtro
Devolve :
Colunas : conforme solicitado
Linhas : aquelas que satisfizerem a condio-filtro
Ordem : chave primria
SELECT [ | DISTINCT | ALL | ]
{ | * | coluna(s) | }
FROM tab_origem
GROUP BY coluna(s)
Devolve :
Colunas : conforme solicitado
Linhas : aquelas que satisfizerem a condio-filtro
Ordem : chave primria
SELECT [ | DISTINCT | ALL | ]
{ | * | coluna(s) | }
FROM tab_origem
GROUP BY coluna(s)
WHERE condicao-filtro
Devolve :
Colunas : conforme solicitado
Linhas : aquelas que satisfizerem a condio-filtro
Ordem : chave primria
SELECT [ | DISTINCT | ALL | ]
{ | * | coluna(s) | }
FROM tab_origem
GROUP BY coluna(s)
WHERE condicao-filtro
ORDER coluna(s)
Devolve :
Colunas : conforme solicitado
Linhas : aquelas que satisfizerem a condio-filtro
Ordem : chave primria
72
Devolve :
73
Devolve :
SELECT
+
+
+
+
+
+
+
TBNAME,
NAME,
COLNO,
COLTYPE,
LENGTH,
SCALE,
DEFAULT,
REMARKS
FROM SYSIBM.SYSCOLUMNS
WHERE
TBNAME = :CH-TBNAME
ORDER BY COLNO
INTO
:TBNAME-X,
:NAME-X,
:COLNO-B,
:COLTYPE-X,
:LENGTH-B,
:SCALE-B,
:NULLS-X,
:REMARKS-X
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
74
Comando
Resultado
Selecionar
Tabela : DB2T.ZZZ102_SLDCLI
Linhas : Todas
Colunas : Todas
SELECT * FROM DB2T.ZZZ102_SLDCLI;
+-------------------------------------------------------------------------------------------------------------+
|
CD_AGE_SLD
|
CD_CLI
|
NM_CLI
|
TEL_CLI
|
VL_SDO_CLI
|
+-------------------------------------------------------------------------------------------------------------+
1_|
110 |
920 | MAURO LOPES
|
99106925 |
4550.00 |
2_|
110 |
900 | JOSE XAVIER MARQUES
|
99106688 |
565.30 |
3_|
80 |
130 | 123 oliveira 4
|
99190011 |
4233.09 |
4_|
40 |
320 | BIA MOREIRA FILHA
|
8563212 |
0.00 |
5_|
50 |
130 | VOLTAIRE DA SILVA
|
99103607 |
3550.70 |
6_|
40 |
120 | BIA MOREIRA
|
8563212 |
0.00 |
+-------------------------------------------------------------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
6 ROW(S)
Funo
Comando
Resultado
Funo
Comando
Resultado
Selecionar
Tabela : DB2T.ZZZ102_SLDCLI
Linhas : Todas
Colunas : CD_AGE_SLD, CD_CLI
SELECT CD_AGE_SLD, CD_CLI FROM DB2T.ZZZ102_SLDCLI;
+---------------------------------+
|
CD_AGE_SLD
|
CD_CLI
|
+---------------------------------+
1_|
110 |
920 |
2_|
110 |
900 |
3_|
80 |
130 |
4_|
40 |
320 |
5_|
50 |
130 |
6_|
40 |
120 |
+---------------------------------+
SUCCESSFUL RETRIEVAL OF
6 ROW(S)
Selecionar
Tabela : DB2T.ZZZ102_SLDCLI
Linhas : Aquelas cuja coluna CD_CLI tenha 320
Colunas : Todas
SELECT * FROM DB2T.ZZZ102_SLDCLI WHERE CD_CLI = 320;
+-------------------------------------------------------------------------------------------------------------+
|
CD_AGE_SLD
|
CD_CLI
|
NM_CLI
|
TEL_CLI
|
VL_SDO_CLI
|
+-------------------------------------------------------------------------------------------------------------+
1_|
40 |
320 | BIA MOREIRA FILHA
|
8563212 |
0.00 |
+-------------------------------------------------------------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
1 ROW(S)
Funo
Selecionar
Tabela : DB2T.ZZZ102_SLDCLI
Linhas : Aquelas cuja coluna CD_CLI tenha 320
Colunas : CD_CLI, NM_CLI
75
Comando
Resultado
Funo
Comando
Resultado
Selecionar
Tabela : DB2T.ZZZ102_SLDCLI
Linhas : Todas
Colunas : NM_CLI , e a coluna derivada [no existente, sem nome, resultado da aplicao de operao sobre
coluna(s) existentes] resultante da soma entre as colunas VL_SDO_CLI e TEL_CLI
SELECT NM_CLI, (VL_SDO_CLI + TEL_CLI) FROM DB2T.ZZZ102_SLDCLI;
+----------------------------------------------------------+
|
NM_CLI
|
|
+----------------------------------------------------------+
1_| MAURO LOPES
|
99111475.00 |
2_| JOSE XAVIER MARQUES
|
99107253.30 |
3_| 123 oliveira 4
|
99194244.09 |
4_| BIA MOREIRA FILHA
|
8563212.00 |
5_| VOLTAIRE DA SILVA
|
99107157.70 |
6_| BIA MOREIRA
|
8563212.00 |
+----------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
6 ROW(S)
Funo
Selecionar
Tabela : DB2T.ZZZ102_SLDCLI
Linhas : Todas (se houver linhas em duplicidade, exibir a primeira e as demais eliminar)
Colunas : CD_CLI
Comando SELECT DISTINCT CD_CLI FROM DB2T.ZZZ102_SLDCLI;
Resultado
+----------------+
|
CD_CLI
|
+----------------+
1_|
120 |
2_|
130 |
3_|
320 |
4_|
900 |
5_|
920 |
+----------------+
SUCCESSFUL RETRIEVAL OF
Funo
5 ROW(S)
Selecionar
Tabela : DB2T.ZZZ102_SLDCLI
76
Comando
Resultado
Linhas : Todas (se houver linhas em duplicidade, exibir a primeira e as demais eliminar)
Colunas : CD_AGE_SLD, MINIMO (Coluna derivada resultante da determinao do menor valor existente na
coluna VL_SDO_CLI), sem nome (Coluna derivada resultante da determinao do maior valor existente em
VL_SDO_CLI), MEDIA (Coluna derivada resultante da determinao da mdia aritmtica dos valores
existentes na coluna VL_SDO_CLI)
Observar que CD_AGE_SLD e os mnimo, mximo e mdia de VL_SDO_CLI devem ser agrupados por
CD_AGE_SLD.
SELECT CD_AGE_SLD, MIN(VL_SDO_CLI) AS MINIMO,
MAX(VL_SDO_CLI), AVG(VL_SDO_CLI) AS MEDIA
FROM DB2T.ZZZ102_SLDCLI
GROUP BY CD_AGE_SLD;
+-------------------------------------------------------------------------------+
|
CD_AGE_SLD
|
MINIMO
|
|
MEDIA
|
+-------------------------------------------------------------------------------+
1_|
40 |
0.00 |
0.00 |
0.00 |
2_|
50 |
3550.70 |
3550.70 |
3550.70 |
3_|
80 |
4233.09 |
4233.09 |
4233.09 |
4_|
110 |
565.30 |
4550.00 |
2557.65 |
+-------------------------------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
4 ROW(S)
Funo
Selecionar
Tabela : DB2T.ZZZ102_SLDCLI
Linhas : Todas , ordenados por nome(NM_CLI)
Colunas : CD_AGE_SLD e NM_CLI
FROM DB2T.ZZZ102_SLDCLI
Comando SELECT CD_AGE_SLD, NM_CLI
Resultado
ORDER BY NM_CLI;
+------------------------------------------------------+
|
CD_AGE_SLD
|
NM_CLI
|
+------------------------------------------------------+
1_|
40 | BIA MOREIRA
|
2_|
40 | BIA MOREIRA FILHA
|
3_|
110 | JOSE XAVIER MARQUES
|
4_|
110 | MAURO LOPES
|
5_|
50 | VOLTAIRE DA SILVA
|
6_|
80 | 123 oliveira 4
|
+------------------------------------------------------+
SUCCESSFUL RETRIEVAL OF
6 ROW(S)
Funo
Selecionar
Tabela : DB2T.ZZZ100_CADAGE
Linhas : (a nica da tabela resultado)
Colunas : Coluna derivada resultante da determinao de count(*) : quantidade de linhas
Comando SELECT COUNT(*) FROM DB2T.ZZZ100_CADAGE;
Resultado
+----------------+
|
|
+----------------+
1_|
33 |
+----------------+
SUCCESSFUL RETRIEVAL OF
1 ROW(S)
77
Funo
Comando
Resultado
Funo
Comando
Resultado
Funo
Comando
Resultado
Funo
Comando
Resultado
Selecionar
Tabela : DB2T.ZZZ100_CADAGE
Linhas : (a nica da tabela resultado)
Colunas : Coluna derivada resultante da determinao de count(distinct NM_AGE) : quantidade de linhas sem
repetio
SELECT COUNT(DISTINCT NM_AGE) FROM DB2T.ZZZ100_CADAGE;
+----------------+
|
|
+----------------+
1_|
29 |
+----------------+
SUCCESSFUL RETRIEVAL OF
1 ROW(S)
Selecionar
Tabela : DB2T.ZZZ100_CADAGE
Linhas : (a nica da tabela resultado)
Colunas : Coluna derivada resultante da determinao de count(*) where CD_AGE IS NULL : quantidade de
linhas em que CD_AGE nula.
SELECT COUNT(*) FROM DB2T.ZZZ100_CADAGE WHERE CD_AGE IS NULL;
+----------------+
|
|
+----------------+
1_|
0 |
+----------------+
SUCCESSFUL RETRIEVAL OF
1 ROW(S)
Selecionar
Tabela : DB2T.ZZZ100_CADAGE
Linhas : (a nica da tabela resultado)
Colunas : Coluna derivada resultante da determinao de count(*) where CD_AGE IS NOT NULL :
quantidade de linhas em que CD_AGE no nula.
SELECT COUNT(*) FROM DB2T.ZZZ100_CADAGE WHERE CD_AGE IS NOT NULL;
+----------------+
|
|
+----------------+
1_|
29 |
+----------------+
SUCCESSFUL RETRIEVAL OF
1 ROW(S)
1 Criar tabela resultado do SELECT CODFUNC FROM FUNCS WHERE DEPTO = VENDAS :
Tabela : FUNCS
Linhas : Todas em que a coluna DEPTO tem valor VENDAS
Colunas : CODFUNC
2 Selecionar
Tabela : EMP_ACT
Linhas : todas cuja coluna CODFUNC tenha como valor um cdigo de funcionrio que seja um dos que
faam parte da tabela resultado do primeiro SELECT
Colunas : todas
SELECT * FROM EMP_ACT
WHERE CODFUNC IN (SELECT CODFUNC FROM FUNCS WHERE DEPTO = 'VENDAS')
Tabela resultado com todas as colunas de EMP_ACT e cujas linhas so de funcionrios que estejam cadastrados como
sendo do depto de VENDAS em FUNCS
78
Funo
Comando
Efetuar Join das tabelas EMP_ACT e EMPLOYEE, selecionando todas as colunas da tabela EMP_ACT, e a
coluna LASTNAME da tabela EMPLOYEE.
SELECT EMP_ACT.*, LASTNAME FROM EMPLOYEE
WHERE EMP_ACT.EMPNO = EMPLOYEE.EMPNO
Resultado
Tabela resultado com todas as colunas de EMP_ACT e com a coluna LASTNAME de EMPLOYEE, cujas linhas so
aquelas em que h correspondncia entre o codigo do funcionrio (EMPNO) nas duas tabelas
Funo
Comando
Efetuar Join das tabelas EMPLOYEE e DEPARTMENT, selecionando EMPNO, LASTNAME e WORKDEPT
na tabela EMPLOYEE e DEPTNO na tabela DEPARTMENT, de todos os funcionrios com BIRTHDATE
anterior a 1930.
SELECT EMPNO, LASTNAME, WORKDEPT, DEPTNAME
FROM EMPLOYEE, DEPARTMENT
WHERE WORKDEPT = DEPTNO
AND YEAR(BIRTHDATE) < 1930
Resultado
Tabela resultado com 4 colunas e cujas linhas so aquelas em que h correspondncia entre o codigo do departamento
nas duas tabelas e em que o ano da data de nascimento do funcionrio seja < 1930
Funo
Comando
Resultado
79
UPDATE
UPDATE - Uso batch no DSNTEP2
80
81
ELSE
IF SQLCODE EQUAL 100
DISPLAY 'LINHA NAO ACHADA. SQLCODE=' W-COD
ELSE
DISPLAY 'UPDATE OK'
END-IF
END-IF
*
* ATUALIZACAO DADOS TABELA EPCV30A1_BRD_LFI
*
EXEC SQL
UPDATE
EPCV30A1_BRD_LFI
SET
CD_STA_BRD_LIB_FIN = 'LB'
,TS_ULT_ATU
= CURRENT TIMESTAMP
,CD_USU_ULT_ATU = 'APOIO'
,CD_PGM_MAN
= 'EPCBX11'
WHERE NO_APV_PPT_CRE BETWEEN 11111111 AND 22222222
END-EXEC.
MOVE
SQLCODE TO W-COD
IF SQLCODE NOT EQUAL ZEROS AND 100
DISPLAY 'ERRO UPDATE EPCV30A1_BRD_LFI. SQLCODE=' W-COD
ELSE
IF SQLCODE EQUAL 100
DISPLAY 'LINHA NAO ACHADA. SQLCODE=' W-COD
ELSE
DISPLAY 'UPDATE OK'
END-IF
END-IF
*-------------------------------------------------------
82
INSERT
INSERT - Uso batch no DSNTEP2
1 ROW(S)
83
84
:EPCV51A1.CD-CTL-PAT,
:EPCV51A1.TS-INC,
'MIGRACAO',
:EPCV51A1.TS-ULT-ATU,
'MIGRACAO',
'EPCBX55')
END-EXEC.
*
MOVE SQLCODE TO WS-SQLC
IF SQLCODE EQUAL ZEROS
DISPLAY 'INSERT OK'
ADD 1 TO WS-INCLUIDOS-TAB51
ELSE
MOVE SQLCODE
TO WS-RETURN-CODE
IF SQLCODE = -803
DISPLAY 'LINHA JA EXISTIA. SQLCODE=' WS-SQLC
ELSE
DISPLAY 'ERRO NO INSERT. SQLCODE=' WS-SQLC
END-IF
85
DELETE
DELETE - Uso batch no DSNTEP2
0 ROW(S)
86
87
WHENEVER
Comando usado para indicar que o programa deseja efetuar tratamento prprio quando ocorrer
determinados tipos de erro.
O comando somente marca que o programa deseja efetuar determinado procedimento CASO OCORRA
o(s) erro(s) indicado(s).
A execuo efetiva das aes que tratam o(s) erro(s) somente acontece quando ocorrer o(s) erro(s)
indicado(s), se ocorrer.
O comando normalmente especificado para execuo (marcao) no incio do programa; enquanto ele
no for executado, se ocorrer qualquer erros, o procedimento o padro : o DB2 trata.
Uso para setar :
WHENEVER { | NOT FOUND | SQLERROR | SQLWARNING | }
{ | CONTINUE | GOTO label | GO TO label | }
{ | NOT FOUND | SQLERROR | SQLWARNING | }
Indica que o programa deseja tratar qualquer condio de SQLCODE negativo resultante de
um comando SQL.
SQLWARNING
Indica para continuar na instruo seguinte ao comando SQL que gerou a condio (NOT
FOUND ou SQLERROR ou SQLWARNING) : o erro bypassado (a no ser que as
instrues seguintes testem o SQLCODE).
GO TO label
ou
GOTO
label
Indica para onde (qual procedure name deve ser efetuado um desvio em caso de ocorrer a
condio (NOT FOUND ou SQLERROR ou SQLWARNING).
Exemplos :
88
EXEC SQL
END-EXEC.
END-EXEC.
Indica para desviar para o procedure name NAO-TEM-LINHA se a execuo de um comando SQL
subsequente (provavelmente um FETCH) ocasionar um SQLCODE = +100.
89
8 - FUNES (Built-In)
SINTAXE
ABS(expressao)
AVG([DISTINCT] [ALL] expressao)
CEILING(expressao)
CHAR(|string|coluna|
[,|ISO|USA|EUR|JIS|LOCAL|])
DESCRIO / EXEMPLO
Retorna o valor absoluto (mdulo).
ABS(SALDO)
Retorna a mdia.
AVG(SALARIO)
Retorna o inteiro maior mais proximo do resultado da expressao.
CEILING(3.14) retorna 4
Converte date, time, timestamp, ROWID, valor (floating point,
integer, ou decimal) para (string) caracter
CHAR(DATANASC,EUR)
CHAR(DATE(2004-11-30),ISO) retorna 2004-11-30
CHAR(DATE(2004-11-30),USA) retorna 11/30/2004
CHAR(DATE(2004-11-30),EUR) retorna 30.11.2004
CHAR(DATE(2004-11-30),JIS) retorna 2004:11:30
CHAR(TIME(21.22.23),ISO) retorna 21.22.23
CHAR(TIME(21.22.23),USA) retorna 09.22 PM
CHAR(TIME(21.22.23),EUR) retorna 21.22.23
CHAR(TIME(21.22.23),JIS) retorna 21:22:23
CONCAT(string1,string2)
COUNT([DISTINCT] [ALL] expressao/*)
DATE(string)
DAY(|date|timestamp|)
DAYOFYEAR(|time|timestamp|string|)
DAYOFWEEK(|date|timestamp|)
DAYS(|date|timestamp|)
EXP(expressao)
FLOOR(expressao)
HEX(coluna)
HOUR(|time|timestamp|)
LENGTH(|string|coluna|)
LOCATE(string1,|string2|coluna|)
LOG(expressao)
string2
LOCATE(BER,ALBERT) retorna 3
Retorna log neperiano de expressao
LOWER(|string|coluna|)
LTRIM(|string|coluna|)
91
92
Future users of large data banks must be protected from having to know how the data is organized in the
machine (the internal representation). A prompting service which supplies such information is not a
satisfactory solution. Activities of users at terminals and most application programs should remain
unaffected when the internal representation of data is changed and even when some aspects of the external
representation are changed. Changes in data representation will often be needed as' a result of changes in
query, update, and report traffic and natural growth in the types of stored information.
Existing non inferential, formatted data systems provide users with tree-structured files or slightly more
general network models of the data. In Section 1, inadequacies of these models are discussed. A model
based on n-ary relations, a normal form for data base relations, and the concept of a universal data sub
language are introduced. In Section 2, certain operations on relations (other than logical inference) are
discussed and applied to the problems of redundancy and consistency in the user's model.
Key Words and Phrases
data bank, data base, data structure, data organization;, hierarchies of data, network of data, relations, derivability,
redundancy, consistency, composition, join, retrieval language, predicate calculus, security, data integrity
93
REVOKE
ROLLBACK
SAVEPOINT
SELECT
SET
SHOW
TRUNCATE
UPDATE
WHENEVER
95
PAGE 1
PAGE 2
96
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
DB2 SQL PRECOMPILER
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
ID DIVISION.
PROGRAM-ID.
TABTR9Z9.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
*---------------------------------------------------------------*
* AREA
DB2
*---------------------------------------------------------------*
*
01 FILLER
PIC X(32) VALUE 'SQLCA'.
00002002
00003002
00038000
00039000
00046000
00066000
00095000
EXEC
SQL
INCLUDE SQLCA
END-EXEC.
01
FIM-CURSOR
01 WS-CADAGE.
05 CD-AGE
05 NM-AGE
05 END-AGE
05 TEL-AGE
PIC
X(1)
VALUE 'N'.
01 WS-AGECLI.
05 CD-AGE-CLI
05 CD-CLI
05 TP-CLI
05 NM-CLI
05 END-CLI
05 COMPL-CLI
05 CID-CLI
05 UF-CLI
05 CEP-CLI
05 CMCEP-CLI
05 TEL-CLI
05 RG-CLI
05 CPF-CGC-CLI
05 DT-INCL-CLI
05 DT-EXCL-CLI
05 VL-SDO-CLI
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
S9(09) COMP.
S9(09) COMP.
S9(09) COMP.
X(35).
X(35).
X(30).
X(30).
X(02).
S9(09) COMP.
S9(09) COMP.
S9(09) COMP.
S9(09) COMP.
S9(09) COMP.
X(10).
X(10).
S9(05)V9(02) COMP-3.
01 WS-SLDCLI.
05 CD-AGE-SLD
05 CD-CLI
05 NM-CLI
05 TEL-CLI
05 VL-SDO-CLI
PIC
PIC
PIC
PIC
PIC
S9(09) COMP.
S9(09) COMP.
X(35).
S9(09) COMP.
S9(05)V9(02) COMP-3.
*****************************************************************
* AREA DB2
*****************************************************************
EXEC SQL DECLARE C01 CURSOR FOR
VERSION 7 REL. 1.0
SELECT CD_AGE_SLD,
CD_CLI,
NM_CLI,
TEL_CLI,
VL_SDO_CLI
FROM DB2T.ZZB302_SLDCLI
WHERE VL_SDO_CLI > :WS-SLDCLI.VL-SDO-CLI
END-EXEC
PAGE 3
*
*---------------------------------------------------------------*
PROCEDURE DIVISION.
00479000
*---------------------------------------------------------------*
*---------------------------------------------------------------*
001-INICIO SECTION.
*---------------------------------------------------------------*
PERFORM 002-INICIALIZAR.
PERFORM 003-PROCESSAR.
97
77
PERFORM 999-FINALIZAR.
78
STOP RUN.
79
80
*---------------------------------------------------------------*
81
002-INICIALIZAR SECTION.
82
*---------------------------------------------------------------*
83
MOVE 1 TO VL-SDO-CLI OF WS-SLDCLI.
84
EXEC SQL OPEN C01 END-EXEC.
85
IF SQLCODE NOT EQUAL ZEROS
86
DISPLAY 'ERRO NO OPEN CURSOR'
87
STOP RUN
88
END-IF
89
CONTINUE.
90
002-FIM.
EXIT.
91
92
*---------------------------------------------------------------*
93
003-PROCESSAR SECTION.
94
*---------------------------------------------------------------*
95
96
MOVE 'N' TO FIM-CURSOR.
97
PERFORM UNTIL FIM-CURSOR = 'S'
98
EXEC SQL FETCH C01
99
INTO :WS-SLDCLI.CD-AGE-SLD,
100
:WS-SLDCLI.CD-CLI,
101
:WS-SLDCLI.NM-CLI,
102
:WS-SLDCLI.TEL-CLI,
103
:WS-SLDCLI.VL-SDO-CLI
104
END-EXEC
105
IF SQLCODE NOT EQUAL ZEROS
106
MOVE 'S' TO FIM-CURSOR
107
ELSE
108
DISPLAY 'FETCH OK'
109
DISPLAY WS-SLDCLI
110
END-IF
111
END-PERFORM
112
CONTINUE.
113
003-FIM.
EXIT.
114
115
*---------------------------------------------------------------*
116
999-FINALIZAR SECTION.
DB2 SQL PRECOMPILER
VERSION 7 REL. 1.0
117
*---------------------------------------------------------------*
118
119
DISPLAY 'FIM NORMAL'.
120
121
999-FIM.
EXIT.
DB2 SQL PRECOMPILER
MESSAGES
DSNH050I I
DSNHMAIN WARNINGS HAVE BEEN SUPPRESSED DUE TO LACK OF TABLE DECLARATIONS
DB2 SQL PRECOMPILER
STATISTICS
SOURCE STATISTICS
SOURCE LINES READ: 121
NUMBER OF SYMBOLS: 38
SYMBOL TABLE BYTES EXCLUDING ATTRIBUTES: 3216
THERE WERE 1 MESSAGES FOR THIS PROGRAM.
THERE WERE 0 MESSAGES SUPPRESSED BY THE FLAG OPTION.
157248 BYTES OF STORAGE WERE USED BY THE PRECOMPILER.
RETURN CODE IS 0
PP 5688-197 IBM COBOL for MVS & VM
1.2.2
Date 11/12/2004
Invocation parameters:
LIB,OBJECT,NOADV,APOST,OFFSET
Options in effect:
NOADATA
NOADV
NOANALYZE
APOST
NOAWO
BUFSIZE(4096)
NOCMPR2
NOCOMPILE(S)
NOCURRENCY
DATA(31)
NODATEPROC
NODBCS
NODECK
NODUMP
NODYNAM
NOEXIT
PAGE 4
PAGE 5
PAGE 6
Time 14:30:35
Page
98
NOFASTSRT
FLAG(I)
NOFLAGMIG
NOFLAGSTD
NOIDLGEN
INTDATE(ANSI)
LANGUAGE(EN)
LIB
LINECOUNT(60)
NOLIST
NOMAP
NONAME
NONUMBER
NUMPROC(NOPFD)
OBJECT
OFFSET
NOOPTIMIZE
OUTDD(SYSOUT)
PGMNAME(COMPAT)
NORENT
RMODE(AUTO)
SEQUENCE
SIZE(MAX)
SOURCE
SPACE(1)
NOSSRANGE
NOTERM
NOTEST
TRUNC(STD)
NOTYPECHK
NOVBREF
NOWORD
NOXREF
YEARWINDOW(1900)
ZWB
PP 5688-197 IBM COBOL for MVS & VM
1.2.2
TABTR9Z9 Date 11/12/2004 Time 14:30:35
Page
2
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+----6----+----7-]--+----8 Map and Cross Referen
000001
ID DIVISION.
00002002
000002
PROGRAM-ID.
TABTR9Z9.
00003002
000003
ENVIRONMENT DIVISION.
00038000
000004
CONFIGURATION SECTION.
00039000
000005
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
000006
INPUT-OUTPUT SECTION.
00046000
000007
FILE-CONTROL.
000008
DATA DIVISION.
00066000
000009
FILE SECTION.
000010
WORKING-STORAGE SECTION.
00095000
000011
*---------------------------------------------------------------*
000012
* AREA
DB2
000013
*---------------------------------------------------------------*
000014
*
000015
01 FILLER
PIC X(32) VALUE 'SQLCA'.
000016
000017
*****EXEC
SQL
000018
*****
INCLUDE SQLCA
000019
*****END-EXEC.
000020
01 SQLCA.
000021
05 SQLCAID
PIC X(8).
000022
05 SQLCABC
PIC S9(9) COMP-4.
000023
05 SQLCODE
PIC S9(9) COMP-4.
000024
05 SQLERRM.
000025
49 SQLERRML PIC S9(4) COMP-4.
000026
49 SQLERRMC PIC X(70).
000027
05 SQLERRP
PIC X(8).
000028
05 SQLERRD
OCCURS 6 TIMES
000029
PIC S9(9) COMP-4.
000030
05 SQLWARN.
000031
10 SQLWARN0 PIC X.
000032
10 SQLWARN1 PIC X.
000033
10 SQLWARN2 PIC X.
000034
10 SQLWARN3 PIC X.
000035
10 SQLWARN4 PIC X.
000036
10 SQLWARN5 PIC X.
000037
10 SQLWARN6 PIC X.
000038
10 SQLWARN7 PIC X.
000039
05 SQLEXT.
000040
10 SQLWARN8 PIC X.
99
000041
10 SQLWARN9 PIC X.
000042
10 SQLWARNA PIC X.
000043
10 SQLSTATE PIC X(5).
000044
000045
01 FIM-CURSOR
PIC X(1) VALUE 'N'.
000046
000047
01 WS-CADAGE.
000048
05 CD-AGE
PIC S9(09) COMP.
000049
05 NM-AGE
PIC X(15).
000050
05 END-AGE
PIC X(30).
000051
05 TEL-AGE
PIC S9(09) COMP.
000052
000053
01 WS-AGECLI.
000054
05 CD-AGE-CLI PIC S9(09) COMP.
000055
05 CD-CLI
PIC S9(09) COMP.
000056
05 TP-CLI
PIC S9(09) COMP.
000057
05 NM-CLI
PIC X(35).
PP 5688-197 IBM COBOL for MVS & VM
1.2.2
TABTR9Z9 Date 11/12/2004 Time 14:30:35
Page
3
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+----6----+----7-]--+----8 Map and Cross Referen
000058
05 END-CLI
PIC X(35).
000059
05 COMPL-CLI
PIC X(30).
000060
05 CID-CLI
PIC X(30).
000061
05 UF-CLI
PIC X(02).
000062
05 CEP-CLI
PIC S9(09) COMP.
000063
05 CMCEP-CLI
PIC S9(09) COMP.
000064
05 TEL-CLI
PIC S9(09) COMP.
000065
05 RG-CLI
PIC S9(09) COMP.
000066
05 CPF-CGC-CLI PIC S9(09) COMP.
000067
05 DT-INCL-CLI PIC X(10).
000068
05 DT-EXCL-CLI PIC X(10).
000069
05 VL-SDO-CLI PIC S9(05)V9(02) COMP-3.
000070
000071
01 WS-SLDCLI.
000072
05 CD-AGE-SLD PIC S9(09) COMP.
000073
05 CD-CLI
PIC S9(09) COMP.
000074
05 NM-CLI
PIC X(35).
000075
05 TEL-CLI
PIC S9(09) COMP.
000076
05 VL-SDO-CLI PIC S9(05)V9(02) COMP-3.
000077
000078
*****************************************************************
000079
* AREA DB2
000080
*****************************************************************
000081
000082
*****EXEC SQL DECLARE C01 CURSOR FOR
000083
*****
SELECT CD_AGE_SLD,
000084
*****
CD_CLI,
000085
*****
NM_CLI,
000086
*****
TEL_CLI,
000087
*****
VL_SDO_CLI
000088
*****
FROM DB2T.ZZB302_SLDCLI
000089
*****
WHERE VL_SDO_CLI > :WS-SLDCLI.VL-SDO-CLI
000090
*****END-EXEC
000091
*
000092
*---------------------------------------------------------------*
000093
77 SQL-TEMP
PIC X(18).
000094
77 DSN-TEMP
PIC S9(9) COMP-4.
000095
77 DSN-TMP2
PIC S9(18) COMP-3.
000096
77 SQL-NULL
PIC S9(9) COMP-4 VALUE +0.
000097
77 SQL-INIT-FLAG PIC S9(4) COMP-4 VALUE +0.
000098
88 SQL-INIT-DONE VALUE +1.
000099
01 SQL-PLIST2.
000100
05 SQL-PLIST-CON
PIC S9(9) COMP-4 VALUE +2637824.
000101
05 SQL-CALLTYPE
PIC S9(4) COMP-4 VALUE +50.
000102
05 SQL-PROG-NAME
PIC X(8)
VALUE 'TABTR9Z9'.
000103
05 SQL-TIMESTAMP-1 PIC S9(9) COMP-4 VALUE +394493939.
000104
05 SQL-TIMESTAMP-2 PIC S9(9) COMP-4 VALUE +476459224.
000105
05 SQL-SECTION
PIC S9(4) COMP-4 VALUE +1.
000106
05 SQL-CODEPTR
PIC S9(9) COMP-4.
000107
05 SQL-VPARMPTR
PIC S9(9) COMP-4 VALUE +0.
000108
05 SQL-APARMPTR
PIC S9(9) COMP-4 VALUE +0.
000109
05 SQL-STMT-NUM
PIC S9(4) COMP-4 VALUE +84.
000110
05 SQL-STMT-TYPE
PIC S9(4) COMP-4 VALUE +3.
000111
05 SQL-PVAR-LIST2.
000112
10 PRE-SQLDAID PIC X(8) VALUE 'SQLDA '.
000113
10 PRE-SQLDABC PIC S9(9) COMP-4 VALUE +60.
000114
10 PRE-SQLN
PIC S9(4) COMP-4 VALUE +1.
PP 5688-197 IBM COBOL for MVS & VM
1.2.2
TABTR9Z9 Date 11/12/2004 Time 14:30:35
Page
4
100
101
000189
000190
PROCEDURE DIVISION.
00479000
000191
*---------------------------------------------------------------*
000192
000193
*---------------------------------------------------------------*
000194
DSNSQL SECTION.
000195
SQL-SKIP.
000196
GO TO SQL-INIT-END.
000197
SQL-INITIAL.
000198
MOVE 1 TO SQL-INIT-FLAG.
000199
CALL 'DSNHADDR' USING SQL-VPARMPTR OF SQL-PLIST2 SQL-PVAR-LIS
000200
T2.
000201
CALL 'DSNHADD2' USING SQL-PVAR-ADDRS1 IN
000202
SQL-PVAR-LIST2 VL-SDO-CLI OF WS-SLDCLI SQL-NULL
000203
CALL 'DSNHADDR' USING SQL-CODEPTR OF SQL-PLIST2 SQLCA.
000204
CALL 'DSNHADDR' USING SQL-APARMPTR OF SQL-PLIST3 SQL-AVAR-LIS
000205
T3.
000206
CALL 'DSNHADD2' USING SQL-AVAR-ADDRS1 IN
000207
SQL-AVAR-LIST3 CD-AGE-SLD OF WS-SLDCLI SQL-NULL CD-CLI OF WS000208
SLDCLI SQL-NULL NM-CLI OF WS-SLDCLI SQL-NULL TEL-CLI OF WS-SL
000209
DCLI SQL-NULL VL-SDO-CLI OF WS-SLDCLI SQL-NULL.
000210
CALL 'DSNHADDR' USING SQL-CODEPTR OF SQL-PLIST3 SQLCA.
000211
SQL-INIT-END.
000212
CONTINUE.
000213
000214
001-INICIO SECTION.
000215
*---------------------------------------------------------------*
000216
PERFORM 002-INICIALIZAR.
000217
PERFORM 003-PROCESSAR.
000218
PERFORM 999-FINALIZAR.
000219
STOP RUN.
000220
000221
*---------------------------------------------------------------*
000222
002-INICIALIZAR SECTION.
000223
*---------------------------------------------------------------*
000224
MOVE 1 TO VL-SDO-CLI OF WS-SLDCLI.
000225
*****EXEC SQL OPEN C01 END-EXEC.
000226
PERFORM SQL-INITIAL UNTIL SQL-INIT-DONE
000227
CALL 'DSNHLI' USING SQL-PLIST2.
000228
IF SQLCODE NOT EQUAL ZEROS
PP 5688-197 IBM COBOL for MVS & VM
1.2.2
TABTR9Z9 Date 11/12/2004 Time 14:30:35
Page
6
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+----6----+----7-]--+----8 Map and Cross Referen
000229
1
DISPLAY 'ERRO NO OPEN CURSOR'
000230
1
STOP RUN
000231
END-IF
000232
CONTINUE.
000233
002-FIM.
EXIT.
000234
000235
*---------------------------------------------------------------*
000236
003-PROCESSAR SECTION.
000237
*---------------------------------------------------------------*
000238
000239
MOVE 'N' TO FIM-CURSOR.
000240
PERFORM UNTIL FIM-CURSOR = 'S'
000241
*****
EXEC SQL FETCH C01
000242
*****
INTO :WS-SLDCLI.CD-AGE-SLD,
000243
*****
:WS-SLDCLI.CD-CLI,
000244
*****
:WS-SLDCLI.NM-CLI,
000245
*****
:WS-SLDCLI.TEL-CLI,
000246
*****
:WS-SLDCLI.VL-SDO-CLI
000247
*****
END-EXEC
000248
1
PERFORM SQL-INITIAL UNTIL SQL-INIT-DONE
000249
1
CALL 'DSNHLI' USING SQL-PLIST3
000250
1
IF SQLCODE NOT EQUAL ZEROS
000251
2
MOVE 'S' TO FIM-CURSOR
000252
1
ELSE
000253
2
DISPLAY 'FETCH OK'
000254
2
DISPLAY WS-SLDCLI
000255
1
END-IF
000256
END-PERFORM
000257
CONTINUE.
000258
003-FIM.
EXIT.
000259
000260
*---------------------------------------------------------------*
000261
999-FINALIZAR SECTION.
000262
*---------------------------------------------------------------*
000263
102
000264
DISPLAY 'FIM NORMAL'.
000265
000266
999-FIM.
EXIT.
PP 5688-197 IBM COBOL for MVS & VM
1.2.2
TABTR9Z9
PROGRAM GLOBAL TABLE BEGINS AT LOCATION 0000FC FOR 00000C BYTES
THE PGT CONTAINS 000001 CELL(S) FOR ADDRESSABILITY TO THE CGT
PBL1
AT LOCATION 000292 FOR LINE 194
Date 11/12/2004
Time 14:30:35
Page
Date 11/12/2004
]....
Time 14:30:35
Page
00012C
00014C
00016C
00018C
0001AC
0001CC
0001EC
00020C
00022C
LINE #
000196
000201
000206
000216
000219
000227
000230
000239
000249
000253
000258
(LIT+0)
FFFFFFFC
(LIT+32)
C9D440D5
(LIT+64)
00000001
(LIT+96)
00000000
(LIT+128)
00000000
(LIT+160)
0001C000
(LIT+192)
01A8FF01
(LIT+224)
00000000
(LIT+256)
08080000
HEXLOC VERB
0002A4 GO
0002E0 CALL
000372 CALL
00041C PERFORM
00046C STOP
0004B4 CALL
0004F8 STOP
000516 MOVE
000548 CALL
000586 DISPLAY
0005A2 EXIT
00001000
D6D9D4C1
28000000
00000000
00000000
08080000
40000008
00000000
040055
00000001
D3C6C5E3
01000001
00000000
00400000
04005501
08000004
00000040
000000
000048
00004C
000050
000051
000054
000058
00005C
000060
000064
000068
00006C
000070
000074
000078
00007A
00007C
00007E
000080
000084
000088
000089
00008A
00008C
000090
000094
000098
0000A0
0000A8
0000AC
0000E0
0000E4
0000E8
0000EC
0000F0
0000F4
0000F8
C5D9D9D6
C3C840D6
2C000000
00800000
00000000
4000000A
004DFF01
00000000
LINE #
000198
000203
000210
000217
000224
000228
000232
000240
000250
000254
000264
40D5D640
D2E3C1C2
01000000
00400000
00000000
08000004
40000013
40C00001
D6D7C5D5
E3D9F9E9
00000000
00000000
00000000
0043FF01
08000004
40000808
HEXLOC VERB
0002A8 MOVE
000316 CALL
0003E8 CALL
000434 PERFORM
00048C MOVE
0004DE IF
000510 CONTINUE
00051A PERFORM
000572 IF
000594 DISPLAY
0005A8 DISPLAY
TABTR9Z9
40C3E4D9
F9000010
00000000
00000000
00400000
40000033
0030FF80
00000400
E2D6D9C6
0C000000
00000000
00800000
000025C0
09000128
00000000
5502C000
]............ERRO NO OPEN
]IM NORMALFETCH OKTABTR9Z9
].........................
]................. .......
]......... ...............
]............ ...........
].y.. ........(.. ........
]........... .... ... ....
].......
LINE # HEXLOC VERB
000199 0002AE CALL
000204 000344 CALL
000212 00041C CONTINUE
000218 000450 PERFORM
000226 000492 PERFORM
000229 0004EA DISPLAY
000233 000510 EXIT
000248 000526 PERFORM
000251 00057E MOVE
000257 0005A2 CONTINUE
000266 0005B6 EXIT
Date 11/12/2004
Time 14:30:35
Page
RESERVED - 72 BYTES
TGT IDENTIFIER
RESERVED - 4 BYTES
TGT LEVEL INDICATOR
RESERVED - 3 SINGLE BYTE FIELDS
32 BIT SWITCH
POINTER TO RUNCOM
POINTER TO COBVEC
POINTER TO PROGRAM DYNAMIC BLOCK TABLE
NUMBER OF FCB'S
WORKING-STORAGE LENGTH
RESERVED - 4 BYTES
ADDRESS OF IGZESMG WORK AREA
ADDRESS OF 1ST GETMAIN BLOCK (SPACE MGR)
RESERVED - 2 BYTES
RESERVED - 2 BYTES
RESERVED - 2 BYTES
MERGE FILE NUMBER
ADDRESS OF CEL COMMON ANCHOR AREA
LENGTH OF TGT
RESERVED - 1 SINGLE BYTE FIELD
PROGRAM MASK USED BY THIS PROGRAM
RESERVED - 2 SINGLE BYTE FIELDS
NUMBER OF SECONDARY FCB CELLS
LENGTH OF THE ALTER VN(VNI) VECTOR
COUNT OF NESTED PROGRAMS IN COMPILE UNIT
DDNAME FOR DISPLAY OUTPUT
RESERVED - 8 BYTES
POINTER TO COM-REG SPECIAL REGISTER
CALC ROUTINE REGISTER SAVE AREA
ALTERNATE COLLATING SEQUENCE TABLE PTR.
ADDRESS OF SORT G.N. ADDRESS BLOCK
ADDRESS OF PGT
CURRENT INTERNAL PROGRAM NUMBER
POINTER TO 1ST IPCB
ADDRESS OF THE CLLE FOR THIS PROGRAM
POINTER TO ABEND INFORMATION TABLE
103
000714
000718
00071C
000720
000724
000728
00072C
000730
000734
0000FC
000100
000104
000108
00010C
000110
000114
000118
00011C
000120
000128
00012C
000130
000150
TABTR9Z9
Date 11/12/2004
Time 14:30:35
Page
10
TGT
LOCATED AT 000618 FOR 00000164 BYTES
SPEC-REG LOCATED AT 000780 FOR 00000049 BYTES
WRK-STOR LOCATED AT 0007D0 FOR 0000039C BYTES
DSA
WILL BE ALLOCATED FOR 000000E8 BYTES
* Statistics for COBOL program TABTR9Z9:
*
Source records = 266
*
Data Division statements = 148
*
Procedure Division statements = 33
End of compilation 1, program TABTR9Z9, no statements flagged.
Return code 0
z/OS V1 R3 BINDER
14:30:37 FRIDAY NOVEMBER 12, 2004
BATCH EMULATOR JOB(TAB#PROP) STEP(NDVRBAT ) PGM= IEWL
IEW2278I B352 INVOCATION PARAMETERS - XREF
IEW2322I 1220 1
B m En0')
IEW2322I 1220 2
IDENTIFY TABTR9Z9('2
NAME
TABTR9Z9(R)
C R O S S - R E F E R E N C E T A B L E
_________________________________________
104
FDC
FEC
1018
1024
1028
102C
14E8
14EC
14F0
14F4
18A8
1ADC
1B28
1B2C
1B30
1B34
1B38
1B3C
1B40
1B44
1B48
1B4C
1B50
1B54
1B58
1B5C
1B60
1B64
1B68
CEESTART
CEESTART
CEESTART
CEESTART
CEESTART
CEESTART
IGZCBSO
IGZCBSO
IGZCBSO
IGZCBSO
CEEBPIRA
CEEBTRM
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
CEEBLLST
5C
6C
98
A4
A8
AC
4B8
4BC
4C0
4C4
260
6C
10
14
18
1C
20
24
28
2C
30
34
38
3C
40
44
48
4C
50
A-CON
C-LEN
A-CON
A-CON
A-CON
A-CON
V-CON
V-CON
V-CON
V-CON
V-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
A-CON
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
CEEMAIN
CEEFMAIN
CEEBETBL
CEEROOTA
CEEROOTD
CEEINT
IGZETUN
IGZEOPT
CEEARLU
CEEBPUBT
CEEBPUBT
CEESG000
CEESG001
CEESG002
CEESG003
CEESG004
CEESG005
CEESG006
CEESG007
CEESG008
CEESG009
CEESG010
CEESG011
CEESG012
CEESG013
CEESG014
CEESG015
CEESG016
$UNRESOLVED(W)
$NON-RELOCATABLE
$UNRESOLVED(W)
CEEBETBL
$UNRESOLVED(W)
$UNRESOLVED(W)
CEEBPIRA
$UNRESOLVED(W)
$UNRESOLVED(W)
CEEARLU
CEEBPUBT
CEEBPUBT
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
CEESG005
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
$UNRESOLVED(W)
B_PRV
0 B_TEXT
0 B_TEXT
0 B_TEXT
0 B_TEXT
0 B_TEXT
0 B_TEXT
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
PROCESSING OPTIONS:
ALIASES
NO
ALIGN2
NO
AMODE
UNSPECIFIED
CALL
YES
CASE
UPPER
COMPAT
UNSPECIFIED
DCBS
NO
DYNAM
NO
EXTATTR
UNSPECIFIED
EXITS:
NONE
FILL
NONE
GID
UNSPECIFIED
HOBSET
NO
LET
04
LINECT
060
LIST
SUMMARY
LISTPRIV
NO
MAP
NO
MAXBLK
032760
MSGLEVEL
00
OVLY
NO
PRINT
YES
RES
NO
REUSABILITY
UNSPECIFIED
RMODE
UNSPECIFIED
STORENX
NO
TERM
NO
UID
UNSPECIFIED
UPCASE:
NO
WKSPACE
000000K,000000K
XCAL
NO
XREF
YES
***END OF OPTIONS***
105
TABTR9Z9
DSVAABLB.ENDEVOR.BATCH.LOADLIB
LOAD MODULE
D7S002
32760
ADDED NEW
14.30.38 NOV 12, 2004
000
ANY
NO
YES
NO
YES
YES
NO
NO
NO,NO
NO
NO
NO
NO
24
NO
NO
NO
NO
00001B80
STATUS
***** E N D
O F
R E P O R T *****
z/OS V1 R3 BINDER
14:30:37 FRIDAY NOVEMBER 12, 2004
BATCH EMULATOR JOB(TAB#PROP) STEP(NDVRBAT ) PGM= IEWL
IEW2008I 0F03 PROCESSING COMPLETED. RETURN CODE = 0.
---------------------MESSAGE SUMMARY REPORT
---------------------SEVERE MESSAGES
NONE
(SEVERITY = 12)
ERROR MESSAGES
NONE
(SEVERITY = 08)
WARNING MESSAGES
NONE
(SEVERITY = 04)
106
2008
2278
2322
107
108
109
ELSE
IF SQLCODE = ZEROES
MOVE CD-AGE OF CADAGE TO DET-CODAGE
MOVE NM-AGE OF CADAGE TO DET-NM-AGE
MOVE END-AGE OF CADAGE TO DET-END-AGE
MOVE TEL-AGE OF CADAGE TO WS-TEL-AGE
MOVE WS-TEL-AGE(2:4) TO DET-TEL1
MOVE WS-TEL-AGE(6:4) TO DET-TEL2
END-IF
END-IF.
210-99-FIM. EXIT.
**** CLOSE C1 ***************************************************
220-00-CLOSE-C1 SECTION.
EXEC SQL
CLOSE C1
END-EXEC
IF SQLCODE NOT = ZEROES
MOVE SQLCODE TO WS-SQLCODE
DISPLAY 'ERRO CLOSE NO CURSOR'
DISPLAY 'SQLCODE = ' WS-SQLCODE
DISPLAY 'O PROGRAMA SERA CANCELADO'
MOVE 4 TO RETURN-CODE
STOP RUN
END-IF.
220-99-FIM. EXIT.
**** IMPRIME CABECALHO ******************************************
300-00-IMP-CAB SECTION.
ADD 1 TO REL-N-PAG.
MOVE REL-N-PAG TO CAB1-PAG.
WRITE LIN-IMPRESS FROM LIN-CAB1
BEFORE 1.
WRITE LIN-IMPRESS FROM LIN-BRANCO BEFORE 1.
MOVE ZEROES TO CONT-LIN.
300-99-FIM. EXIT.
**** IMPRIME DETALHE ********************************************
310-00-IMP-DET SECTION.
MOVE 1 TO CT-DET.
PERFORM UNTIL CT-DET > 5
EVALUATE CT-DET
WHEN 1 WRITE LIN-IMPRESS FROM LIN-DET1 BEFORE 1
WHEN 2 WRITE LIN-IMPRESS FROM LIN-DET2 BEFORE 1
WHEN 3 WRITE LIN-IMPRESS FROM LIN-DET3 BEFORE 1
WHEN 4 WRITE LIN-IMPRESS FROM LIN-DET4 BEFORE 1
WHEN 5 WRITE LIN-IMPRESS FROM LIN-DET5 BEFORE 1
END-EVALUATE
MOVE SPACES TO LIN-IMPRESS
ADD 1 TO CONT-LIN
ADD 1 TO CT-DET
IF CONT-LIN = 50
WRITE LIN-IMPRESS BEFORE PAGE
PERFORM 300-00-IMP-CAB
END-IF
END-PERFORM.
310-99-FIM. EXIT.
110
Se uma coluna de uma tabela for definida com NOT NULL, ela SEMPRE ter um valor; neste caso,
quando for dado um FETCH o valor sempre ser trazido para a varivel indicada.
Se uma coluna de uma tabela no for definida com NOT NULL, ela pode ter valor ou no numa linha.
Quando for dado um FETCH para uma linha:
se a coluna tiver valor nessa linha, ele ser trazido sem problemas
se a coluna NO TIVER valor e NO TIVER varivel indicadora de NULL : SQLCODE 305
se a coluna NO TIVER valor e TIVER varivel indicadora de NULL, na varivel ser colocada
uma indicao se o valor da coluna NULL ou no
necessrio que haja (seja definida) uma varivel indicadora de NULL para cada coluna que possa ter
NULL; o mais indicado que essa declarao seja feita prxima do INCLUDE do DCLGEN, de
preferncia por meio de outro INCLUDE; se isso no ocorrer, o programador deve declarar
manualmente todas as variveis indicadoras de NULL para todas as colunas que sero objeto de
FETCH
A declarao deve ser feita na Working-Storage Section, e a varivel deve ser uma half-word com
contedo binrio, com sinal, da seguinte forma :
01 EMAIL-NULL PIC S9(4) BINARY VALUE ZERO.
O uso das variveis indicadoras de NULL na PROCEDURE DIVISION feita da seguinte forma
(exemplo) :
MOVE ZEROS TO EMAIL-NULL
limpar varivel indic.de NULL (desnecessrio, mas elegante)
MOVE SPACES TO EMAIL
limpar varivel receptora (se for NULL, no alterada)
MOVE COD-DESEJADO TO W-COD
EXEC SQL
SELECT T_COD, T_NOME, T_EMAIL
INTO :W-COD, :W-NOME, :W-EMAIL:W-EMAIL-NULL
FROM TABELA
WHERE T-COD = :W-COD
END-EXEC.
IF SQLCODE NOT = ZERO
MOVE SQLCODE TO W-SQLCODE
DISPLAY SELECT DEU ERRO ! SQLCODE= W-SQLCODE
ELSE
IF W-TELEF-NULL < 0
DISPLAY TELEFONE NULO
ELSE
IF W-TELEF-NULL > 0
DISPLAY EMAIL VEIO TRUNCADO
ELSE
DISPLAY EMAIL VEIO OK
END-IF
END-IF
END-IF
111
Table
ZZA100_CADAGE
ZZA101_AGECLI
ZZA102_SLDCLI
ZZA103_SLDCLI2
ZZA200_CADAGE
ZZA201_AGECLI
ZZA202_SLDCLI
ZZA203_SLDCLI2
ZZA300_CADAGE
ZZA301_AGECLI
ZZA302_SLDCLI
ZZA303_SLDCLI2
ZZA400_CADAGE
ZZA401_AGECLI
ZZA402_SLDCLI
ZZA403_SLDCLI2
ZZA500_CADAGE
ZZA501_AGECLI
ZZA502_SLDCLI
ZZA503_SLDCLI2
ZZA600_CADAGE
ZZA601_AGECLI
ZZA602_SLDCLI
ZZA603_SLDCLI2
ZZA700_CADAGE
ZZA701_AGECLI
ZZA702_SLDCLI
ZZA703_SLDCLI2
ZZA800_CADAGE
ZZA801_AGECLI
ZZA802_SLDCLI
ZZA803_SLDCLI2
ZZA900_CADAGE
ZZA901_AGECLI
ZZA902_SLDCLI
ZZA903_SLDCLI2
ZZB100_CADAGE
ZZB101_AGECLI
ZZB102_SLDCLI
ZZB103_SLDCLI2
ZZB200_CADAGE
ZZB201_AGECLI
ZZB202_SLDCLI
ZZB203_SLDCLI2
ZZB300_CADAGE
ZZB301_AGECLI
ZZB302_SLDCLI
ZZB303_SLDCLI2
ZZB400_CADAGE
ZZB401_AGECLI
ZZB402_SLDCLI
ZZB403_SLDCLI2
ZZB500_CADAGE
Usurio
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
ALUNO
01
01
01
01
02
02
02
02
03
03
03
03
04
04
04
04
05
05
05
05
06
06
06
06
07
07
07
07
08
08
08
08
09
09
09
09
10
10
10
10
11
11
11
11
12
12
12
12
13
13
13
13
14
112
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
DB2T
ZZB501_AGECLI
ZZB502_SLDCLI
ZZB503_SLDCLI2
ZZB600_CADAGE
ZZB601_AGECLI
ZZB602_SLDCLI
ZZB603_SLDCLI2
ZZB700_CADAGE
ZZB701_AGECLI
ZZB702_SLDCLI
ZZB703_SLDCLI2
ZZB800_CADAGE
ZZB801_AGECLI
ZZB802_SLDCLI
ZZB803_SLDCLI2
ZZB900_CADAGE
ZZB901_AGECLI
ZZB902_SLDCLI
ZZB903_SLDCLI2
ZZC100_CADAGE
ZZC101_AGECLI
ZZC102_SLDCLI
ZZC103_SLDCLI2
ZZC200_CADAGE
ZZC201_AGECLI
ZZC202_SLDCLI
ZZC203_SLDCLI2
ZZC300_CADAGE
ZZC301_AGECLI
ZZC302_SLDCLI
ZZC303_SLDCLI2
ZZC400_CADAGE
ZZC401_AGECLI
ZZC402_SLDCLI
ZZC403_SLDCLI2
ZZC500_CADAGE
ZZC501_AGECLI
ZZC502_SLDCLI
ZZC503_SLDCLI2
ZZC600_CADAGE
ZZC601_AGECLI
ZZC602_SLDCLI
ZZC603_SLDCLI2
ZZC700_CADAGE
ZZC701_AGECLI
ZZC702_SLDCLI
ZZC703_SLDCLI2
ZZC800_CADAGE
ZZC801_AGECLI
ZZC802_SLDCLI
ZZC803_SLDCLI2
ZZC900_CADAGE
ZZC901_AGECLI
ZZC902_SLDCLI
ZZC903_SLDCLI2
ALUNO 14
ALUNO 14
ALUNO 14
ALUNO 15
ALUNO 15
ALUNO 15
ALUNO 15
ALUNO 16
ALUNO 16
ALUNO 16
ALUNO 16
ALUNO 17
ALUNO 17
ALUNO 17
ALUNO 17
ALUNO 18
ALUNO 18
ALUNO 18
ALUNO 18
ALUNO 19
ALUNO 19
ALUNO 19
ALUNO 19
ALUNO 20
ALUNO 20
ALUNO 20
ALUNO 20
ALUNO 21
ALUNO 21
ALUNO 21
ALUNO 21
ALUNO 22
ALUNO 22
ALUNO 22
ALUNO 22
ALUNO 23
ALUNO 23
ALUNO 23
ALUNO 23
ALUNO 24
ALUNO 24
ALUNO 24
ALUNO 24
ALUNO 25
ALUNO 25
ALUNO 25
ALUNO 25
ALUNO 26
ALUNO 26
ALUNO 26
ALUNO 26
PROFESSOR
PROFESSOR
PROFESSOR
PROFESSOR
113
DB2T.ZZCnn0_CADAGE
CD_AGE
NM_AGE
END_AGE
TEL_AGE
INTEGER
CHAR(15)
CHAR(30)
INTEGER
DB2T.ZZCnn1_AGECLI
CD_AGE_CLI
CD_CLI
TP_CLI
NM_CLI
END_CLI
COMPL_CLI
CID_CLI
UF_CLI
CEP_CLI
CMCEP_CLI
TEL_CLI
RG_CLI
CPF_CGC_CLI
DT_INCL_CLI
DT_EXCL_CLI
VL_SDO_CLI
INTEGER
INTEGER
INTEGER
CHAR(35)
CHAR(35)
CHAR(30)
CHAR(30)
CHAR(2)
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
DATE
DATE
DECIMAL(7,2)
DB2T.ZZCnn2_SLDCLI
CD_AGE_SLD
CD_CLI
NM_CLI
TEL_CLI
VL_SDO_CLI
INTEGER
INTEGER
CHAR(35)
INTEGER
DECIMAL(7,2)
DB2T.ZZCnn3_SLDCLI2
CD_AGE_SLD
CD_CLI
NM_CLI
TEL_CLI
VL_SDO_CLI
INTEGER
INTEGER
CHAR(35)
INTEGER
DECIMAL(15,2)
114
Modelo Lgico
Modelo Fsico
115
116