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ónA
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ónREMOVECC
elimina los registros duplicados consecutivos. La especificaciónOUTREC=(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ónEDIT
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
JCL: Cómo Ejecutar un Proceso
Este libro explora el Job Control Language (JCL), esencial para ejecutar procesos en sistemas mainframe. Aprender JCL es fundamental para optimizar y automatizar tareas en sistemas IBM, y esta guía te muestra cómo hacerlo de manera práctica y efectiva.
Temas principales
- Estructura y comandos esenciales de JCL
- Creación y gestión de trabajos
- Optimización de recursos y manejo de errores
- Ejemplos prácticos de configuración de procesos
Con esta lectura, podrás mejorar la eficiencia de tus trabajos en mainframe, aumentando tu productividad en proyectos complejos.
Pingback: SORT en JCL - Principales características y usos