CICS Open Transaction Environment Considerations

If you want to execute Natural in the CICS open transaction environment (OTE) under an open TCB, all external subprograms must be threadsafe and fully reentrant if they are called by Natural using standard linkage conventions (direct branch using a BASR instruction) instead of an EXEC CICS LINK command. It is insufficient that the called subprograms are quasi-reentrant only. This applies to all external subprograms defined to Natural with the CSTATIC, RCA or PGP profile parameter, or called after the terminal command %P=S was issued.

If a subprogram is quasi-reentrant but not threadsafe, use the %P=SQ terminal command instead of %P=S, or use the PGP profile parameter with the STDLQ property set. When using the %P=SQ terminal command or PGP profile parameter (with STDLQ), the external subprogram is executed on the CICS QR TCB rather than an open TCB. Natural then issues the CICS command EXEC CICS LINK PROGRAM('NCILINKQ') to switch to the QR TCB and execute the NCILINKQ program which calls the subprogram by using standard linkage conventions.

If you use the %P=SQ terminal command or PGP profile parameter (with STDLQ), define NCILINKQ as described in Routing Module for Quasi-Reentrant Standard Linkage Calls (%P=SQ) in the section Installing Natural CICS Interface in the Installation for z/OS documentation.

If a called external subprogram is not defined to Natural with the CSTATIC or RCA profile parameter but has a PPT entry in the operating PPT and resides in a load module library so that CICS can locate the subprogram and load it, the call is accomplished by an EXEC CICS LINK command. If the called subprogram is defined with CONCURRENCY(QUASIRENT), CICS automatically switches to the QR TCB to execute the call.

If a called external subprogram is defined to Natural with the CSTATIC or RCA profile parameter, the %P=SQ terminal command and the PGP profile parameter (with STDLQ) do not apply.

In order to avoid problems, use the API(OPENAPI) and CONCURRENCY(REQUIRED) program attributes consistently for all programs calls that use a direct branch (BASR) instruction. This also applies to front-end programs of Natural add-on products that call the environment-dependent nucleus of Natural. For further information, see Threadsafe Considerations.