Перейти до основного вмісту
Модуль 4 · Урок 2 із 28/10 у курсі~15 min
Модульні уроки (2/2)

Таблиці та речення OCCURS

У COBOL немає ключових слів «масив» або «вектор» для визначення списків однорідних даних. Для цього використовується пропозиція OCCURS, яка визначає, скільки разів змінна або структура повторюється в пам’яті.

Визначення таблиці за допомогою OCCURS

Речення OCCURS додається до оголошення підпорядкованої змінної (наприклад, рівня 05 або вище) у структурі групи (рівень 01):

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

У цьому прикладі WS-MONTHLY-SALES — це таблиця, що складається з 12 числових елементів по 4 цифри кожен. Пам'ять, виділена для цього запису, буде рівно 12 * 4 = 48 символів.

Доступ до елементів та індексів

Щоб отримати доступ до певного елемента в таблиці, вкажіть індекс у круглих дужках відразу після імені поля.

[!ВАЖЛИВО] На відміну від більшості сучасних мов, які використовують індексацію на основі 0, COBOL використовує індексацію на основі 1. Перший елемент знаходиться в індексі 1, другий в індексі 2 і так далі.

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

Обхід таблиці (ітерація)

Щоб прокрутити елементи таблиці, ви можете скористатися оператором PERFORM VARYING або керувати лічильником вручну в циклі PERFORM UNTIL:

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

Спробуйте самі

вправи#cobol.m4.l2.e1
Спроби: 0Завантаження…

Оголошіть таблицю з 5 десятковими температурами (3 цілі цифри та 1 десяткова) у структурі групи WS-WEATHER-DATA за допомогою пропозиції OCCURS.

Завантаження редактора…
Показати підказку

Напишіть: 05 WS-ТЕМПЕРАТУРА PIC 9(3)V9 ВІДБУВАЄТЬСЯ 5 РАЗІВ.

Рішення доступне після 3 спроб

вправи#cobol.m4.l2.e2
Спроби: 0Завантаження…

Ініціалізуйте перші три елементи таблиці WS-MONTHLY-SALES значеннями 1200, 1500 і 1800 відповідно за допомогою операторів MOVE. Пам’ятайте, що індекси COBOL починаються з 1.

Завантаження редактора…
Показати підказку

Використовуйте MOVE 1200 TO WS-MONTHLY-SALES(1). для першого елемента, потім повторіть для другого і третього, використовуючи індекси (2) і (3).

Рішення доступне після 3 спроб