BlogJCL

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.

Sentencia SORT
Sentencia SORT definida por IBM

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ón SORT 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,...)
  • pos1pos2, …: Posiciones de inicio en el registro de salida.
  • len1len2, …: Longitudes de los campos o las operaciones.
  • fmt1fmt2, …: 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.

Un comentario en «SORT en JCL: Principales características y usos»

Deja una respuesta

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