This table lists all Broker stubs available under the z/VSE operating system that are to be used with the programming languages Natural, COBOL, Assembler and C.
The stub you choose depends on the following:
the environment (CICS or Batch)
the availability of administration features such as tracing and compression
Environment | Transport | Trace | Stub Module | ||
---|---|---|---|---|---|
NET | TCP | SSL | |||
All environments that use Batch | Yes | Yes | No | Yes* | BKIMB |
All environments that use CICS | Yes | Yes | No | Yes* | BKIMC |
* | The request needs to use TCP transport method. Tracing is not available with NET transport. |
Transport Value | Tips |
---|---|
TCP |
|
NET |
|
To use the stubs' internal security functionality, API version 8 or higher needs to be used by the application. (e.g., EntireX RPC Server, NAT42). The delivered phases are linked for use with internal security.
If the transport layer is interrupted, communication between the broker and the stub - that is, client or server application - is no longer possible. A client or server might possibly wait infinitely for a broker reply or message in such a situation. To prevent this and return control to your calling application in such a situation, set a timeout value for the transport method.
The timeout settings for transport layers are independent of the timeout settings of the broker.
Setting the timeout for the transport layer is possible for the transport method TCP, and is supported by all broker stubs under z/VSE.
The timeout value for the transport method is set by the environment variable TIMEOUT
on the stub side.
This transport timeout is used together with the broker
timeout - which is set by the application in the
WAIT
field of the broker ACI control block - to
calculate the actual value for the transport layer's timeout.
The following table describes the possible values for the transport timeout:
Transport Timeout Value |
Description |
---|---|
0 | Infinite wait for the application. |
n | The transport method additionally waits this time in seconds.
A negative value is treated as TIMEOUT=0 (infinite wait for
the application).
|
nothing set | Transport method waits additional 20 seconds. |
The actual timeout for transport layer equals broker timeout (WAIT
field) +
timeout value for transport method.
With transport method TCP/IP, the broker stub establishes one or more TCP/IP
connections to the brokers specified with BROKER-ID
.
These connections can
be controlled by the transport-specific CONNECTION-NONACT
attribute on the
broker side, but also by the transport-specific environment variable
NONACT
on the stub side.
If NONACT
is not 0, it defines the non-activity
time (in seconds) of active TCP/IP connections to any broker. See NONACT
under Environment Variables in EntireX.
Whenever the broker stub is called, it checks for the elapsed non-activity time
and closes connections with a non-activity time greater than the value
defined with NONACT
.
Transport Non-activity Value | Description |
---|---|
0 | Infinite lifetime until application is stopped. |
n (seconds) | Transport connections with non-activity time greater than n will be closed. |
Nothing set | Transport connections with non-activity time greater than 300s (default) will be closed. |
You can use BKIMB for all batch environments. This stub interface module is delivered as a phase, which can be loaded by your application dynamically, and as an object for linking. During runtime, the EXX960 library and the WAL826 library need to be included into the LIBDEF search chain. If you need to statically link your application with the interface object, include the following objects:
PHASE <appl_phase_name>,* INCLUDE <app_obj> INCLUDE BKIMB INCLUDE ETBVPRE INCLUDE ETBVEVA INCLUDE ETBENC INCLUDE ETBTB ENTRY <app_entry>
To set up a secure environment
Statically link your application with the following interface objects:
PHASE <appl_phase_name>,* INCLUDE <app_obj> INCLUDE BKIMB INCLUDE ETBUPRE INCLUDE ETBUEVA INCLUDE ETBVPRE INCLUDE ETBVEVA INCLUDE ETBENC INCLUDE ETBTB ENTRY <app_entry>
Or:
If BKIMB is to be loaded dynamically, you can relink the phase for use with security. Refer to the delivered job control example
BKIMB.J.
Rename phase SECUEXI0 in library EXX960 to SECUEXIT.
You can use BKIMC for all CICS environments. This stub interface module is delivered as a phase, which can be loaded by your application dynamically, and as an object for linking. To enable CICS to find the various programs, include the EXX960 sublibrary in the DFHRPL chain and add following definition to your CICS environment:
DEFINE PROGRAM(BKIMC) GROUP(EXX) LANGUAGE(ASSEMBLER) (only required if not linked to your application) DEFINE PROGRAM(BROKERC) GROUP(EXX) LANGUAGE(C)
If you need to statically link your application with the interface object, include the following objects:
PHASE <appl_phase_name>,* INCLUDE <app_obj> INCLUDE BKIMC INCLUDE ETBVPRE INCLUDE ETBVEVA INCLUDE ETBENC INCLUDE ETBTB ENTRY <app_entry>
To set up a secure environment
Statically link your application with the following interface objects:
PHASE <appl_phase_name>,* INCLUDE <app_obj> INCLUDE BKIMC INCLUDE ETBUPRE INCLUDE ETBUEVA INCLUDE ETBVPRE INCLUDE ETBVEVA INCLUDE ETBENC INCLUDE ETBTB ENTRY <app_entry>
Or:
If BKIMC is to be loaded dynamically, you can relink the phase for use with security.
Refer to the delivered job control example BKIMC.J.
Rename phase SECUEXI0 in library EXX960 to SECUEXIT.
If transport method TCP is used, a stub trace may be turned on for diagnostic purposes. Set up the following environment variable in your application job control or CICS startup.
//SETPARM STUBLOG=2