Você está na página 1de 34

//*********************************************************************

//*

INTES EXECUTADOS PELO SORT

1 - ORDENACAO DE REGISTRO DE UM ARQUIVO EM UMA DETERMINADA SEQUENCIA


(SORT)
2 - COMBINACAO DE REGISTRO DE ATE 32 ARQUIVOS JA ORDENADOS EM UMA
DETERMINADA SEQUENCIA (MERGE)
3 - COPIA DE TODOS OS REGISTROS
4 - COPIA DE PARTE DE PARTE DE REGISTROS (SELECAO DE REGISTROS)
5 - COPIA DE REGISTROS PARCIAIS (SELECAO DE CAMPOS)
6 - CONVERSAO DE CAMPOS E FORMATO DE IMPRESSAO
7 - ELIMINACAO DE REGISTROS COM CHAVES IGUAIS (SUMARIZAÇÃO)
8 - TOTALIZACAO DE CAMPOS NUMERICOS
9 - IMPRESSAO DOS REGISTROS EM RELATORIOS
10 TOTALIZACAO DE CAMPOS NUMERICOS
11 - SAIDAS - OUTFIL
- SAIDA 1
SELECAO DE REGISTRO (INCLUDE/OMIT)
REFORMATACAO DA SAIDA (OUTREC)
- SAIDA N
SELECAO DE REGISTRO (INCLUDE/OMIT)
REFORMATAÇÃO DA SAIDA (OUTREC)

COMANDO FUNÇÃO
--------------- -----------------------------------------------------
---------------------------------------
INCLUDE DETERMINA O CRITÉRIO DE SELEÇÃO DOS REGISTROS LIDOS.

OMIT DETERMINA O CRITÉRIO DE NÃO SELEÇÃO DOS REGISTROS LIDOS.

INREC REFORMATA O REGISTRO LIDO, DE MODO A PERMITIR A SELEÇÃO


DOS CAMPOS, ANTES DO PROCESSAMENTO DO
SORT/MERGE/COPIA

SORT DETERMINA A SEQUENCIA DE ORDENAÇÃO DOS REGISTROS DO


ARQUIVO
DE SAIDA OU A COPIA DOS REGISTROS EM SUA ORDENAÇÃO
ORIGINAL

MERGE DETERMINA A SEQUENCIA DE CONCATENAÇÃO DOS REGISTROS DOS


ARQUIVOS DE ENTRADA OU A SUA COPIA NA SEQUENCIA
ORIGINAL

SUM DETERMINA A ELIMINAÇÃO DE REGISTROS COM CHAVE IGUAIS E AS


TOTALIZAÇÕES DE CAMPOS NUMERICOS.

SUM DETERMINA A ELIMINAÇÃO DE REGISTROS COM CHAVES IGUAIS E AS


TOTALIZAÇÕES DE CAMPOS NUMERICOS.

RECORD INFORMA PARTICULARIDADE SOBRE OS REGISTROS


OUTFIL DESCREVE OS ARQUIVOS DE SAIDA, INCLUSIVE RELATORIOS.

END INDICA O TÉRMINO DOS COMANDOS DE CONTROLE.

// EXEC SORTE
//SYSIN DD *
//SORTWK DD AREAS DE TRABALHO (OPCIONAL)
//SORTIN DD DSN=ARQUIVO DE ENTRADA(SORT/MERGE)
//SORTIN DD DSN=ARQUIVOS DE ENTRADA (MERGE/COPIA)
//SORTOUT DD DSN=ARQUIVO DE SAIDA
//SORTOF DD DSN=ARQUIVO DE SAIDA(MULTIPLAS SAIDAS)

REGRAS PARA CODIFICAÇÃO DOS COMANDOS DE CONTROLE E DE COMENTARIOS


- PODEM SER COLOCADOS EM QUALQUER ORDEM, EXCETO O COANDO "END", QUE
DEVE SER O ULTIMO COMANDO.

- CODIFICAR ENTRE AS COLUNAS 02 E 71, INCLUSIVE


- A CONTINUACAO DE COMANDOS PODE SER FEITA COMO NOS EXEMPLOS

SORT FIELDS=(1,10,A,20,5,A,45,7,A,32,2,D, ... ... ,153,14,D),


FORMAT=CH,EQUALS
SORT FIELDS=(1,10,A,20,5,A,45,7,A,32,2,D, ... ...153,14,D), FORMAX (NA
COLUNA 71)
AT=CH,EQUALS
!
!-------------> CONTINUAR NA COLUNA
16

COMENTARIOS
----------------------
- LINHAS DE COMENTARIOS DEVEM TER "*" NA COLUNA 1
- COMENTARIOS PODEM SER INSERIDOS APOS O ULTIMO PARAMETRO OU VIRGULA
- COMENTARIOS DEVE SER ANTECEDIDO DE PELO MENOS 1 ESPAÇO

FORMATOS:
BI - BINARIO, SEM SINAL
HE O MAIS INDICADO, OTIMIZA TEMPO.
CH - CARATER EBCDIC, SEM SINAL
PD - COMPACTADO DECIMAL (FIXED), COM SINAL
AQ - CARATER EBCDIC, COM SEQUENCIA MODIFICADA.

OS FORMATOS PERMITIDOS E RESPECTIVOS CODIGOS (FF) SÃO:

CODIGO FORMATO
----------- ----------------------------------------------
BI BINARIO
ZO NUMERICO ZONADO
FI NUMERICO PONTO FIXO
CH CARACTER
PD NUMERICO COMPACTADO
- O ENESIMO BYUTE DE UM REGISTRO DE TAMANHO FIXO TEM P=N
- O ENESIMO BYTE DE UM REGISTO DE TAMANHO VARIAVEL TEM P=N+4
- O BYTES 1 A 4 DE UM REGISTRO DE TAMANHO VARIAVEL SÃO RESERVADOS PARA
- O "RECORD DESCRIPTOR WORD=ROW"
OS 8 BITS DE UM BYTE SÃO NUMERODS DE 0 A 7, PORTANTO P=7.4 SIGNIFICA
QUEO - CAMPO INCIA NO QUINTO (5o) BIT DO (7o) BYTE.
- O MESMO VALE PARA TAMANHJO (t), PORTANTO T=7,4 SIGNIFICA UM CAMPO DE
7 BYTES E 4 BITS
- QUANDO TODOS OS CAMPOS ESPECIFICADOS POSSUEM O MESMO FORMATO, DEVE
SER USADO O SUBPARAMETRO "FORMAT=FF"

RELAÇÃO DAS 'MASCARAS DE EDIÇÃO PADRÃO'

CODIGO FORMATO
------ ------------------------
MO III...IITS
M1 TTT...TTTS
M2 I,III,I...I,IIT,TTS
M3 I,III,I...I,IIT,TTCR
M4 $I,III,I...I,IIT,TT
M5 $I,III,I...I,IIT,TTS
M6 III-TTT-TTTT
M7 TTT-TT-TTTT
M8 IT:TT:TT
M9 IT/IT/TT

ONDE 'I' REPRESENTA DIGITO NÃO SIGNIFICATIVO


'T' REPRESENTA DIGITO SIGNIGICATIVO
'S' REPRESENTA CARACTER INDICATIVO DE SINAL

CLASSIFICACAO:

, A - ASCENDENTE
D - DESCENDENTE

COND:
EQ - NE - GT - LT - LE

OPERADOR:
& = AND
| = OR

OPCOES:

ALTSEQ CODE = (FFTT,FFTT,....,FFTT)


FF = CARATER EM HEX QUE SE QUER MUDAR
TT = CARATER EM HEX QUE DEVERA SER CLASS
UTILIZADO PARA MUDANCA DE CARATER NA CLASS
EX: QUERO CLASS TODO 9 COMO 0.
INCLUDE
- FUNÇÃO: SELECIONA REGISTROS DO ARQUIVO DE ENTRADA, COMPARANDO UM OU
MAIS CAMPOS DO REGISTRO, UM CAMPO PODE SER COMPARADO COM UMA
CONSTANTE OU OUTRO CAMPO DO REGISTRO

INCLUDE COND = (P1,T1,F1,COND,|P2,T2,F2-OU CONST-


|,(AND,OR,)
INCLUDE COND = (P1,T1,COND,|P2,T2-OU CONST-|,(AND,OR,)...)

P1,P2 = POSICAO INICIAL DO CAMPO DO


REGISTRO

T1,T2 = TAMANHO DO CAMPO

F1,F2 = FORMATO DO CAMPO

COND = CONDICAO DE COMPARACAO

CONST = CONSTANTE - PODENDO SER:


- DECIMAL : NUMERO
(240)
- CARATER :
C'LITERAL' (C'CPFL')
- HEXADECIMAL : X'HH, ... ...
HH' (X'40') 0
UTILIZADO PARA SELECIONAR OS REGISTROS QUE
DEVERAO SER GRAVADOS NA SAIDA.

EXEMPLOS
SUPONHA UM ARQUIVO CONTENDO OS ITENS EM ESTOQUE EM CADA ALMOXARIFADO
COM O SEGUINTE LAYOUT
INICIO FIM TAMANHO FORMATO SIGNIFICAO/CONTEUDO

01 11 11 Z0 CODIGO DO CONTRATO
12 12 01 CH ASTERISCO
13 14 02 ZO SITUACAO DO CONTRATO
15 15 01 CH ASTERISCO
16 23 08 ZO DT VENCIMENTO DO CONTRATO
24 24 01 CH ASTERISCO
25 39 15 ZO SALDO DEVEDOR DO PRINCIPAL
40 40 01 CH ASTERISCO
41 55 15 ZO SALDO DEVEDOR DO PASSIVO
56 56 01 CH ASTERISCO
57 71 15 ZO SALDO DEVEDOR DO ATIVO
72 72 01 CH ASTERISCO
73 81 09 ZO NUMERO DO CGC / CPF
82 82 01 CH ASTERISCO
83 86 04 ZO FILIAL
87 87 01 CH ASTERISCO
88 89 02 ZO DV CONTROLE
90 90 01 CH ASTERISCO
91 130 40 CH NOME DA RAZAO SOCIAL
131 200 70 CH FILLER

CODIGO DA SITUACAO DESCRICAO


00 CONTRATO ATIVO
---------------------------------------
02 QUITADO NO ANO
---------------------------------------
03 LIQ ANTECIPADA
---------------------------------------
04 LIQ P/ CL
---------------------------------------
05 EM ATRASO
---------------------------------------
10 AGUARDANDO LIBERACAO
---------------------------------------
M
- FAZ SORT CLASSIFICAÇÃO
POR TIPO DE SITUACAO DE CONTRATO,
ORDEM ALFABETICA DO NOME DO CLIENTE

>
<...+....1....+....2....+....3....+....4....+....5....+....6....+....7
..
...... ================================ T O P
=================================
000100 //RP68SORT JOB (1,'TP=TNDS'),'EDMILS',CLASS=3,

000200 // MSGCLASS=R,MSGLEVEL=1,REGION=2048K

000300 /*JOBPARM R=1108,P=PROC03

000400 //*-----------------------------------------------------------
--------*
000500 //* SORT - FAZ CLASSIFICAÇÃO DO ARQUIVO POR TIPO DE SITUACAO
DE
000510 //* CONTRATO E COLOCA EM ORDEM ALFABETICA POR NOME DE CLIENTE

000600 //*-----------------------------------------------------------
--------*
000700 //SORT0106 EXEC RSORTD

000800 //SORTIN DD DSN=RPY.EDMIL.INTE.POSI,DISP=SHR

000900 //SORTOUT DD
DSN=RPY.EDMIL.INTE.POSIS,DISP=(OLD,CATLG,DELETE),
001000 // UNIT=FIXO,SPACE=(CYL,(100,20)),DCB=*.SORTIN
001100 //SYSIN DD *

001200 SORT FIELDS=(13,2,ZD,A,91,40,CH,A)

001300 /*

...... ============================= B O T T O M
==============================

EXEMPLO 01 - INCLUDE
SELECIONANDO E ORDENANDO REGISTROS

SELECIONAR POR SITUACAO DO CONTRATO (somente '00' e '02')


ORDENANDO OS REGISTRO SELECIONADOS POR SITUACAO DO
CONTRATO
ORDENANDO OS REGISTRO POR CONTRATO

...... ================================ T O P
=================================
000100 //RP68SO01 JOB (1,'TP=TNDS'),'EDMILS',CLASS=3,

000200 // MSGCLASS=R,MSGLEVEL=1,REGION=2048K

000300 /*JOBPARM R=1108,P=PROC03

000400 //*------------------------------------------------------------
-------*
000500 //* SORT CLASSIFICA POR SIT CONTRATO

000600 //* POR ORDEM ALFA DE CLIENTE

000700 //*------------------------------------------------------------
-------*
000800 //SORT0106 EXEC RSORTD

000900 //SORTIN DD DSN=RPY.EDMIL.INTE.POSI,DISP=SHR

001000 //SORTOUT DD DSN=RPY.EDMIL.INTE.POSIS1,DISP=(,CATLG,DELETE),

001100 // UNIT=FIXO,SPACE=(CYL,(100,20)),DCB=*.SORTIN

001200 //SYSIN DD *

001300 INCLUDE COND(13,2,CH,EQ,C'00',OR,13,2,CH,EQ,C'02')

001400 SORT FIELDS=(13,2,CH,A,1,11,CH,A),STOPAFT=200* copia até


200 registros
001500 /*

...... ============================= B O T T O M
==============================
EXEMPLO 02 - INCLUDE
SELECIONANDO E COPIANDO

SELECIONAR POR SITUACAO DO CONTRATO (somente '00' e '02')


COPIA NA MESMA ORDEM

...... ================================ T O P
=================================
000100 //RP68SO03 JOB (1,'TP=TNDS'),'EDMILS',CLASS=3,

000200 // MSGCLASS=R,MSGLEVEL=1,REGION=2048K

000300 /*JOBPARM R=1108,P=PROC03

000400 //*------------------------------------------------------------
-------*
000500 //* USO DO OMIT

000501 //* SORT EXCLUIR POR SIT CONTRATO (0 OU 2)

000600 //* FAZ COPIA E MANTEM A ORDEM

000700 //*------------------------------------------------------------
-------*
000800 //SORT0106 EXEC RSORTD

000900 //SORTIN DD DSN=RPY.EDMIL.INTE.POSI,DISP=SHR

001000 //SORTOUT DD
DSN=RPY.EDMIL.INTE.POSIS1,DISP=(OLD,CATLG,DELETE),
001100 // UNIT=FIXO,SPACE=(CYL,(100,20)),DCB=*.SORTIN

001200 //SYSIN DD *

001300 OMIT COND(13,2,CH,EQ,C'00',OR,13,2,CH,EQ,C'02')

001400 SORT FIELDS=COPY

001500 /*

...... ============================= B O T T O M
==============================

EXEMPLO 03 - OMIT
SELECIONANDO E COPIANDO

SELECIONAR POR SITUACAO DO CONTRATO (somente '00' e '02')


COPIA NA MESMA ORDEM
...... ================================ T O P
=================================
000100 //RP68SO03 JOB (1,'TP=TNDS'),'EDMILS',CLASS=3,

000200 // MSGCLASS=R,MSGLEVEL=1,REGION=2048K

000300 /*JOBPARM R=1108,P=PROC03

000400 //*------------------------------------------------------------
-------*
000500 //* USO DO OMIT

000501 //* SORT EXCLUIR POR SIT CONTRATO (0 OU 2)

000600 //* FAZ COPIA E MANTEM A ORDEM

000700 //*------------------------------------------------------------
-------*
000800 //SORT0106 EXEC RSORTD

000900 //SORTIN DD DSN=RPY.EDMIL.INTE.POSI,DISP=SHR

001000 //SORTOUT DD
DSN=RPY.EDMIL.INTE.POSIS1,DISP=(OLD,CATLG,DELETE),
001100 // UNIT=FIXO,SPACE=(CYL,(100,20)),DCB=*.SORTIN

001200 //SYSIN DD *

001300 OMIT COND(13,2,CH,EQ,C'00',OR,13,2,CH,EQ,C'02')

001400 SORT FIELDS=COPY

001500 /*

...... ============================= B O T T O M
==============================

EXEMPLO 04 - INCLUDE + OMIT + SORT


SELECIONANDO REGISTRO E CAMPOS DE ENTRADA ORDENADO

SELECIONAR POR SITUACAO DO CONTRATO (somente '00' e '02')


COPIA NA MESMA ORDEM
TOTALIZAR POR VALORES

selecionar os contratos que tiveram saldo do ativo abaixo de


R$1.000,00
Selecionar os campos contrato, situação e data de vencimento
ordenar por situacao do contrato, contrato e data de vencimento
<...+....1....+....2....+....3....+....4....+....5....+....6....+....
7..
...... ================================ T O P
=================================
000100 //RP68SO04 JOB (1,'TP=TNDS'),'EDMILS',CLASS=3,

000200 // MSGCLASS=R,MSGLEVEL=1,REGION=2048K

000300 /*JOBPARM R=1108,P=PROC03

000400 //*------------------------------------------------------------
-------*
000500 //* USO DO INCLUDE + INREC + SORT

000600 //* - SELECIONA CONTRATOS COM SALDO DEV MENOR QUE 1000 OU
MAIOR 3000
000700 //* - RECUPERA APENAS OS CAMPOS CONTRATO, SITUAÇãO E SALDO
DEVEDOR
000701 //* - CLASSIFICA PELA SITUACAO DO CONTRA

000702 //* - CLASSIFICA PELA NUMERO DO CONTRATO

000800 //*------------------------------------------------------------
-------*
000900 //SORT0106 EXEC RSORTD

001000 //SORTIN DD DSN=RPY.EDMIL.INTE.POSI,DISP=SHR

001100 //SORTOUT DD DSN=RPY.EDMIL.INTE.POSIS1,DISP=(,CATLG,DELETE),

001200 // UNIT=FIXO,SPACE=(CYL,(100,20)),DCB=*.SORTIN

001300 //SYSIN DD *

001400 INCLUDE COND(57,15,CH,LE,C'1000',OR,57,15,CH,GE,C'3000')

001500 INREC FIELDS=(1,11,13,2,57,15)

001600 SORT FIELDS=(13,2,CH,A,1,11,CH,A)

001700 /*

...... ============================= B O T T O M
==============================

EXEMPLO 05 - INREC + SORT + SUM


SUMARIZANDO REGISTROS E TOTALIZANDO
SELECIONANDO REGISTRO E CAMPOS DE ENTRADA ORDENADO
PARA OS REGISTROS COM A MESMA SITUACAO DO CONTRANTO, SUMARIZAR LO EM
UM UNICO REGISTRO
CONTENDO A TOTALIZAÇÃO DO CAMPO QUANTIDADE, PARA EVITAR ESTOURO DO
CAMPO QUANTIDADE ACRESCETAR
2 BYTES VIA COMANDO INREC

<...+....1....+....2....+....3....+....4....+....5....+....6....+....
7..
...... ================================ T O P
=================================
000100 //RP68SO05 JOB (1,'TP=TNDS'),'EDMILS',CLASS=3,

000200 // MSGCLASS=R,MSGLEVEL=1,REGION=2048K

000300 /*JOBPARM R=1108,P=PROC03

000400 //*------------------------------------------------------------
-------*
000500 //*------------------------------------------------------------
-------*
000600 //SORT0106 EXEC RSORTD

000700 //SORTIN DD DSN=RPY.EDMIL.INTE.POSI,DISP=SHR

000800 //SORTOUT DD
DSN=RPY.EDMIL.INTE.POSIS1,DISP=(OLD,CATLG,DELETE),
000900 // UNIT=FIXO,SPACE=(CYL,(100,20)),DCB=*.SORTIN

001000 //SYSIN DD *

001100 INREC FIELDS=(1,11,13,2,57,15)

001200 SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

001300 SUM FIELDS=(13,02,ZD)

001400 /*

...... ============================= B O T T O M
==============================

EXEMPLO 06 - INREC + SORT + SUM


SUMARIZANDO REGISTROS E TOTALIZANDO CAMPOS
SELECIONANDO REGISTRO E CAMPOS DE ENTRADA ORDENADO

PARA OS REGISTROS COM A MESMA SITUACAO DO CONTRANTO, SUMARIZAR LO EM


UM UNICO REGISTRO
CONTENDO A TOTALIZAÇÃO DO CAMPO QUANTIDADE, PARA EVITAR ESTOURO DO
CAMPO QUANTIDADE ACRESCETAR
2 BYTES VIA COMANDO INREC
INREC FIELDS=(1,11,13,2,57,15)

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

SUM FIELDS=(13,02,ZD)

>
<...+....1....+....2....+....3....+....4....+....5....+....6....+....7
..
...... ================================ T O P
=================================
000100 //RP68SO06 JOB (1,'TP=TNDS'),'EDMILS',CLASS=3,

000200 // MSGCLASS=R,MSGLEVEL=1,REGION=2048K

000300 /*JOBPARM R=1108,P=PROC03

000400 //*-----------------------------------------------------------
--------*
000500 //*-----------------------------------------------------------
--------*
000600 //SORT0106 EXEC RSORTD

000700 //SORTIN DD DSN=RPY.EDMIL.INTE.POSI,DISP=SHR

000800 //SORTOUT DD
DSN=RPY.EDMIL.INTE.POSIS1,DISP=(OLD,CATLG,CATLG),
001100 // UNIT=FIXO,SPACE=(CYL,(100,20)),DCB=*.SORTIN

001200 //SYSIN DD *

001300 INREC FIELDS=(13,2,1,11,57,15)

001400 SORT FIELDS=(13,2,ZD,A) * A,1,11,ZD,A)

001500 SUM FIELDS=(1,11,ZD)

001600 /*

...... ============================= B O T T O M
==============================

EXEMPLO 07 SELECIONANDO CAMPOS E ELEIMINANDO REGISTROS DUPLICADOS


SELECIONAR TODOS OS REGISTOR LIDOS O CAMPO, SITUACAO DO CONTATO, QUE
DEVEM SER ORDENADOS PELO MESMO CAMPO E POSTERIORMENTE SUMRIZADOS EM 1
UNICO
REGISTRO AQUELES COM A MESMA CHAVE (SITUACAO DOCONTRATO)
INREC FIELDS=(1,11,13,2,57,15)

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

SUM FIELDS=(13,02,ZD)

EXEMPLO 08 ORDENANDO REGISTROS E REPOSICIONANDO CAMPOS


ORDENAR POR DATA/SITUACAO/CONTRATO, FORMATANDO A SAIDA COM OS CAMPOS
NESTA ORDEM, DATA, SITUACAO E CONTRATRO E SALDO

SORT FIELDS=(15,2,ZD,A,13,2,ZD,A,11,2,ZD,A,2,5,ZD,A,1,1,CH,A)
OUTREC FIELDS=(11,6,2,5,1,1,7,4)

EXEMPLO 09 COPIANDO REGISTROS , INSERINDO BRANCOS E REPOSICIONANDO


CAMPOS
MANTEM A MESMA ORDEM, INSERINDO 1 ESPAÇO ENTRE OS CAMPOS

SORT FIELDS=COPY
OUTREC FILEDS=(1,1,1X,2,5,1X,7,4,1X,11,6)

EXEMPLO 10 COPIANDO, INSERINDO ZEROS BINARIOS E REPOSICIONANDO CAMPOS:


MANTER A MESMA ORDEM, AUMENTANDO EM 2 BYTES O CAMPO QUANTIDADE

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

OUTREC FIELDS=(13,02,ZD)

EXEMPLO 11 ORDENANDO REGISTRO E EDITANDO CAMPOS


ORDENAR POR SITUACAO DE CONTRATO E NUMERO DE CONTRATO, EDITANDO OS
CAMPOS DE QUANTIDADE
(BRANCOS A ESQUERDA) E DATA (BARRAS)

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

OUTREC FIELDS=(1:1,1
3:2,5
9:7,4,PD,MO,
18:11,6,ZD,M9)

EXEMPLO 12 IMPRIMIR RELATORIO COM QUEBRA E EDICAO, SEM CABEÇALHOS

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

OUTFIL OUTREC=(5:1,1
15:2,5
25:7,4,PD,MO,
35:11,6,ZD,M9,SECTIONS=1,1,SKIP=3L
EXEMPLO13 IMPRIMINDO RELATORIO COM QUEBRA, CABEÇALHOS E PAGINAÇÃO
ORDENAR POR SITUAÇÃO DO CONTRATO, IMPRIMINDO RELATORIO COM CABEÇALHO
(CAPA DO RELATORIO, PAGINA E QUEBRA)
COM QUBRA (SALTO DE 2 LINHAS) POR SITUAÇÃO , SEPRADNO OS CAMPOS POR
BRANCOS E EDITANDO O SALDO E A DATA

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

OUTFIL HEADER=(15/,50:'DEPARTAMENTO DE EMPRESTIMOS ESPECIALIZADOS',


4/,55:'POSICAO DA CARTEIRA',
4/,60:'2006',
35:11,6,ZD,M9,SECTIONS=1,1,SKIP=3L
HEADER2=(1:'DATA...: ',&DATA,
55:'POSIÇÃO DO ESTOQUE / 2006',
116:'PAGINA...: ',&PAGE,/,
1:132'-',//),
OUTREC=(15:1,1,
40:2,5,
60:7,4,PD,MO,
90:11,6,ZD,M9,
132:1X),
SECTIONS=(1,1,SKIP=2L,
HEADER=(10:'SITUACAO DO CONTRATO',
40:'NUMERO DO CONTRATO'
60:'SALDO DO ATIVO'
80:'DATA DE VENCIMENTO',//))
END

OBS: //SORTOUT DD SYSOUT=L,DCB=(LRECL=133,BLKSIZE=133,RECFM=FBA)

EXEMPLO 14 IMPRIMINDO RELATORIO COM TOTALIZAÇÃO GERAL


ORDENAR POR SITUAÇÃO DO CONTRATO, IMPRIMINDO RELATORIO COM CBELÇALHO,
QUEBRA E TOTALIZAÇÃOGERAL DO CAMPO QUANTIDADE

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

OUTFIL HEADER1=(15/,50:'DEPARTAMENTO DE EMPRESTIMOS


ESPECIALIZADOS',
4/,55:'POSICAO DA CARTEIRA',
4/,60:'2006',
35:11,6,ZD,M9,SECTIONS=1,1,SKIP=3L
HEADER2=(1:'DATA...: ',&DATA,
55:'POSIÇÃO DO ESTOQUE / 2006',
116:'PAGINA...: ',&PAGE,/,
1:132'-',//),
OUTREC=(15:1,1,
40:2,5,
60:7,4,PD,MO,
90:11,6,ZD,M9,
132:1X),
SECTIONS=(1,1,SKIP=2L,
HEADER3=(10:'SITUACAO DO CONTRATO',
40:'NUMERO DO CONTRATO'
60:'SALDO DO ATIVO'
80:'DATA DE VENCIMENTO',//))
END

EXEMPLO 15 IMPRIMINDO RELATORIO COMTOTALIZAÇÃO GERAL


ORDENAR POR SITUAÇÃO DO CONTRATO IMPRIMEINDO RELATORIO COM
CABEÇALHO,QUEBRA E TOTALIZAÇÃO GERALDOCAMPO QUANTIDADE

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

OUTFIL HEADER1=(15/,50:'DEPARTAMENTO DE EMPRESTIMOS


ESPECIALIZADOS',
4/,55:'POSICAO DA CARTEIRA',
4/,60:'2006',

HEADER2=(1:'DATA...: ',&DATA,
55:'POSIÇÃO DO ESTOQUE / 2006',
116:'PAGINA...: ',&PAGE,/,
1:132'-',//),
OUTREC=(15:1,1,
40:2,5,
60:7,4,PD,MO,
90:11,6,ZD,M9,
132:1X),
HEADER=(10:'SITUACAO DO CONTRATO',
40:'NUMERO DO CONTRATO'
60:'SALDO DO ATIVO'
80:'DATA DE VENCIMENTO',//))
TRAILLER=(1,1,SKIP=2L,

END

OBS; AO FINAL DO RELATORIO SERA IMPRESSO, EM PAGIN SEPRADA, O TOTAL


GERAL

16) IMPRIMINDO RELATORIOCOM TOTALIZAÇÃO DE PAGINA (RODAPÉ)

ORDENAR POR SITUACAO DO CONTRATO IMPRIMINDO RELATORIO COM CABEÇALHO,


QUEBRA E TOTALIZAÇÃO GERAL E PARCIAL ACUMULADA POR PAGINA
DO CAMPO QUANTIDADE

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)

OUTFIL HEADER1=(15/,50:'DEPARTAMENTO DE EMPRESTIMOS


ESPECIALIZADOS',
4/,55:'POSICAO DA CARTEIRA',
4/,60:'2006',

HEADER2=(1:'DATA...: ',&DATA,
55:'POSIÇÃO DO ESTOQUE / 2006',
116:'PAGINA...: ',&PAGE,/,
1:132'-',//),
OUTREC=(15:1,1,
40:2,5,
60:7,4,PD,MO,
90:11,6,ZD,M9,
132:1X),
SECTIONS=(1,1,SKIP-2L,
HEADER3=(10:1,1,
40:'NUMERO DO CONTRATO'
60:'SALDO DO ATIVO'
80:'DATA DE VENCIMENTO',//))
TRAILLER=(1,1,SKIP=2L,

END

AO FINAL DE CADA PAGINA (RODAPE'), SERA' MPRESSO O TOTAL DA PAGINA

EXEMPLO 17 IMPRIMINDO RELATORIO COM TOTALIZAÇÃO DA QUEBRA


ORDENAR POR SITUACAO DO CONTRATO, IMPRIMINDO RELATORIO COM CBEÇALHO,
QUEBRA DE SITUAÇÃO COM
TOTAIS DO CAMPO SALDO DEVEDOR E TOTALIZAÇÃO POR PAGINA E GERAL.

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)
OUTFIL HEADER1=(15/,50:'DEPARTAMENTO DE EMPRESTIMOS ESPECIALIZADOS',
4/,55:'POSICAO DA CARTEIRA',
4/,60:'2006',

HEADER2=(1:'DATA...: ',&DATA,
55:'POSIÇÃO DO ESTOQUE / 2006',
116:'PAGINA...: ',&PAGE,/,
1:132'-',//),
OUTREC=(15:1,1,
40:2,5,
60:7,4,PD,MO,
90:11,6,ZD,M9,
132:1X),
SECTIONS=(1,1,SKIP-2L,
HEADER3=(10:1,1,
40:'NUMERO DO CONTRATO'
60:'SALDO DO ATIVO'
80:'DATA DE VENCIMENTO',//))
TRAILLER=(/,10:57'-',/,
10:'TOTAL-SITUAÇÃO ',
58:TOT=(7,4,PD,EDIT=(I,III,IIT))),
5,1,SKIP=1L,
TRAILLER=(/,10:57'-',/,
30:'TOTAL-SITUAÇÃO ',
58:TOT=(7,4,PD,EDIT=(I,III,IIT)))
TRAILLER=(/,10:57'-',/,
58:TOT=(7,4,PD,MO))
TRAILLER=(/,1:132'-',/,
30:'TOTAL-SITUAÇÃO ',
58:TOT=(7,4,PD,EDIT=(I,III,IIT)))
END

EXEMPLO 18 IMPRIMINDO RELATORIO COM TOTALIZAÇÃO GERAL DE REGISTROS


ORDENAR POR SITUAÇÃO DO CONTRATO IMPRIMINDO RELATORIO COM CABEÇALHO,
QUEBRA E TOTALIZAÇÃO GERAL DO CAMPO QUANTIDADE
E DA QUANTIDADE DE REGISTROS

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)
OUTFIL HEADER1=(15/,50:'DEPARTAMENTO DE EMPRESTIMOS ESPECIALIZADOS',
4/,55:'POSICAO DA CARTEIRA',
4/,60:'2006',

HEADER2=(1:'DATA...: ',&DATA,
55:'POSIÇÃO DO ESTOQUE / 2006',
116:'PAGINA...: ',&PAGE,/,
- 1:132'-',//),
OUTREC=(15:1,1,
40:2,5,
60:7,4,PD,MO,
90:11,6,ZD,M9,
132:1X),
SECTIONS=(1,1,SKIP-2L,
HEADER3=(10:1,1,
40:'NUMERO DO CONTRATO'
60:'SALDO DO ATIVO'
80:'DATA DE VENCIMENTO',//))
TRAILLER=(/,10:57'-',/,
10:'TOTAL-SITUAÇÃO ',
58:TOT=(7,4,PD,EDIT=(I,III,IIT))),
5,1,SKIP=1L,
TRAILLER=(/,10:57'-',/,
30:TOT=(7,4,PD,MD),
5/,40:'TOTAL DE REGISTROS.: ',
69:COUNT)
TRAILLER=(/,10:57'-',/,

58:TOT=(7,4,PD,MO))
TRAILLER=(/,1:132'-',/,
30:'TOTAL-SITUAÇÃO ',
58:TOT=(7,4,PD,EDIT=(I,III,IIT)))
END

EXEMPLO 19 IMPRIMINDO RELATORIO COM TOTALIZAÇÃO DE REGISTROS A CADA


QUEBRA
ORDENAR POR SITUAÇÃO DE CONTRATO IMPRIMINDO RELATORIO COM CABEÇALHO,
QUEBRA, TOTALIZAÇÃO GERAL, POR PAGINA
(RODAPÉ) E NA QUEBRA DO CAMPO QUANTIDADE E DO TOTAL DE REGISTROS,
GERAL E PARCIAL

SORT FIELDS=(13,2,ZD,A,1,11,ZD,A)
OUTFIL HEADER1=(15/,50:'DEPARTAMENTO DE EMPRESTIMOS ESPECIALIZADOS',
4/,55:'POSICAO DA CARTEIRA',
4/,60:'2006',

HEADER2=(1:'DATA...: ',&DATA,
55:'POSIÇÃO DO ESTOQUE / 2006',
116:'PAGINA...: ',&PAGE,/,
1:132'-',//),
OUTREC=(15:1,1,
40:2,5,
60:7,4,PD,MO,
90:11,6,ZD,M9,
132:1X),
SECTIONS=(1,1,SKIP-2L,
HEADER3=(10:1,1,
40:'NUMERO DO CONTRATO'
60:'SALDO DO ATIVO'
80:'DATA DE VENCIMENTO',//))
TRAILLER3=(/,10:57'-',/,
10:'TOTAL-SITUAÇÃO ',
58:TOT=(7,4,PD,EDIT=(I,III,IIT))),
/40:'TOTAL DE REGISTROS DA QUEBRA.: ',
COLUNT,
/40:'TOTAL DE REGISTROS ATÉ A QUEBRA.: ',
SUBCOUNT)),
TRAILLER1=(5/,40:'TOTAL EM ESTOQUE...: ',
62:TOT=(7,4,PD,MD)),

TRAILLER=(/,1:132'-',/,
30:'TOTAL-SITUAÇÃO ',
58:TOT=(7,4,PD,EDIT=(I,III,IIT)))
END

EXEMPLO 20 GERANDO MULTIPLA SAIDAS COM SELEÇÃO DE REGISTGROS


ORDENAR POR SITUACAO DE CONTRATO
SELECIONANDO SOMENTE OS
CONTYRATOS DE SITUAÇÃO DO CONTRATO '00' E "02",
GRAVANDO OS EM ARQUIVOS DISTINTOS

SORT FIELDS=(13,2,ZD,A)
OUTFIL FILES=1,
INCLUDE=(13,2,CH,EQ.C'00')
OUTFIL FILES=2,
INCLUDE=(13,2,CH,EQ.C'02')
OUTFIL FILES=3,
INCLUDE=(13,2,CH,EQ.C'05')

OBS:
//SORTOF1 DD ...(FILE-1)
//SORTOF2 DD ...(FILE-2)
//SORTOF3 DD ...(FILE-3)

EXEMPLO 21 COPIANDO REGISTROS DE TAMANHO VARIAVEL, GRERANDO 3 ARQUIVOS


DE SAIDA
- UM VARIAVEL, IMAGEM DA ENTRADA
= OS OUTROS DOIS FIXOS, COM SELEÇÃO DE REGISTROS E REFORMATAÇÃO DE
CAMPOS

SUPONHA UM ARQUIVO ONDE CADA REGISTRO REPRESENTA UM BEM E SEUS


RESPECTIVOS SALDO DEVEDOR
EM CADA AGENCIA COM SEU O LAIAUTE ABAIXO

EXEMPLOS
SUPONHA UM ARQUIVO CONTENDO OS ITENS EM ESTOQUE EM CADA ALMOXARIFADO
COM O SEGUINTE LAYOUT
INICIO FIM TAMANHO FORMATO SIGNIFICAO/CONTEUDO

01 11 11 Z0 CODIGO DO CONTRATO
12 12 01 CH ASTERISCO
13 14 02 ZO SITUACAO DO CONTRATO
15 15 01 CH ASTERISCO
16 23 08 ZO DT VENCIMENTO DO CONTRATO
24 24 01 CH ASTERISCO
25 39 15 ZO SALDO DEVEDOR DO PRINCIPAL
40 40 01 CH ASTERISCO
41 55 15 ZO SALDO DEVEDOR DO PASSIVO
56 56 01 CH ASTERISCO
57 71 15 ZO SALDO DEVEDOR DO ATIVO
72 72 01 CH ASTERISCO
73 81 09 ZO NUMERO DO CGC / CPF
82 82 01 CH ASTERISCO
83 86 04 ZO FILIAL
87 87 01 CH ASTERISCO
88 89 02 ZO DV CONTROLE
90 90 01 CH ASTERISCO
91 130 40 CH NOME DA RAZAO SOCIAL
131 200 70 CH FILLER

CODIGO DA SITUACAO DESCRICAO


00 CONTRATO ATIVO
---------------------------------------
02 QUITADO NO ANO
---------------------------------------
03 LIQ ANTECIPADA
---------------------------------------
04 LIQ P/ CL
---------------------------------------
05 EM ATRASO
---------------------------------------
10 AGUARDANDO LIBERACAO
---------------------------------------

COPIAR OS REGISTROS DE ENTRADA (TAMANHO VARIAVEL), GRAVANDO OS EM 3


ARQUIVOS:

PRIMEIRO ARQUIVO
(SORTOUT), TODOS OS REGISTROS DE ENTRADA DEVERÃO SER SELECIONADOS,
MANTENDO O TAMANHO VARIAVEL.

SEGUNDO ARQUIVO
(//SORTOF1), SOMENTE SERÃO GRAVADOS CONTRATOS COM SITUAÇÃO '00'
E SOMENTE O CAMPO NUMERO DO CONTRATO COM TAMANHO FIXO

TERCEIRO ARQUIVO
SOMENTE SERAO GRAVADOS OS REGISTROS COM 3 OCORRENCIAS (EM TODOS OS
CONTRATOS)
COM TODOS OS CAMPOS DE ENTRADA COM TANAHO FIXO

SORT FIELDS=COPY
OUTFIL FILES=1,INCLUDE=(5,5,ZD,EQ,5),
OUTREC=(5,5),CONVERT
OUTFIL FILES=2,INCLUDE=(10,1,ZO,EQ,3),
OUTREC=(5,21),CONVERT
END

OBS:

//SORTOUT DD ...ARQUIVO VARIAVEL


//SORTOF1 DD ...ARQUIVO FIXO (FILES=1)
//SORT0F2 DD ...ARQUIVO FIXO (FILES=2)

SE O "O SORTOUT" NAO FOR CODIFICADO, NENHUM ARQUIVO SERÁ GERADO


AO SER REFERECIADA A POSIÇÃO DE INICIO DE CADA CAMPO,
ADICIONAR 0S 4 BYTES DO "ROW".
O PRIMEIRO CAMPO COMEÇA NO BYTE 5

EXEMPLO 22 SUMARIZANDO REGISTROS E TOTALIZANDO A QUANTIDADE DE


REGISTROS COM MESMA CHAVE

PARA OS REGISTROS COM MESMA CHAVE (SITUAÇÃO DO CONTRATO),


SUMARIZA LOS EM 1 UNICO REGISTRO CONTENDO O TOTAL DE REGISTROS

INREC FILEDS=(2,5,X'00001F')
SORT FIELDS=(1,5,ZD,A)
SUM FIELDS=(6,3,PD)

EXEMPLO 23 GERANDO MAIS QUE UM REGISTRO DE SAIDA A PARTIR DE UM


REGISTRO DE ENTRADA

PARA CADA REGSITRO LIDO, GERAR QUATRO (4) DE SAIDA


O PRIMEIRO CONTENDO SITUAÇÃO DO CONTRATO
O SEGUNDO CONTENDO O NUMERO DO CONTRATO
O TERCEIRO EM BRANCO
O QUARTO COM O SALDO DEVEDOR

OBS: O TAMANHO DOS REGISTROS DE SAIDA SERÁ O DO MAIRORGISTRO GERDO,


COM PREENCHIMENTO DE BRANCOS Á DIREITA

EXEMPLO 24 CONVERTENDO O ARQUIVO COM RESGISTROS DE TAMANHO VARIAVEL


PARA FIXO

COPIAR OS RESGISTRO DO ARQUVIO DE ENTRADA PARA O ARQUIVO DE SAIDA DE


MODO QUE OS REGISTROS SEJAM CONVERTIDOS DE TAMANHO VARIAVEL PARA FIXO

SORT FILEDS=COPY
OUREC FIELDS=(5,2),CONVERT

OBS: SERÁ ASSUMIDO COMO 'LRECL' O TAMANHO DOMAIRO REGISTRO DE ENTRADA


OS REGSITROS COM TAMANHO MENO SERÃO PREENCHIDOS COM BRANCOS 'A
DIREITA'

EXEMPLO 25 CONVERTENDO O ARQUIVO COM REGISTROS DE TAMANHO VARIAVEL


PARA FIXO,
SELECIONANDO CAMPOS DA PARTE VARIAVEL

SORT FIELDS=COPY
OUTFIL FILES=01,OUTREC=(5,11),CONVERT
OUTFIL FILES=02,OUTREC=(21,5),CONVERT

OBS
SERÁ ASSUMIDO COMO 'LRECL' O TAMANHO ESPECIFICADO NO COMANADO
'OUTREC',
OS REGSITROS DE ENTRADA CUJOS CAMPOS REFERENCIADOS NÃO EXISTAM,
PRODUZIRÃO CAMPOS EM BRANCO NO REGISTRO DE SAIDA

EXEMPLO 26 SELECIONANDO REGISTROS MEDIANTE A OMPARACAO DE 'BIT'


SELECIONAR OS REGSITROS QUE POSSUAM NO BYTE 156, O BIT MAIS Á DIREITA
(BIT DE VALOR 1) LIGADO (BIT MASK)

INCLUDE COND=(16,1,BI,ALL,B'000000001'
SORT FIELDS=COPY

SELECIONAR OS REGISTROS QUE POSSUEM NO BYTE 16, OS 4 PRIMEIROS


BITS MAIS 'A DIREITA (BITS DE VALOR 1,2,3,4, E 8)
COM O VALOR 1,OU SEJA, BIT DE VALOR 1 LIGADO E OS OUTROS DESLIGADOS
(BIT PATTERN)

INCLUDE COND=(16.1.BI,EQ,B'00000001')
SORT FILDS=COPY

EXEMPLO 27 COPIANDO OS REGISTROS DE ENTRADA , AUMENTANDO O SEU


TAMANHO NO ARQUVIO DE SAIDA

COPIAR TODO O REGISTRO DE ENTRADA, SEM FORMATAÇÃO

SORT FIELDS=COPY
OBS; SERÃO PREENCHIDOS 'ZEROS BINARIOS' A DIRETITA DO REGISTROS
ORIGINAL
INDICAR NA 'DCB' DO ARQUIVO DE SAIDA O NOVO 'LRECL'

//SORTOUT DD DSN=&&SAIDA,UNIT=SYSDA,DISP=(,PASS)...
DCB=(LRECL=30,BLKSIZE=3000,RECFM=(FB) ...

COPIAR O REGISTRO DE ENTRADA, FORMATANDO O REGISTRO DE SAIDA

SORT FIELDS=COPY
OUTREC FIELDS=(1:1,1,
10:2,5,
20:7,4,PD,MD,
30:11,6,ZD,M9)

OBS: SERÃO PREENCHIDOS BRANCOS NOS BYTES NÃO REFERENCIADOS

EXEMPLO 28 FORMATANDO 2 ARQUIVOS DE SAIDA, CADA UM COM SEU CRITÉRIO DE


SELEÇÃO DE REGISTROS,
COM LEIAUTE DE MESMO TAMANHO, POREM COM CAMPOS DIFERENTES

INCLUDE COND=(1,1,CH,EQ,C'A',OR,1,1,CH,EQ,C'X')
SORT FIELDS=COPY
OUTFIL FILES=01,INCLUDE=(15,2,ZD,EQ,2006),
OUTREC=(1,1,2,5,7,4,C'ANO 2006')
OUTFIL FILES=02,INCLUDE=(15,2,ZD,EQ,2006

OUTREC=(1,1,2,5,7,4,C'ANO 2006')

//SORT FIELDS=COPY

//RP68SELE JOB (1,'TP=TNDS'),'TiNS010',CLASS=C,MSGLEVEL=2,


// MSGCLASS=R,TIME=1,REGION=10000K
/*JOBPARM R=2007,P=PROC03
//*
//*-------------------------------------------------------------------
-*
//* STOPAFT = LIMITE DE REGISTROS DE SAIDA
*
//* INCLUDE COND = SELECIONA PARA SAIR NO SORT
*
//*-------------------------------------------------------------------
-*
//*
//SORT0001 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//********************************************************************
**********
//* arquivo de entrada
*
//********************************************************************
**********
//SORTIN DD DSN=RPY.EDMIL.INTE.CADAS,DISP=SHR * arquivo de entrada
//********************************************************************
**********
//* arquivo de saida
*
//********************************************************************
**********
//SORTOUT DD DSN=RPY.EDMIL.INTE.CADAS.SORT,
// DISP=(,CATLG,DELETE),

// UNIT=FIXO,SPACE=(CYL,(20,5)),
// DCB=(RECFM=FB,LRECL=850,BLKSIZE=0)
*************************
//* SORT FIELDS=(05,4,A,62,4,A),FORMAT=BI,STOPAFT=200 * criterio de
seleção
//SYSIN DD *
SORT FIELDS=(05,4,A,62,6,A),FORMAT=BI
INCLUDE
COND=((5,4,CH,EQ,C'0011',OR,5,4,CH,EQ,C'0012'),AND,62,6,CH,EQ,C'200105
')
//
INCLUDE COND=(17,2,CH,EQ,C'EC',OR,
17,4,CH,EQ,C'TS99',OR,
17,4,CH,EQ,C'0088',OR,
17,4,CH,EQ,C' 72')
//
INCLUDE COND=(1,4,CH,EQ,C'0116',AND,
69,4,CH,EQ,C'2644',AND,
80,9,CH,EQ,C'562644016')
//
INCLUDE COND=(1,4,CH,EQ,C'0116',AND,
69,4,CH,EQ,C'2644',AND,
80,9,CH,EQ,C'562644016')
//
//********************************************************************
*
//* INCLUDE COM OMIT
*
//********************************************************************
*
//*

OMIT COND = (P1,T1,F1,COND,|P2,T2,F2-OU CONST-


|,(AND,OR,)
OMIT COND = (P1,T1,COND,|P2,T2-OU CONST-|,(AND,OR,)...)
IDEM INCLUDE
UTILIZADO PARA NAO GRAVAR OS REGISTROS QUE
SATISFACAM A CONDICAO.
//********************************************************************
**
//*INCLUDE COM INREC
*
//********************************************************************
**
INREC FIELDS= (S,P,T,A,...S,P,T,A)

UTILIZADO PARA FORMATAR O REGISTRO DE ENTRA


DA ANTES DA CLASSIFICACAO, PARA DIMINUIR A
QUANTIDADE DE RECURSOS A SEREM UTILIZADOS,
CASO NAO NECESSARIO A UTILIZACAO.
EX: O REGISTRO DE ENTRADA TEM 5K MAS SO
SERA
UTILIZADO 50 BYTES.

//********************************************************************
****
//* INCLUDE COM
OUTREC
//********************************************************************
****
OUTREC FIELDS= (S,P,T,A,...S,P,T,A)

S = PARAMETRO OPCIONAL
(N)X - QTD DE BYTES A SEREM INCLUIDOS
COM BRANCOS.

(N)Z - QTD DE BYTES A SEREM INCLUIDOS


COM ZEROS.

P = PRIMEIRA POSICAO DO CAMPO A SER MOVIDO


T = TAMANHO DO CAMPO
A = ALINHAMENTO DO CAMPO
H - HALFWORD
F - FULLWORD
D - DOUBLEWORD
//********************************************************************
*******
//* INCLUDE COM SUM
*
//********************************************************************
*******
- FUNÇÃO: SUM - Elimina registros com igualdade de chaves, de modo que
somente 1 (um) r4gistro será gravado para cada valor da chave,
opcionalmente poderá totalizar campos numéricos do registro
sumarizado.
SUM = FIELDS=(P,T,F,...P,T,F)
SUM = FIELDS=(P,T,...P,T),FORMAT=F
SUM = FIELDS=NONE
FIELDS - INDICA OS CAMPOS NUMERICOS QUE
SERAO SOMADOS.
P - PRIMEIRA POSICAO DO CAMPO
T - TAMANHO DO CAMPO
F - FORMATO DO CAMPO
NONE - INDICA QUE DOS REGISTROS
DUPLICADOS
APENAS UM DEVERA SER GRAVADO,
NAO SOMANDO OS REGISTROS.
SUM - ESPECIFICA QUE SEMPRE QUE FOREM ENCON
TRADOS REGISTROS COM A MESMA CHAVE
APENAS UM DEVERA SER GRAVADO, COM A
SOMATORIA DE TODOS OS IGUAIS.

EQUALS = INDICA QUE OS REGISTROS IGUAIS DEVERAO


PERMA
NECER CLASS NA MESMA ORDEM DE ENTRADA.
QUANDO DESNECESSARIO NAO USAR.
DEGRADA MUITO A UTILIZACAO.

SKIPREC = NNNNNN
DESPREZA REGISTROS DO INICIO DO ARQUIVO DE
ENTRADA

STOPAFT = NNNNNN
LIMITE DE REGISTROS PARA O ARQUIVO DE SAIDA
//*
//********************************************************************
*
//*
//CA89SELE JOB (1,'TP=TNDS'),'TGENHAR',CLASS=C,MSGLEVEL=2,
// MSGCLASS=R,TIME=1,REGION=10000K
/*JOBPARM R=2007,P=PROC03
//*
//*-------------------------------------------------------------------
-*
//* STOPAFT = LIMITE DE REGISTROS DE SAIDA
*
//* INCLUDE COND = SELECIONA PARA SAIR NO SORT
*
//*-------------------------------------------------------------------
-*
//*
//SORT0001 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=RPY.EDMIL.INTE.CADAS,DISP=SHR
//SORTOUT DD DSN=RPY.EDMIL.INTE.CADAS.SORT,
// DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(20,5)),
// DCB=(RECFM=FB,LRECL=850,BLKSIZE=0)
//* SORT FIELDS=(05,4,A,62,4,A),FORMAT=BI,STOPAFT=200
//SYSIN DD *
SORT FIELDS=(05,4,A,62,6,A),FORMAT=BI
INCLUDE COND=((5,4,CH,EQ,C'0011',OR,
5,4,CH,EQ,C'0012'),AND,
62,6,CH,EQ,C'200105')
//
INCLUDE COND=(17,2,CH,EQ,C'EC',OR,
17,4,CH,EQ,C'TS99',OR,
17,4,CH,EQ,C'0088',OR,
17,4,CH,EQ,C' 72')
//
INCLUDE COND=(1,4,CH,EQ,C'0116',AND,
69,4,CH,EQ,C'2644',AND,
80,9,CH,EQ,C'562644016')
//
INCLUDE COND=(1,4,CH,EQ,C'0116',AND,
69,4,CH,EQ,C'2644',AND,
80,9,CH,EQ,C'562644016')
//
//*
//********************************************************************
*
//*
//CA89SORT JOB (1,'TP=TNDS'),TGENHAR,CLASS=C,MSGCLASS=R, MSGLEVEL=0,
// TIME=5,REGION=5M
/*JOBPARM R=2007,P=PROC03,L=9999
//*-------------------------------------------------------------------
-*
//* SORT = COPIA DE ARQUIVOS
*
//*-------------------------------------------------------------------
-*
//SORT0215 EXEC RSORTD
//SORTIN DD DSN=CD@.CIDEN,DISP=SHR
//SORTOUT DD DSN=CD@.ELI.IDEN,DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(5,1),RLSE),
// DCB=(RECFM=FB,LRECL=1700,BLKSIZE=0)
//SYSIN DD *
SORT FIELDS=COPY
//*
//********************************************************************
*
//*
//CA89LIST JOB (1,'TP=TNDS'),TGENHAR,CLASS=C,MSGCLASS=R,MSGLEVEL=2
/*JOBPARM R=2007,P=PROC03,L=999
//*-------------------------------------------------------------------
*
//* SORT = COPY USADO PARA LISTAR PGM
*
//*-------------------------------------------------------------------
*
//STEP0101 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//*SORTIN DD DSN=MB.FND05(CATRDETA),DISP=SHR
//SORTIN DD DSN=CA@.PGH.HART.TRA01(CATRDETA),DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
//
//*
//********************************************************************
*
//*
//CA89CRI2 JOB (1,'TP=TNDS'),'TGENHAR',CLASS=J,MSGLEVEL=2,
// MSGCLASS=R,TIME=10,REGION=10000K
/*JOBPARM R=2007,P=PROC03
//*
//*-------------------------------------------------------------------
-*
//*
//* SUM FIELDS = NONE
//* INDICA QUE DEVERA SER GRAVADO NA SAIDA
//* APENAS UM REGISTRO DE CADA CHAVE CLASSIFICADA
//*
*
//*-------------------------------------------------------------------
-*
//*
//SORT0001 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=CAA.DETDI.MOVOK.RONO.D2504,DISP=SHR
//SORTOUT DD DSN=CAA.DETDI.MOVOK.RONO.D2504.SUM,
// DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(30,5)),
// DCB=(RECFM=FB,LRECL=140,BLKSIZE=0)
SORT FIELDS=(05,13,A,44,1,A),FORMAT=BI
SUM FIELDS=NONE
//
//*
//********************************************************************
*
//*
//CA89CRI1 JOB (1,'TP=TNDS'),'TGENHAR',CLASS=J,MSGLEVEL=2,
// MSGCLASS=R,TIME=10,REGION=10000K
/*JOBPARM R=2007,P=PROC03
//*
//*-------------------------------------------------------------------
-*
//* OUTREC FIELDS = FORMATACAO DO REGISTRO DE SAIDA
*
//*-------------------------------------------------------------------
-*
//*
//SORT0001 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=CAA.DETDI.Y2K.RONOA,DISP=SHR
//SORTOUT DD DSN=&&DET,DISP=(,PASS,DELETE),
// DCB=*.SORTIN,SPACE=(CYL,250)
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FIELDS=(17,4,C'0000000001')
//*
//********************************************************************
*
//*
//CA89CRI1 JOB (1,'TP=TNDS'),'TGENHAR',CLASS=J,MSGLEVEL=2,
// MSGCLASS=R,TIME=10,REGION=10000K
/*JOBPARM R=2007,P=PROC03
//*
//*-------------------------------------------------------------------
-*
//* SUM FIELDS =
*
//*-------------------------------------------------------------------
-*
//*
//SORT0001 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&&DET,DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(1,4,A),FORMAT=BI
SUM FIELDS=(5,10,ZD)
//*
//********************************************************************
*
//*
//CA89CRI1 JOB (1,'TP=TNDS'),'TGENHAR',CLASS=J,MSGLEVEL=2,
// MSGCLASS=R,TIME=10,REGION=10000K
/*JOBPARM R=2007,P=PROC03
//*
//*-------------------------------------------------------------------
-*
//* INCLUDE COND =
*
//* SUM FIELDS = NONE APENAS UM REGISTRO DE CADA CHAVE
*
//* A SER GRAVADO NA SAIDA DO SORTE
*
//*-------------------------------------------------------------------
-*
//*
//SORT0001 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=CAA.DETDI.G0718.RONO.D2504,DISP=SHR
//SORTOUT DD DSN=CAA.DETDI.G0718.HART.D2504.SUM,
// DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(30,5)),
// DCB=(RECFM=FB,LRECL=140,BLKSIZE=0)
//SYSIN DD *
SORT FIELDS=(5,4,A,69,5,A,63,4,A,44,1,A),FORMAT=BI
INCLUDE COND=(44,1,CH,EQ,C'D',OR,
44,1,CH,EQ,C'C')
SUM FIELDS=NONE
//
//*
//********************************************************************
*
//*
//CA89SORT JOB (1,'TP=TNDS'),'TGENHAR',CLASS=C,MSGLEVEL=2
// MSGCLASS=R,TIME=10,REGION=10000K
/*JOBPARM R=2007,P=PROC33,L=99999
//*
//*-------------------------------------------------------------------
*
//* OMIT COND = NAO GRAVA NA SAIDA DO SORTE
//*-------------------------------------------------------------------
*
//* CLASSIFICA MOVIMENTO CONTABIL POR:
*
//* CD-EMPRESA, CD-AGE-FIL, CD-UNID-CONT,
*
//* CD-CONT-INTE, CD-IDEN-PROD, CD-ITEM-PROD,
*
//* CD-EMP-ORIG, CD-CR-ORIG, CD-CR-GEST,
*
//* DT-CONTAB
*
//*-------------------------------------------------------------------
*
//SORT01 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=CJ@.AF.SARQMOV,DISP=OLD
// DD DSN=CJ@.AF.SARQMOR,DISP=OLD
//SORTOUT DD DSN=CJ@.AF.EARQMOV1,
//* DISP=(,CATLG,DELETE),
// DISP=OLD,
// UNIT=FIXO,SPACE=(CYL,(5,1)),
// DCB=(RECFM=FB,LRECL=569,BLKSIZE=0)
//SYSIN DD *
SORT FIELDS=(01,5,ZD,A,14,5,ZD,A,19,7,ZD,A,26,7,ZD,A,33,1,ZD,A,
34,9,ZD,A,43,5,ZD,A,48,7,ZD,A,55,7,ZD,A,
06,4,ZD,A,10,2,ZD,A,12,2,ZD,A)
OMIT COND=(06,8,ZD,EQ,20010507)
//*-------------------------------------------------------------------
*
//*
//********************************************************************
*
//*
//CA89COMP JOB (1,'TP=TNDS'),TGENHAR,CLASS=3,MSGLEVEL=2,MSGCLASS=R,
// TIME=1
/*JOBPARM R=2007,P=PROC03,LINES=999
//*-------------------------------------------------------------------
//*
//* EQUALS PARA MANTER A SEQUENCIA DE ENTRADA NOS IGUAIS
//*
//*-------------------------------------------------------------------
//SORT0001 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD *
//SORTOUT DD DSN=&&GEO1,DISP=(,PASS),
// UNIT=FIXO,SPACE=(CYL,(2,1)),
// DCB=(RECFM=FB,LRECL=72,BLKSIZE=0)
SORT FIELDS=(2,71,CH,A),EQUALS
//*
//********************************************************************
*
//*
//CA89SORT JOB (1,'TP=TNDS'),'TGENHAR',CLASS=C,MSGLEVEL=2,
CAC0000
// MSGCLASS=R,TIME=1
CAC0000
/*JOBPARM R=2007,P=PROC03
CAC0000
//*
//*-------------------------------------------------------------------
//* EQUALS = PARA MANTER OS REGISTROS IGUAIS NA ORDEM DE ENTRADA
//* SKIPREC = NNNNNN - PARA DESPREZAR OS PRIMEIROS
//* STOPAFT = NNNNNN - PARA GRAVAR NA SAIDA
//*-------------------------------------------------------------------
//*
//SORT0002 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=CA@.ARQ1,DISP=SHR
//SORTOUT DD DSN=&&VAL,DISP=(,PASS),
// UNIT=FIXO,SPACE=(CYL,(2,1)),
// DCB=(RECFM=FB,LRECL=100,BLKSIZE=?????)
SORT FIELDS=(1,17,CH,A),EQUALS,SKIPREC=NNNNNN,STOPAFT=XXXXXX
//
//*
//********************************************************************
*
//*
//CA89SORT JOB (1,'TP=TNDS'),'TGENHAR',CLASS=C,MSGLEVEL=2,
CAC0000
// MSGCLASS=R,TIME=1
CAC0000
/*JOBPARM R=2007,P=PROC03
CAC0000
//*
//*-------------------------------------------------------------------
//* INREC FIELDS =
//* SUM FIELDS =
//* EQUALS = PARA MANTER OS REGISTROS IGUAIS NA ORDEM DE ENTRADA
//*-------------------------------------------------------------------
//*
//SORT0003 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&&VAL,DISP=OLD
//SORTOUT DD DSN=&&SUM,DISP=(,PASS),
// UNIT=FIXO,SPACE=(CYL,(2,1)),
// DCB=(RECFM=FB,LRECL=100,BLKSIZE=?????)
SORT FIELDS=(1,4,CH,A,13,5,CH,A),EQUALS
INREC FIELDS=(1,4,C'99999999',13,88)
SUM FIELDS=(18,8,PD,26,8,PD,34,8,PD,42,8,PD,50,8,PD,86,8,PD)
//*
//********************************************************************
*
//*
//CA89SORT JOB (1,'TP=TNDS'),'TGENHAR',CLASS=C,MSGLEVEL=2,
CAC0000
// MSGCLASS=R,TIME=1
CAC0000
/*JOBPARM R=2007,P=PROC03
CAC0000
//*
//*-------------------------------------------------------------------
//*** PARA ALTERAR A ORDEM DE CLASSIFICACAO HEXA DE UM CARACTER
//*-------------------------------------------------------------------
//*
//SORT0004 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&&VAL,DISP=OLD
//SORTOUT DD DSN=&&SUM,DISP=(,PASS),
// UNIT=FIXO,SPACE=(CYL,(2,1)),
// DCB=(RECFM=FB,LRECL=100,BLKSIZE=?????)
SORT FIELDS=(1,1,AQ,A),EQUALS
ALTSEQ CODE=(C1C9) /* CARACTER HEXA 'C1' CLASSIF. COMO HEXA 'C9'
//*
//********************************************************************
*
//*
//CA89SORT JOB (1,'TP=TNDS'),'TGENHAR',CLASS=C,MSGLEVEL=2,
CAC0000
// MSGCLASS=R,TIME=1
CAC0000
/*JOBPARM R=2007,P=PROC03
CAC0000
//*
//*-------------------------------------------------------------------
//* A PARTIR DE UM ARQUIVO, GERAR DOIS OU MAIS ARQUIVOS
//* OUTREC = GRAVA REGISTROS COM OUTRA FORMATACAO
//*-------------------------------------------------------------------
//*
//SORT0005 EXEC RSORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=CA@.SDAP.DEZ1,DISP=SHR
//SORTOF1 DD DSN=&&ARQ1,DISP=(,PASS),
// UNIT=FIXO,SPACE=(CYL,(2,1)),
// DCB=(RECFM=FB,LRECL=60,BLKSIZE=?????)
//SORTOF2 DD DSN=&&ARQ2,DISP=(,PASS),
// UNIT=FIXO,SPACE=(CYL,(2,1)),
// DCB=(RECFM=FB,LRECL=100,BLKSIZE=?????)
//SYSIN DD *
SORT FIELDS=(1,8,CH,A)
OUTFIL FILES=1,
INCLUDE=(5,1,CH,EQ,C'C'),
OUTREC=(1,60)
OUTFIL FILES=2,
INCLUDE=(5,1,CH,EQ,C'D'),
//
//*
//********************************************************************
*
//*
//CA89SORT JOB (1,'TP=TNDS'),'TGENHAR',CLASS=C,MSGLEVEL=2,
CAC0000
// MSGCLASS=R,TIME=1
CAC0000
/*JOBPARM R=2007,P=PROC03
CAC0000
//*
//*-------------------------------------------------------------------
*
//* SEPARA ARQUIVO POR EMPRESA/GRUPO
*
//* GRAVANDO EM SAIDAS DIFERENTES
//*-------------------------------------------------------------------
*
//SORT0000 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=EM.PBLM.TEMP.H&HR,DISP=SHR
//SORTOF1 DD DSN=EM.PBL1.TEMP.H&HR,DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(90,30)),
// DCB=(RECFM=FB,LRECL=90,BLKSIZE=0)
//SORTOF2 DD DSN=EM.PBL2.TEMP.H&HR,DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(90,30)),
// DCB=(RECFM=FB,LRECL=90,BLKSIZE=0)
//SORTOF3 DD DSN=EM.PBL3.TEMP.H&HR,DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(90,30)),
// DCB=(RECFM=FB,LRECL=90,BLKSIZE=0)
//SORTOF4 DD DSN=EM.PBL4.TEMP.H&HR,DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(90,30)),
// DCB=(RECFM=FB,LRECL=90,BLKSIZE=0)
//SORTOF5 DD DSN=EM.PBL5.TEMP.H&HR,DISP=(,CATLG,DELETE),
// UNIT=FIXO,SPACE=(CYL,(90,30)),
// DCB=(RECFM=FB,LRECL=90,BLKSIZE=0)
//SYSIN DD *
SORT FIELDS=(1,35,A),FORMAT=BI
0001
OUTFIL FILES=1,INCLUDE=(1,4,ZD,EQ,112,OR,1,4,ZD,EQ,115,OR,
1,4,ZD,EQ,117,OR,1,4,ZD,EQ,119)
OUTFIL FILES=2,INCLUDE=(1,4,ZD,EQ,102,OR,1,4,ZD,EQ,103,OR,
1,4,ZD,EQ,104,OR,1,4,ZD,EQ,107,OR,
1,4,ZD,EQ,111,OR,1,4,ZD,EQ,114,OR,
1,4,ZD,EQ,140,OR,1,4,ZD,EQ,152,OR,
1,4,ZD,EQ,153,OR,1,4,ZD,EQ,154,OR,
1,4,ZD,EQ,155)
OUTFIL FILES=3,INCLUDE=(1,4,ZD,EQ,113,OR,1,4,ZD,EQ,116,OR,
1,4,ZD,EQ,118,OR,1,4,ZD,EQ,125,OR,
1,4,ZD,EQ,131)
OUTFIL FILES=4,INCLUDE=(1,4,ZD,EQ,126,OR,1,4,ZD,EQ,166)
OUTFIL FILES=5,INCLUDE=(1,4,ZD,EQ,151)
//
00000020
//*
//********************************************************************
*
//*
SORT FIELDS=(1,5,A,6,12,A,21,4,A,26,9,A,25,1,A,54,6,A),FORMAT=BI
OUTFIL FILES=1,INCLUDE=(1,5,CH,EQ,C'00001',AND,21,4,CH,NE,C'3331')
OUTFIL FILES=2,INCLUDE=(1,5,CH,EQ,C'00150',AND,21,4,CH,NE,C'3331')
OUTFIL FILES=3,INCLUDE=(1,5,CH,EQ,C'00001',AND,21,4,CH,EQ,C'3331')
OUTFIL FILES=4,INCLUDE=(1,5,CH,EQ,C'00150',AND,21,4,CH,EQ,C'3331')
//*
//********************************************************************
*
//*
//CJ89SORT JOB (1,'TP=TNDS'),'TGENHAR',CLASS=C,MSGCLASS=R
// MSGLEVEL=1,REGION=3000K,TIME=1
/*JOBPARM R=2007,LINES=999,P=PROC03
//*---------------------------------------------
//*
//* SORT COM SELECAO DE CAMPO COMPACTADO
//*
//*---------------------------------------------
//SORT0101 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=CJA.SALDO.EM.D1909,DISP=SHR
//SORTOUT DD DUMMY
//SYSIN DD *
SORT FIELDS=(1,3,CH,A)
INCLUDE COND=(1,3,PD,EQ,01001)
//*
//*

Exemplo de sort1

000001 SORT FIELDS=(1,3,BI,A,35,2,BI,A,41,4,BI,A,210,30,CH,A)

000002 OMIT COND=(1,3,ZD,NE,19,OR,45,2,ZD,EQ,5)

000003 OUTFIL FILES=OUT,


000004
INCLUDE=(35,2,ZD,NE,6,AND,35,2,ZD,NE,12,AND,35,2,ZD,NE,13,AND, C
000005 35,2,ZD,NE,14)

000006 OUTFIL FILES=1,INCLUDE=(35,2,ZD,EQ,6)

000007 OUTFIL FILES=2,

000008
INCLUDE=(35,2,ZD,EQ,12,OR,35,2,ZD,EQ,13,OR,35,2,ZD,EQ,14)
000009 END N=RPSORT4X,P=04MENS

Exemplo de sort2

000001 SORT FIELDS=(1,3,BI,A,35,2,BI,A,40,5,BI,A,210,30,CH,A)

000002 OMIT COND=(1,3,ZD,NE,43,OR,45,2,ZD,EQ,5)

000003 OUTFIL FILES=OUT,

000004
INCLUDE=(35,2,ZD,NE,6,AND,35,2,ZD,NE,12,AND,35,2,ZD,NE,13,AND, C
000005 35,2,ZD,NE,14)

000006 OUTFIL FILES=1,INCLUDE=(35,2,ZD,EQ,6)

000007 OUTFIL FILES=2,

000008
INCLUDE=(35,2,ZD,EQ,12,OR,35,2,ZD,EQ,13,OR,35,2,ZD,EQ,14)
000009 END N=RPSORT4T,P=04MENS

LISTA VIEW ADABAS

000001 //RP68FILE JOB (1,'TP=TNDS'),'ARION',CLASS=C,REGION=2048K,

000002 // MSGCLASS=R,MSGLEVEL=1,TIME=10

000003 /*JOBPARM R=1108,P=PROC03

000004 //*

000005 //* OBS: LISTA DICIONARIO

000006 //*

000007 //*ADD01 EXEC ADDDRCP

000008 //ADD01 EXEC ADDDRCQ

000009 RPCONTRATO
001100 //

...... ============================= B O T T O M
=======================