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:
Die folgenden Themen werden behandelt: …
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.
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.
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.
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.
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:
..... 01 GROUP (1:2) 02 F1 02 F2 ..... ..... CALL ..... F1 F2 .....
..... 01 F1 (1:2) 01 F2 (1:2) .... ..... CALL ..... F1 F2 .....
Arrays mit dynamischen Bereichen können nicht als Parameter verwendet werden.
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:
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
XNCIFRCXin der Natural/CICS-Source-Library. Es startet Natural, legtLOGON YOURLIBauf den Stack und führt das ProgrammTSTCOBaus, 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 PROGRAMfür CICS.- Schritt 2: Installieren Sie den COBOL-Beispielaufruf
Provided in the Natural/CICS source library
NCI.SRCEis the sample memberXNCI3GC1, which contains a default call to the Natural subprogramMYPROG.In der Natural/CICS-Source-Library
NCI.SRCEbefindet sich das Beispiel-MemberXNCI3GC1, das einen Standardaufruf für das Natural-SubprogrammMYPROGenthält.
For test purposes, create the following program in the library
SYSTEMand stow it as:Erstellen Sie zu Testzwecken das folgende Programm in der Library
SYSTEMund speichern Sie es mit dem SystemkommandoSTOWals:WRITE 'BEFORE PGM EXECUTION' CALL 'COBNAT' WRITE 'AFTER PGM EXECUTION' ENDSehen Sie sich den
XNCI3GC1-Quellcode an und überprüfen Sie dieCALL- undLINK-Anweisungen. Kompilieren und verlinken Sie alsCOBNATmit den folgenden CICS-INCLUDE-Direktiven oder verwenden Sie Schritt 2 des Beispiel-JobsNCTI070: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
XNCI3GC1so eingerichtet, dass es das Natural-SubprogrammMYPROGin der LibraryYOURLIBaufruft. Das ProgrammTSTCOBstartet, wie oben erwähnt, den Prozess durch den Aufruf vonCOBNAT, das den eigentlichen Aufruf des Natural-SubprogrammsMYPROGenthält.
Create the subprogram
MYPROGto 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
NCII005als 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.
| 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.
|
| 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.
|
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
XNAT3GA1enthält ein grundsätzliches Beispiel für den Zugriff auf dieCALLNAT-Schnittstelle. Die Konventionen für den Registeraufruf finden sich im Quelltext dieses Programms.Verknüpfen Sie
NATXCALmitXNAT3GA1mit dem EinstiegspunktASMNAT.- Schritt 2: Starten der Natural-Sitzung
Starten Sie eine Natural-Sitzung, indem Sie ein Programm auf den Stack legen, das das Programm
ASMNATaufruft, das wiederum das Natural-SubprogrammASMNATaufruft.