Natural 3GL CALLNAT-Schnittstelle - Verwendung, Beispiele

#### Search Results

Search

# Natural 3GL CALLNAT-Schnittstelle - Verwendung, Beispiele

Dieses Kapitel beschreibt die Verwendung der 3GL CALLNAT-Schnittstelle und enthält eine Reihe von Beispielen für 3GL CALLNAT-Umgebungen.

Die folgenden Themen werden behandelt:

- Verwendung

- Beispielumgebungen

## Verwendung

Die folgenden Themen werden behandelt: …

- Übersicht

- Call-Struktur

- Behandlung von Parametern

### Übersicht

Wenn Sie ein Natural-Subprogramm aus einem 3GL-Programm aufrufen, muss eine Natural-Sitzung aktiv sein, d.h. das 3GL-Programm selbst muss von Natural aufgerufen werden.

Daher müssen Sie besondere Vorkehrungen treffen, wenn Sie nicht wollen, dass die Natural-Schicht in Erscheinung tritt. Die folgende Abbildung soll Ihnen einen Überblick darüber geben, wie eine Anwendung, die die Natural-3GL-CALLNAT-Schnittstelle verwendet, in einem solchen Fall gestaltet werden kann:

Die erforderliche Umgebung wird zunächst durch den Aufruf eines Natural-Startup-Programms geschaffen. Mit Hilfe des Natural-Statements `CALL` kann dieses Startup-Programm dann ein 3GL-Programm aufrufen, von dem aus Sie die `CALLNAT`-Schnittstelle aufrufen können.

### Call-Struktur

Das Natural-Hauptprogramm ist sehr einfach. Es ruft z.B. nur ein COBOL-Programm auf:

    .....
    CALL 'COBPGM'
    END
    .....

Das `CALL`-Statement der 3GL-Programmiersprache (z.B. COBOL) muss Zugriff auf die Natural-3GL-CALLNAT-Schnittstelle haben, die dann das Natural-Subprogramm aufruft:

    .....
    CALL 'interface' USING natpgm p1 ... pn
    .....

Die Parameter ist `interface` umgebungsabhängig (z.B. `NATXCAL`) und mit dem aufrufenden Programm verlinkt. Der Parameter `natpgm` muss eine alphanumerische Variable von 8 Bytes sein, die den Namen des aufzurufenden Natural-Subprogramms enthält. Die Parameter `p1 ... pn` werden an das Natural-Subprogramm übergeben.

#### Beispiel (für alle Umgebungen außer CICS):

Das COBOL-Programm `COBPGM` könnte ein Coding ähnlich dem folgenden enthalten:

    .....
    MOVE 'FINDNPGM' TO natpgm
    CALL 'interface' USING natpgm number name
    IF natpgm NE 'FINDNPGM'
    THEN GOTO error_handling_1
    .....

Das aufgerufene Natural-Subprogramm `FINDNPGM` errechnet die Anzahl der Personen in der Datei `EMPLOYEES`, deren Name dem vom COBOL-Programm übergebenen Wert entspricht:

    DEFINE DATA
    PARAMETER
    1 pnumber (P10)
    1 pname (A20)
    LOCAL
    1 emp VIEW OF employees
    END-DEFINE
    *
    RESET presp
    FIND NUMBER emp WITH name=pname
    MOVE *NUMBER TO pnumber
    ESCAPE ROUTINE

Tritt bei der Ausführung des Subprogramms ein Fehler auf, werden Informationen über diesen Fehler in der Variablen `natpgm` in der Form `*NATnnnn` zurückgegeben, wobei `nnnn` die entsprechende Natural-Fehlernummer ist.

#### Beispiel (nur für CICS):

Unter CICS sollte der Aufruf eines Natural-Subprogramms aus z. B. COBOL wie folgt aussehen:

    ...
    WORKING STORAGE SECTION
    ...
    01 PARM-LIST PIC X(132).
    01 NATPGM PIC X(8).
    01 NUMBER PIC 9(10) comp-3.
    01 NAME PIC X(20).
    ...
    PROCEDURE DIVISION
    ...
    MOVE 'FINDNPGM' TO NATPGM
    CALL 'NCIXCPRM' USING PARM-LIST NATPGM NUMBER NAME ...
    EXEC CICS LINK PROGRAM('NCIXCALL')
    COMMAREA(PARM-LIST) LENGTH(132) END-EXEC.
    ...

Das aufgerufene Subprogramm `NCIXCPRM` baut die Parameteradressenliste auf, die als `COMMAREA` im nachfolgenden `EXEC CICS LINK`-Kommando verwendet wird.

### Behandlung von Parametern

Es erfolgt keine Überprüfung von Format und Länge. Es liegt in der Verantwortung des Aufrufers, eine korrekte Parameterliste zu übergeben. Die Anzahl, das Format und die Länge der Parameter werden durch das aufgerufene Natural-Subprogramm definiert.

Bei der Übergabe von Parametern sollten keine Gruppen-Arrays übergeben werden, da sie als einzelne Arrays aufgelöst werden:

#### Beispiel für eine ungültige Syntax:

    .....
    01 GROUP (1:2)
    02 F1
    02 F2
    .....
    .....
    CALL ..... F1 F2
    .....

#### Beispiel für eine gültige Syntax:

    .....
    01 F1 (1:2)
    01 F2 (1:2)
    ....
    .....
    CALL ..... F1 F2
    .....

Arrays mit dynamischen Bereichen können nicht als Parameter verwendet werden.

## Beispielumgebungen

Das Ziel der folgenden 3GL-CALLNAT-Beispielumgebungen ist es, zu demonstrieren, wie eine COBOL-Routine ein Natural-Subprogramm unter bestimmten TP-Monitor-Systemen oder im Batch-Modus aufrufen kann, und systemspezifische Anweisungen zur Erstellung solcher Umgebungen zu geben.

Die folgenden Themen werden behandelt:

- Beispielumgebung für CICS

- Weitere Beispiele

- Beispiel für beliebige andere unterstützte Umgebungen

### Beispielumgebung für CICS

Führen Sie die folgenden Schritte aus, um eine Natural 3GL CALLNAT-Beispielumgebung unter CICS zu erstellen:

> Schritt 1: Anlegen der Umgebungsinitialisierung

>   - Nehmen Sie das Front-End-Programm in Betrieb, das die 3GL-CALLNAT-Umgebung initialisiert.

>   - Verwenden Sie das COBOL-Frontend `XNCIFRCX` in der Natural/CICS-Source-Library. Es startet Natural, legt `LOGON YOURLIB` auf den Stack und führt das Programm `TSTCOB` aus, das die Natural-3GL-CALLNAT-Umgebung initialisiert.

>   - Suchen Sie die Zeichenkette `NCvr` (wobei vr für die jeweilige Produktversion steht) im Quellcode und ersetzen Sie sie durch die gültige Transaktionskennung (ID) für Natural.

>   - Kompilieren und verlinken Sie das COBOL-Programm und definieren Sie das Programm über `CEDA DEFINE PROGRAM` für CICS.

> Schritt 2: Installieren Sie den COBOL-Beispielaufruf

>   Provided in the Natural/CICS source library `NCI.SRCE` is the sample member `XNCI3GC1`, which contains a default call to the Natural subprogram `MYPROG`.

>   In der Natural/CICS-Source-Library `NCI.SRCE` befindet sich das Beispiel-Member `XNCI3GC1`, das einen Standardaufruf für das Natural-Subprogramm `MYPROG` enthält.

>   - For test purposes, create the following program in the library `SYSTEM` and stow it as:

>     Erstellen Sie zu Testzwecken das folgende Programm in der Library `SYSTEM` und speichern Sie es mit dem Systemkommando `STOW` als:

>         WRITE 'BEFORE PGM EXECUTION'
>         CALL 'COBNAT'
>         WRITE 'AFTER PGM EXECUTION'
>         END

>   - Sehen Sie sich den `XNCI3GC1`-Quellcode an und überprüfen Sie die `CALL`- und `LINK`-Anweisungen. Kompilieren und verlinken Sie als `COBNAT` mit den folgenden CICS-INCLUDE-Direktiven oder verwenden Sie Schritt 2 des Beispiel-Jobs `NCTI070`:

>         INCLUDE CICSLIB(DFHECI)
>         INCLUDE XNCI3GC1                    <= output from translator and compiler
>         INCLUDE NCILIB(NCIXCPRM)
>         ENTRY XNCI3GC1
>         NAME COBNAT(R)

> Schritt 3: Erstellen eines Beispiels für ein Natural-Subprogramm

>   Standardmäßig ist das Source Member `XNCI3GC1` so eingerichtet, dass es das Natural-Subprogramm `MYPROG` in der Library `YOURLIB` aufruft. Das Programm `TSTCOB` startet, wie oben erwähnt, den Prozess durch den Aufruf von `COBNAT`, das den eigentlichen Aufruf des Natural-Subprogramms `MYPROG` enthält.

>   - Create the subprogram `MYPROG` to demonstrate the executing Natural subprogram.

>     Erstellen Sie das Subprogramm `MYPROG`, um das ausführende Natural-Subprogramm zu demonstrieren.

>         DEFINE DATA PARAMETER
>           01 PARM1 (A18)
>           01 PARM2 (A18)
>           01 PARM3 (A18)
>         END-DEFINE
>         *
>           MOVE 'PARAM01' TO PARM1
>           MOVE 'PARAM02' TO PARM2
>           MOVE 'PARAM03' TO PARM3
>         END

> Schritt 4: Überprüfen der CICS-Ressourcen

>   - Verwenden Sie den Job `NCII005` als Richtlinie für die Definition der CICS-Ressourcen (PPT und PCT).

>   - Definieren Sie die erforderlichen CICS-Ressourcen (PPT und PCT).

> Schritt 5: Testen der Umgebung

>   Testen Sie die Umgebung, indem Sie die NCYC-Standardtransaktion verwenden. Verwenden Sie CEDF, um die Programmsteuerung zu überwachen und die dabei verwendeten Datenbereiche zu beobachten.

>   Wichtig
>   Da Natural an der Spitze der CICS-Programmhierarchie steht, muss jedes COBOL-Subprogramm, das Terminal-Ein-/Ausgaben ausgibt, im Conversational Mode laufen. Pseudokonversationsprogramme müssten geändert werden, und jede Neuentwicklung, die die Natural-3GL-CALLNAT-Schnittstelle verwendet, sollte im Konversationsmodus erfolgen.

### Weitere Beispiele

Beispiel-Programm | Beispiele
--- | ---
`XNCI3GC2` | COBOL-Beispiel mit der gleichen Funktionalität wie `XNCI3GC1`, aber mit der Übernahme von Parametern aus dem aufrufenden Natural-Programm.
`XNCI3GP1` | PL/I-Beispiel mit der gleichen Funktionalität wie COBOL-Beispiel `XNCI3GC1`.
`XNCI3GP2` | PL/I-Beispiel mit der gleichen Funktionalität wie `XNCI3GC1`, aber mit der Übernahme von Parametern aus dem aufrufenden Natural-Programm.

#### Weitere Nicht-CICS-Beispiele

Beispiel-Programm | Beispiele
--- | ---
`XNAT3GC2` | COBOL-Beispiel mit der gleichen Funktionalität wie das CICS-Beispiel `XNCI3GC2`.
`XNAT3GP2` | PL/I-Beispiel mit der gleichen Funktionalität wie das CICS-Beispiel `XNCI3GP2`.

### Beispiel für beliebige andere unterstützte Umgebungen

Führen Sie die folgenden Schritte aus, um ein Beispiel für Natural 3GL CALLNAT zu erstellen:

> Schritt 1: Assemblieren und Verknüpfen von ASMNAT

>   Die Beispiel-Assembler-Routine `XNAT3GA1` enthält ein grundsätzliches Beispiel für den Zugriff auf die `CALLNAT`-Schnittstelle. Die Konventionen für den Registeraufruf finden sich im Quelltext dieses Programms.

>   Verknüpfen Sie `NATXCAL` mit `XNAT3GA1` mit dem Einstiegspunkt `ASMNAT`.

> Schritt 2: Starten der Natural-Sitzung

>   Starten Sie eine Natural-Sitzung, indem Sie ein Programm auf den Stack legen, das das Programm `ASMNAT` aufruft, das wiederum das Natural-Subprogramm `ASMNAT` aufruft.

### On this page

- Verwendung
- Beispielumgebungen