PRINT TYPORG=PS,STOPAFT=100 tells IEBPTPCH to print the first 100 logical records from a sequential data set. The utility can also print an entire PDS or PDSE, selected members, selected records, hexadecimal output, packed-decimal conversions, or a listing with page titles.
What the IEBPTPCH PRINT statement handles
IEBPTPCH is a DFSMSdfp utility for printing or punching all or selected portions of a non-VSAM sequential data set, partitioned data set, or PDSE. “Print” does not require a physical printer: SYSUT2 can point to SYSOUT, disk, or tape.
This page focuses on the PRINT function and its common JCL parameters. Use the broader IEBPTPCH overview for default output-format details, PUNCH processing, and advanced editing.
Required IEBPTPCH DD statements
| Statement | Purpose |
|---|---|
EXEC PGM=IEBPTPCH | Runs the print-punch utility. |
SYSPRINT DD | Receives utility messages and diagnostics; required for each run. |
SYSUT1 DD | Defines the sequential, PDS, or PDSE input. |
SYSUT2 DD | Defines the formatted print output, commonly a SYSOUT class. |
SYSIN DD | Contains the PRINT statement and optional TITLE, EXITS, MEMBER, and RECORD statements. |
The JCL DD statement guide explains data-set references, SYSOUT, and disposition processing.
Print a sequential data set
//PRTSEQ EXEC PGM=IEBPTPCH
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=APP.CUSTOMER.MASTER,DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD *
PRINT TYPORG=PS
/*
TYPORG=PS selects sequential input and is the default. Keeping it explicit can make production JCL easier to review. IEBPTPCH formats each input record for the output data set rather than copying the original record unchanged.
Print a limited record range
//PRTLIM EXEC PGM=IEBPTPCH
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=APP.TRANSACTION.FILE,DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD *
PRINT TYPORG=PS,STRTAFT=500,STOPAFT=100,MAXLINE=60
/*
STRTAFT=500 skips 500 logical records before printing begins. STOPAFT=100 then prints 100 logical records. IBM limits both values to 32767. For VS or VBS records longer than 32 KB, IBM documents block-oriented counting exceptions.
Sample every nth record with SKIP
//SYSIN DD *
PRINT TYPORG=PS,SKIP=10,STOPAFT=25
/*
SKIP=10 selects every tenth record. STOPAFT=25 limits the number of selected records printed. This is useful for a quick sample, but it is not a data-validation method because most input records are deliberately omitted.
Print selected PDS or PDSE members
//PRTMEM EXEC PGM=IEBPTPCH
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=APP.JCLLIB,DISP=SHR
//SYSUT2 DD SYSOUT=*
//SYSIN DD *
PRINT TYPORG=PO,MAXNAME=2,STOPAFT=200
MEMBER NAME=DAILY01
MEMBER NAME=MONTHEND
/*
TYPORG=PO identifies partitioned input. If a MEMBER statement is present, MAXNAME must be at least the number of member names and aliases that follow. Without MEMBER statements, IEBPTPCH processes all members under the selected function and format.
Use IEBCOPY when the requirement is to copy, merge, load, or unload PDS/PDSE members rather than print their contents.
Add a title and control page length
//SYSIN DD *
PRINT TYPORG=PS,INITPG=1,MAXLINE=55
TITLE ITEM=('CUSTOMER MASTER AUDIT',10)
/*
The first TITLE statement supplies a title and an optional second TITLE supplies a subtitle. For printed output, titles appear on each page. A title literal can contain up to 40 bytes; the optional location controls its starting output position.
INITPG sets the first page number and MAXLINE sets the maximum printed lines per page. IBM documents 60 as the default for MAXLINE. These two parameters apply to PRINT, not PUNCH.
Convert records to hexadecimal or expanded decimal
//SYSIN DD *
PRINT TYPORG=PS,TOTCONV=XE,STOPAFT=20
/*
TOTCONV=XE converts the entire record to a two-character-per-byte hexadecimal representation. It is useful when blanks, packed fields, or nonprinting bytes make the character listing ambiguous.
TOTCONV=PZ expands packed-decimal data into decimal display characters, but IEBPTPCH does not validate whether every byte is actually packed decimal. Do not apply PZ blindly to a mixed-format record. Use RECORD and FIELD editing when only selected positions require conversion.
Use PREFORM only for preformatted input
PREFORM=A tells IEBPTPCH that the first byte contains an ASA control character. PREFORM=M identifies a machine-code control character. This is appropriate for output already formatted for printing, such as certain stored dump data sets.
PRINT statement parameter reference
| Parameter | Use |
|---|---|
TYPORG=PS|PO | Selects sequential or partitioned input; PS is the default. |
STRTAFT=n | Skips records before processing starts. |
STOPAFT=n | Limits the number of records printed. |
SKIP=n | Prints every nth record. |
TOTCONV=XE|PZ | Converts the entire record to hexadecimal or expanded decimal output. |
CNTRL=1|2|3 | Selects single, double, or triple spacing for PRINT. |
MAXNAME=n | Declares capacity for subsequent MEMBER names and aliases. |
MAXFLDS=n | Declares capacity for FIELD parameters in later RECORD statements. |
INITPG=n | Sets the initial page number. |
MAXLINE=n | Sets the maximum lines per printed page. |
DBCS=YES|NO | Controls double-byte character-set processing; NO is the default. |
Control-statement order
PRINT or PUNCH must be the first utility control statement, and both cannot be used in one control data set. When used, TITLE follows the function statement; EXITS follows TITLE or the function statement; MEMBER and RECORD statements follow in the required processing order.
Keep utility control statements separate from JCL. They belong after SYSIN DD * or in the SYSIN data set. The JCL tutorial shows how JOB, EXEC, DD, and in-stream data work together.
Common IEBPTPCH failures
- Omitting one of the required DD statements.
- Using
TYPORG=PSfor a PDS or PDSE. - Coding MEMBER statements without a sufficient
MAXNAME. - Assuming
STOPAFTmeans the absolute ending input-record number. - Applying
TOTCONV=PZto fields that are not packed decimal. - Combining PREFORM with options that it causes the utility to ignore.
- Sending a long listing to the wrong SYSOUT class.
- Expecting IEBPTPCH to process VSAM input.
Check SYSPRINT first when the step returns a nonzero code. It contains the utility messages and echoed control information needed to locate DD-name and syntax problems.
Choose the right utility
- Use IEBPTPCH to print or punch sequential/PDS/PDSE records.
- Use IEBGENER to copy sequential records or create PDS/PDSE members from sequential input.
- Use IEBCOPY for PDS/PDSE copy and maintenance operations.
- Use IEHLIST to list directory, catalog, or VTOC information in its supported cases.
The mainframe utilities guide maps other common data-management jobs to the appropriate program.
Official IBM references
- IBM: IEBPTPCH print-punch program
- IBM: PRINT and PUNCH statements
- IBM: IEBPTPCH job-control statements
- IBM: IEBPTPCH MEMBER statement
- IBM: IEBPTPCH TITLE statement
IEBPTPCH PRINT statement FAQ
What does the IEBPTPCH PRINT statement do?
It tells IEBPTPCH to format and write all or selected records from a sequential data set, PDS, or PDSE to the SYSUT2 output data set. SYSUT2 can be SYSOUT, disk, or tape.
How do I print only the first 100 records with IEBPTPCH?
Code PRINT TYPORG=PS,STOPAFT=100 in SYSIN. STOPAFT limits the number of logical records printed for ordinary sequential input.
How do I print selected PDS members with IEBPTPCH?
Use TYPORG=PO, set MAXNAME to at least the number of names that follow, and code one MEMBER NAME=member statement for each selected member.
Can I code PRINT and PUNCH in the same IEBPTPCH step?
No. IBM requires PRINT or PUNCH as the first utility control statement, and only one of those functions can be used in a control data set.
For a bounded production listing, start with PRINT TYPORG=PS,STRTAFT=n,STOPAFT=n and verify the selected SYSOUT class before submitting the job.
No comments:
Post a Comment