Execute Direct Access Program

In IBM mainframe operating systems, Execute Direct Access Program (XDAP) is a pseudo access method for accessing direct access datasets on a block by block basis. XDAP is more specifically described in the OS System Programmer's Guide.

Existing blocks
Existing blocks may be read or updated. The dataset may not be created nor extended using XDAP; for that purpose a true access method is required. XDAP may coexist with BSAM or BPAM, and several OS components are implemented in this way.

DASD address computation
The programmer is responsible for computing the full direct access block identifier, MBBCCHHR. System algorithms are available for calculating the MBBCCHHR from a TTRN. System data, in the form of "track capacity tables", are available for calculating the TTRN from a block number, for any direct access device type. Later versions of the OS facilitate accessing very large capacity devices by using the TRKADDR macro.

List and Execute Forms
List and Execute forms of XDAP are supported, whereby a prototype form, called the List Form, is expanded as data, and a functional form, called the Execute Form, is expanded as instructions. XDAP is also supported conventionally, in which case the two forms are combined and is expanded as inline data and instructions. The use of List and Execute Forms facilitates the development of re-enterable programs.

XDAP implicitly invokes EXCP
XDAP results in the EXCP supervisor call being executed, hence Execute Channel Program (EXCP) is implicitly embedded within XDAP. The IOB, which is the sole parameter to EXCP, is included as a data structure within the XDAP macro expansion as are the channel command words.

OPENing an XDAP dataset
XDAP must reference an OPENed DCB and a full direct access identifier. The DCB may be OPENed for input, for output or for input and output ("INOUT"), but all outputs must be update writes of existing blocks as XDAP does not support format writes. BSAM and BPAM are available for executing format writes (writes which add new blocks to the dataset, i.e. the initial or an additional block, and, particularly, the final block).

IOBSPSVC flag for XDAP and SAM and PAM coexistence
The IOBSPSVC flag (logically, the IOB's SAM and PAM SVC flag) is available, and which causes Sequential Access Methods appendages to be bypassed. This enhancement, which was first implemented with SVS, but was not retrofitted to previous versions of the OS, significantly facilitated processing a dataset already OPENed for BSAM or BPAM, while using XDAP.

Otherwise, certain pre-SVS SAM and PAM appendages could cause random supervisor storage overlays when presented with certain XDAP channel programs. As IBM did not guarantee system security and data integrity on pre-SVS systems, an obvious circumvention was to utilize only those XDAP channel programs which did not also utilize RPS as it was the RPS-type XDAP channel programs which were confusing the SAM and PAM appendages, thereby leading to random supervisor storage overlays.