En este tema, aprenderemos cómo ordenar y fusionar datos en COBOL. Estas operaciones son fundamentales para la manipulación y organización de grandes volúmenes de datos, especialmente en aplicaciones empresariales.

Conceptos Clave

  1. Ordenación (Sorting): Proceso de organizar datos en un orden específico (ascendente o descendente).
  2. Fusión (Merging): Proceso de combinar dos o más conjuntos de datos ordenados en un solo conjunto ordenado.

Ordenación de Datos

Sintaxis de la Sentencia SORT

La sentencia SORT en COBOL se utiliza para ordenar registros en un archivo. La sintaxis básica es la siguiente:

SORT archivo-a-ordenar
    ON ASCENDING/DESCENDING KEY clave
    USING archivo-entrada
    GIVING archivo-salida.

Ejemplo Práctico de Ordenación

Supongamos que tenemos un archivo de empleados que necesitamos ordenar por el número de empleado en orden ascendente.

Definición del Archivo

FILE SECTION.
FD  EMPLOYEE-FILE.
01  EMPLOYEE-RECORD.
    05  EMPLOYEE-NUMBER    PIC 9(5).
    05  EMPLOYEE-NAME      PIC X(20).
    05  EMPLOYEE-SALARY    PIC 9(7)V99.

Código de Ordenación

PROCEDURE DIVISION.
    SORT EMPLOYEE-FILE
        ON ASCENDING KEY EMPLOYEE-NUMBER
        USING EMPLOYEE-INPUT
        GIVING EMPLOYEE-OUTPUT.

Explicación del Código

  • SORT EMPLOYEE-FILE: Indica que vamos a ordenar el archivo EMPLOYEE-FILE.
  • ON ASCENDING KEY EMPLOYEE-NUMBER: Especifica que la ordenación será en orden ascendente basado en EMPLOYEE-NUMBER.
  • USING EMPLOYEE-INPUT: Indica el archivo de entrada que contiene los registros a ordenar.
  • GIVING EMPLOYEE-OUTPUT: Especifica el archivo de salida donde se almacenarán los registros ordenados.

Fusión de Datos

Sintaxis de la Sentencia MERGE

La sentencia MERGE en COBOL se utiliza para combinar dos o más archivos ordenados en un solo archivo ordenado. La sintaxis básica es la siguiente:

MERGE archivo-a-fusionar
    ON ASCENDING/DESCENDING KEY clave
    USING archivo-entrada1 archivo-entrada2
    GIVING archivo-salida.

Ejemplo Práctico de Fusión

Supongamos que tenemos dos archivos de empleados ordenados por número de empleado y queremos fusionarlos en un solo archivo.

Definición de los Archivos

FILE SECTION.
FD  EMPLOYEE-FILE1.
01  EMPLOYEE-RECORD1.
    05  EMPLOYEE-NUMBER    PIC 9(5).
    05  EMPLOYEE-NAME      PIC X(20).
    05  EMPLOYEE-SALARY    PIC 9(7)V99.

FD  EMPLOYEE-FILE2.
01  EMPLOYEE-RECORD2.
    05  EMPLOYEE-NUMBER    PIC 9(5).
    05  EMPLOYEE-NAME      PIC X(20).
    05  EMPLOYEE-SALARY    PIC 9(7)V99.

FD  EMPLOYEE-OUTPUT-FILE.
01  EMPLOYEE-OUTPUT-RECORD.
    05  EMPLOYEE-NUMBER    PIC 9(5).
    05  EMPLOYEE-NAME      PIC X(20).
    05  EMPLOYEE-SALARY    PIC 9(7)V99.

Código de Fusión

PROCEDURE DIVISION.
    MERGE EMPLOYEE-OUTPUT-FILE
        ON ASCENDING KEY EMPLOYEE-NUMBER
        USING EMPLOYEE-FILE1 EMPLOYEE-FILE2
        GIVING EMPLOYEE-OUTPUT.

Explicación del Código

  • MERGE EMPLOYEE-OUTPUT-FILE: Indica que vamos a fusionar los archivos en EMPLOYEE-OUTPUT-FILE.
  • ON ASCENDING KEY EMPLOYEE-NUMBER: Especifica que la fusión será en orden ascendente basado en EMPLOYEE-NUMBER.
  • USING EMPLOYEE-FILE1 EMPLOYEE-FILE2: Indica los archivos de entrada que contienen los registros a fusionar.
  • GIVING EMPLOYEE-OUTPUT: Especifica el archivo de salida donde se almacenarán los registros fusionados.

Ejercicios Prácticos

Ejercicio 1: Ordenación de un Archivo de Productos

Descripción: Tienes un archivo de productos que contiene el ID del producto, el nombre y el precio. Ordena el archivo por el precio en orden descendente.

Archivo de Entrada:

FD  PRODUCT-FILE.
01  PRODUCT-RECORD.
    05  PRODUCT-ID       PIC 9(5).
    05  PRODUCT-NAME     PIC X(20).
    05  PRODUCT-PRICE    PIC 9(5)V99.

Código de Ordenación:

PROCEDURE DIVISION.
    SORT PRODUCT-FILE
        ON DESCENDING KEY PRODUCT-PRICE
        USING PRODUCT-INPUT
        GIVING PRODUCT-OUTPUT.

Ejercicio 2: Fusión de Archivos de Clientes

Descripción: Tienes dos archivos de clientes ordenados por el ID del cliente. Fusiona estos archivos en un solo archivo ordenado.

Archivos de Entrada:

FD  CUSTOMER-FILE1.
01  CUSTOMER-RECORD1.
    05  CUSTOMER-ID       PIC 9(5).
    05  CUSTOMER-NAME     PIC X(20).

FD  CUSTOMER-FILE2.
01  CUSTOMER-RECORD2.
    05  CUSTOMER-ID       PIC 9(5).
    05  CUSTOMER-NAME     PIC X(20).

FD  CUSTOMER-OUTPUT-FILE.
01  CUSTOMER-OUTPUT-RECORD.
    05  CUSTOMER-ID       PIC 9(5).
    05  CUSTOMER-NAME     PIC X(20).

Código de Fusión:

PROCEDURE DIVISION.
    MERGE CUSTOMER-OUTPUT-FILE
        ON ASCENDING KEY CUSTOMER-ID
        USING CUSTOMER-FILE1 CUSTOMER-FILE2
        GIVING CUSTOMER-OUTPUT.

Resumen

En esta sección, hemos aprendido cómo ordenar y fusionar datos en COBOL utilizando las sentencias SORT y MERGE. Estas operaciones son esenciales para la manipulación eficiente de datos en aplicaciones empresariales. Asegúrate de practicar con los ejercicios proporcionados para reforzar tu comprensión de estos conceptos.

En el próximo módulo, exploraremos los subprogramas y la programación modular en COBOL, lo que te permitirá escribir código más organizado y reutilizable.

© Copyright 2024. Todos los derechos reservados