Input/Output Control System (IOCS) is any of several packages on early IBM entry-level and mainframe computers that provided low level access to records on peripheral equipment. IOCS provides functionality similar to 1960s packages from other vendors, e.g., File Control Processor (FCP)[1] in RCA 3301 Realcom Operating System, GEFRC[2]inGECOS, and to the later Record Management Services[3] (RMS) in DECVAX/VMS (later OpenVMS.)
Computers in the 1950s and 1960s typically dealt with data that were organized into records either by the nature of the media, e.g., lines of print, or by application requirements. IOCS was intended to allow Assembler language programmers to read and write records without having to worry about the details of the various devices or the blocking of logical records into physical records. IOCS provided the run time I/O support for several compilers.
Computers of this era often did not have operating systems in the modern sense. Application programs called IOCS routines in a resident monitor, or included macro instructions that expanded to IOCS routines.
Although some technical details and nomenclature are different among the various IOCS packages, the fundamental concepts are the same. For concreteness, the discussion and examples in this article will mostly be in terms of 7070 IOCS.[7][8] Also, multiple continuation lines will be shown as ellipses (...) when they don't serve to illustrate the narrative.
Some services offered by IOCS were not needed by all applications, e.g., checkpoints, label processing. An IOCS program must identify the particular devices types and services it uses. A 7070 IOCS program must specify one or more DIOCS[7]: 16–19 [15]: 22–25 statements:[b]
11 22
6 56 01
GENERAL DIOCSgeneral parameters
TAPE DIOCSD729,tape parameters
DISK DIOCSD1301,disk parameters
END DIOCS
These declarative statements identify index registers reserved for the use of IOCS, indicate channels used, indicate whether the program is to coexist with SPOOL and provide processing options. The END DIOCS statement causes the assembly of IOCS unless a preassembled version is requested. The first (general) form is omitted when the D729 form is used.
In some other IOCS packages similar functions are provided by control cards.
An IOCS program must create a control block for each file, specifying information unique to the file. For 7070 IOCS these are entries in the File Specification Table for tape files, each of which is generated by a DTF[7]: 19–26 [15]: 26–28 statement, or separate control blocks generated by DDF[8]: 31–37 [15]: 29–30 or DUF[7]: 44–47 [15]: 31–33 statements.
Deitel, Harvey M. (1983). An Introduction to Operating Systems. Addison Wesley Systems Programming Series. Addison Wesley. pp. 10–11, 35, 158. ISBN0-201-14473-5.