
「COBOLとJCLってどんな関係なの?」
「そもそもJCLってなに?」
現役COBOLエンジニアである筆者も、COBOL開発初心者の頃に上記のような疑問を持ちました。
JCLとは、 Job Control Language というジョブを制御するための言語になります。
COBOLを汎用機で扱うときに、セットで扱うことが多いのが特徴になります。
本記事では、現役COBOLエンジニアの視点から、「JCL」と「COBOL」の関係性について詳しく解説していきます。
・JCLの基本情報について
・JCLとCOBOLの関係性について
・JCLでわからないことがあったときに見るサイト情報
JCLとは?メインフレームでのジョブ管理の要
COBOLとの関係性を見ていく前に、そもそもJCLとは何なのかを誓いしておく必要があります。
COBOLを扱うエンジニアであれば、使用する機会が多い言語になりますので、概要は知っておいた方がよいでしょう。
この章では、JCLの基本的な情報についてご紹介していきます。
JCLの基本的な役割と特徴
「JCL」とは、Job Control Language という言語になります。
プログラミング言語を機械語に変換するため処理で、コンパイルと呼ばれる処理がありますが、COBOLは、コンパイルが必要な「コンパイラ型言語」であるのに対し、JCLはコンパイルの必要のない、「インタープリタ型言語」になります。
JCLの役割としては、プログラムをどのように実行するかの制御を担っています。具体的には、ジョブの管理、ファイル操作、システムリソースの指定などを行います。
直感的な操作が多く、比較的簡単で理解しやすい言語となっています。(書かれる文言が固定化されているため、一度慣れてしまえば扱いやすい)
JCLで実現する自動化の仕組み
JCLでは、プログラム名を指定して、複数のプログラムやタスクを上から順番に実行することができます。(この一連の流れをジョブと呼ぶことが多いです。)
また、ファイルのコピーや削除などもJCLに記載しておくことができるので、JCLを実行するだけで、準備から後処理まで一括で実施してくれます。
本来であれば、手作業で操作をする必要があるシステムでも、JCLに記載しておけば自動で一通りの処理をやってくれるということですね。
現代社会で主流となっている新しい言語では、比較的当たり前のことかもしれませんが、JCLが登場した当時からするとかなり革新的な技術でした。
COBOLとJCLの関係性を徹底解説!
上記でご紹介したように、COBOLは「コンパイラ型言語」で、JCLは「インタープリタ型言語」になります。
そんなJCLとCOBOLの関係性ですが、簡単に言うと呼び出す側と呼び出される側の関係になります。(どちらが上位的な存在とかそういった概念の話ではないです。)
この章では、COBOLとJCLの関係性について詳しく解説していきます。
JCLはどのようにCOBOLをサポートする?
JCLとCOBOLの関係性は、呼び出す側と呼び出される側の関係と説明をしました。
何かしらのジョブを実行するときに、JCL側は記載されているプログラム名でCOBOLを呼び出します。COBOLの実行役を担っているのがJCLということですね。
COBOLを実行するために必要なファイルを準備したり、削除したりもするので、イメージとしてはサポート的な側面が強いかもしれません。
JCLでCOBOLを実行すると言いましたが、実はJCLを使用しなくてもオープン環境で実行できるCOBOLも存在しています。
下記記事にまとまっていますので、のぞいてみてください。

COBOLとJCLを組み合わせた効率的な開発プロセス
COBOLとJCLを組み合わせることにより、効率的な開発をすることができます。
JCLを使用することで、複数のプログラムを一連の流れの中で実行することができるので、プログラミングを設計する時の考え方も変わってきます。
開発プロセスの点で言えば、実行言語だけ独立していることで、プログラミング自体がわからないエンジニアでも実行することができます。
実際の開発現場でも、プログラミングに詳しい人とそうではない人で、コーディング役と実行役で役割分担が行われていたりします。
COBOLとJCLを組み合わせることで、開発プロセスの作業効率化につながっているということですね。
COBOLとJCLのバッチ処理での連携
JCLを語るときに外せないのが「バッチ処理」になります。
バッチ処理とは、一連の処理を人間の手を介さずにコンピュータが行うことを言います。
JCLを活用することでジョブを一括実行するので、これもバッチ処理に分類されるということになります。
上記でも述べたように、バッチ処理の一連の流れでJCLがCOBOLを呼び出しており、JCLもCOOBOLもバッチ処理には必要不可欠な存在なのです。
ちなみに、バッチ処理としてJCLがジョブを一括実行してくれますが、夜中に実行や早朝に実行などの時間を指定するためには、別でスケジュールを管理するツールが必要になります。
JCLを学べるおすすめサイトについて
ここまで解説してきたJCLですが、実際にコーディングするときには、記述方法がわからないポイントが発生すると思います。
この章では、そんなときに役に立つサイトをご紹介します。
【Qiita】JCL入門
一つ目は、IT関連の情報を数多く発信している「Qiita」というサイトになります。
個人が記事を投稿できる仕組みになっており、JCL有識者のベテランエンジニアの方々が解説をしてくれています。
わかりやすい記事も多く、具体的な記載方法も載っているので、開発の時にぜひ参考にしてみてください。
【IBM公式サイト】JCLコーディング情報
二つ目に「IBM公式サイト」に掲載されているJCLの情報についてです。
英語からの翻訳になるので、わかりにくい記載も多いですが、公式的な情報になるので信頼性が一番高いサイトになります。
JCL記載時の細かいルールも載っているので、なぜエラーになってしまうのかわからない場合はここを確認するとよいでしょう。
使用例も記載してくれていますので、ぜひ参考にしてみてください。
まとめ
本記事では、「JCL」と「COBOL」の関係性について解説してきました。
結論は、呼び出す側と呼び出される側の関係になります。
COBOLの実行役を担っているのがJCLということですね。
上記で解説してきたように、JCLでは実行だけではなく、ファイルのコピーや削除など様々な処理を一括で行うことができます。
少しややこしい部分もありましたが、使用していくうちにすぐに慣れてくると思いますので、焦らずに開発を進めていきましょう。