easytrieve - site fora do arprofars.montesite.com.br/clientes/afa1280…  · web view ·...

202
EASYTRIEVE

Upload: nguyenkhanh

Post on 27-Mar-2018

223 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE

Prof. ALBERTO ROMANO SCHIESARI(Última revisão MAI/2001)

Page 2: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

Simbologia utilizada neste manual

À semelhança do padrão utilizado nos manuais IBM, esta apostila utiliza especificações conforme indicado a seguir :

| item1 | item2 | item3 | ...

quando colocados entre barras verticais, deve-se optar entre um dos itens

[ item1 ] ....

quando colocado entre colchetes, o uso do(s) item(s) não é obrigatório; colocar somente se desejado, ou necessário no caso específico.

letras minúsculas

substituir pelo necessário / desejado

LETRAS MAIÚSCULAS

colocar igual ao indicado

Page 3: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

SUMÁRIO1 – CONCEITOS BÁSICOS...........................................................................................................................................5

a) Generalidades..........................................................................................................................................................5b) Características de Instalação....................................................................................................................................6c) Estrutura de um programa em EASYTRIEVE........................................................................................................8d) PARM’s principais................................................................................................................................................11e) Regras gerais para os statements...........................................................................................................................12f) Exemplo inicial de um programa em EASY..........................................................................................................13g) rápidas dicas sobre DISPLAY, FILE, PRINT, REPORT, PUT, STOP................................................................15

2 – DECLARAÇÃO DE ARQUIVOS..........................................................................................................................16a) Relatórios...............................................................................................................................................................16b) Arquivo sequencial, registros tamanho fixo (entrada ou saída) :..........................................................................21c) Arquivo VSAM KSDS ou RRDS (criação)...........................................................................................................24d) Arquivo VSAM KSDS ou RRDS (leitura sequencial de arquivo já criado).........................................................26e) Arquivo VSAM KSDS ou RRDS (com update)....................................................................................................28f) Arquivo sequencial, registros VBS (saída) :.........................................................................................................32g) Arquivo sequencial, registros VBS (entrada) :..................................................................................................34

3 – DECLARAÇÃO DE DADOS – ÁREAS DE I/O...................................................................................................364 – DECLARAÇÃO DE DADOS – ÁREAS DE WORK............................................................................................385 – VARIÁVEIS EASYTRIEVE; PEGAR PARM DO EXEC....................................................................................466 – Atividade JOB e statements START e FINISH.......................................................................................................507 - Comandos de processamento...................................................................................................................................53

a) Comando STOP.....................................................................................................................................................53b) Expressões e assinalações (movimentos)..............................................................................................................53c) Identificação de pontos de programa; comandos GO TO, PROC, END-PROC e PERFORM.............................53d) Comandos IF, ELSE, ELSE-IF, END-IF ; operadores relacionais.......................................................................53e) Comandos DO, END-DO e CASE........................................................................................................................53

8 - Statement REPORT e complementares....................................................................................................................53a) Comando PRINT...................................................................................................................................................53b) Statement REPORT...............................................................................................................................................53c) Statements complementares ao REPORT : resumo...............................................................................................53d) componentes de um relatório.................................................................................................................................53e) estrutura do REPORT............................................................................................................................................53f) Cláusulas do REPORT...........................................................................................................................................53g) Statements complementares ao REPORT : detalhes.............................................................................................53

9 - Comandos de I/O......................................................................................................................................................53a) Comando DISPLAY..............................................................................................................................................53b) Comando GET.......................................................................................................................................................53c) Comando PUT.......................................................................................................................................................53d) Comando POINT...................................................................................................................................................53e) Comando READ....................................................................................................................................................53f) Comando WRITE...................................................................................................................................................53

10 – Atividade SORT....................................................................................................................................................5311 – RECURSO de MATCH.........................................................................................................................................5312 - Uso de sub-programas (comando CALL)..............................................................................................................5313 - Tabelas : declaração e referência no processamento..............................................................................................5314 – Uso de DB2............................................................................................................................................................5315 - Dicas gerais : problemas mais comuns e outros tópicos........................................................................................53

a) Resultados de acumulação aparentemente errados................................................................................................53b) Campos não são totalizados...................................................................................................................................53c) Uso de TALLY não aceito; TALLY para sumarizar.............................................................................................53d) Trocar sinal de um campo compactado ou zonado...............................................................................................53e) Instruções aparentemente executadas erradas.......................................................................................................53f) Abends na execução...............................................................................................................................................53

Page 4: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE1 – Conceitos básicos a) Generalidades

g) Arquivos VFM.......................................................................................................................................................53

4

Page 5: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE1 – Conceitos básicos a) Generalidades

1 – CONCEITOS BÁSICOS

a) Generalidades

EASYTRIEVE é uma linguagem de programação, com recursos para acesso a arquivos e bases de dados, com comandos que trazem bastante facilidade principalmente para a geração de relatórios.

O objetivo deste material é disponibilizar uma fonte de consulta rápida, sem o objetivo de esgotar todas as possibilidades oferecidas pelo software. Para a obtenção de qualquer informação adicional ou mais específica, consultar os manuais do próprio fornecedor.

Os programas elaborados em EASYTRIEVE podem ser executados tanto em modo interpretado quanto em modo compilado.

A execução de forma interpretada facilita e agiliza o processo de testes.

A execução de forma compilada, por ser mais rápida, é aconselhável para execuções em regime de produção.

5

Page 6: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

b) Características de Instalação

Quando da instalação do EASYTRIEVE, o analista de suporte deve indicar os padrões da instalação. Esses padrões referem-se a diversas características e opções que controlam o ambiente e o processamento do EASY. Algumas dessas opções são especificadas a seguir, com o default usado como referência, e, em alguns casos, alguns detalhes adicionais serão vistos no ítem PARM’s principais.

ABEXIT=SNAPindica o default no caso de Abend

ACROSS=4indica quantidade de etiquetas a imprimir numa linha. Modificável através do LABELS no REPORT

CLIST=NOCLISTindica se gera ou não CLIST

COMPNME=’COMPUTERASSOCIATES, INC.FIELD INSTALLATION’indica o cabeçalho padrão da listagem de compilação.Nos nossos exemplos será ‘COMPRADOR EASYTRIEVE’

DATE=MMDDYYindica o formato da data colocada na listagem de compilação e na variável SYSDATE

DMAP=NODMAPindica se gera ou não DMAP

DOWN=6indica quantidade de linhas por etiquetaModificável através do LABELS no REPORT

DTLCTL=FIRSTindica o método de impressão do valor dos campos de controle nas linhas de detalhe. Pode ser EVERY, FIRST ou NONE

FLDCHK=FLDCHKindica se o EASY deve validar as referências a campos de arquivos

FLOW=NOFLOWindica se deve ser impresso o nro do statement executado quando o programa abendar

FLOWSIZ=100indica a quantidade de entries na tabela usada para o FLOW

LABLSIZ=30indica o nro de posições a imprimir numa etiqueta

LINESIZ=132indica o tamanho da linha de impressao.Modificável através do LINESIZE no REPORT

LIST=(PARM,FILE)indica se devem ser impressos os parm’s e as estatísticas dos arquivos

NEWPAGE=NOindica se deve haver salto de folha a cada etiqueta impressa

NUMERIC=(COMMA,PERIOD)indica o formato de edição de campos de valor.

Page 7: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE1 – Conceitos Básicos b – Características da Instalação

O primeiro indica o separador visual e o segundo o separador decimal.PAGESIZ=(58,0)

o primeiro nro indica o tamanho máximo da página para os statements LINE (pode ir de 1 a 32767)o segundo nro indica o tamanho máximo da página para os DISPLAY’s (pode ir de 0 a 32767; zero indica infinito – nunca pular de folha)

PAGEWRD=PAGEindica a literal a usar na indicação do número de página.

PMAP=NOPMAPindica se gera ou não um procedure map do programa gerado

SEPDATE=/indica o caráter separador na edição de data do dia

SEPTIME=.indica o caráter separador na edição da hora do dia

SCANCOL=(1,72)indica as posições inicial e final dos statements

SKIP=0indica o número de linhas em branco antes da impressão da LINE 01

SPACE=3indica o número de espaços que deve haver entre dois campos listados numa linha

SPREAD=NOindica se os campos da linha devem ser espalhados o máximo possível

STATE=STATEindica para o EASY manter registro do nro do statement em execução (para uso no FLOW ou em diagnósticos de abend)

SUMCTL=HIARindica como deve ser as linhas de total.Pode ser ALL, HIAR, TAG ou NONE

SUMSPAC=3indica o núero de posições de impressão adicionais a reservar para a impressão de totais

TALYSIZ=2indica o tamanho da variável TALLY

TITLSKP=3indica o número de linhas em branco entre a última linha de cabeçalho de título e aprimeira de cabeçalho de identificação de campos (ou de detalhe)

XREF=NOXREFindica se deve ou não ser gerada cross-reference dos nomes

7

Page 8: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

c) Estrutura de um programa em EASYTRIEVE

A estrutura básica de um programa em EASYTRIEVE é composta de statements para : PARM para indicar condições de processamento ao EASYTRIEVE declaração de arquivos (opcional) declaração de variáveis (opcional) declaração dos procedimentos (obrigatório); os blocos de procedimentos (ATIVIDADES) são

delimitados a cada JOB ou SORT

Um programa com n atividades :

PARMdeclaração arquivosdeclaração variáveisatividade 1[atividade 2]......[atividade n]

Um programa com uma atividade (JOB) :

PARMdeclaração arquivosdeclaração variáveisJOB ...........

Page 9: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE1 – Conceitos Básicos c – Estrutura de um programa Easytrieve

Um programa com duas atividades (a primeira um SORT e a segunda um JOB) :

PARMdeclaração arquivosdeclaração variáveisSORT.........JOB........

Um programa com tres atividades (a primeira um JOB, a segunda um SORT e a terceira outro JOB) :

PARMdeclaração arquivosdeclaração variáveisJOB........SORT.......JOB........

9

Page 10: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE1 – Conceitos Básicos c – Estrutura de um programa Easytrieve

Um programa com uma atividade e todas as declarações possíveis para um REPORT :

PARMdeclaração arquivosdeclaração variáveisJOB.........*----------------------REPORTSEQUENCECONTROLSUMTITLEHEADINGLINE*------------------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*------------------

10

Page 11: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

d) PARM’s principais

ABEXIT SNAP = imprime dump formatado para 0C1 a 0CB, e um relatório de análise de erroABEND NOSNAP = imprime somente um pequeno relatório de análise de erroABEND NO = não trata abend

BIND ... = para utilização de DB2

COMPILE = executa check de sintaxe e compilação somente

DEBUG [CLIST|PMAP] [DMAP] [FLDCHK] [FLOW] [FLOWSIZ n] [STATE] [XREF x]DEBUG CLIST = gera condensed listing do programa executável geradoDEBUG PMAP = gera listagem completa do executável geradoDEBUG DMAP = gera mapa das áreas de dados dos arquivosDEBUG FLDCHK = testa todas as referências a campos de dados de arquivos durante a execução do programa. Uma referência é considerada inválida se o registro não estiver disponívelDEBUG FLOW = imprime o número de cada statement executado no relatório de análiseDEBUG FLOWSIZ n = estabelece número de entries na tabela de trace para a opção FLOW, podendo n variar de 1 a 4096DEBUG STATE = imprime o número do statement que estava sendo executado quando o programa abendouDEBUG XREF x = gera uma cross reference com todos os nomes (campos, arquivos, etc...). Pode ser (x) SHORT (só se o nome foi referenciado) ou LONG (se foi referenciado ou não)

SORT ... = para uso do SORT

LIST FILE = lista estatísticas do uso dos arquivos após cada JOB ou SORTLIST PARM = lista os parm’s após a operação de check de sintaxe

SINTAX = termina a execução do EASY após o check de sintaxe

Exemplo :

PARM ABEXIT SNAP DEBUG (CLIST STATE FLDCHK NOXREF) + LIST (PARM FILE) PRESIZE 512 + SORT (DEVICE SYSDA ALTSEQ NO MSG DEFAULT MEMORY MAX WORK 3) VFM( 64)

Page 12: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

e) Regras gerais para os statements

o padrão é o statement estar desde a posição 1 até a 80 (pode ser mudado via parâmetro SCANCOL de instalação)

o padrão para comentários é o primeiro caráter não-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 próxima linha, uma linha deve ter um “+” ou um “-“ como

último caráter não-branco; o “+” indica que a continuação na linha seguinte começa a partir do primeiro caráter não-

branco; o “-” indica que a continuação na linha seguinte começa a partir da primeira posição;

literais devem ser colocadas entre apóstrofes o uso da vírgula fora de literais é opcional, usado somente para efeito de melhor visibilidade

do texto para qualificação de arquivos, registros e campos, se necessário, usar dois pontos “:” nomes de campos podem ter no máximo 40 caracteres, e podem ter caracteres alfabéticos (A

a Z), dígitos (0 a 9), e qualquer caráter especial exceto os delimitadores (espaço, apóstrofe, ponto, vírgula, abre parênteses, fecha parênteses e dois pontos

nomes de procedimentos e REPORTS não podem ter somente dígitos para fazer referência a dados em hexadecimal, usar X’nn....’, sendo nn... dígitos

hexadecimais (0 a 9, e A a F) operadores aritméticos ( “+” , “-“, “*” e “/” ) devem ter pelo menos um espaço antes e um

depois)

Page 13: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

f) Exemplo inicial de um programa em EASY.

Programa Exemplo 001Programa completo

//DS029ZSS JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //*--------------------------------------------------------------- //* EXEMPLO 001 //*--------------------------------------------------------------- //EZTPA01 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) //EZTVFM DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE) //SYSREL DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSABOUT DD SYSOUT=* //SYSIN DD * ******************************************************** * PROGRAMA EXEMPLO 001 ******************************************************** PARM DEBUG(PMAP, DMAP)*-------------------------------------------------- * 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-SALDO 24 10 N 2 FILE SAIDA AG 1 80 A *-------------------------------------------------- * 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 PRINT RELAT AG = AL PUT SAIDA WGG = WGG + 1

Page 14: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE1 – Conceitos Básicos 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 ************************************************** ********************************************************

Para melhor compreensão, veja as saídas em relatório produzidas pelo programa :

EM SYSREL

18/05/01 PROGRAMA EXEMPLO 001 AL-NOME AL-DATA AL-SALDO ALBERTO 19880229 ,01 VALDICE 19991223 10,00 MAFALDA 20001015 1,00 ZIGOMAR 20010530 ,10 11,11EM SYSPRINT

OPTIONS FOR THIS RUN – ABEXIT SNAP DEBUG (CLIST STATE FLDCHK NOXREF) LIST (PARM FILE) PRESIZE 512SORT (DEVICE SYSDA ALTSEQ NO MSG DEFAULT MEMORY MAX WORK 3) VFM( 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

Page 15: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

g) rápidas dicas sobre DISPLAY, FILE, PRINT, REPORT, PUT, STOP

Para mais facilmente acompanharmos os exemplos que virão no transcorrer dos próximos capítulos, vejamos a sintaxe básica de alguns comandos, que serão posteriormente detalhados.

FILE nome-arquivo [ | PRINTER | VS | ]

Declara um arquivo.Se for para relatorio, declarar FILE nome-arquivo PRINTERSe for arquivo em disco sequencial, declarar FILE nome-arquivo.Se for arquivo em disco VSAM, declarar FILE nome-arquivo VS

DISPLAY | lit1 | var1 | [ | lit2 | var2 | ] ... [ | litn | varn | ]

Exibe o conteúdo da(s) variável(eis) e/ou literal(is) especificada(s).

PUT nome-arquivo [FROM nome-arquivo]

Faz a gravação de um registro lógico num arquivo.

PRINT nome-relatorio

Imprime linha(s) de detalhe, conforme especificado na(s) declaração(ões) LINE do REPORT.

REPORT nome-relatorio PRINTER nome-arquivo

Faz a declaração das características de um relatório, como por exemplo : linha(s) de cabeçalho, linha(s) de detalhe, linha(s) de total, sequencia, etc...

STOP

Termina a execução da atividade (JOB ou SORT).

Page 16: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

2 – DECLARAÇÃO DE ARQUIVOSA declaração de um arquivo é feita através do statement FILE; caso necessário, a declaração da área de I/O referente ao arquivo deve ser colocada imediatamente após o statement FILE.

Vejamos como dever ser a declaração de um arquivo, em função de suas características:

a) Relatórios

FILE nome-do-arquivo PRINTER [DEFER]

DEFER = somente abrir o arquivo quando a primeira operação de I/O for emitida. O padrão é a abertura de todos os arquivos no início da atividade.

Programa Exemplo 002FILE 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

Page 17: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – a) Relatórios

*-------------------------------------------------- *------------- * 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

Programa Exemplo 003FILE PRINTER utilizado por comando DISPLAY

//DS029003 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 003 ******************************************************** *-------------------------------------------------- * DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O *-------------------------------------------------- FILE RELAT PRINTER FILE ENTRA

17

Page 18: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – a) Relatórios

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 GO TO JOB ******************************************************** * FIM ************************************************** ******************************************************** //SAIDAS DD * >>>>>>>>>RELAT NOME=ALBERTO NOME=ZIGOMAR NOME=MAFALDA NOME=VALDICE

Programa Exemplo 004FILE PRINTER utilizado por comando PRINT e DISPLAY sem SEQUENCE

//DS029004 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 004 ******************************************************** *-------------------------------------------------- * DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O *-------------------------------------------------- FILE RELAT PRINTER FILE ENTRA AL 1 80 A

18

Page 19: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – a) Relatórios

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 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

Programa Exemplo 005FILE PRINTER utilizado por comando PRINT e DISPLAY com SEQUENCE

//DS029005 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //*--------------------------------------------------------------- //EZTPA01 EXEC PGM=EZTPA00 //ENTRA DD * ALBERTO 198802290000000001 ZIGOMAR 200105300000000010 MAFALDA 200010150000000100 VALDICE 199912230000001000 //RELAT DD SYSOUT=*

19

Page 20: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – a) Relatórios

//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 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

Page 21: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

b) Arquivo sequencial, registros tamanho fixo (entrada ou saída) :

FILE nome-do-arquivo [DEFER][área de I/O]

DEFER = somente abrir o arquivo quando a primeira operação de I/O for emitida. O padrão é a abertura de todos os arquivos no início da atividade.

Exemplo 006Cópia DE arquivo SAM PARA arquivo SAM sem área de I/O

//DS029006 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //*--------------------------------------------------------------- //EZTPA01 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 FILE SAIDA *-------------------------------------------------- * 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 *-------------

Page 22: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração 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 007Cópia 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

Page 23: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração 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

Page 24: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

c) Arquivo VSAM KSDS ou RRDS (criação)

FILE nome-do-arquivo VS CREATE [RESET] [NOVERIFY] [DEFER][área de I/O]

CREATE = indica a carga inicial de um arquivo VSAMRESET = indica que um arquivo já anteriormente carregado vai ser carregado novamente . O arquivo deve ter sido definido via IDCAMS com o atributo REUSE.NOVERIFY = indica que o erro 116(X’74’) deve ser ignorado. Este erro ocorre quando o arquivo não foi devidamente fechado pelo programa que o utilizou anteriormente. Em geral, só utilizado para emergências.DEFER = somente abrir o arquivo quando a primeira operação de I/O for emitida. O padrão é a abertura de todos os arquivos no início da atividade.

Exemplo 008Cópia DE arquivo SAM PARA arquivo KSDS (sendo criado)

//DS029008 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //* ----------------------------------------------------------- //* DELDEF ARQUIVO VSAM //* ----------------------------------------------------------- //DELDEF EXEC PGM=IDCAMS //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE (DV.#029.KL.EZTVSAM) PURGE SET MAXCC = 0 DEFINE CLUSTER - (NAME(DV.#029.KL.EZTVSAM) - VOLUMES(DDS500) - INDEXED - TO (2001365) - KEYS (15 00) - SHR(2 3) - NOIMBED - SPEED - REUSE) - DATA - (NAME(DV.#029.KL.EZTVSAM.DATA) - RECORDSIZE(0080 0080) - RECORDS(100 100) - CONTROLINTERVALSIZE(4096)) - INDEX (NAME(DV.#029.KL.EZTVSAM.INDEX)) //*--------------------------------------------------------------- //STEPEASY EXEC PGM=EZTPA00 //* OBSERVAR QUE OS DADOS DEVEM ESTAR CLASSIFICADOS PELA CHAVE //ENTRA DD * ALBERTO 198802290000000001 MAFALDA 200010150000000100 VALDICE 199912230000001000 ZIGOMAR 200105300000000010 //SAIDA DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR //SYSOUT DD SYSOUT=*

Page 25: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – c) Arquivo Vsam, criação

//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

Page 26: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

d) Arquivo VSAM KSDS ou RRDS (leitura sequencial de arquivo já criado)

FILE nome-do-arquivo VS [NOVERIFY] [DEFER][área de I/O]

NOVERIFY = indica que o erro 116(X’74’) deve ser ignorado. Este erro ocorre quando o arquivo não foi devidamente fechado pelo programa que o utilizou anteriormente. Em geral, só utilizado para emergências.DEFER = somente abrir o arquivo quando a primeira operação de I/O for emitida. O padrão é a abertura de todos os arquivos no início da atividade.

Exemplo 009Cópia DE arquivo KSDS (obviamente já criado) PARA arquivo SAM

//DS029009 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //STEPEASY EXEC PGM=EZTPA00 //ENTRA DD DSN=DV.#029.KL.EZTVSAM,DISP=SHR //SAIDA DD DSN=&&SAIDA,DISP=(NEW,PASS),DCB=(LRECL=80,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 009 ******************************************************** *-------------------------------------------------- * DECLARACAO DE ARQUIVOS (AREAS DE I/O NAO NECESSARIAS) *-------------------------------------------------- FILE ENTRA VS FILE SAIDA *-------------------------------------------------- * 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

Page 27: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – d) Arquivo Vsam, leitura sequencial

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.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

Page 28: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

e) Arquivo VSAM KSDS ou RRDS (com update)

FILE nome-do-arquivo VS UPDATE [NOVERIFY] [DEFER][área de I/O]

UPDATE = indica que o arquivo sofrerá atualização in-place (comando WRITE)NOVERIFY = indica que o erro 116(X’74’) deve ser ignorado. Este erro ocorre quando o arquivo não foi devidamente fechado pelo programa que o utilizou anteriormente. Em geral, só utilizado para emergências.DEFER = somente abrir o arquivo quando a primeira operação de I/O for emitida. O padrão é a abertura de todos os arquivos no início da atividade.

Exemplo 010Cópia DE arquivo SAM PARA arquivo KSDS (update = adicionar registros)

//DS029010 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //* ----------------------------------------------------------- //STEPEASY EXEC PGM=EZTPA00 //ENTRA DD * BARTIRA 198802290000000001 TIQUINHA 200010150000000100 //SAIDA 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 010 ******************************************************** *-------------------------------------------------- * DECLARACAO DE ARQUIVOS (AREAS DE I/O NAO NECESSARIAS) *-------------------------------------------------- FILE ENTRA FILE SAIDA VS UPDATE *-------------------------------------------------- * 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

Page 29: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – e) Arquivo Vsam, update (criação)

*------------- * 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

Page 30: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

Exemplo 011Update 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

Page 31: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – e) Arquivo Vsam, update (in-place)

31

Page 32: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

Exemplo 012Exclusão (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

Page 33: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – e) Arquivo Vsam, update (delete)

f) Arquivo sequencial, registros VBS (saída) :

FILE nome-do-arquivo VBS max-lrecl [max-blksize] [FULLTRK] [DEFER][área de I/O]

max-lrecl = literal que indica o tamanho máximo de um registro lógicomax-blksize = literal que indica o tamanho máximo de um blocoFULLTRK = o tamanho do bloco de saída deve ser o máximo que a capacidade da trilha permitir.DEFER = somente abrir o arquivo quando a primeira operação de I/O for emitida. O padrão é a abertura de todos os arquivos no início da atividade.

Exemplo 013Geração 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

Page 34: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração 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

Page 35: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

g) Arquivo sequencial, registros VBS (entrada) :

FILE nome-do-arquivo VBS max-lrecl [max-blksize] [FULLTRK] [DEFER][área de I/O]

max-lrecl = literal que indica o tamanho máximo de um registro lógicomax-blksize = literal que indica o tamanho máximo de um blocoFULLTRK = o tamanho do bloco de saída deve ser o máximo que a capacidade da trilha permitir.DEFER = somente abrir o arquivo quando a primeira operação de I/O for emitida. O padrão é a abertura de todos os arquivos no início da atividade.

Exemplo 014Leitura 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

Page 36: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE2 – Declaração de arquivos – g) Arquivo SAM reg.variável (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

Page 37: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

3 – DECLARAÇÃO DE DADOS – ÁREAS DE I/O A declaração de variáveis é feita através do DEFINE.

Observar que a própria keyword DEFINE é opcional, caso a declaração seja feita após a declaração de arquivos.

[DEFINE] [nome-arquivo:]nome-campo posição-inicial tamanho formato [decimais] outros-atributos

Posição inicial = pode ser especificada de uma das seguintes maneiras :

inteiro1 indica a posição inicial (relativa a 1) do campo dentro da área que o contém.

* indica que a posição inicial é a próxima disponível após a última declaração

* +inteiro2 indica que a posição inicial é n bytes após a próxima disponível após a última declaração, sendo n indicado através de inteiro2

nome-campo +inteiro3 indica que a posição inicial é n bytes após a o campo referenciado através do nome, sendo n indicado através de inteiro2

Tamanho = indica o tamanho, EM BYTES, do campo sendo definido

Formato = indica o formato dos dados no campo :

A alfanumérico.N numérico decimal zonado. Máximo 16 bytesP numérico decimal compactado (com sinal). Máximo 16

bytesU numérico decimal compactado (sem sinal).B numérico binário. Máximo 4 bytes.

Se especificado decimais, tem bit de sinalSe não especificado decimais, não tem bit de sinal

Decimais = indica a quantidade de casas decimais a considerar para o número contido

Outros atributos :

HEADING = indica a(s) literal(is) a ser(em) utilizada(s) nas linhas de cabeçalho que identificam os campos listados.

Sintaxe : HEADING (literal1 [literal2] ... [literaln])Cada literal será colocada numa linha de cabeçalho.

MASK = indica a máscara de edição para campos numéricos a listar.

Page 38: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE3 – Declaração de dados – áreas de I/O

Sintaxe : MASK BWZ (blank when zero) ouMASK HEX (para exibir em formato hexadecimal) ouMASK (máscara) A máscara pode ter Z’s e 9’s, ponto(s) (separador de visualização) e vírgula (separador decimal), além dos caracteres especiais desejados.

Outra forma de declaração é :

[DEFINE] [nome-arquivo:] [nome-campo] posição-inicial [nome-arquivo2:]nome-campo2

Neste caso, o tamnho, o formato e as decimais de nome-campo serão as mesmas de [nome-arquivo2:]nome-campo2

A título de exemplos, podemos inicialmente voltar aos exemplos anteriores, utilizados na parte referente à declaração de arquivos, onde alguns casos mais simples são colocados. Convém revê-los, agora que foi vista formalmente a sintaxe da declaração de dados.

Além desses já vistos, outros exemplos são mostrados juntamente com a declaração de áreas de trabalho, no capítulo seguinte.

Page 39: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

4 – DECLARAÇÃO DE DADOS – ÁREAS DE WORKA declaração de variáveis é feita através do DEFINE.

Observar que a própria keyword DEFINE é opcional, caso a declaração seja feita após a declaração de arquivos.

Declaração de área que NÃO É sub-divisão de outra área.

[DEFINE] nome-campo W tamanho formato [decimais] outros-atributos

W = indica área de work (trabalho), não vinculada a área de I/O.

Tamanho = indica o tamanho, EM BYTES, do campo sendo definido

Formato = indica o formato dos dados no campo :

A alfanumérico.N numérico decimal zonado. Máximo 16 bytesP numérico decimal compactado (com sinal). Máximo 16

bytesU numérico decimal compactado (sem sinal).B numérico binário. Máximo 4 bytes.

Se especificado decimais, tem bit de sinalSe não especificado decimais, não tem bit de sinal

Decimais = indica a quantidade de casas decimais a considerar para o número contido

Outros atributos :

HEADING = indica a(s) literal(is) a ser(em) utilizada(s) nas linhas de cabeçalho que identificam os campos listados.

Sintaxe : HEADING (literal1 [literal2] ... [literaln])Cada literal será colocada numa linha de cabeçalho.

MASK = indica a máscara de edição para campos numéricos a listar.

Sintaxe : MASK BWZ (blank when zero) ouMASK HEX (para exibir em formato hexadecimal) ouMASK (máscara) A máscara pode ter Z’s e 9’s, ponto(s) (separador de visualização) e vírgula (separador decimal), além dos caracteres especiais desejados.

Page 40: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE4 – Declaração de dados – áreas de work

Declaração de área que É sub-divisão de outra área.

[DEFINE] [nome-arquivo:]nome-campo posição-inicial tamanho formato [decimais] outros-atributos

Posição inicial = pode ser especificada de uma das seguintes maneiras :

inteiro1 indica a posição inicial (relativa a 1) do campo dentro da área que o contém.

* indica que a posição inicial é a próxima disponível após a última declaração

* +inteiro2 indica que a posição inicial é n bytes após a próxima disponível após a última declaração, sendo n indicado através de inteiro2

nome-campo +inteiro3 indica que a posição inicial é n bytes após o campo referenciado através do nome, sendo n indicado através de inteiro2

Tamanho = indica o tamanho, EM BYTES, do campo sendo definido

Formato = indica o formato dos dados no campo :

A alfanumérico.N numérico decimal zonado. Máximo 16 bytesP numérico decimal compactado (com sinal). Máximo 16

bytesU numérico decimal compactado (sem sinal).B numérico binário. Máximo 4 bytes.

Se especificado decimais, tem bit de sinalSe não especificado decimais, não tem bit de sinal

Decimais = indica a quantidade de casas decimais a considerar para o número contido

Outros atributos :

HEADING = indica a(s) literal(is) a ser(em) utilizada(s) nas linhas de cabeçalho que identificam os campos listados.

Sintaxe : HEADING (literal1 [literal2] ... [literaln])Cada literal será colocada numa linha de cabeçalho.

MASK = indica a máscara de edição para campos numéricos a listar.

Sintaxe : MASK BWZ (blank when zero) ouMASK HEX (para exibir em formato hexadecimal) ou

Page 41: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE4 – Declaração de dados – áreas de work

MASK (máscara) A máscara pode ter Z’s e 9’s, ponto(s) (separador de visualização) e vírgula (separador decimal), além dos caracteres especiais desejados.

VALUE = indica o conteúdo inicial do campo. Assume zero para campos numéricos e brancos para alfanuméricos

RESET = indica que o conteúdo inicial deve ser restaurado a cada execução de um comando JOB ou SORT

Exemplos :

Exemplo 015Declaração de variáveis

//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

Page 42: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE4 – Declaração 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

Page 43: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE4 – Declaração 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 =' +

Page 44: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE4 – Declaração 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

Page 45: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE4 – Declaração 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

Page 46: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE4 – Declaração 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

Page 47: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

5 – VARIÁVEIS EASYTRIEVE; PEGAR PARM DO EXECO EASYTRIEVE tem variáveis que são definidas automaticamente, e que podem ser acessadas (algumas não podem ser modificadas). As principais são as seguintes :

SYSDATE = campo alfanumérico de 8 bytes com a data do dia (AA/MM/DD – ver Características de instalação)

SYSTIME = campo alfanumérico de 8 bytes (HH.MM.SS – ver Características de instalação)

PARM-REGISTER = campo numérico binário de 4 bytes que contém o conteúdo do registrador 1 quando da entrada da execução do Easytrieve. O registrador 1 contém o endereço de uma lista de parâmetros fornecida através do PARM do EXEC. Deve ser usado através da chamada da subrotina EZTPX01 (ver Uso de PARM no cartão EXEC).

RETURN-CODE = campo numérico binário de 4 bytes cujo conteúdo é retornado ao sistema operacional ao término da execução do Easytrieve, para poder ser testado via COND.

RECORD-LENGTH = campo numérico binário de 2 bytes cujo conteúdo é colocado pelo Easy, e é o tamanho do registro lógico processado.

RECORD-COUNT = campo numérico binário de 4 bytes cujo conteúdo é colocado pelo Easy, e é o número sequencial do registro dentro do arquivo.

FILE-STATUS = campo com o file-status de um arquivo VSAM, cujo conteúdo é colocado pelo Easy e indica o resultado da última operação de I/O efetuada para o arquivo.Os file-status retornados são :

00 = OK 04 = EOF no GET 08 = DUP KEY no PUT ou WRITE 12 = KEY fora de sequência no PUT 16 = RECORD NOT FOUND no READ128 = falta DD no JCL para o arquivo

LEVEL = campo numérico que indica qual quebra está sendo processada (detalhes e exemplos adiante, no capítulo referente a relatórios).

TALLY = campo numérico cujo conteúdo é a quantidade de registros utilizados para a obtenção de um total.

Page 48: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE5 – Variáveis Easytrieve; pegar PARM do EXEC

Exemplo 016Utilização de variáveis 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 **************************'

Page 49: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE5 – Variáveis 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************************************

Page 50: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE5 – Variáveis 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 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.43-JSN00026 RELAT 9 OUTPUT SAM FIX UNBLK ASA 133 ENTRA 5 INPUT VSAM UNDEF 80

Page 51: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

6 – Atividade JOB e statements START e FINISHNa estrutura de um programa em Easytrieve, o que caracteriza a parte de procedimentos é um conjunto de ATIVIDADES (muitas vezes é uma única atividade).

Cada atividade é declarada através de um statement JOB ou um statement SORT.

A estrutura de uma atividade JOB é a seguinte :

PARMdeclaração arquivosdeclaração variáveisJOB ........comandos...definição do(s) REPORT(s)...

O statement JOB tem a seguinte sintaxe :

JOB [START nome-proc1] [FINISH nome-proc2] [NAME nome-job]

O statement JOB sem a especificação de INPUT faz o Easy assumir como INPUT o primeiro FILE que não seja PRINTER definido.

JOB INPUT NULL [START nome-proc1] [FINISH nome-proc2] [NAME nome-job]

O statement JOB com a especificação de INPUT NULL indica ao Easy que não há arquivo de entrada a ser lido automaticamente por ele.

JOB INPUT nome-arquivo [START nome-proc1] [FINISH nome-proc2] +[NAME nome-job]

JOB INPUT SQL [START nome-proc1] [FINISH nome-proc2] [NAME nome-job] (ver no capítulo específico Uso do DB2)

Page 52: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE6 – Atividade Job e statements Start e Finish

O statement JOB com a especificação 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 nome-arquivo KEY nome-campo1 [nome-campo2] ... + [START nome-proc1] [FINISH nome-proc2] [NAME nome-job]

O statement JOB com a especificação de INPUT com nome-de-arquivo e indicação de KEY, indica ao Easy que o arquivo de entrada a ser lido automaticamente por ele é aquele cujo nome está especificado, e que o(s) campo(s) especificado(s) através de KEY devem servir de base para um processo de MATCH (ver recurso de MATCH no capítulo específico).

A cláusula START indica o nome de uma procedure (PROC) que deve ser executada ANTES do início da leitura do arquivo.

A cláusula FINISH indica o nome de uma procedure (PROC) que deve ser executada APÓS a leitura automática de todo o arquivo, antes de encerrar a atividade.

A cláusula NAME dá nome à atividade JOB (somente para documentação).

Exemplo 017Atividade JOB sem INPUT explícito. Assume como input o primeiro FILE não-printer (arquivo existente, com registros)

//DS029017 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 017 ******************************************************** *-------------------------------------------------- * 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 FILE SAIDA AG 1 80 A

Page 53: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE6 – Atividade Job e statements Start e Finish

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 018Atividade JOB sem INPUT explícito. Assume como input o primeiro FILE não-printer (arquivo não 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 FILE SAIDA

Page 54: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE6 – 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 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 019Atividade 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 *-------------------------------------------------- FILE RELAT PRINTER

Page 55: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE6 – Atividade Job e statements Start e Finish

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 020Atividade 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 ************************************************** ******************************************************** //SAIDAS DD *

Page 56: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE6 – Atividade Job e statements Start e Finish

Exemplo 0213 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 ATIVIDADE 1

Page 57: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE6 – Atividade Job e statements Start e Finish

ATIVIDADE 1 129/05/01 9.50.53 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.50-JSN00018 ENTRA1 5 INPUT VSAM UNDEF 80 ATIVIDADE 2 ATIVIDADE 2 ATIVIDADE 2 ATIVIDADE 2 ATIVIDADE 2 129/05/01 9.50.53 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.50-JSN00023 ENTRA1 5 INPUT VSAM UNDEF 80 ATIVIDADE 3 ATIVIDADE 3 ATIVIDADE 3 ATIVIDADE 3 ATIVIDADE 3 129/05/01 9.50.53 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.50-JSN00028 ENTRA1 5 INPUT VSAM UNDEF 80

Page 58: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

7 - Comandos de processamento

a) Comando STOP

Quando executado, encerra imediatamente a execução da atividade (JOB ou SORT).

b) Expressões e assinalações (movimentos)

Uma expressão é utilizada para indicar um conjunto de operações entre literais e variáveis.As operações são :

+ soma- subtração* multiplicação / divisão

A ordem de resolução segue os padrões matemáticos.Podem ser utilizados parênteses para priorizar as operações.

Exemplos :

SALARIO * 0.5 + 10.00AL-QTDD / 100DESPREZADOS + 1

Em geral, as expressões são utilizadas para que o resultado do cálculo seja colocado (atribuido) numa variável receptora. Para tal, utiliza-se uma atribuição.

A sintaxe para a atribuição é :

variavelreceptora [INTEGER] [ | ROUNDED | TRUNCATED | ] = | variavel | literal | expressao |

ou

variavelreceptora [INTEGER] [ | ROUNDED | TRUNCATED | ] EQ | variavel | literal | expressao |

ou

variavelreceptora = variavel | AND | OR | XOR | | variavel | literal |

sendo

Page 59: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – a) Stop b) Expressões e assinalações

INTEGER = despreza a parte decimal do campo emissorROUNDED = soma 5 ao último algarismo significativo da parte decimal (ex. 10.75 é movido como 10.8)TRUNCATED = trunca os algarismos à direita da parte decimal e/ou os algarismos à esquerda da parte inteira.

Exemplos :

ADICIONAL = SALARIO * 0.5 + 10.00UMPORCENTO = AL-QTDD / 100DESPREZADOS = DESPREZADOS + 1SUBTOTAL = 0

Uma outra forma de atribuição (movimento) é através dos comandos MOVE e MOVE LIKE.

Sua sintaxe é a seguinte :

MOVE | nome-arquivo1 | nome-registro1 | nome-campo1 | literal1 | [ | nome-campo3 | literal3 | ] TO| nome-arquivo2 | nome-registro2 | nome-campo2 | [ | nome-campo4 | literal4 | ] [FILL literal5]

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 movimentonome-registro1 = nome da area de I/O que será a emissora no movimentonome-campo1 = campo emissorliteral1 = campo emissor

nome-arquivo2 = nome do arquivo cuja area de I/O será a receptora do movimentonome-registro2 = nome da area de I/O que será a receptora no movimentonome-campo2 = campo receptor

nome-campo3 = variável com um número que indica a quantidade de bytes no campo emissorliteral3 = literal numérica que indica a quantidade de bytes no campo emissor

nome-campo4 = variável com um número que indica a quantidade de bytes no campo receptorliteral4 = literal numérica 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.

Page 60: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

O comando MOVE LIKE tem a seguinte sintaxe:

MOVE LIKE | nome-arq1 | nome-reg1 | TO | nome-arq2 | nome-reg2 |

Os campos cujos nomes forem iguais tanto nos campos emissores quanto nos receptores serão movidos. Na sintaxe, temos :

nome-arq1 = nome do arquivo cuja area de I/O será a emissora do movimentonome-reg1 = nome do campo (área de I/O de arquivo) cujas areas serão as emissoras do movimentonome-arq2 = nome do arquivo cuja area de I/O será a receptora do movimentonome-reg2 = nome do campo (área de I/O de arquivo) cujas áreas serão as receptoras do movimento

Exemplo :

FILE ENTRAREG-ENTRA 1 80 ACOD-CLI 1 5 NCOD-AREA 6 3 ANOME-CLI 9 30 ASALDO 39 9 N 2FILE SAIREG-SAI 1 80 A COD-CLI 1 5 NCOD-AREA 6 3 ANOME-CLI 9 30 AVALOR 39 9 N 2..MOVE LIKE ENTRA TO SAI ouMOVE LIKE REG-ENTRA TO REG-SAI

Os campos COD-CLI, COD-AREA e NOME-CLI do arquivo ENTRA serão movidos para os campos COD-CLI, COD-AREA e NOME-CLI do arquivo SAI.

Exemplo 022Expressões e atribuições / movimentos

//DS029022 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //*--------------------------------------------------------------- //STEPEASY EXEC PGM=EZTPA00,PARM='PROCESSA=S' //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=*

Page 61: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – b) Expressões e assinalações

//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

Page 62: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – b) Expressões e assinalações

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

Page 63: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – b) Expressões e assinalações

Page 64: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

c) Identificação de pontos de programa; comandos GO TO, PROC, END-PROC e PERFORM

Os pontos de uma atividade, onde há comandos a executar, podem ser identificados através de um nome.

Para IDENTIFICAR uma instrução, basta atribuir um nome no local onde ela se encontra.

Se a referência é para executar um desvio, via GO TO, a identificação é somente o nome da instrução.

Se a referência é para a execução de uma sub-rotina (chamada ou referenciada através de PERFORM, DO, START, FINISH, a identificação deve ser acrescida de PROC.

O comando GO TO desvia para a instrução identificada através do nome indicado.

Sintaxe :

GO TO nome-instrução

O comando PERFORM executa uma procedure (ou rotina) : desvia para seu início (instrução identificada por uma nome, seguido de PROC), executa as instruções até o final da rotina (identificado com END-PROC) e volta para a instrução subsequente ao PERFORM.

Sintaxe :

PERFORM nome-rotina

Os nomes referenciados no START e/ou no FINISH devem ser de rotinas delimitadas por PROC e END-PROC.

Exemplo 023Identificação e referência de pontos de programa

//DS029023 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 2 200212230000001000 ERRO 3 200113230000001000 ERRO 4 200100230000001000

Page 65: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – 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'

Page 66: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – 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

Page 67: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – 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

Page 68: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

d) Comandos IF, ELSE, ELSE-IF, END-IF ; operadores relacionais

Utilizados para teste de condição, e respectivos redirecionamentos de fluxo de processamento.A sintaxe é :

IF condição comandos se condição satisfeitaEND-IF

ou

IF condição comandos se condição satisfeitaELSE comandos se condição não satisfeitaEND-IF

ou

IF condição comandos se condição satisfeitaELSE-IF condição comandos se condição satisfeita[ELSE-IF condição comandos se condição satisfeitaELSE-IF condição comandos se condição satisfeita]ELSE comandos se nenhuma condição satisfeitaEND-IF

Os IF’s podem ser aninhados (nested), devendo haver pares correspondentes de IF’s e respectivos END-IF’s; a indentação não é obrigatória, apesar de facilitar a visualização :

IF condição (satisfeita) IF condição comandos se condição satisfeita END-IFELSE (não satisfeita) IF condição comandos se condição satisfeita ELSE comandos se condição não satisfeita END-IFEND-IF

Page 69: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – d) IF, ELSE, ELSE-IF, END-IF; Operadores relacionais

A condição pode ser especificada da seguinte forma :

Relacionamento de campos Classes de campos Série de campos Bits de campos Presença de arquivos Presença de série de arquivos Relacionamento de registros

Vejamos cada um deles.

RELACIONAMENTO DE CAMPOS

Testa como o conteúdo de um campo é em relação ao conteúdo de outro campo.

Sintaxe :

IF campo |EQ|=|NE|NQ|¬=|LT|LS|<|LE|LQ|<=|GT|GR|>|GE|GQ|>=| |campo|literal|expressão|

Sendo :

EQ ou = equal (igual)NE ou NQ ou ¬= not equal (não igual / diferente)LT ou LS ou < less than (menor que)LE ou LQ ou <= less or equal (menor ou igual que)GT ou GR ou > greater than (maior que)GE ou GQ ou >= greater or equal (maior ou igual)

Exemplos :

CLASSES DE CAMPOS

Testa se um campo tem determinada característica ou não. Sintaxe :

IF campo |NOT| classe

classe podendo ser :

ALPHABETICNUMERICSPACESPACESZERO

Page 70: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – d) IF, ELSE, ELSE-IF, END-IF; Operadores relacionais

ZEROSZEROES

Exemplos :

IF DATA-NASC NOT NUMERIC ...IF NOME-CLI NOT ALPHABETIC ...IF SALDO ZERO ...SÉRIE DE CAMPOS

Testa se campo1 está ou não dentro dos limites de uma série delimitada por desde e até, cada qual podendo ser especificado através de uma literal (numérica ou alfanumérica) ou outra variável.

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 não ligado(s).

Sintaxe :

IF campo [NOT] |ON|OFF| |campo|literalhexa|

Exemplos :

IF ULTDIGANO ON X‘01’ ...IF BIT4567DOBYTE ON X‘0F’ ...IF ULTDIGNRO OFF X’01’ ...

PRESENÇA DE ARQUIVOS

Testa se um registro do arquivo em referência está ou não disponível para processamento.

Sintaxe :

Page 71: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – d) IF, ELSE, ELSE-IF, END-IF; Operadores relacionais

IF [NOT] [EOF] |nome-arquivo|PRIMARY|SECONDARY|

Exemplos na parte referente ao GET e a MATCH (Exemplo 026 e 028).

PRESENÇA DE SÉRIE DE ARQUIVOS

Testa se registro(s) do arquivo tem correspondente em outro ou não.

Sintaxe :

IF [NOT] MATCHED |nome-arquivo|PRIMARY|SECONDARY|

Exemplos na parte referente ao MATCH (Exemplo 028).

RELACIONAMENTO DE ARQUIVOS

Testa se registro(s) do arquivo tem duplicidade (ou qual duplicidade) em outro ou não.

Sintaxe :

IF [NOT] |DUPLICATE|FIRST-DUP|LAST-DUP| |nome-arq|PRIMARY|SECONDARY|

Exemplos na parte referente ao GET e a MATCH (Exemplo 026 e 028).

Exemplos gerais sobre uso do IF / ELSE / END-IF no próximo ítem, em conjunto com DO / END-DO / CASE.

Page 72: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

e) Comandos DO, END-DO e CASE

Sintaxe :

DO WHILE condição(primeiro testa a condição depois, se verdadeira, executa)..END-DO

ou

DO UNTIL condição(primeiro executa e depois testa a condição)..END-DO

A condição pode ser especificada da mesma forma como no comando IF.

Os blocos de DO / END-DO podem ser aninhados (nested); a indentação não é obrigatória, apesar de facilitar a visualização :

DO WHILE condição . . DO UNTIL condição . . DO WHILE . . END-DO . END-DO . . DO WHILE condição . END-DO . .END-DO

Page 73: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – e) DO, END-DO, CASE

CASE nome-campo WHEN literal [THRU] literal . . .[ WHEN literal [THRU] literal . . .][ OTHERWISE . .]END-CASE

Exemplos :

INDEXADOR = 1DO WHILE INDEXADOR LE MAXIMO IF CODAL EQ CODTAB(INDEXADOR) GO TO ACHOU ELSE INDEXADOR = INDEXADOR + 1 END-IFEND-DO

INDEXADOR = 1DO UNTIL INDEXADOR GE MAXIMO IF CODAL EQ CODTAB(INDEXADOR) GO TO ACHOU ELSE INDEXADOR = INDEXADOR + 1 END-IFEND-DO

CASE COD-CLIWHEN 1 THRU 9999 PERFORM CLI-EMP-0WHEN 10000 THRU 19999 PERFORM CLI-EMP-1OTHERWISE PERFORM CLI-MISCEND-CASE

Page 74: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – e) DO, END-DO, CASE

Exemplo 024IF, 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

Page 75: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – 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 *-------------

Page 76: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – 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

Page 77: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – 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

Page 78: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE7 – Comandos de processamento – e) DO, END-DO, CASE

Page 79: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

8 - Statement REPORT e complementares

O statement REPORT declara as características de um relatório e as linhas que irão compo-lo.Ele tem diversas cláusulas, e, além disso, associadas a ele existem outras declarativas que complementam as especificações das características.

a) Comando PRINT

Para a impressão de linhas de detalhe em um relatório, deve ser utilizado o comando PRINT :

PRINT nome-relatorio

A impressão das demais linhas é feita de forma automática pelo EASY.

b) Statement REPORT

A sintaxe básica do REPORT e statements complementares é :

REPORT nome-relatório [cláusulas do REPORT][statements complementares]

c) Statements complementares ao REPORT : resumo

SEQUENCE para indicar a sequência de impressão das linhas de detalheCONTROL para indicar os campos de controle de quebraSUM para indicar os campos a totalizarTITLE para declarar as linhas de cabeçalhoHEADING para declarar as constantes identificadoras dos campos listadosLINE para declarar as linhas de detalheprocedures para declarar procedimentos que são invocados pelo Easy automaticamente em eventos relacionados à impressão do relatório

As procedures podem ser :

REPORT-INPUT para selecionar e/ou modificar dados do relatório BEFORE-LINE para algum procedimento após a linha de detalhe ser montada, antes de ser impressaAFTER-LINE para algum procedimento após a linha de detalhe impressa BEFORE-BREAK para algum procedimento após a linha de total ser montada, antes de ser impressaAFTER-BREAK para algum procedimento após a linha de total ser impressaENDPAGE para imprimir linhas de rodapéTERMINATION para algum procedimento após o término da impressão do relatório

Page 80: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

d) componentes de um relatório

Os componentes de um relatório podem ser exemplificados da seguinte forma :

régua para simples referêncialiteral controlada

data controlada por NODATE pelo PARM PAGEWRD

linha de total (controlada pelo CONTROL)

linhas de detalhe (controlada pelo(s) LINE(s)

linha (de cabeçalho) identificadora dos campos (controlada pelos HEADING’s)

linha de cabeçalho (controlada pelo(s) TITLE(s))

.... 1 1 1 2 3 4 5 .... 2 3123456789012345678901234567890123456789012345678901....90123456789012

18/05/01 PROGRAMA EXEMPLO 001 .... PAGINA 1 AL-NOME AL-DATA AL-SALDO

ALBERTO 19880229 ,01 ZIGOMAR 20010530 ,10 MAFALDA 20001015 1,00 VALDICE 19991223 10,00

11,11

Page 81: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

e) estrutura do REPORT

A estrutura para a declaração do REPORT, suas características e procedimentos correlatos, é a seguinte (a especificação deve ser feita na ordem indicada):

PARMdeclaração arquivosdeclaração variáveisJOB.........*----------------------REPORTSEQUENCECONTROLSUMTITLEHEADINGLINE*------------------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) Cláusulas do REPORT

Page 82: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – 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 nome para referência no PRINT ou DISPLAY. Pode haver n relatórios para cada FILE (DD)

SUMMARY devem ser impressos somente os totais especificados na cláusula CONTROL

SUMSPACE literal indica o tamanho para impressão dos campos de total. O nro especificado através da literal é somado ao tamanho (em dígitos) do campo para determinar o tamanho do campo de total (máximo possível resultante = 18)

TALLYSIZE indica o tamanho do campo TALLY do relatório (existe um TALLY para cada REPORT)

DTLCTL |EVERY|FIRST|NONE| indica características das linhas de detalhe.EVERY indica que o conteúdo dos campos de controle deve ser impresso em todas as linhas de detalheFIRST indica que o conteúdo dos campos de contrile deve ser impresso sempre na primeira linha de detalhe de cada págian , e na primeira linha após cada quebra de controle.NONE indica que os campos de controle não devem ser impressos nas linhas de detalhe.

SUMCTL ([x] [y]) indica características das linhas de total.x pode ser :

ALL = campos de controle devem ser impressos em

Page 83: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – Statement Report; e) Estrutura do Report

todas as linhas de totalHIAR = imprimir somente os campos de controle de mesmo nível, ou de nível mais altoNONE = não imprimir campos de controle nas linhas de totalTAG = deve ser impresso o nome do campo de total à esquerda da linha de total (deve haver espaço suficiente)

y pode ser : DTLCOPY = imprimir variáveis de detalhe nas linhas de total, se LEVEL=1DTLCOPYALL = idem, para todos os LEVEL

FILE nome-arquivo Indica o nome do arquivo para relatórios muito grandes (o VFM é insuficiente)

PRINTER nome-arquivo Indica o nome do FILE a ser utilizado por este REPORTPAGESIZE literal1 literal2 Modifica o tamanho máximo, em linhas, da página.

literal1 aplica-se às linhas de LINEliteral2 aplica-se aos DISPLAYS

LINESIZE literal Modifica o tamanho máximo, em bytes, das linhas.SKIP literal Indica o número de linhas em branco entre um PRINT e

outro (entre um LINE nn e o próximo LINE 01SPACE literal Coloca tantos espaços em branco entre um campo e outro,

quanto especificado na literal. Assume 3.TITLESKIP literal Indica o número de linhas em branco entre a última linha de

cabeçalho geral e a primeira de cabeçalho identificador dos campos

| SPREAD | NOSPREAD | Default SPREAD. Espalha os dados na linha de detalhe, centralizando.

NOADJUST Vai colocando os dados nas linhas de detalhe da esquerda para a direita. Se omitido, centraliza na linha.

NODATE Faz com que NÃO seja impressa a data do dia na primeira linha de cabeçalho

NOPAGE Faz com que NÃO sejam impressas a constante identificadora de página, e o número da página, nas linhas de cabeçalho

NOHEADING Faz com que NÃO seja(m) impressa(s) a(s) linha(s) de cabeçalho identificadora(s) d(s) campo(s)

LIMIT literal indica o número máximo de registros a processar no relatório

EVERY literal indica que deve ser impressa somente 1 linha a cada n PRINTs. Se especificar EVERY 10 e forem dados 1000 PRINTs para 1000 registros de um arquivo, somente os registros 10, 20, 30 ... serão impressos

Page 84: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

g) Statements complementares ao REPORT : detalhes

SEQUENCE campo1 [D] campo2 [D] ...

Indica a ordem (campo ou campos chave) com que as linhas devem ser impressas.Especificar D se a sequência for decrescente (o default é crescente).

CONTROL | campo1 [D] campo2 [D] ... | FINAL | | NEWPAGE | RENUM | NOPRINT

Indica em qual(is) quebra(s) deve(m) ser impressa(s) a(s) linha(s) de total.Se algum campo for especificado, a linha de total final também será impressa.FINAL indica para imprimir só a linha de total final.

SUM campo1 [campo2 ... campon]

Indica quais os campos numéricos que devem ser totalizados. Devem ter especificação da quantidade de decimais na sua declaração (se necessário, colocar zero; caso contrário, ocorrerá erro de compilação).

TITLE nrolin |campo|literal |+nro|-nro| COL nro

nrolin = número da linha de cabeçalho

|campo|literal| = conteúdo a ser impresso

+nro -nro = o nro especificado é somado ou subtraido do valor de SPACE para indicar quantos espaços em branco são desejados entre o campo anterior e o atual

COL nro = indica o número da coluna em que se deseja colocar o próximo campo

HEADING campo (‘xxx’ [‘yyy’ ...])

Indica a constante que deve identificar um campo nas linhas de cabeçalho que os identificam.Cada literal é colocada numa linha.Pode-se especificar colocando em sequência, ou separadamente, indicando o número da linha.

Page 85: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – Statement Report; g) Statements complementares - detalhes

LINE nrolin |campo|literal |+nro|-nro| |COL|POS| nro

nrolin = número da linha de cabeçalho

|campo|literal| = conteúdo a ser impresso

+nro -nro = o nro especificado é somado ou subtraido do valor de SPACE para indicar quantos espaços em branco são desejados entre o campo anterior e o atual

COL nro = indica o número da coluna em que se deseja colocar o próximo campo

POS nro = indica o número do ítem da LINE 01 na direção do qual o campo sendo especificado deve ser colocado

Nos exemplos a seguir, a não ser quando especificado em contrário, serão sempre colocadas as cláusulas NOADJUST e SPACE 1 para que a parte significativa do relatório possa ser visualizada mesmo sendo exibidas somente as 7 primeiras posições.

Exemplo 025REPORTS

//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

Page 86: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – 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

Page 87: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – 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

Page 88: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – 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 *-------------

Page 89: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – 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

Page 90: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – Statement Report; g) Statements complementares - detalhes

- 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 129/05/01 PROGRAMA EXEMPLO 025 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 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 025 RELAT03 - AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT 0ZIGOMAR 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 ALBERTO 19880229 100,01 1,00 012 6 ALBERTO 19880229 100,01 1,00 012 6 129/05/01 PROGRAMA EXEMPLO 025 RELAT04 - 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 VALDICE 19991223 10,00 56,78 789 36 VALDICE 19991223 10,00 56,78 789 36 MAFALDA 20001015 1,00 3,40 456 24 MAFALDA 20001015 1,00 3,40 456 24 ZIGOMAR 20010530 ,10 ,20 123 12 ZIGOMAR 20010530 ,10 ,20 123 12 222,22 122,76 156 129/05/01 PROGRAMA EXEMPLO 025 RELAT05 - 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

Page 91: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – Statement Report; g) Statements complementares - detalhes

MAFALDA 20001015 1,00 3,40 456 24 VALDICE 19991223 10,00 56,78 789 36 VALDICE 19991223 10,00 56,78 789 36 156 129/05/01 EXEMPLO 025 RELAT07 ---------------------------- - 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 025 RELAT08 ---------------------------- - VALOR NOME DATA TOTAL VALOR PESSOA CADAST ----- UNITARIO 0ALBERTO 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 222,22 122,76 129/05/01 PROGRAMA EXEMPLO 025 RELAT09 - 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

Page 92: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – 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

Page 93: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – Statement Report; g) Statements complementares - detalhes

AL-VTOT = 10,00 0 222,22 129/05/01 PROGRAMA EXEMPLO 025 RELAT11 - AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT 0ZIGOMAR 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 22,20 120,76 144 129/05/01 PROGRAMA EXEMPLO 025 RELAT12 - AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT 0*** VERIFICAR DATA !!! ALBERTO 19880229 100,01 1,00 012 6 *** VERIFICAR DATA !!! ALBERTO 19880229 100,01 1,00 012 6 ZIGOMAR 20010530 ,10 ,20 123 12 ZIGOMAR 20010530 ,10 ,20 123 12 *** VERIFICAR DATA !!! MAFALDA 20001015 1,00 3,40 456 24 *** VERIFICAR DATA !!! MAFALDA 20001015 1,00 3,40 456 24 *** VERIFICAR DATA !!! VALDICE 19991223 10,00 56,78 789 36 *** VERIFICAR DATA !!! VALDICE 19991223 10,00 56,78 789 36 222,22 122,76 156 129/05/01 PROGRAMA EXEMPLO 025 RELAT13 - AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT 0ALBERTO 19880229 100,01 1,00 012 6 *** VERIFICAR DATA !!! ALBERTO 19880229 100,01 1,00 012 6 *** VERIFICAR DATA !!! ZIGOMAR 20010530 ,10 ,20 123 12 ZIGOMAR 20010530 ,10 ,20 123 12 MAFALDA 20001015 1,00 3,40 456 24 *** VERIFICAR DATA !!! MAFALDA 20001015 1,00 3,40 456 24 *** VERIFICAR DATA !!! VALDICE 19991223 10,00 56,78 789 36 *** VERIFICAR DATA !!! VALDICE 19991223 10,00 56,78 789 36 *** VERIFICAR DATA !!! 222,22 122,76 156 129/05/01 PROGRAMA EXEMPLO 025 RELAT14 - AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT 0ALBERTO 19880229 100,01 1,00 012 6 19880229 100,01 1,00 012 6 VAI IMPRIMIR QUEBRA NIVEL 1 ALBERTO 200,02 2,00 12 0MAFALDA 20001015 1,00 3,40 456 24 20001015 1,00 3,40 456 24

Page 94: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – Statement Report; g) Statements complementares - detalhes

VAI IMPRIMIR QUEBRA NIVEL 1 MAFALDA 2,00 6,80 48 0VALDICE 19991223 10,00 56,78 789 36 19991223 10,00 56,78 789 36 VAI IMPRIMIR QUEBRA NIVEL 1 VALDICE 20,00 113,56 72 0ZIGOMAR 20010530 ,10 ,20 123 12 20010530 ,10 ,20 123 12 VAI IMPRIMIR QUEBRA NIVEL 1 ZIGOMAR ,20 ,40 24 0VAI IMPRIMIR QUEBRA NIVEL 2 222,22 122,76 156 129/05/01 PROGRAMA EXEMPLO 025 RELAT15 - AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT 0ALBERTO 19880229 100,01 1,00 012 6 19880229 100,01 1,00 012 6 ALBERTO 200,02 2,00 12 IMPRIMIU QUEBRA NIVEL 1 0MAFALDA 20001015 1,00 3,40 456 24 20001015 1,00 3,40 456 24 MAFALDA 2,00 6,80 48 IMPRIMIU QUEBRA NIVEL 1 0VALDICE 19991223 10,00 56,78 789 36 19991223 10,00 56,78 789 36 VALDICE 20,00 113,56 72 IMPRIMIU QUEBRA NIVEL 1 0ZIGOMAR 20010530 ,10 ,20 123 12 20010530 ,10 ,20 123 12 ZIGOMAR ,20 ,40 24 IMPRIMIU QUEBRA NIVEL 1 0 222,22 122,76 156 IMPRIMIU QUEBRA NIVEL 2 129/05/01 PROGRAMA EXEMPLO 025 RELAT16 - AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT 0ALBERTO 19880229 100,01 1,00 012 6 19880229 100,01 1,00 012 6 ALBERTO 200,02 2,00 12 0MAFALDA 20001015 1,00 3,40 456 24 20001015 1,00 3,40 456 24 MAFALDA 2,00 6,80 48 0VALDICE 19991223 10,00 56,78 789 36 19991223 10,00 56,78 789 36 VALDICE 20,00 113,56 72 0ZIGOMAR 20010530 ,10 ,20 123 12 20010530 ,10 ,20 123 12 ZIGOMAR ,20 ,40 24 0 222,22 122,76 156 - - - - - - - -

Page 95: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE8 – Statement Report; g) Statements complementares - detalhes

- - - -------------- RODAPEH --------------- 129/05/01 PROGRAMA EXEMPLO 025 RELAT17 - AL-NOME AL-DATA AL-VTOT AL-VUNI AL-COD AL-QPACOT 0ALBERTO 19880229 100,01 1,00 012 6 19880229 100,01 1,00 012 6 ALBERTO 200,02 2,00 12 0MAFALDA 20001015 1,00 3,40 456 24 20001015 1,00 3,40 456 24 MAFALDA 2,00 6,80 48 0VALDICE 19991223 10,00 56,78 789 36 19991223 10,00 56,78 789 36 VALDICE 20,00 113,56 72 0ZIGOMAR 20010530 ,10 ,20 123 12 20010530 ,10 ,20 123 12 ZIGOMAR ,20 ,40 24 0 222,22 122,76 156 0-X-X-X-X-X-X-X-X- FIM DO RELAT17 -X-X-X-X-X-X-X-X-

Page 96: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

9 - Comandos de I/O

a) Comando DISPLAY

Para exibir constantes e/ou variáveis na SYSPRINT ou outro DD. Sintaxe :

DISPLAY [HEX] nome-relatorio | lit1 | var1 | [ ... | litn | varn | ]

Se nome do relatório for omitido, será assumida impressão no DD SYSPRINT.

Se for especificado, colocar o nome declarado na cláusula FILE.

Exemplos :

DISPLAY ‘REG DELETADOS = ‘ CONT-DELDISPLAY ‘ERRO ! PGM CANCELADO.’DISPLAY HEX REG-CTLDISPLAY RELVEND ‘******* FIM *********’DISPLAY CADCLI:FILE-STATUS

b) Comando GET

Para efetuar a leitura sequencial de um registro lógico, em arquivos SAM ou VSAM.

Sintaxe :

GET nome-arquivo [STATUS]

STATUS aplica-se somente para arquivos VSAM. Status 4 = EOF; Status 8 = existem registros com mesma chave em índice alternado

c) Comando PUT

Para efetuar a gravação sequencial de um registro lógico em arquivos SAM ou VSAM.

Sintaxe :

PUT nome-arquivo [ FROM | nome-arquivo | nome-reg | ] [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 sequência

Page 97: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE9 – 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 disponível após o GET subsequente feito com sucesso (ou uma leitura automática via JOB INPUT). Sintaxe :

POINT nome-arquivo |=|EQ|GE|GQ|>=| |campo|literal| [STATUS]

Exemplo :

POINT CADCLI GE ‘100000’ STATUSIF EOF CADCLI DISPLAY ‘NÃO ACHOU. DEU EOF...’ STOPEND-IFIF CADCLI:FILE-STATUS NE 0 DISPLAY ‘NEM FEZ O POINT OK. IMAGINA O GET...’ STOPEND-IFLEDENOVOGET CADCLI STATUSIF EOF CADCLI GO TO PROCESSOUEND-IFIF CADCLI:FILE-STATUS NE 0 DISPLAY ‘ERRO NO GET’ STOPEND-IFIF CODCLI NE ‘100000’ DISPLAY ‘FALTA REGISTRO HEADER DE GRUPO’ GO TO LEDENOVOEND-IFPROCESSAR.....PROCESSOU...

Page 98: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE9 – Comandos de I/O a) Display b) Get c) Put

e) Comando READ

Para efetuar a leitura aleatória (“randômica”) de um registro lógico em um arquivo VSAM.

Sintaxe :

READ nome-arquivo KEY |campo|literal-alfa| [STATUS]

Status 16 = registro não localizado

Exemplo :

READ CADCLI KEY CODCLI STATUSIF CADCLI:FILE-STATUS NE 0 DISPLAY ‘NÃO ACHOU’ STOPEND-IF

READ CADCLI KEY ‘0120034’ STATUSIF CADCLI:FILE-STATUS NE 0 DISPLAY ‘NÃO ACHOU’ STOPEND-IF

f) Comando WRITE

Para efetuar a gravação de novos registros, update de registros já existentes, ou delete de um registro lógico num arquivo VSAM.

Sintaxe :

WRITE nome-arquivo [|UPDATE|ADD|] [FROM |nome-arq|campo| ] [STATUS]

Para efetuar a gravação de novos registros ou fazer update de registros já existentes.

ou

WRITE nome-arquivo DELETE [STATUS]

Para efetuar o delete (lógico) de um registro num arquivo VSAM.

Status 8 = chave duplicada

Page 99: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE9 – Comandos de I/O a) Display b) Get c) Put

Exemplos :

WRITE CADCLI DELETE STATUSIF CADCLI:FILE-STATUS NE 0 DISPLAY ‘ERRO GRAVE’ STOPEND-IF

(atualiza campos desejados na área de I/O)WRITE CADCLI UPDATE STATUSIF CADCLI:FILE-STATUS NE 0 DISPLAY ‘ERRO GRAVE’ STOPEND-IF

(prepara área de I/O)WRITE CADCLI ADD FROM NOVO-CLIENTE STATUSIF CADCLI:FILE-STATUS NE 0 DISPLAY ‘CHAVE DUPLICADA’ STOPEND-IF

Exemplo 026Comandos 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) *--------------------------------------------------

Page 100: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE9 – 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

Page 101: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE9 – 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

Page 102: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

10 – Atividade SORT

A atividade SORT indica um processo de classificação de um arquivo que possa ser tratado sequencialmente, e os procedimentos que eventualmente possam ser feitos, relacionados a tal processo de classificação.

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 do FILE para entrada

nome-arquivo2 = nome do FILE para saida

literal1 = nro aproximado de registros a classificar

literal2 = nro de arquivos de trabalho

nome-proc = nome da rotina que tem acesso aos registros após a leitura, para modificá-los e / ou filtrá-los

nome-ativ = nome (somente para documentação)

Nos procedimentos referentes à atividade SORT, não é permitido utilizar comandos que efetuem I/O (Display, Get, Point, Print, Put, Read, Write, Dli, Idms, Sql).

Observar que o DISPLAY para a SYSPRINT é válido.

Page 103: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE10 – Atividade Sort

Exemplo 027SORT

//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

Page 104: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE10 – 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

Page 105: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

11 – RECURSO de MATCH

O recurso de MATCH (intercalação / merge) de arquivos é possível devido à possibilidade de especificar, num teste de condição, testes de presença de arquivos, de presença de série de arquivos, e de relacionamento de arquivos.

Relembrando a sintaxe desses casos indicada inicialmente no capítulo referente ao IF, temos :

PRESENÇA DE ARQUIVOS = testa se um registro do arquivo em referência está ou não disponível para processamento. IF [NOT] [EOF] |nome-arquivo|PRIMARY|SECONDARY|

PRESENÇA DE SÉRIE DE ARQUIVOS = testa se registro(s) do arquivo tem correspondente em outro ou não.

IF [NOT] MATCHED |nome-arquivo|PRIMARY|SECONDARY|

RELACIONAMENTO DE ARQUIVOS = testa se registro(s) do arquivo tem duplicidade (ou qual duplicidade) em outro ou não.

IF [NOT] |DUPLICATE|FIRST-DUP|LAST-DUP| |nome-arq|PRIMARY|SECONDARY|

Exemplo 028MATCH

//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

Page 106: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE11 – Recurso de Match

NOME CLIENTE 032 12345678932(011)2223344 //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

Page 107: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE11 – Recurso de Match

END-IF * *------------- * 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

Page 108: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

12 - Uso de sub-programas (comando CALL)

Através do comando CALL pode-se chamar para execução uma sub-rotina, mesmo desenvolvida em outra linguagem, desde que siga as linkage conventions.

Sintaxe :

CALL nomerotina [ USING |campo1|literal| [|campo2|literal|] ... ] +[ RETURNS nome-campo ]

Os nomes de campo e/ou literais indicam os parâmetros que são passados PARA a sub-rotina.

O nome do campo em RETURNS indica um campo numérico que deve receber um return-code DA sub-rotina.

Exemplo 029CALL

//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

Page 109: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE12 – Uso de sub-programas (comando Call)

WSR-DATA1-SS ZZ +7 2 N 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 *********************************************

Page 110: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE12 – Uso de sub-programas (comando Call)

Page 111: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

13 - Tabelas : declaração e referência no processamento

A utilização de tabelas internas de memória é indicada na declaração das variáveis através da indicação da quantidade de ocorrências do campo, e, na parte de procedimentos, da indicação de um índice que indica qual das ocorrências deseja-se referenciar.

A quantidade de ocorrências é indicada através da cláusula OCCURS.

A referência ao indexador é feita colocando-se o nome do campo ou literal numérica que tenham o número a ser usado para indexar, entre parênteses, após o nome da variável que tenha OCCURS (ou que seja subordinada a um campo com OCCURS).

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 ’ TB-MES02 TB-MESES +011 11 A VALUE ‘02FEVEREIRO’ TB-MES03 TB-MESES +022 11 A VALUE ‘03MARCO ’ TB-MES04 TB-MESES +033 11 A VALUE ‘04ABRIL ’ TB-MES05 TB-MESES +044 11 A VALUE ‘05MAIO ’ TB-MES06 TB-MESES +055 11 A VALUE ‘06JUNHO ’ TB-MES07 TB-MESES +066 11 A VALUE ‘07JULHO ’ TB-MES08 TB-MESES +077 11 A VALUE ‘08AGOSTO ’ TB-MES09 TB-MESES +088 11 A VALUE ‘09SETEMBRO ’ TB-MES10 TB-MESES +099 11 A VALUE ‘10OUTUBRO ’ TB-MES11 TB-MESES +110 11 A VALUE ‘11NOVEMBRO ’ TB-MES12 TB-MESES +121 11 A VALUE ‘12DEZEMBRO ’ . . . 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

Page 112: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE13 – Tabelas : declaração e referência 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 05MAIO 06JUNHO + 07JULHO 08AGOSTO 09SETEMBRO 10OUTUBRO 11NOVEMBRO 12DEZEMBRO ’ . . . 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

Exemplo 030Tabelas

//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

Page 113: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE13 – Tabelas : declaração e referência 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

Page 114: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE13 – Tabelas : declaração e referência 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) * ---------------------------------

Page 115: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE13 – Tabelas : declaração e referência 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

Page 116: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE13 – Tabelas : declaração e referência 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

Page 117: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE13 – Tabelas : declaração e referência 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

Page 118: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE13 – Tabelas : declaração e referência 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

Page 119: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

14 – Uso de DB2

Através da atividade JOB, pode-se efetuar a leitura (SELECT) de tabela DB2. Para tanto, deve-se especificar na declaração da atividade JOB INPUT SQL, e, imediatamente após, 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 após o SELECT se houver pelo menos uma única linha que atenda aos requisitos especificados, após o

processamento, se não for especificado em contrário (como um STOP), será efetuado um GO TO JOB que fará nova tentativa de obtenção de uma nova linha.

quando não houver mais nenhuma linha que preencha os requisitos especificados, será efetuado um encerramento da atividade; portanto, o teste de fim é automático, e não adianta ser colocado nos procedimentos do job após o select.

não deve ser declarado cursor, nem open ou close.

O(s) critério(s) de seleção para a entrada são especificados no comando SELECT que DEVE estar imediatamente após o JOB. A declaração 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 condição] + [ORDER coluna1 [... , colunan] ] + INTO :campo1 [ ... , campon] .. Portanto, os procedimentos de uma atividade declarada da forma acima, equivalem a especificar uma atividade JOB normal (JOB INPUT), e, dentro do processamento, efetuar o OPEN + FETCH + CLOSE, tendo sido declarado, junto com as variáveis, o(s) cursor(es) necessário(s)...SQL DECLARE nomecursor CURSOR FOR +

SELECT coluna1 [, coluna2..... , colunan ] FROM nometabela + [WHERE condição] + [ORDER coluna1 [... , colunan] ] .JOB INPUT xxx [START nome-proc1] [FINISH nome-proc2] [NAME nome-job] ..SQL OPEN nomecursorloop SQL FETCH nomecursorSQL CLOSE nomecursor..

Page 120: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

Exemplo 031Uso 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 *---------------------------

Page 121: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – 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 *-------------------* ERRO-DB2. PROC

Page 122: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

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 * *-------------------*

Page 123: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – 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 DISPLAY 'JOB INPUT NULL ' WOPERACAO ' ERRO. SQLCODE = ' SQLCODE

Page 124: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

ELSE DISPLAY 'JOB INPUT NULL ' WOPERACAO ' OK. SQLCODE = ' 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 = 1 JOB INPUT SQL CURSOR99 VAI COMECAR JOB INPUT SQL CURSOR99 VAI TERMINAR. LINHAS OBTIDAS = 0 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 = 100 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 = 100 JOB INPUT NULL CURSOR99 CLOSE OK. SQLCODE = JOB INPUT NULL CURSOR99. LINHAS OBTIDAS = 0

Page 125: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

Exemplo 032Uso 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

Page 126: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

LENGTH-B W 2 B 0 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 ('TAB' '---') TB-NAME-X TAB +09 9 A HEADING ('COL' '---') TB-COLNO-B TAB +18 3 N MASK ('ZZ9') HEADING ('SQ' '--') TB-COLTYPE-X TAB +21 8 A HEADING ('TP' '--') TB-TAMANHO-X TAB +29 6 A HEADING ('TAM' '---') TB-NULLS-X TAB +35 1 A HEADING ('NUL' '---') TB-REMARKS-X TAB +36 45 A HEADING ('DESC' '----') TB-REMARKS-Y TAB +36 22 A HEADING ('DESC' '----') TB-IXNAME-X TAB +81 9 A HEADING ('IND' '---') TB-COLNAME-X TAB +90 9 A HEADING ('COL' '---') TB-ORDERING-X TAB +99 1 A HEADING ('ORD' '---') TB-COLNO1-B TAB +100 3 N MASK ('ZZ9') HEADING ('SQ' '--') TB-RELNAME-X TAB +103 8 A HEADING ('RELAC' '-----') *--------------------------- * 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 *

Page 127: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – 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 = LENGTH-B AX-SCALE-B = SCALE-B AX-PONTO-X = '.'

Page 128: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

IF AX-LENGTH1-B = '0' AX-LENGTH1-B = ' ' END-IF IF AX-LENGTH2-B = '0' AX-LENGTH2-B = ' ' END-IF IF AX-LENGTH3-B = '0' AX-LENGTH3-B = ' ' END-IF TB-TAMANHO-X(SB) = AX-TAMANHO-X ELSE AX-LENGTH-B = LENGTH-B AX-SCALE-B = ' ' AX-PONTO-X = ' ' IF AX-LENGTH1-B = '0' AX-LENGTH1-B = ' ' END-IF IF AX-LENGTH2-B = '0' AX-LENGTH2-B = ' ' END-IF IF AX-LENGTH3-B = '0' AX-LENGTH3-B = ' ' END-IF TB-TAMANHO-X(SB) = AX-TAMANHO-X END-IF ELSE AX-LENGTH-B = LENGTH-B AX-SCALE-B = ' ' AX-PONTO-X = ' ' IF AX-LENGTH1-B = '0' AX-LENGTH1-B = ' ' END-IF IF AX-LENGTH2-B = '0' AX-LENGTH2-B = ' ' END-IF IF AX-LENGTH3-B = '0' AX-LENGTH3-B = ' ' END-IF TB-TAMANHO-X(SB) = AX-TAMANHO-X END-IF TB-TBNAME-X(SB) = TBNAME-X TB-NAME-X(SB) = NAME-X TB-COLNO-B(SB) = COLNO-B TB-COLTYPE-X(SB) = COLTYPE-X TB-NULLS-X (SB) = NULLS-X TB-REMARKS-X (SB)= REMARKS-X *---------------------------------------------------------------------* * ACESSA TABELA DE INDICES * *---------------------------------------------------------------------* PEGA-INDEXES-RELACAO. PROC AX-STEP-X = 'OPEN C02' SQL OPEN C02 PERFORM ERRO-DB2

Page 129: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – 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, +

Page 130: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

:COLNO1-B 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

Page 131: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

IX = IX + 1 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) *

Page 132: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

*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) + * 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 TAM NUL --- ---- -- -- --- --- 0NRFILIAL NUMERO FILIAL 1 DECIMAL 3 N CDCIDADE CODIGO CIDADE 2 SMALLINT 2 N CDNOMEFA CODIGO NOME FANTASIA 3 SMALLINT 2 N TPFRANQU TIPO FRANQUIA 4 SMALLINT 2 N CDOFERTA CODIGO OFERTA 5 SMALLINT 2 N INGRHEAD INDICADOR GROUP HEAD 6 CHAR 1 N

Page 133: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

Exemplo 033Uso 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

Page 134: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – 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 C04' SQL OPEN C04 PERFORM ERRO-DB2 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

Page 135: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – 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

Page 136: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

SYSPLANAU 12 SYSPLANDE 5 SYSPLSYST 5 SYSPRINT 2 SYSPROCED 17 SYSRELS 13 SYSRESAUT 13 SYSSTMT 10 SYSSTOGRO 11 SYSSTRING 8 SYSSYNONY 7 SYSTABAUT 28 SYSTABLEP 27 SYSTABLES 77 SYSTABSTA 12 SYSUSERAU 31 SYSVIEWDE 6 SYSVIEWS 6 SYSVLTREE 2 SYSVOLUME 4 SYSVTREE 5 TAB0001 8 TAB0002 3 TAB0003 3 . . . 53350 1TABELAS DESENV JOB INPUT NULL - 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

Page 137: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE14 – Uso de DB2

SYSINDEXP 23 SYSINDEXS 13 SYSKEYS 7 SYSLINKS 12 SYSPACKAG 37 SYSPACKAU 13 SYSPACKDE 8 SYSPACKLI 7 SYSPACKST 13 SYSPKSYST 8 SYSPLAN 33 SYSPLANAU 12 SYSPLANDE 5 SYSPLSYST 5 SYSPRINT 2 SYSPROCED 17 SYSRELS 13 SYSRESAUT 13 SYSSTMT 10 SYSSTOGRO 11 SYSSTRING 8 SYSSYNONY 7 SYSTABAUT 28 SYSTABLEP 27 SYSTABLES 77 SYSTABSTA 12 SYSUSERAU 31 SYSVIEWDE 6 SYSVIEWS 6 SYSVLTREE 2 SYSVOLUME 4 SYSVTREE 5 TAB0001 8 TAB0002 3 TAB0003 3 . . . 53350

Page 138: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

15 - Dicas gerais : problemas mais comuns e outros tópicos

a) Resultados de acumulação aparentemente errados

Campos W tem o conteúdo colocado como está em tempo de PRINT.Campos S tem o conteúdo colocado como está o último conteúdo.

Exemplo 034Resultados de acumulação aparentemente errados

//DS029034 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //*--------------------------------------------------------------- //STEPEASY EXEC PGM=EZTPA00 //ENTRA DD * ALBERTO 198802290000001000 ZIGOMAR 200105300000001000 MAFALDA 200010150000001000 VALDICE 199912230000001000 VALDICE 199912230000001000 VALDICE 199912230000001000 VALDICE 199912230000001000 VALDICE 199912230000001000 VALDICE 199912230000001000 //EZTVFM DD UNIT=SYSDA,SPACE=(TRK,(800,80),RLSE) //SYSIN DD * ******************************************************** * PROGRAMA EXEMPLO 034 ******************************************************** *-------------------------------------------------- * 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-SALDO 24 10 N 2 *-------------------------------------------------- * DECLARACAO DE VARIAVEIS DE TRABALHO *-------------------------------------------------- WLL W 7 N WGG W 7 N WSALDOAC W 10 N 2 MASK ('ZZZZZZZ9,99') SSALDOAC S 10 N 2 MASK ('ZZZZZZZ9,99') *-------------------------------------------------- * DECLARACAO DE PROCEDIMENTOS *-------------------------------------------------- *------------- * ROTINA PRINCIPAL *------------- JOB INPUT ENTRA WLL = WLL + 1 WSALDOAC = WSALDOAC + AL-SALDO SSALDOAC = SSALDOAC + AL-SALDO

Page 139: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais a) Resultados de acumulação 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 SSALDOAC 0ALBERTO 19880229 10,00 10,00 10,00 ZIGOMAR 20010530 10,00 20,00 20,00 MAFALDA 20001015 10,00 30,00 30,00 VALDICE 19991223 10,00 40,00 40,00 VALDICE 19991223 10,00 50,00 50,00 VALDICE 19991223 10,00 60,00 60,00 VALDICE 19991223 10,00 70,00 70,00 VALDICE 19991223 10,00 80,00 80,00 VALDICE 19991223 10,00 90,00 90,00 90,00 450,00 129/05/01 PROGRAMA EXEMPLO 034 RELAT2 - COM SEQUENCE - AL-NOME AL-DATA AL-SALDO WSALDOAC SSALDOAC 0ALBERTO 19880229 10,00 10,00 90,00 VALDICE 19991223 10,00 40,00 90,00 VALDICE 19991223 10,00 50,00 90,00 VALDICE 19991223 10,00 60,00 90,00 VALDICE 19991223 10,00 70,00 90,00 VALDICE 19991223 10,00 80,00 90,00 VALDICE 19991223 10,00 90,00 90,00 MAFALDA 20001015 10,00 30,00 90,00 ZIGOMAR 20010530 10,00 20,00 90,00 90,00 450,00

Page 140: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais a) Resultados de acumulação aparentemente errados

b) Campos não são totalizados

Só totaliza campos que tenham número de decimais especificado (se necessário, colocar zero).

Exemplo 035Campos não 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

Page 141: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais a) Resultados de acumulação 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

Page 142: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais a) Resultados de acumulação aparentemente errados

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 122,76 129/05/01 PROGRAMA EXEMPLO 035 RELAT03 - 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 122,76 156

Page 143: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

c) Uso de TALLY não aceito; TALLY para sumarizar

TALLY só pode ser especificado se tiver CONTROL.

Exemplo 036Tally

//DS029036 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 036 ******************************************************** *-------------------------------------------------- * 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 *-------------------------------------------------- JOB INPUT ENTRA WLL = WLL + 1 PRINT RELAT01 PRINT RELAT02 PRINT RELAT03 PRINT RELAT04 PRINT RELAT05 GO TO JOB *------------- * DECLARACAO DO RELATORIO 01 *-------------

Page 144: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais c) Uso de Tally não 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

Page 145: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais c) Uso de Tally não 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

Page 146: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais c) Uso de Tally não aceito; Tally para sumarizar

Page 147: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

d) Trocar sinal de um campo compactado ou zonado

Às vezes, temos um campo positivo com sinal F, mas precisamos que seja C, ou vice-versa.

Para efetuar o teste e eventual troca, podemos fazer conforme o exemplo a seguir.

Exemplo 037Manipulação de sinal

//DS029037 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //*--------------------------------------------------------------- //STEPEASY EXEC PGM=EZTPA00 //SYSIN DD * ******************************************************** * PROGRAMA EXEMPLO 037 ******************************************************** *-------------------------------------------------- * DECLARACAO DE ARQUIVOS E RESPECTIVAS AREAS DE I/O *-------------------------------------------------- FILE SYSREL PRINTER *-------------------------------------------------- * DECLARACAO DE VARIAVEIS DE TRABALHO *-------------------------------------------------- WNROZONADO W 5 N MASK HEX WNROZULTDIR WNROZONADO +4 1 B WNROCOMPAC W 5 P MASK HEX WNROPULTDIR WNROCOMPAC +4 1 B *-------------------------------------------------- * DECLARACAO DE PROCEDIMENTOS *-------------------------------------------------- *------------- * ROTINA PRINCIPAL *------------- JOB INPUT NULL WNROZONADO = 12345 IF WNROZULTDIR ON X'C0' DISPLAY 'WNROZONADO COM SINAL F : ' WNROZONADO WNROZULTDIR = WNROZULTDIR - 48 DISPLAY 'WNROZONADO MUDOU PARA : ' WNROZONADO END-IF IF WNROZULTDIR ON X'F0' DISPLAY 'WNROZONADO COM SINAL C : ' WNROZONADO WNROZULTDIR = WNROZULTDIR + 48 DISPLAY 'WNROZONADO MUDOU PARA : ' WNROZONADO END-IF *------------- * SABE O QUE EH 48? EH X'30', A DIFERENCA ENTRE X'F0' E X'C0' *------------- WNROCOMPAC = 123456789 IF WNROPULTDIR ON X'0C' DISPLAY 'WNROCOMPAC COM SINAL F : ' WNROCOMPAC WNROPULTDIR = WNROPULTDIR - 3 DISPLAY 'WNROCOMPAC MUDOU PARA : ' WNROCOMPAC END-IF IF WNROPULTDIR ON X'0F'

Page 148: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – 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

Page 149: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

e) Instruções aparentemente executadas erradas

Muitas vezes, um sinal C ou D num campo numérico, aliado ao uso de um campo declarado como numérico ou alfa, pode nos fazer pensar que uma instrução está sendo executada de forma errada.

Exemplo 038Pegadinhas referentes a sinal

//DS029038 JOB ,ALBERTO.ROMANO,CLASS=D,MSGCLASS=X //*--------------------------------------------------------------- //STEPEASY EXEC PGM=EZTPA00 //ENTRA DD * 0 1 2 3 4 5 6 7 8 9 A B C D E F G //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSABOUT DD SYSOUT=* //SYSIN DD * ******************************************************** * PROGRAMA EXEMPLO 038 ******************************************************** FILE ENTRA ALENTRA 1 80 A ALCODN 1 1 N ALCODA 1 1 A ******************************************************** JOB INPUT ENTRA DISPLAY '***************************************' *--------- * FAZ REFERENCIA AA DECLARACAO NUMERICA *--------- IF ALCODN NOT NUMERIC DISPLAY 'COD NAO NUMERICO' END-IF IF ALCODN EQ 0 DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 0' ELSE-IF ALCODN EQ 1 DISPLAY 'ALCODN=' ALCODN ' ENTENDIDO COMO 1'

Page 150: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais f) Abends na execução

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 ***************************************

Page 151: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais f) Abends na execução

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

Page 152: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVE15 – Dicas gerais f) Abends na execução

ALCODA=G ENTENDIDO N.D.A.

f) Abends na execução

0C7= Data exception : Algum campo numérico está sendo manuseado pelo EASY, e seu conteúdo não é numérico. Normalmente é indicado o statement Easy onde o problema ocorreu. Se o statement referir-se a um REPORT, é um campo numérico que se está tentando imprimir, e que não está com conteúdo numérico. Mude o(s) campo(s) numérico(s) para alfa (pode-se redefini-los) e faça referência aos nomes alfa na(s) LINE(S). Não esqueça 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 ouse falta algum DD para um arquivo

Page 153: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

g) Arquivos VFM

Arquivos VFM (Virtual File Manager) é um método de acesso sequencial bastante apropriado para manipulação de arquivos de trabalho (temporários).

Normalmente, quando se usa arquivos de trabalho, cada um deles precisa ter uma definição, tanto no programa quanto em JCL.

Utilizando VFM, basta declarar todos os arquivos de trabalho como VIRTUAL na especificação do FILE, e os arquivos são manipulados, dentro do possível (depende da memória disponível) em memória, sem necessidade de especificação em JCL. Caso a memória disponível não seja suficiente, uma única área em disco é utilizada como “extensão” (através do DD EZTVFM).

Arquivos declarados como VIRTUAL são deletados quando seu processamento como input é terminado.

Exemplo :

FILE CADCLI...FILE CADCLIALFA VIRTUAL...SORT CADCLI TO CADCLIALFA USING CLI-NOMEJOB INPUT CADCLIALFA...

Page 154: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

FIM

Dúvidas?

Sugestões?

[email protected]

OBRIGADO !

Page 155: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

EASYTRIEVEQuick Reference

Declaração de campos I/O

[DEFINE] [nome-arquivo:]nome-campo pos-inicial tambytes |A|N|P|U|B| [decimais] [HEADING (‘...’)] [MASK (‘...’)]

Declaração de campos work

[DEFINE] nome-campo W tamanho |A|N|P|U|B| [decimais] [HEADING (‘...’)] [MASK (‘...’)]

Atividade JOB normalPARMFILE 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]declaração áreas I/Odeclaração variáveis 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...]comandosREPORT....

Atividade SORT PARMFILE 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]declaração áreas I/Odeclaração variáveis 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 SQLPARMFILE 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|declaração áreas I/Odeclaração variáveis work*-------------------------------------------JOB INPUT SQL [START proc1] [FINISH proc2] SELECT coluna1 [, coluna2..... , colunan ] + FROM nometabela + [WHERE condição] + [ORDER coluna1 [... , colunan] ] + INTO :campo1 [ ... , campon] comandosREPORT ....

Variáveis EASY

SYSDATE = AA/MM/DD SYSTIME = HH.MM.SSRETURN-CODE = uso JCL RECORD-LENGTH = lreclRECORD-COUNT = qt regs FILE-STATUS = status I/O VSAM

LEVEL = qual quebra TALLY = qtdd regs do total.PARM-REGISTER = para pegar PARM via CALL EZTPX01

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*-------------------------------------------

Return Codes VSAM

Page 156: EASYTRIEVE - Site fora do arprofars.montesite.com.br/clientes/afa1280…  · Web view · 2008-09-16EASYTRIEVE é uma linguagem de programação, ... SUMCTL=HIAR. indica como deve

00 = OK 04 = EOF no GET 08 = DUP KEY no PUT ou WRITE 12 = KEY fora de sequência no PUT 16 = RECORD NOT FOUND no READ128 = falta DD no JCL para o arq