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.