Tabellenverarbeitung

Natürlich ist auch eine solche Art der Verarbeitung in Cobol möglich. Tabellen oder Arrays sind beim Programmieren extrem wichtig und werden eigentlich dauernd gebraucht.
Um sich an einem einfachen Beispiel vorzustellen, was so eine Tabelle ist, sagen wir zunächst, eine Tabelle sei eine Ansammlung von Variablen des gleichen Typs. Eine solche Variable ist nichts anderes, als ein 'Behälter', in den ein bestimmter Inhalt einer bestimmten Größe gepackt werden kann. Soll dann auf den besagten Inhalt zugegriffen werden, muß man nur noch den Namen des 'Behälters' sowie dessen Ort kennen, um auf die Information (den Inhalt) zugreifen zu können. Will man im Schuhgeschäft Schuhe einer bestimmten Art in einer anderen Größe haben, so wird die Verkäuferin, bzw. der Verkäufer an eine bestimmte Stelle im Regal greifen - ohne daß er sich vorher alle Schuhe aus allen Kartons ansieht.
Vom Grundsatz her ist das Regal im Schuhgeschäft nichts anderes als eine Tabelle:

Tabellenbeispiel: Schuhregal

Möchte man z.B. Schuhe vom Typ 3 in Größe 41, so wird der Verkäufer in das Fach in der Zweiten Reihe von oben und der dritten Zeile von Links greifen. Da sich dort ein Karton mit Schuhen befindet, kann er Dir also das gewünschte Paar verkaufen.
Wenn wir die Tabelle betrachten fällt auf, daß sie mehr als eine Dimension hat. Es gibt als erste Dimension die Zeilen und als zweite die Reihen oder Spalten. Zählt man die Zeilen und Spalten von oben links an durch, so kann man für die gewünschten Schuhe auch die Ortsangabe 'Schuhregal; Zeile 3; Spalte (Reihe) 2' angeben. Um den Wunsch nach dem entsprechenden Paar Schuhe mal 'cobolianisch' zu formulieren könnte man beispielsweise sagen:

MOVE Schuhregal ( 3, 2 ) TO Kunde

Stellt man sich nun anstelle der Regalfächer Schubladen vor, die wiederum in Fächer eingeteilt sind, so hat man eine Tabelle mit drei Dimensionen. Um sich die vierte Dimension vorzustellen, wird das Beispiel etwas abenteuerlich: Stellt Euch vor, von diesen 3-Dimensionalen 'Schuhschränken' gibt es mehrere auf einer Drehbühne. Dreht sich diese Bühne, dann hat sich die vierte Dimension verändert. Dieses Spielchen kann man jetzt beliebig weiterführen.
Wollte man eine Reihe von Datenfeldern definieren, ohne dabei eine Tabelle zu verwenden, so müßte man über die PICTURE-Klausel jedes einzelne Element definieren. Nehmen wir unser Schuhbeispiel und sagen, wir möchten 10 Schuhnamen abspeichern (Alphanumerisch 10-Stellig). Bei der Definition mit Hilfe der PICTURE-Klausel hieße das:

01 Schuhname-1 PIC X(10).
01 Schuhname-2 PIC X(10).
01 Schuhname-3 PIC X(10).
:
:
:

01 Schuhname-8 PIC X(10).
01 Schuhname-9 PIC X(10).
01 Schuhname-10 PIC X(10).

Man kann sich leicht vorstellen, daß diese Art der Variablendefinition sehr aufwendig und bei teilweise etlichen hundert verschiedenen Variablen in einem Programmkaum mehr zu überblicken ist.
Um soetwas zu vermeiden, wird eine solche Folge von Datenfeldern in einer Tabelle definiert. Mit Hilfe eines Index ist dann ein Zugriff auf das entsprechende Datenelement möglich.
Nachdem jetzt klar sein dürfte, was eine (mehrdimensionale) Tabelle bzw. Array ist, stellt sich nun die Frage, wie man eine solche Tabelle in Cobol definieren kann. Von zentraler Bedeutung ist dabei die OCCURS-Klausel.
Um Tabellen nach bestimmten Einträgen zu durchsuchen, wird die SEARCH-Anweisung verwendet.

...