A
partitioned data set (
PDS) is a data set containing multiple
members, each of which holds a separate sub-data set, similar to a
directory in other types of
file systems. This type of data set is often used to hold
load modules (old format bound executable programs), source program libraries (especially Assembler macro definitions),
ISPF screen definitions, and
Job Control Language. A PDS may be compared to a
Zip file or
COM Structured Storage. A Partitioned Data Set can only be allocated on a single volume and have a maximum size of 65,535 tracks. Besides members, a PDS contains also a directory. Each member can be accessed indirectly via the directory structure. Once a member is located, the data stored in that member are handled in the same manner as a PS (sequential) data set. Whenever a member is deleted, the space it occupied is unusable for storing other data. Likewise, if a member is re-written, it is stored in a new spot at the back of the PDS and leaves wasted “dead” space in the middle. The only way to recover “dead” space is to perform file compression. Compression, which is done using the
IEBCOPY utility, moves all members to the front of the data space and leaves free usable space at the back. (Note that in modern parlance, this kind of operation might be called
defragmentation or
garbage collection;
data compression nowadays refers to a different, more complicated concept.) PDS files can only reside on
DASD, not on
magnetic tape, in order to use the directory structure to access individual members. Partitioned data sets are most often used for storing multiple
job control language files,
utility control statements, and executable modules. An improvement of this scheme is a
Partitioned Data Set Extended (PDSE or PDS/E, sometimes just
libraries) introduced with
DFSMSdfp for
MVS/XA and
MVS/ESA systems. A PDS/E library can store program objects or other types of members, but not both. BPAM cannot process a PDS/E containing program objects. PDS/E structure is similar to PDS and is used to store the same types of data. However, PDS/E files have a better directory structure which does not require pre-allocation of directory blocks when the PDS/E is defined (and therefore does not run out of directory blocks if not enough were specified). Also, PDS/E automatically stores members in such a way that compression operation is not needed to reclaim "dead" space. PDS/E files can only reside on DASD in order to use the directory structure to access individual members. == Generation Data Group ==