Para eliminar aquellos registros de un fichero que cumplan una determinada condición mediante un paso de SORT se haría lo siguiente:
//SORT01 EXEC PGM=SORT
//SORTIN DD DSN=FICH.PRUEBA.ENTRADA,DISP=SHR
//SORTOUT DD DSN=FICH.PRUEBA.SALIDA,
// DISP=(,CATLG,DELETE),
// SPACE=(CYL,1,1)
//SORTWK01 DD SPACE=(CYL,(1,1),RLSE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OMIT COND=(18,2,CH,EQ,C'99')
Obsérvese que para eliminar los registros duplicados se utiliza lo siguiente OMIT COND=(18,2,CH,EQ,C'99') => esto supone que aquellos registros que, empezando en la posición 18, tengan una cadena cuyo valor sea 99 serán eliminados y, por tanto, no estarán en el fichero FICH.PRUEBA.SALIDA
Para eliminar los que sean iguales a 99 o a otro valor como, por ejemplo, 09 tendríamos algo como lo siguiente:
OMIT COND=(18,2,CH,EQ,C'99',OR,18,2,CH,EQ,C'09')
Para incluir, es decir, para generar un fichero en el que tengamos aquellos registros que cumplan una condición habría que sustituir el OMIT por el INCLUDE. Ejemplos:
INCLUDE COND=(18,2,CH,EQ,C'99')
INCLUDE COND=(18,2,CH,EQ,C'99',OR,18,2,CH,EQ,C'09')
Por lo tanto, el paso de SORT quedaría como se indica a continuación:
//SORT01 EXEC PGM=SORT
//SORTIN DD DSN=FICH.PRUEBA.ENTRADA,DISP=SHR
//SORTOUT DD DSN=FICH.PRUEBA.SALIDA,
// DISP=(,CATLG,DELETE),
// SPACE=(CYL,1,1)
//SORTWK01 DD SPACE=(CYL,(1,1),RLSE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INCLUDE COND=(18,2,CH,EQ,C'99')
Si queremos eliminar/incluir registros que cumplan una condición y además ordenar el fichero resultante debemos sustituir el SORT FIELDS=COPY por lo indicado en la entrada de título JCL: Ordenar un fichero mediante SORT.
Para eliminar los que sean iguales a 99 o a otro valor como, por ejemplo, 09 tendríamos algo como lo siguiente:
OMIT COND=(18,2,CH,EQ,C'99',OR,18,2,CH,EQ,C'09')
Para incluir, es decir, para generar un fichero en el que tengamos aquellos registros que cumplan una condición habría que sustituir el OMIT por el INCLUDE. Ejemplos:
INCLUDE COND=(18,2,CH,EQ,C'99')
INCLUDE COND=(18,2,CH,EQ,C'99',OR,18,2,CH,EQ,C'09')
Por lo tanto, el paso de SORT quedaría como se indica a continuación:
//SORT01 EXEC PGM=SORT
//SORTIN DD DSN=FICH.PRUEBA.ENTRADA,DISP=SHR
//SORTOUT DD DSN=FICH.PRUEBA.SALIDA,
// DISP=(,CATLG,DELETE),
// SPACE=(CYL,1,1)
//SORTWK01 DD SPACE=(CYL,(1,1),RLSE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INCLUDE COND=(18,2,CH,EQ,C'99')
Si queremos eliminar/incluir registros que cumplan una condición y además ordenar el fichero resultante debemos sustituir el SORT FIELDS=COPY por lo indicado en la entrada de título JCL: Ordenar un fichero mediante SORT.
No hay comentarios:
Publicar un comentario