Vai al contenuto
eLearner.app
Modulo 4 · Lezione 2 di 28/10 nel corso~15 min
Lezioni del modulo (2/2)

Tabelle e Clausola OCCURS

In COBOL non esiste una parola chiave "array" o "vettore" per definire liste di dati omogenei. Per questo scopo si utilizza la clausola OCCURS, che specifica il numero di volte in cui una variabile o una struttura si ripete in memoria.

Definizione di una Tabella con OCCURS

La clausola OCCURS viene aggiunta alla dichiarazione di una variabile subordinata (ad esempio, di livello 05 o superiore) all'interno di una struttura di gruppo (livello 01):

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

In questo esempio, WS-MONTHLY-SALES è una tabella formata da 12 elementi numerici di 4 cifre ciascuno. La memoria allocata per questo record sarà esattamente di 12 * 4 = 48 caratteri.

Accesso agli Elementi e Indici

Per accedere a un elemento specifico all'interno di una tabella, si specifica l'indice tra parentesi subito dopo il nome del campo.

[!IMPORTANT] A differenza della maggior parte dei linguaggi moderni che usano indici base-0, COBOL utilizza indici base-1. Il primo elemento si trova all'indice 1, il secondo all'indice 2, e così via.

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

Scansione di una Tabella (Iterazione)

Per scorrere gli elementi di una tabella, si può utilizzare l'istruzione PERFORM VARYING o gestire manualmente un contatore in un ciclo PERFORM UNTIL:

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

Prova tu

Esercizio#cobol.m4.l2.e1
Tentativi: 0Caricamento…

Dichiara una tabella di 5 temperature decimali (3 cifre intere e 1 decimale) sotto la struttura di gruppo WS-WEATHER-DATA usando la clausola OCCURS.

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi

Esercizio#cobol.m4.l2.e2
Tentativi: 0Caricamento…

Inizializza i primi tre elementi della tabella WS-MONTHLY-SALES con i valori 1200, 1500 e 1800 rispettivamente usando istruzioni MOVE. Ricorda che gli indici in COBOL partono da 1.

Caricamento editor…
Mostra suggerimento

Usa MOVE 1200 TO WS-MONTHLY-SALES(1). per il primo elemento, poi ripeti per il secondo e il terzo usando gli indici (2) e (3).

Soluzione disponibile dopo 3 tentativi