Programming Support for APPC/MVS Callable Services
The APPC/MVS callable services can be divided into five types as shown in Figure 1. Each type is explained in more detail following the figure.
- CPI Communications Calls
- Common Programming Interface (CPI) Communications calls allow
high-level language programs to communicate regardless of the system
on which they are running. High-level language programs use the CPI
Communications calls to establish conversations and pass data back
and forth. When programs in z/OS use these calls, the underlying
implementation may be different from another system, but the results
are equivalent.
For example, a distributed application written in C could have part of the application on a workstation configured for APPC and the other part on an z/OS system running APPC/MVS. The two parts of the application could communicate using the same CPI Communications calls, even though their underlying environments are different. Programs that use only the CPI Communications calls can be ported to many other systems.
The CPI Communications calls use the SNA LU 6.2 architected verbs. Each communication call is prefixed by the letters CM; for example, CMALLC (Allocate). For more information, including languages supported, see z/OS MVS Programming: Writing Transaction Programs for APPC/MVS .
- APPC/MVS TP Conversation Calls
- The APPC/MVS TP conversation calls are the z/OS implementation
of the SNA LU 6.2 architected verbs and are prefixed by the letters
ATB. These conversation calls are similar to the CPI Communications
calls except that the z/OS versions take advantage of specific z/OS
functions. For example, the z/OS Send_Data call (ATBSEND) can send
data residing in a data space—something the CPI Communications Send
call cannot do.
Like the CPI Communications calls, the APPC/MVS TP conversation calls can be issued from a high-level language such as COBOL, C, PL/I, FORTRAN, and REXX, or from assembler language programs.
Unlike the CPI Communications calls, programs issuing the z/OS calls are not portable to other systems.
- APPC/MVS TP Advanced Calls
- The z/OS advanced TP calls provide unique, non-LU 6.2 architected
services to TPs running in z/OS. These calls provide specific z/OS
functions, such as the ability to extract information about communications
resources used by APPC/MVS transaction programs.
The advanced calls can be issued from high-level languages other than REXX, and from assembler language programs.
- APPC/MVS Allocate Queue Services Calls
- The APPC/MVS
allocate queue services calls allow a server address space on z/OS
to own and manage inbound allocate requests. Servers own allocate
requests by registering for them through the Register_For_Allocates
callable service.
Rather than directing such requests to a transaction scheduler, APPC/MVS places allocate requests for which a server has registered on a structure called an allocate queue. APPC/MVS queues allocate requests on a first-in, first-out (FIFO) basis. Servers process allocate requests by selecting them from allocate queues and performing the requested function.
The allocate queue services, which can be called from a high-level language such as COBOL, C, PL/I, FORTRAN, and REXX, or from assembler language programs, are described in z/OS MVS Programming: Writing Servers for APPC/MVS.
The allocate queue services calls are not based on the LU 6.2 architecture.
- APPC/MVS System Service Calls
- Another type of APPC/MVS callable service provides access to system
services not normally used by transaction programs. These services
are used by other z/OS components, subsystems, and transaction schedulers,
which run in supervisor state or PSW key 0-7. The system services
calls can be called from assembler and high-level languages other
than REXX, and are documented in z/OS MVS System Messages, Vol 3 (ASB-BPX).
The z/OS system service calls are not based on the LU 6.2 architecture.