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

Die folgenden Themen werden behandelt: …

Ü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

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