Introduction

MVS™ controls the flow of work through the system so that all programs obtain a fair share of the processing. To make efficient use of the system, you must understand the services that the system provides and observe the programming conventions for their use.

Most services described in this information can be used by authorized programs only. An authorized program is a program that runs with APF authorization, or runs in supervisor state, or runs with a PSW key of 0-7.

Some of the services can be used by any program, including those that run without APF authorization, or in problem program state, or with a PSW key of 8-F. Unless your program is authorized, you should use these services only if you have the approval of your installation‘s management.

The services, which you invoke by issuing macros or callable services, are described in the following information:
Subtask Creation and Control:
Occasionally, you can have your program executed faster and more efficiently by dividing parts of it into subtasks that compete with each other and with other tasks for execution time. This topic includes information about task creation, using an internal START, and communication with a problem program.
Program Management:
You can use the system to aid communication between segments of a program. This topic includes information about the residency and addressing mode of a module, loading a module, synchronous exits, checkpoint/restart, and re-entrant modules.
Serialization:
Portions of some tasks depend on the completion of events in other tasks, which requires planned task synchronization. Planning is also required when more than one program uses a serially reusable resource. Locking, the must-complete function, shared direct access storage devices, waiting for an event to complete, and indicating event completion are discussed in this topic. This topic also includes information about the global resource serialization latch manager, which authorized programs can use to serialize resources within an address space or within a single MVS system.
Reporting System Characteristics:
This topic describes collecting information about resources and their requestors, using the SRM reporting interface, and obtaining dispatchability data about address spaces.
Tracing Applications Using Component Trace:
Component trace provides common services for defining and collecting diagnostic information about components, subsystems, or applications.
Communication:
This information discusses several different forms of communication:
  • Interprocessor communication
  • Writing operator messages
  • Issuing operator commands
  • Routing operator commands in a sysplex environment
  • Extended MCS consoles.
Listening for System Events:
The event notification facility (ENF) allows an authorized program to listen for the occurrence of a specific system event. For example, a program could listen for a software record being written to the logrec data set. When the system writes the record to the logrec data set, control passes to a specified listener user exit routine. For a list of the system events that an authorized program can listen for, see ENF event codes and meanings.
Using a Service Request Block (SRB):
Asynchronous inter-address space communication is available through the use of an SRB and its associated SRB routine. This topic describes how you use the macros that initiate the running of an SRB routine and provide its recovery. It also describes how you can serialize the processing of an SRB routine and how to transfer control from an SRB to a TCB.
Virtual Storage Management:
Virtual storage allows you to write large programs without the need for complex overlay structures. This topic describes how to use the GETMAIN, FREEMAIN, and STORAGE macros to allocate and free virtual storage. It also includes descriptions of the VSM functions, available through the use of the VSMLIST, VSMLOC, and VSMREGN macros.
Accessing the Scheduler Work Area (SWA):
The SWA contains information about jobs that are currently in the system. This topic explains how to write a program that can access the information that the system stores in the SWA.
Virtual Lookaside Facility (VLF):
VLF is intended for use by authorized subsystems or major applications that perform repeated DASD operations on behalf of end users. VLF is a set of services that provide an alternate fast-path method of making frequently used, named data objects available to many users. This topic will help you decide whether to use VLF and will help you plan your use of the VLF macros.
Using the Cross-System Coupling Facility (XCF):
This topic, which contains information about the cross-system coupling facility, now appears in z/OS MVS Programming: Sysplex Services Guide.
Data-In-Virtual:
Data-in-virtual enables you to create, read, or update external storage data without the traditional GET and PUT macros. The data, which is not broken up into individual records, appears in your virtual storage as a string of contiguous bytes. You can access the data by using any instruction that you normally use to access data in your virtual storage. This technique also provides better performance than the traditional access methods for many applications.
Sharing Application Data (Name/Token Callable Services):
Name/token callable services allow a user to share data between two programs running under the same task, or between two or more tasks or address spaces. This topic includes descriptions of the levels of name/token pairs, ownership and deletion of the pairs, description of the levels for the cross memory uses of the name/token services, and an example of using the services.
Processor Storage Management:
The system administers the use of processor storage (that is, central and expanded storage) and directs the movement of virtual pages among auxiliary, expanded, and central storage in page size blocks. The services provided allow you to release virtual storage contents, load virtual storage areas into central storage, make virtual storage pages read-only or modifiable, and page out virtual storage areas from central storage.
Sharing Data in Virtual Storage (IARVSERV Macro):
This topic describes the IARVSERV macro, which provides services that allow programs to share virtual storage in address spaces or data spaces. The topic also includes information about the IARR2V macro, which converts a central storage address to a virtual storage address.
The Nucleus:
This topic includes descriptions of the functions available through the use of the DATOFF and NUCLKUP macros.
Providing Recovery:
When your program encounters an error, the program might end abnormally unless you provide recovery. To recover from errors, you can write routines called recovery routines that get control when the error occurs. These routines can attempt to correct the error and allow your program to resume normal processing. This topic explains recovery concepts and how to write recovery routines.
Processing Program Interruptions:
The system offers many services to detect and process abnormal conditions during system processing. Some conditions encountered in a program cause program interruptions or program exceptions. This topic includes how to specify user exit routines, using the SPIE or ESPIE macros, and function performed in user exit routines.
Dumping Virtual Storage (SDUMPX and SDUMP Macros):
This topic describes how to obtain SVC dumps using the SDUMPX and SDUMP macros. It includes deciding when to request a dump, using the SYS1.DUMPnn data set, defining the contents of the dump, and suppressing duplicate dumps.
Protecting the System:
This topic includes the maintenance of system integrity, the use of the authorized programming facility, the use of the resource access control facility, changing system status, and protecting low storage.
Exit Routines:
This topic contains information about asynchronous exit routines, timer disabled interrupt exit routines, and dynamic exits services. Dynamic exits services allow you to define exits and control their use within a program using the CSVDYNEX macro.
User-Written SVC Routines:

This topic contains information needed to write SVC routines. It includes the characteristics of the SVC routines, program conventions for SVC routines, and ways to insert SVC routines into the control program.

Accessing Unit Control Blocks (UCBs):
This topic describes how to obtain and use information about unit control blocks (UCBs) and about configuration changes in the system.
Dynamic Allocation:
This topic describes the functions provided by dynamic allocation. It describes installation options you can use to control the processing of dynamic allocation.
Requesting Dynamic Allocation Functions:
The topic includes a description of the parameter list used to request dynamic allocation functions, the return codes, error codes, and information codes.
Dynamic Output:
This topic explains how to use the JES2 and JES3 4.2.1 or later dynamic output facility. This facility enables a program to dynamically describe a system output data set's processing options and to dynamically allocate that data set.
Scheduler JCL Facility (SJF):
This topic describes how to use the Scheduler JCL Facility to manipulate text unit data that represents processing options for system output (sysout) data sets.
Processing User Trace Entries in the System Trace Table:
This topic describes formatting a USRn trace table entry, interpreting return codes from the formatter, and handling errors.
Using the Unit Verification Service:
This topic describes using the unit verification service to obtain information from the eligible device table.
Note: IMPORTANT -------- READ THIS
Keep in mind how the information uses the following terms:
  • The term registers means general purpose registers. If general purpose registers might be confused with other kinds of registers (such as access registers), the information uses the longer term general purpose registers.
  • Unless otherwise specified, the address space control (ASC) mode of a program is primary mode.
  • Many MVS macro services support callers in both primary ASC and access register (AR) ASC mode. Some of these services provide two macros that perform the same function; one macro can generate code and addresses appropriate for callers in primary mode, and the other macro can generate code and addresses appropriate for callers in AR mode.
    The names of the two macros are the same, except the macro that supports the AR mode caller ends with an "X". These pairs of macros are called X-macros. SNAPX is an example of an X-macro. SNAP is for primary mode callers and SNAPX is for primary or AR mode callers. As you use the X-macros, keep in mind the following information:
    • A parameter or function might apply only to the X-macro. (For example, the DSPSTOR parameter is valid only on SNAPX, not SNAP.)
    • Most of the parameters are available on both the X-macro and the non-X-macro.

    Macro descriptions in the z/OS MVS Programming: Assembler Services Reference ABE-HSP and the z/OS MVS Programming: Assembler Services Reference IAR-XCT help you use the X-macros correctly.