%P=
|
Jedes %P=
-Kommando gilt nur für den nächsten
Aufruf und die CALL
-Optionen werden ohne Bedingung nach Rückkehr
von dem Aufruf zurückgesetzt.
Deshalb wird empfohlen, das %P=
-Kommando
unmittelbar vor dem betreffenden CALL
-Statement abzusetzen.
Wenn Sie die Natural CICS-Schnittstelle benutzen, können Sie mit den
Kommandos %P=S(C)
, %P=V
,
%P=C(C)
, %P=U
und
%P=UT
spezielle Optionen setzen, die nur dann
gelten, wenn unter CICS ein Natural-Programm (über ein
CALL
-Statement) ein Nicht-Natural-Programm aufruft. In allen
anderen Umgebungen werden diese Kommandos ignoriert.
Wenn Sie die Natural IMS/TM-Schnittstelle benutzen, können Sie mit dem
Kommando %P=I
spezielle Optionen setzen, die gelten,
wenn ein Natural-Programm (über ein CALL
-Statement) ein
Nicht-Natural-Programm aufruft. In allen anderen Umgebungen wird dieses
Kommando ignoriert.
Zu Einzelheiten über den Aufruf von Nicht-Natural-Programmen siehe
CALL
-Statement in der
Statements-Dokumentation.
Die folgenden Kommando-Optionen sind im folgenden beschrieben:
%P=SC — Standard-Linkage-Aufruf mit Simulation von EXEC CICS LINK
%P=UT — Separate Arbeitseinheit für aufgerufenes Programm, Transaktions-Backout tolerieren
Dieses Kommando gilt nur, wenn die Natural CICS-Schnittstelle benutzt wird.
Wenn ein Natural-Programm unter CICS ein Nicht-Natural-Programm aufruft,
geschieht der Aufruf normalerweise über eine EXEC CICS
LINK
-Anforderung.
Wenn für den Aufruf stattdessen Standard Linkage verwendet werden soll,
geben Sie das Terminalkommando %P=S
ein.
Voraussetzung ist, dass das aufgerufene Programm den
Standard-Linkage-Konventionen mit Standard-Registerverwendung entspricht.
Dieses Kommando gilt nur, wenn die Natural CICS-Schnittstelle benutzt wird.
Wenn ein Natural-Programm normalerweise ein Nicht-Natural-Programm unter
CICS aufruft, erfolgt der Aufruf über eine EXEC CICS
LINK
-Anforderung.
Wenn dieses Terminalkommando benutzt wird, ruft die Natural
CICS-Schnittstelle das Nicht-Natural-Programm mittels
Standard-Linkage-Konventionen auf, aber mit der Übergabe von Parametern, wie
dies ein CICS LINK
durchführt, d.h. Register 1 zeigt auf eine
Parameter-Liste mit Adressen von CICS EIB
und einer CICS
COMMAREA
.
Anmerkungen:
%P=SC
kann mit %P=C
kombiniert werden.
EXEC CICS RETURN
zum aufrufenden Programm zurückkehren.
Assembler-Programme müssen über einen DFHEIRET
-Macro-Aufruf
zurückkehren. COBOL-Programme müssen über ein GOBACK
-Statement
zurückkehren.
Dieses Kommando gilt nur in Natural-Umgebungen, in denen sich mehrere Sessions Threads in derselben Region teilen, beispielsweise Natural CICS-Schnittstelle oder Batch-Server-Umgebungen unter z/OS, z/VSE und BS2000/OSD.
Wenn ein Natural-Programm ein Nicht-Natural-Programm aufruft und das aufgerufene Programm im Dialog einen Terminal-I/O ausführt, ist der Natural-Thread normalerweise solange blockiert, bis der Benutzer eine Eingabe gemacht hat.
Mit %P=V
können Sie vermeiden, dass der
Natural-Thread blockiert ist: wenn Sie dieses Terminalkommando angeben, werden
die vom Natural-Programm an das aufgerufene Programm übergebenen Parameterdaten
aus dem Thread herauskopiert, und der Thread wird vor dem Aufruf
ausgespeichert. Der Thread steht dann für andere Benutzer zur Verfügung. Wenn
das aufgerufene Programm die Kontrolle wieder an das aufrufende
Natural-Programm zurückgibt, wird der Thread wieder eingespeichert, der
(modifizierte) Datenbereich wird in den Thread kopiert, und Natural setzt die
Verarbeitung fort.
Anmerkung:
Nur die im CALL
-Statement angegebenen
Parameter werden aus dem Thread heraus- und wieder hineinkopiert.
Dieses Kommando gilt nur, wenn die Natural CICS-Schnittstelle benutzt wird.
Ruft ein Natural-Programm unter CICS ein Nicht-Natural-Programm auf,
wird normalerweise die Adresse der CALL
-Statement-Parameteradressenliste
in der COMMAREA übergeben. Wenn Sie statt der Adresse der
Parameteradressenliste die Parameterwerte selbst in der COMMAREA
übergeben möchten, führen Sie vor dem Aufruf das Terminalkommando
%P=C
aus.
Dadurch ist zum Beispiel DPL für aufgerufene CICS-Programme möglich: der
Aufruf eines CICS-Programms, das sich in einer anderen CICS-Region befindet,
ist nur mit %P=C
möglich; denn da die
"aufgerufene" Region nicht auf Adressen in der
"aufrufenden" Region zugreifen kann, müssen stattdessen die
Parameterwerte übergeben werden.
Wenn %P=C
verwendet wird, werden keine
Parameter in der TWA übergeben, sondern nur Parameterwerte in der CICS
COMMAREA. Alle Parameter der CALL
-Parameterliste werden
unmittelbar aufeinanderfolgend kopiert, unabhängig von ihrer Ausrichtung. Die
sich daraus ergebende COMMAREA-Länge entspricht der Summe der einzelnen
Parameterlängen (was bei Bestimmung der Anzahl der zu übergebenden
Array-Ausprägungen zu berücksichtigen ist). Bei der Rückkehr vom aufgerufenen
Programm werden die Parameter zurückkopiert.
Wenn sich überlappende Felder übergeben werden oder dasselbe Feld mehrmals übergeben wird, sollten diese Felder für das aufgerufene Programm schreibgeschützt werden; andernfalls kann es bei der Rückgabe von Parameterwerten an das aufrufende Programm zu unvorhersehbaren Ergebnissen kommen.
Bei %P=C
gilt die Einschränkung, dass
Gruppen-Arrays nicht übergeben werden können:
01 #GROUP (2) 02 #FIELD1 (A1) 02 #FIELD2 (P7)
Übergeben Sie sie entweder als einzelne Arrays:
01 #GROUP 02 #FIELD1 (A1/2) 02 #FIELD2 (P7/2)
Oder redefinieren Sie sie:
01 #GROUP 01 REDEFINE #GROUP 02 #ARRAY (A1/10)
und geben den Array-Namen im CALL
-Statement an.
Anmerkungen:
%P=S
und
%P=C
ausführen, wird %P=C
ignoriert.
NCIPARM
-Parameter
CNTCALL
wird auf YES
gesetzt, es wird statt eines CICS-Containers eine
COMMAREA übergeben, wenn die Datenlänge des Parameterwertes 32 KB
überschreitet; für diese Funktionalität ist der CICS Transaction Server for
z/OS ab Version 3.1 erforderlich.
Dieses Kommando gilt nur, wenn die Natural CICS-Schnittstelle benutzt wird.
Für diese Funktionalität ist der CICS Transaction Server for z/OS ab Version 3.1 erforderlich.
Der Unterschied zwischen %P=C
und
%P=CC
ist der, dass die Parameterwerte sofort in
einem CICS-Container übergeben werden. Alle Einschränkungen gelten noch, außer
der Längenbegrenzung von 32 KB.
Dieses Kommando gilt nur, wenn bei der Installation von Natural die Option zur Unterstützung von IBM Language Environment (LE)-Aufrufkonventionen gesetzt wurde.
Dieses Kommando bewirkt, dass nach dem Aufruf eines dynamischen Hauptprogramms LE die Kontrolle wieder an Natural zurückgegeben wird.
Wenn ein dynamisches Hauptprogramm LE aufgerufen wird, wird
standardmäßig die Kontrolle nach Ausführung des aufgerufenen Programms nicht an
Natural zurückgegeben. Damit nach der Ausführung des aufgerufenen Programms die
Kontrolle an Natural zurückgegeben wird, müssen Sie vor dem Programmaufruf
%P=L
verwenden.
Informationen zur Unterstützung von LE-Aufrufkonventionen finden Sie im Abschnitt LE Subprograms in der Operations-Dokumentation.
Anmerkung:
Unter CICS sind %P=L
und
%P=LS
gleichwertig, da LE-Hauptprogramme nicht
unterstützt werden.
Dieses Kommando gilt nur, wenn bei der Installation von Natural die Option zur Unterstützung von IBM Language Environment (LE)-Aufrufkonventionen gesetzt wurde.
Dieses Kommando bewirkt, dass ein dynamisches oder statisches Nicht-Natural-Programm mittels LE-Aufrufkonventionen aufgerufen wird, d.h. über Standard-Linkage-Konventionen mit dem Register 12, das die Adresse der LE CAA enthält.
Informationen zur Unterstützung von LE-Aufrufkonventionen finden Sie im Abschnitt LE Subprograms in der Operations-Dokumentation.
Dieses Kommando gilt nur, wenn die Natural IMS/TM-Schnittstelle benutzt wird.
%P=I
zeigt Natural an, dass PCB-Adressen an
das 3GL-Programm im folgenden CALL
-Statement übergeben werden
sollen. Da es nicht möglich ist, die Adresse einer PCB von Natural an das
3GL-Programm direkt zu übergeben, wird eine spezielle Konvention benutzt, um
Natural anzuzeigen, dass an das 3GL-Programm übergebene Parameter entweder die
Position oder den Namen einer PCB enthalten können. Für Felder, die diese
Konvention erfüllen, übergibt Natural die Adresse der PCB an das aufgerufene
3GL-Programm anstatt der Adresse des angegebenen Parameters.
Nur skalare Felder des Formats A8 oder A12 werden auf eine PCB-Spezifikation abgeprüft. Die Felder, die eine PCB-Spezifikation enthalten, müssen die folgenden Konventionen erfüllen:
Ein A8-Feld muss die Zeichenkette
'PCB=nnnn'
enthalten, wobei nnnn eine
vierstellige Ziffer ist, die die Position der PCB in der PSB-Adressenliste
darstellt.
Ein A12-Feld muss die Zeichenkette
'PCB=name'
enthalten, wobei
name der acht Zeichen umfassende Name für eine PCB
ist, der mit dem NIMLPCB
-Makro
im Verlauf der Installation der Natural IMS/TM-Schnittstelle definiert
wurde.
Beispiel:
Nach Ausführung von %P=I
werden für das
Statement
CALL 'MY3GL' USING 'PCB=MYPCB ' 'PCB=0004' PARAM
die folgenden Parameter an das 3GL-Programm MY3GL
übergeben:
Adresse der PCB mit dem Namen MYPCB
, wie mit dem Makro
NIMLPCB
angegeben,
Adresse der vierten PCB in der PSB-Adressenliste,
Adresse des Natural-Feldes PARAM
.
Die folgenden Returncodes werden von der Systemfunktion RET
zurückgegeben, wenn die PCB-Spezifikation ungültig ist:
Return Code | Erläuterung |
---|---|
-4 | Der angegebene Wert nnnn für das
Format ‘PCB=nnnn’ ist nicht
numerisch.
|
-8 | Der angegebene PCB-Name wurde nicht mit dem Makro
NIMLPCB
definiert.
|
-12 | Die angegebene PCB mit der Position nnnn ist in der PSB-Adressenliste nicht vorhanden. |
Dieses Kommando gilt nur, wenn die Natural CICS-Schnittstelle benutzt wird.
Dieses Kommando gibt an, dass ein über DPL aufgerufenes CICS-Programm
seine eigene Arbeitseinheit hat, die bei der Rückkehr zu Natural bestätigt
wird, d.h. vom aufgerufenen Programm vorgenommene Änderungen an
wiederherstellbaren Ressourcen werden bestätigt oder wieder eingespeichert,
unabhängig von Änderungen an wiederherstellbaren Ressourcen, die Natural
vorgenommen hat. In der Sprache von CICS ausgedrückt: Dieses Kommando bewirkt
ein EXEC CICS LINK
mit der SYNCONRETURN
-Option.
Dieses Kommando hat fast dieselbe Bedeutung wie das Kommando
%P=U
, jedoch mit einer Ausnahme:
Bei %P=U
führen bei der Rückkehr von dem
aufgerufenen Programm alle CICS-Bedingungen, außer NORMAL
, zu
einer Natural-Fehlermeldung NAT0920, wobei der Reason Code der Response Code
des EXEC CICS LINK
-Befehls ist.
Bei %P=UT
führt ein CICS
ROLLEDBACK
Response Code nicht zu einem Fehler, sondern wird toleriert
und wie eine NORMAL
-Bedingung behandelt.