Überlegungen zur CICS Open Transaction-Umgebung

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.