%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
entsprechende 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 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.
Informationen bezüglich der Unterstützung von IBM Language Environment (LE)-Subprogrammen durch Natural siehe Abschnitt LE-Subprogramme in der Operations-Dokumentation.
Einzelheiten zum Aufrufen von Nicht-Natural-Programmen siehe
CALL-Statement in der
Statements-Dokumentation.
Weitere Kommando-Optionen sind im Folgenden beschrieben:
%P=SC — Standard-Linkage-Aufruf mit Simulation von EXEC CICS LINK
%P=SQ — Standard-Linkage für Aufruf von quasi-reentranten Subprogrammen
%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, wenn die Natural CICS-Schnittstelle benutzt wird und wenn die bei Ihnen installierte Natural CICS Interface-Version dieses Kommando unterstützt.
%P=SQ entspricht funktional dem Terminalkommando
%P=S.
Dieses Kommando gilt nicht, wenn ein aufgerufenes Nicht-Natural-Subprogramm in Natural
mit dem Profilparameter CSTATIC oder RCA definiert ist.
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 reentrant sein.
Wenn ein Nicht-Natural-Subprogramm aufgerufen wird, das quasi-reentrant, aber nicht
thread-sicher und voll reentrant 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 Terminalkommando gilt auch für LE-Subprogramme. Informationen bezüglich der Unterstützung von IBM Language Environment (LE)-Subprogrammen durch Natural siehe Abschnitt LE-Subprogramme in der Operations-Dokumentation.
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 die gleiche 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.
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 als auch
%P=C ausführen, wird %P=C
ignoriert.
CNTCALL im Macro NTCICSP auf
ON 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 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-Subprogramme 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-Subprogramme 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 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. |