Hold
In z/OS, "Hold" primarily refers to a mechanism used to temporarily prevent a job from executing or to prevent a SYSOUT dataset from being processed (e.g., printed, displayed, archived). It provides a critical operational control point for managing the flow of work and output within the Job Entry Subsystem (JES).
Key Characteristics
-
- Job Hold: A job submitted with the
HOLD=YESparameter in itsJOBstatement is placed in the JES input queue but is not selected for execution by an initiator until explicitly released. - SYSOUT Hold: Output datasets (SYSOUT) can be held on the JES spool, preventing them from being printed, displayed, or archived. This is typically specified via
HOLD=YESon aDDstatement orOUTPUTstatement in JCL. - Operator Control: Both job and SYSOUT holds can be managed by system operators using JES commands, such as
\$H(hold),\$A(activate/release), or\$P(purge) for jobs and SYSOUT. - Programmatic Specification: The
HOLDattribute can be specified directly in JCL or programmatically via JES Application Programming Interfaces (APIs) when submitting jobs or writing SYSOUT. - Temporary State: A held state is temporary and requires an explicit action (release) to allow the job to run or the SYSOUT to be processed according to its destination.
- Job Hold: A job submitted with the
Use Cases
-
- Staging Jobs: Submitting jobs in advance for a planned execution window (e.g., end-of-month processing) and then releasing them at the appropriate time.
- Controlling Output: Holding large reports or sensitive output on the spool until a specific printer is available, until they can be reviewed, or until security protocols are met before printing.
- Debugging and Testing: Holding SYSOUT from test runs to allow developers to review the output online and ensure correctness before discarding or printing.
- Dependency Management: Holding a job until a prerequisite job completes successfully, a specific file becomes available, or an external condition is met, then releasing it.
- Resource Management: Preventing a resource-intensive job from running during peak business hours by holding it until off-peak times to optimize system performance.
Related Concepts
The HOLD mechanism is fundamental to Job Entry Subsystem (JES) functionality (JES2 and JES3), which is responsible for managing job queues and SYSOUT processing. It works in conjunction with JCL (Job Control Language), where the HOLD parameter is specified on JOB, DD, or OUTPUT statements. It provides a manual or automated override to the normal job scheduling and output management processes, allowing for granular operational control over the z/OS workload and resource utilization.
- Document Held Jobs: Clearly document the purpose, expected release criteria, and responsible party for any jobs submitted with
HOLD=YESto avoid confusion and ensure timely processing. - Monitor Held Queues: Regularly monitor JES held job queues (
\$DQ,H) and held SYSOUT queues (\$DS,H) to prevent backlogs, identify forgotten jobs, or address potential spool space issues. - Automate Release: For jobs with predictable release conditions or complex interdependencies, leverage job schedulers (e.g., IBM Z Workload Scheduler, Broadcom CA-7) to automate the release process, improving efficiency and reducing manual errors.
- Review SYSOUT Holds: Implement procedures for timely review and release of held SYSOUT datasets to free up spool space and ensure prompt delivery of critical reports.
- Use HOLD Judiciously: Avoid over-reliance on manual holds for routine processes; instead, leverage job schedulers, JCL conditional processing (
IF/THEN/ELSE), and dataset availability checks for more robust and automated workload management.