This section describes the available Syncpoint processing options.
The normal rules of transactional programming under CICS and other TP systems are different from those that are familiar to Adabas programmers. Specifically, in a standard CICS application, a screen I/O normally means that pending changes are committed, and locks are freed, whereas Adabas allows a transaction to span screen I/Os. Indeed, Natural utilities such as SYSMAIN could behave differently when the ATM CICS Resource Manager Interface is in use, because they are written in such a way that they expect transactions to remain open across screen I/Os.
With the advent of ATM, this difference in programming styles led to two requirements for the ATM CICS RMI implementation:
it should be possible for pending Adabas changes to remain uncommitted across pseudo-conversational task end;
it should be possible to have ISNs released from held status, automatically, when a CICS syncpoint occurs.
The first requirement makes the introduction of ATM easier for sites
that have taken advantage of the possibility of keeping Adabas transactions
open across screen I/Os. It also allows Natural utilities to execute as before.
The second brings Adabas behavior into line with standard behavior in CICS and
other TP environments, and is ATM’s normal mode of operation. The two are, of
course, incompatible, and are therefore implemented as options through the
TransactionModel
client runtime control.
This is the default option, and defines ATM’s standard way of processing
syncpoints. Processing of a message always terminates with a syncpoint.
Normally this means that a screen I/O causes pending changes to be committed.
If an external transaction coordinator is in control of a transaction, an
ET
or CL
command will
trigger a commit syncpoint by the external coordinator; a
BT
command, or an OP
to a
changed database, will trigger a rollback syncpoint by the external
coordinator. Held ISNs will be released, or will remain held, according to the
setting of the extended hold option, and any P or M command options. An
unsolicited syncpoint from an external transaction coordinator will cause ATM
to commit or back out pending changes to all databases and release all held
ISNs. In any case, the commit process will be synchronized for all
DTP=RM
databases; changes to other databases will be
committed or backed out after completion of the syncpoint processing.
This option allows existing Adabas applications (including Natural
utilities such as SYSMAIN) to execute under the ATM CICS RMI without being
affected by the unsolicited CICS syncpoints that occur at pseudo-conversational
task end. ATM will honor all rollback syncpoints, whether they originate from
BT
or OP
commands, from a
CICS command, or from CICS itself. ATM will also honor commit syncpoints
triggered by ET
or CL
commands, but it will ignore other commit syncpoints.
This option is appropriate for the Natural utilities, and for
applications which keep transactions open across screen I/O operations.
However, it might not be suitable for applications that execute under the CICS
RMI and change both Adabas and non-Adabas resources. If such an application
encounters an unsolicited commit syncpoint (when a screen I/O occurs, for
example), its non-Adabas changes will be committed, but the Adabas changes will
remain uncommitted until an ET
or
CL
command is executed. That is, all syncpoints will
continue to affect other resource managers (such as DB2) exactly as they did
before, regardless of the behavior of ATM.
Note:
If you use the message-based transaction model under the CICS RMI,
and execute Natural using an ADAMODE
setting that causes
Natural to execute two parallel Adabas sessions, you must make sure that
Natural’s system session always begins with an OP
command, otherwise response code 9, subcode 97, will occur frequently. You can
do this by always supplying a non-blank ETID or by using Natural's
DBOPEN
parameter.
The Transaction Model
setting has no effect for
IMS TM systems whose transactions are coordinated by RRMS, and whose local ATM
runs with TMSYNCMGR=RRMS
.
ATM allows Adabas changes to be committed synchronously with non-Adabas changes, by interacting with external transaction coordinators. When an external transaction coordinator takes a syncpoint, ATM ensures that changed Adabas databases take part in the commit or rollback operation. By default, ATM also causes the external transaction coordinator to take a syncpoint whenever it detects that pending changes are to be committed or backed out.
Usually, this means that every ET
or
CL
command causes an external commit syncpoint, and
any BT
command causes an external rollback syncpoint
to take place. However, there are cases in which this behavior might be
different from what is required. For example, consider a CICS environment in
which a Cobol program changes DB2, then starts a Natural session, expecting
Natural to return control before a decision to commit or back out is taken.
Natural can issue an ET
command during LOGON
processing, and CL
commands at session end. By
default, each of these commands (if issued under the same Communications ID as
the Cobol program’s commands) would cause a CICS SYNCPOINT to take place, and
the first of these would cause the pending DB2 changes to be committed.
Client runtime controls are provided which can be used to change this
behavior. See the descriptions of the
GenerateExternalSyncpoint
client runtime controls. In the example described above, it would be
appropriate to specify NO for
GenerateExternalSyncpointOnCL
and GenerateExternalSyncpointOnET
,
so that the CL
and ET
commands generated by Natural would not cause a CICS SYNCPOINT.