loading...

thumbnail

JCLとは?Job Control Languageをわかりやすく解説!COBOLとの違いやコマンド一覧・実行方法も紹介

JCLとはJob Control Languageの略語です。このJCLの構造や機能など内容全体について詳しく解説します。

併せて関係性の濃いハードやソフトについても紹介しますので、JCLに対する理解を深めて下さい。

JCLとは

JCL

JCLはメインフレームの内部で使われる言語です。

コンピューターに対する指示書である「プログラム」や大量のデータを一括して処理する「バッチ」など複数のジョブを統制するプログラミング言語です。

簡易的なアプリケーション作成言語であり、スクリプト言語と呼ばれます。

プログラミング言語の種類はインタープリタ型言語コンパイラ型言語に分けられますが、スクリプト言語は前者の範疇に納まるものです。

実行までの処理が比較的簡単で、自然な言語の記述に近いプログラミングができるという特徴があります。

インタープリタ型言語

書かれたソースコードをコンピューターが解釈できるオブジェクトコードへと変換しながらプログラムを実行するというタイプの言語です。

他にはBASICやJavaScriptなどがあります。

コンパイラ型言語

ソースコードをオブジェクトコードへと変換する前に、ソースコードを翻訳しておくという特徴のある言語です。

実行に際してはライブラリーの結合と実行モジュール生成を行います。C言語やJavaなどがこのグループに含まれます。

バッチ処理とスケジューラー

バッチ処理

JCLをより深く理解するために、処理の流れについても考えてみましょう。JCLは「バッチ処理」を制御する言語です。

バッチ処理とはプログラムの目的毎にまとめられた一団を期間や量の単位で集約し、一括処理する方式のことになります。

一方、依存関係にあるジョブ同士の処理時刻や優先順位などの「ジョブストリーム」を自動的に制御することはJCLではできません。

その場合は「ジョブスケジューラ」や「タスクスケジューラ」と呼ばれる仕組みが担うことになります。

複数のジョブを同時に動かし、開始・終了の制御や監視などを行うものです。

1950年代の登場以来、メインフレームは大量のバッチジョブに対応してきました。ジョブの運用を自動化するツールが生まれたのもこの時代です。

更に1990年代のシステムの分散化や2000年代以降のクラウド化の進展に伴って、多様なジョブを自動制御するジョブスケジューラが誕生します。

そんな歴史的背景を背負っていることについても、少し気に留めておいて下さい。

物理ファイルと論理ファイル

ファイル制御

JCLが制御の対象としている要素は概ね次の通りです。

  • ジョブ名
  • ジョブの実行クラス(優先順位など)
  • ステップ名
  • 使用するプログラム名
  • プログラムが格納されているライブラリー
  • 使用する仮想メモリーの容量
  • 使用する物理ファイル名(データセット名)
  • その属性(格納場所、新規作成の場合の容量など)
  • ジョブ内(ステップ間)の制御

出典元:https://ja.wikipedia.org/wiki/Job_Control_Language

この中で注目すべき要素は物理ファイルについてです。

JCLの重要な役割の一つは物理ファイルと論理ファイルの関連性を定義して、データをプログラムから読めるようにすることにあります。

JCLの存在によってプログラムと運用管理が分化され、使用すべき物理ファイルが認識され、不要な物理ファイルへのアクセスを制御することが可能です。

物理ファイルと論理ファイルの役目について説明しておきましょう。

物理ファイル

物理ファイル

データベース管理ファイルです。実際のデータ及びレコードを収納しています。データはメンバー毎にまとめられ固有のアクセスパスが割り当てられています。

論理ファイル

論理ファイル

物理ファイルが複数存在するとして、これらのデータをどうプログラムに渡すかを定義するのが論理ファイルです。

実際のデータは論理ファイルの中にはありません。

メインフレーム

メインフレーム

メインフレームは汎用機ホストコンピューターなどと呼ばれることもあります。

企業組織の基幹業務を動かすために使われる大型コンピューターを表す言葉です。

JCLはこのメインフレームの中で機能している言語です。

多数のユーザーを対象として大量のデータを扱いますから高機能であり且つ安全性の高いものでなければなりません。

大型のホストとネットワーク端末の組み合わせで成り立っています。中央演算処理装置やOSは多くの場合、独自仕様です。

ミニコン・オフコン・パソコンといった中型・小型コンピューターが世の中に登場するまで、コンピューターとはメインフレームのことを指していました。

汎用という呼称も1980年代以前のコンピューターは用途毎に製造されることが当たり前だったから付けられたものです。

逆に多用途型のコンピューターは革新的なものでした。

因みに2020年時点でメインフレームを製造できるメーカーは世界でも6社に限られています。

米国のIBM(正式名称:インターナショナル・ビジネス・マシーンズ・コーポレーション)、ユニシスコーポレーション、フランスのAtos.S.Aの3社です。

日本は富士通株式会社、日本電気株式会社、株式会社日立製作所の3社となっています。

JCLとOSの関係

OS

JCLOSの関係を把握することはJCLの機能を理解する上で極めて重要です。OSの役割と共に、ここで整理しておきましょう。

OS(オペレーティングシステム)の種類によって、OSとインターフェイスを持つJCLの機能や構文は変化します。OSの系統は次の通り分けられています。

MVS系

米

IBM(正式名称:インターナショナル・ビジネス・マシーンズ・コーポレーション)製で汎用機向けのOSがMVS(Multiple Virtual Storage)です。

富士通株式会社のMSP、株式会社日立製作所のVOS3もこのグループに入ります。

ソフトウェアの実行単位であるタスクが異なるアドレス空間で動くよう仮想記憶機能を持っていることがMVSの特徴です。

VSE系

DOS/VSEVSE/ESAなどIBM製のシリーズです。MVS系とは異なる機能や構文が特徴となります。

XSP

富士通株式会社のMSPと並ぶOSがXSPです。MSPの方はMVSとの互換性がありますが、XSPはありません。

GCOS系

フランス

フランスのGroupe・BullのGCOSや日本電気株式会社(通称NEC)のACOSがこのグループに入ります。

GCOSはGeneral Comprehensive Operating Systemの略です。

メインフレーム用に米国の電機メーカー、General Electric Companyが生み出した多機能のOSです。

OS2200

米国のUnisys CorporationのOSです。同社製のメインフレームであるClear Path Server OS2200シリーズに搭載されています。

MCP

こちらもOS2200と同じUnisys Corporation製のメインフレーム、Clear Path Serverに搭載されているOSです。

尚、OSの中でもユーザーとの対話型のOSにはJCLは使われていません。例えばIBMが開発したz/VMなどが該当します。

JCLのコマンド(ステートメント)

コマンド

コマンドとはコンピューターに対するジョブの実行命令です。

コンピューターが行う基本的な操作や管理について指示されますが、通常は文字列による命令となります。言語の仕様によって命令形式は異なります。

JCLの場合は命令や手続きをステートメントと表現しています。

MVSというOSの中で扱われているJCLのステートメントについて代表的なものをピックアップして紹介します。

JCLのステートメントは必ず頭に「//」とマークされている点に注目して下さい。

// CNTL(制御)

複数の制御ステートメントの開始を示します。

// DD(データ定義)

処理されるデータの集合体を識別し記述するものです。

// ENDCNTL(制御の終わり)

プログラム制御を終わらせます。

// EXEC(実行)

ジョブストリームの開始を宣言し、ステップの名前を割り当てる命令です。

// JCLLIB(JCLライブラリー)

ライブラリーを識別し、システムによる探索を支援します。

// JOB(ジョブ)

ジョブの開始を宣言して名前を割り当てるものです。

// SET(セット)

ステートメントの処理に際して初期値の割り当てを行います。割り当てられた記号パラメーターの変更若しくは無効処理も行うことがあります。

// XMIT(伝送)

ノード間でのステートメントレコードの伝送命令です。

// OUTPUT(出力JCL)

帳票印刷に際しての処理オプションの指定を行います。

// INCLUDE(組み込み)

ステートメントが含まれる区分・拡張区分などのデータの集合体のメンバーを指定するものです。

// ENDCNTL(制御の終わり)

1つ以上のプログラム制御ステートメントの終了を宣言します。

//* comment(コメント)

プログラムや関連するリソースについて要件を文書化する必要がある場合に使うコメント入力命令です。

コマンドの実行方法

実行

JCLという言語により、「バッチ処理」や「サブシステム」などの「コマンド」、つまり「実行命令」についてプログラムが書かれます。

OSはこれを読み取って命令を実行に移すというのが基本的な仕組みです。

プログラムには起動させるジョブ名やオプション指定、メモリーの割り当てなどが書かれています。

条件分岐」といわれるコントロールを命令することも可能です。

バッチ処理

一定期間あるいは一定量のデータを対象として複数のステップを一つにまとめて連続処理する方法をバッチ処理と呼びます。

サブシステム

それ自体単独で完結する機能を有しているものの、全体的なシステムの構成要素の一つを成しているシステムがサブシステムです。

条件分岐

空のフローチャート

プログラム上、条件が充足されているか否かにより後続のプログラムの位置を制御する分岐コードを条件分岐といいます。制御構造の一つとされるものです。

通常、if文などの条件文を用いて表現されます。

COBOLという言語

COBOL

JCLと同じようにメインフレーム用のプログラミング言語として永く活躍するCOBOLという言語があります。

1959年に生まれた言語で、「Common Business-Oriented Language」が正式名称です。

その名が示す通り、事務処理系のプログラム開発を想定して最適化されたものです。

当時のCOBOL以外の言語としてはFORTRANLIPSが代表的なものでした。

FORTRANは弾頭計算などを始めとする科学技術計算用、LIPSは人工知能の開発用として用いられたプログラミング言語でした。

どちらも事務処理系に向いたものではありませんでした。

その後、事務処理系の開発に適した言語に対するニーズが高まる中で誕生したのがCOBOLです。

更に1964年以降、会話型プログラミング言語であるBASICや自由度の高い言語として知られる手続き型のC言語などが開発されるに至りました。

COBOLの一番の特徴としてよく知られているのは「可読性」です。英語表記に近い構文の構造によるものと考えられます。

一例を示します。他の言語では四則演算の「足す」を数式表記の「+」を以て表現しますが、COBOLでは英語表記の「ADD」という書き方です。

誰が書いても同じように書ける没個性型の構文構造も大きな特徴です。それにより保守性が高いという評価に繋がります。

又、事務処理系のプログラムとして誕生したこともあり、計算処理は得意です。「2進化10進数」を用いているので、わずかな計算誤差も生みません。

参考までに「2進化10進数」とは10進数の1桁分の値を2進数の値4桁で表現する方法です。10進数の「9」は2進数では「1001」と表現されます。

印刷調整も自動化できるので、帳票出力なども得意分野です。

JCLとCOBOLの違い

JCLCOBOL

JCLとCOBOL、この両者の一番の違いは使用環境にあります。

JCLがメインフレームのOS上で使われる言語であるのに対して、COBOLはメインフレームでもオープン環境でもいずれに於いても使用可能です。

ここでのオープン環境とは仕様の公開されたオープンソースであるOSとハードウェアを基盤として構築されたシステムを指しています。

独自仕様のレガシーシステムであるメインフレームとは対極に位置する環境といえるでしょう。

もちろんCOBOLも環境の違いによって文字コードが異なったり、CUIからGUIへとオンライン画面が変化したりといったことはありますが。

特にCOBOLの文字コードは大きく変わります。英数字はメインフレームではEBCDIC文字ですがオープン環境ではASCII文字です。

漢字も独自コードからS-JISEUCUNICODEなどに変わります。

プログラム制御を実行する場面の違いにも注目しましょう。

JCLはメインフレーム上での排他制御を担うのに対し、COBOLはオープン環境に於いてSELECT文を用いて対応します。

JCLの今後の課題-マイグレーション

移行

古くなったプログラミング言語で書かれたソフトウェアを新しい環境にフィットするように変換する作業を「マイグレーション」と呼びます。

メインフレームなどの旧式レガシーシステムをオープン環境に移築する場合には「レガシーマイグレーション」と呼ぶ方がピッタリくるでしょうか。

JCLをオープン系の環境へマイグレーションすることは、多数のユーティリティやパラメータを移行対象とせざるを得ないため決して簡単とはいえません。

JCLの移行先はCL(Control Language)というコンパイル言語になります。

因みにコンパイル言語とはソースコードを予め機械語に変換しておく役目を担う制御言語です。

CLはコマンド単位でJCLコードをパターン化し、パターンの出現頻度を分析することで変換率を高めています。

まとめ-環境変化への対応

未来

生物学の世界では「環境変化に対応できる生物こそ最強」といわれています。逆説的ですが恐竜絶滅の史実がその証左といえるでしょう。

それはITの世界でも同様です。

JCLという言語が目まぐるしく変化する環境にこれからどう順応するのか、その進化の過程を皆さんと共に見守りたいと思います。

RANKING週間人気コラムランキング

RANKINGカテゴリーランキング

CATEGORY

TAG

TOP