%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.
Anmerkung:
Um die CALL
-Optionen dauerhaft zu setzen, können Sie
den Profilparameter PGP
bzw. das
Parametermakro NTPGP
benutzen.
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=SQ - Standard Linkage for Call of Quasi-Reentrant Subprograms
%P=UT — Separate Arbeitseinheit für aufgerufenes Programm, Transaktions-Backout tolerieren
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
als auch %P=C
ausführen, wird %P=C
ignoriert.
NCIPARM
-Parameter
CNTCALL
auf YES
oder wenn
CNTCALL
im Macro NTCICSP
auf
ON
(abhängig von der Version des installierten Natural CICS
Interface) gesetzt, ist, wird ein CICS-Container statt einer COMMAREA
übergeben, wenn die Datenlänge des Parameterwertes 32 KB überschreitet.
IF
LENGTH OF DFHCOMMAREA GREATER THAN EIBCALEN …
(in COBOL) oder IF
SIZE (DFHCOMMAREA) > EIBCALEN …
(in PL/1).
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 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 NTIMSPT
-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 NTIMSPT
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
NTIMSPT
definiert.
|
-12 | Die angegebene PCB mit der Position nnnn ist in der PSB-Adressenliste nicht vorhanden. |
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 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, wenn die Natural CICS-Schnittstelle benutzt wird und wenn die bei Ihnen installierte Natural CICS Interface-Version dieses Kommando unterstützt.
Dieses Kommando gilt nicht, wenn ein aufgerufenes
Nicht-Natural-Subprogramm in Natural mit dem Profilparameter
CSTATIC
oder RCA
definiert ist.
%P=SQ
entspricht funktional dem
Terminalkommando %P=S
.
Wenn Natural mit dem CICS-Attribut
CONCURRENCY(REQUIRED)
definiert ist und die CICS OTE-Umgebung (
Open Transaction Environment) benutzt, müssen alle mittels
Standard-Linkage-Konventionen aufgerufenen Subprogramme voll eintrittsvariant
(reentrant) sein.
Wenn ein Nicht-Natural-Subprogramm aufgerufen wird, das
quasi-eintrittsvariant, aber nicht thread-sicher und voll eintrittsvariant ist,
während Natural in einem offenen TCB läuft, sorgt die Einstellung
%P=SQ
dafür, dass das aufgerufene Programm unter dem
CICS QR TCB ausgeführt wird. Natural setzt dann das CICS-Kommando EXEC
CICS LINK PROGRAM('NCILINKQ')
ab, um den QR TCB umzuschalten und das
Programm NCILINKQ
auszuführen, das das Subprogramm mittels
Standard-Linkage-Konventionen aufruft.
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.
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.
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.