Dieses Kapitel beschreibt den Zweck der 3GL CALLNAT-Schnittstelle sowie deren Voraussetzungen und Einschränkungen.
Die folgenden Themen werden behandelt:
Über die 3GL CALLNAT-Schnittstelle von Natural können 3GL-Programme Natural-Unterprogramme aufrufen und ausführen.
Die 3GL kann eine beliebige Programmiersprache sein, die die Standard-Linkage-Call-Schnittstelle unterstützt. In den meisten Fällen wird es sich um ein COBOL-Programm handeln, aber die Funktionalität kann auch von PL/1-, FORTRAN-, C- oder Assembler-Programmen genutzt werden.
Die Schnittstelle ist im Batch-Modus unter z/OS und für die folgenden TP-Monitor-Umgebungen verfügbar:
CICS
Com-plete
IMS TM
TSO
In diesem Abschnitt werden die Voraussetzungen für die Ausführung eines
Natural-Subprogramms aus einem 3GL-Programm heraus unter Verwendung eines internen
CALLNAT-Statements
beschrieben. Um die gewünschte Funktionalität zu verwirklichen, muss eine Natural-Umgebung
eingerichtet werden, bevor Sie die CALLNAT-Schnittstelle aus Ihrem
3GL-Programm heraus ausführen.
Der Ansatz der Parameteradressierung in einem Natural-Programm setzt voraus, dass sich
die übergebenen Parameter in einem von Natural zugewiesenen Bereich befinden, d.h. in
einer seiner Größen. Das 3GL-Programm hingegen weist den Speicher für seine Variablen
irgendwo im Adressraum des Tasks zu. Um die Adressierung dennoch erfolgreich zu
gestalten, wird ein Call-by-Value-Verfahren für diejenigen Variablen verwendet, die sich
nicht bereits in einem Natural-Bereich befinden. Das bedeutet, dass vor dem Aufruf des
Natural-Subprogramms die zu übergebenden Parameter in einen Natural-Bereich, nämlich den
DATSIZE Buffer, übertragen werden.
Neben dem Speicher für den Inhalt der Variablen wird je nach Anzahl der Parameter
zusätzlicher Speicherplatz benötigt. Der gesamte Platzbedarf entspricht in etwa dem
Platz, der im DATSIZE Buffer benötigt würde, wenn das Programm, das das
Unterprogramm aufruft, in Natural kodiert wäre.
Um das Natural-Subprogramm aufzurufen, muss das 3GL-Programm die
CALLNAT-Schnittstelle aufrufen. Je nach Leistungsfähigkeit und
Funktionalität der Aufrufschnittstelle der 3GL-Programmiersprache kann die
CALLNAT-Schnittstelle entweder in einer zugänglichen Load Library zum
dynamischen Laden untergebracht oder mit dem 3GL-Programm verlinkt werden.
Es wird empfohlen, die CALLNAT-Schnittstelle, wann immer möglich,
dynamisch aus einer Natural-Steplib zu laden, da diese Methode sicherstellt, dass immer
die neueste Version des Programms verwendet wird.
Die Beispiele XNATGC2 und XNATGCP2 sollen die Technik des
dynamischen Ladens und Aufrufens der CALLNAT-Schnittstelle aus COBOL bzw.
PL/I verdeutlichen.
Anmerkung
Erkundigen Sie sich bei dem zuständigen Systemprogrammierer nach der besten Lösung
in Ihrer Umgebung.
Das fremde 3GL-Modul kann entweder als CSTATIC-Modul mit Natural verlinkt
und dann über eine Verzweigungs- und Verlinkungsanweisung aufgerufen werden, oder
dynamisch geladen und über eine TP-abhängige Link-Methode aufgerufen werden.
Im letzteren Fall wird das 3GL-Modul TP-spezifisch geschrieben und die
CALLNAT-Schnittstelle muss entsprechend angepasst werden. Zu diesem Zweck
werden mehrere TP-spezifische Schnittstellenmodule bereitgestellt:
| Schnittstellenmodul | Zweck |
|---|---|
NATXCAL
|
Zu verwenden in den folgenden Fällen:
|
NCIXCALL
|
Ist in einer CICS-Umgebung zu verwenden, wenn das 3GL-Modul mit EXEC
CICS LINK aufgerufen wurde. NCIXCALL wird im Quellcode
geliefert, der mit Ihren CICS-Makros zu kompilieren ist. Siehe auch Natural
CICS-Schnittstelle auf z/OS installieren in der
Installation für z/OS-Dokumentation.
|
NCIXCPRM
|
Ist in einer CICS-Umgebung zu verwenden, um die Parameteradressenliste zu
erstellen, die als COMMAREA für das nachfolgende EXEC CICS
LINK-Kommando verwendet wird.
|
Das aufgerufene Natural-Subprogramm sollte mit einer Rückkehr zum aufrufenden Programm beendet werden.
Die folgenden Statements dürfen nicht verwendet werden.
FETCH
RUN
STOP
TERMINATE
Wenn sie in dem aufgerufenen Natural-Subprogramm verwendet werden, führen sie zu einem entsprechenden Natural-Laufzeitfehler (NAT0967).
Die vom 3GL-Programm übergebenen Parameterwerte dürfen sich nicht in einem schreibgeschützten Speicherbereich befinden.
Arrays mit dynamischen Bereichen sind nicht möglich.
Unter CICS
In CICS-Umgebungen muss das 3GL-Programm, das die Natural 3GL CALLNAT-Schnittstelle
benutzt, für den Conversational Mode geschrieben sein. Das 3GL-Programm läuft auf
der zweiten CICS-Programmebene. Daher kann die pseudo-konversationelle
Programmtechnik nicht verwendet werden.
Unter IMS TM
In IMS TM-Umgebungen, in denen Natural läuft, kann die 3GL CALLNAT-Schnittstelle
nur verwendet werden, wenn sowohl das 3GL-Programm als auch das Natural-Subprogramm
keine Terminal-E/A ausgeben. Wenn die Statements DISPLAY, INPUT und WRITE in dem aufgerufenen Natural-Subprogramm verwendet
werden, führen sie zu einem entsprechenden Natural-Laufzeitfehler (NAT0967).