Execute Channel Program in Real Storage
||This article needs additional citations for verification. (June 2012)|
In IBM mainframe operating systems, Execute Channel Program in Real Storage (EXCPVR) is a supervisor call for low-level device access, where the programmer is responsible for providing a list of device-specific CCWs, that is, a channel program, to be executed by I/O channels, control units and devices. Additionally, the programmer is expected and required to ensure that the input/output data areas are in real storage and are "fixed".
Relationship to Execute Channel Program (EXCP) 
EXCPVR may be viewed, historically, as a V=R (i.e., Virtual=Real) version of EXCP. However, EXCPVR is not restricted to V=R applications. Indeed, EXCPVR may refer to non-V=R data areas provided such data areas are "fixed" and the channel command words which reference such data areas have been translated from virtual to real addresses by the programmer using the LRA privileged instruction. EXCPVR was first introduced in SVS and was continued in MVS/370. Unlike EXCP, the user of EXCPVR must be authorized and must remain in supervisor mode and key throughout the EXCPVR process.
Support for Format 1 CCWs 
In the later instances of the OS, support was added for Format 1 CCWs, and, hence, for access to data areas which are "above the line".
Relationship to Supervisor 
EXCPVR's front-end is always in TCB mode as EXCPVR is a Type 1 SVC. In MVS/370 and subsequent instances of the OS, EXCPVR invokes STARTIO to schedule execution of the channel program, hence EXCPVR's back-end is always in SRB mode, but the back-end contains emulation code which allows the appendages developed for earlier, pre-MVS instances of the OS 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.