A PDSE is a Partitioned Data Set Extended. It consists of a directory and zero or more members, just like a PDS. It can be created with JCL, TSO/E and ISPF just like a PDS and can be processed with the same access methods. The directory can expand automatically as needed, up to the addressing limit of 524,286 members. It also has an index which provides a fast search for member names. Space from deleted or moved members is automatically reused for new members, so you don’t have to compress a Partitioned Data Set Extended to remove wasted space. Each member of a Partitioned Data Set Extended can have up to 15,728,639 records.
Allocating a PDSE
Batch Allocation
The DSNTYPE JCL Keyword specifies that a data set should be a PDSE or PDS. If DSNTYPE=LIBRARY is specified, the data set is a PDSE. If DSNTYPE=PDS is specified, the data set is a PDS
//RQRIJOJB JOB (RQRIJOJ,SAMPLE),’RIJO JOSEPH’,
// CLASS=A,MSGCLASS=Z,REGION=0M,NOTIFY=&SYSUID
//*
//STEP1 EXEC PGM=IEFBR14
//*********************************************************
//SYSPRINT DD SYSOUT=*
//SYSIN DD DSN=XXXX.JCLTEST.RIJO.PDSE,
// DISP=(NEW,CATLG,DELETE),
// DSNTYPE=LIBRARY,
// UNIT=TESTDA,
// SPACE=(CYL,(10,10,10)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//
When directory blocks are not specified, DSORG=PO must be included to identify the data set as partitioned
//SYSIN DD DSN=XXXX.JCLTEST.RIJO.PDSE2,
// DISP=(NEW,CATLG,DELETE),
// DSNTYPE=LIBRARY,
// DSORG=PO,
// UNIT=TESTDA,
// SPACE=(CYL,(10,10)),
TSO/E Allocation
When allocating a PDSE with the TSO/E ALLOCATE command, you can specify DSNTYPE to identify the data set as PDSE or PDS. If a data set exists with the DCB attributes that you need, you can use the LIKE parameter to copy the attributes to the new PDSE
ALLOC DS(‘XXXX.JCLTEST.RIJO.PDSE2’)
LIKE(‘XXXX.JCLTEST.RIJO.PDSE’)
The example below shows an example of allocating a PDSE using the LIKE parameter to copy the attributes of an existing PDS. Adding the DSNTYPE(LIBRARY) parameter to the allocation makes the data set PDSE.
ALLOC DS(‘XXXX.JCLTEST.RIJO.PDSE3’)
LIKE(XXXX.JCLTEST.RIJO.PDSE’)
DSNTYPE(LIBRARY)
ISPF Allocation
We can use the 3.2 option
Data Set Name . . . : XXXX.JCLTEST.RIJO.PDSE6 Management class . . . MCTSL (Blank for default management class) Storage class . . . . SCSMS (Blank for default storage class) Volume serial . . . . TSLB90 (Blank for system default volume) ** Device type . . . . . (Generic unit or device address) ** Data class . . . . . . DCPOTSL (Blank for default data class) Space units . . . . . TRACK (BLKS, TRKS, CYLS, KB, MB, BYTES or RECORDS) Average record unit (M, K, or U) Primary quantity . . 1 (In above units) Secondary quantity 1 (In above units) Directory blocks . . 0 (Zero for sequential data set) * Record format . . . . FB Record length . . . . 80 Block size . . . . . 800 Data set name type : LIBRARY (LIBRARY, HFS, PDS, or blank) * (YY/MM/DD, YYYY/MM/DD
The Data set name type field specifies whether the new data set is to be a PDSE or PDS. Specify the Data set name type field to be LIBRARY to define a PDSE. With a PDSE allocation, the Directory blocks field is optional.
Creating PDSE Members
Member creation for PDSE is functionally same as for a PDS. There is no functional difference between the two formats
Deleting PDSE Members
A member of a PDSE can be deleted through the ISPF library panel or access method services. With a JCL disposition of delete (DISP=(OLD,DELETE)), the entire data set is deleted. This is the same as for a PDS.
IEBCOPY TO CONVERT A PDS TO PDSE
Here is an example of using IEBCOPY to convert a PDS to a PDSE. In this example,
IEBCOPY retains the original PDS, creates a PDSE and copies the members of the PDS
into the PDSE. The space is explicitly defined for the PDSE. You may use the LIKE
parameter to get the DCB information form a PDS or PDSE
//RQRIJOJB JOB (RQRIJOJ,SAMPLE),’RIJO JOSEPH’,
// CLASS=A,MSGCLASS=Z,REGION=0M,NOTIFY=&SYSUID
//*
//STEP1 EXEC PGM=IEBCOPY
//********************************************************
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=XXXX.JCLTEST.RIJO.JCLS,DISP=SHR
//SYSUT2 DD DSN=XXXX.JCLTEST.RIJO.PDSE.JCLS,
// DISP=(NEW,CATLG,DELETE),
// DSNTYPE=LIBRARY,
// DSORG=PO,
// UNIT=TESTDA,
// SPACE=(CYL,(10,10)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN DD *
COPY INDD=SYSUT1,OUTDD=SYSUT2
/*
Advantages of PDSE
• PDSE members can be shared. This characteristic makes it easier to maintain the integrity of the PDSE when modifying separate members of the PDSE at the same time.
• The system requires less time to search a PDSE directory. The PDSE directory, which is indexed, is searched using that index. The PDS directory, which is organized alphabetically, is searched sequentially. The system might cache in storage directories of frequently used PDSE data sets.
• You may create multiple PDSE members at the same time. For example, you can open two data control blocks (DCBs) to the same PDSE and write two members at the same time.
• PDSE data sets contain up to 123 extents. An extent is a continuous area of space on a DASD storage volume, occupied by or reserved for a specific data set.
• When written to DASD, logical records are extracted from the user’s blocks and reblocked. When read, records in a PDSE are reblocked into the block size specified in the DCB. The block size used for the reblocking can differ from the original block size.
When to use a PDSE
A data set should be considered for PDSE allocation or conversion when one or more of these characteristics apply
• Frequent compresses are needed for the data set
• Out of space abends occur often
• A large directory leads to lengthy directory searches (PDS directory searches are
• sequential while PDSE searches are indexed)
• The directory size is unknown at allocation time
• The directory size will grow considerably
• The data set is shared for output
• Members will be shared and reused many times
• Protection is needed to prevent users from overwriting the directory or changing the
• DCB attributes for members
Difference between PDSE and PDS
PDSE Characteristics | PDS Characteristics |
Data set has a 123-extent limit. | Data set has a 16-extent limit. |
Directory is expandable and indexed by member name; faster to search directory. | Fixed size directory is searched sequentially. |
PDSEs are device independent: records are re-blockable and the TTR is simulated as a system key. | For PDSs, TTR addressing and block sizes are device dependent. |
Uses dynamic space allocation and automatically reclaims space.
Using IEBCOPY or DFSMSdss COPY to copy all members of a PDSE creates a larger index than copying members one at a time. Recommendation: Allocate a PDSE with secondary space to permit the dynamic variation in the size of the PDSE index. |
Must use IEBCOPY compress to reclaim space. |
You can create multiple members at the same time. | You can create one member at a time. |
PDSEs contain either program objects or data members but not both. z/OS MVS Program Management: User’s Guide and Reference describes the advantage of program objects over load modules. | Whereas PDSs contain data members or load modules but there is no attempt to keep data members and load modules from being created in the same PDS. |
Replacing a member without replacing all of its aliases causes the alias entries to be deleted. | Replacing a member without replacing all of its aliases causes the alias entries to be abandoned. They are “orphans” and eventually might point to the wrong member. |
Alias names for program objects, in a PDSE, can be up to 1024 bytes long. To access these names, you must use the DESERV interfaces. Primary names for program objects are restricted to 8 bytes. | All names for PDS members must be 8 bytes long. |
Read JCL blogs : Click Here
SYNCSORT Manual : Click Here