Académique Documents
Professionnel Documents
Culture Documents
semelhana do padro utilizado nos manuais IBM, esta apostila utiliza especificaes
conforme indicado a seguir :
[ item1 ] ....
quando colocado entre colchetes, o uso do(s) item(s) no obrigatrio; colocar somente se
desejado, ou necessrio no caso especfico.
letras minsculas
substituir pelo necessrio / desejado
LETRAS MAISCULAS
colocar igual ao indicado
SUMRIO
1 CONCEITOS BSICOS...........................................................................................................................................5
a) Generalidades...........................................................................................................................................................5
b) Caractersticas de Instalao....................................................................................................................................6
c) Estrutura de um programa em EASYTRIEVE........................................................................................................8
d) PARMs principais ...............................................................................................................................................11
e) Regras gerais para os statements ...........................................................................................................................12
f) Exemplo inicial de um programa em EASY..........................................................................................................13
g) rpidas dicas sobre DISPLAY, FILE, PRINT, REPORT, PUT, STOP................................................................15
2 DECLARAO DE ARQUIVOS..........................................................................................................................16
a) Relatrios...............................................................................................................................................................16
b) Arquivo sequencial, registros tamanho fixo (entrada ou sada) :..........................................................................21
c) Arquivo VSAM KSDS ou RRDS (criao)...........................................................................................................24
d) Arquivo VSAM KSDS ou RRDS (leitura sequencial de arquivo j criado).........................................................26
e) Arquivo VSAM KSDS ou RRDS (com update)....................................................................................................28
f) Arquivo sequencial, registros VBS (sada) :.........................................................................................................33
g) Arquivo sequencial, registros VBS (entrada) :.....................................................................................................35
3 DECLARAO DE DADOS REAS DE I/O ..................................................................................................37
4 DECLARAO DE DADOS REAS DE WORK............................................................................................39
5 VARIVEIS EASYTRIEVE; PEGAR PARM DO EXEC.....................................................................................47
6 Atividade JOB e statements START e FINISH.......................................................................................................51
7 - Comandos de processamento....................................................................................................................................58
a) Comando STOP ....................................................................................................................................................58
b) Expresses e assinalaes (movimentos) ............................................................................................................58
c) Identificao de pontos de programa; comandos GO TO, PROC, END-PROC e PERFORM ............................64
d) Comandos IF, ELSE, ELSE-IF, END-IF ; operadores relacionais ......................................................................68
e) Comandos DO, END-DO e CASE .......................................................................................................................72
8 - Statement REPORT e complementares....................................................................................................................79
a) Comando PRINT...................................................................................................................................................79
b) Statement REPORT...............................................................................................................................................79
c) Statements complementares ao REPORT : resumo...............................................................................................79
d) componentes de um relatrio.................................................................................................................................80
e) estrutura do REPORT............................................................................................................................................81
f) Clusulas do REPORT ..........................................................................................................................................81
g) Statements complementares ao REPORT : detalhes ............................................................................................84
9 - Comandos de I/O ....................................................................................................................................................96
a) Comando DISPLAY .............................................................................................................................................96
b) Comando GET ......................................................................................................................................................96
c) Comando PUT ......................................................................................................................................................96
d) Comando POINT ..................................................................................................................................................97
e) Comando READ ...................................................................................................................................................98
f) Comando WRITE ..................................................................................................................................................98
10 Atividade SORT ..................................................................................................................................................102
11 RECURSO de MATCH ......................................................................................................................................105
12 - Uso de sub-programas (comando CALL) ............................................................................................................108
13 - Tabelas : declarao e referncia no processamento ...........................................................................................111
14 Uso de DB2..........................................................................................................................................................119
15 - Dicas gerais : problemas mais comuns e outros tpicos.......................................................................................138
a) Resultados de acumulao aparentemente errados..............................................................................................138
b) Campos no so totalizados.................................................................................................................................140
c) Uso de TALLY no aceito; TALLY para sumarizar...........................................................................................143
d) Trocar sinal de um campo compactado ou zonado .............................................................................................147
e) Instrues aparentemente executadas erradas .....................................................................................................149
f) Abends na execuo ............................................................................................................................................152
EASYTRIEVE
1 Conceitos bsicos a) Generalidades
g) Arquivos VFM ....................................................................................................................................................153
EASYTRIEVE
1 Conceitos bsicos a) Generalidades
1 CONCEITOS BSICOS
a) Generalidades
EASYTRIEVE uma linguagem de programao, com recursos para acesso a arquivos e bases
de dados, com comandos que trazem bastante facilidade principalmente para a gerao de
relatrios.
O objetivo deste material disponibilizar uma fonte de consulta rpida, sem o objetivo de esgotar
todas as possibilidades oferecidas pelo software. Para a obteno de qualquer informao
adicional ou mais especfica, consultar os manuais do prprio fornecedor.
Os programas elaborados em EASYTRIEVE podem ser executados tanto em modo interpretado
quanto em modo compilado.
A execuo de forma interpretada facilita e agiliza o processo de testes.
A execuo de forma compilada, por ser mais rpida, aconselhvel para execues em regime
de produo.
b) Caractersticas de Instalao
Quando da instalao do EASYTRIEVE, o analista de suporte deve indicar os padres da
instalao.
Esses padres referem-se a diversas caractersticas e opes que controlam o ambiente e o
processamento do EASY.
Algumas dessas opes so especificadas a seguir, com o default usado como referncia, e, em
alguns casos, alguns detalhes adicionais sero vistos no tem PARMs principais.
ABEXIT=SNAP
indica o default no caso de Abend
ACROSS=4
indica quantidade de etiquetas a imprimir numa linha.
Modificvel atravs do LABELS no REPORT
CLIST=NOCLIST
indica se gera ou no CLIST
COMPNME=COMPUTERASSOCIATES, INC.FIELD INSTALLATION
indica o cabealho padro da listagem de compilao.
Nos nossos exemplos ser COMPRADOR EASYTRIEVE
DATE=MMDDYY
indica o formato da data colocada na listagem de compilao e na varivel SYSDATE
DMAP=NODMAP
indica se gera ou no DMAP
DOWN=6
indica quantidade de linhas por etiqueta
Modificvel atravs do LABELS no REPORT
DTLCTL=FIRST
indica o mtodo de impresso do valor dos campos de controle nas linhas de detalhe.
Pode ser EVERY, FIRST ou NONE
FLDCHK=FLDCHK
indica se o EASY deve validar as referncias a campos de arquivos
FLOW=NOFLOW
indica se deve ser impresso o nro do statement executado quando o programa abendar
FLOWSIZ=100
indica a quantidade de entries na tabela usada para o FLOW
LABLSIZ=30
indica o nro de posies a imprimir numa etiqueta
LINESIZ=132
indica o tamanho da linha de impressao.
Modificvel atravs do LINESIZE no REPORT
LIST=(PARM,FILE)
indica se devem ser impressos os parms e as estatsticas dos arquivos
NEWPAGE=NO
indica se deve haver salto de folha a cada etiqueta impressa
NUMERIC=(COMMA,PERIOD)
indica o formato de edio de campos de valor.
O primeiro indica o separador visual e o segundo o separador decimal.
EASYTRIEVE
1 Conceitos Bsicos b Caractersticas da Instalao
PAGESIZ=(58,0)
o primeiro nro indica o tamanho mximo da pgina para os statements LINE
(pode ir de 1 a 32767)
o segundo nro indica o tamanho mximo da pgina para os DISPLAYs
(pode ir de 0 a 32767; zero indica infinito nunca pular de folha)
PAGEWRD=PAGE
indica a literal a usar na indicao do nmero de pgina.
PMAP=NOPMAP
indica se gera ou no um procedure map do programa gerado
SEPDATE=/
indica o carter separador na edio de data do dia
SEPTIME=.
indica o carter separador na edio da hora do dia
SCANCOL=(1,72)
indica as posies inicial e final dos statements
SKIP=0
indica o nmero de linhas em branco antes da impresso da LINE 01
SPACE=3
indica o nmero de espaos que deve haver entre dois campos listados numa linha
SPREAD=NO
indica se os campos da linha devem ser espalhados o mximo possvel
STATE=STATE
indica para o EASY manter registro do nro do statement em execuo
(para uso no FLOW ou em diagnsticos de abend)
SUMCTL=HIAR
indica como deve ser as linhas de total.
Pode ser ALL, HIAR, TAG ou NONE
SUMSPAC=3
indica o nero de posies de impresso adicionais a reservar para a impresso de totais
TALYSIZ=2
indica o tamanho da varivel TALLY
TITLSKP=3
indica o nmero de linhas em branco entre a ltima linha de cabealho de ttulo e a
primeira de cabealho de identificao de campos (ou de detalhe)
XREF=NOXREF
indica se deve ou no ser gerada cross-reference dos nomes
EASYTRIEVE
1 Conceitos Bsicos c Estrutura de um programa Easytrieve
Um programa com tres atividades (a primeira um JOB, a segunda um SORT e a terceira outro
JOB) :
PARM
declarao arquivos
declarao variveis
JOB.....
.
.
.
SORT...
.
.
.
.
JOB.....
.
.
.
EASYTRIEVE
1 Conceitos Bsicos c Estrutura de um programa Easytrieve
10
d) PARMs principais
ABEXIT SNAP = imprime dump formatado para 0C1 a 0CB, e um relatrio de anlise de erro
ABEND NOSNAP = imprime somente um pequeno relatrio de anlise de erro
ABEND NO = no trata abend
BIND ... = para utilizao de DB2
COMPILE = executa check de sintaxe e compilao somente
DEBUG [CLIST|PMAP] [DMAP] [FLDCHK] [FLOW] [FLOWSIZ n] [STATE] [XREF x]
WORK
3)
VFM(
64)
o padro o statement estar desde a posio 1 at a 80 (pode ser mudado via parmetro
SCANCOL de instalao)
o padro para comentrios o primeiro carter no-branco do statement ser um asterisco (*)
pode haver mais de um statement por linha; para isso, encerrar cada statement com um ponto
para continuar um statement na prxima linha, uma linha deve ter um + ou um - como
ltimo carter no-branco;
EASYTRIEVE
1 Conceitos Bsicos f Exemplo inicial de um programa em Easy
GO TO JOB
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY '************************************'
DISPLAY 'COPIA OK ! '
DISPLAY '************************************'
DISPLAY WLL '/' ENTRA:RECORD-COUNT ' REGISTROS LIDOS.'
DISPLAY WGG '/' SAIDA:RECORD-COUNT ' REGISTROS GRAVADOS.'
DISPLAY '************************************'
END-PROC
*------------* DECLARACAO DO RELATORIO
*------------REPORT RELAT PRINTER SYSREL NOADJUST
SEQUENCE AL-DATA
CONTROL FINAL
TITLE 1 '
LISTAGEM EXEMPLO'
LINE 1 AL-NOME AL-DATA AL-SALDO
********************************************************
* FIM **************************************************
********************************************************
AL-SALDO
,01
10,00
1,00
,10
11,11
EM SYSPRINT
OPTIONS FOR THIS RUN
ABEXIT SNAP DEBUG (CLIST STATE FLDCHK NOXREF) LIST (PARM FILE) PRESIZE
SORT (DEVICE SYSDA ALTSEQ NO MSG DEFAULT MEMORY MAX
WORK
3) VFM(
512
64)
************************************
COPIA OK !
************************************
0000004/
4 REGISTROS LIDOS.
0000004/
4 REGISTROS GRAVADOS.
************************************
FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-18/05/01-10.53-JSN00026
SYSREL
8
OUTPUT
SAM FIX UNBLK
ASA
ENTRA
4
INPUT
SAM FIX
BLK
SAIDA
4
OUTPUT
SAM FIX
BLK
EZTR001
4
INPUT
VFM FIX
BLK
14
| PRINTER | VS |
Declara um arquivo.
Se for para relatorio, declarar FILE nome-arquivo PRINTER
Se for arquivo em disco sequencial, declarar FILE nome-arquivo.
Se for arquivo em disco VSAM, declarar FILE nome-arquivo VS
DISPLAY
Faz a declarao das caractersticas de um relatrio, como por exemplo : linha(s) de cabealho,
linha(s) de detalhe, linha(s) de total, sequencia, etc...
STOP
2 DECLARAO DE ARQUIVOS
A declarao de um arquivo feita atravs do statement FILE; caso necessrio, a declarao da
rea de I/O referente ao arquivo deve ser colocada imediatamente aps o statement FILE.
Vejamos como dever ser a declarao de um arquivo, em funo de suas caractersticas:
a) Relatrios
FILE nome-do-arquivo PRINTER [DEFER]
DEFER = somente abrir o arquivo quando a primeira operao de I/O for emitida. O padro a
abertura de todos os arquivos no incio da atividade.
Programa Exemplo 002
FILE PRINTER utilizado por comando PRINT
//DS029002 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//ENTRA
DD *
ALBERTO
198802290000000001
ZIGOMAR
200105300000000010
MAFALDA
200010150000000100
VALDICE
199912230000001000
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 002
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT PRINTER
FILE ENTRA
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*--------------------------------------------------
EASYTRIEVE
2 Declarao de arquivos a) Relatrios
*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA
WLL = WLL + 1
PRINT SYSREL
GO TO JOB
*------------* DECLARACAO DO RELATORIO
*------------REPORT SYSREL PRINTER RELAT NOADJUST
TITLE 1 '
PROGRAMA EXEMPLO 002'
LINE 1 AL-NOME AL-DATA AL-SALDO
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
>>>>>>>>>RELAT
128/05/01
PROGRAMA EXEMPLO 002
AL-NOME
AL-DATA
AL-SALDO
0ALBERTO
19880229
,01
ZIGOMAR
20010530
,10
MAFALDA
20001015
1,00
VALDICE
19991223
10,00
EASYTRIEVE
2 Declarao de arquivos a) Relatrios
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA
WLL = WLL + 1
DISPLAY RELAT 'NOME=' AL-NOME
GO TO JOB
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
>>>>>>>>>RELAT
NOME=ALBERTO
NOME=ZIGOMAR
NOME=MAFALDA
NOME=VALDICE
EASYTRIEVE
2 Declarao de arquivos a) Relatrios
AL-DATA
16 08 N
AL-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA
WLL = WLL + 1
DISPLAY RELAT 'NOME=' AL-NOME
PRINT SYSREL
GO TO JOB
*------------* DECLARACAO DO RELATORIO
*------------REPORT SYSREL PRINTER RELAT NOADJUST
TITLE 1 '
PROGRAMA EXEMPLO 004'
LINE 1 AL-NOME AL-DATA AL-SALDO
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
>>>>>>>>>RELAT
NOME=ALBERTO
128/05/01
PROGRAMA EXEMPLO 004
AL-NOME
AL-DATA
AL-SALDO
0ALBERTO
19880229
,01
NOME=ZIGOMAR
ZIGOMAR
20010530
,10
NOME=MAFALDA
MAFALDA
20001015
1,00
NOME=VALDICE
VALDICE
19991223
10,00
EASYTRIEVE
2 Declarao de arquivos a) Relatrios
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 005
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT PRINTER
FILE ENTRA
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA
WLL = WLL + 1
DISPLAY RELAT 'NOME=' AL-NOME
PRINT SYSREL
GO TO JOB
*------------* DECLARACAO DO RELATORIO
*------------REPORT SYSREL PRINTER RELAT NOADJUST
SEQUENCE AL-NOME
TITLE 1 '
PROGRAMA EXEMPLO 005'
LINE 1 AL-NOME AL-DATA AL-SALDO
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
>>>>>>>>>RELAT
NOME=ALBERTO
NOME=ZIGOMAR
NOME=MAFALDA
NOME=VALDICE
128/05/01
PROGRAMA EXEMPLO 005
AL-NOME
AL-DATA
AL-SALDO
0ALBERTO
19880229
,01
MAFALDA
20001015
1,00
VALDICE
19991223
10,00
ZIGOMAR
20010530
,10
20
EASYTRIEVE
2 Declarao de arquivos b) Arquivo Sam reg.fixo E ou S
ESTATIS. PROC
DISPLAY '************************************'
DISPLAY 'COPIA OK ! '
DISPLAY '************************************'
DISPLAY WLL '/' ENTRA:RECORD-COUNT ' REGISTROS LIDOS.'
DISPLAY WGG '/' SAIDA:RECORD-COUNT ' REGISTROS GRAVADOS.'
DISPLAY '************************************'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
************************************
COPIA OK !
************************************
0000004/
4 REGISTROS LIDOS.
0000004/
4 REGISTROS GRAVADOS.
************************************
128/05/01 17.55.56
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-28/05/01-17.55-JSN00020
ENTRA
4
INPUT
SAM FIX
BLK
80
SAIDA
4
OUTPUT
SAM FIX
BLK
500
Exemplo 007
Cpia DE arquivo SAM PARA arquivo SAM com rea de I/O
//DS029007 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//ENTRA
DD *
ALBERTO
198802290000000001
ZIGOMAR
200105300000000010
MAFALDA
200010150000000100
VALDICE
199912230000001000
//SAIDA
DD DSN=&&TEMP,DISP=(NEW,PASS),DCB=(LRECL=500,RECFM=FB)
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 006
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS (AREAS DE I/O NAO NECESSARIAS)
*-------------------------------------------------FILE ENTRA
AL
1 80 A
FILE SAIDA
AG
1 80 A
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
22
EASYTRIEVE
2 Declarao de arquivos b) Arquivo Sam reg.fixo E ou S
*-------------------------------------------------WLL
W
7
N
WGG
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA FINISH ESTATIS
WLL = WLL + 1
AL = AG
PUT SAIDA FROM ENTRA
WGG = WGG + 1
GO TO JOB
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY '************************************'
DISPLAY 'COPIA OK ! '
DISPLAY '************************************'
DISPLAY WLL '/' ENTRA:RECORD-COUNT ' REGISTROS LIDOS.'
DISPLAY WGG '/' SAIDA:RECORD-COUNT ' REGISTROS GRAVADOS.'
DISPLAY '************************************'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
************************************
COPIA OK !
************************************
0000004/
4 REGISTROS LIDOS.
0000004/
4 REGISTROS GRAVADOS.
************************************
128/05/01 17.59.13
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-28/05/01-17.59-JSN00022
ENTRA
4
INPUT
SAM FIX
BLK
80
SAIDA
4
OUTPUT
SAM FIX
BLK
500
23
EASYTRIEVE
2 Declarao de arquivos c) Arquivo Vsam, criao
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 008
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS (AREAS DE I/O NAO NECESSARIAS)
*-------------------------------------------------FILE ENTRA
FILE SAIDA VS CREATE
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WGG
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA FINISH ESTATIS
WLL = WLL + 1
PUT SAIDA FROM ENTRA
WGG = WGG + 1
GO TO JOB
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY '************************************'
DISPLAY 'COPIA OK ! '
DISPLAY '************************************'
DISPLAY WLL '/' ENTRA:RECORD-COUNT ' REGISTROS LIDOS.'
DISPLAY WGG '/' SAIDA:RECORD-COUNT ' REGISTROS GRAVADOS.'
DISPLAY '************************************'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
************************************
COPIA OK !
************************************
0000004/
4 REGISTROS LIDOS.
0000004/
4 REGISTROS GRAVADOS.
************************************
128/05/01 18.02.33
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-28/05/01-18.02-JSN00020
ENTRA
4
INPUT
SAM FIX
BLK
80
SAIDA
4
OUTPUT
VSAM
UNDEF
80
25
EASYTRIEVE
2 Declarao de arquivos d) Arquivo Vsam, leitura sequencial
DISPLAY 'COPIA OK ! '
DISPLAY '************************************'
DISPLAY WLL '/' ENTRA:RECORD-COUNT ' REGISTROS LIDOS.'
DISPLAY WGG '/' SAIDA:RECORD-COUNT ' REGISTROS GRAVADOS.'
DISPLAY '************************************'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
************************************
COPIA OK !
************************************
0000004/
4 REGISTROS LIDOS.
0000004/
4 REGISTROS GRAVADOS.
************************************
128/05/01 18.10.20
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-28/05/01-18.10-JSN00020
ENTRA
4
INPUT
VSAM
UNDEF
80
SAIDA
4
OUTPUT
SAM FIX
BLK
80
27
EASYTRIEVE
2 Declarao de arquivos e) Arquivo Vsam, update (criao)
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY '************************************'
DISPLAY 'COPIA OK ! '
DISPLAY '************************************'
DISPLAY WLL '/' ENTRA:RECORD-COUNT ' REGISTROS LIDOS.'
DISPLAY WGG '/' SAIDA:RECORD-COUNT ' REGISTROS GRAVADOS.'
DISPLAY '************************************'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
************************************
COPIA OK !
************************************
0000002/
2 REGISTROS LIDOS.
0000002/
2 REGISTROS GRAVADOS.
************************************
128/05/01 18.11.42
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-28/05/01-18.11-JSN00020
ENTRA
2
INPUT
SAM FIX
BLK
80
SAIDA
2
OUTPUT
VSAM
UNDEF
80
29
Exemplo 011
Update in-place de registro(s) em um KSDS j criado
//DS029011 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//STEPEASY EXEC PGM=EZTPA00
//ENTRASAI DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 011
********************************************************
FILE ENTRASAI VS UPDATE
AL-NOME
1 15 A
AL-VALOR
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WUU
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------JOB INPUT ENTRASAI FINISH ESTATIS
WLL = WLL + 1
IF AL-NOME EQ 'ALBERTO'
AL-VALOR = 1111.22
WRITE ENTRASAI UPDATE
WUU = WUU + 1
END-IF
GO TO JOB
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY WLL ' REGISTROS LIDOS.'
DISPLAY WUU ' REGISTROS ATUALIZADOS'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
0000006 REGISTROS LIDOS.
0000001 REGISTROS ATUALIZADOS
129/05/01 9.27.37
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01- 9.27-JSN00021
ENTRASAI
6
UPDATE
VSAM
UNDEF
80
EASYTRIEVE
2 Declarao de arquivos e) Arquivo Vsam, update (in-place)
31
Exemplo 012
Excluso (delete) de registro(s) em um KSDS j criado
//DS029012 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//* ----------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//ENTRASAI DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 012
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS
*-------------------------------------------------FILE ENTRASAI VS UPDATE
AL-NOME
1 15 A
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WEX
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------JOB INPUT ENTRASAI FINISH ESTATIS
WLL = WLL + 1
IF AL-NOME EQ 'ALBERTO'
WRITE ENTRASAI DELETE
WEX = WEX + 1
END-IF
GO TO JOB
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY WLL ' REGISTROS LIDOS.'
DISPLAY WEX ' REGISTROS EXCLUIDOS'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
0000006 REGISTROS LIDOS.
0000001 REGISTROS EXCLUIDOS
129/05/01 9.29.28
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01- 9.29-JSN00020
ENTRASAI
6
UPDATE
VSAM
UNDEF
80
EASYTRIEVE
2 Declarao de arquivos e) Arquivo Vsam, update (delete)
[rea de I/O]
max-lrecl = literal que indica o tamanho mximo de um registro lgico
max-blksize = literal que indica o tamanho mximo de um bloco
FULLTRK = o tamanho do bloco de sada deve ser o mximo que a capacidade da trilha
permitir.
DEFER = somente abrir o arquivo quando a primeira operao de I/O for emitida. O padro a
abertura de todos os arquivos no incio da atividade.
Exemplo 013
Gerao de arquivo VBS
//DS029013 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//* GERA VARIAVEL
//*--------------------------------------------------------------//EZTPA01 EXEC PGM=EZTPA00
//SAIDA
DD DSN=DS.#029.KL.PSVB,DISP=(NEW,CATLG),
//
SPACE=(TRK,(5,1),RLSE),UNIT=3390,
//
DCB=(LRECL=6675,RECFM=VB)
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 013
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE SAIDA
AG
1 4000 A
AGX5
1 5 A
AGX6
1 6 A
AGX7
1 7 A
AGX8
1 8 A
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WGG
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
EASYTRIEVE
2 Declarao de arquivos e) Arquivo Vsam, update (delete)
*------------JOB INPUT NULL FINISH ESTATIS
MOVE '*' TO AG FILL '*'
SAIDA:RECORD-LENGTH = 5
DISPLAY SAIDA:RECORD-LENGTH '/' AGX5 '/'
PUT SAIDA
WGG = WGG + 1
SAIDA:RECORD-LENGTH = 6
DISPLAY SAIDA:RECORD-LENGTH '/' AGX6 '/'
PUT SAIDA
WGG = WGG + 1
SAIDA:RECORD-LENGTH = 7
DISPLAY SAIDA:RECORD-LENGTH '/' AGX7 '/'
PUT SAIDA
WGG = WGG + 1
SAIDA:RECORD-LENGTH = 8
DISPLAY SAIDA:RECORD-LENGTH '/' AGX8 '/'
PUT SAIDA
WGG = WGG + 1
STOP
ESTATIS. PROC
*------------* ROTINA DE FINALIZACAO
*------------DISPLAY '************************************'
DISPLAY WGG '/' SAIDA:RECORD-COUNT ' REGISTROS GRAVADOS.'
DISPLAY '************************************'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS DD *
5 /*****/
6 /******/
7 /*******/
8 /********/
************************************
0000004/
4 REGISTROS GRAVADOS.
************************************
129/05/01 9.31.01
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01- 9.31-JSN00024
SAIDA
4
OUTPUT
SAM VAR
BLK
6675
[rea de I/O]
max-lrecl = literal que indica o tamanho mximo de um registro lgico
max-blksize = literal que indica o tamanho mximo de um bloco
FULLTRK = o tamanho do bloco de sada deve ser o mximo que a capacidade da trilha
permitir.
DEFER = somente abrir o arquivo quando a primeira operao de I/O for emitida. O padro a
abertura de todos os arquivos no incio da atividade.
Exemplo 014
Leitura de arquivo VBS
//DS029014 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//ENTRA
DD DSN=DS.#029.KL.PSVB,DISP=SHR
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 014
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------PARM VFM 150
FILE ENTRA
AL
1 4000 A
ALX5
1 5 A MASK HEX
ALX6
1 6 A MASK HEX
ALX7
1 7 A MASK HEX
ALX8
1 8 A MASK HEX
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA FINISH ESTATIS
IF
ENTRA:RECORD-LENGTH EQ 5
DISPLAY ENTRA:RECORD-LENGTH '/' ALX5 '/'
ELSE-IF ENTRA:RECORD-LENGTH EQ 6
EASYTRIEVE
2 Declarao de arquivos g) Arquivo SAM reg.varivel (ler)
DISPLAY ENTRA:RECORD-LENGTH '/' ALX6 '/'
ELSE-IF ENTRA:RECORD-LENGTH EQ 7
DISPLAY ENTRA:RECORD-LENGTH '/' ALX7 '/'
ELSE-IF ENTRA:RECORD-LENGTH EQ 8
DISPLAY ENTRA:RECORD-LENGTH '/' ALX8 '/'
END-IF
GO TO JOB
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY '************************************'
DISPLAY WLL '/' ENTRA:RECORD-COUNT ' REGISTROS LIDOS.'
DISPLAY '************************************'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS DD *
5 /5C5C5C5C5C/
6 /5C5C5C5C5C5C/
7 /5C5C5C5C5C5C5C/
8 /5C5C5C5C5C5C5C5C/
************************************
0000000/
4 REGISTROS LIDOS.
************************************
130/05/01 10.23.00
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
ASSO
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-30/05/01-10.23-JSN00024
ENTRA
4
INPUT
SAM VAR
BLK
6675
Tamanho
Formato
A
N
P
alfanumrico.
numrico decimal zonado. Mximo 16 bytes
numrico decimal compactado (com sinal). Mximo 16
bytes
numrico decimal compactado (sem sinal).
numrico binrio. Mximo 4 bytes.
Se especificado decimais, tem bit de sinal
Se no especificado decimais, no tem bit de sinal
U
B
Decimais
Outros atributos :
HEADING = indica a(s) literal(is) a ser(em) utilizada(s) nas linhas de cabealho que
identificam os campos listados.
Sintaxe : HEADING (literal1 [literal2] ... [literaln])
Cada literal ser colocada numa linha de cabealho.
MASK
EASYTRIEVE
3 Declarao de dados reas de I/O
Sintaxe :
MASK BWZ (blank when zero)
ou
MASK HEX (para exibir em formato hexadecimal)
ou
MASK (mscara)
A mscara pode ter Zs e 9s, ponto(s) (separador de visualizao) e vrgula (separador
decimal), alm dos caracteres especiais desejados.
Outra forma de declarao :
[DEFINE] [nome-arquivo:] [nome-campo] posio-inicial [nome-arquivo2:]nome-campo2
Neste caso, o tamnho, o formato e as decimais de nome-campo
sero as mesmas de [nome-arquivo2:]nome-campo2
A ttulo de exemplos, podemos inicialmente voltar aos exemplos anteriores, utilizados na parte
referente declarao de arquivos, onde alguns casos mais simples so colocados. Convm revlos, agora que foi vista formalmente a sintaxe da declarao de dados.
Alm desses j vistos, outros exemplos so mostrados juntamente com a declarao de reas de
trabalho, no captulo seguinte.
Formato
A
N
P
alfanumrico.
numrico decimal zonado. Mximo 16 bytes
numrico decimal compactado (com sinal). Mximo 16
bytes
numrico decimal compactado (sem sinal).
numrico binrio. Mximo 4 bytes.
Se especificado decimais, tem bit de sinal
Se no especificado decimais, no tem bit de sinal
U
B
Decimais
Outros atributos :
HEADING = indica a(s) literal(is) a ser(em) utilizada(s) nas linhas de cabealho que
identificam os campos listados.
Sintaxe : HEADING (literal1 [literal2] ... [literaln])
Cada literal ser colocada numa linha de cabealho.
MASK
Sintaxe :
MASK BWZ (blank when zero)
ou
MASK HEX (para exibir em formato hexadecimal)
ou
MASK (mscara)
A mscara pode ter Zs e 9s, ponto(s) (separador de visualizao) e vrgula (separador
decimal), alm dos caracteres especiais desejados.
EASYTRIEVE
4 Declarao de dados reas de work
Tamanho
Formato
A
N
P
alfanumrico.
numrico decimal zonado. Mximo 16 bytes
numrico decimal compactado (com sinal). Mximo 16
bytes
numrico decimal compactado (sem sinal).
numrico binrio. Mximo 4 bytes.
Se especificado decimais, tem bit de sinal
Se no especificado decimais, no tem bit de sinal
U
B
Decimais
Outros atributos :
HEADING = indica a(s) literal(is) a ser(em) utilizada(s) nas linhas de cabealho que
identificam os campos listados.
Sintaxe : HEADING (literal1 [literal2] ... [literaln])
Cada literal ser colocada numa linha de cabealho.
MASK
Sintaxe :
MASK BWZ (blank when zero)
MASK HEX (para exibir em formato hexadecimal)
ou
ou
EASYTRIEVE
4 Declarao de dados reas de work
MASK (mscara)
A mscara pode ter Zs e 9s, ponto(s) (separador de visualizao) e vrgula (separador
decimal), alm dos caracteres especiais desejados.
VALUE
= indica o contedo inicial do campo. Assume zero para campos numricos
e brancos para alfanumricos
RESET
= indica que o contedo inicial deve ser restaurado a cada execuo de um
comando JOB ou SORT
Exemplos :
Exemplo 015
Declarao de variveis
//DS029015 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//SAIDA
DD DSN=&&TEMP,DISP=(NEW,PASS),DCB=(LRECL=500,RECFM=FB)
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//RELAT1
DD SYSOUT=*
//RELAT2
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 015
********************************************************
*-------------------------------------------------* GERA ARQUIVO DE TESTE --------------------------*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT1 PRINTER
FILE RELAT2 PRINTER
*--------------------------------------------------------------------* ARQUIVO DE SAIDA - ARQUIVO CLIENTES PESSOA FISICA
*--------------------------------------------------------------------FILE SAIDA
CLI-REG-CADASTRO
1
200 A
* DADOS COMUNS PESSOA FISICA E JURIDICA -------------------CLI-NOME
16 35 A HEADING ('NOME DO CLIENTE')
CLI-ENDERECO
61 35 A
CLI-BAIRRO
96 20 A
CLI-CIDADE
116 15 A
CLI-ESTADO
131 02 A
CLI-CEP
133 08 N MASK HEX
CLI-TIPOPESSOA
200 01 A
EASYTRIEVE
4 Declarao de dados reas de work
* DADOS PESSOA FISICA -------------------------------------CLI-CPF
1 15 N HEADING ('CPF')
CLI-SALARIO
* 08 P 2 MASK ('ZZZZZZZ.ZZZ.ZZ9,99')
CLI-SITUACAO
* 01 A
CLI-DATANASC
* 08 N
MASK ('9999/99/99')
CLI-SSAANASC CLI-DATANASC
4 N
CLI-SSNASC
CLI-DATANASC
02 N
CLI-AANASC
CLI-DATANASC +2 02 N
CLI-MMNASC
CLI-DATANASC +4 02 N
CLI-DDNASC
CLI-DATANASC +6 02 N
CLI-QTDDFILHOS
* 01 B
MASK HEX
CLI-FILLER1
* 12 A
* COMPRAS TOTAIS DESDE QUE TORNOU-SE CLIENTE
CLI-QTDCOMPRASTOT
* 03 P
CLI-VALCOMPRASTOT
* 06 P 2
* COMPRAS MEDIA MENSAL
CLI-QTDCOMPRASMES
* 03 P
CLI-VALCOMPRASMES
* 06 P 2
* DADOS PESSOA JURIDICA -----------------------------------CLI-CNPJ
1 15 N HEADING ('CGC')
CLI-CREDITOMAX
141 08 P 2 MASK ('ZZZZZZZ.ZZZ.ZZ9,99')
CLI-LIMITEUSADO
149 08 P 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WGG
W
7 N
WGGLASTDIG WGG +6 1 N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT NULL FINISH ESTATIS
VOLTAGRAVA.
IF WGG LT 10
WGG = WGG + 1
CLI-NOME
= WGG
CLI-ENDERECO
= WGG
CLI-BAIRRO
= WGG
CLI-CIDADE
= WGG
CLI-ESTADO
= WGG
CLI-CEP
= WGG
IF WGGLASTDIG EQ 0 2 4 6 8
CLI-CPF
= WGG
CLI-SALARIO
= WGG
CLI-SITUACAO
= WGG
CLI-SSAANASC
= WGG
CLI-SSNASC
= WGG
CLI-AANASC
= WGG
CLI-MMNASC
= WGG
CLI-DDNASC
= WGG
CLI-QTDDFILHOS
= WGG
CLI-FILLER1
= WGG
CLI-QTDCOMPRASTOT = WGG
CLI-VALCOMPRASTOT = WGG
CLI-QTDCOMPRASMES = WGG
EASYTRIEVE
4 Declarao de dados reas de work
CLI-VALCOMPRASMES = WGG
CLI-TIPOPESSOA
= 'F'
PUT SAIDA
PRINT RELAT1
ELSE
CLI-CNPJ
= WGG
CLI-CREDITOMAX
= WGG
CLI-LIMITEUSADO
= WGG
CLI-TIPOPESSOA
= 'J'
PUT SAIDA
PRINT RELAT2
END-IF
GO TO VOLTAGRAVA
END-IF
STOP
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY '***************************************'
DISPLAY 'GRAVADOS
= ' WGG
DISPLAY '***************************************'
END-PROC
*------------* DECLARACAO DOS RELATORIOS
*------------*
* RELAT1
*
REPORT RELAT1 PRINTER RELAT1 NOADJUST NOHEADING
TITLE 1 '
PROGRAMA EXEMPLO 015'
TITLE 2 '
RELAT1 - PESSOAS FISICAS
LINE 01 'CLI-CPF
='
+
CLI-CPF
LINE 02 'CLI-NOME
='
+
CLI-NOME
LINE 03 'CLI-ENDERECO
='
+
CLI-ENDERECO
LINE 04 'CLI-BAIRRO
='
+
CLI-BAIRRO
LINE 05 'CLI-CIDADE
='
+
CLI-CIDADE
LINE 06 'CLI-ESTADO
='
+
CLI-ESTADO
LINE 07 'CLI-CEP
='
+
CLI-CEP
LINE 08 'CLI-SALARIO
='
+
CLI-SALARIO
LINE 09 'CLI-SITUACAO
='
+
CLI-SITUACAO
LINE 10 'CLI-DATANASC
='
+
CLI-DATANASC
LINE 11 'CLI-QTDDFILHOS
='
+
CLI-QTDDFILHOS
LINE 12 'CLI-FILLER1
='
+
CLI-FILLER1
LINE 13 'CLI-QTDCOMPRASTOT ='
+
'
EASYTRIEVE
4 Declarao de dados reas de work
CLI-QTDCOMPRASTOT
LINE 14 'CLI-VALCOMPRASTOT ='
+
CLI-VALCOMPRASTOT
LINE 15 'CLI-QTDCOMPRASMES ='
+
CLI-QTDCOMPRASMES
LINE 16 'CLI-VALCOMPRASMES ='
+
CLI-VALCOMPRASMES
LINE 17 'CLI-TIPOPESSOA
='
+
CLI-TIPOPESSOA
LINE 18 '-----------------------------------------------------------'
*
* RELAT2
*
REPORT RELAT2 PRINTER RELAT2 NOADJUST
TITLE 1 '
PROGRAMA EXEMPLO 015'
TITLE 2 '
RELAT2 - PESSOAS JURIDICAS
'
HEADING CLI-CNPJ
('CNPJ')
HEADING CLI-NOME
('NOME')
HEADING CLI-ENDERECO
('ENDE')
HEADING CLI-BAIRRO
('BAIRRO')
HEADING CLI-CIDADE
('CID')
HEADING CLI-ESTADO
('UF')
HEADING CLI-CEP
('CEP')
HEADING CLI-CREDITOMAX ('CRED')
HEADING CLI-LIMITEUSADO ('LIM')
HEADING CLI-TIPOPESSOA ('TP')
LINE 01 +
CLI-CNPJ
+
CLI-NOME
+
CLI-TIPOPESSOA
*
CLI-ENDERECO
+
*
CLI-BAIRRO
+
*
CLI-CIDADE
+
*
CLI-ESTADO
+
*
CLI-CEP
+
*
CLI-CREDITOMAX +
*
CLI-LIMITEUSADO +
//SAIDAS
DD *
>>>>>>>>>>>>>>SYSPRINT
***************************************
GRAVADOS
= 0000010
***************************************
129/05/01 9.39.57
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01- 9.39-JSN00057
RELAT1
96
OUTPUT
SAM FIX UNBLK
ASA
133
RELAT2
9
OUTPUT
SAM FIX UNBLK
ASA
133
SAIDA
10
OUTPUT
SAM FIX
BLK
500
>>>>>>>>>>>>>>RELAT1
129/05/01
PROGRAMA EXEMPLO 015
RELAT1 - PESSOAS FISICAS
CLI-CPF
=
000000000000002
CLI-NOME
=
00000000000000000000000000000000002
CLI-ENDERECO
=
00000000000000000000000000000000002
CLI-BAIRRO
=
00000000000000000002
EASYTRIEVE
4 Declarao de dados reas de work
CLI-CIDADE
=
000000000000002
CLI-ESTADO
=
02
CLI-CEP
=
F0F0F0F0F0F0F0F2
CLI-SALARIO
=
2,00
CLI-SITUACAO
=
2
CLI-DATANASC
=
0202/02/02
CLI-QTDDFILHOS
=
02
CLI-FILLER1
=
000000000002
CLI-QTDCOMPRASTOT =
2
CLI-VALCOMPRASTOT =
2,00
CLI-QTDCOMPRASMES =
2
CLI-VALCOMPRASMES =
2,00
CLI-TIPOPESSOA
=
F
----------------------------------------------------------CLI-CPF
=
000000000000004
CLI-NOME
=
00000000000000000000000000000000004
CLI-ENDERECO
=
00000000000000000000000000000000004
CLI-BAIRRO
=
00000000000000000004
CLI-CIDADE
=
000000000000004
CLI-ESTADO
=
04
CLI-CEP
=
F0F0F0F0F0F0F0F4
CLI-SALARIO
=
4,00
CLI-SITUACAO
=
4
CLI-DATANASC
=
0404/04/04
CLI-QTDDFILHOS
=
04
CLI-FILLER1
=
000000000004
CLI-QTDCOMPRASTOT =
4
CLI-VALCOMPRASTOT =
4,00
CLI-QTDCOMPRASMES =
4
CLI-VALCOMPRASMES =
4,00
CLI-TIPOPESSOA
=
F
----------------------------------------------------------CLI-CPF
=
000000000000006
CLI-NOME
=
00000000000000000000000000000000006
CLI-ENDERECO
=
00000000000000000000000000000000006
CLI-BAIRRO
=
00000000000000000006
CLI-CIDADE
=
000000000000006
CLI-ESTADO
=
06
CLI-CEP
=
F0F0F0F0F0F0F0F6
CLI-SALARIO
=
6,00
CLI-SITUACAO
=
6
CLI-DATANASC
=
0606/06/06
CLI-QTDDFILHOS
=
06
CLI-FILLER1
=
000000000006
CLI-QTDCOMPRASTOT =
6
CLI-VALCOMPRASTOT =
6,00
CLI-QTDCOMPRASMES =
6
CLI-VALCOMPRASMES =
6,00
CLI-TIPOPESSOA
=
F
129/05/01
PROGRAMA EXEMPLO 015
RELAT1 - PESSOAS FISICAS
----------------------------------------------------------CLI-CPF
=
000000000000008
CLI-NOME
=
00000000000000000000000000000000008
CLI-ENDERECO
=
00000000000000000000000000000000008
CLI-BAIRRO
=
00000000000000000008
EASYTRIEVE
4 Declarao de dados reas de work
CLI-CIDADE
=
000000000000008
CLI-ESTADO
=
08
CLI-CEP
=
F0F0F0F0F0F0F0F8
CLI-SALARIO
=
8,00
CLI-SITUACAO
=
8
CLI-DATANASC
=
0808/08/08
CLI-QTDDFILHOS
=
08
CLI-FILLER1
=
000000000008
CLI-QTDCOMPRASTOT =
8
CLI-VALCOMPRASTOT =
8,00
CLI-QTDCOMPRASMES =
8
CLI-VALCOMPRASMES =
8,00
CLI-TIPOPESSOA
=
F
----------------------------------------------------------CLI-CPF
=
000000000000010
CLI-NOME
=
00000000000000000000000000000000010
CLI-ENDERECO
=
00000000000000000000000000000000010
CLI-BAIRRO
=
00000000000000000010
CLI-CIDADE
=
000000000000010
CLI-ESTADO
=
10
CLI-CEP
=
F0F0F0F0F0F0F1F0
CLI-SALARIO
=
10,00
CLI-SITUACAO
=
0
CLI-DATANASC
=
1010/10/10
CLI-QTDDFILHOS
=
0A
CLI-FILLER1
=
000000000010
CLI-QTDCOMPRASTOT =
10
CLI-VALCOMPRASTOT =
10,00
CLI-QTDCOMPRASMES =
10
CLI-VALCOMPRASMES =
10,00
CLI-TIPOPESSOA
=
F
---------------------------------------------------------->>>>>>>>>>>>>>RELAT2
129/05/01
PROGRAMA EXEMPLO 015
RELAT2 - PESSOAS JURIDICAS
CNPJ
NOME
TP
0000000000000001
00000000000000000000000000000000001
J
000000000000003
00000000000000000000000000000000003
J
000000000000005
00000000000000000000000000000000005
J
000000000000007
00000000000000000000000000000000007
J
000000000000009
00000000000000000000000000000000009
J
=
=
=
=
=
=
OK
EOF no GET
DUP KEY no PUT ou WRITE
KEY fora de sequncia no PUT
RECORD NOT FOUND no READ
falta DD no JCL para o arquivo
LEVEL = campo numrico que indica qual quebra est sendo processada (detalhes e exemplos
adiante, no captulo referente a relatrios).
TALLY = campo numrico cujo contedo a quantidade de registros utilizados para a obteno
de um total.
EASYTRIEVE
5 Variveis Easytrieve; pegar PARM do EXEC
Exemplo 016
Utilizao de variveis Easytrieve; pegar PARM do EXEC
//DS029016 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00,PARM='PROCESSA=S'
//ENTRA
DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 016
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT PRINTER
FILE ENTRA VS
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
PARMVEIO W
32 A
PARMLEN PARMVEIO
2 B
PARMTXT PARMVEIO +2 30 A
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA START ANTESDETUDO FINISH DEPOISDETUDO
WLL = WLL + 1
DISPLAY '* DISPLAY DO REGISTRO - INICIO *****'
DISPLAY 'FILE-STATUS
= ' ENTRA:FILE-STATUS
DISPLAY 'RECORD-LENGTH = ' ENTRA:RECORD-LENGTH
DISPLAY 'RECORD-COUNT = ' ENTRA:RECORD-COUNT
DISPLAY '* DISPLAY DO REGISTRO - FIM ********'
PRINT SYSREL
GO TO JOB
*------------* ROTINA DE INICIALIZACAO
*------------ANTESDETUDO. PROC
CALL EZTPX01 USING (PARM-REGISTER, PARMVEIO)
DISPLAY '************************************'
DISPLAY '* INICIAL **************************'
EASYTRIEVE
5 Variveis Easytrieve; pegar PARM do EXEC
DISPLAY '************************************'
DISPLAY '************************************'
DISPLAY 'PARMLEN=' PARMLEN
DISPLAY '************************************'
DISPLAY 'PARMTXT=/' PARMTXT '/'
DISPLAY '************************************'
DISPLAY 'SYSDATE
= ' SYSDATE
DISPLAY HEX SYSDATE
DISPLAY '************************************'
DISPLAY 'SYSTIME
= ' SYSTIME
DISPLAY HEX SYSTIME
DISPLAY '************************************'
END-PROC
*------------* ROTINA DE FINALIZACAO
*------------DEPOISDETUDO. PROC
DISPLAY '************************************'
DISPLAY '* FINAL ****************************'
DISPLAY '************************************'
DISPLAY 'FILE-STATUS
= ' ENTRA:FILE-STATUS
DISPLAY HEX ENTRA:FILE-STATUS
DISPLAY 'RECORD-COUNT = ' ENTRA:RECORD-COUNT
DISPLAY HEX ENTRA:RECORD-COUNT
DISPLAY '************************************'
IF WLL EQ 0
RETURN-CODE = 0
ELSE
RETURN-CODE = 4
END-IF
END-PROC
*------------* DECLARACAO DO RELATORIO
*------------REPORT SYSREL PRINTER RELAT NOADJUST
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 016'
LINE 1 TALLY AL-NOME AL-DATA AL-SALDO
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
>>>>>>>>>>>>>>>SYSPRINT
************************************
* INICIAL **************************
************************************
************************************
PARMLEN=
10
************************************
PARMTXT=/PROCESSA=S
/
************************************
SYSDATE
= 29/05/01
CHAR 29/05/01
ZONE FF6FF6FF
NUMR 29105101
1...5...
0************************************
EASYTRIEVE
5 Variveis Easytrieve; pegar PARM do EXEC
SYSTIME
= 9.43.26
CHAR 9.43.26
ZONE 4F4FF4FF
NUMR 09B43B26
1...5...
0************************************
* DISPLAY DO REGISTRO - INICIO *****
FILE-STATUS
=
RECORD-LENGTH =
80
RECORD-COUNT =
1
* DISPLAY DO REGISTRO - FIM ********
* DISPLAY DO REGISTRO - INICIO *****
FILE-STATUS
=
RECORD-LENGTH =
80
RECORD-COUNT =
2
* DISPLAY DO REGISTRO - FIM ********
* DISPLAY DO REGISTRO - INICIO *****
FILE-STATUS
=
RECORD-LENGTH =
80
RECORD-COUNT =
3
* DISPLAY DO REGISTRO - FIM ********
* DISPLAY DO REGISTRO - INICIO *****
FILE-STATUS
=
RECORD-LENGTH =
80
RECORD-COUNT =
4
* DISPLAY DO REGISTRO - FIM ********
* DISPLAY DO REGISTRO - INICIO *****
FILE-STATUS
=
RECORD-LENGTH =
80
RECORD-COUNT =
5
* DISPLAY DO REGISTRO - FIM ********
************************************
* FINAL ****************************
************************************
FILE-STATUS
=
4
CHAR
ZONE 0000
NUMR 0004
1...
0RECORD-COUNT =
5
CHAR
ZONE 0000
NUMR 0005
1...
0************************************
129/05/01 9.43.26
O statement JOB sem a especificao de INPUT faz o Easy assumir como INPUT o primeiro
FILE que no seja PRINTER definido.
JOB INPUT NULL [START nome-proc1] [FINISH nome-proc2] [NAME nome-job]
O statement JOB com a especificao de INPUT NULL indica ao Easy que no h arquivo de
entrada a ser lido automaticamente por ele.
JOB INPUT
JOB INPUT
EASYTRIEVE
6 Atividade Job e statements Start e Finish
O statement JOB com a especificao de INPUT com nome-de-arquivo indica ao Easy que o
arquivo de entrada a ser lido automaticamente por ele aquele cujo nome est especificado.
JOB INPUT
EASYTRIEVE
6 Atividade Job e statements Start e Finish
AG
1 80 A
AG-NOME
1 15 A
AG-DATA
16 08 N
AG-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB
DISPLAY 'PASSEI POR AQUI'
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
PASSEI POR AQUI
PASSEI POR AQUI
PASSEI POR AQUI
PASSEI POR AQUI
PASSEI POR AQUI
129/05/01 9.45.47
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01- 9.45-JSN00028
ENTRA
5
INPUT
VSAM
UNDEF
80
Exemplo 018
Atividade JOB sem INPUT explcito. Assume como input o primeiro FILE no-printer (arquivo
no existente)
//DS029018 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00,PARM='PROCESSA=S'
//ENTRA
DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//SAIDA
DD DSN=&&SAIDA,DISP=(NEW,PASS),DCB=(LRECL=80,RECFM=FB)
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 018
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT PRINTER
EASYTRIEVE
6 Atividade Job e statements Start e Finish
FILE SAIDA
AG
1 80 A
AG-NOME
1 15 A
AG-DATA
16 08 N
AG-SALDO
24 10 N 2
FILE ENTRA VS
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB
DISPLAY 'PASSEI POR AQUI'
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
129/05/01 9.47.18
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01- 9.47-JSN00028
SAIDA
0
INPUT
SAM FIX
BLK
80
Exemplo 019
Atividade JOB com INPUT NULL com STOP
//DS029019 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00,PARM='PROCESSA=S'
//ENTRA1
DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//SAIDA
DD DSN=&&SAIDA,DISP=(NEW,PASS),DCB=(LRECL=80,RECFM=FB)
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 019
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*--------------------------------------------------
EASYTRIEVE
6 Atividade Job e statements Start e Finish
FILE RELAT PRINTER
FILE ENTRA1 VS
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* ATIVIDADE 1
*-------------------------------------------------JOB INPUT NULL
DISPLAY 'ATIVIDADE 1'
STOP
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
ATIVIDADE 1
Exemplo 020
Atividade JOB com INPUT NULL sem STOP (assume GO TO JOB)
//DS029020 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00,PARM='PROCESSA=S'
//ENTRA1
DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//SAIDA
DD DSN=&&SAIDA,DISP=(NEW,PASS),DCB=(LRECL=80,RECFM=FB)
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 020
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT PRINTER
FILE ENTRA1 VS
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* ATIVIDADE 1
*-------------------------------------------------JOB INPUT NULL
DISPLAY 'ATIVIDADE 1'
* SEM STOP ASSUME
GO TO JOB
* PORTANTO, NESTE CASO, ENTRA EM LOOP DE DISPLAY
********************************************************
* FIM **************************************************
********************************************************
EASYTRIEVE
6 Atividade Job e statements Start e Finish
//SAIDAS
DD *
Exemplo 021
3 Atividades JOB
//DS029021 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00,PARM='PROCESSA=S'
//ENTRA1
DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//ENTRA2
DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//ENTRA3
DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//SAIDA
DD DSN=&&SAIDA,DISP=(NEW,PASS),DCB=(LRECL=80,RECFM=FB)
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 021
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT PRINTER
FILE ENTRA1 VS
FILE ENTRA2 VS
FILE ENTRA3 VS
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
*-------------------------------------------------* ATIVIDADE 1
*-------------------------------------------------JOB
DISPLAY 'ATIVIDADE 1'
*-------------------------------------------------* ATIVIDADE 2
*-------------------------------------------------JOB
DISPLAY 'ATIVIDADE 2'
*-------------------------------------------------* ATIVIDADE 3
*-------------------------------------------------JOB
DISPLAY 'ATIVIDADE 3'
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
ATIVIDADE 1
ATIVIDADE 1
ATIVIDADE 1
EASYTRIEVE
6 Atividade Job e statements Start e Finish
ATIVIDADE 1
ATIVIDADE 1
129/05/01 9.50.53
7 - Comandos de processamento
a) Comando STOP
Quando executado, encerra imediatamente a execuo da atividade (JOB ou SORT).
b) Expresses e assinalaes (movimentos)
Uma expresso utilizada para indicar um conjunto de operaes entre literais e variveis.
As operaes so :
+
*
/
soma
subtrao
multiplicao
diviso
ou
variavelreceptora [INTEGER] [ | ROUNDED | TRUNCATED | ] EQ
| variavel | literal | expressao |
ou
variavelreceptora =
sendo
EASYTRIEVE
7 Comandos de processamento a) Stop b) Expresses e assinalaes
ou
MOVE | SPACE | SPACES | ZERO | ZEROS | ZEROES | TO nome-campo
sendo :
nome-arquivo1 = nome do arquivo cuja area de I/O ser a emissora do movimento
nome-registro1 = nome da area de I/O que ser a emissora no movimento
nome-campo1 = campo emissor
literal1 = campo emissor
nome-arquivo2 = nome do arquivo cuja area de I/O ser a receptora do movimento
nome-registro2 = nome da area de I/O que ser a receptora no movimento
nome-campo2 = campo receptor
nome-campo3 = varivel com um nmero que indica a quantidade de bytes no campo emissor
literal3 = literal numrica que indica a quantidade de bytes no campo emissor
nome-campo4 = varivel com um nmero que indica a quantidade de bytes no campo receptor
literal4 = literal numrica que indica a quantidade de bytes no campo receptor
literal5 = literal que indica o preenchimento a ser efetuado caso o tamanho do campo receptor
seja maior que o tamanho do campo emissor.
Os campos cujos nomes forem iguais tanto nos campos emissores quanto nos receptores sero
movidos. Na sintaxe, temos :
nome-arq1 = nome do arquivo cuja area de I/O ser a emissora do movimento
nome-reg1 = nome do campo (rea de I/O de arquivo) cujas areas sero as emissoras do
movimento
nome-arq2 = nome do arquivo cuja area de I/O ser a receptora do movimento
nome-reg2 = nome do campo (rea de I/O de arquivo) cujas reas sero as receptoras do
movimento
Exemplo :
FILE ENTRA
REG-ENTRA
1 80 A
COD-CLI
1 5 N
COD-AREA
6 3 A
NOME-CLI
9 30 A
SALDO
39 9 N 2
FILE SAI
REG-SAI
1 80 A
COD-CLI
1 5 N
COD-AREA
6 3 A
NOME-CLI
9 30 A
VALOR
39 9 N 2
.
.
MOVE LIKE ENTRA TO SAI
MOVE LIKE REG-ENTRA TO REG-SAI
ou
EASYTRIEVE
7 Comandos de processamento b) Expresses e assinalaes
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 022
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE ENTRA
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-SALDO
24 10 N 2
FILE SAIDA
AG
1 80 A
AG-PARCIAL
1 34 A
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WXX
W
7
N
WALFA
W
3
A
WBETA
W
3
A
WRECEB
W 40
A
DIVIDENDO W 12
N
DIVISOR
W
4
N
COCIENTE W
8
N
RESTO
W
4
N
3I0D
W
3
N
. * 3 INTEIROS 0 DECIMAIS
2I0D
W
2
N
. * 2 INTEIROS 0 DECIMAIS
3I2D
W
5
N 2
. * 3 INTEIROS 2 DECIMAIS
2I1D
W
3
N 1
. * 2 INTEIROS 1 DECIMAL
*-------------------------------------------------* ATIVIDADE 1
*-------------------------------------------------JOB INPUT NULL
*
MOVE 'ABCDEF' TO WRECEB
. * MOVE TUDO
DISPLAY '/' WRECEB '/'
MOVE 'ABCDEF' 3 TO WRECEB
. * MOVE 3 PRIMEIROS AA ESQ
DISPLAY '/' WRECEB '/'
MOVE 'ABCDEF' TO WRECEB 5
. * RECEBE 5
DISPLAY '/' WRECEB '/'
MOVE 'ABCDEF' 2 TO WRECEB 5
. * MOVE 2 E RECEBE 5
DISPLAY '/' WRECEB '/'
*
MOVE 'ABCDEF' TO WRECEB FILL '*' . * PREENCHE COM *
DISPLAY '/' WRECEB '/'
*MOVE 'ABCDEF' TO WRECEB FILL '*-'
* O FILL ACIMA NAO EH VALIDO. A LITERAL DEVE TER UM BYTE
*
DIVIDENDO = 2001
DIVISOR = 4
COCIENTE = DIVIDENDO / DIVISOR
EASYTRIEVE
7 Comandos de processamento b) Expresses e assinalaes
RESTO = DIVIDENDO - DIVISOR * COCIENTE
DISPLAY 'DIVIDENDO = ' DIVIDENDO
DISPLAY 'DIVISOR
= ' DIVISOR
DISPLAY 'COCIENTE = ' COCIENTE
DISPLAY 'RESTO
= ' RESTO
*
3I0D = 987
2I0D = 3I0D
DISPLAY '2I0D = ' 2I0D
3I2D = 987.65
2I1D = 3I2D
DISPLAY '2I1D = ' 2I1D
*
WALFA = 'ABC'
WBETA = '123'
WALFA = WALFA XOR WBETA
WBETA = WBETA XOR WALFA
WALFA = WALFA XOR WBETA
DISPLAY 'WALFA=' WALFA
DISPLAY 'WBETA=' WBETA
*
STOP
*-------------------------------------------------* ATIVIDADE 2
*-------------------------------------------------JOB INPUT ENTRA
MOVE ENTRA TO SAIDA
PUT SAIDA
DISPLAY 'AG-PARCIAL=' AG-PARCIAL
GO TO JOB
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
/ABCDEF
/
/ABC
/
/ABCDE
/
/AB
/
/ABCDEF**********************************/
DIVIDENDO = 000000002001
DIVISOR
= 0004
COCIENTE = 00000500
RESTO
= 0001
2I0D = 87
2I1D = 87,6
WALFA=123
WBETA=ABC
AG-PARCIAL=ALBERTO
198802290000000001
AG-PARCIAL=ZIGOMAR
200105300000000010
AG-PARCIAL=MAFALDA
200010150000000100
AG-PARCIAL=VALDICE
199912230000001000
129/05/01 9.53.32
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01- 9.53-JSN00087
ENTRA
4
INPUT
SAM FIX
BLK
80
SAIDA
4
OUTPUT
SAM FIX
BLK
500
EASYTRIEVE
7 Comandos de processamento b) Expresses e assinalaes
EASYTRIEVE
7 Comandos de processamento c) GO TO , PROC, END-PROC, PERFORM
ERRO 5
200112000000001000
ERRO 6
200112320000001000
ERRO 7
200104310000001000
ERRO 8
200102290000001000
CERTO
200002290000001000
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 023
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT PRINTER
FILE ENTRA
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WMAXDIAS
W
2
N
WORCALC
W
4
N
WERRO
W 20
A
WDATA
W
8
N
WSSAA WDATA
4
N
WSS
WDATA
2
N
WAA
WDATA
+2 2
N
WMM
WDATA
+4 2
N
WDD
WDATA
+6 2
N
*-------------------------------------------------* ATIVIDADE 1
*-------------------------------------------------JOB INPUT ENTRA START COMECAR FINISH TERMINAR
IF AL-SALDO GT 0.99
GO TO PROCESSA
ELSE
GO TO JOB
END-IF
PROCESSA
WDATA = AL-DATA
PERFORM CONSISTE-DATA
PRINT SYSREL
GO TO JOB
*------------* ROTINA DE CONSISTENCIA DE DATA
*------------CONSISTE-DATA
PROC
WERRO = 'DATA OK'
EASYTRIEVE
7 Comandos de processamento c) GO TO , PROC, END-PROC, PERFORM
IF WDATA NOT NUMERIC
WERRO = 'DATA NAO NUMERICA'
GO TO OKNOK
END-IF
IF WSSAA LT 1950 OR +
WSSAA GT 2001
WERRO = 'ANO FORA DOS LIMITES'
GO TO OKNOK
END-IF
IF WMM LT 01 OR +
WMM GT 12
WERRO = 'MES INVALIDO'
GO TO OKNOK
END-IF
IF WDD LT 01 OR +
WDD GT 31
WERRO = 'DIA INVALIDO'
GO TO OKNOK
END-IF
IF WMM EQ 01 03 05 07 08 10 12
GO TO OKNOK
END-IF
IF WMM NE 02
IF WDD GT 30
WERRO = 'DIA INVALIDO'
GO TO OKNOK
END-IF
END-IF
WORCALC INTEGER = WSSAA / 4
WORCALC = WSSAA - WORCALC * 4
IF WORCALC EQ 0
WMAXDIAS = 29
ELSE
WMAXDIAS = 28
END-IF
IF WDD GT WMAXDIAS
WERRO = 'DIA INVALIDO'
END-IF
OKNOK
END-PROC
*------------* ROTINA DE INICIALIZACAO
*------------COMECAR. PROC
DISPLAY RELAT 'COMECANDO O PROGRAMA'
END-PROC
*------------* ROTINA DE FINALIZACAO
*------------TERMINAR. PROC
DISPLAY RELAT 'TERMINANDO O PROGRAMA'
END-PROC
*------------* DECLARACAO DO RELATORIO
*------------REPORT SYSREL PRINTER RELAT NOADJUST
CONTROL FINAL
EASYTRIEVE
7 Comandos de processamento c) GO TO , PROC, END-PROC, PERFORM
TITLE 1 '
PROGRAMA EXEMPLO 023'
LINE 1 AL-NOME AL-DATA AL-SALDO WERRO
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
>>>>>>>>>>>>>>>RELAT
COMECANDO O PROGRAMA
129/05/01
PROGRAMA EXEMPLO 023
AL-NOME
AL-DATA
AL-SALDO
WERRO
0MAFALDA
20001015
1,00
DATA OK
VALDICE
19991223
10,00
DATA OK
ERRO 1
19491223
10,00
ANO FORA DOS LIMITES
ERRO 2
20021223
10,00
ANO FORA DOS LIMITES
ERRO 3
20011323
10,00
MES INVALIDO
ERRO 4
20010023
10,00
MES INVALIDO
ERRO 5
20011200
10,00
DIA INVALIDO
ERRO 6
20011232
10,00
DIA INVALIDO
ERRO 7
20010431
10,00
DIA INVALIDO
ERRO 8
20010229
10,00
DIA INVALIDO
CERTO
20000229
10,00
DATA OK
TERMINANDO O PROGRAMA
101,00
EASYTRIEVE
7 Comandos de processamento d) IF, ELSE, ELSE-IF, END-IF; Operadores relacionais
Relacionamento de campos
Classes de campos
Srie de campos
Bits de campos
Presena de arquivos
Presena de srie de arquivos
Relacionamento de registros
Sendo :
EQ
NE
LT
LE
GT
GE
ou
ou
ou
ou
ou
ou
=
NQ
LS
LQ
GR
GQ
ou
ou
ou
ou
ou
=
<
<=
>
>=
equal (igual)
not equal (no igual / diferente)
less than (menor que)
less or equal (menor ou igual que)
greater than (maior que)
greater or equal (maior ou igual)
Exemplos :
CLASSES DE CAMPOS
Testa se um campo tem determinada caracterstica ou no. Sintaxe :
IF campo |NOT| classe
EASYTRIEVE
7 Comandos de processamento d) IF, ELSE, ELSE-IF, END-IF; Operadores relacionais
ZEROS
ZEROES
Exemplos :
IF DATA-NASC NOT NUMERIC ...
IF NOME-CLI NOT ALPHABETIC ...
IF SALDO ZERO ...
SRIE DE CAMPOS
Testa se campo1 est ou no dentro dos limites de uma srie delimitada por desde e at, cada
qual podendo ser especificado atravs de uma literal (numrica ou alfanumrica) ou outra
varivel.
Sintaxe :
IF campo1 |EQ|=|NE|NQ|=| desde
THRU
at
Exemplos :
IF ANO-NASC EQ 1890 THRU 1990 ...
IF COD-PROD NE 001 thru 870 ...
BITS DE CAMPOS
Testa se bit(s) de um campo est(o) ou no ligado(s).
Sintaxe :
IF campo [NOT] |ON|OFF| |campo|literalhexa|
Exemplos :
IF ULTDIGANO ON X01 ...
IF BIT4567DOBYTE ON X0F ...
IF ULTDIGNRO OFF X01 ...
PRESENA DE ARQUIVOS
Testa se um registro do arquivo em referncia est ou no disponvel para processamento.
Sintaxe :
EASYTRIEVE
7 Comandos de processamento d) IF, ELSE, ELSE-IF, END-IF; Operadores relacionais
IF [NOT] [EOF]
|nome-arquivo|PRIMARY|SECONDARY|
MATCHED
|nome-arquivo|PRIMARY|SECONDARY|
RELACIONAMENTO DE ARQUIVOS
Testa se registro(s) do arquivo tem duplicidade (ou qual duplicidade) em outro ou no.
Sintaxe :
IF [NOT] |DUPLICATE|FIRST-DUP|LAST-DUP| |nome-arq|PRIMARY|SECONDARY|
Exemplos gerais sobre uso do IF / ELSE / END-IF no prximo tem, em conjunto com DO /
END-DO / CASE.
EASYTRIEVE
7 Comandos de processamento e) DO, END-DO, CASE
CASE nome-campo
WHEN literal [THRU] literal
.
.
.
[ WHEN literal [THRU] literal
.
.
.]
[ OTHERWISE
.
.]
END-CASE
Exemplos :
INDEXADOR = 1
DO WHILE INDEXADOR LE MAXIMO
IF CODAL EQ CODTAB(INDEXADOR)
GO TO ACHOU
ELSE
INDEXADOR = INDEXADOR + 1
END-IF
END-DO
INDEXADOR = 1
DO UNTIL INDEXADOR GE MAXIMO
IF CODAL EQ CODTAB(INDEXADOR)
GO TO ACHOU
ELSE
INDEXADOR = INDEXADOR + 1
END-IF
END-DO
CASE COD-CLI
WHEN 1 THRU 9999
PERFORM CLI-EMP-0
WHEN 10000 THRU 19999
PERFORM CLI-EMP-1
OTHERWISE
PERFORM CLI-MISC
END-CASE
EASYTRIEVE
7 Comandos de processamento e) DO, END-DO, CASE
Exemplo 024
IF, ELSE, END-IF, DO, END-DO, CASE
//DS029024 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00,PARM='PROCESSA=S'
//ENTRA
DD *
ALBERTO
198802290000000001
ZIGOMAR
200105300000000010
MAFALDA
200010150000000100
VALDICE
199912230000001000
ERRO 1
194912230000001000
ERRO A
200212230000001000
ERRO B
200113230000001000
ERRO C
200100230000001000
ERRO D
200112000000001000
ERRO E
200112320000001000
ERRO F
200104310000001000
ERRO G
200102290000001000
CERTO
200002290000001000
200002290000001000
ABCD
200002290000001000
999999999999999200002290000001000
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 024
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE RELAT PRINTER
FILE ENTRA
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-ANO
16 04 N
AL-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WDATASOK
W
4
N
WDATASNOK
W
4
N
WMAXDIAS
W
2
N
WSAL199X
W 12
N 2
WSAL1995
W 12
N 2
WSAL1996
W 12
N 2
WSAL1997
W 12
N 2
WSAL1998
W 12
N 2
EASYTRIEVE
7 Comandos de processamento e) DO, END-DO, CASE
WSAL1999
W 12
N 2
WSAL2XXX
W 12
N 2
WORCALC
W
4
N
WERRO
W 20
A
WOK WERRO
7
A
WDATA
W
8
N
WSSAA WDATA
4
N
WSS
WDATA
2
N
WAA
WDATA
+2 2
N
WMM
WDATA
+4 2
N
WDD
WDATA
+6 2
N
*-------------------------------------------------* ATIVIDADE 1
*-------------------------------------------------JOB INPUT ENTRA START COMECAR FINISH TERMINAR
IF AL-SALDO GT 0.99
GO TO PROCESSA
ELSE
GO TO JOB
END-IF
PROCESSA
WDATA = AL-DATA
*
IF
AL-ANO EQ 1999
WSAL1999 = WSAL1999 + AL-SALDO
ELSE-IF AL-ANO EQ 1998
WSAL1998 = WSAL1998 + AL-SALDO
ELSE-IF AL-ANO EQ 1997
WSAL1997 = WSAL1997 + AL-SALDO
ELSE-IF AL-ANO EQ 1996
WSAL1996 = WSAL1996 + AL-SALDO
ELSE-IF AL-ANO EQ 1995
WSAL1995 = WSAL1995 + AL-SALDO
ELSE-IF AL-ANO LE 1994
WSAL199X = WSAL199X + AL-SALDO
ELSE
WSAL2XXX = WSAL2XXX + AL-SALDO
END-IF
*
IF AL-NOME NOT ALPHABETIC
WERRO = 'NOME NAO ALFABETICO'
ELSE
PERFORM CONSISTE-DATA
END-IF
*
CASE WOK
WHEN 'DATA OK'
WDATASOK = WDATASOK + 1
OTHERWISE
WDATASNOK = WDATASNOK + 1
END-CASE
*
PRINT SYSREL
GO TO JOB
*------------* ROTINA DE CONSISTENCIA DE DATA
*-------------
EASYTRIEVE
7 Comandos de processamento e) DO, END-DO, CASE
CONSISTE-DATA
PROC
WERRO = 'DATA OK'
IF WDATA NOT NUMERIC
WERRO = 'DATA NAO NUMERICA'
GO TO OKNOK
END-IF
IF WSSAA LT 1950 OR +
WSSAA GT 2001
WERRO = 'ANO FORA DOS LIMITES'
GO TO OKNOK
END-IF
IF WMM NE 01 THRU 12
WERRO = 'MES INVALIDO'
GO TO OKNOK
END-IF
IF WDD LT 01 OR +
WDD GT 31
WERRO = 'DIA INVALIDO'
GO TO OKNOK
END-IF
IF WMM EQ 01 03 05 07 08 10 12
GO TO OKNOK
END-IF
IF WMM NE 02
IF WDD GT 30
WERRO = 'DIA INVALIDO'
GO TO OKNOK
ELSE
IF WDD GR 28
WERRO = 'DIA INVALIDO'
GO TO OKNOK
END-IF
END-IF
END-IF
WORCALC INTEGER = WSSAA / 4
WORCALC = WSSAA - WORCALC * 4
IF WORCALC EQ 0
WMAXDIAS = 29
ELSE
WMAXDIAS = 28
END-IF
IF WDD GT WMAXDIAS
WERRO = 'DIA INVALIDO'
END-IF
OKNOK
* TESTA SE ANO PAR OU NAO
IF WAA ON X'0001'
WERRO = 'DATA OK - ANO IMPAR'
END-IF
END-PROC
*------------* ROTINA DE INICIALIZACAO
*------------COMECAR. PROC
DISPLAY RELAT 'COMECANDO O PROGRAMA'
END-PROC
EASYTRIEVE
7 Comandos de processamento e) DO, END-DO, CASE
*------------* ROTINA DE FINALIZACAO
*------------TERMINAR. PROC
DISPLAY RELAT 'TERMINANDO O PROGRAMA'
DISPLAY RELAT 'DATAS OK = ' WDATASOK
DISPLAY RELAT 'DATAS NOK = ' WDATASNOK
DISPLAY RELAT 'SALDO ANTES 1995 = ' WSAL199X
DISPLAY RELAT 'SALDO
1995 = ' WSAL1995
DISPLAY RELAT 'SALDO
1996 = ' WSAL1996
DISPLAY RELAT 'SALDO
1997 = ' WSAL1997
DISPLAY RELAT 'SALDO
1998 = ' WSAL1998
DISPLAY RELAT 'SALDO
1999 = ' WSAL1999
DISPLAY RELAT 'SALDO APOS 1999 = ' WSAL2XXX
END-PROC
*------------* DECLARACAO DO RELATORIO
*------------REPORT SYSREL PRINTER RELAT NOADJUST
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 023'
LINE 1 AL-NOME AL-DATA AL-SALDO WERRO
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
>>>>>>>>>>>>>>>RELAT
COMECANDO O PROGRAMA
130/05/01
PROGRAMA EXEMPLO 023
AL-NOME
AL-DATA
AL-SALDO
WERRO
0MAFALDA
20001015
1,00
DATA OK
VALDICE
19991223
10,00
DATA OK - ANO IMPAR
ERRO 1
19491223
10,00
NOME NAO ALFABETICO
ERRO A
20021223
10,00
ANO FORA DOS LIMITES
ERRO B
20011323
10,00
DATA OK - ANO IMPAR
ERRO C
20010023
10,00
DATA OK - ANO IMPAR
ERRO D
20011200
10,00
DATA OK - ANO IMPAR
ERRO E
20011232
10,00
DATA OK - ANO IMPAR
ERRO F
20010431
10,00
DATA OK - ANO IMPAR
ERRO G
20010229
10,00
DATA OK - ANO IMPAR
CERTO
20000229
10,00
DATA OK
20000229
10,00
DATA OK
ABCD
20000229
10,00
DATA OK
999999999999999
20000229
10,00
NOME NAO ALFABETICO
TERMINANDO O PROGRAMA
DATAS OK = 0011
DATAS NOK = 0003
SALDO ANTES 1995 =
10,00
SALDO
1995 =
,00
SALDO
1996 =
,00
SALDO
1997 =
,00
SALDO
1998 =
,00
SALDO
1999 =
10,00
SALDO APOS 1999 =
111,00
131,00
EASYTRIEVE
7 Comandos de processamento e) DO, END-DO, CASE
d) componentes de um relatrio
Os componentes de um relatrio podem ser exemplificados da seguinte forma :
literal controlada
pelo PARM PAGEWRD
.... 1
1
1
2
3
4
5 .... 2
3
123456789012345678901234567890123456789012345678901....90123456789012
18/05/01
AL-NOME
ALBERTO
ZIGOMAR
MAFALDA
VALDICE
.... PAGINA
AL-SALDO
19880229
20010530
20001015
19991223
,01
,10
1,00
10,00
11,11
e) estrutura do REPORT
A estrutura para a declarao do REPORT, suas caractersticas e procedimentos correlatos, a
seguinte (a especificao deve ser feita na ordem indicada):
PARM
declarao arquivos
declarao variveis
JOB.....
...
.
*---------------------REPORT
SEQUENCE
CONTROL
SUM
TITLE
HEADING
LINE
*-----------------REPORT-INPUT. PROC
...
END-PROC
*-----------------BEFORE-LINE. PROC
...
END-PROC
*-----------------AFTER-LINE. PROC
...
END-PROC
*-----------------BEFORE-BREAK. PROC
...
END-PROC
*-----------------AFTER-BREAK. PROC
...
END-PROC
*-----------------ENDPAGE. PROC
...
END-PROC
*-----------------TERMINATION. PROC
...
END-PROC
*------------------
f) Clusulas do REPORT
EASYTRIEVE
8 Statement Report; e) Estrutura do Report
REPORT nome-relatorio
[SUMMARY]
[SUMFILE]
[SUMSPACE]
[TALLYSIZE]
[DTLCTL |EVERY|FIRST|NONE|]
[SUMCTL ([x] [y])]
[LABELS [ACROSS literal] ]
[DOWN literal SIZE literal NEWPAGE]
[FILE nome-arquivo]
[PRINTER nome-arquivo]
[PAGESIZE literal literal]
[LINESIZE literal]
[SKIP literal]
[SPACE literal]
[TITLESKIP literal]
[| SPREAD | NOSPREAD |]
[NOADJUST]
[| NODATE | NOKDATE |]
[| NOPAGE | NOKPAGE |]
[NOHEADING]
[LIMIT literal]
[EVERY literal]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sendo :
nome-relatorio
SUMMARY
SUMSPACE literal
TALLYSIZE
DTLCTL |EVERY|FIRST|NONE|
EASYTRIEVE
8 Statement Report; e) Estrutura do Report
FILE nome-arquivo
PRINTER nome-arquivo
PAGESIZE literal1 literal2
LINESIZE literal
SKIP literal
SPACE literal
TITLESKIP literal
| SPREAD | NOSPREAD |
NOADJUST
NODATE
NOPAGE
NOHEADING
LIMIT literal
EVERY literal
|+nro|-nro|
COL nro
COL nro
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
|+nro|-nro|
|COL|POS| nro
COL nro
POS nro
Nos exemplos a seguir, a no ser quando especificado em contrrio, sero sempre colocadas as
clusulas NOADJUST e SPACE 1 para que a parte significativa do relatrio possa ser
visualizada mesmo sendo exibidas somente as 7 primeiras posies.
Exemplo 025
REPORTS
//DS029025 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//ENTRA
DD *
ALBERTO
19880229 0000010001 00100 012 006
ALBERTO
19880229 0000010001 00100 012 006
ZIGOMAR
20010530 0000000010 00020 123 012
ZIGOMAR
20010530 0000000010 00020 123 012
MAFALDA
20001015 0000000100 00340 456 024
MAFALDA
20001015 0000000100 00340 456 024
VALDICE
19991223 0000001000 05678 789 036
VALDICE
19991223 0000001000 05678 789 036
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 025
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE SYSREL PRINTER
FILE ENTRA
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-VTOT
25 10 N 2
AL-VUNI
36 5 N 2
AL-COD
42 3 N
AL-QPACOT
46 3 N 0
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WII
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA FINISH ESTATIS
WLL = WLL + 1
PRINT RELAT01
PRINT RELAT02
PRINT RELAT03
PRINT RELAT04
PRINT RELAT05
PRINT RELAT06
PRINT RELAT07
PRINT RELAT08
PRINT RELAT09
PRINT RELAT10
PRINT RELAT11
PRINT RELAT12
PRINT RELAT13
PRINT RELAT14
PRINT RELAT15
PRINT RELAT16
PRINT RELAT17
GO TO JOB
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY '************************************'
DISPLAY 'COPIA OK ! '
DISPLAY '************************************'
END-PROC
*------------* DECLARACAO DO RELATORIO 01
*------------REPORT RELAT01 PRINTER SYSREL NOADJUST SPACE 1
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT01'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 02
*------------REPORT RELAT02 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT02'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 03
*------------REPORT RELAT03 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-VTOT
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT03'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 04
*------------REPORT RELAT04 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-VTOT D
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT04'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 05
*------------REPORT RELAT05 PRINTER SYSREL NOADJUST SPACE 1 SUMMARY
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT05'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 06
*------------REPORT RELAT06 PRINTER SYSREL NOADJUST SPACE 1 NODATE
CONTROL FINAL
SUM
AL-QPACOT
TITLE 1 'PROGRAMA EXEMPLO 025 RELAT06'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 07
*------------REPORT RELAT07 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 'PROGRAMA EXEMPLO 025 RELAT07'
TITLE 2 '----------------------------'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 08
*------------REPORT RELAT08 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT08'
TITLE 2 '
----------------------------'
HEADING AL-NOME ('NOME' 'PESSOA')
HEADING AL-DATA ('DATA' 'CADAST')
HEADING AL-VTOT ('VALOR' 'TOTAL' '-----')
HEADING AL-VUNI ('VALOR' 'UNITARIO')
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI
*------------* DECLARACAO DO RELATORIO 09
*------------REPORT RELAT09 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT09'
LINE 1 'AL-NOME
= ' AL-NOME
LINE 2 'AL-DATA
= ' AL-DATA
LINE 3 'AL-VTOT
= ' AL-VTOT
LINE 4 'AL-VUNI
= ' AL-VUNI
LINE 5 'AL-COD
= ' AL-COD
LINE 6 'AL-QPACOT = ' AL-QPACOT
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
LINE 7 '--------------------------------'
*------------* DECLARACAO DO RELATORIO 10
*------------REPORT RELAT10 PRINTER SYSREL NOADJUST SPACE 1 NOHEADING
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT10'
LINE 1 'AL-NOME
= ' AL-NOME
LINE 2 'AL-VTOT
= ' AL-VTOT
*------------* DECLARACAO DO RELATORIO 11
*------------REPORT RELAT11 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT11'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------REPORT-INPUT. PROC
IF AL-NOME NE 'ALBERTO'
SELECT
END-IF
END-PROC
*------------* DECLARACAO DO RELATORIO 12
*------------REPORT RELAT12 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT12'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------BEFORE-LINE. PROC
IF AL-DATA LT 20001231
DISPLAY '*** VERIFICAR DATA !!!'
END-IF
END-PROC
*------------* DECLARACAO DO RELATORIO 13
*------------REPORT RELAT13 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT13'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------AFTER-LINE. PROC
IF AL-DATA LT 20001231
DISPLAY '*** VERIFICAR DATA !!!'
END-IF
END-PROC
*------------* DECLARACAO DO RELATORIO 14
*------------REPORT RELAT14 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-NOME
CONTROL AL-NOME
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT14'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*-------------
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
BEFORE-BREAK. PROC
IF LEVEL EQ 1
DISPLAY 'VAI IMPRIMIR QUEBRA NIVEL 1'
ELSE
DISPLAY 'VAI IMPRIMIR QUEBRA NIVEL 2'
END-IF
END-PROC
*------------* DECLARACAO DO RELATORIO 15
*------------REPORT RELAT15 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-NOME
CONTROL AL-NOME
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT15'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------AFTER-BREAK. PROC
IF LEVEL EQ 1
DISPLAY 'IMPRIMIU QUEBRA NIVEL 1'
ELSE
DISPLAY 'IMPRIMIU QUEBRA NIVEL 2'
END-IF
END-PROC
*------------* DECLARACAO DO RELATORIO 16
*------------REPORT RELAT16 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-NOME
CONTROL AL-NOME
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT16'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------ENDPAGE. PROC
DISPLAY '------------- RODAPEH ---------------'
END-PROC
*------------* DECLARACAO DO RELATORIO 17
*------------REPORT RELAT17 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-NOME
CONTROL AL-NOME
TITLE 1 '
PROGRAMA EXEMPLO 025 RELAT17'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------TERMINATION. PROC
DISPLAY '-X-X-X-X-X-X-X-X- FIM DO RELAT17 -X-X-X-X-X-X-X-X-'
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//SYSREL
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SAIDAS
DD *
129/05/01
PROGRAMA EXEMPLO 025 RELAT01
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
-
AL-NOME
0ALBERTO
ALBERTO
ZIGOMAR
ZIGOMAR
MAFALDA
MAFALDA
VALDICE
VALDICE
129/05/01
AL-NOME
0ALBERTO
ALBERTO
ZIGOMAR
ZIGOMAR
MAFALDA
MAFALDA
VALDICE
VALDICE
129/05/01
AL-NOME
0ZIGOMAR
ZIGOMAR
MAFALDA
MAFALDA
VALDICE
VALDICE
ALBERTO
ALBERTO
129/05/01
AL-NOME
0ALBERTO
ALBERTO
VALDICE
VALDICE
MAFALDA
MAFALDA
ZIGOMAR
ZIGOMAR
AL-DATA
AL-VTOT
AL-VUNI AL-COD AL-QPACOT
19880229
100,01
1,00
012
6
19880229
100,01
1,00
012
6
20010530
,10
,20
123
12
20010530
,10
,20
123
12
20001015
1,00
3,40
456
24
20001015
1,00
3,40
456
24
19991223
10,00
56,78
789
36
19991223
10,00
56,78
789
36
PROGRAMA EXEMPLO 025 RELAT02
AL-DATA
19880229
19880229
20010530
20010530
20001015
20001015
19991223
19991223
AL-VTOT
AL-VUNI
100,01
1,00
100,01
1,00
,10
,20
,10
,20
1,00
3,40
1,00
3,40
10,00
56,78
10,00
56,78
222,22
122,76
PROGRAMA EXEMPLO 025 RELAT03
AL-COD AL-QPACOT
012
6
012
6
123
12
123
12
456
24
456
24
789
36
789
36
156
AL-DATA
AL-VTOT
AL-VUNI AL-COD AL-QPACOT
20010530
,10
,20
123
12
20010530
,10
,20
123
12
20001015
1,00
3,40
456
24
20001015
1,00
3,40
456
24
19991223
10,00
56,78
789
36
19991223
10,00
56,78
789
36
19880229
100,01
1,00
012
6
19880229
100,01
1,00
012
6
PROGRAMA EXEMPLO 025 RELAT04
AL-DATA
19880229
19880229
19991223
19991223
20001015
20001015
20010530
20010530
AL-VTOT
AL-VUNI
100,01
1,00
100,01
1,00
10,00
56,78
10,00
56,78
1,00
3,40
1,00
3,40
,10
,20
,10
,20
222,22
122,76
PROGRAMA EXEMPLO 025 RELAT05
AL-COD AL-QPACOT
012
6
012
6
789
36
789
36
456
24
456
24
123
12
123
12
156
129/05/01
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
AL-COD AL-QPACOT
0
222,22
122,76
156
1PROGRAMA EXEMPLO 025 RELAT06
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI AL-COD AL-QPACOT
0ALBERTO
19880229
100,01
1,00
012
6
ALBERTO
19880229
100,01
1,00
012
6
ZIGOMAR
20010530
,10
,20
123
12
ZIGOMAR
20010530
,10
,20
123
12
MAFALDA
20001015
1,00
3,40
456
24
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
MAFALDA
VALDICE
VALDICE
20001015
19991223
19991223
1,00
10,00
10,00
3,40
56,78
56,78
456
789
789
AL-VTOT
AL-VUNI
100,01
1,00
100,01
1,00
,10
,20
,10
,20
1,00
3,40
1,00
3,40
10,00
56,78
10,00
56,78
222,22
122,76
PROGRAMA EXEMPLO 025 RELAT08
---------------------------VALOR
TOTAL
VALOR
----UNITARIO
100,01
1,00
100,01
1,00
,10
,20
,10
,20
1,00
3,40
1,00
3,40
10,00
56,78
10,00
56,78
222,22
122,76
PROGRAMA EXEMPLO 025 RELAT09
DATA
CADAST
19880229
19880229
20010530
20010530
20001015
20001015
19991223
19991223
AL-NOME
0AL-NOME
= ALBERTO
AL-DATA
= 19880229
AL-VTOT
=
100,01
AL-VUNI
=
1,00
AL-COD
= 012
AL-QPACOT =
6
-------------------------------AL-NOME
= ALBERTO
AL-DATA
= 19880229
AL-VTOT
=
100,01
AL-VUNI
=
1,00
AL-COD
= 012
AL-QPACOT =
6
-------------------------------AL-NOME
= ZIGOMAR
AL-DATA
= 20010530
AL-VTOT
=
,10
AL-VUNI
=
,20
AL-COD
= 123
AL-QPACOT =
12
-------------------------------AL-NOME
= ZIGOMAR
24
36
36
156
AL-COD AL-QPACOT
012
6
012
6
123
12
123
12
456
24
456
24
789
36
789
36
156
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
AL-DATA
= 20010530
AL-VTOT
=
,10
AL-VUNI
=
,20
AL-COD
= 123
AL-QPACOT =
12
-------------------------------AL-NOME
= MAFALDA
AL-DATA
= 20001015
AL-VTOT
=
1,00
AL-VUNI
=
3,40
AL-COD
= 456
AL-QPACOT =
24
-------------------------------AL-NOME
= MAFALDA
AL-DATA
= 20001015
AL-VTOT
=
1,00
AL-VUNI
=
3,40
AL-COD
= 456
AL-QPACOT =
24
-------------------------------AL-NOME
= VALDICE
AL-DATA
= 19991223
AL-VTOT
=
10,00
AL-VUNI
=
56,78
AL-COD
= 789
AL-QPACOT =
36
-------------------------------AL-NOME
= VALDICE
AL-DATA
= 19991223
AL-VTOT
=
10,00
129/05/01
PROGRAMA EXEMPLO 025 RELAT09
AL-NOME
0AL-VUNI
=
56,78
AL-COD
= 789
AL-QPACOT =
36
-------------------------------222,22
122,76
0
156
129/05/01
PROGRAMA EXEMPLO 025 RELAT10
AL-NOME
= ALBERTO
AL-VTOT
=
100,01
AL-NOME
= ALBERTO
AL-VTOT
=
100,01
AL-NOME
= ZIGOMAR
AL-VTOT
=
,10
AL-NOME
= ZIGOMAR
AL-VTOT
=
,10
AL-NOME
= MAFALDA
AL-VTOT
=
1,00
AL-NOME
= MAFALDA
AL-VTOT
=
1,00
AL-NOME
= VALDICE
AL-VTOT
=
10,00
AL-NOME
= VALDICE
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
AL-VTOT
=
0
129/05/01
AL-NOME
0ZIGOMAR
ZIGOMAR
MAFALDA
MAFALDA
VALDICE
VALDICE
10,00
222,22
PROGRAMA EXEMPLO 025 RELAT11
AL-DATA
20010530
20010530
20001015
20001015
19991223
19991223
AL-VTOT
129/05/01
AL-NOME
0*** VERIFICAR
ALBERTO
*** VERIFICAR
ALBERTO
ZIGOMAR
ZIGOMAR
*** VERIFICAR
MAFALDA
*** VERIFICAR
MAFALDA
*** VERIFICAR
VALDICE
*** VERIFICAR
VALDICE
AL-DATA
DATA !!!
19880229
DATA !!!
19880229
20010530
20010530
DATA !!!
20001015
DATA !!!
20001015
DATA !!!
19991223
DATA !!!
19991223
AL-VTOT
129/05/01
AL-NOME
0ALBERTO
*** VERIFICAR
ALBERTO
*** VERIFICAR
ZIGOMAR
ZIGOMAR
MAFALDA
*** VERIFICAR
MAFALDA
*** VERIFICAR
VALDICE
*** VERIFICAR
VALDICE
*** VERIFICAR
AL-DATA
19880229
DATA !!!
19880229
DATA !!!
20010530
20010530
20001015
DATA !!!
20001015
DATA !!!
19991223
DATA !!!
19991223
DATA !!!
AL-VTOT
100,01
AL-VUNI
1,00
100,01
1,00
012
,10
,10
1,00
,20
,20
3,40
123
123
456
12
12
24
1,00
3,40
456
24
10,00
56,78
789
36
10,00
56,78
789
36
129/05/01
AL-NOME
0ALBERTO
AL-VUNI
,10
,20
,10
,20
1,00
3,40
1,00
3,40
10,00
56,78
10,00
56,78
22,20
120,76
PROGRAMA EXEMPLO 025 RELAT12
AL-VUNI
AL-COD AL-QPACOT
123
12
123
12
456
24
456
24
789
36
789
36
144
AL-COD AL-QPACOT
100,01
1,00
012
100,01
,10
,10
1,00
,20
,20
012
123
123
6
12
12
1,00
3,40
456
24
1,00
3,40
456
24
10,00
56,78
789
36
10,00
56,78
222,22
122,76
PROGRAMA EXEMPLO 025 RELAT13
789
36
156
AL-COD AL-QPACOT
012
6
222,22
122,76
PROGRAMA EXEMPLO 025 RELAT14
AL-DATA
19880229
19880229
VAI IMPRIMIR QUEBRA NIVEL 1
ALBERTO
0MAFALDA
20001015
20001015
AL-VTOT
100,01
100,01
AL-VUNI
1,00
1,00
200,02
1,00
1,00
2,00
3,40
3,40
156
AL-COD AL-QPACOT
012
6
012
6
456
456
12
24
24
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
VAI IMPRIMIR QUEBRA NIVEL
MAFALDA
0VALDICE
19991223
19991223
VAI IMPRIMIR QUEBRA NIVEL
VALDICE
0ZIGOMAR
20010530
20010530
VAI IMPRIMIR QUEBRA NIVEL
ZIGOMAR
0VAI IMPRIMIR QUEBRA NIVEL
129/05/01
AL-NOME
0ALBERTO
2,00
10,00
10,00
6,80
56,78
56,78
789
789
48
36
36
20,00
,10
,10
113,56
,20
,20
123
123
72
12
12
,20
,40
24
222,22
122,76
PROGRAMA EXEMPLO 025 RELAT15
156
AL-DATA
19880229
19880229
1
2
AL-VTOT
100,01
100,01
200,02
AL-VUNI
1,00
1,00
2,00
ALBERTO
IMPRIMIU QUEBRA NIVEL 1
0MAFALDA
20001015
1,00
3,40
20001015
1,00
3,40
MAFALDA
2,00
6,80
IMPRIMIU QUEBRA NIVEL 1
0VALDICE
19991223
10,00
56,78
19991223
10,00
56,78
VALDICE
20,00
113,56
IMPRIMIU QUEBRA NIVEL 1
0ZIGOMAR
20010530
,10
,20
20010530
,10
,20
ZIGOMAR
,20
,40
IMPRIMIU QUEBRA NIVEL 1
0
222,22
122,76
IMPRIMIU QUEBRA NIVEL 2
129/05/01
PROGRAMA EXEMPLO 025 RELAT16
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
0ALBERTO
19880229
100,01
1,00
19880229
100,01
1,00
ALBERTO
200,02
2,00
0MAFALDA
20001015
1,00
3,40
20001015
1,00
3,40
MAFALDA
2,00
6,80
0VALDICE
19991223
10,00
56,78
19991223
10,00
56,78
VALDICE
20,00
113,56
0ZIGOMAR
20010530
,10
,20
20010530
,10
,20
ZIGOMAR
,20
,40
0
222,22
122,76
-
AL-COD AL-QPACOT
012
6
012
6
12
456
456
24
24
48
789
789
36
36
72
123
123
12
12
24
156
AL-COD AL-QPACOT
012
6
012
6
12
456
24
456
24
48
789
36
789
36
72
123
12
123
12
24
156
EASYTRIEVE
8 Statement Report; g) Statements complementares - detalhes
-------------- RODAPEH --------------129/05/01
PROGRAMA EXEMPLO 025 RELAT17
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
0ALBERTO
19880229
100,01
1,00
19880229
100,01
1,00
ALBERTO
200,02
2,00
0MAFALDA
20001015
1,00
3,40
20001015
1,00
3,40
MAFALDA
2,00
6,80
0VALDICE
19991223
10,00
56,78
19991223
10,00
56,78
VALDICE
20,00
113,56
0ZIGOMAR
20010530
,10
,20
20010530
,10
,20
ZIGOMAR
,20
,40
0
222,22
122,76
0-X-X-X-X-X-X-X-X- FIM DO RELAT17 -X-X-X-X-X-X-X-X-
AL-COD AL-QPACOT
012
6
012
6
12
456
24
456
24
48
789
36
789
36
72
123
12
123
12
24
156
9 - Comandos de I/O
a) Comando DISPLAY
Para exibir constantes e/ou variveis na SYSPRINT ou outro DD. Sintaxe :
DISPLAY [HEX] nome-relatorio | lit1 | var1 |
b) Comando GET
Para efetuar a leitura sequencial de um registro lgico, em arquivos SAM ou VSAM.
Sintaxe :
GET nome-arquivo [STATUS]
FROM indica de qual arquivo ou rea de I/O o registro a ser gravado deve ser copiado.
STATUS aplica-se somente para arquivos VSAM.
Status 8 = chave duplicada; Status 12 = chave fora de sequncia
EASYTRIEVE
9 Comandos de I/O a) Display b) Get c) Put
d) Comando POINT
Para efetuar o posicionamento de um arquivo VSAM num determinado ponto de seus registros.
IMPORTANTE : o registro somente fica disponvel aps o GET subsequente feito com sucesso
(ou uma leitura automtica via JOB INPUT).
Sintaxe :
POINT nome-arquivo |=|EQ|GE|GQ|>=|
|campo|literal|
Exemplo :
POINT CADCLI GE 100000 STATUS
IF EOF CADCLI
DISPLAY NO ACHOU. DEU EOF...
STOP
END-IF
IF CADCLI:FILE-STATUS NE 0
DISPLAY NEM FEZ O POINT OK. IMAGINA O GET...
STOP
END-IF
LEDENOVO
GET CADCLI STATUS
IF EOF CADCLI
GO TO PROCESSOU
END-IF
IF CADCLI:FILE-STATUS NE 0
DISPLAY ERRO NO GET
STOP
END-IF
IF CODCLI NE 100000
DISPLAY FALTA REGISTRO HEADER DE GRUPO
GO TO LEDENOVO
END-IF
PROCESSAR
.
.
.
.
.
PROCESSOU
.
.
.
[STATUS]
EASYTRIEVE
9 Comandos de I/O a) Display b) Get c) Put
e) Comando READ
Para efetuar a leitura aleatria (randmica) de um registro lgico em um arquivo VSAM.
Sintaxe :
READ nome-arquivo KEY |campo|literal-alfa| [STATUS]
EASYTRIEVE
9 Comandos de I/O a) Display b) Get c) Put
Exemplos :
WRITE CADCLI DELETE STATUS
IF CADCLI:FILE-STATUS NE 0
DISPLAY ERRO GRAVE
STOP
END-IF
(atualiza campos desejados na rea de I/O)
WRITE CADCLI UPDATE STATUS
IF CADCLI:FILE-STATUS NE 0
DISPLAY ERRO GRAVE
STOP
END-IF
(prepara rea de I/O)
WRITE CADCLI ADD FROM NOVO-CLIENTE STATUS
IF CADCLI:FILE-STATUS NE 0
DISPLAY CHAVE DUPLICADA
STOP
END-IF
Exemplo 026
Comandos I/O
//DS029026 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//* ----------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//ENTRAPS DD *
ALB
ALBERTO
VALER
ROBER
VAL
VALDICE
ZULU
//ENTRAVS DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 026
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS (AREAS DE I/O NAO NECESSARIAS)
*--------------------------------------------------
EASYTRIEVE
9 Comandos de I/O a) Display b) Get c) Put
FILE ENTRAPS
ALS-NOME
1 15 A
FILE ENTRAVS VS
ALV
1 80 A
ALV-NOME
1 15 A
ALV-DATA
16 08 N
ALV-SALDO
24 10 N 2
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WEX
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ATIVIDADE 1
*------------JOB INPUT NULL
DISPLAY 'FIM ATIVIDADE 1 COMECO 2'
STOP
*------------* ATIVIDADE 2
*------------JOB INPUT ENTRAPS
POINT ENTRAVS GE ALS-NOME
IF EOF ENTRAVS
DISPLAY ' PROCURADO ' ALS-NOME ' ACHADO EOF'
GO TO JOB
END-IF
IF ENTRAVS:FILE-STATUS NE 0
DISPLAY 'ERRO NO POINT'
GO TO JOB
END-IF
GET ENTRAVS STATUS
IF EOF ENTRAVS
DISPLAY 'CHAVE NAO ACHADA : ' ALS-NOME
GO TO JOB
END-IF
IF ENTRAVS:FILE-STATUS NE 0
DISPLAY 'ERRO NO GET'
GO TO JOB
END-IF
IF ALV-NOME EQ ALS-NOME
DISPLAY ' PROCURADO ' ALS-NOME ' ACHADO (TUDO IGUAL) : ' ALV-NOME
ELSE
DISPLAY ' PROCURADO ' ALS-NOME ' ACHADO ' ALV-NOME
END-IF
GO TO JOB
*------------* ATIVIDADE 3
*------------JOB INPUT NULL
DISPLAY 'FIM ATIVIDADE 3 COMECO 4'
STOP
*------------* ATIVIDADE 4
EASYTRIEVE
9 Comandos de I/O a) Display b) Get c) Put
*------------JOB INPUT ENTRAPS
READ ENTRAVS KEY ALS-NOME STATUS
IF ENTRAVS:FILE-STATUS NE 0
DISPLAY 'PROCUROU : ' ALS-NOME ' MAS NAO ACHOU'
GO TO JOB
END-IF
DISPLAY 'PROCUROU : ' ALS-NOME ' E ACHOU (' ALV-NOME ')'
GO TO JOB
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
FIM ATIVIDADE 1 COMECO 2
PROCURADO ALB
ACHADO BARTIRA
PROCURADO ALBERTO
ACHADO BARTIRA
PROCURADO VALER
ACHADO ZIGOMAR
PROCURADO ROBER
ACHADO TIQUINHA
PROCURADO VAL
ACHADO VALDICE
PROCURADO VALDICE
ACHADO (TUDO IGUAL) : VALDICE
PROCURADO ZULU
ACHADO EOF
129/05/01 15.02.09
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01-15.02-JSN00031
ENTRAPS
7
INPUT
SAM FIX
BLK
80
ENTRAVS
6
INPUT
VSAM
UNDEF
80
FIM ATIVIDADE 3 COMECO 4
PROCUROU : ALB
MAS NAO ACHOU
PROCUROU : ALBERTO
MAS NAO ACHOU
PROCUROU : VALER
MAS NAO ACHOU
PROCUROU : ROBER
MAS NAO ACHOU
PROCUROU : VAL
MAS NAO ACHOU
PROCUROU : VALDICE
E ACHOU (VALDICE
)
PROCUROU : ZULU
MAS NAO ACHOU
129/05/01 15.02.09
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01-15.02-JSN00065
ENTRAPS
7
INPUT
SAM FIX
BLK
80
ENTRAVS
1
INPUT
VSAM
UNDEF
80
10 Atividade SORT
A atividade SORT indica um processo de classificao de um arquivo que possa ser tratado
sequencialmente, e os procedimentos que eventualmente possam ser feitos, relacionados a tal
processo de classificao.
A sintaxe da atividade SORT :
SORT nome-arquivo1 TO nome-arquivo2 +
USING campo1 [D] [ campo2 [D] ... campon [D] ] +
[SIZE literal1] +
[WORK literal2] +
[BEFORE nome-proc] +
[NAME nome-ativ]
Sendo :
nome-arquivo1
nome-arquivo2
literal1
literal2
nome-proc
= nome da rotina que tem acesso aos registros aps a leitura, para
modific-los e / ou filtr-los
nome-ativ
Nos procedimentos referentes atividade SORT, no permitido utilizar comandos que efetuem
I/O (Display, Get, Point, Print, Put, Read, Write, Dli, Idms, Sql).
Observar que o DISPLAY para a SYSPRINT vlido.
EASYTRIEVE
10 Atividade Sort
Exemplo 027
SORT
//DS029027 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//* ----------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//ENTRAPS DD *
ALB
ALBERTO
VALER
ROBER
VAL
VALDICE
ZULU
NOME DESLOC
//SAIDAPS DD DSN=&&TEMP,DISP=(NEW,PASS),DCB=(LRECL=500,RECFM=FB)
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 027
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS (AREAS DE I/O NAO NECESSARIAS)
*-------------------------------------------------FILE ENTRAPS
ALS-NOME
1 15 A
ALS-NOME1
1 1 A
ALS-NOME14
2 14 A
FILE SAIDAPS
A-NOME
1 15 A
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WEX
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ATIVIDADE 1
*------------SORT ENTRAPS TO SAIDAPS USING ALS-NOME BEFORE SELECIONA
SELECIONA. PROC
IF ALS-NOME1 NE ' '
SELECT
END-IF
DO WHILE ALS-NOME1 EQ ' '
ALS-NOME = ALS-NOME14
END-DO
SELECT
EASYTRIEVE
10 Atividade Sort
END-PROC
STOP
*------------* ATIVIDADE 2
*------------JOB INPUT SAIDAPS
DISPLAY A-NOME
GO TO JOB
********************************************************
* FIM **************************************************
********************************************************
//SAIDAS
DD *
129/05/01 15.25.02
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01-15.25-SRT00024
ENTRAPS
8
INPUT
SAM FIX
BLK
80
SAIDAPS
8
OUTPUT
SAM FIX
BLK
500
129/05/01 15.25.02
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01-15.25-JSN00035
SAIDAPS
8
INPUT
SAM FIX
BLK
500
ALB
ALBERTO
NOME DESLOC
ROBER
VAL
VALDICE
VALER
ZULU
129/05/01 15.25.02
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01-15.25-JSN00039
SAIDAPS
8
INPUT
SAM FIX
BLK
500
11 RECURSO de MATCH
O recurso de MATCH (intercalao / merge) de arquivos possvel devido possibilidade de
especificar, num teste de condio, testes de presena de arquivos, de presena de srie de
arquivos, e de relacionamento de arquivos.
Relembrando a sintaxe desses casos indicada inicialmente no captulo referente ao IF, temos :
PRESENA DE ARQUIVOS = testa se um registro do arquivo em referncia est ou no
disponvel para processamento.
IF [NOT] [EOF]
|nome-arquivo|PRIMARY|SECONDARY|
MATCHED
|nome-arquivo|PRIMARY|SECONDARY|
Exemplo 028
MATCH
//DS029028 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//JOBLIB
DD DSN=DSLIB.LOAD00,DISP=SHR
//* -----------------------------------------------------------------//* STEP 04 - SINCRONIZACAO DE DOIS ARQ. (MATCH)
//* -----------------------------------------------------------------//STEP4
EXEC PGM=EZTPA00
//CLIANT
DD *
NOME CLIENTE 001
12345678901(011)2223344
NOME CLIENTE 001
12345678901(011)2223344
NOME CLIENTE 010
12345678910(011)2223344
NOME CLIENTE 015
12345678915(011)2223344
NOME CLIENTE 016
12345678916(011)2223344
NOME CLIENTE 017
12345678917(011)2223344
NOME CLIENTE 025
12345678925(011)2223344
NOME CLIENTE 030
12345678930(011)2223344
//CLINOV
DD *
NOME CLIENTE 002
12345678902(011)2223344
NOME CLIENTE 002
12345678902(011)2223344
NOME CLIENTE 009
12345678909(011)2223344
NOME CLIENTE 013
12345678913(011)2223344
NOME CLIENTE 022
12345678922(011)2223344
NOME CLIENTE 025
12345678925(011)2223344
NOME CLIENTE 031
12345678931(011)2223344
NOME CLIENTE 032
12345678932(011)2223344
EASYTRIEVE
11 Recurso de Match
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 028
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE CLIANT
ANT-REG-CLI-ANTIGOS
1 80 A
ANT-CLINOME
1 20 A
ANT-CLICPF
21 11 N
ANT-CLITEL
32 12 A
*
FILE CLINOV
NOV-REG-CLI-NOVOS
1 80 A
NOV-CLINOME
1 20 A
NOV-CLICPF
21 11 N
NOV-CLITEL
32 12 A
*
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------IGUAIS
W
8 N
ANTIGS
W
8 N
NOVOSC
W
8 N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT (CLIANT KEY (ANT-CLINOME
+
ANT-CLICPF)
+
CLINOV KEY (NOV-CLINOME
+
NOV-CLICPF)) FINISH TERMINAR
*
IF DUPLICATE PRIMARY
DISPLAY 'REGISTRO DUPLICADO EM CLIANT : ' ANT-CLINOME ANT-CLICPF
END-IF
IF DUPLICATE SECONDARY
DISPLAY 'REGISTRO DUPLICADO EM CLINOV : ' NOV-CLINOME NOV-CLICPF
END-IF
*
IF MATCHED
IGUAIS = IGUAIS + 1
DISPLAY 'CLIENTE (NOVO) JAH EXISTIA ' ANT-CLINOME ' CPF=' ANT-CLICPF
ELSE
IF CLIANT
ANTIGS = ANTIGS + 1
DISPLAY 'CLIENTE ANTIGO
: ' ANT-CLINOME ' CPF=' ANT-CLICPF
ELSE
IF CLINOV
NOVOSC = NOVOSC + 1
DISPLAY 'CLIENTE NOVO
: ' NOV-CLINOME ' CPF=' NOV-CLICPF
END-IF
END-IF
END-IF
EASYTRIEVE
11 Recurso de Match
*
*------------* ROTINA DE FINALIZACAO
*------------TERMINAR. PROC
DISPLAY 'REGISTROS PRESENTES NO CLIANT E CLINOV ==> ' IGUAIS
DISPLAY 'REGISTROS PRESENTES SOH EM CLIANT
==> ' ANTIGS
DISPLAY 'REGISTROS PRESENTES SOH EM CLINOV
==> ' NOVOSC
END-PROC
********************************************************
* FIM **************************************************
********************************************************
//EZTVFM
DD UNIT=3390,SPACE=(TRK,(500,50),RLSE)
//SORTWK1 DD UNIT=3390,SPACE=(TRK,(500,50),RLSE)
//SYSOUT
DD SYSOUT=*
//SORTMSG DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//RELA
DD SYSOUT=*
//RELB
DD SYSOUT=*
//SAIDAS DD *
REGISTRO DUPLICADO EM CLIANT : NOME CLIENTE 001
12345678901
CLIENTE ANTIGO
: NOME CLIENTE 001
CPF=12345678901
REGISTRO DUPLICADO EM CLIANT : NOME CLIENTE 001
12345678901
CLIENTE ANTIGO
: NOME CLIENTE 001
CPF=12345678901
REGISTRO DUPLICADO EM CLINOV : NOME CLIENTE 002
12345678902
CLIENTE NOVO
: NOME CLIENTE 002
CPF=12345678902
REGISTRO DUPLICADO EM CLINOV : NOME CLIENTE 002
12345678902
CLIENTE NOVO
: NOME CLIENTE 002
CPF=12345678902
CLIENTE NOVO
: NOME CLIENTE 009
CPF=12345678909
CLIENTE ANTIGO
: NOME CLIENTE 010
CPF=12345678910
CLIENTE NOVO
: NOME CLIENTE 013
CPF=12345678913
CLIENTE ANTIGO
: NOME CLIENTE 015
CPF=12345678915
CLIENTE ANTIGO
: NOME CLIENTE 016
CPF=12345678916
CLIENTE ANTIGO
: NOME CLIENTE 017
CPF=12345678917
CLIENTE NOVO
: NOME CLIENTE 022
CPF=12345678922
CLIENTE (NOVO) JAH EXISTIA NOME CLIENTE 025
CPF=12345678925
CLIENTE ANTIGO
: NOME CLIENTE 030
CPF=12345678930
CLIENTE NOVO
: NOME CLIENTE 031
CPF=12345678931
CLIENTE NOVO
: NOME CLIENTE 032
CPF=12345678932
REGISTROS PRESENTES NO CLIANT E CLINOV ==> 00000001
REGISTROS PRESENTES SOH EM CLIANT
==> 00000007
REGISTROS PRESENTES SOH EM CLINOV
==> 00000007
129/05/01 11.03.13
CA-EASYTRIEVE PLUS-6.2 9606
COMPRADOR EASYTRIEVE
0PROGRAMS AND ALL SUPPORTING MATERIALS COPYRIGHT (C) 1982, 1996 BY COMPUTER
-FILE STATISTICS - CA-EASYTRIEVE PLUS 6.2 9606-29/05/01-11.03-JSN00031
CLIANT
8
INPUT
SAM FIX
BLK
80
CLINOV
8
INPUT
SAM FIX
BLK
80
Os nomes de campo e/ou literais indicam os parmetros que so passados PARA a sub-rotina.
O nome do campo em RETURNS indica um campo numrico que deve receber um return-code
DA sub-rotina.
Exemplo 029
CALL
//DS029029 JOB ,NOME,CLASS=D,MSGCLASS=X
//*---------------------------------------------------------------//STEP1
EXEC PGM=EZTPA00
//RELAT1
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SORTMSG DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN
DD *
*-----------------------------------------------------------------* PROGRAMA EXEMPLO 029
*-----------------------------------------------------------------FILE RELAT1 PRINTER
*-----------------------------------------------------------------W-HOJE-AAMMDD
W
6 N
W-HOJE-AA W-HOJE-AAMMDD
2 N
W-HOJE-MM W-HOJE-AAMMDD +2 2 N
W-HOJE-DD W-HOJE-AAMMDD +4 2 N
W-TODAY
W
8 A
W-DAY
W-TODAY
2 N
W-MON
W-TODAY
+3 2 N
W-YEA
W-TODAY
+6 2 N
W-HORA
W
12 A
W-HH
W-HORA
2 N
W-MM
W-HORA
+3 2 N
W-SS
W-HORA
+6 2 N
*------------------------------------------WSR-BOOK
W
152 A
ZZ
WSR-BOOK
152 A
WSR-TAREFA
ZZ
2 N
WSR-NRAGENCI
ZZ +2
5 N
WSR-DATA1
ZZ +7
8 N
WSR-DATA1-SS
ZZ +7
2 N
EASYTRIEVE
12 Uso de sub-programas (comando Call)
WSR-DATA1-AAMMDD
ZZ +9
6 N
WSR-DATA2
ZZ +15
8 N
WSR-DATA2-SS
ZZ +15
2 N
WSR-DATA2-AAMMDD
ZZ +17
8 N
WSR-DIAUTIL
ZZ +23
1 A
WSR-DIASCORR
ZZ +24
6 N
WSR-DIFD
ZZ +24
6 N
WSR-DIASCORRUTIL
ZZ +30
6 N
WSR-SADOFE
ZZ +36
1 A
WSR-DIASEM
ZZ +37
1 N
WSR-DIASEMANA
ZZ +38
7 A
WSR-DIAUTILAFER
ZZ +45
8 N
WSR-DIAUTILDFER
ZZ +53
8 N
WSR-DTJULIANA
ZZ +61
8 A
WSR-ALOCADO
ZZ +69
1 N
WSR-DIASCORRUTIL1 ZZ +70
6 N
WSR-FILLER
ZZ +76
43 A
WSR-RC
ZZ +119
3 N
WSR-MENSAGEM
ZZ +122 30 A
*-----------------------------------------------------------------* PROCEDIMENTOS
*-----------------------------------------------------------------JOB INPUT NULL
W-TODAY = SYSDATE
W-HORA = SYSTIME
*
W-HOJE-AA = W-YEA
W-HOJE-MM = W-MON
W-HOJE-DD = W-DAY
*
MOVE 20
TO WSR-DATA1-SS
MOVE 010101
TO WSR-DATA1-AAMMDD
MOVE 20
TO WSR-DATA2-SS
MOVE W-HOJE-AAMMDD
TO WSR-DATA2-AAMMDD
MOVE 03 TO WSR-TAREFA
. * INDICA PARA CALCULAR DIAS CORRIDOS
CALL UTDT01 USING WSR-BOOK
IF
WSR-RC NE 0 3 4
DISPLAY 'WSR - ERRO CALCULO !!! '
DISPLAY 'WSR - DATA-1
= ' WSR-DATA1
DISPLAY 'WSR - DATA-2
= ' WSR-DATA2
RETURN-CODE = 4
END-IF
*
DIF-OK
WSR-DIFD = WSR-DIFD + 1
DISPLAY RELAT1 '*********************************************'
DISPLAY RELAT1 'DATA=' W-TODAY '
HORA=' W-HORA
DISPLAY RELAT1 'DATA JULIANA = ' WSR-DIFD
DISPLAY RELAT1 '*********************************************'
*
STOP
//SAIDAS DD *
*********************************************
DATA=29/05/01
HORA=11.07.24
DATA JULIANA = 000149
*********************************************
EASYTRIEVE
12 Uso de sub-programas (comando Call)
A
A
N
A
A
A
A
A
A
A
A
A
A
A
A
A
OCCURS 12
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
01JANEIRO
02FEVEREIRO
03MARCO
04ABRIL
05MAIO
06JUNHO
07JULHO
08AGOSTO
09SETEMBRO
10OUTUBRO
11NOVEMBRO
12DEZEMBRO
EASYTRIEVE
13 Tabelas : declarao e referncia no processamento
Outro exemplo :
TB-MESES
W 132
A
TB-1MES TB-MESES
11
A OCCURS 12
TB-CODM TB-1MES
2
N
TB-EXTM TB-1MES
+002 9
A
TB-MES01 TB-MESES
11 A VALUE +
01JANEIRO 02FEVEREIRO03MARCO
04ABRIL
07JULHO
08AGOSTO
09SETEMBRO 10OUTUBRO
.
.
.
WIX = 1
PROXCODMES
IF WIX
GT 12
GO TO MESEXTOK
END-IF
IF W-MON NE TB-CODM (WIX)
WIX = WIX + 1
GO TO PROXCODMES
ELSE
WEXTMES = TB-EXTM (WIX)
END-IF
MESEXTOK
05MAIO
06JUNHO
+
11NOVEMBRO 12DEZEMBRO
Exemplo 030
Tabelas
//DS029030 JOB ,NOME,CLASS=D,MSGCLASS=X
//*---------------------------------------------------------------//STEP1
EXEC PGM=EZTPA00
//RELAT
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 030
********************************************************
FILE RELAT PRINTER
*-----------------------------------------------------------------* VARIAVEIS DE TRABALHO
*-----------------------------------------------------------------WIX
W
7 N
WEXTMES
W
9 A
W-HOJE-AAMMDD
W
6 N
W-HOJE-AA W-HOJE-AAMMDD
2 N
W-HOJE-MM W-HOJE-AAMMDD +2 2 N
W-HOJE-DD W-HOJE-AAMMDD +4 2 N
W-TODAY
W
8 A
EASYTRIEVE
13 Tabelas : declarao e referncia no processamento
W-DAY
W-TODAY
2 N
W-MON
W-TODAY
+3 2 N
W-YEA
W-TODAY
+6 2 N
W-HORA
W
12 A
W-HH
W-HORA
2 N
W-MM
W-HORA
+3 2 N
W-SS
W-HORA
+6 2 N
*------------------------------------------TB-MESES
W
132
A VALUE +
'01JANEIRO +
02FEVEREIRO+
03MARCO
+
04ABRIL
+
05MAIO
+
06JUNHO
+
07JULHO
+
08AGOSTO
+
09SETEMBRO +
10OUTUBRO +
11NOVEMBRO +
12DEZEMBRO '
TB-1MES TB-MESES
11
A OCCURS 12
TB-CODM TB-1MES
2
N
TB-EXTM TB-1MES
+002 9
A
*------------------------------------------TB-DEMO-KEY
W
4
A OCCURS 8000
TB-DEMO-MAX
W
4
N VALUE 8000
TB-DEMO-TEM
W
4
N
TB-IND
W
4
N
TB-PROX
W
4
N
W-ARG
W
4
A
W-KEY
W
4
A
W-COMPS
W
7
N
W-TROCOU
W
4
N
W-VARREU
W
4
N
W-ESQ
W
4
N
W-DIR
W
4
N
W-MEIO
W
4
N
*------------------------------------------TB-DEMO2-ITEM
W
4
A OCCURS 500 INDEX TB-DEMO2-IND
TB-DEMO2-MAX
W
4
N VALUE 500
* SE TEM INDEX NAO PRECISA DEFINIR TB-DEMO2-IND; EH AUTOMATICO
*-----------------------------------------------------------------* PROCEDIMENTOS
*-----------------------------------------------------------------JOB INPUT NULL START INICIALIZAR FINISH FINALIZAR
* --------------------------------* CONSTROI TABELA DEMO2 COM INDEX DEFINIDO AUTOMATICAMENTE
* --------------------------------DISPLAY RELAT '-------- TB-DEMO2-------------'
VOLTADEMO2
TB-DEMO2-IND = TB-DEMO2-IND + 1
IF TB-DEMO2-IND GT TB-DEMO2-MAX
GO TO TBDEMO2OK
ELSE
TB-DEMO2-ITEM (TB-DEMO2-IND) = TB-DEMO2-IND
GO TO VOLTADEMO2
EASYTRIEVE
13 Tabelas : declarao e referncia no processamento
END-IF
TBDEMO2OK
TB-DEMO2-IND = TB-DEMO2-IND - 1
DISPLAY RELAT TB-DEMO2-IND ' ITENS PREENCHIDOS'
DISPLAY RELAT TB-DEMO2-MAX ' ITENS MAX'
DISPLAY RELAT 'ITEM 1=' TB-DEMO2-ITEM (1)
DISPLAY RELAT 'ITEM ' TB-DEMO2-IND '=' TB-DEMO2-ITEM (TB-DEMO2-IND)
* --------------------------------* COLOCA CONTEUDO NA TABELA
* --------------------------------DISPLAY RELAT '-------- TB-DEMO -------------'
VOLTAPOR
TB-IND = TB-IND + 1
IF TB-IND GT TB-DEMO-MAX - 10
GO TO CONSTRUIU
ELSE
TB-DEMO-KEY (TB-IND) = TB-IND
GO TO VOLTAPOR
END-IF
CONSTRUIU
TB-DEMO-TEM = TB-IND - 1
DISPLAY RELAT TB-DEMO-TEM ' ITENS PREENCHIDOS; +
' TB-DEMO-MAX ' ITENS MAX' +
' ITEM 1=' TB-DEMO-KEY (1)
+
' ITEM ' TB-DEMO-TEM '=' TB-DEMO-KEY (TB-DEMO-TEM)
* --------------------------------* CLASSIFICA NA MEMORIA ORDEM CRESCENTE
* --------------------------------DISPLAY RELAT '-------- CLASSIFICA ----------'
VOLTAVARRE
W-VARREU = W-VARREU + 1
TB-IND = 0
W-TROCOU = 0
VESETROCA
TB-IND = TB-IND + 1
IF TB-IND GE TB-DEMO-MAX - 10
GO TO VARREU
ELSE
TB-PROX = TB-IND + 1
* IF TB-DEMO-KEY (TB-IND) LT TB-DEMO-KEY (TB-PROX) SE FOSSE DECRESC.
IF TB-DEMO-KEY (TB-IND) GT TB-DEMO-KEY (TB-PROX)
W-KEY = TB-DEMO-KEY (TB-IND)
TB-DEMO-KEY (TB-IND) = TB-DEMO-KEY (TB-PROX)
TB-DEMO-KEY (TB-PROX) = W-KEY
W-TROCOU = W-TROCOU + 1
END-IF
GO TO VESETROCA
END-IF
VARREU
IF W-TROCOU NE 0
GO TO VOLTAVARRE
END-IF
DISPLAY RELAT
+
W-VARREU ' VARRIDAS. TAB CLASSIFICADA.' +
' ITEM 1=' TB-DEMO-KEY (1)
+
' ITEM ' TB-DEMO-TEM '=' TB-DEMO-KEY (TB-DEMO-TEM)
* ---------------------------------
EASYTRIEVE
13 Tabelas : declarao e referncia no processamento
* FAZ PESQUISA SEQUENCIAL NA TABELA
* --------------------------------DISPLAY RELAT '-------- PESQUISA SEQUENCIAL --------'
S-PESQ
W-ARG = '4001'
TB-IND = 0
W-COMPS = 0
VOLTAPESQS
TB-IND = TB-IND + 1
IF TB-IND GT TB-DEMO-MAX OR +
TB-IND GT TB-DEMO-TEM
GO TO S-NAO-ACHOU
ELSE
W-COMPS = W-COMPS + 1
IF TB-DEMO-KEY (TB-IND) EQ W-ARG
GO TO S-ACHOU
END-IF
END-IF
GO TO VOLTAPESQS
S-ACHOU
DISPLAY RELAT
+
'BUSCA SEQ:ARGUMENTO ACHADO
=' W-ARG
+
' ITEM=' TB-IND
+
' COMPARACOES=' W-COMPS
GO TO B-PESQ
S-NAO-ACHOU
DISPLAY RELAT
+
'BUSCA SEQ:ARGUMENTO NAO ACHADO=' W-ARG
+
' COMPARACOES=' W-COMPS
* --------------------------------* FAZ PESQUISA BINARIA
NA TABELA
* --------------------------------DISPLAY RELAT '-------- PESQUISA BINARIA --------'
B-PESQ
W-ARG = '3999'
PERFORM PESQBIN
W-ARG = '4000'
PERFORM PESQBIN
W-ARG = '4001'
PERFORM PESQBIN
W-ARG = '4002'
PERFORM PESQBIN
W-ARG = '0000'
PERFORM PESQBIN
W-ARG = '9999'
PERFORM PESQBIN
STOP
*-----------------------------------------------------------------* PESQUISA BINARIA
*-----------------------------------------------------------------PESQBIN. PROC
*
W-ESQ = 1
W-DIR = TB-DEMO-TEM
W-MEIO INTEGER = W-DIR / 2
W-MEIO = W-MEIO + 1
TB-IND = 0
EASYTRIEVE
13 Tabelas : declarao e referncia no processamento
W-COMPS = 0
* ------------------- PROCURA NO RANGE
VE-NO-RANGE
IF W-ARG LT TB-DEMO-KEY (W-ESQ) OR +
W-ARG GT TB-DEMO-KEY (W-DIR)
GO TO B-NAO-ACHOU
END-IF
W-COMPS = W-COMPS + 1
* ------ CALCULA O MEIO
W-MEIO INTEGER = ((W-ESQ + W-DIR) / 2)
DISPLAY RELAT 'W-ESQ=' W-ESQ ' W-DIR=' W-DIR ' W-MEIO=' W-MEIO
IF W-ARG EQ TB-DEMO-KEY (W-MEIO)
TB-IND = W-MEIO
GO TO B-ACHOU
END-IF
IF W-ARG EQ TB-DEMO-KEY (W-ESQ)
TB-IND = W-ESQ
GO TO B-ACHOU
END-IF
IF W-ARG EQ TB-DEMO-KEY (W-DIR)
TB-IND = W-DIR
GO TO B-ACHOU
END-IF
IF W-ARG LT TB-DEMO-KEY (W-MEIO)
GO TO ESTAH-NA-ESQUERDA
ELSE
GO TO ESTAH-NA-DIREITA
END-IF
* ------ SE ESTIVER, ESTAH NA PARTE DA ESQUERDA
ESTAH-NA-ESQUERDA
W-DIR = W-MEIO
IF W-MEIO GT TB-DEMO-TEM
W-MEIO = TB-DEMO-TEM
END-IF
GO TO VE-NO-RANGE
* ------ SE ESTIVER, ESTAH NA PARTE DA DIREITA
ESTAH-NA-DIREITA
W-ESQ = W-MEIO
IF W-ESQ LT 1
W-ESQ = 1
END-IF
GO TO VE-NO-RANGE
* ------ ACHOU
B-ACHOU
DISPLAY RELAT
+
'BUSCA BIN:ARGUMENTO ACHADO
=' W-ARG
+
' ITEM=' TB-IND
+
' COMPARACOES=' W-COMPS
GO TO PESQ-OK
* ------ NAO ACHOU
B-NAO-ACHOU
DISPLAY RELAT
+
'BUSCA SEQ:ARGUMENTO NAO ACHADO=' W-ARG
+
' COMPARACOES=' W-COMPS
PESQ-OK.
*
END-PROC
EASYTRIEVE
13 Tabelas : declarao e referncia no processamento
*-----------------------------------------------------------------* INICIALIZACAO
*-----------------------------------------------------------------INICIALIZAR. PROC
W-TODAY = SYSDATE
W-HORA = SYSTIME
*
W-HOJE-AA = W-YEA
W-HOJE-MM = W-MON
W-HOJE-DD = W-DAY
*
WIX = 1
PROXCODMES
IF WIX
GT 12
GO TO MESEXTOK
END-IF
IF W-MON NE TB-CODM (WIX)
WIX = WIX + 1
GO TO PROXCODMES
ELSE
WEXTMES = TB-EXTM (WIX)
END-IF
MESEXTOK
*
END-PROC
*-----------------------------------------------------------------* FINALIZACAO
*-----------------------------------------------------------------FINALIZAR. PROC
DISPLAY RELAT '*********************************************'
DISPLAY RELAT 'DATA=' W-TODAY '
HORA=' W-HORA
DISPLAY RELAT '
' W-DAY '/' WEXTMES '/' W-YEA
DISPLAY '*********************************************'
*
END-PROC
//SAIDAS DD *
-------- TB-DEMO2------------500 ITENS PREENCHIDOS
0500 ITENS MAX
ITEM 1=0001
ITEM
500 =0500
-------- TB-DEMO ------------7990 ITENS PREENCHIDOS; 8000 ITENS MAX ITEM 1=0001 ITEM 7990=7990
-------- CLASSIFICA ---------0001 VARRIDAS. TAB CLASSIFICADA. ITEM 1=0001 ITEM 7990=7990
-------- PESQUISA SEQUENCIAL -------BUSCA SEQ:ARGUMENTO ACHADO
=4001 ITEM=4001 COMPARACOES=0004001
W-ESQ=0001 W-DIR=7990 W-MEIO=3995
W-ESQ=3995 W-DIR=7990 W-MEIO=5992
W-ESQ=3995 W-DIR=5992 W-MEIO=4993
W-ESQ=3995 W-DIR=4993 W-MEIO=4494
W-ESQ=3995 W-DIR=4494 W-MEIO=4244
W-ESQ=3995 W-DIR=4244 W-MEIO=4119
W-ESQ=3995 W-DIR=4119 W-MEIO=4057
W-ESQ=3995 W-DIR=4057 W-MEIO=4026
W-ESQ=3995 W-DIR=4026 W-MEIO=4010
W-ESQ=3995 W-DIR=4010 W-MEIO=4002
EASYTRIEVE
13 Tabelas : declarao e referncia no processamento
W-ESQ=3995 W-DIR=4002 W-MEIO=3998
W-ESQ=3998 W-DIR=4002 W-MEIO=4000
W-ESQ=3998 W-DIR=4000 W-MEIO=3999
BUSCA BIN:ARGUMENTO ACHADO
=3999 ITEM=3999 COMPARACOES=0000013
W-ESQ=0001 W-DIR=7990 W-MEIO=3995
W-ESQ=3995 W-DIR=7990 W-MEIO=5992
W-ESQ=3995 W-DIR=5992 W-MEIO=4993
W-ESQ=3995 W-DIR=4993 W-MEIO=4494
W-ESQ=3995 W-DIR=4494 W-MEIO=4244
W-ESQ=3995 W-DIR=4244 W-MEIO=4119
W-ESQ=3995 W-DIR=4119 W-MEIO=4057
W-ESQ=3995 W-DIR=4057 W-MEIO=4026
W-ESQ=3995 W-DIR=4026 W-MEIO=4010
W-ESQ=3995 W-DIR=4010 W-MEIO=4002
W-ESQ=3995 W-DIR=4002 W-MEIO=3998
W-ESQ=3998 W-DIR=4002 W-MEIO=4000
BUSCA BIN:ARGUMENTO ACHADO
=4000 ITEM=4000 COMPARACOES=0000012
W-ESQ=0001 W-DIR=7990 W-MEIO=3995
W-ESQ=3995 W-DIR=7990 W-MEIO=5992
W-ESQ=3995 W-DIR=5992 W-MEIO=4993
W-ESQ=3995 W-DIR=4993 W-MEIO=4494
W-ESQ=3995 W-DIR=4494 W-MEIO=4244
W-ESQ=3995 W-DIR=4244 W-MEIO=4119
W-ESQ=3995 W-DIR=4119 W-MEIO=4057
W-ESQ=3995 W-DIR=4057 W-MEIO=4026
W-ESQ=3995 W-DIR=4026 W-MEIO=4010
W-ESQ=3995 W-DIR=4010 W-MEIO=4002
W-ESQ=3995 W-DIR=4002 W-MEIO=3998
W-ESQ=3998 W-DIR=4002 W-MEIO=4000
W-ESQ=4000 W-DIR=4002 W-MEIO=4001
BUSCA BIN:ARGUMENTO ACHADO
=4001 ITEM=4001 COMPARACOES=0000013
W-ESQ=0001 W-DIR=7990 W-MEIO=3995
W-ESQ=3995 W-DIR=7990 W-MEIO=5992
W-ESQ=3995 W-DIR=5992 W-MEIO=4993
W-ESQ=3995 W-DIR=4993 W-MEIO=4494
W-ESQ=3995 W-DIR=4494 W-MEIO=4244
W-ESQ=3995 W-DIR=4244 W-MEIO=4119
W-ESQ=3995 W-DIR=4119 W-MEIO=4057
W-ESQ=3995 W-DIR=4057 W-MEIO=4026
W-ESQ=3995 W-DIR=4026 W-MEIO=4010
W-ESQ=3995 W-DIR=4010 W-MEIO=4002
BUSCA BIN:ARGUMENTO ACHADO
=4002 ITEM=4002 COMPARACOES=0000010
BUSCA SEQ:ARGUMENTO NAO ACHADO=0000 COMPARACOES=0000000
BUSCA SEQ:ARGUMENTO NAO ACHADO=9999 COMPARACOES=0000000
*********************************************
DATA=30/05/01
HORA=11.59.16
30/MAIO
/01
14 Uso de DB2
Atravs da atividade JOB, pode-se efetuar a leitura (SELECT) de tabela DB2. Para tanto, deve-se
especificar na declarao da atividade JOB INPUT SQL, e, imediatamente aps, especificar o
comando SELECT desejado.
Observar que neste caso,
se houver uma nica linha ou mais que uma linha que atenda aos requisitos especificados,
para cada uma ser efetuado o processamento colocado aps o SELECT
se houver pelo menos uma nica linha que atenda aos requisitos especificados, aps o
processamento, se no for especificado em contrrio (como um STOP), ser efetuado um GO
TO JOB que far nova tentativa de obteno de uma nova linha.
quando no houver mais nenhuma linha que preencha os requisitos especificados, ser
efetuado um encerramento da atividade; portanto, o teste de fim automtico, e no adianta
ser colocado nos procedimentos do job aps o select.
no deve ser declarado cursor, nem open ou close.
O(s) critrio(s) de seleo para a entrada so especificados no comando SELECT que DEVE
estar imediatamente aps o JOB. A declarao de atividade feita como abaixo, indica input de
uma tabela SQL.
.
.
JOB INPUT SQL [START nome-proc1] [FINISH nome-proc2] [NAME nome-job]
SELECT coluna1 [, coluna2..... , colunan ] FROM nometabela +
[WHERE condio]
+
[ORDER coluna1 [... , colunan] ]
+
INTO :campo1 [ ... , campon]
.
.
EASYTRIEVE
14 Uso de DB2
Exemplo 031
Uso DB2
//DS029031 JOB CLASS=D,MSGCLASS=X,REGION=4M,COND=(00,NE)
//*----------------------------------------------------------------//EZDB2
EXEC PGM=EZTPA00
//*----------------------------------------------------------------//STEPLIB
INCLUDE MEMBER=STEPDES
//SORTWK1
DD UNIT=3390,SPACE=(TRK,(100,20),RLSE)
//EZTVFM
DD UNIT=3390,SPACE=(TRK,(100,20),RLSE)
//RELAT1
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 031
********************************************************
* ACESSA SYSCOLUMNS VIA JOB INPUT SQL E JOB NORMAL
* 1. ACESSO JOB INPUT SQL
COM LINHA OBTIDA DA TABELA
* 2. ACESSO JOB INPUT SQL
SEM LINHA OBTIDA DA TABELA
* 3. ACESSO JOB INPUT NORMAL COM LINHA OBTIDA DA TABELA
* 4. ACESSO JOB INPUT NORMAL SEM LINHA OBTIDA DA TABELA
********************************************************
*--------------------------* PARM PARA INDICAR QUAL BASE DE DADOS
*--------------------------PARM DB2SSID('DBD1')
*--------------------------* DECLARACAO FILE PRINTER
*--------------------------FILE RELAT1 PRINTER
*--------------------------* DECLARACAO AREAS DE TRABALHO
*--------------------------WLL01
W 05 N MASK('ZZZZ9')
WLL99
W 05 N MASK('ZZZZ9')
TBNAME-X
W 09 A
VALUE '
'
WOPERACAO W 14 A
WSQLCODE
W 8 N 0 MASK ('ZZZZZZZ9-')
WCOLUNAS
W 4 N
MASK ('ZZZ9')
COLNO-X
W 2 B 0
*--------------------------* DECLARACAO CURSOR PARA SYSCOLUMNS COM COLNO=01
* USADO SOMENTE PELA ATIVIDADE JOB INPUT NULL CURSOR01
*--------------------------SQL DECLARE CURSOR01 CURSOR FOR SELECT
+
TBNAME, COLNO
+
FROM SYSIBM.SYSCOLUMNS
+
WHERE TBNAME = 'SYSCOLUMNS'
+
AND COLNO
= 01
+
ORDER BY TBNAME
*--------------------------* DECLARACAO CURSOR PARA SYSCOLUMNS COM COLNO=99
* USADO SOMENTE PELA ATIVIDADE JOB INPUT NULL CURSOR99
EASYTRIEVE
14 Uso de DB2
*--------------------------SQL DECLARE CURSOR99 CURSOR FOR SELECT
+
TBNAME, COLNO
+
FROM SYSIBM.SYSCOLUMNS
+
WHERE TBNAME = 'SYSCOLUMNS'
+
AND COLNO
= 99
+
ORDER BY TBNAME
**********************************************************************
* ATIVIDADE JOB INPUT SQL PARA COLNO=01
**********************************************************************
JOB INPUT SQL START COMECAR FINISH TERMINAR
SELECT
TBNAME, COLNO
+
FROM SYSIBM.SYSCOLUMNS
+
WHERE TBNAME = 'SYSCOLUMNS'
+
AND COLNO
= 01
+
ORDER BY TBNAME
+
INTO :TBNAME-X, :COLNO-X
WLL01 = WLL01 + 1
DISPLAY 'JOB INPUT SQL CURSOR01 ACHOU LINHA'
GO TO JOB
*-------------------*
* TESTA ERRO DB2
*-------------------*
ERRO-DB2. PROC
DISPLAY 'JOB INPUT SQL CURSOR01 VAI TESTAR SQLCODE'
IF SQLCODE NE 0 100
DISPLAY 'JOB INPUT SQL CURSOR01 ERRO. SELECT SQLCODE = ' SQLCODE
ELSE
DISPLAY 'JOB INPUT SQL CURSOR01 OK . SELECT SQLCODE = ' SQLCODE
END-IF
END-PROC
*-------------------*
* COMECAR / TERMINAR
*-------------------*
COMECAR. PROC
DISPLAY 'JOB INPUT SQL CURSOR01 VAI COMECAR'
END-PROC
TERMINAR. PROC
DISPLAY 'JOB INPUT SQL CURSOR01 VAI TERMINAR. LINHAS OBTIDAS = ' WLL01
END-PROC
*
**********************************************************************
* ATIVIDADE JOB INPUT SQL PARA COLNO=99
**********************************************************************
JOB INPUT SQL START COMECAR FINISH TERMINAR
SELECT
TBNAME, COLNO
+
FROM SYSIBM.SYSCOLUMNS
+
WHERE TBNAME = 'SYSCOLUMNS'
+
AND COLNO
= 99
+
ORDER BY TBNAME
+
INTO :TBNAME-X, :COLNO-X
WLL99 = WLL99 + 1
DISPLAY 'JOB INPUT SQL CURSOR99 ACHOU LINHA'
GO TO JOB
*-------------------*
* TESTA ERRO DB2
*-------------------*
EASYTRIEVE
14 Uso de DB2
ERRO-DB2. PROC
DISPLAY 'JOB INPUT SQL CURSOR99 VAI TESTAR SQLCODE'
IF SQLCODE NE 0 100
DISPLAY 'JOB INPUT SQL CURSOR99 ERRO. SELECT SQLCODE = ' SQLCODE
ELSE
DISPLAY 'JOB INPUT SQL CURSOR99 OK . SELECT SQLCODE = ' SQLCODE
END-IF
END-PROC
*-------------------*
* COMECAR / TERMINAR
*-------------------*
COMECAR. PROC
DISPLAY 'JOB INPUT SQL CURSOR99 VAI COMECAR'
END-PROC
TERMINAR. PROC
DISPLAY 'JOB INPUT SQL CURSOR99 VAI TERMINAR. LINHAS OBTIDAS = ' WLL99
END-PROC
**********************************************************************
* ATIVIDADE JOB INPUT NULL CURSOR01
**********************************************************************
JOB INPUT NULL
DISPLAY 'JOB INPUT NULL CURSOR01 VAI COMECAR'
*----------------------------------------* PROCESSA COM CURSOR01
*----------------------------------------TBNAME-X = 'SYSCOLUMNS'
WSQLCODE = 0
CURSOR01-OPEN
WOPERACAO = 'CURSOR01 OPEN'
SQL OPEN CURSOR01
PERFORM ERRO-DB2
CURSOR01-FETCH
WLL01 = 0
DO WHILE WSQLCODE EQ 0
WOPERACAO = 'CURSOR01 FETCH'
SQL FETCH CURSOR01 INTO :TBNAME-X, :COLNO-X
PERFORM ERRO-DB2
IF WSQLCODE NE 0
IF WCOLUNAS NE 0
GO TO CURSOR01-CLOSE
END-IF
ELSE
WLL01 = WLL01 + 1
DISPLAY 'JOB INPUT NULL CURSOR01 ACHOU LINHA'
END-IF
END-DO
CURSOR01-CLOSE
WOPERACAO = 'CURSOR01 CLOSE'
SQL CLOSE CURSOR01
PERFORM ERRO-DB2
*
DISPLAY 'JOB INPUT NULL CURSOR01. LINHAS OBTIDAS = ' WLL01
STOP
*
EASYTRIEVE
14 Uso de DB2
*-------------------*
* TESTA ERRO DB2
*-------------------*
ERRO-DB2. PROC
IF SQLCODE NE 0 100
DISPLAY 'JOB INPUT NULL ' WOPERACAO ' ERRO. SQLCODE = ' SQLCODE
ELSE
DISPLAY 'JOB INPUT NULL ' WOPERACAO ' OK.
SQLCODE = ' SQLCODE
END-IF
WSQLCODE = SQLCODE
END-PROC
*
**********************************************************************
* ATIVIDADE JOB INPUT NULL CURSOR99
**********************************************************************
JOB INPUT NULL
DISPLAY 'JOB INPUT NULL CURSOR99 VAI COMECAR'
*----------------------------------------* PROCESSA COM CURSOR99
*----------------------------------------TBNAME-X = 'SYSCOLUMNS'
WSQLCODE = 0
CURSOR99-OPEN
WOPERACAO = 'CURSOR99 OPEN'
SQL OPEN CURSOR99
PERFORM ERRO-DB2
CURSOR99-FETCH
WLL99 = 0
DO WHILE WSQLCODE EQ 0
WOPERACAO = 'CURSOR99 FETCH'
SQL FETCH CURSOR99 INTO :TBNAME-X, :COLNO-X
PERFORM ERRO-DB2
IF WSQLCODE NE 0
IF WCOLUNAS NE 0
GO TO CURSOR99-CLOSE
END-IF
ELSE
WLL99 = WLL99 + 1
DISPLAY 'JOB INPUT NULL CURSOR99 ACHOU LINHA'
END-IF
END-DO
CURSOR99-CLOSE
WOPERACAO = 'CURSOR99 CLOSE'
SQL CLOSE CURSOR99
PERFORM ERRO-DB2
*
DISPLAY 'JOB INPUT NULL CURSOR99. LINHAS OBTIDAS = ' WLL99
STOP
*
*-------------------*
* TESTA ERRO DB2
*-------------------*
ERRO-DB2. PROC
IF SQLCODE NE 0 100
EASYTRIEVE
14 Uso de DB2
DISPLAY 'JOB INPUT NULL ' WOPERACAO ' ERRO. SQLCODE =
ELSE
DISPLAY 'JOB INPUT NULL ' WOPERACAO ' OK.
SQLCODE =
END-IF
WSQLCODE = SQLCODE
END-PROC
//SAIDAS DD *
JOB INPUT SQL CURSOR01 VAI COMECAR
JOB INPUT SQL CURSOR01 ACHOU LINHA
JOB INPUT SQL CURSOR01 VAI TERMINAR. LINHAS OBTIDAS =
JOB INPUT SQL CURSOR99 VAI COMECAR
JOB INPUT SQL CURSOR99 VAI TERMINAR. LINHAS OBTIDAS =
JOB INPUT NULL CURSOR01 VAI COMECAR
JOB INPUT NULL CURSOR01 OPEN OK.
SQLCODE =
JOB INPUT NULL CURSOR01 FETCH OK.
SQLCODE =
JOB INPUT NULL CURSOR01 ACHOU LINHA
JOB INPUT NULL CURSOR01 FETCH OK.
SQLCODE =
JOB INPUT NULL CURSOR01 CLOSE OK.
SQLCODE =
JOB INPUT NULL CURSOR01. LINHAS OBTIDAS =
1
JOB INPUT NULL CURSOR99 VAI COMECAR
JOB INPUT NULL CURSOR99 OPEN OK.
SQLCODE =
JOB INPUT NULL CURSOR99 FETCH OK.
SQLCODE =
JOB INPUT NULL CURSOR99 CLOSE OK.
SQLCODE =
JOB INPUT NULL CURSOR99. LINHAS OBTIDAS =
0
' SQLCODE
' SQLCODE
1
0
100
100
EASYTRIEVE
14 Uso de DB2
Exemplo 032
Uso DB2
//DS029032 JOB CLASS=D,MSGCLASS=X,REGION=4M,COND=(00,NE)
//*----------------------------------------------------------------//* INFORMAR NOME DA TABELA CUJA ESTRUTURA SERAH LISTADA, VIA PARM
//*----------------------------------------------------------------//EZDB2
EXEC PGM=EZTPA00,PARM='ACT0001'
//*----------------------------------------------------------------//STEPLIB
INCLUDE MEMBER=STEPDES
//SORTWK1
DD UNIT=3390,SPACE=(TRK,(100,20),RLSE)
//EZTVFM
DD UNIT=3390,SPACE=(TRK,(100,20),RLSE)
//REL01
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 032
********************************************************
* LISTA ESTRUTURA DA TABELA SOLICITADA VIA PARM,
* ATRAVES DE JOB INPUT SQL
********************************************************
*-------------------------------------------------* PARM PARA INDICAR QUAL BASE DE DADOS
*-------------------------------------------------PARM DB2SSID('DBD1')
*-------------------------------------------------* DECLARACAO FILE PRINTER
*-------------------------------------------------FILE REL01 PRINTER
*-------------------------------------------------* DECLARACAO AREAS DE TRABALHO
*-------------------------------------------------*--------------------------* AREAS DE TRABALHO GERAIS
*--------------------------*
* WORK PARA COLUNAS DA TABELA SYSKEYS
*
FLAG
W
1 N
IX
W
3 N
SB
W
3 N
AX-STEP-X
W
20 A
FLAG-OK
W
2 A
*--------------------------* WORK PARA COLUNAS DA TABELA SYSKEYS
*--------------------------T01-DATA-X
W
08 A
TBNAME-X
W
09 A
NAME-X
W
09 A
COLNO-B
W
2 B 0
SCALE-B
W
2 B 0
COLTYPE-X
W
08 A
LENGTH-B
W
2 B 0
EASYTRIEVE
14 Uso de DB2
NULLS-X
W
1 A
REMARKS-X
W
45 A
REMARKS-Y REMARKS-X 22 A
IXNAME-X
W
09 A
COLNAME-X
W
09 A
ORDERING-X
W
01 A
COLNO1-B
W
2 B 0
REFTBNAME-X W
08 A
CH-TBNAME
W
10 A
*--------------------------* TABELA DE MEMORIA PARA RECEBER TABELA DB2 SYSKEYS
*--------------------------TAB
W
111 A OCCURS 100
TB-TBNAME-X
TAB
9 A
HEADING
TB-NAME-X
TAB +09 9 A
HEADING
TB-COLNO-B
TAB +18 3 N MASK ('ZZ9') HEADING
TB-COLTYPE-X
TAB +21 8 A
HEADING
TB-TAMANHO-X
TAB +29 6 A
HEADING
TB-NULLS-X
TAB +35 1 A
HEADING
TB-REMARKS-X
TAB +36 45 A
HEADING
TB-REMARKS-Y
TAB +36 22 A
HEADING
TB-IXNAME-X
TAB +81 9 A
HEADING
TB-COLNAME-X
TAB +90 9 A
HEADING
TB-ORDERING-X TAB +99 1 A
HEADING
TB-COLNO1-B
TAB +100 3 N MASK ('ZZ9')
HEADING
TB-RELNAME-X
TAB +103 8 A
HEADING
*--------------------------* AREA PARA RECEBER PARM COM NOME TABELA A LISTAR
*--------------------------PARM-AREA
W 12 A
PARM-LENGTH PARM-AREA
2 B 0
PARM-DADOS
PARM-AREA +2 10 A
*--------------------------* AREA PARA EDICAO CARACTERISTICAS COLUNA DECIMAL
*--------------------------AX-TAMANHO-X
W 6 A
AX-LENGTH-B AX-TAMANHO-X
3 A
AX-LENGTH1-B AX-LENGTH-B
1 A
AX-LENGTH2-B AX-LENGTH-B +1 1 A
AX-LENGTH3-B AX-LENGTH-B +2 1 A
AX-PONTO-X
AX-TAMANHO-X
+3 1 A
AX-SCALE-B
AX-TAMANHO-X
+4 2 A
*
*--------------------------* DECLARACAO CURSOR PARA SYSKEYS
*--------------------------*
SQL
DECLARE C01 CURSOR FOR SELECT
+
IXNAME,
+
COLNAME,
+
ORDERING,
+
COLNO
+
FROM SYSIBM.SYSKEYS
+
WHERE
IXNAME = :IXNAME-X
+
ORDER BY COLNO
*
*---------------------------
('TAB'
('COL'
('SQ'
('TP'
('TAM'
('NUL'
('DESC'
('DESC'
('IND'
('COL'
('ORD'
('SQ'
('RELAC'
'---')
'---')
'--')
'--')
'---')
'---')
'----')
'----')
'---')
'---')
'---')
'--')
'-----')
EASYTRIEVE
14 Uso de DB2
* DECLARACAO CURSOR PARA SYSINDEXES
*--------------------------*
SQL
DECLARE C02 CURSOR FOR SELECT
+
NAME
+
FROM SYSIBM.SYSINDEXES
+
WHERE
TBNAME = :TBNAME-X
*
*--------------------------* DECLARACAO CURSOR PARA SYSRELS
*--------------------------*
SQL
DECLARE C03 CURSOR FOR SELECT
+
REFTBNAME
+
FROM SYSIBM.SYSRELS
+
WHERE
TBNAME = :TBNAME-X AND +
CREATOR = 'DDS'
*
**********************************************************************
* ATIVIDADE JOB
**********************************************************************
JOB INPUT SQL
START INICIAR FINISH FINALIZAR
*
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
FLAG-OK = 'OK'
IF FLAG = 0
PERFORM PEGA-INDEXES-RELACAO
END-IF
SB = SB + 1
IF
COLTYPE-X = 'DECIMAL'
IF
SCALE-B > 0
AX-LENGTH-B
AX-SCALE-B
AX-PONTO-X
IF AX-LENGTH1-B
=
=
=
=
LENGTH-B
SCALE-B
'.'
'0'
EASYTRIEVE
14 Uso de DB2
ELSE
AX-LENGTH1-B
END-IF
IF AX-LENGTH2-B
AX-LENGTH2-B
END-IF
IF AX-LENGTH3-B
AX-LENGTH3-B
END-IF
TB-TAMANHO-X(SB)
= ' '
= '0'
= ' '
= '0'
= ' '
= AX-TAMANHO-X
AX-LENGTH-B
AX-SCALE-B
AX-PONTO-X
IF AX-LENGTH1-B
AX-LENGTH1-B
END-IF
IF AX-LENGTH2-B
AX-LENGTH2-B
END-IF
IF AX-LENGTH3-B
AX-LENGTH3-B
END-IF
TB-TAMANHO-X(SB)
END-IF
=
=
=
=
=
AX-LENGTH-B
AX-SCALE-B
AX-PONTO-X
IF AX-LENGTH1-B
AX-LENGTH1-B
END-IF
IF AX-LENGTH2-B
AX-LENGTH2-B
END-IF
IF AX-LENGTH3-B
AX-LENGTH3-B
END-IF
TB-TAMANHO-X(SB)
=
=
=
=
=
ELSE
LENGTH-B
' '
' '
'0'
' '
= '0'
= ' '
= '0'
= ' '
= AX-TAMANHO-X
LENGTH-B
' '
' '
'0'
' '
= '0'
= ' '
= '0'
= ' '
= AX-TAMANHO-X
END-IF
TB-TBNAME-X(SB) =
TB-NAME-X(SB)
=
TB-COLNO-B(SB)
=
TB-COLTYPE-X(SB) =
TB-NULLS-X (SB) =
TB-REMARKS-X (SB)=
TBNAME-X
NAME-X
COLNO-B
COLTYPE-X
NULLS-X
REMARKS-X
*---------------------------------------------------------------------*
*
ACESSA TABELA DE INDICES
*
*---------------------------------------------------------------------*
PEGA-INDEXES-RELACAO. PROC
AX-STEP-X = 'OPEN C02'
SQL OPEN C02
PERFORM ERRO-DB2
EASYTRIEVE
14 Uso de DB2
IX = 0
DO WHILE SQLCODE = 0
PERFORM PEGA-SYSINDEXES
END-DO
AX-STEP-X = 'CLOSE C02'
SQL CLOSE C02
PERFORM ERRO-DB2
AX-STEP-X = 'OPEN C03'
SQL OPEN C03
PERFORM ERRO-DB2
IX = 0
DO WHILE SQLCODE = 0
PERFORM PEGA-RELACAO
END-DO
AX-STEP-X = 'CLOSE C03'
SQL CLOSE C03
PERFORM ERRO-DB2
FLAG = 1
END-PROC
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
PEGA-SYSINDEXES. PROC
AX-STEP-X = 'FETCH C02'
SQL FETCH C02
+
INTO
+
:IXNAME-X
PERFORM ERRO-DB2
IF SQLCODE = 0
SQL OPEN C01
DO WHILE SQLCODE = 0
PERFORM PEGA-SYSKEYS
END-DO
SQL CLOSE C01
END-IF
*
END-PROC
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
PEGA-SYSKEYS. PROC
AX-STEP-X = 'FETCH C01'
SQL FETCH C01
+
INTO
+
:IXNAME-X,
:COLNAME-X,
:ORDERING-X,
:COLNO1-B
+
+
+
EASYTRIEVE
14 Uso de DB2
PERFORM ERRO-DB2
IF SQLCODE = 0
IX = IX + 1
TB-IXNAME-X(IX) = IXNAME-X
TB-COLNAME-X(IX) = COLNAME-X
TB-ORDERING-X(IX) = ORDERING-X
TB-COLNO1-B(IX) = COLNO1-B
END-IF
END-PROC
*---------------------------------------------------------------------*
*
ACESSA TABELA DE RELACIONAMENTO
*
*---------------------------------------------------------------------*
PEGA-RELACAO. PROC
AX-STEP-X = 'FETCH C03'
SQL FETCH C03
+
INTO
+
:REFTBNAME-X
PERFORM ERRO-DB2
IF SQLCODE = 0
IX = IX + 1
TB-RELNAME-X(IX) = REFTBNAME-X
END-IF
END-PROC
*---------------------------------------------------------------------*
*
VERIFICA PARAMETROS
*
*---------------------------------------------------------------------*
INICIAR. PROC
CALL EZTPX01 USING (PARM-REGISTER PARM-AREA)
IF PARM-LENGTH EQ 0
DISPLAY ' '
DISPLAY '+-----------------------------------------------+'
DISPLAY '|
TABELA NAO INFORMADA VIA PARM
|'
DISPLAY '+-----------------------------------------------+'
DISPLAY ' '
STOP
END-IF
CH-TBNAME = PARM-DADOS
T01-DATA-X = SYSDATE
IX = 1
DO WHILE IX LE 100
TB-TBNAME-X (IX) = ' '
TB-NAME-X
(IX) = ' '
TB-COLNO-B
(IX) = 0
TB-COLTYPE-X (IX) = ' '
TB-TAMANHO-X (IX) = ' '
TB-NULLS-X
(IX) = ' '
TB-REMARKS-X (IX) = ' '
TB-IXNAME-X (IX) = ' '
TB-COLNAME-X (IX) = ' '
TB-RELNAME-X (IX) = ' '
TB-ORDERING-X(IX) = ' '
TB-COLNO1-B (IX) = 0
IX = IX + 1
EASYTRIEVE
14 Uso de DB2
END-DO
IX = 0
END-PROC
*---------------------------------------------------------------------*
*
FUNALIZA DESCARREGA TABELA E IMPRIME
*
*---------------------------------------------------------------------*
FINALIZAR. PROC
IF FLAG-OK EQ ' '
DISPLAY ' '
DISPLAY '+-----------------------------------------------+'
DISPLAY '|
TABELA INEXISTENTE NO BANCO DE DADOS
|'
DISPLAY '+-----------------------------------------------+'
DISPLAY ' '
RETURN-CODE = 16
STOP
END-IF
IX = 1
DO WHILE IX LE 100
IF TB-TBNAME-X (IX) NE ' '
PRINT REL01
END-IF
IX = IX + 1
END-DO
END-PROC
*---------------------------------------------------------------------*
*
ROTINA DE ERRO DB2
*
*---------------------------------------------------------------------*
ERRO-DB2. PROC
IF SQLCODE NE 0 ,
100
DISPLAY 'ERRO OCORREU NO ' AX-STEP-X
DISPLAY 'ERRO DE ACESSO DB2, SQLCODE = ' SQLCODE
STOP
END-IF
END-PROC
*
*---------------------------------------------------------------------*
* RELATORIO
*---------------------------------------------------------------------*
REPORT REL01 PRINTER REL01 NOADJUST NODATE NOPAGE SPACE 1
*
TITLE 01 'EMPRESA S/A
LAY-OUT TABELA ' TBNAME-X
TITLE 02 '-----------------------------------------'
*
LINE 01
+
TB-NAME-X
(IX) +
TB-REMARKS-Y (IX) +
TB-COLNO-B
(IX) +
TB-COLTYPE-X (IX) +
TB-TAMANHO-X (IX) +
TB-NULLS-X
(IX)
*
*LINE 01
+
EASYTRIEVE
14 Uso de DB2
*
TB-NAME-X
(IX) +
*
TB-REMARKS-Y (IX) +
*
TB-COLNO-B
(IX) +
*
TB-COLTYPE-X (IX) +
*
TB-TAMANHO-X (IX) +
*
TB-NULLS-X
(IX) +
*
TB-IXNAME-X (IX) +
*
TB-COLNAME-X (IX) +
*
TB-ORDERING-X(IX) +
*
TB-COLNO1-B (IX) +
*
TB-RELNAME-X (IX)
END
//SAIDAS
DD *
1EMPRESA S/A
LAY-OUT TABELA ACT0001
----------------------------------------COL
DESC
SQ
TP
-------0NRFILIAL NUMERO FILIAL
1 DECIMAL
CDCIDADE CODIGO CIDADE
2 SMALLINT
CDNOMEFA CODIGO NOME FANTASIA
3 SMALLINT
TPFRANQU TIPO FRANQUIA
4 SMALLINT
CDOFERTA CODIGO OFERTA
5 SMALLINT
INGRHEAD INDICADOR GROUP HEAD
6 CHAR
TAM
--3
2
2
2
2
1
NUL
--N
N
N
N
N
N
EASYTRIEVE
14 Uso de DB2
Exemplo 033
Uso DB2
//DS029033 JOB CLASS=D,MSGCLASS=X,REGION=4M,COND=(00,NE)
//*----------------------------------------------------------------//EZDB2
EXEC PGM=EZTPA00
//*----------------------------------------------------------------//STEPLIB
INCLUDE MEMBER=STEPDES
//SORTWK1
DD UNIT=3390,SPACE=(TRK,(100,20),RLSE)
//EZTVFM
DD UNIT=3390,SPACE=(TRK,(100,20),RLSE)
//RELAT1
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 033
********************************************************
* LISTA TODAS AS TABELAS DA BASE DE DADOS, SUMARIZANDO QTDD COLUNAS,
* TANTO VIA JOB INPUT SQL QUANTO VIA JOB NORMAL
********************************************************
*--------------------------* PARM PARA INDICAR QUAL BASE DE DADOS
*--------------------------PARM DB2SSID('DBD1')
*--------------------------* DECLARACAO FILE PRINTER
*--------------------------FILE RELAT1 PRINTER
*--------------------------* DECLARACAO AREAS DE TRABALHO
*--------------------------TBNAME-X
W 09 A
VALUE '
' HEADING ('TABELA')
WOPERACAO W 10 A
WSQLCODE
W 8 N 0 MASK ('ZZZZZZZ9-')
WCOLUNAS
W 4 N
MASK ('ZZZ9')
*--------------------------* DECLARACAO CURSOR PARA SYSCOLUMNS
*--------------------------*
SQL DECLARE C04 CURSOR FOR SELECT
+
TBNAME
+
FROM SYSIBM.SYSCOLUMNS
+
ORDER BY TBNAME
*
**********************************************************************
* ATIVIDADE JOB INPUT SQL
**********************************************************************
JOB INPUT SQL
SELECT
TBNAME
+
FROM SYSIBM.SYSCOLUMNS
+
ORDER BY TBNAME
+
INTO :TBNAME-X
PERFORM ERRO-DB2
PRINT RELAT1
EASYTRIEVE
14 Uso de DB2
GO TO JOB
*-------------------*
* TESTA ERRO DB2
*-------------------*
ERRO-DB2. PROC
IF SQLCODE NE 0 100
DISPLAY 'ERRO NO SELECT SQLCODE = ' SQLCODE
STOP
END-IF
END-PROC
*-------------------*
* DECLARACAO RELATORIO
*-------------------*
REPORT RELAT1 PRINTER RELAT1 NOADJUST NODATE SUMMARY
SEQUENCE TBNAME-X
CONTROL TBNAME-X
TITLE 01 COL 1 'TABELAS DESENV JOB INPUT SQL'
HEADING TALLY ('COLUNAS')
LINE 01 TBNAME-X TALLY
**********************************************************************
* ATIVIDADE JOB INPUT NULL
**********************************************************************
JOB INPUT NULL
TBNAME-X = 'SYSCOLUMNS'
WSQLCODE = 0
C04-OPEN
WOPERACAO = 'OPEN
SQL OPEN C04
PERFORM ERRO-DB2
C04'
C04-FETCH
WCOLUNAS = 0
DO WHILE WSQLCODE EQ 0
WOPERACAO = 'FETCH C04'
SQL FETCH C04
+
INTO
+
:TBNAME-X
PERFORM ERRO-DB2
IF WSQLCODE NE 0
IF WCOLUNAS NE 0
GO TO C04-CLOSE
END-IF
ELSE
PRINT RELAT1
WCOLUNAS
= WCOLUNAS + 1
END-IF
END-DO
C04-CLOSE
WOPERACAO = 'CLOSE C04'
SQL CLOSE C04
PERFORM ERRO-DB2
*
STOP
*-------------------*
* TESTA ERRO DB2
EASYTRIEVE
14 Uso de DB2
*-------------------*
ERRO-DB2. PROC
IF SQLCODE NE 0 100
DISPLAY 'ERRO NO ' WOPERACAO ' SQLCODE = ' SQLCODE
STOP
END-IF
WSQLCODE = SQLCODE
END-PROC
*-------------------*
* DECLARACAO RELATORIO
*-------------------*
REPORT RELAT1 PRINTER RELAT1 NOADJUST NODATE SUMMARY
SEQUENCE TBNAME-X
CONTROL TBNAME-X
TITLE 01 COL 1 'TABELAS DESENV JOB INPUT NULL'
HEADING TALLY ('COLUNAS')
LINE 01 TBNAME-X TALLY
//SAIDAS DD *
1TABELAS DESENV JOB INPUT SQL
TABELA
COLUNAS
.
.
.
STRUCTURE
104
SUMAMT
128
SUMMARY
180
SUMMAST
57
SUMMAST_L
14
SUMMFORM
90
SUPPLIER
7
SUPPLIER_
18
SYSCHECKD
5
SYSCHECKS
10
SYSCOLAUT
15
SYSCOLDIS
25
SYSCOLSTA
12
SYSCOLUMN
22
SYSCOPY
19
SYSDATABA
17
SYSDBAUTH
25
SYSDBRM
16
SYSDUMMY1
1
SYSFIELDS
13
SYSFOREIG
7
SYSINDEXE
35
SYSINDEXP
23
SYSINDEXS
13
SYSKEYS
7
SYSLINKS
12
SYSPACKAG
37
SYSPACKAU
13
SYSPACKDE
8
SYSPACKLI
7
SYSPACKST
13
SYSPKSYST
8
SYSPLAN
33
EASYTRIEVE
14 Uso de DB2
SYSPLANAU
SYSPLANDE
SYSPLSYST
SYSPRINT
SYSPROCED
SYSRELS
SYSRESAUT
SYSSTMT
SYSSTOGRO
SYSSTRING
SYSSYNONY
SYSTABAUT
SYSTABLEP
SYSTABLES
SYSTABSTA
SYSUSERAU
SYSVIEWDE
SYSVIEWS
SYSVLTREE
SYSVOLUME
SYSVTREE
TAB0001
TAB0002
TAB0003
.
.
.
12
5
5
2
17
13
13
10
11
8
7
28
27
77
12
31
6
6
2
4
5
8
3
3
53350
EASYTRIEVE
14 Uso de DB2
SYSINDEXP
SYSINDEXS
SYSKEYS
SYSLINKS
SYSPACKAG
SYSPACKAU
SYSPACKDE
SYSPACKLI
SYSPACKST
SYSPKSYST
SYSPLAN
SYSPLANAU
SYSPLANDE
SYSPLSYST
SYSPRINT
SYSPROCED
SYSRELS
SYSRESAUT
SYSSTMT
SYSSTOGRO
SYSSTRING
SYSSYNONY
SYSTABAUT
SYSTABLEP
SYSTABLES
SYSTABSTA
SYSUSERAU
SYSVIEWDE
SYSVIEWS
SYSVLTREE
SYSVOLUME
SYSVTREE
TAB0001
TAB0002
TAB0003
.
.
.
23
13
7
12
37
13
8
7
13
8
33
12
5
5
2
17
13
13
10
11
8
7
28
27
77
12
31
6
6
2
4
5
8
3
3
53350
EASYTRIEVE
15 Dicas gerais a) Resultados de acumulao aparentemente errados
PRINT RELAT1
PRINT RELAT2
GO TO JOB
*------------* DECLARACAO DO RELATORIO 1 - SEM SEQUENCE
*------------REPORT RELAT1 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 034'
TITLE 2 '
RELAT1 - SEM SEQUENCE'
LINE 1 AL-NOME AL-DATA AL-SALDO WSALDOAC SSALDOAC
*------------* DECLARACAO DO RELATORIO 2 - COM SEQUENCE
*------------REPORT RELAT2 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-DATA
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 034'
TITLE 2 '
RELAT2 - COM SEQUENCE'
LINE 1 AL-NOME AL-DATA AL-SALDO WSALDOAC SSALDOAC
********************************************************
* FIM **************************************************
********************************************************
//SYSREL
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SAIDAS
DD *
129/05/01
PROGRAMA EXEMPLO 034
RELAT1 - SEM SEQUENCE
AL-NOME
AL-DATA
AL-SALDO
WSALDOAC
0ALBERTO
19880229
10,00
10,00
ZIGOMAR
20010530
10,00
20,00
MAFALDA
20001015
10,00
30,00
VALDICE
19991223
10,00
40,00
VALDICE
19991223
10,00
50,00
VALDICE
19991223
10,00
60,00
VALDICE
19991223
10,00
70,00
VALDICE
19991223
10,00
80,00
VALDICE
19991223
10,00
90,00
90,00
450,00
129/05/01
PROGRAMA EXEMPLO 034
RELAT2 - COM SEQUENCE
AL-NOME
AL-DATA
AL-SALDO
WSALDOAC
0ALBERTO
19880229
10,00
10,00
VALDICE
19991223
10,00
40,00
VALDICE
19991223
10,00
50,00
VALDICE
19991223
10,00
60,00
VALDICE
19991223
10,00
70,00
VALDICE
19991223
10,00
80,00
VALDICE
19991223
10,00
90,00
MAFALDA
20001015
10,00
30,00
ZIGOMAR
20010530
10,00
20,00
90,00
450,00
SSALDOAC
10,00
20,00
30,00
40,00
50,00
60,00
70,00
80,00
90,00
SSALDOAC
90,00
90,00
90,00
90,00
90,00
90,00
90,00
90,00
90,00
EASYTRIEVE
15 Dicas gerais a) Resultados de acumulao aparentemente errados
b) Campos no so totalizados
S totaliza campos que tenham nmero de decimais especificado (se necessrio, colocar zero).
Exemplo 035
Campos no totalizados
//DS029035 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X
//*--------------------------------------------------------------//STEPEASY EXEC PGM=EZTPA00
//ENTRA
DD *
ALBERTO
19880229 0000010001 00100 012 006
ALBERTO
19880229 0000010001 00100 012 006
ZIGOMAR
20010530 0000000010 00020 123 012
ZIGOMAR
20010530 0000000010 00020 123 012
MAFALDA
20001015 0000000100 00340 456 024
MAFALDA
20001015 0000000100 00340 456 024
VALDICE
19991223 0000001000 05678 789 036
VALDICE
19991223 0000001000 05678 789 036
//EZTVFM
DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE)
//SYSIN
DD *
********************************************************
* PROGRAMA EXEMPLO 035
********************************************************
*-------------------------------------------------* DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O
*-------------------------------------------------FILE SYSREL PRINTER
FILE ENTRA
AL
1 80 A
AL-NOME
1 15 A
AL-DATA
16 08 N
AL-VTOT
25 10 N 2
AL-VUNI
36 5 N 2
AL-COD
42 3 N
AL-QPACOT
46 3 N 0
*-------------------------------------------------* DECLARACAO DE VARIAVEIS DE TRABALHO
*-------------------------------------------------WLL
W
7
N
WII
W
7
N
*-------------------------------------------------* DECLARACAO DE PROCEDIMENTOS
*-------------------------------------------------*------------* ROTINA PRINCIPAL
*------------JOB INPUT ENTRA FINISH ESTATIS
WLL = WLL + 1
PRINT RELAT01
PRINT RELAT02
PRINT RELAT03
GO TO JOB
EASYTRIEVE
15 Dicas gerais a) Resultados de acumulao aparentemente errados
*------------* ROTINA DE FINALIZACAO
*------------ESTATIS. PROC
DISPLAY '************************************'
DISPLAY 'COPIA OK ! '
DISPLAY '************************************'
END-PROC
*------------* DECLARACAO DO RELATORIO 01
*------------REPORT RELAT01 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 035 RELAT01'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 02
*------------REPORT RELAT02 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
SUM
AL-VUNI
TITLE 1 '
PROGRAMA EXEMPLO 035 RELAT02'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
*------------* DECLARACAO DO RELATORIO 03
*------------REPORT RELAT03 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
SUM AL-VUNI AL-QPACOT . * AL-COD, SE COLOCADO, DAH ERRO DE COMPILACAO
TITLE 1 '
PROGRAMA EXEMPLO 035 RELAT03'
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT
********************************************************
* FIM **************************************************
********************************************************
//SYSREL
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SAIDAS
DD *
129/05/01
PROGRAMA EXEMPLO 035 RELAT01
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
AL-COD AL-QPACOT
0ALBERTO
19880229
100,01
1,00
012
6
ALBERTO
19880229
100,01
1,00
012
6
ZIGOMAR
20010530
,10
,20
123
12
ZIGOMAR
20010530
,10
,20
123
12
MAFALDA
20001015
1,00
3,40
456
24
MAFALDA
20001015
1,00
3,40
456
24
VALDICE
19991223
10,00
56,78
789
36
VALDICE
19991223
10,00
56,78
789
36
222,22
122,76
156
129/05/01
PROGRAMA EXEMPLO 035 RELAT02
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
AL-COD AL-QPACOT
0ALBERTO
19880229
100,01
1,00
012
6
ALBERTO
19880229
100,01
1,00
012
6
EASYTRIEVE
15 Dicas gerais a) Resultados de acumulao aparentemente errados
ZIGOMAR
ZIGOMAR
MAFALDA
MAFALDA
VALDICE
VALDICE
129/05/01
AL-NOME
0ALBERTO
ALBERTO
ZIGOMAR
ZIGOMAR
MAFALDA
MAFALDA
VALDICE
VALDICE
20010530
20010530
20001015
20001015
19991223
19991223
,10
,10
1,00
1,00
10,00
10,00
,20
,20
3,40
3,40
56,78
56,78
122,76
PROGRAMA EXEMPLO 035 RELAT03
AL-DATA
19880229
19880229
20010530
20010530
20001015
20001015
19991223
19991223
AL-VTOT
100,01
100,01
,10
,10
1,00
1,00
10,00
10,00
AL-VUNI
1,00
1,00
,20
,20
3,40
3,40
56,78
56,78
122,76
123
123
456
456
789
789
12
12
24
24
36
36
AL-COD AL-QPACOT
012
6
012
6
123
12
123
12
456
24
456
24
789
36
789
36
156
EASYTRIEVE
15 Dicas gerais c) Uso de Tally no aceito; Tally para sumarizar
REPORT RELAT01 PRINTER SYSREL NOADJUST SPACE 1
TITLE 1 '
PROGRAMA EXEMPLO 036 RELAT01'
* USAR TALLY SEM CONTROL, DAH ERRO DE COMPILACAO
*LINE 1 TALLY AL-NOME AL-DATA AL-VTOT AL-VUNI
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI
*------------* DECLARACAO DO RELATORIO 02
*------------REPORT RELAT02 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-VTOT
TITLE 1 '
PROGRAMA EXEMPLO 036 RELAT02'
* USAR TALLY SEM CONTROL, DAH ERRO DE COMPILACAO
*LINE 1 TALLY AL-NOME AL-DATA AL-VTOT AL-VUNI
LINE 1 AL-NOME AL-DATA AL-VTOT AL-VUNI
*------------* DECLARACAO DO RELATORIO 03
*------------REPORT RELAT03 PRINTER SYSREL NOADJUST SPACE 1
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 036 RELAT03'
* USAR TALLY COM CONTROL, OK
LINE 1 TALLY AL-NOME AL-DATA AL-VTOT AL-VUNI
*------------* DECLARACAO DO RELATORIO 04
*------------REPORT RELAT04 PRINTER SYSREL NOADJUST SPACE 1
SEQUENCE AL-VTOT
CONTROL FINAL
TITLE 1 '
PROGRAMA EXEMPLO 036 RELAT04'
* USAR TALLY COM CONTROL, OK
LINE 1 TALLY AL-NOME AL-DATA AL-VTOT AL-VUNI
*------------* DECLARACAO DO RELATORIO 05
*------------REPORT RELAT05 PRINTER SYSREL NOADJUST SPACE 1 SUMMARY
SEQUENCE AL-DATA
*CONTROL AL-DATA FINAL . * FINAL EH DEFAULT SE TIVER ALGUM CAMPO
*
ESPECIFICADO. SE COLOCAR AQUI, DAH ERRO
CONTROL AL-DATA
TITLE 1 '
PROGRAMA EXEMPLO 036 RELAT05'
TITLE 2 'USO DO TALLY PARA SUMARIZAR OCORRENCIAS DO CONTEUDO DE UM +
CAMPO NUM ARQUIVO'
LINE 1 TALLY AL-DATA
********************************************************
* FIM **************************************************
********************************************************
//SYSREL
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SAIDAS
DD *
1 4/06/01
PROGRAMA EXEMPLO 036 RELAT01
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
0ALBERTO
19880229
100,01
1,00
ALBERTO
19880229
100,01
1,00
EASYTRIEVE
15 Dicas gerais c) Uso de Tally no aceito; Tally para sumarizar
ZIGOMAR
20010530
,10
,20
ZIGOMAR
20010530
,10
,20
MAFALDA
20001015
1,00
3,40
MAFALDA
20001015
1,00
3,40
VALDICE
19991223
10,00
56,78
VALDICE
19991223
10,00
56,78
1 4/06/01
PROGRAMA EXEMPLO 036 RELAT02
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
0ZIGOMAR
20010530
,10
,20
ZIGOMAR
20010530
,10
,20
MAFALDA
20001015
1,00
3,40
MAFALDA
20001015
1,00
3,40
VALDICE
19991223
10,00
56,78
VALDICE
19991223
10,00
56,78
ALBERTO
19880229
100,01
1,00
ALBERTO
19880229
100,01
1,00
1 4/06/01
PROGRAMA EXEMPLO 036 RELAT03
TALLY
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
0
ALBERTO
19880229
100,01
1,00
ALBERTO
19880229
100,01
1,00
ZIGOMAR
20010530
,10
,20
ZIGOMAR
20010530
,10
,20
MAFALDA
20001015
1,00
3,40
MAFALDA
20001015
1,00
3,40
VALDICE
19991223
10,00
56,78
VALDICE
19991223
10,00
56,78
8
222,22
122,76
1 4/06/01
PROGRAMA EXEMPLO 036 RELAT04
TALLY
AL-NOME
AL-DATA
AL-VTOT
AL-VUNI
0
ZIGOMAR
20010530
,10
,20
ZIGOMAR
20010530
,10
,20
MAFALDA
20001015
1,00
3,40
MAFALDA
20001015
1,00
3,40
VALDICE
19991223
10,00
56,78
VALDICE
19991223
10,00
56,78
ALBERTO
19880229
100,01
1,00
ALBERTO
19880229
100,01
1,00
8
222,22
122,76
1 4/06/01
PROGRAMA EXEMPLO 036 RELAT05
USO DO TALLY PARA SUMARIZAR OCORRENCIAS DO CONTEUDO DE UM CAMPO NUM ARQUIVO
TALLY AL-DATA
0
2 19880229
2 19991223
2 20001015
2 20010530
8
EASYTRIEVE
15 Dicas gerais c) Uso de Tally no aceito; Tally para sumarizar
EASYTRIEVE
15 Dicas gerais d) Trocar sinal de um campo compactado ou zonado
DISPLAY 'WNROCOMPAC COM SINAL C : ' WNROCOMPAC
WNROPULTDIR = WNROPULTDIR + 3
DISPLAY 'WNROCOMPAC MUDOU PARA : ' WNROCOMPAC
END-IF
*------------* SABE O QUE EH 3? EH X'03', A DIFERENCA ENTRE X'0F' E X'0C'
*------------STOP
********************************************************
* FIM **************************************************
********************************************************
//SYSREL
DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SAIDAS
DD *
WNROZONADO COM SINAL F : F1F2F3F4F5
WNROZONADO MUDOU PARA : F1F2F3F4C5
WNROCOMPAC COM SINAL F : 123456789F
WNROCOMPAC MUDOU PARA : 123456789C
EASYTRIEVE
15 Dicas gerais f) Abends na execuo
ELSE-IF ALCODN EQ 2
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 2'
ELSE-IF ALCODN EQ 3
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 3'
ELSE-IF ALCODN EQ 4
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 4'
ELSE-IF ALCODN EQ 5
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 5'
ELSE-IF ALCODN EQ 6
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 6'
ELSE-IF ALCODN EQ 7
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 7'
ELSE-IF ALCODN EQ 8
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 8'
ELSE-IF ALCODN EQ 9
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 9'
ELSE
DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO N.D.A.'
END-IF
*--------* FAZ REFERENCIA AA DECLARACAO ALFA
*--------IF
ALCODA NOT NUMERIC
DISPLAY 'COD NAO NUMERICO'
END-IF
IF
ALCODA EQ '0'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 0'
ELSE-IF ALCODA EQ '1'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 1'
ELSE-IF ALCODA EQ '2'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 2'
ELSE-IF ALCODA EQ '3'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 3'
ELSE-IF ALCODA EQ '4'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 4'
ELSE-IF ALCODA EQ '5'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 5'
ELSE-IF ALCODA EQ '6'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 6'
ELSE-IF ALCODA EQ '7'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 7'
ELSE-IF ALCODA EQ '8'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 8'
ELSE-IF ALCODA EQ '9'
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO COMO 9'
ELSE
DISPLAY 'ALCODA=' ALCODA ' ENTENDIDO N.D.A.'
END-IF
GO TO JOB
//SAIDAS DD *
***************************************
ALCODN=0 ENTENDIDO COMO 0
ALCODA=0 ENTENDIDO COMO 0
***************************************
ALCODN=1 ENTENDIDO COMO 1
ALCODA=1 ENTENDIDO COMO 1
***************************************
EASYTRIEVE
15 Dicas gerais f) Abends na execuo
ALCODN=2 ENTENDIDO COMO 2
ALCODA=2 ENTENDIDO COMO 2
***************************************
ALCODN=3 ENTENDIDO COMO 3
ALCODA=3 ENTENDIDO COMO 3
***************************************
ALCODN=4 ENTENDIDO COMO 4
ALCODA=4 ENTENDIDO COMO 4
***************************************
ALCODN=5 ENTENDIDO COMO 5
ALCODA=5 ENTENDIDO COMO 5
***************************************
ALCODN=6 ENTENDIDO COMO 6
ALCODA=6 ENTENDIDO COMO 6
***************************************
ALCODN=7 ENTENDIDO COMO 7
ALCODA=7 ENTENDIDO COMO 7
***************************************
ALCODN=8 ENTENDIDO COMO 8
ALCODA=8 ENTENDIDO COMO 8
***************************************
ALCODN=9 ENTENDIDO COMO 9
ALCODA=9 ENTENDIDO COMO 9
***************************************
COD NAO NUMERICO
ALCODN=1 ENTENDIDO COMO 1
COD NAO NUMERICO
ALCODA=A ENTENDIDO N.D.A.
***************************************
COD NAO NUMERICO
ALCODN=2 ENTENDIDO COMO 2
COD NAO NUMERICO
ALCODA=B ENTENDIDO N.D.A.
***************************************
COD NAO NUMERICO
ALCODN=3 ENTENDIDO COMO 3
COD NAO NUMERICO
ALCODA=C ENTENDIDO N.D.A.
***************************************
COD NAO NUMERICO
ALCODN=4 ENTENDIDO COMO 4
COD NAO NUMERICO
ALCODA=D ENTENDIDO N.D.A.
***************************************
COD NAO NUMERICO
ALCODN=5 ENTENDIDO COMO 5
COD NAO NUMERICO
ALCODA=E ENTENDIDO N.D.A.
***************************************
COD NAO NUMERICO
ALCODN=6 ENTENDIDO COMO 6
COD NAO NUMERICO
ALCODA=F ENTENDIDO N.D.A.
***************************************
COD NAO NUMERICO
ALCODN=7 ENTENDIDO COMO 7
COD NAO NUMERICO
EASYTRIEVE
15 Dicas gerais f) Abends na execuo
ALCODA=G ENTENDIDO N.D.A.
f) Abends na execuo
0C7= Data exception :
Algum campo numrico est sendo manuseado pelo EASY, e seu contedo no numrico.
Normalmente indicado o statement Easy onde o problema ocorreu. Se o statement referir-se a
um REPORT, um campo numrico que se est tentando imprimir, e que no est com contedo
numrico. Mude o(s) campo(s) numrico(s) para alfa (pode-se redefini-los) e faa referncia aos
nomes alfa na(s) LINE(S).
No esquea que pode ser um arquivo com lay-outs diferentes (um header, trailler, etc...).
0C4 = Specification exception :
Verifique
se algum ndice de tabela interna est fora de range ou
se algum arquivo sequencial est com VS
ou
se falta algum DD para um arquivo
g) Arquivos VFM
Arquivos VFM (Virtual File Manager) um mtodo de acesso sequencial bastante apropriado
para manipulao de arquivos de trabalho (temporrios).
Normalmente, quando se usa arquivos de trabalho, cada um deles precisa ter uma definio, tanto
no programa quanto em JCL.
Utilizando VFM, basta declarar todos os arquivos de trabalho como VIRTUAL na especificao
do FILE, e os arquivos so manipulados, dentro do possvel (depende da memria disponvel) em
memria, sem necessidade de especificao em JCL. Caso a memria disponvel no seja
suficiente, uma nica rea em disco utilizada como extenso (atravs do DD EZTVFM).
Arquivos declarados como VIRTUAL so deletados quando seu processamento como input
terminado.
Exemplo :
FILE CADCLI
.
.
.
FILE CADCLIALFA VIRTUAL
.
.
.
SORT CADCLI TO CADCLIALFA USING CLI-NOME
JOB INPUT CADCLIALFA
.
.
.
FIM
Dvidas?
Sugestes?
arschiesari@yahoo.com
OBRIGADO !
EASYTRIEVE
Quick Reference
PARM-REGISTER = para pegar PARM via CALL EZTPX01
Declarao de campos I/O
[DEFINE] [nome-arquivo:]nome-campo pos-inicial tambytes
|A|N|P|U|B| [decimais] [HEADING (...)] [MASK (...)]
Declarao de campos work
[DEFINE] nome-campo W tamanho |A|N|P|U|B| [decimais]
[HEADING (...)] [MASK (...)]
Atividade JOB normal
PARM
FILE arq PRINTER |DEFER|
FILE arqseq-es |DEFER|
FILE arqseq-es VBS maxlrecl [maxblk] [FULLTRK] [DEFER]
FILE arqvs-e VS [DEFER]
FILE arqvs-u VS UPDATE [DEFER]
FILE arqvs-s VS CREATE |NOVERIFY| |RESET| [DEFER]
declarao reas I/O
declarao variveis work
*------------------------------------------JOB INPUT [START proc] [FINISH proc]
JOB INPUT NULL [START proc] [FINISH proc]
JOB INPUT arq [START proc] [FINISH proc]
JOB INPUT arq KEY cpo1 [cpo2...]
comandos
REPORT....
Atividade SORT
PARM
FILE arq PRINTER [DEFER]
FILE arqseq-es [DEFER]
FILE arqseq-es VBS maxlrecl [maxblk] [FULLTRK] [DEFER]
FILE arqvs-e VS [DEFER]
FILE arqvs-u VS UPDATE [DEFER]
FILE arqvs-s VS CREATE |NOVERIFY| |RESET|
[DEFER]
declarao reas I/O
declarao variveis work
*------------------------------------------SORT arq1 TO arq2 USING campo1 [D] [BEFORE proc] +
[SIZE literal1] [WORK literal2]
comandos, exceto de I/O (s DISPLAY sem nomearq)
Atividade JOB INPUT SQL
PARM
FILE arq PRINTER |DEFER|
FILE arqseq-es |DEFER|
FILE arqseq-es VBS maxlrecl [maxblk] [FULLTRK| |DEFER|
FILE arqvs-e VS |DEFER|
FILE arqvs-u VS UPDATE |DEFER|
FILE arqvs-s VS CREATE |NOVERIFY| |RESET| |DEFER|
declarao reas I/O
declarao variveis work
*------------------------------------------JOB INPUT SQL [START proc1] [FINISH proc2]
SELECT coluna1 [, coluna2..... , colunan ] +
FROM nometabela
+
[WHERE condio]
+
[ORDER coluna1 [... , colunan] ] +
INTO :campo1 [ ... , campon]
comandos
REPORT ....
REPORT
REPORT nome-relatorio
+
[SUMMARY]
+
[SUMFILE]
+
[SUMSPACE]
+
[TALLYSIZE]
+
[DTLCTL |EVERY|FIRST|NONE|]
+
[SUMCTL ([x] [y])]
+
[LABELS [ACROSS literal] ]
+
[DOWN literal SIZE literal NEWPAGE]+
[FILE nome-arquivo]
+
[PRINTER nome-arquivo]
+
[PAGESIZE literal literal]
+
[LINESIZE literal]
+
[SKIP literal]
+
[SPACE literal]
+
[TITLESKIP literal]
+
[| SPREAD | NOSPREAD |]
+
[NOADJUST]
+
[| NODATE | NOKDATE |]
+
[| NOPAGE | NOKPAGE |]
+
[NOHEADING]
+
[LIMIT literal]
+
[EVERY literal]
SEQUENCE campo1 [D] campo2 [D] ...
CONTROL cpo1 [D] ... |FINAL| |NEWPAGE|
+
|RENUM| |NOPRINT|
SUM campo1 [campo2 ... campon]
TITLE nrolin |cpo| literal |+nro|-nro| [COL nro]
HEADING campo (xxx [yyy ...])
LINE nrolin |cpo|literal |+nro|-nro| [|COL|POS| nro]
*------------------------------------------REPORT-INPUT. PROC
...
END-PROC
*------------------------------------------BEFORE-LINE. PROC
...
END-PROC
*------------------------------------------AFTER-LINE. PROC
...
END-PROC
*------------------------------------------BEFORE-BREAK. PROC
...
END-PROC
*------------------------------------------AFTER-BREAK. PROC
...
END-PROC
*------------------------------------------ENDPAGE. PROC
...
END-PROC
*------------------------------------------TERMINATION. PROC
...
END-PROC
*-------------------------------------------
Variveis EASY
SYSDATE = AA/MM/DD
RETURN-CODE = uso JCL
RECORD-COUNT = qt regs
LEVEL = qual quebra
SYSTIME = HH.MM.SS
RECORD-LENGTH = lrecl
FILE-STATUS = status I/O VSAM
TALLY = qtdd regs do total.