Job Entry Subsystem 2/3

Job Entry Subsystem（JES、ジョブ入力サブシステム）は、IBMのメインフレーム用オペレーティングシステム (OS) の MVS系（OS/360、MVS、OS/390、z/OS）が使用する、ジョブの受け取り、スケジューリング、処理結果の出力を行うサブシステムである。

 概要 
ジョブ(バッチの単位)の管理実行や、その記述言語であるJob Control Language (JCL) は、MVS系および互換OSの特徴的な機能と言える。純粋なバッチ(純バッチ)の他、VTAM、TSO、IMS、CICSなどの他のサブシステム(いわゆる常駐プロセス)も、「STC」という形でJES経由で起動するため、JESはMVS系OSでは事実上の必須機能である。

当初はMVS本体とは別売(オプション)だったが、その後「MVS/JES2」「MVS/JES3」のようにセットとなり、OS/390以降では他の大多数のサブシステムと同様、OSパッケージ自体に含まれた。ただしJES自体の基本機能は変わっていない。

JESには2つのバージョン、JES2とJES3がある。この2つのバージョンには、非常に小さい違いしかない。投入するジョブを書くJCL にも、ほんの小さな違いがあるだけである。

なお、同じIBMメインフレーム用OSでも、VSE系では当初はJob Control Statement (JCS) と呼ばれ、機能や構文が異なる。

またIBM互換OSである富士通のMSP/XSP、日立製作所のVOS3にもJCLがある。日本電気のACOSには、種類によっては類似のジョブ制御言語が存在する。

 比較 
JCLは、オープン系における、DOSやWindowsのバッチファイルや、Unix系のシェルスクリプトなどに相当するが、オープン系のこれらは補助的なものであるのと異なり、MVS系のJCL（およびJCLを処理するJES）は必須であり、プログラム（プログラマ）と運用管理（オペレータ）を分離している。

MVS系では、JCL上で明示指定しない限り、プログラムがディスク上のファイル（データセット）を読む事も書く事も一切できないのである（ダイナミックアロケーションも基本的には同様）。JCLを記述・保守する手間がかかる反面、そのプログラムがプログラム自体の知識が無くても使用されているファイル（データセット）を把握でき、またファイル名や配置場所の変更なども容易に（プログラム自体や設定ファイルの変更リスクを負うことなく）行える。

「ユーザーがコンピュータ全体を支配する。ユーザーが便利な方が良い」オープン系と、「最初から企業向けに役割分担されている。管理されている方が良い」メインフレームの、基本思想や文化の違いと言える。

 歴史 
JES2 (Job Entry Subsystem 2) は、1960年代半ばにNASAのために IBMが設計したHASP (the Houston Automatic Spooling Program) から来たものである。JES3 (Job Entry Subsystem 3) は、OS/360のレコードI/OシステムASP (the Attached Support Processor) から来たものである。

JES3は、JES2よりも、ネットワークを用いたシステムに向いている。JES2は、どちらかというとシングルプラットフォーム、シングルタスク環境に適しているシステムである。

HASPは、スケジューリングやジョブフローのコントロールといった、ジョブマネージメント、データマネージメント、タスクマネージメント機能を提供するコンピュータのプログラム（群、コンピュータサブシステム）である。JES2を構成する大部分のプログラムの名前や、JESがオペレータ宛てに出力するメッセージの中に、HASPはまだ生き残っている。JES2は、HASP IIの機能（受け取ったジョブのシステムへの投入、ジョブが生成・出力したすべてのアウトプットデータの処理）の拡張の1つである。

つまり、JESは次のようなタスク・機能である。すなわち、MVSの下で、ジョブを投入し、アウトプットを出力し、それらの実行スケジュールをコントロールする。JESはOS MVSのための効果的なスプーリング、スケジューリング、マネージメントを提供するようにデザインされている。しかしこの説明は、なぜMVSがJESを必要とするのかを説明していない。基本的に、たくさんのタスクへのジョブプロセッシング機能を切り離すことにより、MVSがより効率的に稼動することを目指したものである。大抵の場合、システム資源は各々のジョブへ割り当てられたタスクによって混み合っており、他のタスクは資源が利用可能になるのを待っている状態になっている。そこでシンプルに、MVSをジョブおよびシステム資源のマネージメント機能と、OSのより基本的な機能と に分けたのである。これによって、（アプリケーション）プログラムがデータを処理する前と後のジョブのマネージメントをJESが受け持ち、このマネージメントと平行して、OS本体 (MVS) は（アプリケーション）プログラムによるデータ処理のコントロールを受け持つことになったのである。

 関連項目 
メインフレーム
MVS
OS/390
z/OS
JCL
IMS
CICS

Job Entry Subsystem 2/3
Category:ジョブ・スケジューリング