BlogJCL

OUTREC Condition – SORT en JCL

En JCL (Job Control Language), la condición OUTREC se utiliza en el contexto del paso de clasificación (SORT) para definir la disposición y transformación de los registros de salida antes de que se escriban en el archivo de salida. La cláusula OUTREC puede contener especificaciones detalladas para reformatear, concatenar, convertir tipos de datos y realizar diversas operaciones en los registros de salida. Cada posición dentro de OUTREC se define para indicar la ubicación y la acción específica a realizar en esa parte del registro.

A continuación, se describe cómo se definen las posiciones dentro de la cláusula OUTREC:

Sintaxis General de OUTREC

OUTREC FIELDS=(pos1,len1,fmt1,pos2,len2,fmt2,...)
  • pos1, pos2, …: Posiciones de inicio en el registro de salida.
  • len1, len2, …: Longitudes de los campos o las operaciones.
  • fmt1, fmt2, …: Formato o especificación de operación para la posición correspondiente.

Ejemplos de Definición de Posiciones en OUTREC

Reformateo de Campos

Partiendo como ejemplo del siguiente fichero, se va a mostrar como hacer un OUTREC de diferentes posiciones.

Juan              Gómez             00001
Juanita           López             00002
Pedro             Martínez          00003
Ana               Rodríguez         00004
Luis              Fernández         00005
Elena             Pérez             00006
Carlos            Sánchez           00007
María             González          00008
Javier            Díaz              00009
Laura             Torres            00010

Si deseas invertir el orden de presentación en el paso OUTREC del JCL para mostrar primero el apellido y luego el nombre, y además, deseas eliminar los registros duplicados, aquí tienes el JCL:

//EJEMPLO   JOB  ...
//STEP1    EXEC PGM=SORT
//SYSOUT   DD  SYSOUT=A
//SORTIN   DD  DSN=TuLibreria.MiArchivo,DISP=SHR
//SORTOUT  DD  DSN=TuLibreria.MiArchivo.SALIDA,DISP=(NEW,CATLG,DELETE),
//            UNIT=SYSDA,SPACE=(TRK,(1,1),RLSE)
//SYSIN    DD  *
  SORT FIELDS=(21,20,A,41,20,A,61,5,A)
  OUTREC FIELDS=(41,20,21,20,61,5,ZD,EDIT=(TTTTT))
  OUTFIL REMOVECC,OUTREC=(1,80)
/*

En esta versión del JCL:

  • SORT FIELDS=(21,20,A,41,20,A,61,5,A): Se especifica que se ordenen los registros por «Nombre» (posiciones 21-40), luego por «Apellidos» (posiciones 41-60) y finalmente por «Número». La opción A indica un orden alfabético ascendente.
  • OUTREC FIELDS=(41,20,21,20,61,5,ZD,EDIT=(TTTTT)): Esta cláusula del OUTREC coloca «Apellidos» primero, seguido por «Nombre». La longitud total del registro es de 80 caracteres.
  • OUTFIL REMOVECC,OUTREC=(1,80): La opción REMOVECC elimina los registros duplicados consecutivos. La especificación OUTREC=(1,80) se utiliza para asegurar que solo se copien 80 bytes (la longitud del registro completo) al archivo de salida.

En el ejemplo anterior, la opción EDIT=(TTTTT) se utiliza para dar formato al campo numérico «Número». Vamos a desglosar lo que significa:

  • ZD: Indica que el campo es numérico con signo. «Z» significa que el campo se trata como numérico, y «D» indica que se admite un signo decimal.
  • EDIT=(TTTTT): Especifica cómo se formatea el campo numérico. Cada «T» en la especificación EDIT representa un dígito del campo. En este caso, hay cinco «T» (TTTTT), lo que significa que el campo numérico se formateará con un total de cinco dígitos. Si el número tiene menos de cinco dígitos, se agregarán ceros a la izquierda.

Por ejemplo, si el número es 23, después de aplicar EDIT=(TTTTT), se formateará como 00023. Si el número es 12345, se mantendrá igual, ya que tiene cinco dígitos.

En resumen, la opción EDIT en SORT se utiliza para dar formato a los campos numéricos según un patrón específico. En este caso, estamos utilizando EDIT=(TTTTT) para asegurarnos de que el campo «Número» tenga siempre cinco dígitos, completando con ceros a la izquierda si es necesario.

Después de ejecutar este JCL, el archivo de salida («MiArchivo.SALIDA») contendrá datos únicos y mostrará primero el apellido y luego el nombre:

Gómez             Juan              00001
López             Juanita           00002
Martínez          Pedro             00003
Rodríguez         Ana               00004
Fernández         Luis              00005
Pérez             Elena             00006
Sánchez           Carlos            00007
González          María             00008
Díaz              Javier            00009
Torres            Laura             00010

Un comentario en «OUTREC Condition – SORT en JCL»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *