Direkt zum Hauptinhalt springen
eLearner.app
Modul 4 · Lektion 2 von 28/10 im Kurs~15 min
Lektionen des Moduls (2/2)

Tablen und OCCURS-Klausel

In COBOL gibt es kein Schlüsselwort "Array" oder "Vektor", um Listen homogener Daten zu definieren. Zu diesem Zweck wird die Klausel OCCURS verwendet, die angibt, wie oft sich eine Variable oder eine Struktur im Speicher wiederholt.

Definition einer Tabelle mit OCCURS

Die Klausel OCCURS wird der Deklaration einer untergeordneten Variablen (z. B. der Ebene 05 oder höher) innerhalb einer Gruppenstruktur (Ebene 01) hinzugefügt:

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

In diesem Beispiel ist WS-MONTHLY-SALES eine Tabelle, die aus 12 numerischen Elementen mit jeweils 4 Ziffern besteht. Der für diesen Datensatz zugewiesene Speicher beträgt genau 12 * 4 = 48 Zeichen.

Zugriff auf Elemente und Indizes

Um auf ein bestimmtes Element in einer Tabelle zuzugreifen, geben Sie den Index in Klammern direkt nach dem Feldnamen an.

[!IMPORTANT] Im Gegensatz zu den meisten modernen Sprachen, die eine 0-basierte Indizierung verwenden, verwendet COBOL eine 1-basierte Indizierung. Das erste Element befindet sich bei Index 1, das zweite bei Index 2 usw.

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

Durchsuchen einer Tabelle (Iteration)

Um die Elemente einer Tabelle zu durchlaufen, können Sie die Anweisung PERFORM VARYING verwenden oder einen Zähler in einer PERFORM UNTIL-Schleife manuell verwalten:

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

Probier es selbst aus

Übung#cobol.m4.l2.e1
Versuche: 0Wird geladen…

Deklarieren Sie eine Tabelle mit 5 Dezimaltemperaturen (3 Vorkommastellen und 1 Nachkommastelle) unter der Gruppenstruktur WS-WEATHER-DATA unter Verwendung der Klausel OCCURS.

Editor wird geladen…
Hinweis anzeigen

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

Lösung nach 3 Versuchen verfügbar

Übung#cobol.m4.l2.e2
Versuche: 0Wird geladen…

Initialisieren Sie die ersten drei Elemente der Tabelle WS-MONTHLY-SALES mit den Werten 1200, 1500 bzw. 1800 unter Verwendung von MOVE-Anweisungen. Denken Sie daran, dass Indizes in COBOL bei 1 beginnen.

Editor wird geladen…
Hinweis anzeigen

Verwenden Sie MOVE 1200 TO WS-MONTHLY-SALES(1). für das erste Element, wiederholen Sie dies dann für das zweite und dritte Element unter Verwendung der Indizes (2) und (3).

Lösung nach 3 Versuchen verfügbar