//*********************************************************************
//*
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 =======================
//*
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 =======================
Nenhum comentário:
Postar um comentário