COBOLとJCLのEXEC文を完全ガイド!初心者でもわかるCOBOLプログラムの実行方法
生徒
「COBOLのプログラムを実行するときにJCLを書くと聞いたんですが、EXEC文って何をするものなんですか?」
先生
「EXEC文は、JCLの中で“どのプログラムを動かすか”を指定する一行だよ。COBOLを実行するときは必ず必要になるんだ。」
生徒
「プログラムを動かす指示、ということですか?どう書けばいいんでしょう?」
先生
「それじゃあ、初心者でも迷わないように、EXEC文の基本から実際の使い方まで順番に見ていこう。」
1. EXEC文とは?COBOLプログラムを動かすための“実行スイッチ”
JCL(Job Control Language)は、メインフレームでCOBOLプログラムを動かすときの「作業指示書」です。その中でEXEC文は、実行したいプログラムを指定する重要な部分になります。
例えば、家で電気をつけるとき、スイッチを押すだけで部屋が明るくなりますよね。EXEC文は、その「スイッチ」のような役割です。「このCOBOLプログラムを実行してください」とコンピュータに伝えます。
EXEC文はJCLの中で非常に重要で、COBOLを学ぶ初心者がまず理解しておくべきポイントです。
//STEP01 EXEC PGM=COBPROG
この一行だけで、「COBPROG」という名前のCOBOLプログラムを実行するように指示できます。
2. EXEC文の基本構文をやさしく解説
EXEC文は次のような形をしています。シンプルなので初心者でも覚えやすい構造です。
//ステップ名 EXEC PGM=プログラム名
では、この構造の中の各部分について丁寧に説明していきます。
● ステップ名とは?
JCLでは、一連の処理を「ジョブ」と呼び、その中の個々の処理を「ステップ」と呼びます。ステップ名は、そのステップに付けるラベルのようなものです。
例えば、掃除をするときに「台所」「風呂場」「リビング」と区切るイメージです。どの処理がどの部分なのか確認しやすくなります。
● EXEC(エグゼック)とは?
EXECは「実行する(EXECUTE)」という意味を持つキーワードです。「今からこのステップでプログラムを実行しますよ」という合図を出します。
● PGM=プログラム名
PGMは「Program(プログラム)」の略で、実行したいCOBOLプログラムを指定します。ここに書く名前は、リンク編集で作成された実行モジュールの名前です。
3. COBCOLプログラムをEXEC文で実行する流れ
初心者が最もイメージしたいのは、実際に一つのCOBOLプログラムをJCLで動かす流れです。ここでは、最も基本的なJCLの例を見て、EXEC文がどのように使われるか理解しましょう。
//SAMPLE JOB (ACCT),'USER',CLASS=A,MSGCLASS=X
//STEP01 EXEC PGM=HELLOCOB
//SYSOUT DD SYSOUT=*
//SYSIN DD DUMMY
ここで「HELLOCOB」が実行されるCOBOLプログラムです。SYSOUTは実行結果の出力先、SYSINはプログラムに渡す入力です。今回はDUMMYを指定しているので、特別な入力はありません。
プログラムを実行するには、JOBカードを書き、EXEC文でプログラムを指定し、必要なら入力ファイルや出力ファイルも指定します。こうした流れを覚えるとメインフレームでのCOBOL実行の仕組みがはっきり理解できます。
4. EXEC文でよく使うパラメータ
EXEC文にはPGM=以外にもいくつかのオプションがありますが、初心者が最初に理解しておくべき主要パラメータを紹介します。
● PARM=
PARMはプログラムにパラメータ(指示)を渡すときに使う項目です。例えば、「特定のモードで動かしたい」「テスト用のフラグを渡したい」などのときに使われます。
//STEP01 EXEC PGM=HELLOCOB,PARM='TEST'
COBOLの中では、ACCEPT文などでこの値を受け取ることができます。
● COND=
CONDは、前のステップでエラーが出たときに、このステップを実行するかスキップするかを決める条件です。メインフレームのバッチ処理ではよく使われます。
//STEP02 EXEC PGM=NEXTSTEP,COND=(4,LT)
これは「前のステップの戻りコードが4より小さい場合、このステップをスキップする」という意味です。
5. EXEC文を書くときの注意点
JCLのEXEC文を書く際には決まりごとが多いため、初心者は少し注意が必要です。ここでは、最も大切な注意点を挙げます。
● 半角で正確に書くこと
書き間違いがあるとジョブが実行されず、エラーコードが返ってきます。メインフレームは全角やスペースにとても厳しいため、見た目が同じでも全角だったりすると動きません。
● 位置揃えは厳格
JCLは1行目が「//」で始まる必要があります。ステップ名の位置や、EXECの後のスペースの位置にも決まりがあるため、見本どおりに書くことが大切です。
● プログラム名を間違えない
PGM=で指定する名前は、リンク編集後に作られた実行モジュール名と一致している必要があります。よくあるミスが「拡張子をつけてしまう」ことですが、COBOLの実行モジュールには拡張子はつきません。
まとめ
今回はCOBOLとJCLの基本であるEXEC文について詳しく学びました。EXEC文はCOBOLプログラムを実行するための中心的な役割を持っており、JCLの中でも最も重要な構文の一つです。COBOL初心者の方が最初に理解すべきポイントとして、このEXEC文の仕組みをしっかり押さえておくことは非常に重要です。 まず理解しておきたいのは、JCLとCOBOLの関係です。JCLは作業の指示書であり、COBOLはその指示に従って動く実行プログラムです。この関係を正しく理解することで、なぜEXEC文が必要なのかが自然と見えてきます。EXEC文はその中で「どのプログラムを実行するか」を指定する命令であり、いわば実行スイッチのような存在です。 EXEC文の基本構文は非常にシンプルであり、ステップ名 EXEC PGMプログラム名という形で書きます。このシンプルさこそが初心者にとって理解しやすいポイントであり、まずはこの基本形を確実に覚えることが大切です。またステップ名を付けることで処理の流れを分かりやすく整理できるため、実務でも非常に重要な役割を果たします。 さらにEXEC文ではPGMだけでなくPARMやCONDといったパラメータも指定できることを学びました。PARMはCOBOLプログラムに値を渡すための仕組みであり、処理内容を柔軟に切り替えることができます。同じプログラムでも渡す値によって動作を変えられるため、開発効率の向上に大きく貢献します。一方でCONDは前の処理結果に応じて次の処理を実行するかどうかを制御する重要な機能です。これによりバッチ処理の流れを安全に制御することが可能になります。 またCOBOL JCL EXEC文 初心者の方がつまずきやすいポイントとして、記述ルールの厳しさがあります。JCLは非常にフォーマットに厳しく、半角で正確に書かなければならないという特徴があります。例えばスラッシュの位置やスペースの位置が少しでもずれていると、実行時にエラーとなってしまいます。このため、最初はサンプルコードをそのまま写しながら慣れていくことが重要です。 さらにPGMで指定するプログラム名は、実行可能な状態になっているモジュール名と一致している必要があります。ここで名前を間違えるとプログラムは実行されず、エラーの原因となります。初心者のうちは特にこの点に注意し、確実に一致しているかを確認する習慣をつけましょう。 以下にEXEC文を使った基本的なJCLのサンプルを示します。
//JOB01 JOB (ACCT),'USER',CLASS=A,MSGCLASS=X
//STEP01 EXEC PGM=SAMPLE01
//SYSOUT DD SYSOUT=*
//SYSIN DD DUMMY
実行結果は以下のようになります。
SAMPLE01プログラムが実行されました
このようにEXEC文を使うことで、COBOLプログラムを簡単に実行することができます。COBOLとJCLの連携 EXEC文 初心者向け理解を深めることで、実務に直結するスキルを身につけることができます。最初は難しく感じるかもしれませんが、EXEC文の役割と構文を一つずつ理解していけば、確実に使いこなせるようになります。 COBOLとJCLの基礎をしっかり理解することは、メインフレーム開発において非常に大きな強みになります。今回学んだEXEC文を出発点として、より高度なJCLの使い方やバッチ処理の設計へとステップアップしていきましょう。
生徒
「EXEC文はただの一行だと思っていましたが、とても重要なんですね」
先生
「そうです。どのプログラムを動かすかを決める核心部分です」
生徒
「JCLが指示書でCOBOLが実行するという関係も理解できました」
先生
「その理解があれば実務でも困ることは少なくなります」
生徒
「PARMで値を渡せるのが便利だと感じました」
先生
「処理の切り替えができるのでとても重要な機能です」
生徒
「書き方のルールが厳しいのは少し大変ですね」
先生
「最初は写経しながら慣れるのが一番の近道です」