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

#### Search Results

Search

# 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

- Voraussetzungen

- Einschränkungen

## 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

- Verlinkung

- Abhängigkeiten von der Umgebung

### 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 Installing the Natural CICS Interface on z/OS in der Installation-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).

### On this page

- Zweck der 3GL CALLNAT-Schnittstelle
- Voraussetzungen
- Einschränkungen