CICS Open Transaction Environment Considerations

#### Search Results

Search

# 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.