Wenn Sie Natural in der offenen CICS-Transaktionsumgebung (Open Transaction Environment,
OTE) unter einem offenen Thread Control Block (TCB) ausführen möchten, müssen alle externen
Subprogramme thread-sicher und vollständig reentrant sein, wenn sie von Natural unter
Verwendung von Standard-Linkage-Konventionen (direkte Verzweigung mit einer BASR-Anweisung)
anstelle eines EXEC CICS LINK-Kommandos aufgerufen werden. Es
reicht nicht aus, dass die aufgerufenen Subprogramme nur quasi-reentrant sind. Dies gilt für
alle externen Subprogramme, die mit den Profilparametern CSTATIC, RCA oder PGP unter Natural definiert sind
oder nach Absetzen des Terminalkommandos %P=S aufgerufen wurden.
Wenn ein Subprogramm quasi-reentrant, aber nicht thread-sicher ist, müssen Sie das
Terminalkommando %P=SQ anstelle von %P=S verwenden, oder Sie müssen den
Profilparameter PGP mit
gesetzter Eigenschaft STDLQ verwenden. Bei Verwendung des Terminalkommandos
%P=SQ oder des Profilparameters PGP (mit STDLQ) wird
das externe Subprogramm auf dem CICS QR TCB und nicht unter einem offenen TCB ausgeführt.
Natural gibt dann das CICS-Kommando EXEC CICS LINK
PROGRAM('NCILINKQ') aus, um zum QR TCB zu wechseln und das
NCILINKQ-Programm auszuführen, das das Subprogramm unter Verwendung von
Standard-Linkage-Konventionen aufruft.
Wenn Sie das Terminalkommando %P=SQ oder den Profilparameter PGP (mit STDLQ)
verwenden, müssen Sie NCILINKQ so definieren, wie in Routing-Modul für
quasi-reentrante Standard-Linkage-Aufrufe (%P=SQ)
im Abschnitt Installing Natural CICS Interface in der
Installation for z/OS-Dokumentation beschrieben.
Wenn ein aufgerufenes externes Subprogramm nicht mit dem Profilparameter CSTATIC oder RCA unter Natural definiert ist,
aber einen PPT-Eintrag im Operating PPT hat und sich in einer Load Module Library befindet,
so dass CICS das Subprogramm lokalisieren und laden kann, wird der Aufruf durch ein
EXEC CICS LINK-Kommando durchgeführt. Wenn das aufgerufene
Subprogramm mit CONCURRENCY(QUASIRENT) definiert ist, schaltet CICS automatisch
auf den QR TCB um, um den Aufruf auszuführen.
Wenn ein aufgerufenes externes Subprogramm mit dem Profilparameter CSTATIC oder RCA unter Natural definiert ist,
gelten das Terminalkommando %P=SQ und der Profilparameter PGP (mit STDLQ)
nicht.
Um Probleme zu vermeiden, sollten Sie die Programmattribute API(OPENAPI) und
CONCURRENCY(REQUIRED) konsequent für alle Programmaufrufe verwenden, die eine
direkte Verzweigungsanweisung (BASR) verwenden. Dies gilt auch für Frontend-Programme von
Natural-Add-on-Produkten, die den umgebungsabhängigen Nukleus von Natural aufrufen. Weitere
Informationen finden Sie unter Überlegungen zur
Thread-Sicherheit.