ジョブ制御言語(JCL)入門|IBMメインフレームの定義・用途と系譜
IBMメインフレームのJCL入門:定義・用途・系譜を分かりやすく解説。DOS/360〜z/VSE、OS/360〜z/OSの違いやJECLの役割、実践的な使い方まで網羅。
ジョブ制御言語(JCL)は、IBMメインフレーム・オペレーティングシステムで使用されるスクリプト言語の名称です。主にバッチジョブの定義、実行順序の管理、外部ファイルやデバイスの割り当て、サブシステムの起動方法などをシステムに指示するために用いられます。
目的と役割
JCLの主な目的は次のとおりです。
- どのプログラムを実行するかを指定する(ジョブやステップの定義)。
- 入出力に使用するファイルやデバイス(データセットやディスク、テープ、プリンタなど)を割り当てる。
- 実行条件やエラー時の処理(ステップのスキップや再試行、終了条件の設定)を指定する。
- ジョブの属性(実行クラス、優先度、リソース制限など)の指定。
基本構文と主要なステートメント
JCLは独自の書式(カード形式)を持ち、記述に一定のルールがあります。詳しい構文はシステムや世代によって違いがありますが、代表的なステートメントには次のものがあります。
- JOBステートメント:ジョブの開始を宣言し、ジョブ名や実行属性(CLASS、MSGCLASS、TIME、REGIONなど)を指定する。
- EXECステートメント:実行するプログラムまたはユーティリティを指定する。1ジョブ内に複数のステップ(EXEC)が含まれることが多い。
- DD(Data Definition)ステートメント:プログラムが使用するデータセットやデバイスを定義する。主なパラメータにはDSN=(データセット名)、DISP=(状態/処理方法)、UNIT=(デバイス種別)、SPACE=、VOL=などがある。
例(z/OS系の簡単な一例):
//MYJOB JOB (ACCOUNT),'NAME',CLASS=A,MSGCLASS=X,REGION=0M //STEP01 EXEC PGM=MYPROG //INFILE DD DSN=MY.DATA.INPUT,DISP=SHR //OUTFILE DD DSN=MY.DATA.OUT,DISP=(NEW,CATLG,DELETE),SPACE=(CYL,(1,1)) //SYSPRINT DD SYSOUT=*
系譜と種類
IBM Job Controlには大きく分けて2つの系譜があります:
- DOS/360から始まるオペレーティングシステムの流れ(現代では z/VSE がその代表的なメンバー)。この系列のJCLはz/VSE固有の仕様や命令を持ちます。
- OS/360から始まり z/OS へ続く流れ。z/OSではジョブ管理サブシステムJES(Job Entry Subsystem)を用い、さらにJESの拡張機能である JECL(Job Entry Control Language) が存在します。JECLはジョブの入力管理やジョブエントリ処理に関する追加指示を扱います。
両者は基本的な概念(ジョブ/ステップ/DDなど)やいくつかの構文ルールを共有しますが、パラメータ名や細かな振る舞い、JESとの連携方法は大きく異なります。
運用上のポイント
- 条件分岐とリカバリ:z/OSではIF/THEN/ELSE/ENDIFによる条件実行や、CONDパラメータによるステップ実行制御、RETURNコード(リターンコード/ステータス)に基づく分岐が用いられます。
- メッセージとログ:MSGCLASSやSYSOUT指定で出力先やログの扱いを制御します。ジョブの監視や障害調査ではJESの出力が重要です。
- データセット形式:PS(パイシックレコード)、PDS(パーティション付きデータセット)、VSAMなどの違いに応じたDD指定が必要です。
- 近年の環境:既存のJCL資産は多くの企業で稼働を続けており、モダンな運用ではジョブスケジューラやAPI連携、RACFなどのセキュリティ機能と組み合わせて使われます。
まとめ
JCLはIBMメインフレームでバッチ処理を記述・管理するための重要な言語であり、システム世代ごとに異なる流派(z/VSE系とz/OS系)が存在します。基本概念は共有されるものの、具体的な構文や機能、運用方法は系統ごとに異なるため、対象となるプラットフォームに応じた学習が必要です。
質問と回答
Q: JCLとは何ですか?
A: JCL は Job Control Language の略で、IBM メインフレーム・オペレーティング・システムで使用されるスクリプト言語で、バッチ・ジョブの実行方法やサブシステムの起動方法をシステムに指示します。
Q: JCLの目的は何ですか?
A: JCLの目的は、入力または出力にどのファイルまたはデバイスを使用して、どのプログラムを実行するかを指示し、どのような条件でステップをスキップするかを指定することです。
Q: 異なるIBMジョブ・コントロール言語はいくつありますか?
A: 2つの異なるIBMジョブ制御言語があります。1つはDOS/360から始まり、最新のメンバーがz/VSEであるオペレーティング・システムの系譜のためのもので、もう1つはOS/360からz/OSまでの系譜のためのもので、後者には現在JESの拡張であるジョブ入力制御言語(JECL)が含まれています。
Q: 2つの異なるIBMジョブ制御言語の共通点は何ですか?
A: 2つの異なるIBMジョブ制御言語は、いくつかの基本構文規則といくつかの基本概念を共有しています。
Q: 2つの異なるIBMジョブ・コントロール言語にはどのような違いがありますか?
A: 2つの異なるIBMジョブ・コントロール言語は、それ以外はまったく異なります。
Q: JES拡張とは何の略ですか?
A: JES extensionsはJob Entry Control Languageの略です。
Q: DOS/360から始まるオペレーティング・システムの系譜の中で最新のものはどれですか?
A: DOS/360から始まるオペレーティング・システムの系譜の中で最新のものはz/VSEです。
百科事典を検索する