BYTES Parameter

Purpose

The BYTES parameter specifies the maximum number of bytes of data that a job can process. It provides a means to limit SYSOUT data volume, helping to prevent runaway jobs from producing excessive output and consuming system resources. This parameter is part of JES2 and JES3 job control and resource management.

Syntax

JOB Statement Format

jcl
1
//jobname JOB parameters,BYTES=(maximum[,warning])

Alternate Format (JES2 Only)

jcl
1
//jobname JOB parameters,BYTES=([maximum][,warning][,action])

Parameter Values

maximum

  • The maximum number of bytes of SYSOUT data the job can produce
  • Valid values:
    • Integer from 1 to 9999999
    • Followed by K (kilobytes), M (megabytes), or G (gigabytes)
    • Examples: 500K, 10M, 2G
  • The job will be terminated if this limit is exceeded
  • Special value: 0 - indicates no limit

warning

  • The number of bytes at which a warning message is issued to the operator
  • Must be less than or equal to the maximum value
  • Same format as maximum (integer with optional K, M, or G suffix)
  • If omitted, no warning message is issued

action (JES2 Only)

  • Specifies the action to take when the maximum byte limit is reached
  • Valid values:
    • CANCEL - Terminate the job (default)
    • DUMP - Terminate the job with a dump
    • WARNING - Issue a warning message but allow the job to continue

Usage Examples

Basic Maximum Limit

jcl
1
2
//TESTJOB JOB (ACCT),'JOHN DOE',CLASS=A, // MSGCLASS=X,BYTES=500K

This job will be terminated if it produces more than 500 kilobytes of SYSOUT data.

With Warning Threshold

jcl
1
2
//TESTJOB JOB (ACCT),'JOHN DOE',CLASS=A, // MSGCLASS=X,BYTES=(2M,1M)

This job has a maximum limit of 2 megabytes, with a warning issued at 1 megabyte.

JES2 With Action Specification

jcl
1
2
//TESTJOB JOB (ACCT),'JOHN DOE',CLASS=A, // MSGCLASS=X,BYTES=(5M,3M,WARNING)

This job will issue a warning at 3 megabytes and another at 5 megabytes but will continue running.

Unlimited Bytes

jcl
1
2
//TESTJOB JOB (ACCT),'JOHN DOE',CLASS=A, // MSGCLASS=X,BYTES=0

This job has no limit on the number of bytes it can produce.

Parameter Interactions

Relationship with Other Resource Parameters

The BYTES parameter is one of several JOB statement resource limit parameters. It can be used in conjunction with:

ParameterFunction
LINESLimits the number of output lines
PAGESLimits the number of output pages
CARDSLimits the number of input cards (JES2 only)
REGIONLimits the memory allocation for each step
TIMELimits the CPU time for the job

Parameter Hierarchy

When multiple output limiting parameters (BYTES, LINES, PAGES) are specified, the job will be terminated when any one of the limits is reached.

Implementation Details

JES2 Implementation

  • In JES2, the BYTES parameter can be specified with three values
  • The third value (action) is unique to JES2
  • JES2 tracks SYSOUT data bytes at the job level
  • The OUTLIM parameter on DD statements can override the job-level limit for specific outputs

JES3 Implementation

  • In JES3, only the maximum and warning values can be specified
  • JES3 always terminates the job when the maximum value is reached
  • JES3 may impose installation-defined limits regardless of the BYTES parameter

Measurement Method

  • The byte count includes all SYSOUT data produced by the job
  • This includes printed output, job logs, and system messages directed to SYSOUT
  • The count does not include:
    • Data written to disk or tape data sets
    • JCL statements
    • System overhead data

Performance and Resource Considerations

Resource Management Benefits

  • Prevents runaway jobs from consuming excessive spool space
  • Protects system resources by limiting output volume
  • Reduces printing costs by catching excessive output before it's printed
  • Improves overall throughput by preventing jobs from consuming disproportionate resources

Setting Appropriate Limits

Consider these factors when setting BYTES limits:

  1. Normal output volume for the job or application
  2. Available spool space in your JES environment
  3. Criticality of the job - critical jobs may need higher limits
  4. Expected variations in the job's output based on input conditions
  5. Installation standards for resource allocation

Troubleshooting

Common Issues

IssuePossible Solution
Job terminated due to BYTES limitIncrease the BYTES limit if the output is legitimate, or fix the application if it's producing excessive output
No warning before job terminationAdd a warning value to get notified before the job is terminated
Job not producing expected outputCheck if a restrictive BYTES limit is causing the job to terminate early
Inconsistent behavior between systemsCheck for different JES2/JES3 settings or installation-defined limits on different systems

Messages and Codes

When a job exceeds its BYTES limit, you may see messages like:

  • $HASP375 JOBNAME ESTIMATED BYTES EXCEEDED (JES2)
  • IAT1600 JOB JOBNAME CANCEL REQUESTED BY BYTES ESTIAMTION ROUTINE (JES3)

Best Practices

  1. Always specify a BYTES limit for jobs that produce significant output
  2. Include a warning threshold when possible to get advance notice
  3. Set reasonable limits based on the job's normal output patterns
  4. Use with other resource parameters (LINES, PAGES, TIME) for comprehensive control
  5. For long-running or critical jobs, consider using WARNING action instead of CANCEL
  6. Document the expected output volume in job documentation
  7. Review and adjust limits periodically as application needs change

Related Concepts