Einwickeln statt verschrotten oder migrieren

27.09.1996

Der Vortrag von Harry Sneed* über die Kapselung von Host-Software gehörte zu den Highlights der Devcon. Ein "Verschrotten" und Neuentwickeln von Altanwendungen käme eben in den meisten Fällen nicht in Frage. Sie ermögliche vorhandene Software weiter- und wiederzuverwenden.

Die Ummantelung vollzieht sich mit Hilfe eines Wrappers, einer Art Middleware zwischen einem Client- und einem Server-Objekt. Dabei ist die Altsoftware das Server-Objekt. Die Funktionen der Komponente stellen die Objektoperationen dar. Das Client-Objekt invokiert die Funktionen des Server-Objekts über ein genormtes Programm zur Schnittstelle. In einer Corba-konformen Umgebung wäre diese Schnittstelle in der Interface Definition Language (IDL) spezifiziert. Das Client-Programm muß nur wissen, wie die Schnittstellen aufzubauen, die Parameter versorgt sind und die Ereignisse interpretiert werden müssen. Dabei läßt sich Host-Software auf sechs verschiedenen Ebenen kapseln: auf der Job-, Transaktions-, Programm-, Modul-, Prozedur- und Dateiebene.

Auf der Jobebene wird ein Batch-Job auf dem Mainframe gestartet, nachdem die Eingabe- und Bewegungsdateien bereitgestellt wurden. Im Ergebnis übergibt der Host eine oder mehrere Ausgabedateien, etwa Listenfiles.

CICS- oder IMS-Transaktionen verlangen als Eingabe Masken und liefern auch Masken zurück. Beim Wrapping müssen sie durch Datenströme ersetzt werden. Für Batch- oder Online-Programme sind die entsprechenden Eingabedaten bereitzustellen. Die Ausgabedaten werden abgefangen über ein "Datenrohr" und an das entsprechende Client-Programm weitergeleitet. Auf der Modulebene muß das aufgerufene Unterprogramm mit den nötigen Eingangsparametern versorgt werden. Es kommen Ausgangsparameter oder Fehlercode zurück.

Laut Sneed ist das Kapseln von Prozeduren die eleganteste Methode. Allerdings führt sie zu einem vergleichsweise tiefen Eingriff in den Legacy-Code. Sind Zielprozeduren etwa mit "Go-to"-Verzweigungen verbunden, muß der Code erst so strukturiert werden, daß jede Prozedur nur einen Ein- und einen Ausgang besitzt. Danach ist es möglich, mit "Entry" und "Return" zu klammern. Zusätzlich müssen Linkage-Bereiche für jede Zielprozedur geschaffen werden.