BLDL - Build List
BLDL (Build List) is a z/OS Program Management SVC (Supervisor Call) that retrieves directory information for one or more members within a partitioned dataset (PDS) or partitioned dataset extended (PDSE). It provides details such as the member's entry point, length, and alias information, without actually loading the program into memory. Its primary purpose is to allow programs to query library contents efficiently.
Key Characteristics
-
- SVC 26: BLDL is invoked via Supervisor Call 26, making it a privileged operation executed in supervisor state, managed by the z/OS Program Management component.
- Directory Information Retrieval: Its core function is to read and return specific fields from the directory entry of a PDS or PDSE member, including the entry point address, length of the module, and alias indicators.
- Parameter List Driven: Requires a specific parameter list (BLDL parameter list) passed in register 1, which specifies the DCB address of the library, the number of members, and the storage area where the retrieved information will be placed.
- No Module Loading: Unlike
LOADorLINK, BLDL does not load the executable module into virtual storage; it only provides metadata about the module, making it a lightweight operation. - Multiple Member Support: Can be used to retrieve information for a single member or build a list of directory entries for multiple specified members in a single invocation, optimizing I/O operations.
- Performance Optimization: Often utilized by system utilities and application programs to quickly check for the existence of a module or gather its attributes without incurring the overhead of a full load operation.
Use Cases
-
- Program Existence Checking: An application might use BLDL to verify if a specific program or subroutine exists in a library before attempting to
LOADorLINKto it, preventing potential program abends. - Dynamic Program Management: A system utility or application might use BLDL to determine the size or entry point of a module before dynamically allocating memory or preparing for its execution.
- Library Scanners/Browsers: Tools that list the contents of PDS/PDSE libraries often use BLDL to efficiently gather directory information for all members, displaying attributes like size, entry point, and creation date.
- Alias Resolution: BLDL can be used to identify if a member name is an alias and retrieve the true member name, or vice-versa, which is crucial for correct program identification and management.
- System Program Loading: Internal z/OS components and system utilities frequently use BLDL to locate and verify system modules before initiating their loading or execution, ensuring integrity and availability.
- Program Existence Checking: An application might use BLDL to verify if a specific program or subroutine exists in a library before attempting to
Related Concepts
BLDL is fundamental to Program Management in z/OS, working closely with other macros like LOAD, LINK, and XCTL. While LOAD brings a module into virtual storage and LINK/XCTL transfer control, BLDL provides the preliminary directory information *about* the module without loading it. It operates directly on Partitioned Datasets (PDS) and Partitioned Datasets Extended (PDSE), which are the primary library structures for storing executable modules (load modules) and other data. As an SVC (Supervisor Call), it's a core system service, similar to other SVCs that provide low-level system functions, often used by AMODE(31) or AMODE(64) programs.