COBOLとJCLの連携を理解しよう!初心者でもわかるJOBカードの書き方と主要パラメータ
生徒
「COBOLのプログラムを実行するときに、JCLというものを書くと聞きました。でもJOBカードって何ですか?」
先生
「JCLはメインフレームでCOBOLを動かすときに必要になる設定のようなものです。最初に書くJOBカードは、いわば“作業依頼書”の表紙みたいなものだよ。」
生徒
「表紙ですか?何を書けばよいんでしょうか?」
先生
「では、初心者でもすぐ理解できるように、ひとつずつ丁寧に説明していくね。」
1. JOBカードとは?初心者でも理解できる基本のイメージ
メインフレーム環境でCOBOLプログラムを実行するときには、まず最初にJCL(Job Control Language)という指示書を書く必要があります。その中の先頭に置かれるのがJOBカードです。JOBカードは、管理者に対して「誰が、どんな作業を、どのくらいの資源を使って実行するか」を伝える役割があります。
たとえば、学校で提出するレポートの表紙には、名前や学年、提出先を書きますよね。それと同じで、JOBカードにも実行者のID、ジョブ名、通知方法などの情報を書きます。これがなければ、コンピュータはジョブを受け付けてくれません。
初心者でも扱いやすいように、まずは基本構造を見てみましょう。
//SAMPLE JOB (ACCT),'TEST USER',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
一見すると記号がたくさんで難しく見えますが、ひとつひとつの意味を理解すれば怖くありません。ここからは、JOBカードを構成する主要なパラメータをわかりやすく説明していきます。
2. JOBカードの主要パラメータをやさしく解説
ここでは多くのJCLで使われている基本パラメータを順番に説明します。COBOLの実行でも頻繁に使うため、しっかり理解しておくと後の学習がとても楽になります。
● JOB名(ジョブ名)
JOBカードの最初に記述するのがジョブ名
● ACCT(アカウント番号)
ACCTは、ユーザがどの部門やプロジェクトに属しているかを示す内部管理番号のようなものです。会社の経費管理番号のように考えると理解しやすいでしょう。
● CLASS(クラス)
CLASSは、ジョブをどの種類のキューで実行するかを指定するものです。キューとは作業の順番待ちの列のようなもので、時間のかかるジョブ、すぐ終わるジョブなどを分類します。電車の急行・各駅停車のように、用途に合わせて分類されています。
● MSGCLASS(メッセージ出力クラス)
MSGCLASSは、ジョブの実行ログをどこに出力するかを指定します。実行結果をプリントするのか、スプールに保存するのかなどを決めます。学校のテストの答案を印刷するのか、画面で確認するのかを選ぶイメージです。
● MSGLEVEL(メッセージレベル)
MSGLEVELはメッセージをどの程度出力するかを指定します。「詳細をすべて出す」「最低限だけ出す」など、ログの量を調整できます。多すぎると読めなくなるため、必要に応じて使い分けます。
● NOTIFY(通知先)
NOTIFYはジョブが終わったときに通知するユーザIDを指定します。「実行が終わりましたよ」と知らせてくれる機能です。自分自身のIDを書いたり、環境によっては自動で設定されることもあります。
3. JOBカードの実例を見て理解を深めよう
ここまで説明したパラメータを使って、COBOLプログラムを実行するためのJOBカードを例として紹介します。実際のJCLの中でどう使われるのかをイメージしやすくなります。
//PAYJOB JOB (ACCT),'PAYROLL',CLASS=A,
// MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//STEP01 EXEC PGM=PAYCOBOL
//INPUT DD DSN=USER.DATA.INPUT,DISP=SHR
//OUTPUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
この例では、給与計算プログラムを実行するためのジョブを定義しています。JOBカードはジョブ全体の設定をし、その下に続くEXECやDDステートメントが、実際のプログラムやファイルの指定を行います。
初心者が最初につまずきやすいのは「記号が多い」「細かいルールがある」という点ですが、ひとつひとつの意味を理解すれば自然に読めるようになります。
4. JOBカードを書くときの注意点とよくあるつまずき
メインフレームのJCLは、書き方の決まりがとても厳しい世界です。書く位置や桁数が決められているため、少しでもズレるとエラーになります。
特に初心者が気をつけたいのは次の3点です。
● 半角と全角を混ぜない
JOBカードでは記号も含めてすべて半角で入力します。全角に見えない部分でも、意外と混じっていることがあります。コピー&ペーストするとズレることもあるため注意しましょう。
● カンマの位置に注意
CLASS=A のように、パラメータはカンマで区切ります。抜けていたり、多すぎたりするとジョブが正しく受け付けられません。特に複数行に分けて書くときに間違えやすいポイントです。
● コメントの書き方に注意
JCLでは「//*」で始まる行がコメントになります。他の言語と書き方が違うため、慣れるまでは混乱しやすいので覚えておきましょう。
こうした基本を押さえておくと、COBOLプログラムの自動実行やバッチ処理を安心して扱えるようになります。メインフレームの世界は最初は難しく見えますが、ルールを覚えるととても安定して運用できる仕組みが整っています。