Neues Programmier-Tool von Kienzle:

"MASK" generiert Display-Schablonen in Cobol

27.06.1980

VILLINGEN - Die Maskenverarbeitung für den Bildschirm hat bis heute in den Programmiersprachen noch keinen Niederschlag gefunden. Die Normungsgremien für Cobol werden auch in den nächsten Jahren in dieser Richtung nichts anbieten. Mit dem MASK I-O Modul hat Kienzle einen Vorstoß unternommen, in Cobol die Masken-Definition und -Bearbeitung auf Sprachebene anzubieten.

Cobol als die Sprache für die kommerzielle Datenverarbeitung hat sich mehr und mehr etabliert. Mittelfristig, das bedeutet für die nächsten zehn Jahre, wird keine wesentliche Alternative für die Programmierung im kommerziellen Bereich vorhanden sein.

Innerhalb der verschiedenen Normierungsgremien nimmt Cobol auch eine herausragende Stellung ein. Nicht nur im Codasyl, das als die eigentliche Cobol-Entwicklungsgruppe vorhanden ist, oder im ANSI, dem wesentlichen Cobol-Normierungs-Institut, sondern auch in den verschiedenen Gruppen, wie ECMA, ISO, DNI und auch einzelnen Firmen-Gremien wird an der Sprache Cobol gearbeitet. Diese Normungsaktivitäten haben viele allgemein bekannte Vorteile, jedoch auch den einen wesentlichen Nachteil, daß die Normung meistens zu spät kommt.

Gerade im Bereich der Bildschirm-Arbeitsplätze, der für die Programmierung heute aktuell ist, bietet Cobol keine Unterstützung. Auch sind die Normungsaktivitäten zum Bereich "Screen-Management" noch am Beginn. Dieser Zustand hat Kienzle veranlaßt, eine eigene Sprachdefinition für die Programmierung von Bildschirm-Arbeitsplätzen in Cobol zu entwickeln. Diese Sprachdefinition ist entsprechend der ANS-Einteilung als Input- Output-Modul unter dem Namen MASK I-O verfaßt.

Anforderungen an die Sprache

Für eine Sprachdefinition ist es besonders wichtig, daß diese weitgehend geräteunabhängig ist. Dies bedeutet für MASK I-O, daß Bildschirm-Arbeitsplätze unterschiedlicher Ausprägung in gleicher Weise von der Sprache versorgt werden.

Eine weitere Forderung ist die nach leichter Handhabbarkeit und guten Dokumentationseigenschaften. Die Programme müssen leicht lesbar sein und aus Wartungsgründen auch von anderen Programmierern gut verstanden werden können.

Für die Darstellung von Masken auf dem Bildschirm muß die Strukturierung in Bereiche nach Größe Zeilenzahl und Länge mit Überlagerungen programmierbar sein. Die einzelnen Maskenbereiche und Felder sollen mit Attributen der Felddarstellung (wie blinkende oder/und inverse Darstellung, Helligkeits- und Farbstufen), Feldart (Konstante, geschützte Variable) Schriftart, Abschlußart bei Eingabe und Prüfung versehen werden können.

Dieser Anforderungskatalog wird durch die Sprachelemente des Moduls MASK I-O abgedeckt.

Maskenbeschreibung in der Data-Division

Bislang wurde die Maskenprogrammierung weitgehend durch CALL, "Maskenroutine" mit entsprechender Anforderungen an die bieten mancher Cobol-Compiler erweiterte Accept-/Display-Anweisungen oder Read-/Write-Varianten an, deren Einsatz jedoch den Prozedurteil gewaltig aufblähen.

Mit der Maskenbeschreibung in der Data-Division definiert der Programmierer an einer Stelle im Programm das vollständige, sich dem Benutzer bietende Bild beim Bedienungsablauf. Der Programmierer wird durch eine Anzahl geeigneter Klauseln unterstützt, den Maskenaufbau zu definieren.

Die Verlagerung der Datenaufbereitung in die Data-Division ist in den jeweiligen Cobol-Sprachmoduln erfolgreich durchgeführt worden. Erinnert sei hierbei an die Druckaufbereitung und an den Report-Writer, bei denen es selbstverständlich ist, das Format der Ausgabe in der Data-Division zu definieren und in der Procedure-Division nur den einfachen Transfer zu programmieren.

Wie die Dateibeschreibungen werden in diesem Sprachvorschlag auch alle Maskenbeschreibungen in einer Section zusammengefaßt, der "Mask-Section".

Wir wollen einige grundsätzliche Aspekte der Bildschirmprogrammierung aufzeigen. Auf dem Bildschirm steht beim Programmablauf ein Bild, welches logisch aus zwei Teilen besteht: zum einen dem Datenmaterial in Form von Ein-/Ausgabeparametern, zum anderen aus für den Programmablauf redundanten Informationen über die zu verarbeitenden Daten. Diese Informationen bleiben in der Regel unverändert, sind also Konstanten; die vom Programm benutzten Daten sind darin eingebettete Variablen.

Das Bild setzt sich aus einem oder mehreren Teilbildern, die wir Masken nennen, zusammen. Masken sind in Zeilen eingeteilt und diese wieder bestehen aus Elementen. Die Elemente können nun, wie oben dargestellt, Variablen oder Konstanten sein. Diese hierarchische Struktur eines Bildes ist auf die Cobol-Datenstruktur durch die Vergabe der Stufennummern abzubilden (siehe Abbildung).

Satz- und wortorientierte Verarbeitung

Im MASK 1-0 sind nur die Variablen einer Maske Teile des Satzes der durch Anweisungen in der Procedure-Division bewegt wird. Dadurch werden Konstantenteile aus dem Transfer herausgehalten und damit die Übertragungszeit wesentlich herabgesetzt.

Allerdings sind viele Bildschirmanwendungen so angelegt, daß immer nur ein Teil der Daten auf dem Bildschirm Veränderungen unterworfen ist, während sich der andere Teil nicht verändert. Oder aber werden die Teile des Satzes einzeln erfaßt, was die Prüfung und die Fehlerbehandlung erleichtert und die Fehlerbeseitigung durch sofortiges Reagieren auf das falsche Wort verschnellert. Bei diesen Lösungen spielt die zu übertragende Datenmenge eine besondere Rolle und man ist bestrebt, sie aus Zeitgründen klein zu halten, das heißt, es sollen nur die veränderten Daten übertragen werden. Deshalb empfiehlt es sich an dieser Stelle vom üblichen Cobol-Gebrauch abzuweichen und neben der satzweisen Ein-/Ausgabe ein wortweises Lesen und Schreiben auf den Bildschirm zuzulassen. Dies wird durch "Read"- oder "Write"-Identifier erreicht.

Durch Auslagern von Masken in Bibliotheken wird die Funktionalität von MASK I-O wesentlich erweitert. Es besteht die Möglichkeit dieselbe Maske in mehreren Programmen gleichzeitig zu verwenden, wobei sie systemweit nur einmal vorhanden ist. Ohne die eingangs erwähnten Vorteile zu verlieren, wird die Flexibilität der Maskendarstellung durch einen Masken-Editor für ausgelagerte Masken wesentlich erhöht. Bei der Definition von mehreren Masken in einem Programm erreicht man durch Auslagerung eine merkliche Verringerung des Speicherbedarfs.

Zum Abschluß dieser Betrachtungen sollen noch einmal die Schritte der Bildschirmverarbeitung gezeigt werden. Natürlich beginnt jede Verarbeitung, also auch die Maskenverarbeitung, in Cobol mit dem Eröffnen einer Datei. Hierfür gibt es die "Open"-Anweisung. Als günstig hat sich das Einführen einer "Initiate"-Anweisung erwiesen, die den Übergang von einer Maskenbeschreibung zu einer anderen derselben Datei markiert.

Am Anfang der Verarbeitung auf dem Bildschirm steht das Generieren des definierten Maskenbildes auf dem Schirm, welches mit der "Generate"-Anweisung veranlaßt wird.

Nachdem die Maske auf dem Bildschirm steht, wird vom Programm aus nur mit der "Read"- und "Write"-Anweisung der Transfer der Daten vom und zum Bildschirm durchgeführt. Die im Datenteil definierte Aufbereitung geschieht automatisch und belastet den Programmierer bei der Festlegung der Programmstruktur nicht mehr. Mit der "Close"-Anweisung wird die Verarbeitung abgeschlossen.

Günter Göller arbeitet als Abteilungsleiter der Gruppe Zentraleinheiten-Übersetzer bei der Kienzle Apparate GmbH in Villingen, Elmar Machnikowski ist einer seiner Mitarbeiter.