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