EXCPs

One of my teammates remarked that the Exception count for his job was not increasing and that it might be in a loop. He was monitoring the job in SDSF and apparently there was no visible activity. The discussion that we had on this is the reason for this post.

EXCP stands for EXecute Channel Program. It does not stand for “Exception”. These are the I/O subsystem hardware driver programs that do the actual data transfer between the DASD (Hard disk) and the system memory(core/RAM). Channels in mainframes are similar to Buses in the PCs. They are basically the electrical paths to carry data. So each time a trip is made to the DASD to fetch data, EXCP count goes up by one. This is the reason we say a job is looping if the EXCP count is not increasing. Note that the count goes up by one for each block of data transferred. So a data transfer of a single 4K block and a single 32K block will count for one EXCP each.

There is a little caveat here. If the data being fetched is in a DB2 table, the EXCP count will NOT go up even though large amounts of data are being transferred. That is because the EXCPs are logged by a part of MVS called SMF (Systems Management Facility) while DB2 I/Os are handled by MMF (Media Manager Facility). So those I/Os don’t show up on the EXCP reports.