Cobol-Codierung nach festen Regeln:

Struktogramm merzt wildes Springen aus

18.02.1983

Die Forderung, strukturiert zu programmieren, um eine größtmögliche Übersichtlichkeit zu erreichen, wird zu Recht immer wieder gestellt. Dabei ist es allerdings nebensächlich, in welcher Sprache ein Projekt realisiert wird. Cobol ist genauso gut für die strukturierte Programmierung geeignet wie beispielsweise PL/1.

Vielmehr ist die Phase vor der Programmierung, also die Planung, entscheidend. Hält man sich bei dieser Planung an die gestellten Regeln, ist der wichtigste Schritt für eine gute Struktur getan. Das Programm kann dann nur nach den vorgegebenen Restriktionen codiert werden.

Durch diese Maßnahme erübrigt sich eine breite Diskussion darüber, wann und wo GO TO-Befehle angewendet werden dürfen, da es für sie nur noch ganz begrenzte Einsatzmöglichkeiten gibt.

Bedient man sich bei der Programmplanung der Struktogramm-Methode, sind die Voraussetzungen für ein übersichtliches Programm schon gegeben:

- Ein Strukturblock hat nur einen Eingang und nur einen Ausgang. Für das Programm heißt das, ein Modul als Zusammenfassung mehrerer Strukturblöcke hat ebenfalls nur einen Eingang und nur einen Ausgang.

- Ein Strukturblock erhält die Kontrolle vom oberen Strukturblock und gibt sie an den unteren weiter. Ein unkontrollierter Sprung ist also nicht möglich.

- Ein Strukturblock ist entweder vollständig in einem anderen Strukturblock enthalten oder enthält selbst andere Strukturblöcke vollständig. Eine teilweise Überlappung ist nicht erlaubt.

Diese genannten Bedingungen führen bei der Umsetzung in ein Programm zwangsläufig zur Einhaltung der Regeln. Ein "wildes Springen" mit GO TO ist ausgeschlossen.

Betrachtet man beispielsweise das Struktogramm einer Steuerleiste und den entsprechenden Cobol-Code, wird dieses Systems sehr deutlich (Bild 1).

Übersichtliche Funktionsblöcke

Unterteilt man bei der Planung das Problem in kleine, Übersichtliche Funktionsblöcke, erhält man sowohl ein leicht zu änderndes Programm als auch eine Übersichtliche und leicht änderbare Dokumentation.

Es bietet sich eine Unterteilung in vier Ebenen an:

1) die Steuerungsebene,

2) die Bedienungsebene,

3) die Funktionsebene,

4) die Ebene der allgemeinen Sub-Routinen (Bild 2).

In der Steuerungsebene werden die Funktionsblöcke in einer Schleife aufgerufen. Die Bedingungsebene ist notwendig, um einen klaren Ablauf in der Steuerungsebene zu erhalten. In der Funktionsebene unterscheidet man Module, die bedingungslos bei jedem Durchlauf der Steuerleiste aufgerufen werden und solche, die nur unter entsprechenden Bedingungen abgearbeitet werden sollen.

Um zu gewährleisten, daß ein Modul in dem einen Fall bedingungsunabhängig und in dem anderen Fall bedingungsabhängig eingesetzt werden kann, ist es nicht empfehlenswert, diese Abfrage im Modul selbst zu programmieren.

Die vierte Ebene der allgemeinen Sub-Routinen kann aus der Funktionsebene von allen Modulen genutzt werden.

Hält man sich an diese Struktur, so wird die Diskussion über den GO TO Befehl in Cobol-Programmen auf ein Minimum reduziert, da er nur innerhalb einer Ebene angewendet werden kann.

Bei der Schleifenbildung ist sicherlich der PERFORM-Befehl vorzuziehen, allerdings kann mit dem GO TO-Befehl oft ein klarerer Programmablauf gestaltet werden.

Aus diesem Grund muß gesagt werden, daß der GO TO-Befehl innerhalb einer Ebene - sinnvoll angewendet - durchaus seine Berechtigung hat.

*Rudolf Gogol ist freiberuflicher Systemanalytiker in 2932 Zetel.