COBOL言語は、事務処理用に開発されたプログラミング言語です。本記事ではCOBOL言語とは何かから、COBOLを使う内容のほか、今後のCOBOLの需要についても解説します。
COBOL言語は、事務処理を目的としてアメリカで誕生したプログラミング言語で、行政・金融機関のシステムによく使われています。しかし、COBOL言語についてよく知らない方もいらっしゃるでしょう。
そこで、COBOL言語の特徴や基本的なプログラムの書き方などを解説します。また、COBOL言語の将来性についても説明しているので、これから勉強しようと考えている方は確認してください。
目次
COBOL言語は、事務処理用に1959年に開発されたプログラミング言語となります。COBOLの名前は、Common Business Oriented Language(共通事務処理用言語)が由来です。
COBOL言語は英語に近い構文で理解しやすく、多くのプログラマーに活用されてきました。現在でも、COBOL言語は金融システムや行政システム、企業の基幹となるシステムなど、多くの事務処理を必要とするシステムで使われています。
COBOL言語に関するスキルを持った人材の需要は、今後もあると予想されるでしょう。
ここでは、COBOL言語がもつ以下の3つの主な特徴について解説します。
それぞれ詳しく確認していきましょう。
COBOL言語は英語に近い構文で記述できるため、可読性が高いことが特徴です。一目見ただけで、意味を理解しやすい点が他の言語にはないメリットでしょう。
COBOL言語で「MOVE 100 TO BUF」と書くと、BUFに100を設定するという意味となります。このように英語で解釈できるので、COBOL言語はプログラムをドキュメントとしてそのまま使用可能です。
ソースコードの書き方が英語に近いため、初心者でもある程度簡単にソースコードが組めます。ソースコードの組み方の理解が浅くても、英語の意味を考えながらCOBOL言語を読み進められるでしょう。
COBOLは計算処理に強い言語であることから、金融システムを始めとした正確な計算処理を欠かすことができない多くのシステムで活用されています。
ほかの言語であれば、計算結果に小数点が出て誤差が生じてしまう可能性があるでしょう。しかし、COBOL言語では10進数を4桁の2進数で表すことで四則演算を可能にし、人間にもわかりやすい演算を可能にします。
また、ほかの言語で小数点以下が省略されて表示される場合でもCOBOLで少数点の計算を行えば、小数点以下も正確に計算できるため、誤差のない正確な結果を得られるでしょう。
COBOL言語は保守切れの可能性がなく、安定して使用できる保守性が高い言語です。
COBOL言語は1959年に生まれた歴史が長い言語で、古き良きシステムが現在でも保守され続けています。
複数のCOBOLプログラマーが、COBOL言語を書いても同じようなプログラムになるため、世代を超えてプログラムを引き継ぐことが可能です。運用保守においても長い歴史のなかで蓄積されたノウハウがあり、かつベテランのエンジニアが揃っていることから、信頼性のある保守対応が受けられます。保守性の高さから、システムの仕様変更も行いやすく、柔軟で長期的なシステムとなるでしょう。
COBOL言語は手続き型言語と呼ばれ、まるで手続きをするかのように一つひとつの処理命令をコーディングできる言語です。対して「Java」はオブジェクト指向言語と呼ばれ、処理の起点となるクラスとは異なるオブジェクトを活用するなどして、オブジェクトを組み合わせることによりコーディングする言語となります。
計算処理をする際にも「Java」では、計算処理のたびにオブジェクトを生成する必要があるため、処理に時間もリソースも要するのです。その点、COBOL言語は計算処理をするたびにオブジェクトを生成する必要がないので、時間もリソースも節約できます。
COBOL言語は他の言語と比較して難しいといわれることがありますが、本当にそうなのでしょうか。ここでは、COBOL言語の難易度とCOBOL言語が難しいといわれる理由についてみていきます。
COBOL言語は近年開発された言語と比較すると少し形式が異なり、難しく感じる場合があるかもしれません。ですがCOBOL自体は英語を読み書きするようにコードの読み書きができるため、慣れると読みやすくわかりやすいプログラミング言語です。
そのため、COBOL言語自体が難しい言語というわけではありません。ただし、他のプログラミング言語に慣れている方にとっては、形式が異なる部分が多いため戸惑う可能性があります。
COBOL言語は、OS(オペレーティングシステム)や外部デバイスなど、システム周りに関する記載をコードで記述しなければなりません。このため、COBOL言語の知識だけではなく、OSやデバイスドライバに関する知識も必要です。高度な内容になると、たとえば、物理プリンタへのマッピングの知識が必要となるなど、専門性の高い内容が増えてきます。
また、システムを作る場合、業務処理の内容を把握しておく必要があるでしょう。業務処理の内容については、システムが作れるほど高度に理解する必要があるので、この点もCOBOLプログラミングの難易度を上げているといえます。
ここでは、次の見出しに分けてCOBOL言語でできることを解説します。
上記の見出しの内容をCOBOL言語で行わず、手作業のみで行ったとしたら、かなりの時間と人件費が発生します。しかし、COBOL言語を使うことにより、これらの内容をプログラムで実行可能となるのです。
COBOL言語は、事務処理用のプログラムを効率よく開発できます。社会全体でIT化が進む前も金融業界では、COBOLによる処理の自動化を取り入れ、事務処理を効率化していました。
また、行政のシステムや企業の基幹となるシステムなど、多くの事務処理を必要とするシステムでは、COBOL言語で開発されたシステムも多いです。COBOL言語は、桁の大きい計算が得意なため、「Java」よりも優先して大規模なシステムで採用されるケースがあります。
帳簿や帳票は企業の経営において、会社のデータを記録するための重要な書類です。COBOL言語はプログラミングにより帳票項目を定義でき、帳票印刷処理を行えます。さらに、プログラミングによるループ処理で帳票印刷処理の繰り返しが可能です。
また、帳票を印刷する際には、コードでフォーマットを指定でき、空白処理を動的に設定するようにプログラミングもできます。
COBOLは大量のレコードを処理する場合でも、1レコード処理するたびにオブジェクトを生成する処理の必要はなく、メモリを大量に利用することがありません。この点は処理ごとにオブジェクトの生成が必要となる「Java」にはないメリットでしょう。
COBOL言語がメモリを大量に利用しない理由は、staticと呼ばれる静的な領域しか使用しない仕組みになっているためです。メモリ消費が少ないため、COBOL言語は大量のデータを一括で処理するのに向いているといえます。
ここでは、次の見出しに分けてCOBOL言語の使い方について解説します。
記事をただ読むだけではなく、記事を参考にしてCOBOLを書いてみてください。
GnuCOBOLは、かつてのOpenCOBOLのことです。WindowsでGnuCOBOLを使うには、WSL(Windows Subsystem for Linux)が必要です。
MacOSではパッケージマネージャーであるHomebrewを使います。Homebrewをインストールしたら、ターミナルを起動してコマンドを実行しましょう。
Windows環境でのインストール方法はいくつか手順があるため、詳しく解説します。
WSLは、上記のMicrosoft Learnのホームページからインストールしてください。
公式ホームページから抜粋した解説は、以下のとおりです。
『 右クリックして [管理者として実行] を選択することで、PowerShell または Windows コマンド プロンプトを管理者モードで開き、wsl –install コマンドを入力し、マシンを再起動します。』
引用:WSL のインストール | Microsoft Learn
管理者として実行する必要がある点だけ、注意が必要です。ログインしているユーザーが管理者かどうかを確認する方法は、以下となります。
画面左上にログインユーザーが表示されるので、人物アイコンをクリックするとアカウントの詳細情報が確認できます。上図のように「管理者」を表示されていることを確認のうえ、次の作業に進んでください。
「管理者」でログインしていることが確認できたら、コマンドプロンプトあるいはPowerShellを起動し、以下のコードを入力して実行します。
実行すると何度か、以下のようにインストールが進捗している表示が出ます。
すべてインストールが完了したら以下のメッセージが表示されます。
上記メッセージが確認できたら、パソコンを再起動してください。再起動が終わったら、Linuxのユーザー名とパスワードを設定します。
WSL 開発環境を設定する | Microsoft Learn
まずインストールした「Ubuntu」をスタートメニューから起動します。以下の画面が表示されるので、任意のユーザー名を設定してください。
ユーザー名を入力してリターンキーを押すと、続いてパスワードを設定するメッセージが表示されます。
パスワードはキーを押しても何も表示されません。この動作は正常ですので、ミスしないように注意しながらパスワードを入力してください。パスワードを再度入力するメッセージが表示されるので、最初に入力したパスワードと同じパスワードを入力します。
上記のように「Installation successful」とメッセージが表示されたら、インストールは完了です。
続いてGnuCOBOLをインストールします。
先ほどのubuntuのアプリ上で、以下のコマンドを入力してください。
インストールが完了しましたら、確認のために以下のコマンドでバージョンを確認し、正常にインストールされているかを確かめましょう。
正常にインストールされている場合は、以下のようにバージョンについて表示されます。
見出し部はCOBOLの最初に記載する必要がある部分です。見出し部の実際のコードは、次のように記述します。
IDENTIFICATION DIVISION PROGRAM-ID. TEST00001 AUTHOR. TEST HANAKO DATE-WRITTEN. 2022-12-15
上記のPROGRAM-IDはプログラム名を表し、AUTHORは作者名を表し、DATE-WRITTENはプログラムの作成日を表します。また、見出し部には他にDATE-COMPILED(コンパイル実施日)、INSTALLATION(インストール先)、SECURITY(セキュリティ内容)の定義が可能です。なお見出し部の最初の段落は、PROGRAM-IDである必要があります。
環境部は使用するコンピュータ名などの定義を行う構成節(CONFIGURATION SECTION)と、プログラムファイルを使用する場合に記述する入出力節(INPUT-OUTPUT SECTION)で構成されています。
環境部の実際のコードの記述例は、以下通りです。
ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. TEST MACHINE. OBJECT-COMPUTER. TEST MACHINE. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INTEST ASSIGN TO IN001. SELECT OUTTEST ASSIGN TO OUT001.
SOURCE-COMPUTERは 翻訳用のコンピューター名を表し、OBJECT-COMPUTERは実行用のコンピューター名です。FILE-CONTROLは、SELECTしたファイルをASSIGN TOで装置に割り当てることを意味します。
データ部はファイル構造を定義するファイル節(FILE SECTION)、COBOLで使用する変数定義を行う作業場所節(WORKNG-STORAGE SECTION)、実行される処理を表す連絡節(LINKAGE SECTION)、レポートを表す通信節(REPORT SECTION)などによって成り立っています。
データ部の実際のコードの記述例は、以下の通りです。
DATA DIVISION. FILE SECTION. FD TESTFILE. 01 TESTRECORD. WORKING-STORAGE SECTION. 01 TESTMAN. 03 AGE PIC 9(3). 03 NAME PIC X(50). LINKAGE SECTION. REPORT SECTION.
WORKING-STORAGEで定義する変数は例のように階層を持って宣言でき、例ではTESTMANの中に年齢を意味するAGEと名前を意味するNAMEの定義を含んでいます。
手続き部は処理の宣言および実際の処理や、エラーになった場合の処理内容を記述します。
STOP RUNの命令でプログラムの終了が可能です。手続き部の実際のコードの記述例は、以下となります。
PROCEDURE DIVISION. PERFORM TEST-PROC. STOP RUN. TEST-PROC SECTION. DISPLAY "TEST DISPLAY". EXIT.
TEST-PROC SECTION.の中に実際の処理が書かれており、この処理を実行するコードが記述されています。処理を実行する際に「TEST DISPLAY」と表示されるコードのことです。DISPLAYはディスプレイ(モニタ)などに文字を出力することを命令する処理です。
DISPLAYに渡している”TEST DISPLAY”の部分を別の文言にすると、指定の文言が表示されます。処理の実行は、PERFORM TEST-PROC.で行っているのです。実際の処理はDISPLAY以外の命令も自由に行えますので、他の命令も試して実行結果を確認してみてください。
COBOLで四則演算を行うには、下記のコードを記載します。
四則演算をするには基本的にCOMPUTEで行いますが、簡単な足し算はADD、余りを求めるときはMODなどもよく利用するコードです。
四則演算を行うコードの例は、以下になります。
DATA DIVISION. WORKING-STORAGE SECTION. 01 WORK-AREA. //3桁の数字枠を確保し、初期値として6を設定 03 WORK1 PIC 9(3) VALUE 6. //3桁の数字枠を確保し、初期値として3を設定 03 WORK2 PIC 9(3) VALUE 3. //3桁の数字枠を確保 03 WORK3 PIC 9(3). PROCEDURE DIVISION. PERFORM TEST-PROC. STOP RUN. TEST-PROC SECTION. //WORK1とWORK2を足した結果をWORK3に代入 COMPUTE WORK3 = WORK1 + WORK2. //足し算の結果を表示 DISPLAY "足し算実行結果=" WORK3. //WORK1からWORK2を引いた結果をWORK3に代入 COMPUTE WORK3 = WORK1 - WORK2. //引き算の結果を表示 DISPLAY "引き算実行結果=" WORK3. COMPUTE WORK3 = WORK1 * WORK2. DISPLAY "掛け算実行結果=" WORK3. COMPUTE WORK3 = WORK1/WORK2. DISPLAY "割り算実行結果=" WORK3. EXIT.
例では、データ部で宣言したWORK1とWORK2の値を四則演算して、WORK3に実行結果を出力しています。足し算実行結果=9、引き算実行結果=3、掛け算実行結果==18、割り算実行結果=2とそれぞれ実行結果が表示されるでしょう。
現状のコードでは数値を設定する項目9で3桁が確保されているため、実行結果は、以下のようになります。
足し算実行結果=009
引き算実行結果=003
掛け算実行結果=018
割り算実行結果=002
数字の先頭に0を表示させないようにしたい場合は、出力で使用しているWORK3の記述を「DATA DIVISION」内に以下のように設定しましょう。
03 WORK3 PIC ZZ9.
数値項目の先頭にZを設定することで、0ではなく空白が表示されます。Zを設定して実行した結果は、以下の通りです。(※ 空白は△)
足し算実行結果=△△9
引き算実行結果=△△3
掛け算実行結果=△18
割り算実行結果=△△2
ここでは、次の見出しに分けてCOBOL言語の将来性について解説します。
COBOLのスキルを身に付けることにはどのような価値があり、COBOL言語にどのくらいの将来性があるのか、確認していきましょう。
COBOL言語は歴史がある言語なので、過去にCOBOLで開発されたシステムは多く存在しています。金融システムや行政システム、企業の基幹となるシステムなど、多くの事務処理を必要とするシステムがCOBOLで開発されているのです。
しかし、近年システムCOBOLで開発されたシステムを、Javaなどの別のプログラミング言語に置き換える動きがあります。
ただ、別のプログラミング言語に置き換えるためには、現行のCOBOLで開発されたシステムの洗い出しを行い、新たなプログラミング言語での実装からテストまでを行わなくてはいけません。そのため、かなりの時間と費用が必要になることから、COBOL言語で開発されたシステムがそのまま使われているケースもあります。
過去にCOBOLで開発されたシステムは、現在40代から50代の技術者が開発したシステムが多いです。このため、開発に携わった技術者が年々少なくなってきています。
現在ではCOBOLの保守案件はあるものの、COBOLでの新規システム開発の案件は少なくなりました。それゆえに、若い技術者がCOBOLのシステム開発に0から携わり、COBOLを実務で身につける機会が減っています。
仕事でCOBOLを使えるようになるための機会自体が減っているので、COBOL言語を使える若いエンジニアも減っているのです。したがって、COBOLのスキルを身につけた若いエンジニアは貴重な存在といえるでしょう。
今後ますます、COBOLで開発されたシステムを別のプログラミング言語で置き換える案件は増えると考えられます。その中で現行のCOBOLのシステムについて、COBOLのコードを読み、仕様を正確に理解できる技術者は貴重な存在です。
従来の言語をよく理解しないまま新しい言語に切り替えた場合、システム上で不具合が発生する可能性があります。このため、COBOL言語と切り替え先のプログラミング言語の両方の技術を持つ技術者の需要も、高くなると予想されるでしょう。
COBOLエンジニアの平均単価はフリーランスだと61万円です。Javaエンジニアの単価よりも低い傾向にあるでしょう。正社員のCOBOLエンジニアの平均年収は約400〜700万円とのデータがあります。
つまり、「COBOLができる技術者」を目指すよりは、「COBOLもできる技術者」を目指すことで、仕事を取りやすくなると同時に年収アップも目指すことが可能です。
たとえば、COBOL言語で開発されたシステムを「Java」で置き換える案件では、「Java」のスキルと、COBOL言語のスキルの両方が必要となります。複数のマルチなプログラミング言語のスキルがあると平均年収が上がる傾向にあるのです。
COBOLのスキルは保守案件を除けば、COBOLで開発されたシステムを別のプログラミング言語に置き換える案件で活用できます。このため、「COBOLを学ぶ」や「Javaを学ぶ」という選択肢を取るより、「COBOLもJavaも学ぶ」ことがおすすめです。
COBOLもJavaもできる技術者は貴重で、スキルの幅を大きく広げられます。本記事をきっかけとして、ぜひCOBOL言語を「Java」とあわせて学び、エンジニアのキャリアを広げてみてください。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール