The P
and M
command options of ET
and
BT
commands allow a program to keep some records in
hold status even after a transaction is applied or undone. Adabas Transaction
Manager supports these options when the
Extended
Hold client runtime control is set. Extended hold
processing proceeds as follows:
At the point where the distributed transaction is applied or undone,
the P/M
option on the first
ET/BT
is honored (if used). In addition, all records
in the other databases remain in hold until the ET
for each database in turn is encountered.
As each ET
(or
BT
) in series is encountered the
P/M
options are honored for each database in
turn.
The consequence of this unavoidable processing is that some or all records are held longer than they need to be, and additional commands are issued in order to resolve the hold processing to obey the wishes of the application.
If the extended hold option is not active (the default setting), any
ET
or BT
command will
cause all the user’s held ISNs to be released in databases where changes have
been made, except possibly in the database that is the target of the command;
for this database, any P
or
M
option present in the command will be honored.
This is by far the most efficient mode of execution.
Note:
Extended hold processing is only relevant when transaction control is
exerted by ET
or BT
command.
The H
option of command option 3 for an
ET
or BT ACBX
call allows
a program to keep a record in shared hold status indefinitely (until the next
ET
or BT
command). Adabas
Transaction Manager supports this option as follows:
At the point where the distributed transaction is applied or undone,
the H
option on the first
ET/BT
is honored.
As each ET
(or
BT
) in series is encountered, if a shared hold
status conflict is detected (for example, a "H
"
option is subsequently specified for a database that was involved in the
earlier distributed transaction) then a response 240 sub-code 588 will be
returned to the calling program. This has no effect on the transaction outcome,
which was determined earlier, but is an indication to the program that it
should review its use of this option.
Note:
Adabas does not currently support the shared hold status
"H
" option for the internal
Yx
commands used by Adabas Transaction Manager.
Since a close command implies end-of-transaction, every
CL
command triggers the same processing as for an
ET
command, except that:
the user is also closed in the target database;
if the target database is at ET status, the current distributed transaction is not affected.
An OP
command sent to a database in which the
client has no uncommitted changes or held records will simply be passed to its
target without affecting the client’s distributed transaction status. This
logic allows "open on demand" processing without interference in
distributed transaction processing.
An OP
command sent to a database that is
actively involved in the current distributed transaction causes the distributed
transaction to be wholly undone.
If the OP
command specifies that
ET
data is to be read, the above processing occurs.
If processing is successful, the user’s ET
data is
returned to the calling program. This applies even if the target database has
the parameter setting DTP=NO
. The
ET
data is read either from the ATM transaction
manager’s recovery file or, if the transaction manager is running with the
parameter setting TMETDATA=TARGETS
, from the
database indicated by the OP
command.