PDSE and PDS differences

Table 1 shows the significant differences between PDSEs and PDSs:
Table 1. PDSE and PDS differences
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 reblockable 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.

Tip: 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.
Support generations for members, with version 2 PDSEs. Do not support generations for members.
An S002-89 abend occurs when attempting to read a member of a PDSE that is RACF EXECUTE protected. This is not allowed even if the user is in supervisor state. An S016-08 abend occurs when attempting to read a member of a PDS that is RACF EXECUTE protected but the user is not in supervisor state.
The "fast data access" function of the program management binder should be used to read a program object from a PDSE. This will convert the program object to a documented format. BPAM, BSAM, or QSAM may be used to read a load module from a PDS.