In line with mainframe practice, you can limit the amount of output sent to SYSOUT datasets. You can apply limits to the whole job by giving a value in the JCL job card. You can set global limits for the number of lines output using environment variables.
The LINES, PAGES, CARDS, and BYTES keyword parameters on the JCL job card are supported. PAGES, CARDS and BYTES are translated to a number of lines using the following values:
For example, an entry of PAGES=(100,CANCEL) on the job card equates to an output limit of 6000 lines before the job is cancelled.
The OUTLIM value is ignored for SYSABEND, SYSMDUMP and SYSUDUMP datasets.
The user may implement an OUTLIM user exit to call if the output limit is reached. This can tell the system whether to continue or abend the job. The user exit program must be called MFJUSOXT, a sample of which is included in the src/enterpriseserver/exit folder of your product.
Global limits are set by environment variables, either in the environment in which the enterprise server region was started or by entering the values in the enterprise server region's configuration settings. These values apply to all jobs that run in that region.
The format of the variable value is similar to that which would be entered in the JCL job card accounting information: it should contain the limit value and, optionally, the action to perform when that limit is reached:
ES_JES_***=NUMBER | (NUMBER,WARNING | CANCEL | DUMP)
Where:
Note that the behavior described here applies to the ES_JES_OUTLIM environment variable, and not to the OUTLIM parameter on the DD statement. If the OUTLIM parameter on a DD statement is exceeded, the default action specified in the ES_JES_OUTLIM environment variable will be performed. If no action is specified, a warning will be issued.
The OUTLIM parameter on a DD statement can be used to override the VALUE defined by the ES_JES_OUTLIM environment variable, but not to override the action on ES_JES_OUTLIM. So, if ES_JES_OUTLIM=50000,CANCEL then OUTLIM=100000 on the DD statement allows the job step to write 100,000 lines to SYSOUT before cancelling the job.
Environment Variable | Value Range | Example |
---|---|---|
ES_JES_LINES | 0-99999999 |
ES_JES_LINES=(100,CANCEL)Limit the number of lines output to 100000. When this limit is reached cancel the job. This results in an S722 Output limit exceeded system abend code being produced. |
ES_JES_PAGES | 0-99999999 |
ES_JES_PAGES=10Each page is assumed to hold 60 lines, therefore when 600 lines (60×10) have been processed issue a warning and carry on. |
ES_JES_CARDS | 0-99999999 |
ES_JES_CARDS=(30,WARNING)Each card is assumed to hold 25 lines, therefore at 750 lines (25×30) issue a warning message and carry on. |
ES_JES_BYTES | 0-999999 |
ES_JES_BYTES=(100,DUMP)Value for bytes is in thousands, each line is assumed to hold 132 bytes, therefore at 100000/132 lines the job will be cancelled. |
ES_JES_OUTLIM | 1-16777215 |
ES_JES_OUTLIM=5000When the above is set, a warning will be issued when 5000 lines of output is exceeded. ES_JES_OUTLIM=(1000,CANCEL)When the above is set, it causes a step to abend with an S722 abend code if the output limit of any SYSOUT dataset exceeds 1000 lines. Individual OUTLIM values can be set on each SYSOUT dataset. For example, //SYSPRINT DD SYSOUT=*,OUTLIM=500. If the output of SYSPRINT exceeds 500 lines and ES_JES_OUTLIM=(1000,CANCEL) then the step will be cancelled with an S722 abend code. |