Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Aufbau und Einsatz von UTM-Programmen

In diesem Kapitel erhalten Sie einen ersten Überblick über die Programmierung von UTM-Anwendungen. Sie erfahren, was Vorgänge und Teilprogramme sind und wie Sie die Konzepte von openUTM einsetzen können, um die Geschäftslogik Ihrer Anwendung zu realisieren.

Eine UTM-Anwendung stellt ihren Benutzern bestimmte Services zur Verfügung: Sie erledigt Service-Requests (Aufträge), die von Terminal-Benutzern, Client-Programmen oder von anderen Anwendungen an sie gestellt werden.

Ein Vorgang, der auch Service genannt wird, dient der Bearbeitung eines Auftrags an eine UTM-Anwendung. Er setzt sich aus einer oder mehreren Transaktionen und einem oder mehreren Programmläufen zusammen. openUTM unterscheidet dabei zwischen Dialog-Vorgängen und Asynchron-Vorgängen. Ein UTM-Vorgang entspricht im allgemeinen einem Geschäftsvorfall der Anwendungslogik.

Bei der Erstellung einer Anwendung programmieren Sie die Geschäftslogik Ihrer Anwendung in der Form von Teilprogrammen, die auch Service-Routinen genannt werden. Die Teilprogramme laufen als Unterprogramme und unter Kontrolle der Main Routine einer UTM-Anwendung; die Main Routine ist Bestandteil des Systemcodes von openUTM.

Mit der in den Teilprogrammen realisierten Geschäftslogik legen Sie die Leistung der Services fest, die Sie den Benutzern Ihrer Anwendung zur Verfügung stellen wollen. Die Teilprogramme können Sie in einer der gängigen Programmiersprachen (C, C++, COBOL, u.a.) erstellen.

Aus den Teilprogrammen können Sie auf UTM-Systemfunktionen und externe Resource Manager wie z.B. Datenbanken zugreifen. Die Teilprogramme nutzen die UTM-Systemfunktionen durch integrierte UTM-Aufrufe, z.B. zur Transaktionssicherung oder zum Senden von Nachrichten an Kommunikationspartner.

Für diese UTM-Aufrufe können Sie verschiedene Schnittstellen verwenden: neben der in diesem Handbuch beschriebenen KDCS-Schnittstelle stehen Ihnen auch die X/Open-Schnittstellen CPI-C, XATMI und TX zur Verfügung (siehe openUTM-Handbuch „Anwendungen erstellen mit X/Open-Schnittstellen“).

Zusätzlich stellt Ihnen openUTM mit der Programm-Schnittstelle UTM-HTTP noch Funktionen zur Verfügung, die Sie bei der Kommunikation mit HTTP-Clients verwenden können. Diese sind im Kapitel „UTM-HTTP-Aufrufe" beschrieben. 

Charakteristika der KDCS-Schnittstelle

Die Schnittstelle KDCS (Kompatibles Datenkommunikationssystem) wurde als herstellerneutrale Schnittstelle für transaktionsorientierte Anwendungen definiert und genormt (DIN 66 265). openUTM unterstützt den vollen Umfang dieser Norm und bietet darüber hinaus wesentliche Erweiterungen, z.B. für die verteilte Verarbeitung. Einen Überblick über die Erweiterungen gibt die Tabelle in Kapitel "Übersicht über alle KDCS-Aufrufe".

KDCS zeichnet sich durch folgende Charakteristika aus:

  • umfassende Palette von Funktionsaufrufen für universalen Einsatz
    (z.B. auch für Pseudo Conversations, Message Queuing oder die unmittelbare Kommunikation mit Terminals)

  • KDCS-spezifische Speicherbereiche für einfache und sichere Programmierung

  • Event-Funktionen für Ereignissteuerung

KDCS steht für die Programmiersprachen C, C++ und COBOL zur Verfügung; auf BS2000-Systemen zusätzlich für Assembler, Fortran, PL/I und Pascal-XT.

 UTM-Anwendungsprogramm - UTM-Anwendung

Ein UTM-Anwendungsprogramm besteht aus der UTM-Main Routine KDCROOT und den UTM-Teilprogrammen.

Die Main Routine KDCROOT steuert als Teil des UTM-Systemcodes den Ablauf der Anwendung. Sie wird beim Generieren der Anwendung erzeugt
(siehe openUTM-Handbuch „Anwendungen generieren“).

Damit die UTM-Teilprogramme unter dem Management von openUTM ablaufen können, binden Sie die übersetzten Service-Routinen, zusammen mit weiteren Modulen (Zuordnungstabellen, Meldungen, benutzte Bibliotheken etc.) und der Main Routine KDCROOT zum UTM-Anwendungsprogramm (siehe openUTM-Handbuch „Einsatz von UTM-Anwendungen auf BS2000-Systemen“ und openUTM-Handbuch „Einsatz von UTM-Anwendungen auf Unix-, Linux- und Windows-Systemen“).
Das Binden kann statisch (d.h. vor dem Start der Anwendung) oder dynamisch (d.h. beim Start oder während des Betriebs der Anwendung) erfolgen.

Beim Start der UTM-Anwendung wird das UTM-Anwendungsprogramm in einer von Ihnen festgelegten Anzahl von Prozessen gestartet. Technisch gesehen ist eine UTM-Anwendung also eine Prozessgruppe, die zur Laufzeit eine logische Server-Einheit bildet.

Bild: Main Routine KDCROOT und mehrere Teilprogramme

Die Zusammenarbeit zwischen den Teilprogrammen und der Main Routine KDCROOT ist über KDCS-Aufrufe realisiert. Mit KDCS-Aufrufen in einem Teilprogramm teilen Sie der Main Routine KDCROOT mit, welche Funktion openUTM ausführen soll. Die hierfür notwendigen Angaben machen Sie im KDCS-Parameterbereich, dessen Adresse Sie bei jedem KDCS-Aufruf als ersten Parameter übergeben.

Für die Strukturierung des KDCS-Parameterbereichs stehen Ihnen vordefinierte Sprachspezifische Datenstrukturen zur Verfügung, für COBOL im COPY-Element KCPAC, für C/C++ in der Include-Datei kcmac.h. Wie Sie diesen Bereich für die einzelnen KDCS-Aufrufe jeweils versorgen müssen, ist in sprachunabhängiger Form im Kapitel „KDCS-Aufrufe" beschrieben. Die Sprach-spezifischen Besonderheiten finden Sie in den Kapiteln „Ergänzungen für C/C++" und „Ergänzungen für COBOL".

In den folgenden Abschnitten erfahren Sie, welche Möglichkeiten es gibt, ein Anwendungsprogramm zu strukturieren.

Wenn in diesem Kapitel von "Programm" oder "Teilprogramm" die Rede ist, so ist damit der Ablauf dieses Teilprogramms gemeint und nicht der Programmtext. Wenn z.B. von der "Reihenfolge der Aufrufe in einem Teilprogramm" gesprochen wird, so ist dies die Reihenfolge, in der diese Aufrufe durchlaufen werden und nicht die Reihenfolge, in der diese Aufrufe im Quellprogramm stehen. Dieser Ablauf wird auch Teilprogrammlauf genannt.