カテゴリ: COBOL 更新日: 2026/01/02

COBOLとJCL連携の基本!PGMパラメータの指定とプログラム呼び出しの流れを初心者向けに完全解説

PGMパラメータの指定とプログラム呼び出しの流れ
PGMパラメータの指定とプログラム呼び出しの流れ

先生と生徒の会話形式で理解しよう

生徒

「JCLでPGMって書いてありますけど、これって何をしているんですか?」

先生

「PGMは、どのCOBOLプログラムを動かすかを指定する大切な部分です。」

生徒

「パラメータも渡せるみたいですが、流れが全然イメージできません…」

先生

「では、JCLからCOBOLプログラムが呼び出される流れを、最初から順番に説明します。」

1. PGMパラメータとは何か

1. PGMパラメータとは何か
1. PGMパラメータとは何か

PGMパラメータとは、JCLで実行するプログラム名を指定するためのものです。 JCLは「仕事の指示書」、COBOLプログラムは「実際に働く人」のような関係にあります。 PGMで「誰に仕事をさせるか」を決めていると考えると分かりやすいです。

COBOLとJCL連携では、このPGM指定がなければプログラムは一切動きません。

2. JCLからCOBOLプログラムが呼ばれる流れ

2. JCLからCOBOLプログラムが呼ばれる流れ
2. JCLからCOBOLプログラムが呼ばれる流れ

JCLが実行されると、まずOSがJCLを読み込みます。 その中に書かれているPGMを見て、「このCOBOLプログラムを起動する」と判断します。 その後、必要なファイルやパラメータを準備してから、COBOLプログラムを開始します。

初心者の方は、「JCLが司令塔で、COBOLが作業担当」と覚えると理解しやすくなります。

3. PGM指定の基本的な書き方

3. PGM指定の基本的な書き方
3. PGM指定の基本的な書き方

PGMはEXEC文で指定します。 EXECは「実行してください」という意味を持つJCLの命令です。 ここで指定した名前と同じCOBOLプログラムが呼び出されます。


//STEP01  EXEC PGM=SAMPLE01

この例では、SAMPLE01というCOBOLプログラムが実行されます。

4. PGMパラメータで値を渡す仕組み

4. PGMパラメータで値を渡す仕組み
4. PGMパラメータで値を渡す仕組み

PGMパラメータを使うと、JCLからCOBOLプログラムへ値を渡すことができます。 これは「今日はこの条件で動いてください」と指示を出すようなものです。

JCL側で渡した文字列は、COBOLプログラム内で受け取って処理に使われます。


//STEP01  EXEC PGM=SAMPLE02,PARM='TEST'

5. COBOL側でPGMパラメータを受け取る

5. COBOL側でPGMパラメータを受け取る
5. COBOL側でPGMパラメータを受け取る

COBOLでは、LINKAGE SECTIONとPROCEDURE DIVISIONを使ってパラメータを受け取ります。 LINKAGE SECTIONとは、外部から渡されるデータを受け取るための場所です。


LINKAGE SECTION.
01 WK-PARM.
   05 WK-PARM-DATA PIC X(10).

PROCEDURE DIVISION USING WK-PARM.
    DISPLAY WK-PARM-DATA.

これにより、JCLから渡された値を画面に表示できます。

6. PGMパラメータを使う場面の例

6. PGMパラメータを使う場面の例
6. PGMパラメータを使う場面の例

PGMパラメータは、処理モードの切り替えや、テスト用と本番用の動作分岐によく使われます。 同じCOBOLプログラムでも、渡す値を変えるだけで動きを変えられるため、とても便利です。

これは、家電の「強」「弱」スイッチを切り替えるような感覚に近いです。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

よくある失敗は、JCLのPARMとCOBOL側の受け取りサイズが合っていないことです。 文字数が足りない、または多すぎると、意図しない動作になります。

最初は短い文字列で試しながら、動きを確認するのがおすすめです。

8. COBOLとJCL連携を理解する重要性

8. COBOLとJCL連携を理解する重要性
8. COBOLとJCL連携を理解する重要性

COBOL単体だけでなく、JCLとの連携を理解することで、実務で使える知識になります。 PGMパラメータはその中でも特に基本で、避けて通れないポイントです。

流れをイメージしながら、一つひとつ丁寧に確認していきましょう。

カテゴリの一覧へ
新着記事
New1
C#
C#のbool型を完全解説!初心者でもわかるtrueとfalseの基本と使い方
New2
C#
C#でバージョン管理を始めよう!Gitを使った基本操作を紹介
New3
C#
C# WPFのスタイルとリソースでデザインを効率化!初心者向け入門ガイド
New4
Azure
Azure Virtual MachinesのIPアドレス管理を徹底解説!パブリックとプライベートの使い分けルール
人気記事
No.1
Java&Spring記事人気No1
COBOL
COBOLのコンパイラと開発環境を徹底解説!初心者にもわかりやすい入門ガイド
No.2
Java&Spring記事人気No2
C#
C#の文字列を数値に変換する方法(int.Parse・TryParse)をわかりやすく解説!
No.3
Java&Spring記事人気No3
C#
C#のbool型を完全解説!初心者でもわかるtrueとfalseの基本と使い方
No.4
Java&Spring記事人気No4
C#
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド
No.5
Java&Spring記事人気No5
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.6
Java&Spring記事人気No6
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.7
Java&Spring記事人気No7
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.8
Java&Spring記事人気No8
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド