Job Entry Subsystem 2/3
JCLは、オープン系における、MS-DOSやWindowsのバッチファイルや、UNIX系のシェルスクリプトなどに相当するが、オープン系のこれらは補助的なものであるのと異なり、MVS系のJCL(およびJCLを処理するJES)は必須であり、プログラム(プログラマー)と運用管理(オペレーター)を分離している。
MVS系では、JCL上で明示指定しない限り、プログラムがディスク上のファイル(データセット)を読む事も書く事も一切できないのである(ダイナミックアロケーションも基本的には同様)。JCLを記述・保守する手間がかかる反面、そのプログラムがプログラム自体の知識が無くても使用されているファイル(データセット)を把握でき、またファイル名や配置場所の変更なども容易に(プログラム自体や設定ファイルの変更リスクを負うことなく)行える。
「ユーザーがコンピュータ全体を支配する。ユーザーが便利な方が良い」オープン系と、「最初から企業向けに役割分担されている。管理されている方が良い」メインフレームの、基本思想や文化の違いと言える。
ジョブ(バッチの単位)の管理実行や、その記述言語である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系では当初はJCS(Job Control Statement)と呼ばれ、機能や構文が異なる。
またIBM互換OSである富士通のMSP/XSP、日立製作所のVOS3にもJCLがある。日本電気のACOSには、種類によっては類似のジョブ制御言語が存在する。