En este módulo, aprenderemos cómo manejar cadenas de caracteres en COBOL. Las cadenas son una parte fundamental de muchos programas, ya que permiten la manipulación de texto y datos alfanuméricos. COBOL ofrece varias herramientas y técnicas para trabajar con cadenas de manera eficiente.

Contenido

Definición de Cadenas

En COBOL, las cadenas de caracteres se definen utilizando el tipo de datos PIC X(n), donde n es la longitud de la cadena. A continuación, se muestra un ejemplo de cómo definir una cadena:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NOMBRE PIC X(20).

En este ejemplo, WS-NOMBRE es una cadena de 20 caracteres.

Operaciones Básicas con Cadenas

Asignación de Valores

Para asignar un valor a una cadena, utilizamos la sentencia MOVE:

MOVE 'Juan Perez' TO WS-NOMBRE.

Concatenación de Cadenas

COBOL no tiene una función de concatenación directa, pero podemos lograrlo utilizando la sentencia STRING:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NOMBRE-COMPLETO PIC X(40).
01 WS-NOMBRE PIC X(20) VALUE 'Juan'.
01 WS-APELLIDO PIC X(20) VALUE 'Perez'.

PROCEDURE DIVISION.
    STRING WS-NOMBRE DELIMITED BY SPACE
           ' ' DELIMITED BY SIZE
           WS-APELLIDO DELIMITED BY SPACE
           INTO WS-NOMBRE-COMPLETO
    END-STRING.

Extracción de Subcadenas

Para extraer una subcadena, utilizamos la sentencia UNSTRING:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-FULL-NAME PIC X(40) VALUE 'Juan Perez'.
01 WS-FIRST-NAME PIC X(20).
01 WS-LAST-NAME PIC X(20).

PROCEDURE DIVISION.
    UNSTRING WS-FULL-NAME
        DELIMITED BY SPACE
        INTO WS-FIRST-NAME
             WS-LAST-NAME
    END-UNSTRING.

Manipulación de Cadenas

Reemplazo de Subcadenas

Para reemplazar una subcadena dentro de una cadena, podemos utilizar la sentencia INSPECT:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TEXTO PIC X(50) VALUE 'El perro es marrón.'.

PROCEDURE DIVISION.
    INSPECT WS-TEXTO
        REPLACING ALL 'perro' BY 'gato'.

Contar Ocurrencias

Para contar el número de ocurrencias de una subcadena, también utilizamos INSPECT:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TEXTO PIC X(50) VALUE 'El perro es marrón. El perro es grande.'.
01 WS-COUNT PIC 9(2).

PROCEDURE DIVISION.
    INSPECT WS-TEXTO
        TALLYING WS-COUNT FOR ALL 'perro'.

Ejercicios Prácticos

Ejercicio 1: Concatenación de Cadenas

Descripción: Escribe un programa que concatene el nombre y el apellido de una persona y los almacene en una variable WS-NOMBRE-COMPLETO.

Código:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NOMBRE-COMPLETO PIC X(40).
01 WS-NOMBRE PIC X(20) VALUE 'Ana'.
01 WS-APELLIDO PIC X(20) VALUE 'Gomez'.

PROCEDURE DIVISION.
    STRING WS-NOMBRE DELIMITED BY SPACE
           ' ' DELIMITED BY SIZE
           WS-APELLIDO DELIMITED BY SPACE
           INTO WS-NOMBRE-COMPLETO
    END-STRING.
    DISPLAY 'Nombre Completo: ' WS-NOMBRE-COMPLETO.
    STOP RUN.

Ejercicio 2: Reemplazo de Subcadenas

Descripción: Escribe un programa que reemplace todas las ocurrencias de la palabra "rojo" por "azul" en una cadena.

Código:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TEXTO PIC X(50) VALUE 'El coche es rojo. La casa es roja.'.

PROCEDURE DIVISION.
    INSPECT WS-TEXTO
        REPLACING ALL 'rojo' BY 'azul'.
    DISPLAY 'Texto Modificado: ' WS-TEXTO.
    STOP RUN.

Ejercicio 3: Contar Ocurrencias

Descripción: Escribe un programa que cuente el número de veces que aparece la palabra "casa" en una cadena.

Código:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TEXTO PIC X(50) VALUE 'La casa es grande. La casa es bonita.'.
01 WS-COUNT PIC 9(2).

PROCEDURE DIVISION.
    INSPECT WS-TEXTO
        TALLYING WS-COUNT FOR ALL 'casa'.
    DISPLAY 'Número de ocurrencias de "casa": ' WS-COUNT.
    STOP RUN.

Conclusión

En este módulo, hemos aprendido cómo manejar cadenas en COBOL, incluyendo la definición, asignación, concatenación, extracción, reemplazo y conteo de subcadenas. Estas habilidades son esenciales para la manipulación de datos alfanuméricos en aplicaciones COBOL. Asegúrate de practicar los ejercicios proporcionados para reforzar tu comprensión y habilidad en el manejo de cadenas. En el próximo módulo, exploraremos el uso de tablas y arreglos en COBOL.

© Copyright 2024. Todos los derechos reservados