viernes, 3 de diciembre de 2021

Jcl - ICETOOL XSUM

En los pasos de sort estamos acostumbrados a eliminar repetidos, de hecho, esto lo explicamos en una entrada anterior que puedes ver pinchando aquí.

Ahora bien, ¿qué sucede cuando queremos dejar en un fichero los registros (sin repetidos) del fichero origen y todos los repetidos en otro fichero distinto? Pues es muy sencillo, fíjate en el siguiente paso de jcl:

     //SORT0001    EXEC PGM=ICETOOL
     //TOOLMSG  DD SYSOUT=*
     //DFSMSG     DD SYSOUT=*
     //SORTIN        DD DSN=XX.XX.XXXXXXXX.XXXXXXXX.ENT,DISP=SHR
     //SORTOUT     DD DSN=YY.YY.YYYYYYYY.YYYYYYYY.SAL1,
     //                   DISP=(,CATLG,DELETE),
     //                   SPACE=(CYL,1,1)
     //SORTXSUM DD DSN=YY.YY.YYYYYYYY.YYYYYYYY.SAL2,
     //                   DISP=(,CATLG,DELETE),
     //                   SPACE=(CYL,1,1)
     //TOOLIN      DD *
         SELECT FROM(SORTIN) TO(SORTOUT) -
                     ON(1,9,ZD) FIRST DISCARD(SORTXSUM)


Como habrás observado he marcado en azul y amarillo ciertas cosas que se diferencian con el típico paso de SORT:

          ICETOOL sustituye a SORT
          TOOLMSG no existe en el típico paso de sort
          DFSMSG no existe en el típico paso de sort
          SORTXSUM es un fichero de más que el SORT no suele tener a
                 menos que no dividamos el fichero origen en dos ficheros
                 distintos tal y como se explica en el post titulado JCL: Obtener
                 dos ficheros mediante SORT (pinchar aquí para leer dicho
                 post)
          TOOLIN sustituye a SYSIN

           SELECT FROM(SORTIN) TO(SORTOUT) -
                       ON(1,9,ZD) FIRST DISCARD(SORTXSUM)

               Lo anterior sustituye a las típicas cláusulas que van detrás del
               SYSIN en el SORT. Con esto conseguimos realizar lo que
               planteamos en la pregunta realizada al inicio de este post.

Espero que os haya sido de utilidad.