Salt la conținutul principal
Modulul 4 · Lecția 2 din 28/10 în curs~15 min
Lecții din modul (2/2)

Tabelele și clauza OCCURS

În COBOL, nu există niciun cuvânt cheie „matrice” sau „vector” pentru a defini liste de date omogene. În acest scop, utilizați clauza OCCURS, care specifică de câte ori se repetă o variabilă sau o structură în memorie.

Definirea unui tabel cu OCCURS

Clauza OCCURS este adăugată la declarația unei variabile subordonate (de exemplu, nivelul 05 sau mai mare) în cadrul unei structuri de grup (nivel 01):

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

În acest exemplu, WS-MONTHLY-SALES este un tabel format din 12 elemente numerice a câte 4 cifre fiecare. Memoria alocată pentru această înregistrare va fi exact 12 * 4 = 48 de caractere.

Accesarea elementelor și indicilor

Pentru a accesa un anumit element dintr-un tabel, specificați indexul între paranteze imediat după numele câmpului.

[!IMPORTANT] Spre deosebire de majoritatea limbilor moderne care folosesc indexarea bazată pe 0, COBOL utilizează indexarea bazată pe 1. Primul element se află la indexul 1, al doilea la indexul 2 și așa mai departe.

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

Parcurgerea unui tabel (iterație)

Pentru a parcurge elementele unui tabel, puteți utiliza instrucțiunea PERFORM VARYING sau puteți gestiona manual un contor într-o buclă PERFORM UNTIL:

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

Încercați-l singur

Exercițiu#cobol.m4.l2.e1
Încercări: 0Se încarcă…

Declarați un tabel cu 5 temperaturi zecimale (3 cifre întregi și 1 zecimală) în structura grupului WS-WEATHER-DATA folosind clauza OCCURS.

Se încarcă editorul...
Afișează indiciu

Scrieți: 05 WS-TEMPERATURE PIC 9(3)V9 ARE DE 5 ORI.

Soluție disponibilă după 3 încercări

Exercițiu#cobol.m4.l2.e2
Încercări: 0Se încarcă…

Inițializați primele trei elemente ale tabelului WS-MONTHLY-SALES cu valorile 1200, 1500 și, respectiv, 1800 folosind instrucțiunile MOVE. Amintiți-vă că indicii COBOL încep de la 1.

Se încarcă editorul...
Afișează indiciu

Utilizați MOVE 1200 TO WS-MONTHLY-SALES(1). pentru primul element, apoi repetați pentru al doilea și al treilea folosind indicii (2) și (3).

Soluție disponibilă după 3 încercări