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:
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 Index2usw.
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:
PERFORM UNTIL WS-INDEX > 12
DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
ADD 1 TO WS-INDEX
END-PERFORM.
Probier es selbst aus
Deklarieren Sie eine Tabelle mit 5 Dezimaltemperaturen (3 Vorkommastellen und 1 Nachkommastelle) unter der Gruppenstruktur WS-WEATHER-DATA unter Verwendung der Klausel OCCURS.
Hinweis anzeigen
Schreiben Sie: 05 WS-TEMPERATURE PIC 9(3)V9 OCCURS 5 TIMES.
Lösung nach 3 Versuchen verfügbar
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.
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