There are two posibillity to start transaction:
1. MQBegin - Queue-manager-coordinated global unit of work
2. MQPMO_SYNCPOINT - Queue-manager-coordinated local unit of work
MQBegin is trivial, so I will not explain it.
For MQPMO_SYNCPOINT you have to do something like
GetMsgOptions.Options:=GetMsgOptions.Options + MQPMO_SYNCPOINT;
Where GetMsgOptions you use like:
MQGET ( Hconn, Hobj, @MsgDesc, @GetMsgOptions, BufferLength, @Buffer^, @DataLength, @intCompcode, @intReason);
In both cases you will use MQCMIT, and MQBACK to commit or reverse transaction back.
Taken from here.