segunda-feira, 8 de junho de 2015

Dicas Utilitário "SORT" - Vários Exemplos

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

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