Модульні уроки (2/2)
Таблиці та речення OCCURS
У COBOL немає ключових слів «масив» або «вектор» для визначення списків однорідних даних. Для цього використовується пропозиція OCCURS, яка визначає, скільки разів змінна або структура повторюється в пам’яті.
Визначення таблиці за допомогою OCCURS
Речення OCCURS додається до оголошення підпорядкованої змінної (наприклад, рівня 05 або вище) у структурі групи (рівень 01):
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і так далі.
MOVE 1500 TO WS-MONTHLY-SALES(1).
MOVE 2400 TO WS-MONTHLY-SALES(2).Обхід таблиці (ітерація)
Щоб прокрутити елементи таблиці, ви можете скористатися оператором PERFORM VARYING або керувати лічильником вручну в циклі PERFORM UNTIL:
PERFORM UNTIL WS-INDEX > 12
DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
ADD 1 TO WS-INDEX
END-PERFORM.Спробуйте самі
Оголошіть таблицю з 5 десятковими температурами (3 цілі цифри та 1 десяткова) у структурі групи WS-WEATHER-DATA за допомогою пропозиції OCCURS.
Показати підказку
Напишіть: 05 WS-ТЕМПЕРАТУРА PIC 9(3)V9 ВІДБУВАЄТЬСЯ 5 РАЗІВ.
Рішення доступне після 3 спроб
Ініціалізуйте перші три елементи таблиці WS-MONTHLY-SALES значеннями 1200, 1500 і 1800 відповідно за допомогою операторів MOVE. Пам’ятайте, що індекси COBOL починаються з 1.
Показати підказку
Використовуйте MOVE 1200 TO WS-MONTHLY-SALES(1). для першого елемента, потім повторіть для другого і третього, використовуючи індекси (2) і (3).
Рішення доступне після 3 спроб