支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

メインフレーム(汎用コンピュータ)用のプログラミング言語として使用されているJCLとCOBOL。本記事では、この2つの言語の特徴と違いについて解説していきます。

JCLとは

JCLは「Job Control Language」の略で、メインフレームで使用されるプログラミング言語であり、「ジョブコントロール言語」や「ジョブ制御言語」とも呼ばれています。
また、コンピュータに対する指示言語である「プログラム」や大量のデータを一括して処理する「バッチ」などの複数のジョブを制御するスクリプト言語の一種です。
OSは、JCLに記述されたジョブ(一連のプログラムの流れのこと)の名称や、使用する装置の種類などを解読して処理を実行するため、自然な言語の記述に近いプログラミングができるという特徴を持っています。

JCLのコマンド

JCLにおいて、命令や各種手続きのことをステートメントと表現しています。 JCLのコマンドは、必ず先頭に「//」がついていることに注意してください。


//CNTL(制御)

1つまたは複数の入力ストリーム内のプログラム制御の開始を示すために使用します。
//[label] CNTL [ * comments]

//DD(データ定義)

データ・セットについて記述し、そのデータ・セットに必要な入出力リソースを指定するために使用します。
//[ddname] DD [positional-parameter][,keyword-parameter]...[comments] [procstepname.ddname]

// ENDCNTL(制御のおわり)

CNTLステートメントに続く、プログラム制御の終わりを示すために使用します。
//[label] ENDCNTL [comments]

// EXEC(実行)

ジョブで実行するプログラム、またはストリーム内のプロシージャを指定し、システムにジョブの処理方法を伝えるために使用します。
//[stepname] EXEC positional-parm[,keyword-parm]...[,symbolic-parm=value]... [comments]

IF/THEN/ELSE/ENDIF ステートメント構文

ジョブを条件付きで実行する際に使用します。
//[name] IF [(]relational-expression[)] THEN [comments]
  関係式が真の時のアクション
//[name] ELSE [comments]
  関係式が偽の時のアクション
//[name] ENDIF [comment

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

システムがジョブのために使用するライブラリーを識別し、探索を支援するために使用します。
//[name] JCLLIB ORDER=(library[,library]...) [comments]

//JOB(ジョブ)

ジョブの開始を宣言して名前を割り当て、システムにそのジョブの処理方法を伝えるために使用します。
//jobname JOB positional-parameters[,keyword-parameter]... [comments]

//SET(セット)

ステートメントを処理する際に、パラメータの定義、初期値の割り当てを行うために使用します。
//[name] SET symbolic-parameter=value
// [,symbolic-parameter=value]... [comments]

COBOLとは

COBOLは「Common Business-Oriented Language」の略で、JCLと同じようにメインフレーム用のプログラミング言語であり、その名前が示している通り事務処理系のプログラムを開発することを目的として最適化された言語です。
「CODASYL:Conference on Data Systems Languages」によって、1959年に策定され、それ以来使われ続けています。
COBOLの最大の特徴としてあげられるものに、その「可読性」の高さがあります。これは英語の文法に近い表記方法であるためと考えられます。例えば、ほかのプログラミング言語で「xにx+1を加算」、「xにy+1を加算して代入」する場合、それぞれ

x = x + 1
y = x + 1

と記載しますが、COBOLの場合、英語表記の「ADD」を使用して、

ADD 1 TO x
ADD 1 TO x GIVING y

のように記載します。
また、だれが書いても同じような構文になる「没個性型」も大きな特徴であり、それにより保守性が高いものになります。
非常に歴史のある言語のため、昔ながらのIT技術の代表格にあげられることも多いCOBOLですが、現在でも標準規格の改定が行われており、政府や地方公共団体、大企業の業務システムを中心に、COBOLプログラムが開発、保守、運用され続けています。

JCLとCOBOLの違いとは

前項で説明したJCLとCOBOL。この両者の最も大きな違いは「使用環境」に存在しています。
JCLがメインフレームの上でのみ使用される言語であるのに対して、COBOLはメインフレーム上でも、オープンな環境でも使用することができます。オープンな環境とは、仕様が公開されたオープンソースなOSとハードウェアを指しています。
また、プログラム制御を実行する場面の違いに着目した場合、JCLはメインフレーム上で排他制御を実行しているのに対し、COBOLはオープン環境において、「SELECT文」を用いて対応しています。

さいごに

JCL、COBOLともに多くのフレームワークで使用され続けています。また、標準規格の改定も継続して行われています。それは、双方のプログラミング言語の使い勝手がよく信頼されているからではないでしょうか。引き続きこの2つの言語の進化を見守っていきたいと思います。