openUTM legt den KB an, wenn ein neuer Vorgang begonnen wird. Er bleibt solange erhalten, bis der Vorgang abgeschlossen ist. Sein Inhalt wird dem jeweils aktuell ausgeführten Programm übergeben. Der KB kann in seiner Größe den aktuell zu übergebenden Daten angepasst werden, d.h. er kann von Verarbeitungsschritt zu Verarbeitungsschritt wachsen oder auch wieder kleiner werden.
Am Anfang eines KB stehen zwei Bereiche fester Länge, die der Verständigung von openUTM mit dem Programm dienen:
der KB-Kopf
der KB-Rückgabebereich
Für die Strukturierung dieser Bereiche stehen Ihnen Sprach-spezifische Datenstrukturen zur Verfügung - für COBOL im COPY-Element KCKBC, für C/C++ in der Include-Datei kcca.h.
Im KB-Kopf finden Sie nach dem INIT-Aufruf und nach jedem weiteren Aufruf jeweils aktuelle Informationen über Vorgang, Teilprogramm und Kommunikationspartner.
Im KB-Rückgabebereich übergibt openUTM nach jedem Aufruf (außer PEND) seine Rückgabedaten an das Programm. Die Auswertung insbesondere des Returncodes gibt Aufschluss über die erfolgreiche oder gescheiterte Ausführung und kann darum zu entsprechenden Steuerungsmaßnahmen im Programm benutzt werden (siehe auch Abschnitt „Programmierung von Fehlerroutinen").
Ferner können Sie im KB einen Bereich variabler Länge definieren, den KB-Programmbereich, dessen Struktur Sie frei festlegen können. Während der KB-Kopf und der KB-Rückgabebereich immer vorhanden sind, ist die Verwendung des KB-Programmbereichs wahlfrei. Er dient zur Weitergabe und Sicherung Vorgangs-spezifischer Daten beliebiger Art.
Die Maximallänge dieses Bereichs wird bei der Generierung der Anwendung festgelegt (Operand KB in der MAX-Anweisung). Im Programm geben Sie beim INIT die Länge an, die das Programm aktuell erwartet. Sie darf nicht größer sein als der von Ihnen generierte Wert des Operanden KB. Beim Erreichen eines Sicherungspunktes wird der KB-Programmbereich in der beim INIT angegebenen Länge gesichert. Geben Sie deshalb bei jedem INIT-Aufruf den KB nur in der unbedingt benötigten Mindestlänge an, um das Sichern nicht benötigter Informationen zu vermeiden.
Wenn mehrere Programme mit verschieden langen KB-Programmbereichen einen Vorgang bearbeiten, dann können bei der Datenübergabe von Programm zu Programm Längenkonflikte entstehen. Ein Programm erhält die Daten immer in der Länge, die das Vorgängerprogramm beim INIT im Feld KCLKBPRG angegeben hat. Stellt das empfangende Programm längere Datenfelder bereit, dann ist der Rest undefiniert. Definiert das empfangende Programm einen kürzeren KB, erhält es trotzdem die Daten in der vollen Länge. Die Verkürzung wirkt sich erst bei der erneuten Weitergabe der Daten aus (siehe Bild auf der folgenden Seite).
Festlegbares Füllzeichen
Bei der Generierung einer UTM-Anwendung können Sie für diese Anwendung ein beliebiges Füllzeichen festlegen (im Operanden CLRCH der KDCDEF-Anweisung MAX). openUTM überschreibt dann den KB am Ende des Vorgangs mit diesem Füllzeichen. Nach dem Start des Anwendungsprogramms ist dieser Bereich in der generierten Länge mit dem festgelegten Zeichen vorbesetzt.
Diese Funktion ist für den Programmtest wichtig, weil im Ein-Prozess-Betrieb einige Fehler so besser entdeckt werden können; darüber hinaus kann sie zu Datenschutzzwecken verwendet werden.
Bild: KB-Programmbereich für Datenübergabe