# Input/Output Configuration Program

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Input/Output_Configuration_Program
> Markdown URL: https://mediated.wiki/source/Input/Output_Configuration_Program.md
> Source: https://en.wikipedia.org/wiki/Input%2FOutput_Configuration_Program
> Source revision: 1335232022
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

This article is about Input/Output Configuration Program. For the IOCP API, see [Input/output completion port](/source/Input/output_completion_port).

The **Input/Output Configuration Program (IOCP)** is a program developed by [IBM](/source/IBM) for use on [IBM mainframes](/source/IBM_mainframe). The IOCP is used to create and update configuration information for input/output devices stored on Input/Output Configuration [Data Sets](/source/Data_set_(IBM_mainframe)) (IOCDS). It was released with the [S/370-XA](/source/IBM_System/370-XA) instruction set architecture made available in April 1983, which introduced a [channel subsystem](/source/Channel_I/O) for managing I/O queuing, which was previously handled by the [operating system](/source/Operating_system).

Direct use of IOCP has been mostly superseded by the Hardware Configuration Definition (HCD) utility in [ESA/390](/source/IBM_Enterprise_Systems_Architecture#ESA/390_architecture) and [z/Architecture](/source/Z/Architecture) machines.

## History

In the original [S/360](/source/IBM_System/360) and [S/370](/source/IBM_System/370) architectures, each processor had its own set of I/O channels and addressed I/O devices with a 12-bit *cuu* address, containing a 4-bit channel number and an 8-bit unit (device) number to be sent on the channel bus in order to select the device; the operating system had to be configured to reflect the processor and *cuu* address for each device. The operating system had logic to queue pending I/O on each channel and to handle selection of alternate channels. Initiating an I/O to a channel on a different processor required causing a [shoulder tap](/source/Shoulder_tap_(software)) interrupt on the other processor so that it could initiate the I/O.

Starting with the [IBM 3081](/source/IBM_3081) and [IBM 4381](/source/IBM_4381) in [S/370-Extended Architecture](/source/IBM_System/370-XA)[1] mode, IBM changed the I/O architecture to allow the [Channel Subsystem](/source/IBM_System/370-XA#Channel_subsystem) to handle the channel scheduling that the operating system handled in S/370 mode. The new I/O architecture used a 16-bit **subchannel number**, a 16-bit **device number** and an 8-bit **Channel Path Identifier** (**Channel Path Id** or **CHPID**); the Channel Subsystem was responsible for mapping the **subchannel number** to the channel and device numbers, for queuing I/O requests and for selecting from the available paths.

Starting with [z990](/source/IBM_Z#IBM_zSeries_family), IBM introduced the concept of a **Logical Channel Subsystem**[2] (**LCSS**); each physical channel (of 1024) has a unique **Physical Channel Path Identifier** (**PCHPID**), each LCSS has a CHPID to PCHPID mapping and each LPAR is assigned to one LCSS.

Starting with [System z9](/source/System_z9) running [z/OS](/source/Z/OS) 1.7, IBM offered the multiple-subchannel set facility, which allowed up to four independent sets of 64 Ki subchannels.[3]

The installation was responsible for defining the **Input/Output Configuration Data Set**s (**IOCDS'**s), and the operator could select a specific **IOCDS** as part of a [power on reset](/source/Power_on_reset) (POR). **Input/Output Configuration Program** (**IOCP**)[4][5][6] is a program for IBM mainframes that compiles a description of the [Channel Subsystem](/source/IBM_System/370-XA#Channel_subsystem) and [LPAR](/source/LPAR)[7] configuration, optionally loading it into an Input/Output Configuration [Data Set](/source/Data_set_(IBM_mainframe)) (IOCDS); it recognizes the syntax of [MVS Configuration Program](/source/MVS_Configuration_Program) (MVSCP)[8] input, and there is no need to maintain separate input files.

The direct use of IOCP and [MVSCP](/source/MVS_Configuration_Program) has been mostly supplanted by Hardware Configuration Definition[9](HCD).

## See also

- [Channel I/O](/source/Channel_I/O)
- [Computer types](/source/Computer_types)
- [History of computing](/source/History_of_computing)
- [Mainframe computer](/source/Mainframe_computer)
- [Timeline of computing](/source/Timeline_of_computing)

## References

1. IBM (January 1987). *IBM System/370 Extended Architecture Principles of Operation*. Second Edition. SA22-7085-1.

1. ["4.1 Multiple Logical Channel Subsystem (LCSS)"](https://www.redbooks.ibm.com/redbooks/pdfs/sg246947.pdf). *IBM IBM eServer zSeries 990 Technical Guide*. Second ed. May 2004. pp. 110–115. SG24-6947-01. Retrieved May 29, 2023.

1. [*Multiple Subchannel Sets: An Implementation View*](https://www.redbooks.ibm.com/redpapers/pdfs/redp4387.pdf). [IBM](/source/IBM). Retrieved May 28, 2023.

1. IBM (February 1993). [*Enterprise System/9000 Enterprise System/3090: Input/Output Configuration Program User's Guide and ESCON Channel-to-Channel Reference*](http://publibfp.dhe.ibm.com/cgi-bin/bookmgr/FRAMESET/DA0A4005/CCONTENTS?DT=19930212144028). Sixth Edition. GC38-0097-05.[dead link]

1. IBM. [*Input/Output Configuration Program User's Guide and ESCON Channel-to-Channel Reference*](http://publibfp.dhe.ibm.com/cgi-bin/bookmgr/BOOKS/da4a4001/CCONTENTS). GC38-0401.[dead link]

1. IBM. *Stand-Alone IOCP User's Guide*. GC38-0456.

1. IBM (August 1993). [*Enterprise System/9000 Enterprise System/3090: Processor Resource/Systems Manager Planning Guide*](http://publibfp.dhe.ibm.com/cgi-bin/bookmgr/FRAMESET/DA3A6010/CCONTENTS?DT=19930813120744). Eleventh Edition. GA22-7123-10.[dead link]

1. IBM (March 1993). [*MVS/ESA: MVS Configuration Program MVS/ESA System Product: JES2 Version 4 JES3 Version 4*](http://publibfp.dhe.ibm.com/cgi-bin/bookmgr/BOOKS/IEA4G702/CCONTENTS?DT=19930625065231). Fifth Edition. GC28-1615-04.[dead link]

1. IBM. [*z/OS Hardware Configuration Definition Planning*](http://publibz.boulder.ibm.com/epubs/pdf/iea2g890.pdf). GA22-7525-13.[dead link]

## External links

- [Input/Output Configuration Program User's Guide and ESCON Channel-to-Channel Reference, GC38-0401-00](https://archive.today/20121209075134/http://publibfp.dhe.ibm.com/cgi-bin/bookmgr/BOOKS/da4a4001/CCONTENTS)
- [z/OS V1R1.0 HCD Planning, GA22-7525-00](https://archive.today/20121208184433/http://publibfp.dhe.ibm.com/cgi-bin/bookmgr/BOOKS/iea2g800/CCONTENTS)

---
Adapted from the Wikipedia article [Input/Output Configuration Program](https://en.wikipedia.org/wiki/Input%2FOutput_Configuration_Program) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Input%2FOutput_Configuration_Program?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
