z/OS DFSMSdfp Utilities
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


EXEC Statement

z/OS DFSMSdfp Utilities
SC23-6864-00

The EXEC statement is required for each use of IEBGENER.

You can code a value like: PARM='SDB=xxxxx' on the EXEC statement. This value is effective only if the output block size is not supplied by any source. The system calculates an optimal value through a function called “system-determined block size”. This PARM value controls whether the block size can exceed 32␠760 bytes. SDB is the only valid parameter for the EXEC statement. You can code one of these values for xxxxx.

INPUT or YES
If the input block size is greater than 32␠760 bytes, the default output block size greater than 32␠760 bytes is permitted. Otherwise, it is not permitted.
SMALL
The default output block size is 32␠760 bytes or less.
LARGE
The default output block size can be greater than 32␠760 bytes. Older programs cannot read data sets that have such large blocks.
NO
The default output block size is 32␠760 bytes or less, but the block size might be less efficient than if you coded SMALL.

Your system programmer sets the default value for SDB by setting the COPYSDB in the DEVSUPxx member in SYS1.PARMLIB. The IBM-supplied default for COPYSDB is INPUT. Prior to OS/390 Version 2 Release 10, IEBGENER ignored a PARM value and operated as if SDB=NO had been coded. Currently, only magnetic tape devices and dummy data sets allow a block size that exceeds 32␠760 bytes. Do not depend on that restriction. Future levels of operating systems might allow larger blocks in more kinds of data sets.

The following conditions can cause your output data set to have a block size that exceeds 32␠760 bytes:

  • You coded the BLKSIZE keyword on the DD statement and the device will support the value.
  • You coded DISP=MOD on the SYSUT2 DD statement if the output data set exists and has a large BLKSIZE.
  • The output device type supports a large block size, but you did not code one, and SDB=LARGE is active.
  • The output device type supports a large block size, but you did not code one. The input data set has a large block size and SDB=INPUT is active.
Note: In the last two cases, the system limits the block size to a block size limit. IEBGENER will never calculate a block size value that is too large for the device. With fixed-blocked records, the block size limit does not have to be a multiple of LRECL. The block size limit is the first one of these that is available:
  • BLKSZLIM keyword on the output DD statement.
  • Block size limit in the data class, even if the data set is not SMS-managed. You can code the DATACLAS keyword on the DD statement, or the system's ACS routines can assign a data class.
  • TAPEBLKSZLM keyword in the DEVSUPxx member of SYS1.PARMLIB. The system programmer sets this as a system default.
  • 32␠760 bytes.

Using multiple buffers for IEBGENER increases the amount of virtual storage that is needed to run the program. You may need to change, or add, the REGION parameter for the additional storage to avoid 80A abends.

The default for the number of buffers is five. You can override this by specifying BUFNO or NCP on the SYSUT1 or SYSUT2 DD statement.

Before you run IEBGENER, you may need to calculate the region size (in virtual storage) that is needed to run the program. Specify this value in the REGION parameter.

You can calculate the region size by using the formula, as follows:
region size = 50K + (2 + SYSUT1 BUFNO)*(SYSUT1 BLKSIZE) +
                    (2 + SYSUT2 BUFNO)*(SYSUT2 BLKSIZE)

If you do not use BUFNO in your JCL, use the default value of 5.

Related reading: For information on how to calculate the region size, see Example 5: Produce Blocked Copy on Tape from Unblocked Disk File.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014