To handle Adabas direct calls issued by 3GL (COBOL, PL/I, etc.)
programs, the Entire Transaction Propagator provides an interface program,
ETPDB3GL
, which is part of ETPNUC
. Because Adabas
call handling varies with the operating systems and TP monitors, it may be
necessary for you to write a program that passes Adabas calls to the
ETPDB3GL
interface program; this depends on your installation
requirements.
For 3GL programs running under CICS, the ETP Interface for CICS is available as a Natural add-on product. For more information, see the section ETP Interface for CICS.
The ETPDB3GL
interface program provides two ways for your
3GL programs to use the Entire Transaction Propagator:
Invoking ETPDB3GL
directly from your 3GL program, using
changed Adabas calls;
Invoking ETPDB3GL
from a user-written
"pseudo-Adabas" program, using existing Adabas calls.
Using the interface requires initialization calls to provide
ETPDB3GL
with information such as the database ID and file number
of the administration file. In addition to the normal Adabas parameters, you
must also provide a storage area as work storage.
Let's assume that your 3GL program now contains calls to Adabas similar to the following:
. . CALL ADABAS (CB,FB,RB,SB,VB,IB) . .
Here, all program calls are issued directly to Adabas, as shown in the following figure:
With the Entire Transaction Propagator and the ETPDB3GL
interface program, you now have two possibilities to pass calls:
Change your 3GL programs to call the interface module
ETPDB3GL
instead of Adabas; that is, instead of CALL
ADABAS
, code CALL ETPDB3GL
. Include the initialization
calls and modify all other Adabas calls so that they look like the
following:
. . CALL ETPDB3GL (CB,FB,RB,SB,VB,IB,WORKAREA) . .
- where WORKAREA
is the required work storage for the
Entire Transaction Propagator. Now, your programs have the following call
logic:
* The initialization parameters are described in the sample program
which is provided in data set
ETPvrs.SRCE
.
Write a program that accepts Adabas calls, performs initialization
calls to ETPDB3GL
, and passes all Adabas calls to
ETPDB3GL
(see figure above). Name the program ADABAS
,
and link it to your application programs. You may need to change your
"compile and link" JCL to ensure that your application will always
pass Adabas calls to the interface.
This user-written program ADABAS
provides all necessary
information to ETPDB3GL
. It also must provide the address of the
"real" Adabas, which is usually an entry point in the normal
Adabas interface (for example, ADAUSER
). To avoid linkage editor
errors caused by multiple entry points for the name ADABAS
, you
may also have to use the linkage editor to change the normal Adabas
interface.
With this alternative for passing calls, you do not need to change
your 3GL programs. Note, however, that the program ADABAS
must
also specify work storage as in choice [1], above.
* The initialization parameters are described in the sample program
which is provided in data set
ETPvrs.SRCE
.
A sample program using this second alternative for z/OS batch mode is
provided in data set ETPvrs.SRCE
. This
sample program also contains the description of the interface to program
ETPDB3GL
. This alternative has the call logic shown in the figure
above.
Both alternatives require you to link the module ETPNUC
to
all your applications for which Entire Transaction Propagator services will be
used; ETPNUC
contains the interface program
ETPDB3GL
.
Note that ETPDB3GL
cannot handle the new ACBX control block
format as available with Adabas Version 8; if such a control block is
encountered, an error is returned to the caller of ETPDB3GL
immediately, regardless if the control block specifies a database ID that is
defined as an ETP database with the ETP3PARM
macro or not.