Direct naar de hoofdinhoud
Module 4 · Les 2 van 28/10 in de cursus~15 min
Modulelessen (2/2)

Tabellen en OCCURS-clausule

In COBOL bestaat er geen trefwoord "array" of "vector" om lijsten met homogene gegevens te definiëren. Voor dit doel gebruikt u de clausule OCCURS, die specificeert hoe vaak een variabele of structuur in het geheugen wordt herhaald.

Een tabel definiëren met OCCURS

De clausule OCCURS wordt toegevoegd aan de declaratie van een ondergeschikte variabele (bijvoorbeeld niveau 05 of hoger) binnen een groepsstructuur (niveau 01):

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

In dit voorbeeld is WS-MONTHLY-SALES een tabel die bestaat uit 12 numerieke elementen van elk 4 cijfers. Het toegewezen geheugen voor dit record zal precies 12 * 4 = 48 tekens bedragen.

Toegang tot elementen en indexen

Om toegang te krijgen tot een specifiek element in een tabel, specificeert u de index tussen haakjes direct na de veldnaam.

[!BELANGRIJK] In tegenstelling tot de meeste moderne talen die indexering op basis van 0 gebruiken, gebruikt COBOL indexering op basis van 1. Het eerste element bevindt zich op index 1, het tweede op index 2, enzovoort.

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

Een tabel doorlopen (iteratie)

Om de elementen van een tabel te doorlopen, kunt u de instructie PERFORM VARYING gebruiken of een teller handmatig beheren in een PERFORM UNTIL lus:

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

Probeer het zelf

Oefening#cobol.m4.l2.e1
Pogingen: 0Laden…

Declareer een tabel met 5 decimale temperaturen (3 gehele cijfers en 1 decimaal) onder de groepsstructuur WS-WEATHER-DATA met behulp van de OCCURS-clausule.

Editor laden…
Toon hint

Schrijf: 05 WS-TEMPERATUUR FOTO 9(3)V9 komt 5 keer voor.

Oplossing beschikbaar na 3 pogingen

Oefening#cobol.m4.l2.e2
Pogingen: 0Laden…

Initialiseer de eerste drie elementen van de tabel WS-MONTHLY-SALES met respectievelijk de waarden 1200, 1500 en 1800 met behulp van MOVE-instructies. Houd er rekening mee dat COBOL-indexen beginnen vanaf 1.

Editor laden…
Toon hint

Gebruik MOVE 1200 NAAR WS-MONTHLY-SALES(1). voor het eerste element, herhaal dan voor het tweede en derde met behulp van de indexen (2) en (3).

Oplossing beschikbaar na 3 pogingen