Processing a unit-of-work from a DL/I Batch process is handled a little differently than for online transactions and BMPs, since native two-phase commit by IMS is not supported by default in this environment.
DL/I Batch programs run independent of concurrent on-line activity and log their changes, in their own independent IMS Log files and often in very large Units-of-Work. Because these programs are not run under the IMS Transaction Monitor, databases must be made accessible (read/write/update) through other means.
While little pure DL/I Batch still exists, most having been converted to BMP processing, the IMS Log Reader Capture supports integration of on-line and DL/I Batch capture using a DL/I Batch Feed Exit and Batch Feed LogStream. The Feed LogStream is read by the Capture and can triggers a switch from the capture of on-line changes to DL/I Batch changes and back again once a DL/I Batch Job completes. The behavior is similar to a traffic light that stops the flow of traffic from one direction to allow traffic from another to flow. Those two components then provide the following UOW characteristics:
- The entire DL/I Batch program execution is treated as one (1) large unit-of-work, whether or not checkpoints are issued within the program.
- When the DL/I Batch program completes normally all the captured IMS changes will be committed to the CDCzLog.
- If the DL/I Batch program abends, all captured changes are removed (rolled back) from the CDCzLog.
The IMS Log Reader Capture also supports an optional method that facilitates the integration of units-of-work committed by on-line and DL/I Batch processes for individual or groups of applications. The DL/I Batch Job Exit in the Capture can be used to determine if particular DL/I Batch jobs should be captured or excluded.