Execute Channel Program
   HOME

TheInfoList



OR:

In
IBM mainframe IBM mainframes are large computer systems produced by IBM since 1952. During the 1960s and 1970s, IBM dominated the computer market with the 7000 series and the later System/360, followed by the System/370. Current mainframe computers in IBM' ...
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
s, Execute Channel Program (EXCP) is a macro generating a
system call In computing, a system call (syscall) is the programmatic way in which a computer program requests a service from the operating system on which it is executed. This may include hardware-related services (for example, accessing a hard disk drive ...
, implemented as a Supervisor Call instruction, for low-level device access, where the programmer is responsible for providing a '' channel program''—a list of device-specific commands (CCWs)—to be executed by I/O channels, control units and devices. EXCP for
OS/360 and successors OS/360, officially known as IBM System/360 Operating System, is a discontinued batch processing operating system developed by IBM for their then-new System/360 mainframe computer, announced in 1964; it was influenced by the earlier IBSYS/IBJOB a ...
is more specifically described in the OS System Programmer's Guide.; EXCP for
DOS/360 and successors Disk Operating System/360, also DOS/360, or simply DOS, is the discontinued first member of a sequence of operating systems for IBM System/360, System/370 and later mainframes. It was announced by IBM on the last day of 1964, and it was first d ...
is more specifically described in DOS Supervisor and I/O Macros. This article mostly reflects OS/360 through
z/OS z/OS is a 64-bit operating system for IBM z/Architecture mainframes, introduced by IBM in October 2000. It derives from and is the successor to OS/390, which in turn was preceded by a string of MVS versions.Starting with the earliest: ...
; some details are different for TOS/360 and DOS/360 through z/VSE.


Specifying datasets

Using EXCP, legacy devices and legacy datasets may be operated on with relatively high performance. EXCP devices are OPENed (that is, are made available to the application) by specifying the Data Control Block (DCB) for OS and the DTFPH for DOS.


Specifying I/O operations

For OS/360 through z/OS, the program provides an ''Input/Output Block'' (IOB) to EXCP; if the program executes an EXCP to multiple IOBs, the system processes them in the order that they were requested. For DASD the IOB includes a seek address, ''IOBSEEK'', in the format MBBCCHHR, where M is the extent, BB is the bin for a data cell, CCHH is the cylinder and head, and R is the record number.


Appendages

"An appendage is a programmer-written routine that provides additional control over I/O operations during channel program execution." A comprehensive list of ''appendages'' ( exits in the EXCP context) allows authorized programs to override or augment many of the system security and data integrity checks. Most of these appendages are supported for compatibility with earlier instances of the OS, but the functions of several have been modified or extended for MVS. The appendages are specified in the DCB as the last two characters of the module name IGG019xx, where xx = WA to Z9, inclusive. These module names are reserved for installation-written appendages. Any other name of the form IGG019xx is reserved for use by IBM access methods. Appendages must reside in SYS1.SVCLIB (SYS1.LPALIB in SVS or later instances of the OS).


Dataset integrity

Normally, when a program OPENs a DCB for EXCP, OPEN creates a ''Data Extent Block'' (DEB) containing each '' extent'' for the first volume of the associated dataset; however, for ''parallel mount'' OPEN creates a DEB containing all extents for all volumes. Each DEB is forward- and backward-chained to the DCB, and EXCP checks the chaining as a system security measure, as the DCB resides in unprotected user storage whereas the DEB resides in protected system storage, Subpool 253; in OS/VS1 and OS/VS2 EXCP uses DEBCHK to ensure that the DEB was created by OPEN. For DASD, EXCP checks that the seek address in the IOB is within one of the extents, and uses a ''Set File Mask'' to, e.g. indicate whether the extent is cylinder or track oriented, whether write is permitted; this prevents a seek out of the specified track (cylinder). If the programmer tries to read past the end of the track (cylinder), a ''unit check'' occurs and error recovery restarts the channel program with the next track (cylinder) of the current extent. If the operation goes beyond the end of the extent, EXCP calls the ''end of extent'' appendage, which may update the IOB and request either that EXCP reissue the request or that EXCP terminate it.


Legacy datasets only

EXCP is sometimes confused with a direct access storage device access method, but it is not for direct access storage devices exclusively; rather, it is a general purpose low-level device access interface which supports any ''legacy'' device type and any ''legacy'' dataset organization. For accessing ''all'' device types and ''all'' dataset organizations, the more general privileged Start Input/Output interface (STARTIO) is available in MVS/370 and subsequent instances of the OS although it is not an officially supported interface.


Simplified operations on direct access datasets

A variation of EXCP is Execute Direct Access Program (XDAP), which is used for accessing direct access storage only, and is provided for reading and updating existing direct access storage records. XDAP cannot be used to add records, but XDAP can be utilized along with BSAM or BPAM to effect record additions to such datasets, and several OS components utilize XDAP in this manner (the Linkage Editor, IEWL, in particular).


Telecommunications device access

EXCP may also be used to access communications devices attached to IBM 2701, 2702 and 2703 communications controllers and IBM 370x or Amdahl 470x front-end processors (and their respective follow-ons) operating in emulator mode (EP) or partitioned emulator mode (PEP).


Relationship to supervisor

EXCP's front-end is always in Task Control Block (TCB) mode, The normal mode for applications, as EXCP is a Type 1 SVC. In MVS/370 and subsequent instances of the OS, the EXCP processor invokes STARTIO to schedule execution of the channel program. Although the EXCP processor's back-end is always in
Service Request Block {{unreferenced, date=December 2019 A Service Request Block (SRB) is a data structure of MVS/370 and successor versions of IBM mainframe operating systems employed mainly, but not exclusively, by the Start Input/Output interface. An SRB may be co ...
(SRB) mode, the back-end contains emulation code which allows the appendages developed for earlier, pre-MVS instances of the OS, specifically for EXCP, to function largely as before and thereby to appear to be in TCB mode, for which these appendages were originally designed. This distinction can complicate conversion of certain roll-your-own access methods and applications to MVS.


Channel programs

System/360 channel programs are a sequence of commands which are executed by the channel and the I/O device. Channel programs can be located anywhere in main storage. The channel program is a sequence of ''Channel Command Words'' (CCWs), which may be executed sequentially unless a branch, called ''Transfer In Channel'' (TIC), is executed, or the channel returns a status modifier. Each CCW is a doubleword (eight bytes) as follows:
 bit     0      7 8                    31                                                  
        +--------+-----------------------+
        , Command ,  Data address          , 
        +--------+-----------------------+
         32  36     40    47 48        63
        +------+---+--------+------------+
        , Flags , 000, reserved,  count      , 
        +------+---+--------+------------+
Six commands are defined, in the low-order bits of the command field (0-7). The high-order four (or six) bits are ''modifiers'' ('M') for some commands, or are ignored. The commands are:
  0100 - Sense
  1000 - Transfer in Channel (TIC)
  1100 - Read backward
  --01 - Write
  --10 - Read
  --11 - Control
The data address (8-31) is the 24-bit address of a main storage buffer area to or from which the data is to be transferred. The flag bits (32-36) are defined as follows: The count field (48-63) indicate the number of bytes to be transferred by this command. All eight bits of commands that initiate I/O operations are passed to the device. "The modifier bits specify to the device how the command is to be executed." For example, for the IBM 2305 DASD the ''write'' command ('MMMMMM01'BX) may have the following values:


Notes


References

;S/360 : ;S/370 : ;S/370-XA : ;z/ARCH : ;DFSMSdfp : {{Mainframe I/O access methods IBM mainframe operating systems Computer file formats