SORT en JCL: Principales características y usos
En JCL (Job Control Language), puedes utilizar el programa SORT para ordenar dos ficheros. Aquí tienes un ejemplo básico de un JCL que realiza la tarea de ordenar dos ficheros:
Definición de SORT en JCL
La sentencia SORT ordena registros de archivos o elementos de tabla según las claves especificadas por el usuario, haciendo que los registros ordenados estén disponibles a través de un procedimiento de salida o en un archivo de salida.
En este ejemplo se muestra la estructura básica de una sentencia SORT i cuales son sus principales característica.
//SORTJOB JOB (123),'Nombre del job',CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//STEP1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=A
//SORTIN1 DD DSN=your.input.file1,DISP=SHR
//SORTIN2 DD DSN=your.input.file2,DISP=SHR
//SORTOUT DD DSN=your.output.file,DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE)
//SYSIN DD *
SORT FIELDS=(start_position,length,format,A/D)
/*
En este ejemplo:
//SORTJOB
es la declaración del trabajo, donde puedes especificar información como el nombre del trabajo, la clase, etc.//STEP1
es la declaración de la fase del trabajo. En este caso, utilizamos el programa SORT.//SYSOUT
especifica la salida del sistema para mensajes del programa SORT.//SORTIN1
y//SORTIN2
son las declaraciones para los dos ficheros de entrada que deseas ordenar.//SORTOUT
es la declaración para el fichero de salida ordenado.//SYSIN
contiene las opciones de control para el programa SORT. En este ejemplo, se utiliza la opciónSORT FIELDS
para especificar los campos de ordenación.
Asegúrate de reemplazar your.input.file1
, your.input.file2
y your.output.file
con las ubicaciones y nombres reales de tus ficheros. También, ajusta las opciones de espacio y otras configuraciones según tus necesidades.
Principales parámetros de ordenación en JCL
La opción SORT FIELDS=(start_position,length,format,A/D)
indica los campos por los cuales se realizará la ordenación. Puedes ajustar los parámetros según los campos reales de tus ficheros y el tipo de ordenación deseado (ascendente o descendente).
- Orden Ascendente (A) o Descendente (D):
A
: Orden ascendente (predeterminado si no se especifica).D
: Orden descendente.
SORT FIELDS=(1,10,A)
- Carácter (CH) o Numérico (PD):
CH
: Clasificación de campos de caracteres (predeterminado si no se especifica).PD
: Clasificación de campos numéricos.
SORT FIELDS=(11,5,PD)
- Formato de Fecha (YMD, DMY, MDY, etc.):
- Puedes especificar un formato de fecha para campos de fecha.
SORT FIELDS=(21,8,YMD)
- Omitir Caracteres Específicos:
- Puedes especificar caracteres que se deben omitir durante la clasificación.
SORT FIELDS=(1,10,A,SKIP=3)
- Opciones de Desplazamiento y Longitud:
- Puedes especificar la posición de inicio y la longitud del campo.
SORT FIELDS=(16,3,A)
- Comparación de Mayúsculas y Minúsculas (IGNORECASE):
- Ignorar diferencias entre mayúsculas y minúsculas.
SORT FIELDS=(1,10,A,IGNORECASE)
- Espacios en Blanco (SPACES):
- Ignorar espacios en blanco durante la comparación.
SORT FIELDS=(1,10,A,SPACES)
- Copiar fichero con el mismo formato (COPY):
- Copia el fichero de entrada con el mismo formato que al de salida.
SORT FIELDS=COPY
Estas son solo algunas de las opciones más comunes. La documentación del producto que estés utilizando (por ejemplo, DFSORT o SyncSort) proporcionará información más detallada sobre las opciones específicas disponibles y sus detalles de implementación. Asegúrate de consultar la documentación correspondiente al producto que estás utilizando.
Ejemplo de SORT en JCL
Ordenación del fichero
//SORTJOB JOB (123),'Ordenar Ficheros',CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//STEP1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=A
//SORTIN1 DD DSN=your.input.file1,DISP=SHR
//SORTIN2 DD DSN=your.input.file2,DISP=SHR
//SORTOUT DD DSN=your.output.file,DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE)
//SYSIN DD *
SORT FIELDS=(11,20,A,31,30,A)
/*
Este ejemplo asume que los campos de nombre y apellidos comienzan en las posiciones 11 y 31, respectivamente. Asegúrate de ajustar las posiciones y longitudes según la estructura real de tus datos.
En la declaración SORT FIELDS=(11,20,A,31,30,A)
, la opción A
indica orden ascendente. Puedes cambiarlo a D
si deseas un orden descendente.
Recuerda reemplazar your.input.file1
, your.input.file2
y your.output.file
con las ubicaciones y nombres reales de tus ficheros. También, ajusta las opciones de espacio y otras configuraciones según tus necesidades.
Ten en cuenta que este es un ejemplo básico, y debes adaptarlo a tus requisitos específicos y al entorno en el que estás trabajando.
Copiar dos ficheros de entrada en uno de salida
Para combinar dos ficheros en uno único en un paso JCL en un entorno de Mainframe, puedes utilizar la utilidad de SORT. Aquí tienes un ejemplo de cómo podrías hacerlo:
//EJEMPLO JOB …
//STEP1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=A
//SORTIN1 DD DSN=TuLibreria.MiArchivoNombres,DISP=SHR
//SORTIN2 DD DSN=TuLibreria.MiArchivoCalles,DISP=SHR
//SORTOUT DD DSN=TuLibreria.MiArchivoCombinado,DISP=(NEW,CATLG,DELETE),
// UNIT=DISCO,SPACE=(TRK,(1,1),RLSE)
//SYSIN DD *
SORT FIELDS=COPY
/*
En este ejemplo:
SORTIN1
: Especifica la ubicación del primer fichero (con nombres y apellidos).SORTIN2
: Especifica la ubicación del segundo fichero (con calles).SORTOUT
: Especifica la ubicación del fichero combinado que se creará.
El parámetro FIELDS=COPY
indica que los datos se deben copiar sin cambiar el orden ni la estructura. Los dos conjuntos de datos se copiarán en el archivo de salida.
INCLUDE CONDITION
La condición INCLUDE
se utiliza en el contexto del paso de clasificación, SORT, para especificar un conjunto de registros que se deben incluir en la salida del paso de clasificación. La cláusula INCLUDE
ayuda a filtrar registros según un criterio específico y retener solo aquellos que cumplen con esa condición.
INCLUDE COND=(1,10,CH,EQ,C'MAINFRAME')
Dentro de la condición INCLUDE
en JCL, puedes especificar diferentes tipos de campos y utilizar varios operadores de comparación. En el siguiente enlace podrás ver todas sus características.
OUTREC CONDITION
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.
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.
En el siguiente enlace podrás ver todas sus características:
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: SUM FIELDS JCL: Suma de Registros y Eliminación de duplicados - Cobol Coder