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
In der Natural/CICS-Source-Library
NCI.SRCEbefindet sich das Beispiel-MemberXNCI3GC1, das einen Standardaufruf für das Natural-SubprogrammMYPROGenthält.
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.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.