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).