JCL【Job Control Language】ジョブ制御言語
概要

JCLはスクリプト言語に分類され、バッチ処理やサブシステムの起動をジョブという単位で記述する。OSはこの記述を読み込み、ジョブ制御サブシステム(JES)を介してバッチキューへ投入し、内容に従って処理を実行する。多くのメインフレームシステムにおいて、アプリケーションの運用にJCLは欠かせない存在となっている。
ジョブの内部は「ジョブステップ」(job step)という単位で構成される。各ステップには、起動するプログラムやその格納場所、起動時のオプション、使用する入出力装置、割り当てる記憶容量、利用するファイルなどが記述される。データセットの割り当てはDD(Data Definition)文によって指定され、ファイルの配置やアクセス方法が明示される。
ステップ間の実行制御には条件分岐やマクロ(プロシージャ)を用いることもできる。各ステップの終了コードや条件コードを参照し、後続ステップの実行可否を判断する仕組みにより、処理の分岐や再実行条件の管理が可能となる。複数のジョブステップを組み合わせることで、複雑な一連の処理を一つのジョブとしてまとめて実行できる。
JCLの仕様は機種やOSごとに異なっている。ハードウェアメーカーやOSの違いにより「JCS」(Job Control Statement)や「ECL」(Executive Control Language)など名称も異なるものの、ジョブの制御という基本的な目的は共通している。かつては命令をパンチカードに記録してコンピュータに読み込ませていた名残りから、一行が独立したカード形式の構文を持つものが多い。
一般的な手続き型言語のように演算やアルゴリズムを直接記述するものではなく、既存プログラムの実行方法を記述するための言語である。LinuxなどのUNIX系OSにおけるシェルスクリプトや、Windowsにおけるバッチファイル、PowerShellスクリプトに近い存在と言える。ただし、JCLではジョブスケジューリングやリソースの割り当てをOSレベルで厳密に扱うという点でこれらのスクリプトとは異なっている。メインフレームが企業の基幹システムで現役で使われ続けていることもあり、JCLは古い技術ながら今なお現場で書かれ、保守され続けている言語の一つである。