Basic partitioned access method

From Wikipedia, the free encyclopedia

In IBM mainframe operating systems, a basic partitioned access method (BPAM) is an access method for libraries with a specific structure, called partitioned datasets (PDS). BPAM is used in OS/360, OS/VS2, MVS, z/OS, and others. A PDS consists of members (that are internally identical to sequential data sets; a member cannot be a PDS itself), registered in a list called directory, and the combination of members and directory is a single dataset on disk. The directory contains a list of member's names (max. 8 characters) and member's addresses. Addresses are relative to the start of the dataset in order to allow the PDS to be moved to a different disk location.

While in theory such libraries can store any type of data, they are typically are used to store executable programs, or load modules, or what is called binaries in modern terms. The operating system requires all executable programs to be stored in libraries, because directory entries contain additional attribute information for load modules.

While executable programs typically are written to libraries by utility software such as a linkage editor and loaded by operating functions, BPAM also provides an API to programmers to access such libraries directly. The BPAM API is fairly similar to basic sequential access method (BSAM), but it adds functionality to process directories.

The closest parallel for PDSes in more modern operating systems such as Unix or Windows is the static library, such as produced by the ar utility. In fact, the nomenclature for libraries in make, lib(member), is directly derived from OS/360. It may be compared to a directory, that can contain only files, no subdirectories, and at the same time that is physically stored in a single file. The need for libraries relates to the fact that mainframe operating systems (until very recently) did not have a hierarchical file system. The number of files (called datasets) on mainframes must therefore be limited, for management and overhead reasons.[clarify] This calls for a subdivision of (some) datasets into members.