jueves, 19 de abril de 2012

JCL: Obtener dos ficheros mediante SORT

     Para obtener dos ficheros en los que cada uno de ellos tengamos registros distintos mediante un paso de SORT se haría lo siguiente:

          //SORT01 EXEC PGM=SORT
          //SORTIN   DD DSN=FICH.PRUEBA.ENTRADA,DISP=SHR
          //SALIDA1  DD DSN=FICH.PRUEBA.SALID1,
          //                    DISP=(,CATLG,DELETE),
          //                    SPACE=(CYL,1,1)
          //SALIDA2  DD DSN=FICH.PRUEBA.SALID2,
          //                    DISP=(,CATLG,DELETE),
          //                    SPACE=(CYL,1,1)
          //SORTWK01 DD SPACE=(CYL,(1,1),RLSE)
          //SYSOUT     DD SYSOUT=*
          //SYSIN        DD *
              SORT FIELDS=COPY
              OUTFIL FNAMES=SALIDA1,INCLUDE=(18,2,CH,EQ,C'XX')
              OUTFIL FNAMES=SALIDA2,INCLUDE=(18,2,CH,EQ,C'XY')

     Obsérvese que para generar dos ficheros, FICH.PRUEBA.SALID1 y FICH.PRUEBA.SALID2, en los que uno de ellos contendrá una serie de registros y el otro contendrá el resto de registros existentes en el fichero de entrada debemos incluir las dos sentencias marcadas en malva.

     Esto sirve cuando tenemos un fichero de entrada en el que todos sus registros, empezando en la posición 18, hay una cadena de caracteres cuya longitud es 2 y los posibles valores son XX o XY. Al realizar lo indicado en el ejemplo tenemos que aquellos registros del fichero FICH.PRUEBA.ENTRADA que, empezando en la posición 18, contengan la cadena XX irán al fichero FICH.PRUEBA.SALID1 mientras que los que contangan la cadena XY irán al fichero FICH.PRUEBA.SALID2
     Si queremos generar ambos ficheros y además ordenarlos por un determinado campo debemos sustituir el SORT FIELDS=COPY por lo indicado en la entrada de título JCL: Ordenar un fichero mediante SORT.

2 comentarios: