Each RM defined in the CICS environment must provide an XA switch-load file. The switch-load file is a component of your CICS configuration; it is referenced in the XAD. It contains the RM’s name, a flag, a version number and a set of non-null pointers to the RM’s entry points, provided by the DTM XA Interface.
All of the Sybase XADs share a single switch-load file. You can build your Sybase switch-load file using the file sybasexa.c, which is located in:
$SYBASE/$SYBASE_OCS/sample/xa-dtm/cics/switch
The following is a listing of sybasexa.c:
/* ** ** sybasexa.c ** ** The sybasexa routine references the Sybase xa ** switch structure named "sybase_TXS_xa_switch". ** The switch structure is part of the ** XA product library "libdtmxa.a". ** ** See your CICS documentation for details on the ** switch-load file. */ #include <stdio.h> #include <tmxa/xa.h> extern struct xa_switch_t sybase_TXS_xa_switch; extern struct xa_switch_t RegXA_xa_switch; extern struct xa_switch_t *cics_xa_switch; struct xa_switch_t *sybasexa(void) { cics_xa_switch = &sybase_TXS_xa_switch; cics_xa_init(); return(&RegXA_xa_switch); }
This source code references the Sybase XA switch structure, which is global to the DTM XA Interface and defined as follows:
struct xa_switch_t sybase_TXS_xa_switch = { "SYBASE_SQL_SERVER", TMNOFLAGS, 0, xa_open, xa_close, xa_start, xa_end, xa_rollback, xa_prepare, xa_commit, xa_recover, xa_forget, xa_complete };
The use of TMNOFLAGS specifies that the DTM XA Interface supports thread migration but does not support dynamic registration or asynchronous operations. For a description of these features, see the X/Open CAE Specification (December 1991) Distributed Transaction Processing: The XA Specification.