MainframeMaster

JCL Tutorial

JCL FORMS Parameter

Progress0 of 0 lessons

Purpose

The FORMS parameter specifies the name of the form on which the system should print the SYSOUT dataset. This parameter is essential for jobs that require special forms such as pre-printed invoices, multi-part forms, special letterhead, or colored paper.

When a job specifies a non-standard form, its output is typically held in the JES output queue until an operator releases it to an appropriate printer that has been set up with the correct forms.

Syntax

On an OUTPUT Statement

jcl
1
//outname OUTPUT FORMS=form-name

On a DD Statement

jcl
1
//ddname DD SYSOUT=class,FORMS=form-name

Parameters

ParameterDescription
form-name

Specifies the name of the form to use.

  • In JES2: 1-4 alphanumeric or national ($, #, @) characters
  • In JES3: 1-8 alphanumeric or national characters
  • Typically installation-specific values like "STD" (standard), "INVCE" (invoice), "CHCK" (check), etc.

Examples

Example 1: Basic FORMS Usage

Specifying FORMS directly on a DD statement:

jcl
1
2
3
4
5
6
7
//PAYROLL JOB (ACCT),'JOHN DOE',CLASS=A //STEP1 EXEC PGM=PAYROLL //PAYCHK DD SYSOUT=A,FORMS=CHCK //REPORT DD SYSOUT=A //SYSIN DD * ... input data ... /*

In this example, the PAYCHK output will print on the special form "CHCK" (check form), while the REPORT output will print on the default form.

Example 2: Using OUTPUT Statement Reference

Using an OUTPUT statement to define form requirements:

jcl
1
2
3
4
5
6
//INVOICE JOB (ACCT),'JOHN DOE',CLASS=A //INVOUT OUTPUT FORMS=INVCE,COPIES=2,DEST=RM256 //STDOUT OUTPUT FORMS=STD //STEP1 EXEC PGM=BILLING //INVPRT DD SYSOUT=A,OUTPUT=*.INVOUT //RPTPRT DD SYSOUT=A,OUTPUT=*.STDOUT

Here, the invoice output (INVPRT) will print on the special form "INVCE" with 2 copies delivered to room 256, while the report output (RPTPRT) will print on the standard form.

Example 3: Multiple Output with Different Forms

Creating multiple outputs with different form requirements:

jcl
1
2
3
4
5
6
7
8
9
//REPORTS JOB (ACCT),'JOHN DOE',CLASS=A //STEP1 EXEC PGM=RPTGEN //SUMMOUT OUTPUT FORMS=GREEN,DEST=LOCAL //DETLOUT OUTPUT FORMS=STD,DEST=LOCAL //SUMMARY DD SYSOUT=A,OUTPUT=*.SUMMOUT //DETAIL DD SYSOUT=A,OUTPUT=*.DETLOUT //SYSIN DD * ... input data ... /*

This job produces a summary report on green paper and a detailed report on standard paper, both sent to the local printer.

Rules and Considerations

  • Precedence: If you specify FORMS on both an OUTPUT statement and a DD statement that references that OUTPUT statement, the DD statement's FORMS parameter overrides the OUTPUT statement's value.
  • Default Value: If you omit the FORMS parameter, the system uses the default form name specified during JES2 or JES3 initialization (typically "STD").
  • Special Forms Handling: Output destined for special forms is typically held in the JES queue until an operator sets up the correct forms and releases the output.
  • Installation-Specific: Valid form names are defined at each installation and may vary from site to site. Check with your operations staff for a list of available forms.
  • JES2 vs. JES3: In JES2, form names are limited to 4 characters, while JES3 allows up to 8 characters.
  • Operator Overrides: Operators can override the specified form name when releasing output to a printer.

Common Uses

Form TypeCommon NameTypical Use
Standard PaperSTDGeneral reports, listings
Check FormsCHCK or CKFMPayroll checks, accounts payable
Invoice FormsINVCE or INVFCustomer invoices, billing
Colored PaperGREEN, BLUE, PINKHighlighting important reports
Wide FormatWIDEReports requiring 132+ columns

Best Practices

  • Use OUTPUT statements for forms requirements to make your JCL more maintainable. This allows you to change form requirements in one place rather than on multiple DD statements.
  • Document special form requirements in JCL comments to aid operators and other programmers who may need to maintain your code.
  • Coordinate with operations before submitting jobs with special form requirements to ensure the forms are available and that operators are aware of the upcoming print requests.
  • Consider SYSOUT classes as an alternative for routing output to specific forms. Some installations configure certain SYSOUT classes to automatically use specific forms.
  • Test with standard forms during development to avoid unnecessary special form usage. Switch to special forms only for production runs.

Related JCL Parameters

ParameterRelation to FORMS
SYSOUTRequired on DD statements when specifying FORMS directly. Defines the output class.
DESTOften used with FORMS to route output to specific printers that have the required forms loaded.
COPIESSpecifies the number of copies to print. Important for pre-printed forms inventory management.
FCBForms Control Buffer - controls vertical spacing, often used with special forms to ensure proper alignment.
OUTDISPDefines the initial and final disposition of the output. Special forms often use OUTDISP=HOLD.

FORMS Parameter Exercises

Exercise 1: Basic FORMS Specification

Write JCL to create a job with two output datasets: one for a payroll check that should print on form "CHCK" and another for a standard report that should print on the default form.

Exercise 2: OUTPUT Statement with FORMS

Create JCL that uses OUTPUT statements to define three different form requirements (STD, BLUE, and INVCE) and references these OUTPUT statements from various DD statements.

Exercise 3: Combining FORMS with Other Parameters

Write JCL that combines FORMS with COPIES, DEST, and FCB parameters to create a complete output specification for an invoice printing job that requires special handling.

Frequently Asked Questions

Test Your Knowledge

1. What does the FORMS parameter specify in JCL?

  • The shape of the output report
  • The physical paper form to be used for printed output
  • The format of the dataset
  • The number of forms required

2. Where can the FORMS parameter be specified?

  • On the JOB statement only
  • On the DD statement only
  • On the OUTPUT statement only
  • On either the DD statement or the OUTPUT statement

3. What is the maximum length of a form name in JES2?

  • 2 characters
  • 4 characters
  • 6 characters
  • 8 characters

4. Which of the following is a valid syntax for specifying forms?

  • FORMS=SPEC
  • FORMS(SPEC)
  • FORMS("SPEC")
  • FORMS:SPEC

5. What happens when a job with a special form requirement is ready to print?

  • It prints immediately regardless of form availability
  • It waits in the output queue until an operator releases it
  • It automatically changes to use standard forms
  • It gets cancelled with an error message