入出力制御システム(IOCS )は、初期のIBMエントリーレベルコンピュータおよびメインフレームコンピュータに搭載されていた複数のパッケージの総称で、周辺機器上のレコードへの低レベルアクセスを提供するものでした。IOCSは、1960年代に他社から提供されたパッケージ、例えばRCA 3301 Realcom Operating SystemのFile Control Processor(FCP)[ 1 ] 、 GECOSのGEFRC [ 2 ]、そして後のDEC VAX/VMS(後のOpenVMS )のRecord Management Services [ 3 ](RMS)などと同様の機能を提供していました。
1950年代から1960年代にかけてのコンピュータは、通常、印刷媒体の特性(例えば、印刷行)またはアプリケーションの要件に基づいてレコードに整理されたデータを扱っていました。IOCSは、アセンブリ言語プログラマが、さまざまなデバイスの詳細や論理レコードを物理レコードにブロック化することを気にすることなく、レコードの読み書きができるようにすることを目的としていました。IOCSは、いくつかのコンパイラに対して実行時I/Oサポートを提供しました。
この時代のコンピュータには、現代的な意味でのオペレーティングシステムが搭載されていないことが多かった。アプリケーションプログラムは、常駐モニタ内のIOCSルーチンと呼ばれたり、IOCSルーチンに展開されるマクロ命令を含んでいたりした。
場合によっては[ 4 ] IOCSは同時周辺機器オンライン操作(SPOOL)[ 5 ]ソフトウェアと共存するように設計されていました。
アクセスレベルは、PC の世界におけるBIOSやBDOSが提供するレベルよりも高い。実際、IOCS は文字指向 I/O をサポートしていない。これは主に、IOCS が設計されたシステムがそれをサポートしていなかったためである。IOCS のバージョンは、IBM 705 III、[ 6 ] 1401/1440 /1460、1410 / 7010、7070 /7072/7074、[ 7 ] [ 8 ] [ 9 ] 7080 [ 10 ]および7040/7044/7090/7094 [ 11 ]に存在した。これらのシステムは、System/360のオペレーティングシステムのデータ管理コンポーネントに大きな影響を与えた[ 12 ] 。IOCS という名称は、 DOS/360からz/VSEまで引き継がれ、[ 13 ]論理 IOCS ( LIOCS ) [ 14 ]と物理 IOCS ( PIOCS ) [ 14 ]の区別がなされた。
さまざまな IOCS パッケージ間で技術的な詳細や用語に違いはあるものの、基本的な概念は同じです。具体的にするために、この記事での議論と例は主に 7070 IOCS に関して行われます。[ 7 ] [ 8 ]また、説明に役立たない複数の継続線は、省略記号 (...) で示されます。
IOCSプログラムは3つのことを行う必要があり、それぞれについては以下の小節で説明します。
7070の場合、これらは7070オートコーダー[ 15 ] [ 16 ]の宣言文とマクロ命令を使用して行われます。
IOCSは複数のクラスのI/O機器をサポートしていました。
IOCS が提供するサービスの中には、チェックポイントやラベル処理など、すべてのアプリケーションで必要とされるわけではないものもありました。IOCS プログラムは、使用する特定のデバイスの種類とサービスを識別する必要があります。7070 IOCS プログラムは、1 つ以上の DIOCS [ 7 ] : 16–19 [ 15 ] : 22–25ステートメントを指定する必要があります。 [ b ]
11月22日 6 56 01 一般DIOCS一般パラメータ TAPE DIOCSD729、テープパラメータ DISK DIOCSD1301、ディスクパラメータ END DIOCS
これらの宣言文は、IOCS 用に予約されたインデックス レジスタを識別し、使用されるチャネルを示し、プログラムがSPOOLと共存するかどうかを示し、処理オプションを提供します。END DIOCS 文は、事前アセンブルされたバージョンが要求されない限り、IOCS のアセンブルを実行します。D729 形式を使用する場合は、最初の (一般的な) 形式は省略されます。
他のIOCSパッケージでは、同様の機能は制御カードによって提供される場合がある。
IOCS プログラムは、ファイルごとに制御ブロックを作成し、ファイル固有の情報を指定する必要があります。7070 IOCS の場合、これらはテープファイルのファイル仕様テーブルのエントリであり、それぞれが DTF [ 7 ] : 19–26 [ 15 ] : 26–28ステートメントによって生成されるか、DDF [ 8 ] : 31–37 [ 15 ] : 29–30または DUF [ 7 ] : 44–47 [ 15 ] : 31–33ステートメントによって生成される個別の制御ブロックです。
11月22日 6 56 01 DTFアウト Fチャンネル2 ... ... DAFILE DDF IODEVICE 5 DREFMODE 4 ... ... DUF CONSFILE、1、4、CARDRDW、CARDIX、CONSEOF、CONSERR 他のIOCSパッケージでは、同様の機能は制御カードによって提供される場合がある。
上記のコードは、チャンネル1上のテープファイルOUT、シーケンシャル1301/1302ディスクファイルDAFILE、およびカードファイルCONSFILEを定義します。
IOCS プログラムは、実行したいアクションを指定する必要があります。7070 IOCS では、これは処理マクロを使用して行われます。[ b ]
11月22日 6 56 01 OPEN CONSFILE,OUT ループしてCONSFILEを取得する 出す Bループ CONSEOF CLOSECONSFILE,OUT 他のIOCSパッケージでは、同様の機能は明示的なサブルーチン呼び出しによって提供される場合がある。