EXEMPLOS DE SORT
//*-------------------------------------------------------------------*
//
UNIT=CART,VOL=(,,,99),
//*-------------------------------------------------------------------*
//SORT0101 EXEC RSORTD
======
OU
========
//SORT0101 EXEC PGM=SORT
//*-------------------------------------------------------------------*
//* O ARQ."XXX.SAIDA" TERA O MESMO FORMATO E LRECL DO ARQ."XXX.ENTRA" *
//*-------------------------------------------------------------------*
//SORTIN
DD
DSN=XXX.ENTRA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(200,100),RLSE),
//
DCB=*.SORTIN
//*-------------------------------------------------------------------*
//*
GERA ARQUIVO DE SAIDA
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SORTLIB DD
DSN=SYS1.SORTLIB,DISP=SHR
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
*
1234567890
1234567890
1234567890
1234567890
1234567890
/*
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(TRK,(5,5),RLSE),VOL=SER=DES001,
//
DCB=(RECFM=FB,LRECL=20,BLKSIZE=15460)
//SYSIN
DD
*
SORT FIELDS=COPY
OUTREC FIELDS=(C'ARQUIVO
',1,10)
//*-------------------------------------------------------------------*
//*
GERA ARQUIVO COM OS 10 PRIMEIROS REGISTROS
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,900),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,
//
DISP=(OLD,DELETE,KEEP)
//SORTOUT DD
DUMMY
//SYSIN
DD
*
SORT FIELDS=COPY,STOPAFT=10
//*-------------------------------------------------------------------*
//*
MERGE DE ARQUIVOS
*
//*-------------------------------------------------------------------*
//MERGE001 EXEC PGM=SORT,REGION=0M
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,(200,100),RLSE),UNIT=FIXO
//SORTWK02 DD
SPACE=(CYL,(200,100),RLSE),UNIT=FIXO
//SORTWK03 DD
SPACE=(CYL,(200,100),RLSE),UNIT=FIXO
//SORTWK04 DD
SPACE=(CYL,(200,100),RLSE),UNIT=FIXO
//SORTWK05 DD
SPACE=(CYL,(200,100),RLSE),UNIT=FIXO
//SORTIN01 DD
DSN=XXX.ENTRA01,DISP=SHR
//SORTIN02 DD
DSN=XXX.ENTRA02,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(200,100),RLSE),
//
DCB=(RECFM=FB,LRECL=1500,BLKSIZE=0)
//SYSIN
DD
*
MERGE FIELDS=(1,11,A),FORMAT=BI
OPTION DYNALLOC,FILSZ=E4000000
END N=CHMERG01
Exemplos do Uso do SORT
Pág:1/19
//*-------------------------------------------------------------------*
//*
MODELO DE SORT
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,300),UNIT=FIXO
//SORTWK02 DD
SPACE=(CYL,300),UNIT=FIXO
//SORTWK03 DD
SPACE=(CYL,300),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(500,10),RLSE),
//
DCB=(RECFM=FB,LRECL=173,BLKSIZE=0)
//SYSIN
DD
*
SORT FIELDS=(11,04,A),FORMAT=BI,NOEQUALS
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSPRINT DD
SYSOUT=*
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,(50,30),RLSE),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOF1 DD
DSN=XXX.SAIDA01,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(50,30),RLSE),
//
DCB=(RECFM=FB,LRECL=100,BLKSIZE=0)
//SORTOF2 DD
DSN=XXX.SAIDA02,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(50,30),RLSE),
//
DCB=(RECFM=FB,LRECL=100,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=(09,11,A,51,08,A),FORMAT=BI
OUTFIL FILES=1,
INCLUDE=(09,04,ZD,EQ,409,AND,39,2,ZD,EQ,4)
OUTFIL FILES=2,
INCLUDE=(09,04,ZD,EQ,409,AND,39,2,ZD,EQ,5)
//*-------------------------------------------------------------------*
//*
MODELO DE SORT - ALTERACAO DE CONTEUDO DE CAMPO
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,900),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(50,30),RLSE),
//
DCB=(RECFM=FB,LRECL=90,BLKSIZE=0)
//SYSIN
DD
*
SORT FIELDS=COPY
OUTFIL OUTREC=(01,76,77,06,CHANGE=(06,C'200608',C'200612'),
NOMATCH=(77,06),83,08)
//
SORT FIELDS=COPY
OUTFIL OUTREC=(01,06,CHANGE=(6,C'200603',C'200607'),
NOMATCH=(1,6),07,339,
346,06,CHANGE=(6,C'200603',C'200607'),
NOMATCH=(346,6),352,69)
//*-------------------------------------------------------------------*
//*
MODELO DE SORT - ALTERACAO MULTIPLA - ALFA
*
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
OUTFIL OUTREC=(1,49,50,35,
CHANGE=(35,C'RCA E LUZ CATAGUASES
',
C'RCA E LUZ CATAGUASES
04991012292',
C'SA NOVA FRIBURGO D E SA
',
C'SA NOVA FRIBURGO D E SA 04999012293',
C'PE CONTA ARRECADACAO
',
C'PE CONTA ARRECADACAO
00261017077',
C'ETRIFICACAO DA PARAIBA
',
C'ETRIFICACAO DA PARAIBA 11810001463',
C'SA BORBOREMA DISTRIBUIDO
',
C'SA BORBOREMA DISTRIBUIDO11829002203',
C'ELETRIFICACAO DA PARAIBA
',
C'ELETRIFICACAO DA PARAIBA11810001463',
C' ELETRIFICACAO DA PARAIB
',
C' ELETRIFICACAO DA PARAIB11810001463'),
NOMATCH(50,35),85,156)
Exemplos do Uso do SORT
Pág:2/19
//*-------------------------------------------------------------------*
//*
MODELO DE SORT - ALTERACAO MULTIPLA - CAMPO COMPACTADO
*
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
OUTREC FIELDS=(1,3,4,1,
CHANGE=(1,X'0F',X'0C',
X'1F',X'1C',
X'2F',X'2C',
X'3F',X'3C',
X'4F',X'4C',
X'5F',X'5C',
X'6F',X'6C',
X'7F',X'7C',
X'8F',X'8C',
X'9F',X'9C'),
NOMATCH(4,1),05,296)
//*-------------------------------------------------------------------*
//*
USO DO "SORT COM IFTHEN"
*
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=(66,15,ZD,EQ,000000001208390),
OVERLAY=(1,1225,1226,8,CHANGE=(8,C'20100504',C'20080504'),
NOMATCH=(1226,8),1234,267)),
IFTHEN=(WHEN=(66,15,ZD,EQ,000000001209973),
OVERLAY=(1,1225,1226,8,CHANGE=(8,C'20100511',C'20080411'),
NOMATCH=(1226,8),1234,267)),
IFTHEN=(WHEN=(66,15,ZD,EQ,000000001211731),
OVERLAY=(1,1225,1226,8,CHANGE=(8,C'20100518',C'20080418'),
NOMATCH=(1226,8),1234,267))
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
OMIT COND=(19,04,ZD,EQ,0288,
REGISTRO ERRADO
AND,32,08,PD,EQ,7000000,
AND,49,05,PD,EQ,0)
OUTREC IFTHEN=(WHEN=(37,08,PD,EQ,000000056671944),
OVERLAY=(01,36,37,08,CHANGE=(08,X'000000056671944C',
HEADER
X'000000049671944C'),NOMATCH=(37,08),45,356)),
IFTHEN=(WHEN=(31,08,PD,EQ,000000056671944),
OVERLAY=(01,30,31,08,CHANGE=(08,X'000000056671944C', TRAILLER
X'000000049671944C'),NOMATCH=(31,08),39,362))
//*-------------------------------------------------------------------*
//*
ALTERANDO MAIS DE UM CAMPO NO REGISTRO
*
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=(23,08,ZD,EQ,20091002),
OVERLAY=(1,22,23,8,CHANGE=(8,C'20091002',C'20091005'),
NOMATCH=(23,8),31,1,
32,5,CHANGE=(5,X'020091005C',X'020091006C'),
NOMATCH=(32,5),37,664))
//*-------------------------------------------------------------------*
//SORT0101 EXEC RSORTD
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,
//
DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(30,10),RLSE),
//
DCB=(RECFM=FB,LRECL=150,BLKSIZE=0)
SORT FIELDS=(71,4,A),FORMAT=BI
SUM FIELDS=NONE
Exemplos do Uso do SORT
Pág:3/19
//*-------------------------------------------------------------------*
//*
MODELO DE SORT - GERA ARQ. COM REGISTROS EM DUPLICIDADE
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,300),UNIT=FIXO
//SORTWK02 DD
SPACE=(CYL,300),UNIT=FIXO
//SORTWK03 DD
SPACE=(CYL,300),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA.UNICO,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(500,10),RLSE),
//
DCB=(RECFM=FB,LRECL=173,BLKSIZE=0)
//SORTXSUM DD
DSN=XXX.SAIDA.DUPLOS,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(30,10),RLSE),
//
DCB=(RECFM=FB,LRECL=173,BLKSIZE=0)
//SYSIN
DD
*
SORT FIELDS=(01,09,A),FORMAT=BI
SUM FIELDS=NONE,XSUM
OU
//SORT0101 EXEC PGM=ICETOOL
//TOOLMSG DD
SYSOUT=*
//DFSMSG
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA.UNICO,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(30,10),RLSE),
//
DCB=(RECFM=FB,LRECL=173,BLKSIZE=0)
DSN=XXX.SAIDA.DUPLOS,DISP=(,CATLG,DELETE),
//SORTXSUM DD
//
UNIT=FIXO,SPACE=(CYL,(30,10),RLSE),
//
DCB=(RECFM=FB,LRECL=173,BLKSIZE=0)
//TOOLIN
DD
*
SELECT FROM(SORTIN) TO(SORTOUT)ON(01,09,CH) FIRST DISCARD(SORTXSUM)
Exemplos do Uso do SORT
Pág:4/19
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSPRINT DD
SYSOUT=*
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,900),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOF1 DD
DSN=XXX.SAIDA01,
//
DISP=(,CATLG,DELETE),UNIT=FIXO,SPACE=(CYL,(200,200)),
//
DCB=(RECFM=FB,LRECL=200,BLKSIZE=0)
//SORTOF2 DD
DSN=XXX.SAIDA02,
//
DISP=(,CATLG,DELETE),UNIT=FIXO,SPACE=(CYL,(200,200)),
//
DCB=(RECFM=FB,LRECL=200,BLKSIZE=0)
//SORTOF3 DD
DSN=XXX.SAIDA03,
//
DISP=(,CATLG,DELETE),UNIT=FIXO,SPACE=(CYL,(200,200)),
//
DCB=(RECFM=FB,LRECL=200,BLKSIZE=0)
//SORTOF4 DD
DSN=XXX.SAIDA04,
//
DISP=(,CATLG,DELETE),UNIT=FIXO,SPACE=(CYL,(200,200)),
//
DCB=(RECFM=FB,LRECL=200,BLKSIZE=0)
//SORTOF5 DD
DSN=XXX.SAIDA05,
//
DISP=(,CATLG,DELETE),UNIT=FIXO,SPACE=(CYL,(200,200)),
//
DCB=(RECFM=FB,LRECL=200,BLKSIZE=0)
//SORTOF6 DD
DSN=XXX.SAIDA06,
//
DISP=(,CATLG,DELETE),UNIT=FIXO,SPACE=(CYL,(200,200)),
//
DCB=(RECFM=FB,LRECL=200,BLKSIZE=0)
//SORTOF7 DD
DSN=XXX.SAIDA07,
//
DISP=(,CATLG,DELETE),UNIT=FIXO,SPACE=(CYL,(200,200)),
//
DCB=(RECFM=FB,LRECL=200,BLKSIZE=0)
//SYSIN
DD
*
SORT FIELDS=(01,11,BI,A)
OUTFIL FILES=1,
INCLUDE=(178,1,ZD,EQ,1)
OUTFIL FILES=2,
INCLUDE=(179,1,ZD,EQ,1)
OUTFIL FILES=3,
INCLUDE=(180,1,ZD,EQ,1)
OUTFIL FILES=4,
INCLUDE=(181,1,ZD,EQ,1)
OUTFIL FILES=5,
INCLUDE=(182,1,ZD,EQ,1)
OUTFIL FILES=6,
INCLUDE=(183,1,ZD,EQ,1)
OUTFIL FILES=7,
INCLUDE=(184,1,ZD,EQ,1)
//*-------------------------------------------------------------------*
SORT FIELDS=(63,2,BI,A,65,4,BI,A,51,6,BI,A,154,40,CH,A)
OUTFIL FILES=1,
INCLUDE=(57,2,CH,EQ,C'11',OR,57,2,CH,EQ,C'14'),
OUTREC=(1,56,C'11',59)
OUTFIL FILES=2,
INCLUDE=(57,2,CH,EQ,C'20',OR,57,2,CH,EQ,C'19'),
OUTREC=(1,56,C'20',59)
OUTFIL FILES=3,
INCLUDE=(57,2,CH,EQ,C'35',OR,57,2,CH,EQ,C'34'),
OUTREC=(1,56,C'35',59)
END N=CHSORT9D,P=CH04RELF
//*-------------------------------------------------------------------*
//*
GERA ARQUIVO COM CAMPOS COMPACTADOS
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA.CONV,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(400,20),RLSE),
//
DCB=(RECFM=FB,LRECL=300,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTREC FIELDS=(1,178,X'000000000F',X'000000000000000F', X'000000000000000F',X'000000000000000F', X'000000000000000F',X'000000000000000F', X'000000000000000F',69X)
END
Exemplos do Uso do SORT
Pág:5/19
//*-------------------------------------------------------------------*
//* GERA NOVO ARQUIVO A PARTIR DO ARQUIVO DE ENTRADA
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=40,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=(3,4,A),FORMAT=BI
INCLUDE COND=(3,4,ZD,EQ,1543,OR,3,4,ZD,EQ,1650)
* INCLUDE COND=(3,4,ZD,EQ,83,OR,3,4,ZD,EQ,310,OR,3,4,ZD,EQ,409,OR,
*
3,4,ZD,EQ,560)
OUTFIL OUTREC=(C'347',16,5,PD,EDIT=(TTTTTTTTT),
21,3,PD,EDIT=(TTTT),
24,2,PD,EDIT=(TT),
58,5,PD,EDIT=(TTTTTTTTT),
3,11,ZD,EDIT=(TTTTTTTTTTT),
C'0000',C'0000000',2X)
END
//*-------------------------------------------------------------------*
//*
CONVERTE CAMPO COMPACTADO EM NUMERICO
*
//*-------------------------------------------------------------------*
SORT FIELDS=(01,11,BI,A),STOPAFT=10000
OUTREC FIELDS=(001:001,35,
036:036,05,PD,EDIT=(TTTTTTTTT),
045:041,02,PD,EDIT=(TTT),
048:043,05,
053:048,03,PD,EDIT=(TTTTT),
058:051,03,PD,EDIT=(TTTTT),
063:054,08,PD,EDIT=(TTTTTTTTTTTTTTT),
078:062,08,PD,EDIT=(TTTTTTTTTTTTTTT),
093:070,08,PD,EDIT=(TTTTTTTTTTTTTTT),
108:078,08,PD,EDIT=(TTTTTTTTTTTTTTT),
123:086,08,PD,EDIT=(TTTTTTTTTTTTTTT),
138:094,08,PD,EDIT=(TTTTTTTTTTTTTTT),
153:102,08,PD,EDIT=(TTTTTTTTTTTTTTT),
168:110,08,PD,EDIT=(TTTTTTTTTTTTTTT),
183:118,08,PD,EDIT=(TTTTTTTTTTTTTTT),
198:126,08,PD,EDIT=(TTTTTTTTTTTTTTT),
213:134,08,PD,EDIT=(TTTTTTTTTTTTTTT),
228:142,08,PD,EDIT=(TTTTTTTTTTTTTTT),
243:150,08,PD,EDIT=(TTTTTTTTTTTTTTT),
258:158,08,PD,EDIT=(TTTTTTTTTTTTTTT),
273:166,08,PD,EDIT=(TTTTTTTTTTTTTTT),
288:174,26)
SORT FIELDS=COPY
OUTFIL OUTREC=(1,12,13,5,PD,EDIT=(TTTTTTTTT),18,4,PD,EDIT=(TTTTTTT),
22,5,PD,EDIT=(TTTTTTTTT),27,3,PD,EDIT=(TTTTT),
30,3,PD,EDIT=(TTTTT),33,1,PD,EDIT=(T),
34,3,PD,EDIT=(TTTTT),37,1,38,3,PD,EDIT=(TTTTT),
41,5,PD,EDIT=(TTTTTTTTT),46,5,PD,EDIT=(TTTTTTTTT),
51,3,PD,EDIT=(TTTTT),54,2,PD,EDIT=(TTT),56,8,
64,8,PD,EDIT=(TTTTTTTTTTTTTTT),
72,8,PD,EDIT=(TTTTTTTTTTTTTTT),
80,8,PD,EDIT=(TTTTTTTTTTTTTTT),
88,8,PD,EDIT=(TTTTTTTTTTTTTTT),
97,8,PD,EDIT=(TTTTTTTTTTTTTTT),
106,8,PD,EDIT=(TTTTTTTTTTTTTTT),
115,8,PD,EDIT=(TTTTTTTTTTTTTTT),
124,8,PD,EDIT=(TTTTTTTTTTTTTTT),
132,5,PD,EDIT=(TTTTTTTTT),
137,5,PD,EDIT=(TTTTTTTTT),142,9)
END
//*-------------------------------------------------------------------*
SORT FIELDS=(04,02,A,07,01,A),FORMAT=BI
INCLUDE COND=(04,02,PD,GE,00,AND,04,02,PD,LE,03)
OUTREC FIELDS=(004,02,PD,EDIT=(TTT),C';',
007,001,C';000000001;')
Exemplos do Uso do SORT
Pág:6/19
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=40,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=(3,4,A),FORMAT=BI
INCLUDE COND=(3,4,ZD,EQ,1543,OR,3,4,ZD,EQ,1650)
* INCLUDE COND=(3,4,ZD,EQ,83,OR,3,4,ZD,EQ,310,OR,3,4,ZD,EQ,409,OR,
*
3,4,ZD,EQ,560)
OUTFIL OUTREC=(C'347',16,5,PD,EDIT=(TTTTTTTTT),
21,3,PD,EDIT=(TTTT),
24,2,PD,EDIT=(TT),
58,5,PD,EDIT=(TTTTTTTTT),
3,11,ZD,EDIT=(TTTTTTTTTTT),
C'0000',C'0000000',2X)
END
//*-------------------------------------------------------------------*
//*
CONVERTE CAMPO NUMERICO EM COMPACTADO E ALTERA O TAMANHO DO ARQ *
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,
//
DISP=(OLD,CATLG,CATLG),UNIT=FIXO,SPACE=(CYL,50),
//
DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSIN
DD
*
SORT FIELDS=COPY
OUTREC FIELDS=(1:1,20,
21:21,15,ZD,PD,
29:36,03,
32:39,15,ZD,PD,
40:54,41),CONVERT
//*-------------------------------------------------------------------*
//*
EXPANDIR OS CAMPOS COMPACTADOS MOSTRANDO SE EH POSITO/NEGATIVO *
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(200,100),RLSE),
//
DCB=*.SORTIN
//SYSIN
DD
*
SORT FIELDS=COPY
OUTREC FIELDS=(076,08,C';',
245,15,C';',
042,08,PD,EDIT=(STTT.TTT.TTT.TTT,TT),SIGNS=(+,-),
C';',058,08,PD,EDIT=(STTT.TTT.TTT.TTT,TT),SIGNS=(+,-),
C';',066,08,PD,EDIT=(STTT.TTT.TTT.TTT,TT),SIGNS=(+,-),
C';')
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
INCLUDE COND=(01,02,ZD,EQ,01,AND,31,05,ZD,EQ,01,AND,
356,02,ZD,NE,00,AND,64,15,ZD,NE,00,AND,
(24,07,ZD,EQ,1565,OR,24,07,ZD,EQ,1848,OR,
24,07,ZD,EQ,2386,OR,24,07,ZD,EQ,2576,OR,
24,07,ZD,EQ,2577,OR,24,07,ZD,EQ,2607))
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
INCLUDE COND=(2,8,CH,EQ,C'20030520',AND,13,6,CH,EQ,C'569701')
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
INCLUDE COND=(1314,08,PD,NE,0)
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
INCLUDE COND=(09,02,PD,GE,00,AND,09,02,PD,LE,03)
//*-------------------------------------------------------------------*
SORT FIELDS=(1,27,A),FORMAT=BI
INCLUDE COND=(76,1,CH,NE,C'I',AND,52,8,PD,NE,0)
//*-------------------------------------------------------------------*
SORT FIELDS=(22,11,BI,A)
Exemplos do Uso do SORT
Pág:7/19
SUM FIELDS=NONE
OUTREC FIELDS=(1,36,C'030',40,41)
SORT FIELDS=(362,01,A,01,06,A,346,06,A),FORMAT=BI
SUM FIELDS=NONE
OUTREC FIELDS=(362,01,01,06,346,06)
//*-------------------------------------------------------------------*
SORT FIELDS=(22,11,BI,A) OU SORT FIELDS=(22,11,A),FORMAT=BI
SUM FIELDS=NONE
//*-------------------------------------------------------------------*
SORT FIELDS=(3,4,A,29,4,A),FORMAT=BI
SUM FIELDS=(41,8,PD,49,8,PD)
//*-------------------------------------------------------------------*
SORT FIELDS=(01,44,BI,A)
OUTREC FIELDS=(01:01,44,45:C'000001')
//*-------------------------------------------------------------------*
INREC FIELDS=(9,9,18,1,248,15,19,80)
SORT FIELDS=(1,9,A),FORMAT=BI
OUTREC FIELDS=(1,105)
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
OUTREC FIELDS=(001,006,010,005)
************* --- --- --- --CPO TAM CPO TAM
//*-------------------------------------------------------------------*
SORT FIELDS=(63,2,A),FORMAT=BI
OMIT COND=(63,2,CH,EQ,C'00')
SORT FIELDS=(01,4,A),FORMAT=BI
OMIT COND=(356,7,ZD,EQ,0000000)
//*-------------------------------------------------------------------*
TROCA CONTEUDO DO CAMPO
SORT FIELDS=COPY
OUTFIL OUTREC=(1,7,8,4,CHANGE=(4,C'9984',C'0084'),
NOMATCH=(8,4),12,389)
SORT FIELDS=COPY
OUTFIL OUTREC=(1,7,1,1,CHANGE=(2,C'0',(8,2),C'9',(8,2)),
NOMATCH=(C'99'),10,397)
END
//*-------------------------------------------------------------------*
CONVERTE "VB" EM "FB"
SORT FIELDS=COPY
OUTREC FIELDS=(05,400),CONVERT
SORT FIELDS=COPY
OUTREC FIELDS=(01,21,
107,08,PD,M11,
145,08,PD,M11,
153,08,PD,M11,
161,08,PD,M11,
370,32),CONVERT
//*-------------------------------------------------------------------*
//*
MERGE POR: AGENCIA/CONTA
*
//*-------------------------------------------------------------------*
//MERG0101 EXEC PGM=SORT,PARM='SIZE=4096K'
//SYSOUT
DD
SYSOUT=*
//SORTIN01 DD
DSN=XXX.ENTRA01(0),DISP=SHR,DCB=BUFNO=40
//SORTIN02 DD
DSN=XXX.ENTRA02(0),DISP=SHR,DCB=BUFNO=40
//SORTIN03 DD
DSN=XXX.ENTRA03(0),DISP=SHR,DCB=BUFNO=40
//SORTIN04 DD
DSN=XXX.ENTRA04(0),DISP=SHR,DCB=BUFNO=40
//SORTOUT DD
DSN=XXX.CNGER(+1),DISP=(,CATLG,DELETE),
//
UNIT=(CT90,,DEFER),VOL=(,,,99),
//
DCB=(MD,RECFM=FB,LRECL=600,BLKSIZE=0)
//SYSIN
DD
*
MERGE FIELDS=(16,11,A),FORMAT=BI
END
Exemplos do Uso do SORT
Pág:8/19
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(30,10)),
//
DCB=(RECFM=FB,LRECL=105,BLKSIZE=0)
//SYSIN
DD
*
INREC FIELDS=(9,9,18,1,248,15,19,80)
SORT FIELDS=(1,9,A),FORMAT=BI
OUTREC FIELDS=(1,105)
//*-------------------------------------------------------------------*
//*
MERGE DE ARQUIVOS
*
//*-------------------------------------------------------------------*
//MERG0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN01 DD
DSN=XXX.ENTRA01(0),DISP=OLD
//SORTIN02 DD
DSN=XXX.ENTRA02(0),DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA(+1),DISP=(,CATLG,DELETE),
//
UNIT=CT90,VOL=(,,,99),
//
DCB=(MD,RECFM=FB,LRECL=1500,BLKSIZE=0)
//SYSIN
DD
DSN=CP.SYSIN(CHMERG01),DISP=SHR
CHMERG01 MERGE FIELDS=(1,11,A),FORMAT=BI
//*-------------------------------------------------------------------*
//*
MODELOS DE SORT
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,900),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,
//
DISP=(OLD,DELETE,KEEP)
//SORTOUT DD
DUMMY
//SYSIN
DD
*
SORT FIELDS=COPY,STOPAFT=10
SORT FIELDS=COPY
,STOPAFT=1000
SORT FIELDS=(1,11,A,38,4,D,36,2,D,34,2,D),FORMAT=BI
INCLUDE COND=(10,04,ZD,EQ,409)
SORT FIELDS=COPY
INCLUDE COND=(01,03,PD,EQ,409)
SORT FIELDS=COPY
INCLUDE COND=(14,02,ZD,NE,58,AND,466,02,ZD,EQ,26)
OUTREC FIELDS=(001,011,C';',014,002,C';',466,002,C';000000001;')
SORT FIELDS=(01,11,A,06,02,A),FORMAT=BI
SUM FIELDS=(12,09,ZD)
SORT FIELDS=(09,11,A,51,08,A),FORMAT=BI
OUTFIL FILES=1,
INCLUDE=(09,04,ZD,EQ,409,AND,39,2,ZD,EQ,4)
OUTFIL FILES=2,
INCLUDE=(09,04,ZD,EQ,409,AND,39,2,ZD,EQ,5)
OUTFIL FILES=3,
INCLUDE=(09,04,ZD,EQ,409,AND,39,2,ZD,EQ,4,AND,49,02,ZD,EQ,26)
SORT FIELDS=COPY
OUTFIL OUTREC=(01,06,CHANGE=(6,C'200603',C'200607'),
NOMATCH=(1,6),07,339,
346,06,CHANGE=(6,C'200603',C'200607'),
NOMATCH=(346,6),352,69)
SORT FIELDS=(362,01,A,01,06,A,346,06,A),FORMAT=BI
SUM FIELDS=NONE
OUTREC FIELDS=(362,01,01,06,346,06)
Exemplos do Uso do SORT
Pág:9/19
//*-------------------------------------------------------------------*
//*
MODELO DE SORT
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,900),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(50,30),RLSE),
//
DCB=*.SORTIN
//SYSIN
DD
*
SORT FIELDS=COPY
,STOPAFT=1000
INCLUDE COND=(10,04,ZD,EQ,409)
//*-------------------------------------------------------------------*
//*
MODELO DE SORT ELIMINAR ARQUIVO COM VÁRIOS VOLUMES
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTWK01 DD
SPACE=(CYL,900),UNIT=FIXO
//SORTIN
DD
DSN=XXX.ENTRADA,
//
DISP=(OLD,DELETE,KEEP)
//SORTOUT DD
DUMMY
//SYSIN
DD
*
SORT FIELDS=COPY,STOPAFT=10
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA.CONV,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(400,20),RLSE),
//
DCB=(RECFM=FB,LRECL=300,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTREC FIELDS=(1,178,X'000000000F',X'000000000000000F', X'000000000000000F',X'000000000000000F', X'000000000000000F',X'000000000000000F', X'000000000000000F',69X)
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOF1 DD
DSN=XXX.SAIDA01,DISP=(OLD,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SORTOF2 DD
DSN=XXX.SAIDA02,DISP=(OLD,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTFIL FILES=1,INCLUDE=(30,8,CH,EQ,C'ODRM002S')
OUTFIL FILES=2,INCLUDE=(30,8,CH,NE,C'ODRM002S')
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(OLD,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTFIL OUTREC=(1,81,C'G0039V00G0039V00',98,23)
END
Exemplos do Uso do SORT
Pág:10/19
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=(OLD,DELETE,KEEP)
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTFIL OUTREC=(C'KP01NI',7,23,C'ODKP001E',38,45,
C'0000',87,4,C'0000',95,3,C'KP',100,21)
END
//*-------------------------------------------------------------------*
//*
SELEÇÃO POR INTERVALO
*
//*-------------------------------------------------------------------*
OMIT COND=(1,1,SS,EQ,C'A,B,C')
RANGE PODE SER USADO P/ NUMERICO
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTFIL OUTREC=(1,82,C'0000',87,4,C'0000',95,26)
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=054,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
INCLUDE COND=(1,13,CH,EQ,C'0000008682113',OR,
1,13,CH,EQ,C'0000008682118',OR,
1,13,CH,EQ,C'0000008682119')
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(OLD,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY,STOPAFT=1000
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(OLD,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY,SKIPREC=287
END
//*-------------------------------------------------------------------*
SORT FIELDS=COPY,SKIPREC=700,STOPAFT=50
//*-------------------------------------------------------------------*
SORT FIELDS=(15,40,A,162,04,A),FORMAT=BI,SKIPREC=24600
Exemplos do Uso do SORT
Pág:11/19
//*-------------------------------------------------------------------*
//* PULA REGISTROS E DEPOIS ALTERA O CONTEUDO DO CAMPO
*
//*-------------------------------------------------------------------*
SORT FIELDS=COPY
OPTION SKIPREC=508
OUTREC IFTHEN=(WHEN=(8,3,PD,EQ,1319,AND,11,4,PD,EQ,5000261),
OVERLAY=(1,86,87,2,CHANGE=(2,C'01',C'00'),
NOMATCH=(87,2),89,11))
//*-------------------------------------------------------------------*
SORT FIELDS=COPY,SKIPREC=1,STOPAFT=1
OUTREC FIELDS=(1:C'127507788',10,24,35:C'07',
37,63,101:C'S99',104:497X)
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=51,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
INCLUDE COND=(1,2,CH,NE,C'00',AND,1,2,CH,NE,C'99')
OUTFIL OUTREC=(1,51)
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOF1 DD
DSN=XXX.SAIDA01,DISP=(OLD,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SORTOF2 DD
DSN=XXX.SAIDA02,DISP=(OLD,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTFIL FILES=1,INCLUDE=(30,8,CH,EQ,C'ODRM002S')
OUTFIL FILES=2,INCLUDE=(30,8,CH,NE,C'ODRM002S')
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(OLD,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTFIL OUTREC=(1,81,C'G0039V00G0039V00',98,23)
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=(OLD,DELETE,KEEP)
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTFIL OUTREC=(C'KP01NI',7,23,C'ODKP001E',38,45,
C'0000',87,4,C'0000',95,3,C'KP',100,21)
END
Exemplos do Uso do SORT
Pág:12/19
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=120,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
OUTFIL OUTREC=(1,82,C'0000',87,4,C'0000',95,26)
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=054,BLKSIZE=0)
//SYSIN
DD *
SORT FIELDS=COPY
INCLUDE COND=(1,13,CH,EQ,C'0000008682113',OR,
1,13,CH,EQ,C'0000008682118',OR,
1,13,CH,EQ,C'0000008682119')
END
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=FIXO,SPACE=(CYL,(5,5)),
//
DCB=(RECFM=FB,LRECL=51,BLKSIZE=0)
//SYSIN
DD
*
SORT FIELDS=COPY
INCLUDE COND=(1,2,CH,NE,C'00',AND,1,2,CH,NE,C'99')
OUTFIL OUTREC=(1,51)
END
Exemplos do Uso do SORT
Pág:13/19
//*-------------------------------------------------------------------*
//*
GERA RELATORIO USANDO O “SORT”
*
//*-------------------------------------------------------------------*
//*
COUNT = 8 DIGITOS
*
//*
LENGTH = 22 DIGITOS MAXIMO
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SYSOUT
DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DUMMY
//SALIDA
DD
SYSOUT=*
//SYSIN
DD
*
SORT FIELDS=COPY
INCLUDE COND=(01,11,CH,EQ,C'06897706824',AND,
(12,01,ZD,EQ,3,OR,
12,01,ZD,EQ,5))
OUTFIL FNAMES=SALIDA,NODETAIL,
TRAILER1=(8:'NUMERO DE REGISTROS:',COUNT,
2/,
8:'QT_LANCS_OK:',
21:TOTAL=(698,02,PD,M10,LENGTH=22),
2/,
8:'QT_LANCS
:',
21:TOTAL=(017,02,PD,M10,LENGTH=22))
//*-------------------------------------------------------------------*
//*-------------------------------------------------------------------*
//*
RETIRA O CARACTER “ASA” (CARACTER “1”) DA PRIMEIRA POSIÇÃO
*
//*-------------------------------------------------------------------*
//SORT0101 EXEC PGM=SORT
//SORTIN DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),...
//SYSOUT DD
SYSOUT=*
//SYSIN
DD
DATA
OPTION COPY
OUTFIL REMOVECC,NODETAIL,
TRAILER1=(COUNT=(M10,LENGTH=10))
Exemplos do Uso do SORT
Pág:14/19
//*-------------------------------------------------------------------*
//*
GERA “TRAILER” NO ARQUIVO COM CARACTER “ASA”
*
//*-------------------------------------------------------------------*
//SORT0101
EXEC PGM=SORT
//SORTLIB
DD
DSN=SYS1.SORTLIB,DISP=SHR
//SYSOUT
DD
SYSOUT=*
//SRTOUT
DD
SYSOUT=*
//SYSPRINT DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOF1
DD
DSN=XXX.TEMP01,DISP=(,CATLG,DELETE),
//
UNIT=SYSDA,SPACE=(TRK,(50,100),RLSE),
//
DCB=(LRECL=15,RECFM=FA)
//SORTWK01 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SORTWK02 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SORTWK03 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SYSIN
DD
*
SORT FIELDS=(01,09,CH,A)
SUM FIELDS=NONE
OUTFIL FILES=1,
TRAILER1=(01:COUNT+1=(M11,LENGTH=6))
//*-------------------------------------------------------------------*
//SORT0102 EXEC PGM=SORT
//SORTLIB
DD
DSN=SYS1.SORTLIB,DISP=SHR
//SYSOUT
DD
SYSOUT=*
//SRTOUT
DD
SYSOUT=*
//SYSPRINT DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.TEMP01,DISP=SHR
//SORTOUT
DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=SYSDA,SPACE=(TRK,(50,100),RLSE),
//
DCB=(LRECL=15,RECFM=FB)
//SORTWK01 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SORTWK02 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SORTWK03 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SYSIN
DD
*
SORT FIELDS=COPY
OUTREC FIELDS=(01:02,14)
//*-------------------------------------------------------------------*
Resultado - Arquivo: XXX.SAIDA
000001 ABC20101201168
000002 AME20101201149
000003 A2020101201001
000004 A2120101201002
000005 A2220101201007
..........................................
000050 S0820101201135
000051 S0920101201129
000052 S1020101201138
000053 S1320101201138
000054 S1420101201184
000055 X 20101201258
000056 000056
Exemplos do Uso do SORT
Pág:15/19
//*-------------------------------------------------------------------*
//*
GERA “HEADER/TRAILER” NO ARQUIVO SEM CARACTER “ASA
*
//*-------------------------------------------------------------------*
//SORT0101
EXEC PGM=SORT
//SORTLIB
DD
DSN=SYS1.SORTLIB,DISP=SHR
//SYSOUT
DD
SYSOUT=*
//SRTOUT
DD
SYSOUT=*
//SYSPRINT DD
SYSOUT=*
//SORTIN
DD
DSN=XXX.ENTRADA,DISP=SHR
//SORTOUT
DD
DSN=XXX.SAIDA,DISP=(,CATLG,DELETE),
//
UNIT=SYSDA,SPACE=(TRK,(50,100),RLSE),
//
DCB=(LRECL=15,RECFM=FB)
//SORTWK01 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SORTWK02 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SORTWK03 DD
UNIT=SYSDA,SPACE=(CYL,(25,5),RLSE)
//SYSIN
DD
*
SORT FIELDS=(01,09,CH,A)
SUM FIELDS=NONE
OUTFIL REMOVECC,
HEADER1=(04:DATENS=(4MD)),
TRAILER1=(01:C'ZZZ',COUNT+2=(M11,LENGTH=6))
//*-------------------------------------------------------------------*
Resultado - Arquivo: XXX.SAIDA
000001
20111017
000002 ABC201012011685
000003 AME201012011493
000004 A20201012010018
000005 A21201012010026
......................
000050 S07201012010606
000051 S08201012011353
000052 S09201012011294
000053 S10201012011387
000054 S13201012011384
000055 S14201012011848
000056 X 201012012587
000057 ZZZ000057
//*--------------------------------------------------------------------*
//*
GERANDO "HEADER" E CONTADOR DE REGISTROS NO "TRAILLER"
*
//*--------------------------------------------------------------------*
SORT FIELDS=(01,09,A,11,05,A,53,19,A),FORMAT=BI
OUTREC FIELDS=(C'1',001,439,C'1')
OUTFIL REMOVECC,
HEADER1=(C'09999',DATENS=(4MD),C'HXX441',441:C'0'),
TRAILER1=(C'9',COUNT+2=(M11,LENGTH=9),441:C'9')
RESULTADO:
=COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-****** ***************************** Top of Data ******************************
000001 0999920111117HXX441
000002 1CNPJ LOJA;FORN.;NOME DO FORNECEDOR;CNPJ FORNECEDOR;FORN.CIDADE;UF;NUM.
000003 1001545828;00059;AAAAAAAAAAAAAAA
;000.000.000/0001-01
000004 1001545828;00059;AAAAAAAAAAAAAAA
;000.000.000/0001-01
000005 1001545828;00480;BBBBBBBBBBBBBBBBBBBBBBB
;000.000.000/0001-01
...............................................................................
018825 1055295604;77428;CCCCCCCCCCCCCCCC
;000.000.000/0001-01
018826 1055295604;83208;DDDDD DDDDD DDDDD DDD
;000.000.000/0001-01
018827 1055295604;83760;EEEEE EEEEEEEEE EEEEEEE EEEE
;000.000.000/0001-01
018828 1055295604;84153;FFFF FFFFFF FFFFFF FFFF
;000.000.000/0001-01
018829 1055295604;84557;GGG GGGG GGGGGGG GGGGGG GGGGGGG
;000.000.000/0001-01
018830 9ZZZ000018830
****** **************************** Bottom of Data ****************************
Exemplos do Uso do SORT
Pág:16/19
DATENS = (abc)
Especifica que a data atual é para aparecer no registro relatório em 'abc' da forma, onde a, b e c indicam a ordem em que o mês, dia,
ano e estão a aparecer e se o ano é para aparecer como duas ou quatro dígitos.
Para a, b e c, use M para representar o mês (01-12), D para representar o dia (01-31), Y para representar os dois últimos dígitos do
ano (por exemplo, 02), ou de 4 a representam os quatro dígitos do ano (por exemplo, 2002). M, D, e Y ou 4 cada um pode ser
especificado somente uma vez.
Exemplos:
- DATENS = (DMY) produziria uma data de "ddmmaa" a forma, que em 29 de março de 2002, apareceria como '290302 '.
- DATENS = (4MD) produziria uma data de "aaaammdd" a forma, que em 29 de março de 2002, apareceria como '20020329 '.
Exemplos do Uso do SORT
Pág:17/19
//*-------------------------------------------------------------------*
//*
GERA RELATORIO USANDO O “SORT”
*
//*-------------------------------------------------------------------*
SORT FIELDS=(3,1 ,A,16,13,A),FORMAT=CH
OUTFIL FNAMES=WEST,
INCLUDE=(42,6,CH,EQ,C'West'),
HEADER1=(5/,18:' Western Region',3/,
18:'Profit and Loss Report',3/,
18:' for ',&DATE,3/,
18:' Page',&PAGE),
OUTREC=(6:16,13,24:31,1 ,ZD,M5,LENGTH=2 ,75:X),
SECTIONS=(3,1 ,SKIP=P,
HEADER3=(2:'Division: ',3,1 ,5X,'Page:',&PAGE,2/,
6:'Branch Office',24:' Profit/(Loss)',/,
6:'-------------',24:'--------------------'),
TRAILER3=(6:'=============',24:'====================',/,
6:'Total',24:TOTAL=(31,1 ,ZD,M5,LENGTH=2 ),/,
6:'Lowest',24:MIN=(31,1 ,ZD,M5,LENGTH=2 ),/,
6:'Highest',24:MAX=(31,1 ,ZD,M5,LENGTH=2 ),/,
6:'Average',24:AVG=(31,1 ,ZD,M5,LENGTH=2 ),/,
3/,2:'Average for all Branch Offices so far:',
X,SUBAVG=(31,1 ,ZD,M5))),
TRAILER1=(8:'Page ',&PAGE,5X,'Date: ',&DATE,5/,
8:'Total Number of Branch Offices Reporting: ',
COUNT,2/,
8:'Summary of Profit/(Loss) for all',
' Western Division Branch Offices',2/,
12:'Total:',
22:TOTAL=(31,1 ,ZD,M5,LENGTH=2 ),/,
12:'Lowest:',
22:MIN=(31,1 ,ZD,M5,LENGTH=2 ),/,
12:'Highest:',
22:MAX=(31,1 ,ZD,M5,LENGTH=2 ),/,
12:'Average:',
22:AVG=(31,1 ,ZD,M5,LENGTH=2 ))
//*-------------------------------------------------------------------*
//*-------------------------------------------------------------------*
//*
Converte a data em um nome de Mês e Escreve no "HEADER2"
*
//*-------------------------------------------------------------------*
//SYSIN
DD *
SORT FIELDS=COPY
OUTREC OVERLAY=(132:DATE1,
136,2,CHANGE=(3,C'01',C'JAN',C'02',C'FEV',
C'03',C'MAR',C'04',C'ABR',
C'05',C'MAI',C'06',C'JUN',
C'07',C'JUL',C'08',C'AGO',
C'09',C'SET',C'10',C'OTU',
C'11',C'NOV',C'12',C'DEZ'))
OUTFIL REMOVECC,
OUTREC=(1:1,4,17:5,2,31:7,4,49:11,6,67:17,4,
86:21,10,110:31,3,PD,M0,LENGTH=4,
126:34,4,PD,EDIT=(IIT.TTS),SIGNS=(,,,-)),
HEADER1=(52:'BDCN999A - COD PRODUTO 114138'),
HEADER2=(01:138,2,'-',140,3,'-',132,4,
51:'PRODUCED BY BRANCH SYSTEMS - MIS',
110:'PAG. ',PAGE,/,
01:131'-',/,
01:'BRANCH',
17:'TILL',
31:'RECEIPT',
49:'PRODUCT',
67:'PLANNING',
86:'EMP',
110:'QTY',
126:'PRICE',/,
67:'GROUP',
86:'NO',/,
01:131'-'),
TRAILER1(1:'END OF REPORT')
//*-------------------------------------------------------------------*
Exemplos do Uso do SORT
Pág:18/19
“DELETAR” ARQUIVOS TEMPORARIOS
//*===================================================================*
//*
DELETA ARQUIVOS TEMPORARIOS
(INICIO DO JOB)
*
//*-------------------------------------------------------------------*
//STEP000 EXEC PGM=IEFBR14
//DD001
DD
DSN=XXX.ENTRADA,DISP=(MOD,DELETE),
//
UNIT=SYSDA,SPACE=(TRK,(50,10),RLSE),
//
DCB=(RECFM=FB,LRECL=257)
//*-------------------------------------------------------------------*
//*===================================================================*
//*
DELETA ARQUIVOS TEMPORARIOS
(FINAL DO JOB)
*
//*-------------------------------------------------------------------*
//STEP999 EXEC PGM=IEFBR14,COND=(0,NE)
//DD001
DD
DSN=XXX.ENTRADA,DISP=(OLD,DELETE,DELETE)
//*-------------------------------------------------------------------*
Exemplos do Uso do SORT
Pág:19/19
Download

EXEMPLOS DE SORT