25/11/15

Entendo Sobre JCL de SORT

Introdução sobre Sort

Para quem nunca mexeu com JCL hoje vamos mostrar as funcionalidades que é uma mão na roda o SORT, o que ele faz? Imagine que você tem um arquivo com o nome e o telefone de várias amigos só que os nomes estão fora de ordem, o SORT classifica os nomes em ordem ascendente/descendente deixando mais fácil para você localizar os nomes e números de telefone, vamos começar a colocar a mão na massa e ver como funciona na pratica;

O nosso jcl de teste, reparem que o SORTIN (é onde esta a nossa entrada de dados), o resultado (saída) SORTOUT vai ser aonde vamos jogar os dados classificados do nosso SORT, neste exemplo estamos gravando em um dataset, o parametro SORT FIELDS=(1,6,CH,D) - é como vamos classificar os dados - 1,6 - vamos pegar da primeira posição o número 6 quer dizer o tamanho total do campo;

   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help

 EDIT       ADCD.LIB.JCL(SORT2) - 01.02                     Columns 00001 00072
 Command ===>                                                  Scroll ===> CSR
 ****** ***************************** Top of Data ******************************
 000001 //SORT1      JOB (20,FB3),TRALEY,COND=(0,NE),
 000002 //            CLASS=A,MSGCLASS=H,NOTIFY=IBMUSER,REGION=5M
 000003 //* ------------------------------------------------------
 000004 //*                RODANDO JCL DE SORT
 000005 //* ------------------------------------------------------
 000006 //SORT     EXEC PGM=SORT
 000007 //SORTIN   DD *
 000008 AAAAAA 999999 APARECIDA
 000009 BBBBBB 888888 BENEDITA
 000010 CCCCCC 777777 CIDA COSTA
 000011 DDDDDD 666666 DIANA
 000012 EEEEEE 555555 ELEDIANA
 000013 HHHHHH 444444 FRANCISCA
 000014 //SYSOUT   DD SYSOUT=A
 000015 //SORTOUT  DD  DSN=IBMUSER.SORT,DISP=(NEW,CATLG),
 000016 //         DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160),
 000017 //         UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE)
 000018 //SYSIN    DD *
 000019    SORT FIELDS=(1,6,CH,D)
 000020    RECORD TYPE=F,LENGTH=(1500)
 ****** **************************** Bottom of Data ****************************


 F1=Help      F2=Split     F3=Exit      F5=Rfind     F6=Rchange   F7=Up
 F8=Down      F9=Swap     F10=Left     F11=Right    F12=Cancel

Depois de rodar vamos voltar na tela inicial, vamos checar o resultado do nosso dataset, opção 3.4 (enter) para a gente ver o novo arquivo criado;
   Menu  Utilities  Compilers  Options  Status  Help

                            ISPF Primary Option Menu

 0  Settings      Terminal and user parameters            User ID . : ADCDMST
 1  View          Display source data or listings         Time. . . : 12:47
 2  Edit          Create or change source data            Terminal. : 3278
 3  Utilities     Perform utility functions               Screen. . : 1
 4  Foreground    Interactive language processing         Language. : ENGLISH
 5  Batch         Submit job for language processing      Appl ID . : ISR
 6  Command       Enter TSO or Workstation commands       TSO logon : ISPFPROC
 7  Dialog Test   Perform dialog testing                  TSO prefix: ADCDMST
 8  Workplace     ISPF Object/Action Workplace            System ID : ADCD
 9  IBM Products  IBM program development products        MVS acct. : ACCT#
 10 SCLM          SW Configuration Library Manager        Release . : ISPF 6.0
 11 SDSF          Spool Search and Display Facility
 M  More          Additional IBM Products

      Enter X to Terminate using log/list defaults


 Option ===> 3.4
  F1=Help      F2=Split     F3=Exit      F7=Backward  F8=Forward   F9=Swap
 F10=Actions  F12=Cancel

Coloque o nome do arquivo;
   Menu  RefList  RefMode  Utilities  Help

                             Data Set List Utility
                                                                    More:     +
    blank Display data set list               P Print data set list
        V Display VTOC information           PV Print VTOC information

 Enter one or both of the parameters below:
    Dsname Level . . . IBMUSER.SORT
    Volume serial  . .

 Data set list options
    Initial View                 Enter "/" to select option
    1  1. Volume                 /  Confirm Data Set Delete
       2. Space                  /  Confirm Member Delete
       3. Attrib                 /  Include Additional Qualifiers
       4. Total                  /  Display Catalog Name
                                    Display Total Tracks

 When the data set list is displayed, enter either:
   "/" on the data set list command field for the command prompt pop-up,
 Option ===>
  F1=Help      F2=Split     F3=Exit      F7=Backward  F8=Forward   F9=Swap
 F10=Actions  F12=Cancel

Coloque B abaixo de command (tecle enter);
   Menu  Options  View  Utilities  Compilers  Help

 DSLIST - Data Sets Matching IBMUSER.SORT                            Row 1 of 1

 Command - Enter "/" to select action                  Message           Volume
 -------------------------------------------------------------------------------
 b        IBMUSER.SORT                                                   ZASYS1
 ***************************** End of Data Set list ****************************













 Command ===>                                                  Scroll ===> PAGE
  F1=Help    F2=Split   F3=Exit    F5=Rfind   F7=Up      F8=Down    F9=Swap
 F10=Left   F11=Right  F12=Cancel

Olha o resultado, a posição 1 até a 6 foi classificada em forma descentente (do maior para o menor);
   Menu  Utilities  Compilers  Help

 BROWSE    IBMUSER.SORT                               Line 00000000 Col 001 080
********************************* Top of Data **********************************
HHHHHH 444444 FRANCISCA
EEEEEE 555555 ELEDIANA
DDDDDD 666666 DIANA
CCCCCC 777777 CIDA COSTA
BBBBBB 888888 BENEDITA
AAAAAA 999999 APARECIDA
******************************** Bottom of Data ********************************










 Command ===>                                                  Scroll ===> PAGE
  F1=Help    F2=Split   F3=Exit    F5=Rfind   F7=Up      F8=Down    F9=Swap
 F10=Left   F11=Right  F12=Cancel

Agora vamos rodar o job de novo, vamos classificar os campos númericos só que agora vamos classificar em ascendente do menor para o maior valor, o parametro SORT FIELDS=(8,6,CH,A) - a primeira posição é a oitava - o tamanho desse campo é 6 e vamos classificar de ascendente (A) - um detalhe importante, como este arquivo já existe temos que alterar o parametro disp do arquivo - em //SORTOUT DD DSN=IBMUSER.SORT,DISP=(NEW,CATLG), agora vai ficar como //SORTOUT DD DSN=IBMUSER.SORT,DISP=(SHR), rodando;
   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help

 EDIT       ADCD.LIB.JCL(SORT2) - 01.03                     Columns 00001 00072
 Command ===>                                                  Scroll ===> CSR
 ****** ***************************** Top of Data ******************************
 000001 //SORT1      JOB (20,FB3),TRALEY,COND=(0,NE),
 000002 //            CLASS=A,MSGCLASS=H,NOTIFY=IBMUSER,REGION=5M
 000003 //* ------------------------------------------------------
 000004 //*                RODANDO JCL DE SORT
 000005 //* ------------------------------------------------------
 000006 //SORT     EXEC PGM=SORT
 000007 //SORTIN   DD *
 000008 AAAAAA 999999 APARECIDA
 000009 BBBBBB 888888 BENEDITA
 000010 CCCCCC 777777 CIDA COSTA
 000011 DDDDDD 666666 DIANA
 000012 EEEEEE 555555 ELEDIANA
 000013 HHHHHH 444444 FRANCISCA
 000014 //SYSOUT   DD SYSOUT=A
 000015 //SORTOUT  DD  DSN=IBMUSER.SORT,DISP=(SHR),
 000016 //         DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160),
 000017 //         UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE)
 000018 //SYSIN    DD *
 000019    SORT FIELDS=(8,6,CH,A)
 000020    RECORD TYPE=F,LENGTH=(1500)
 ****** **************************** Bottom of Data ****************************
  F1=Help      F2=Split     F3=Exit      F5=Rfind     F6=Rchange   F7=Up
  F8=Down      F9=Swap     F10=Left     F11=Right    F12=Cancel

Resultado, do menor para o maior;
   Menu  Utilities  Compilers  Help

 BROWSE    IBMUSER.SORT                               Line 00000000 Col 001 080
********************************* Top of Data **********************************
HHHHHH 444444 FRANCISCA
EEEEEE 555555 ELEDIANA
DDDDDD 666666 DIANA
CCCCCC 777777 CIDA COSTA
BBBBBB 888888 BENEDITA
AAAAAA 999999 APARECIDA
******************************** Bottom of Data ********************************










 Command ===>                                                  Scroll ===> PAGE
  F1=Help    F2=Split   F3=Exit    F5=Rfind   F7=Up      F8=Down    F9=Swap
 F10=Left   F11=Right  F12=Cancel


0 comentários:

Enviar um comentário