Input/Output Control System
| Company type | Software utilities |
|---|---|
| Industry | Computer software |
| Founded | 1950s |
| Products | Low-level record input/output manipulation utilities |
| Owner | IBM |
Input/Output Control System (IOCS) designates a collection of IBM software utilities developed for early mainframe and entry-level computers, enabling low-level manipulation of records on peripheral hardware. IOCS provided capabilities similar to those found in contemporaneous systems such as the File Control Processor (FCP) within RCA 3301 Realcom, GEFRC in GECOS, and subsequently Record Management Services (RMS) in DEC's VAX/VMS (and later OpenVMS).
During the 1950s and 1960s, data was commonly structured into records tailored to the storage medium or specific application requirements. IOCS allowed assembly language programmers to perform record input/output operations without needing to manage device-specific complexities or record blocking mechanisms. It offered runtime support for I/O operations across multiple compiler environments.
Many computing environments of that era did not feature advanced operating systems; instead, programs invoked IOCS routines either within resident monitor programs or through macros that expanded into IOCS calls. IOCS often operated alongside Simultaneous Peripheral Operations On-line (SPOOL) software.
Operating at a higher abstraction level than PC BIOS or BDOS, IOCS focused exclusively on record-oriented input/output since the underlying systems did not support character-based I/O. Versions of IOCS were available for various IBM models including 705 III, 1401/1440/1460, 1410/7010, 7070/7072/7074, 7080, and 7040/7044/7090/7094. These implementations influenced the data management components of System/360; the IOCS designation continued through DOS/360 to z/VSE, differentiating between Logical IOCS (LIOCS) and Physical IOCS (PIOCS).
Although specific technical details differ among various IOCS implementations, their fundamental principles remain largely uniform. This article focuses primarily on the 7070 version of IOCS. When multiple continuation lines occur but are not critical for understanding, they are abbreviated with ellipses (...).
Structure
An IOCS-based program is required to:
For the IBM 7070 system, these tasks are accomplished using declarative statements and macro instructions within the 7070 Autocoder language.
Identify required IOCS services
IOCS accommodated several categories of input/output devices:
- Disk storage units
- Magnetic tape drives
- Unit record equipment, where record size depended on the media type, such as:
- Paper with printed lines
- Punched cards with 80 columns
Not every application required all available IOCS services—for instance, features like checkpointing or label handling were optional. In a 7070 IOCS program, device types and desired services must be declared using one or more DIOCS statements:
These declarations allocate index registers for IOCS use, designate channels, indicate if SPOOL software operates concurrently, and define processing parameters. The END DIOCS statement initiates assembly of IOCS routines unless a preassembled library is linked instead. When specifying tape in D729 format, the general form may be omitted.
In other versions of IOCS, comparable functionality is often specified through control cards.
Create control blocks for individual files
Each file managed by an IOCS program requires a dedicated control block containing its unique attributes. For the 7070 variant of IOCS, tape files are described via entries in the File Specification Table, which is created by DTF statements; disk and card files have distinct control blocks assigned through DDF or DUF statements.
<syntaxhighlight lang="text">
11 22
6 56 01
DTF OUT
FCHANNEL 2
... ...
DAFILE DDF
IODEVICE 5
DREFMODE 4
... ...
DUF CONSFILE,1,4,CARDRDW,CARDIX,CONSEOF,CONSERR
</syntaxhighlight>
Other implementations of IOCS frequently employ control cards to perform analogous tasks.
File processing
The program establishes a tape file on channel 1 labeled OUT, a sequential disk file identified as DAFILE (1301/1302), and a card file called CONSFILE.
Within 7070 IOCS, processing macros are used by programs to indicate the required operations.
<syntaxhighlight lang="text">
11 22
6 56 01
OPEN CONSFILE,OUT
LOOP GET CONSFILE
PUT OUT
B LOOP
CONSEOF CLOSECONSFILE,OUT
</syntaxhighlight>
In alternative IOCS versions, equivalent tasks are carried out through direct subroutine invocations.
See also
- BIOS
- Sharp IOCS, a comparable system found on Sharp's 8-bit handheld computers