Übergeordneter Steuermodul reicht nicht aus, um zu einer wirklichen Normierung zu kommen; Letzter Teil:

Eine Methode ist nur so gut wie das Werkzeug

29.05.1981

In den ersten Teilen dieser Reihe wurde Delta 1 und die Einbettung dieses Systems im Software-Entwicklungsprozeß allgemein und der NP-Generator für Batch-Programme im besonderen vorgestellt. Die letzten Teile der Aufsatzreihe behandelten - und behandeln heute abschließend - die Standardisierung der Programmstruktur von Bildschirmprogrammen und die Funktionen, die ein entsprechender Generator, der auf der mächtigen Delta-Makro-Sprache fußt, wahrnehmen kann.

Zur Strukturierung der Funktionen innerhalb eines jeden Programmblockes für die einzelnen Bilder wird vom "SPSGEN"-Makro ein Bausteinskelett für jedes Bild geliefert. Die Namen dieser Bausteine bestehen aus drei Teilen:

1. B = Kennbuchstabe für Programmblock (oder Bereich oder "Bild"),

2. Nummer des Bildes. (0 für Schlüsselbild, 1 bis 9 für die Verarbeitungsbilder),

3. Kennbuchstabe zur Unterscheidung der einzelnen Bausteine innerhalb des Programmblockes nach ihren Funktionen.

Vorab noch einige Anmerkungen zu den verwendeten Begriffen für die Datenbereiche:

OMA = Bildschirmausgabebereich (Output Message Area),

CDA = Continuity Data Area (Dieses ist ein Bereich, der für jeden Aufruf des Programms angelegt wird; hier werden. Daten abgelegt, die für den gesamten Ablauf des Programms, also auch über verschiedene Programmabschnitte hinweg, benötigt werden.),

CDA-OMA = Dieses ist der bereits obengenannte Bild Zwischenspeicher für die variablen Werte eines Bildes (also nicht für Konstante).

IMA = Gegenstück zur OMA: Input Message Area (hier legt der TP-Monitor die Daten der Felder ab, die vom Programmierer als Erfassungsfelder, also "ungeschützte" Felder deklariert wurden).

Stellvertretend für alle Bilder wird am Beispiel eines "Bildes 1" gezeigt, welche Bausteine zur Verfügung gestellt werden (siehe Abbildung 3).

1. Abschnitt eines Programmblockes: Erstellen des Bildes

B1L = Lesen/Nachlesen Datensätze*)

B1A = Aufbau der Werte/Variablen für Bild 1* )

B1C = CDA-OMA aufbereiten (hier werden die Befehle von den MA GEN-Makros hinein gestellt, die automatisch die direkt aus den Datensätzen verwendbaren Werte in das

Bild übernehmen, MAGEN wird später erläutert)

B1F= Füllen OMA aus CDA OMA und Senden

2. Abschnitt: Verarbeiten der zurückfließenden Daten

B1I: IMA-Analyse ´Numerisch-Prüfungen, Ausrichten von numerischen Werten (falls nicht von der Hardware realisiert)´

B1V: Vorbereitung der Prüfungen und Verarbeitungen*)

B1V1: Vorbereitung 1: Fehlerprüfung der Stufe 1: Formalprüfungen*)

B1V2: Verarbeitung 2: (Hier werden die generierten Befehle für das Übertragen der Daten aus der IMA in die CDA-OMA eingestellt),

Fehlerprüfungen der Stufe 2 (Plausibilitätsprüfungen)* )

B1FH: Fehlermeldungen (wird automatisch von BlV1 und B1V2 angesprungen, wenn dort Fehlerkennzeichen gesetzt wurden), Senden Fehlertext und Blinkzeichen

B1S: Wenn kein Fehler mehr vorliegt: Schreiben (bei Zugang); Lesen und Sperren, Ändern und Zurückschreiben (bei Änderung); oder Löschen* )

B1E: Ende-Maßnahmen (falls Steuerungen vorgenommen werden sollen, die vom Standard abweichen, können hier vom Generator festdefinierte Steuerungsfelder gefüllt

werden).* )

Die Zuordnung von Verarbeitungsbefehlen geschieht mit Hilfe des Delta-Befehls: (Beispiel) ".SL = B1V2"

Andere Normierungsideen und TP-Strukturierungssysteme gehen von dem Gedanken aus, ganz allgemein sogenannte "Transitionspunkte" zu bilden, die von überallher angesteuert werden können und die überallhin die Steuerung abgeben können. Die Steuerung wird häufig bei solchen gedanklichen Ansätzen als übergeordneter Steuermodul aufgebaut, der mit Hilfe von gemeinsamen Adressierungsdaten ihre Steuerungsfunktion wahrnimmt .

Ein solcher Gedankenansatz beschreibt zwar richtig den Zustand, wie die Programmteile eines Bildschirmsystems miteinander kommunizieren können sollten; er reicht aber nicht aus, um zu einer wirklichen Normierung zu kommen und dem Programmierer alle Arbeit in bezug auf die Steuerung abzunehmen. Auch ist es sinnvoll, möglichst wenige Programmwechsel durch den TP-Monitor

Bild 3: Bausteine eines Programmblockes für ein Bild (hier beispielhaft Bild 1) vornehmen zu lassen, ferner, die Steuerung im Programm selbst (durch einen Generator) placieren zu lassen.

Aus diesem Grunde sollte man schon definieren, welche ablauftechnischen Anforderungen allgemeingültig bei Ansteuerung von Programmteilen und Programmen bestehen. In diesem System sind Steuerungsvarianten standardisiert; der Steuerungscode sowie der Datenverwaltungscode wird vom System vollautomatisch generiert (und zum größten Teil in den Routinen der "STEUERUNG" - siehe Abbildung 2 - abgelegt) .

Steuerungsvarianten

a) S1 = Standardsteuerung 1:

Das (eine) Bild (oder die Bildfolge) eines Programms wurde vollständig abgeschlossen; Der Terminalbenutzer möchte mit demselben Programm einen anderen Vorgang bearbeiten; es wird BOA des aktuellen Programms angesteuert (oder BOV, wenn der Benutzer den Schlüssel des nächsten Vorganges bereits im letzten Bild eingetippt hat).

S2 = Standardsteuerung 2:

Wie S1, der Terminalbenutzer möchte jedoch mit einem anderen Programm fortfahren über X001 (Prüfung, ob der Terminalbenutzer für das neue angeforderte) Programm die Berechtigung hat) erhält das entsprechende Programm (dort entweder BOA oder BOV - siehe oben) die Steuerung.

b) B = Bildfolgesteuerung:

Durch Eintippen einer entsprechen, den Bild-Nummer (dafür ist ein Erfassungsfeld in den Standardfußzeilen eines jeden Bildes vorgesehen*) kann der Terminalbenutzer das gewünschte Bild direkt aufrufen. Falls keine Eingabe erfolgt, wird das nächste Bild der Bildfolge angesteuert, falls die Bildfolge noch nicht beendet ist.

c) E = Endloslistensteuerung:

Wiederholung desselben Bildes mit anderen Daten (so etwa Match-Code-Listen, allen Aufträgen eines Kunden etc.). Manche TP-Monitore unterstützen diese Funktion (auch "Paging" genannt) direkt, häufig mit dem Nachteil, daß die Pages in einer eigenen Workdatei abgespeichert werden. Dies ist hier nicht der Fall; das System legt intern lediglich eine Tabelle der Ordnungsbegriffe (beziehungsweise der DB-Keys) der Datensätze an, die jeweils als erste auf den Blättern erscheinen. Beim Vor- und Rückblättern, wird somit auf die Originaldatei/Datenbank zurückgegriffen.

d) V = Verknüpfung:

Diese Ansteuerungsmöglichkeit ist im Generator vorgesehen worden, um das Aufrufen anderer Programme und das Zurückkehren von dort in das aufrufende Programm vollautomatisch durchführen zu können. Häufiger Anwendungsfall (Beispiel): Anzeige einer Auftragsübersicht in Form einer Endlosliste in einem Programm; der Benutzer wählt eine bestimmte Position aus, das Programm steuert ein anderes Programm an, das den ausgewählten kompletten Auftrag anzeigt. Nach der Bearbeitung dieses Auftrages möchte der Terminalbenutzer jedoch wiederum die Auftragsübersicht sehen, um die Arbeit an anderen Aufträgen fortzusetzen. Dieser Prozeß wird vollautomatisch vom Generator gesteuert (so wird auch sichergestellt, daß nach Rückkehr aus dem aufgerufenen Programm die letzte angezeigte "Page" der Übersichtsliste erscheint, ohne daß zusätzlich wieder auf Dateien zurückgegriffen werden muß).

e) R = Rücksprungsteuerung:

Das Pendant zu V (=Verknüpfung).

f) Zusätzlich gibt es eine Reihe grundsätzlich verfügbarer Steuerungen, wie zum Beispiel Ansteuerung der Menümaske, unbedingter Abbruch des laufenden Vorgangs oder Beendigung der "Sitzung".

Die Bedeutung der SPSGEN-Parameter ist nun klar. Beispiel für einen Delta-Befehl zum Aufruf eines Makros:

.ADD SPSGEN, V188, BILDER = 3, E = 2, V, R

Dies bedeutet, daß ein Programmskelett für das Programm V188 zu generieren ist; das Programm soll drei Bilder liefern, im zweiten Bild ist eine Endlosübersicht vorgesehen; es soll ein anderes Programm (das zur Ausführungszeit bekanntgegeben wird) aufgerufen werden (V); dies Programm kann selbst aber auch von einem anderen Programm aufgerufen werden, muß also selbst die Rücksprungroutinen besitzen (R).

Masken - Definitionsunterstützung bieten heute bereits diverse Systeme (teilweise auch die TP-Monitore). Aus diesem Grunde soll hier nur kurz auf die verfügbaren Makros eingegangen werden.

Eine Masken-Layout-Funktion am Bildschirm ist noch nicht realisiert worden, da hierdurch der geringste Einsparungseffekt (gegenüber anderen Funktionen) erzielt werden würde.

Mit dem MAGEN-Makro werden alle Felder einer Bildschirmmaske definiert, und zwar geschützte wie ungeschützte, Konstanten, Variablen etc. Für jedes Feld ist eine Parameterzeile zu schreiben, die aus folgenden Einzelparametern besteht:

* Zeilen- und Spaltennummer;

* Darstellungsformat (Alpha, numerisch, "DM" = Betragsdarstellungen und weitere),

Stellen vor und nach dem Komma, Plus-/Minus-Darstellung,

Blank when Zero;

Ausgabeeigenschaft (Blinker oder blinkend und ähnliches), Eingabe-Eigenschaft (geschützt / ungeschützt),

wenn ungeschützt: ob alpha oder numerisch;

* Verarbeitungscode-Kennung, bei der das Bildschirmfeld die vorgenannte Eingabeeigenschaft besitzen soll;

* Name des Wohin-Feldes (bei ungeschützten Feldern);

* Name des Woher-Feldes (sofern variable Daten aus Datensätzen geholt werden sollen);

* Konstante/Formatierungszeichen oder Angabe von sonstigen Woher-Verweisen;

* Verarbeitungssode/Kennung für vorgenanntes Feld (bewirkt, daß beispielsweise nur bei VC = 1 die Formatierung gesendet wird). Beispiel:

.(1522,D092-B,BX,2,UMSATZ, UMSNET, 1 ,ALL"_")-

Neben dem eigentlichen MAGEN-Makro gibt es eine Reihe weiterer Makros; für ein Bild werden folgende Makros verwendet:

MAGEN = Beginn der Definition einer Maske,

MAGENT= Tabellendefinition (Wiederholung von Zeilen, so etwa bei Endlosübersichten),

MAGENF= Fortsetzung des Bildes nach der Tabellendefinition,

MAGENE= beendet die eigentliche Bilddefinition (generiert die Standard-Fußzeilen),

MAFEHL= mit diesem Makro werden die Fehlertexte dem System mitgeteilt; dieses Makro generiert die Fehler-Routinen.

Diese Makros stellen in Verbindung mit dem SPSGEN sicher, daß der Cobolcode für die TP-bezogenen Ein- und Ausgabedatenbereiche, die internen Zwischenspeicher für die Bildvariablen, den internen Datenfluß aus den Datensätzen in diese Zwischenspeicher und Datenbereiche und aus den Eingabebereichen zurück in die Zwischenspeicher und Datensätze vollautomatisch generiert werden.

Besonders ist bei den vielfältigen Möglichkeiten der oben erläuterten Steuerungen wichtig, daß nicht nur der richtige Baustein (beispielsweise bei Bildfolgen, Endloslisten, Verknüpfungen, Rücksprüngen) angesteuert wird, sondern daß dabei auch automatisch die richtigen Daten in den oben genannten Bereichen bereitstehen.

Darüber hinaus werden die Fehlermeldungen und Blinker automatisch gesendet, wenn der Programmierer die entsprechenden Fehlernummern oder feldbezogenen Fehlerkennzeichen in BxV1 oder BxV2 gesetzt hat.

Schlußbemerkung:

Wenn der Leser das Fazit ziehen kann, daß nicht nur drastisch reduzierte Zeiten bei der Programmierung von Bildschirmprogrammen erreichbar sind, sondern daß auch eine einheitliche Sprachregelung (wie bei der NP) und damit eine höhere Pflegefreundlichkeit erzielt wird, dann ist das Ziel diese Berichtes erreicht.