TSO users and started tasks (STCs) are then initiated immediately, while batch jobs wait for a JES initiator. When the address space is initiated, the IEFUJI (job initiation) exit is invoked and an SMF record is written. A type 30, subtype 1 (30.1), record is written containing information from the job card, the job identification and several timestamps. A job is uniquely (hopefully!) identified by the job name (or TSO userid or STC procedure name) and the reader timestamp (the time the job was first recognized by JES). Unfortunately, the timestamp is only precise to a hundredth of a second. As machines have gotten faster, this has proven to be a problem since it is possible for multiple jobs with the same job name to have the same reader timestamp! In a few instances, this has produced invalid results for these jobs. One solution to this has been to use the JES job number to further uniquely identify a job. Just before the SMF 30.1 record is written, the IEFU83, IEFU84 or IEFU85 exit is called.
Almost immediately after the job starts, the first step is initiated. The IEFUSI exit is called prior to beginning execution. No SMF records are written at this point.
As the step begins, there is a period of time spent enqueing the data sets, and then the devices are allocated, after which the program is loaded and execution starts. These timestamps are kept for inclusion in later SMF records. During execution, if the amount of CPU time exceeds the time specified for the job class, the IEFUTL (User Time Limit) exit is called. This exit can be used to extend the time or to cancel the step. Also during execution, if the amount of lines written to spool exceed the number specified for the job class, the IEFUSO (User SYSOUT) exit is called. This exit can be used to extend the number of lines or to cancel the step. The JES2 JOBCLASS parameter can indicate that IEFUSO is not to be called for certain job classes, all started tasks and/or all TSO users.
If INTERVAL (another keyword that we’ll cover in the next issue) was specified in SMFPRMxx for this type of address space, and the job is running longer than the interval, a type 30, subtype 2 record is written, after a call to the IEFU83/84/85 exit. In general, the data in the subtype 2 record contains the resources consumed for just the interval. The one exception is the type 30, subtype 6 record that is written for system address spaces at each interval. The subtype 6 records contain cumulative resource usage.
When a step completes, either normally or abnormally, a type 30 subtype 4 record is written. This record provides the majority of the data used for address space analysis. It contains the total consumption for the major resources: CPU, I/O and storage. If INTERVAL recording was active, a type 30 subtype 3 record is also written and contains the resource usage for the last (partial) interval. The IEFU83/84/85 exit is again called before the SMF record is written. In addition, the IEFACTRT exit is called. This is one of the most popular exits and is used to place step termination information in the JES log. Those of you who see summary information of CPU usage and times at the end of every step probably have an IEFACTRT exit in place.
Actually, the records created at job termination are very similar to those written at step termination. Many installations find that job totals are sufficient for chargeback and capacity planning. However, you should consider the instances where the job record does not get produced. For example, a job may have completed execution of 10 steps during the last eight hours and the system crashes. You’ll never see the job termination record but you probably want to account for the eight hours of usage, so the step termination records are important.