Saltar al contenido principal
eLearner.app
Módulo 4 · Lección 2 de 28/10 en el curso~15 min
Lecciones del módulo (2/2)

Tablas y Cláusula OCCURS

En COBOL no existe una palabra clave "array" o "vector" para definir listas de datos homogéneos. Para este propósito se utiliza la cláusula OCCURS, que especifica el número de veces que una variable o estructura se repite en memoria.

Definición de una tabla con OCCURS

La cláusula OCCURS se añade a la declaración de una variable subordinada (por ejemplo, de nivel 05 o superior) dentro de una estructura de grupo (nivel 01):

Code
01 WS-SALES-DATA.
    05 WS-MONTHLY-SALES PIC 9(4) OCCURS 12 TIMES.

En este ejemplo, WS-MONTHLY-SALES es una tabla formada por 12 elementos numéricos de 4 dígitos cada uno. La memoria asignada para este registro será exactamente de 12 * 4 = 48 caracteres.

Acceso a los elementos e índices

Para acceder a un elemento específico dentro de una tabla, se especifica el índice entre paréntesis inmediatamente después del nombre del campo.

[!IMPORTANT] A diferencia de la mayoría de los lenguajes modernos que utilizan índices basados en 0, COBOL utiliza índices basados en 1. El primer elemento se encuentra en el índice 1, el segundo en el índice 2, y así sucesivamente.

Code
MOVE 1500 TO WS-MONTHLY-SALES(1).
MOVE 2400 TO WS-MONTHLY-SALES(2).

Recorrido de una tabla (Iteración)

Para recorrer los elementos de una tabla, se puede utilizar la instrucción PERFORM VARYING o gestionar manualmente un contador en un bucle PERFORM UNTIL:

Code
PERFORM UNTIL WS-INDEX > 12
    DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
    ADD 1 TO WS-INDEX
END-PERFORM.

Pruébalo tú mismo

Ejercicio#cobol.m4.l2.e1
Intentos: 0Cargando...

Declara una tabla de 5 temperaturas decimales (3 dígitos enteros y 1 decimal) debajo de la estructura de grupo WS-WEATHER-DATA usando la cláusula OCCURS.

Cargando editor...
Mostrar pista

Escribe: 05 WS-TEMPERATURE PIC 9(3)V9 OCCURS 5 TIMES.

Solución disponible después de 3 intentos

Ejercicio#cobol.m4.l2.e2
Intentos: 0Cargando...

Inicializa los primeros tres elementos de la tabla WS-MONTHLY-SALES con los valores 1200, 1500 y 1800 respectivamente usando instrucciones MOVE. Recuerda que los índices en COBOL comienzan desde 1.

Cargando editor...
Mostrar pista

Usa MOVE 1200 TO WS-MONTHLY-SALES(1). para el primer elemento, luego repite para el segundo y tercero usando los índices (2) y (3).

Solución disponible después de 3 intentos