Logo

Manejo de Cadenas en COBOL: Funciones Esenciales

El manejo de cadenas de texto es una habilidad fundamental en cualquier lenguaje de programación, y COBOL no es la excepción. A pesar de ser un lenguaje con décadas de historia, COBOL ofrece varias herramientas para trabajar con cadenas de caracteres. En este artículo, exploraremos las funciones esenciales para manipular strings en COBOL, proporcionando ejemplos reales y originales que ilustran su uso en diferentes contextos.

Introducción a las Cadenas en COBOL

En COBOL, las cadenas de texto son conocidas como "strings" y se representan a través de variables alfanuméricas definidas en la sección DATA DIVISION. Antes de entrar en detalles sobre las operaciones que puedes realizar con cadenas, es importante comprender cómo se declaran.

Declaración de Cadenas

DATA DIVISION.
WORKING-STORAGE SECTION.
01 MI-CADENA PIC X(10) VALUE "Hola Mundo".

En el ejemplo anterior, MI-CADENA es una variable alfanumérica de longitud fija de 10 caracteres, inicializada con el valor "Hola Mundo".

Funciones Esenciales para el Manejo de Cadenas

CONCATENACIÓN

En COBOL, la concatenación de cadenas se realiza a través del uso de la declaración STRING.

Ejemplo de Concatenación:

01 STRING-1 PIC X(5) VALUE 'Hola'.
01 STRING-2 PIC X(10) VALUE ' Mundo'.
01 STRING-RESULTADO PIC X(15).

STRING STRING-1 STRING-2
DELIMITED BY SIZE
INTO STRING-RESULTADO.

En este código, las cadenas STRING-1 y STRING-2 se concatenan y el resultado, "Hola Mundo", se almacena en la variable STRING-RESULTADO.

EXTRACCIÓN DE SUBCADENAS

Para extraer una subcadena de una cadena más grande, usamos la declaración UNSTRING.

Ejemplo de Extracción de Subcadenas:

01 CADENA-ORIGEN PIC X(15) VALUE 'Hola Mundo COBOL'.
01 SUBCADENA PIC X(5).
01 POSICION PIC 99 VALUE 6.

UNSTRING CADENA-ORIGEN DELIMITED BY SPACE
INTO SUBCADENA
WITH POINTER POSICION.

En este ejemplo, SUBCADENA contendrá "Mundo" después de ejecutar UNSTRING, ya que extraemos la palabra que comienza en la posición 6 de CADENA-ORIGEN.

COMPARACIÓN DE CADENAS

Para comparar cadenas, COBOL utiliza las declaraciones IF junto con operadores de comparación como = y >.

Ejemplo de Comparación de Cadenas:

01 CADENA-A PIC X(10) VALUE 'COBOL'.
01 CADENA-B PIC X(10) VALUE 'FORTRAN'.

IF CADENA-A = CADENA-B THEN
    DISPLAY 'Las cadenas son iguales.'
ELSE
    DISPLAY 'Las cadenas son diferentes.'
END-IF.

Este fragmento mostrará "Las cadenas son diferentes.", ya que CADENA-A no es igual a CADENA-B.

BÚSQUEDA DE SUBCADENAS

La búsqueda de subcadenas dentro de una cadena mayor no está directamente soportada por una instrucción particular en COBOL estándar. Sin embargo, se puede implementar mediante la iteración y comparación de caracteres.

Ejemplo de Búsqueda de Subcadenas:

01 CADENA-GRANDE PIC X(30) VALUE 'Aprendiendo COBOL en 2023'.
01 PALABRA-BUSCADA PIC X(5) VALUE 'COBOL'.
01 IDX PIC 99 VALUE 1.
01 ENCONTRADO PIC X VALUE 'N'.

PERFORM VARYING IDX FROM 1 BY 1 UNTIL IDX > LENGTH OF CADENA-GRANDE - LENGTH OF PALABRA-BUSCADA
    IF CADENA-GRANDE (IDX: LENGTH OF PALABRA-BUSCADA) = PALABRA-BUSCADA THEN
        MOVE 'Y' TO ENCONTRADO
        DISPLAY 'Palabra encontrada en posición ' IDX
        EXIT PERFORM
    END-IF
END-PERFORM.

IF ENCONTRADO = 'N' THEN
    DISPLAY 'Palabra no encontrada.'
END-IF.

En este código, se busca la palabra "COBOL" dentro de la cadena CADENA-GRANDE. Si se encuentra, se muestra la posición de inicio y se establece la variable ENCONTRADO a 'Y'.

MANIPULACIÓN DE MAYÚSCULAS Y MINÚSCULAS

COBOL no proporciona instrucciones incorporadas para cambiar entre mayúsculas y minúsculas. Sin embargo, se pueden usar rutinas o funciones del sistema para lograr este comportamiento, dependiendo del sistema o compilador específico.

Ejemplo de Manipulación de Mayúsculas y Minúsculas:

IDENTIFICATION DIVISION.
PROGRAM-ID. CASE-CONVERTER.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CADENA PIC X(20) VALUE 'Cobol es Genial'.
01 MAYUSCULAS PIC X(20).
01 MINUSCULAS PIC X(20).

PROCEDURE DIVISION.
CALL 'CONVERTIR-A-MAYUSCULAS' USING CADENA MAYUSCULAS.
CALL 'CONVERTIR-A-MINUSCULAS' USING CADENA MINUSCULAS.

DISPLAY 'Original: ' CADENA.
DISPLAY 'Mayúsculas: ' MAYUSCULAS.
DISPLAY 'Minúsculas: ' MINUSCULAS.

STOP RUN.

En este código hipotético, se asume que existen rutinas externas (CONVERTIR-A-MAYUSCULAS y CONVERTIR-A-MINUSCULAS) a las cuales se les pasa la cadena original y una variable para recibir la cadena convertida.

Conclusión

Aunque COBOL no tiene la riqueza de funciones para manejar cadenas que se encuentran en lenguajes modernos, su conjunto de herramientas permite realizar las operaciones más comunes de forma efectiva. Con práctica y creatividad, se pueden implementar algoritmos más complejos para satisfacer las necesidades específicas de manipulación de cadenas en tus programas COBOL.

Para más información sobre COBOL y sus capacidades, puedes consultar la documentación oficial de IBM COBOL, que ofrece una guía completa y detallada sobre el lenguaje.

© Copyright 2024, todos los derechos reservados.