SYSOUT in Easytrieve JCL

SYSOUT is how JCL routes output streams to JES spool classes. Easytrieve jobs generate listings, diagnostics, DISPLAY messages, and formatted reports; SYSOUT decides where those streams go. Beginners often say “the report is in SYSOUT,” but the precise meaning is that a DD statement routed output to a SYSOUT class. Learning that distinction helps you find missing reports, separate diagnostics from business output, and understand how production report distribution works.

Progress0 of 0 lessons

SYSOUT Is a Routing Parameter

SYSOUT is not the same kind of thing as SYSIN, SYSPRINT, or STEPLIB. SYSIN and SYSPRINT are DD names. STEPLIB is also a DD name with a special loader purpose. SYSOUT is a parameter used on an output DD statement. It tells JES to place output in a spool class, where it can be viewed, printed, held, archived, or routed to a writer. The most common beginner example is SYSPRINT DD SYSOUT=*.

The asterisk means “use the default output class.” A specific class such as SYSOUT=A, SYSOUT=X, or SYSOUT=(A,INTRDR) depends on site standards. One shop may use class A for printed reports, H for held output, X for test diagnostics, and another class for automated distribution. Always check local rules before assuming class letters.

Basic SYSOUT Example

jcl
1
2
3
4
5
//RUNRPT EXEC PGM=PAYRPT //STEPLIB DD DSN=PROD.APP.LOADLIB,DISP=SHR //PERSNL DD DSN=PROD.HR.PERSONNEL,DISP=SHR //SYSPRINT DD SYSOUT=* //PAYLIST DD SYSOUT=A

SYSPRINT routes diagnostics to the default spool class. PAYLIST routes the business report to class A. If a user says the payroll listing is missing, you should inspect PAYLIST, not only SYSPRINT. If a developer says the job failed, you should inspect SYSPRINT first because that stream usually has messages and return-code context.

SYSOUT Classes

A SYSOUT class is a JES-defined bucket for output. Classes can control whether output is held, printed, routed, archived, purged quickly, or picked up by a report distribution product. The same Easytrieve report can be visible in SDSF, sent to a printer, or stored in an archive depending on the class and destination parameters. SYSOUT is therefore both a developer convenience and an operations control.

Common SYSOUT routing ideas
Routing patternMeaning
SYSOUT=*Use default output class for this job or environment
SYSOUT=ASend output to class A; actual behavior depends on site JES setup
SYSOUT=HOften used by sites for held output, but class names are local
SYSOUT=(A,writer)Route output to class A and an external writer name
SYSOUT=*,DEST=...Route spool output to a specific destination or node

Diagnostics vs Business Reports

Small Easytrieve examples may put everything on SYSPRINT, which is fine when learning. Production jobs often separate output streams. Diagnostics go to SYSPRINT, while reports go to named DD statements such as REPORT, PAYOUT, EXTRACT, or a site-standard name. This separation prevents a business recipient from receiving compiler messages and helps support staff read failures without scrolling through the whole report.

text
1
2
3
REPORT PAY-RPT LINESIZE 80 TITLE 01 'PAYROLL AUDIT REPORT' LINE 01 DEPT EMPNAME EMPNO GROSS

The REPORT statement defines layout. JCL output DDs define routing. If the report writer sends PAY-RPT to a particular output stream by site convention or report option, that stream must be allocated correctly. A source change can make a report more readable, but a SYSOUT routing change decides who sees it and where it appears.

SYSOUT and JES Spool Tools

Most developers view SYSOUT output through SDSF, IOF, or a site-specific spool viewer. You normally filter by job name, owner, job ID, or queue. Then you select an output DD such as JESMSGLG, JESJCL, JESYSMSG, SYSPRINT, or a report DD. Easytrieve messages are usually in SYSPRINT, but allocation and system messages may be in JES outputs. Missing report investigations often require reading both program output and JES routing output.

When to Use SYSOUT vs a Dataset

SYSOUT is excellent for spool review, printing, and report distribution. A dataset is better when another job step must read the output, when retention must outlast spool policies, or when a report becomes a downstream file. Easytrieve can create extracts as sequential datasets while also writing diagnostics to SYSOUT. Do not force every output into spool just because examples do.

Output destination decisions
DestinationUse when
SYSOUT classHumans need to view, print, hold, or distribute report text
Permanent datasetOutput is an extract, audit artifact, or downstream input
Temporary datasetA later step in the same job consumes the output
GDGDaily or monthly output versions must be retained in cycle order

Common SYSOUT Problems

  • The report routed to a class the developer does not normally display in the spool tool.
  • The output is held and waiting for manual release.
  • A writer or destination parameter sent output to a printer, archive, or distribution product.
  • SYSPRINT has diagnostics, but the business report is on a separate DD name.
  • Spool retention purged the output before support reviewed it.
  • The program selected no records, so the report output exists but contains only headings or nothing useful.

Troubleshooting a Missing Easytrieve Report

A missing report has two broad causes: Easytrieve did not produce it, or JCL/JES routed it somewhere unexpected. Use evidence. SYSPRINT may show zero records selected, report writer messages, or validation failures. JES output may show the DD names and classes created. The report distribution product may show delivery rules. Do not keep rerunning the job until you know which side failed.

  1. Check the job completed and note the return code.
  2. Read SYSPRINT for selected record counts, PRINT activity, and report writer messages.
  3. List all output DD names in spool, not only SYSPRINT.
  4. Check SYSOUT classes, held output, destination, writer, and distribution rules.
  5. Confirm whether the report was routed to a dataset instead of spool.
  6. Compare the current JCL with a previous successful cycle.

SYSOUT in Compile Jobs

Compile jobs also use SYSOUT, usually for SYSPRINT. The compiler listing can be large, so development classes may be retained only briefly. Production compile listings may be archived for audit or change-control proof. If a compile failed and the listing is gone, you lose the best evidence. For critical migrations, route compile SYSPRINT to a class or dataset with appropriate retention.

Cost and Retention Considerations

SYSOUT is convenient but not free. Very large reports consume spool space and can slow output processing. DISPLAY statements for every record can create millions of lines. Production teams therefore set class limits, purge policies, and archival rules. Easytrieve developers should design report output intentionally: print what humans need, write machine-readable extracts to datasets, and keep diagnostics concise.

Explain It Like I'm Five

SYSOUT is like choosing the tray where a printer puts your paper. One tray is for notes the teacher reads. Another tray is for reports that go home to parents. Another tray holds paper until someone checks it. Easytrieve can make the paper, but SYSOUT decides which tray it lands in.

Exercises

  1. Write JCL that routes SYSPRINT to the default class and a report DD to class A.
  2. Explain why SYSOUT is a parameter and SYSPRINT is a DD name.
  3. Create a checklist for a report that ran but cannot be found in SDSF.
  4. Compare routing a report to SYSOUT versus writing it to a permanent dataset.
  5. List two reasons a report output stream should be separate from diagnostic output.

Quiz

Test Your Knowledge

1. SYSOUT is a JCL parameter that controls:

  • Routing output to JES spool classes
  • Reading source members
  • Finding load modules
  • Defining packed decimals

2. SYSPRINT DD SYSOUT=* means:

  • The SYSPRINT stream goes to the default SYSOUT class
  • The source is inline
  • The program is loaded from SYSPRINT
  • No output is produced

3. SYSOUT differs from SYSIN because:

  • SYSOUT routes output; SYSIN supplies input
  • Both always contain source
  • SYSOUT is a load library
  • SYSIN controls printers

4. A missing report may be caused by:

  • Wrong SYSOUT class or held output queue
  • A correct output class always
  • Too many FILE statements only
  • A lowercase title only

5. Production jobs often separate SYSPRINT from report DDs to:

  • Keep diagnostics separate from business output
  • Prevent compilation
  • Remove all report titles
  • Avoid all JES output
Published
Read time11 min
AuthorMainframeMaster
Reviewed by MainframeMaster teamVerified: z/OS JES SYSOUT routing and Broadcom Easytrieve report/listing output patternsSources: Broadcom Easytrieve Report Generator 11.6 TechDocs, z/OS JES SYSOUT and spool routing conventionsApplies to: Easytrieve listings, diagnostics, and report output on z/OS