# IBM Advanced Program-to-Program Communication

In computing, Advanced Program to Program Communication or APPC is a protocol which computer programs can use to communicate over a network. APPC is at the application layer in the OSI model, it enables communications between programs on different computers, from portables and workstations to midrange and host computers. APPC is defined as VTAM LU 6.2 ( Logical unit type 6.2 )
APPC was developed in 1982 as a component of IBM's Systems Network Architecture (SNA). Several APIs were developed for programming languages such as COBOL, PL/I, C or REXX.
APPC software is available for many different IBM and non-IBM operating systems, either as part of the operating system or as a separate software package. APPC serves as a translator between application programs and the network. When an application on your computer passes information to the APPC software, APPC translates the information and passes it to a network interface, such as a LAN adapter card. The information travels across the network to another computer, where the APPC software receives the information from the network interface. APPC translates the information back into its original format and passes it to the corresponding partner application.
APPC is mainly used by IBM installations running operating systems such z/OS (formerly MVS then OS/390), z/VM (formerly VM/CMS), z/TPF, IBM i (formerly OS/400), OS/2, AIX and z/VSE (formerly DOS/VSE). Microsoft also includes SNA support in Microsoft's Host Integration Server. Major IBM software products also include support for APPC, including CICS, Db2, CIM and WebSphere MQ.
Unlike TCP/IP, in which both communication partners always possess a clear role (one is always server, and others always the client), APPC is a peer-to-peer protocol. The communication partners in APPC are equal, every application can be both server and client equally. The role, and the number of the parallel sessions between the partners, is negotiated over CNOS sessions (Change Number Of Session) with a special log mode (e.g. at IBM, 'snasvcmg'). Transmission of the data is made then by 'data sessions', their log modes can be determined in detail from the VTAM administrator (e.g. length of the data blocks, coding etc..).
It was also apparent to the architects of APPC that it could be used to provide operating system services on remote computers. A separate architecture group was formed to use APPC to enable programs on one computer to transparently use the data management services of remote computers. For each such use, an APPC session is created and used in a client–server fashion by the Conversational Communications Manager of Distributed Data Management Architecture (DDM). Message formats and protocols were defined for accessing and managing record-oriented files, stream-oriented files, relational databases (as the base architecture of Distributed Relational Database Architecture (DRDA)), and other services. A variety of DDM and DRDA products were implemented by IBM and other vendors.
With the increasing prevalence of TCP/IP, APPC has declined, although many IBM systems have translators, such as Enterprise Extender (RFC 2353), to allow sending APPC-formatted traffic over IP networks.
APPC should not be confused with the similarly named APPN (Advanced Peer-to-Peer Networking). APPC manages communication between programs, operating at the application and presentation layers. By contrast, APPN manages communication between machines, including routing, and operates at the transport and network layers.