RPG II als Vehikel zur besseren Programmierung, Teil 2 und Schluß:

Strukturierung in jeder Sprache machbar

11.11.1983

Hohe Programmiersprachen wie Pascal und Algol bieten Sprachelemente an, welche die Konstruktionen abbilden können, die während des strukturierten Programmentwicklungsprozesses benutzt werden.Programmierer, die mit Sprachen wie Fortran, Assembler oder anderen nicht strukturierten Sprachen arbeiten, können jedoch mit Hilfe einiger im folgenden vorgestellten Schemata erreichen, daß eine Strukturierung möglich wird.

Im Unterschied zur FOR-Anweisung hängt die Ausführung der WHILE-Schleife vom Eintreten einer bestimmten Bedingung ab (Abb. 7).

Ob die Schleife noch einmal durchlaufen wird, wird am Schleifenbeginn entschieden, das heißt, es ist möglich, daß sie überhaupt nicht durchlaufen wird. Bei der UNTIL-Anweisung erfolgt der Test am Ende der Schleife. Sie wird also mindestens eimmal ausgeführt (Abb. 8)

Im vorigen Abschnitt wurden immer einfache Bedingungen wie a<b angenommen. Oft werden aber komplizierte "bedingte Ausdrücke" wie

IF(a<b AND b> =e) OR (f<c AND d=c) THEN A Fl

gebraucht. Zur Verdeutlichung der Zusammengehörigkeit wurden Klammern gesetzt. Auch solche Ausdrücke sind bei Anwendung einiger informell eingeführter Regeln und deren Kombination auflösbar. Es sollte im Sinne eines guten Programmierstils sein, daß eine Bedingung, bei der mehrere Variable beteiligt sind, immer im RPG-II-Programm als eine solche erkennbar ist. Die zusammengehörigen COMP-Operationen sollten also auch an einer Stelle zusammengefaßt werden (Schleifenende).

Lösen wir zunächst den ersten "Term" auf: Es ist "wahr", wenn a kleiner b UND b größer oder gleich e ist, also wie in Abb. 9.

Ist die Bezugszahl 27 an, ist der Term wahr. In gleicher Weise wird der zweite behandelt, der als Ergebnis den Zustand der Bezugszahl 28 hat(Abb. 10).

Man beachte, daß die Bezugszahlenaussage "N27N28" die Negation von "27 OR 28" ist. Hier wurde ein Gesetz der Booleschen Algebra von De Morgan angewandt. Dies besagt, daß die Verneinung einer ODER-Verknüpfung gleich der UND-Verknüpfung der jeweils verneinten ODER-Faktoren ist. Formal wird diese dargestellt durch

NICHT (P ODER Q) = (NICHT P) UND (NICHT Q),

wobei P und Q beliebige logische Variablen (zum Beispiel Bezugszahlen) sind. Umgekehrt gilt auch

NICHT (P UND Q) = (NICHT P) ODER (NICHT Q).

Durch diese beiden Formeln läßt sich vielleicht manche komplizierte Bezugszahlenaneinanderreihung vereinfachen.

Kommen wir zurück zu unserem bedingten Ausdruck vom Anfang: Ist der erste Term wahr, braucht der zweite gar nicht mehr geprüft zu werden (ODER-Verknüpfung). Der gesamte Ausdruck kann wie folgt verändert werden. Ziel ist es, durch das Nichtprüfen des zweiten Terms Rechenzeit zu sparen (Abb. 12).

Im vorigen Ausdruck wurden zwei UND-Bedingungen durch ein ODER.

Bei Nichterfüllung der ersten Bedingung wird der zweite Term nicht mehr durchlaufen, da die Gesamtbedingung infolge der UND-Verknüpfung nicht mehr wahr werden kann.

Die vorgestellten Schemata können natürlich beliebig ineinandergeschachtelt werden. Durch konsequente Numerierung der Marken, welche die Blöcke identifizieren, kann auch in RPG II die Zusammengehörigkeit der Anweisungen aufgezeigt werden, die in der hohen Programmiersprache durch Eindrücken in der Notation der einzelnen Konstruktionen erreicht wird.

*Dipl.-lnform. Dieter Fritsche ist EDV-Leiter bei der Gebrüder Gienäth-Eisenberg GmbH in Einsenberg/Pfalz.