Natural 3GL CALLNAT-Schnittstelle - Zweck, Voraussetzungen, Einschränkungen

Dieses Kapitel beschreibt den Zweck der 3GL CALLNAT-Schnittstelle sowie deren Voraussetzungen und Einschränkungen.

Die folgenden Themen werden behandelt:


Zweck der 3GL CALLNAT-Schnittstelle

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

Verfügbarkeit

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

Voraussetzungen

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.

Speicherplatzbedarf

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.

Verlinkung

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.

Abhängigkeiten von der 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:
  • wenn das 3GL-Modul entweder dynamisch geladen oder mit Natural verlinkt ist und dann durch eine Verzweigungs- und Verlinkungsanweisung aufgerufen wird (Batch, Com-plete, IMS TM, TSO, %P=S und %P=LS in CICS).

  • wenn das 3GL-Modul über die Option INTERFACE4 des CALL-Statement aufgerufen wird. Es stellt die Funktionen INTERFACE4 Natural Callnat Interface sowie die INTERFACE4 Callback zur Verfügung. Weitere Informationen zur INTERFACE4-Funktionalität finden Sie in der Dokumentation des CALL-Statement.

    Anmerkung
    Für CALL INTERFACE4-Zwecke kann NATXCAL nicht dynamisch geladen werden, sondern muss mit dem 3GL-Programm verlinkt werden.

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.

Einschränkungen

Beenden eines Natural-Subprogramms

Das aufgerufene Natural-Subprogramm sollte mit einer Rückkehr zum aufrufenden Programm beendet werden.

Unzulässige Natural-Statements

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

Übergabe von Parameterwerten durch das 3GL-Programm

Die vom 3GL-Programm übergebenen Parameterwerte dürfen sich nicht in einem schreibgeschützten Speicherbereich befinden.

Dynamische Arrays

Arrays mit dynamischen Bereichen sind nicht möglich.

TP-Monitor-spezifische Einschränkungen

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