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.