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.