COBOL言語とは?

COBOL言語とは?

COBOL言語とは、「Common Business Oriented Language(共通事務処理用言語)」の略称で、会計処理や事務処理向けに開発された高水準プログラミング言語です。英語に近い構文を持つため、他言語と比べて読みやすく、理解しやすいという特徴があります。

COBOL言語は1959年に米国で誕生しました。開発を主導したのはプログラマーのグレース・ホッパー氏で、データ処理用言語「FLOW-MATIC(フローマティック)」をもとに、米国防総省の計画の一環として開発されました。

その後、COBOLは米国内にとどまらず、瞬く間に世界中へ普及していきました。日本では、1965年に富士通が、COBOLプログラムをコンピュータで実行可能にするための専用コンパイラを発表しました。現在もなお、官公庁の行政システムや金融機関の業務システム、ホテル・交通機関の予約システム、一般企業の基幹システムなど、社会インフラを支える重要な技術として活用されています。


COBOL言語の特徴

COBOL言語には、以下のような特徴があります。

【可読性】

英語に近い構文を持ち、ほかのプログラミング言語と比べてコードが読みやすく、初心者にも学びやすい言語です。また、プログラムの構造が「部」「節」「段落」という階層で整理されているため、ドキュメントとしても活用しやすい点が特徴です。

【高い計算処理能力】

事務処理に特化しており、計算処理能力が高い言語です。10進数を採用しているため、小数点以下の計算も誤差なく正確におこなうことができます。そのため、とくに金融業界で重視されています。

【高い信頼性と保守性】

長い運用実績を積み重ねてきた言語であるため、信頼性と保守性に優れています。この特性から、金融機関や政府機関などの基幹システムで現在も広く使用されています。

【OS非依存・高い移植性】

WindowsやUnix/Linuxなど、さまざまなOS上で動作するため、異なる環境間でも柔軟に利用できます。

【帳票作成への強み】

定型帳票の生成や印刷などに強みがあり、項目定義やフォーマット指定、動的な空白生成なども可能です。行政文書などにも多く利用されてきました。


COBOLシステムの運用・保守、マイグレーションのご相談ならFPTへ


COBOLプログラムの構成や書き方

COBOL言語のプログラムは、「見出し部」「環境部」「データ部」「手続き部」の4部で構成されています。さらに各部の中は、セクション、段落、センテンス、動詞、文字列といった階層で構成されます。

見出し部は省略できませんが、それ以外の部は省略可能です。各部の役割が明確に分かれているため、ソースの構造を把握しやすいのが特徴です。ただし、変数の宣言はデータ部でしかおこなえないため、ほかのプログラミング言語に慣れたプログラマーにとっては不便に感じる場合もあります。

それでは、4つの部について詳しく解説していきます。

見出し部

見出し部は「IDENTIFICATION DIVISION」です。COBOLプログラムの最初に記述しなければならない必須の部です。この部では以下の情報を記載します。見出し部には「節(セクション)」は存在しません。

  • プログラム名:SAMPLE
  • 作成者:MUTO
  • 作成日:2025/10/16
  • コンパイル日:2025/10/16

実際の記述は以下のようになります。

IDENTIFICATION DIVISION.

PROGRAM-ID. SAMPLE.

AUTHOR. MUTO.

DATE-WRITTEN. 2025/10/16.

DATE-COMPILED. 2025/10/16.

環境部

環境部は「ENVIRONMENT DIVISION」です。プログラムの動作環境を定義する部であり、構成節(CONFIGURATION SECTION)と入出力節(INPUT-OUTPUT SECTION)の2つに分かれています。

CONFIGURATION SECTIONでは、コンパイル時と実行時の環境を指定します。一方、INPUT-OUTPUT SECTIONでは、ファイルの入出力に関する設定をおこない、FILE-CONTROL段落でその内容を定義します。

以下は、INPUT-OUTPUT SECTIONの記述例です。

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

    SELECT SampleFile ASSIGN TO "test.txt".

データ部

データ部は「DATA DIVISION」です。ファイルのレイアウト、プログラムで扱う変数や定数を定義します。多くのプログラミング言語は変数を任意の場所で定義できますが、COBOL ではデータ定義を DATA DIVISION に集約するのが原則です。

以下は、WORKING-STORAGE SECTIONで変数を定義する例です。

DATA DIVISION.

WORKING-STORAGE SECTION.

    05 NUM-A                   PIC 9(3) VALUE 100.

    05 NUM-B                   PIC 9(3) VALUE 50.

    05 RESULT-VALUE   PIC 9(4) VALUE ZEROS.

手続き部

手続き部は「PROCEDURE DIVISION」です。データの入力、計算や編集、出力など、プログラムの処理手続きを定義します。この部には規定の節や段落はなく、必要に応じて作成します。STOP文を記載することでプログラムを終了することが可能です。

以下は、PROCEDURE DIVISIONの記述例です。

PROCEDURE DIVISION.

    ADD A B GIVING RESULT.

    DISPLAY "The sum of A and B is: " RESULT.

    STOP RUN.


COBOLプログラムの作成例

ここでは、「Hello, world!」の出力と基本的な加算処理のプログラムについて解説します。

COBOLプログラムの作成例

【「Hello, world!」の出力】

COBOLで「Hello, world!」を出力するプログラムは、以下のとおりです。

まず、見出し部でプログラム名を「HELLO-WORLD」と定義します。環境部とデータ部は省略し、手続き部で「DISPLAY」文を使用します。
「DISPLAY」は、文字列や数値などを画面に表示する命令文です。

この命令文を使って、「Hello, world!」という文字列を出力します。

IDENTIFICATION DIVISION.

PROGRAM-ID. hello-world.

PROCEDURE DIVISION.

     DISPLAY "Hello, world!"


【基本的な加算処理のプログラム】

次に、変数を使った加算処理のプログラム例です。

まず、見出し部でプログラム名を「SUM」と定義します。
データ部では、プログラムで使用する変数を「B」「C」「RESULT」と定義し、Bの初期値を2、Cの初期値を3に設定します。手続き部では、プログラムの実行手順を以下のように記述します。なお、環境部は省略しています。

1. 加算実行
「ADD B C GIVING RESULT.」で、変数Bの値「2」と変数Cの値「3」を加算し、その結果「5」を変数「RESULT」に格納します。

2. 結果表示
文字列「The result of B + C is: 」の後に、計算で得られた「RESULT」の値「5」を「DISPLAY」文で画面に出力します。

3. プログラム終了
「STOP RUN.」でプログラムの実行を終了します。

プログラム例:

IDENTIFICATION DIVISION.

PROGRAM-ID. SUM.

DATA DIVISION.

FILE SECTION.

WORKING-STORAGE SECTION.

    05 B                   PIC 9 VALUE 2.

    05 C                   PIC 9 VALUE 3.

    05 RESULT      PIC 9 VALUE 0.

PROCEDURE DIVISION.

    ADD B C GIVING RESULT.

    DISPLAY "The Result of B + C is: " RESULT.

    STOP RUN.


COBOLのマイグレーションをはじめとしたFPTのレガシーモダナイゼーションサービスについて動画でわかりやすくご紹介しています。


COBOL言語の課題・懸念点

COBOLエンジニアの不足

多くの若手エンジニアがC、Java、C++といったオープン系のプログラミング言語を扱うようになり、COBOLに触れたことのない人が増えています。その結果、COBOLエンジニアの中心は40〜50代のベテラン層が占めるようになりました。

このままではCOBOLエンジニアの高齢化が進み、若手人材の不足が深刻化する恐れがあります。さらに、人材の減少は既存システムのブラックボックス化を助長する要因にもなりかねません。そのため、今後は若手のCOBOLエンジニアを育成する取り組みが一層重要になるでしょう。

レガシーシステムの現状

DX推進の足かせとなっているのが、長年運用されてきたレガシーシステムです。とくに官公庁や大企業のメインフレームはCOBOLで構築されており、COBOLエンジニアの高齢化が進むことで、トラブルが発生しても迅速に対応できないというリスクがあります。

2023年の全銀システム障害では、言語そのものが直接的な原因ではありませんが、COBOLを用いたシステムの脆弱性が露呈した事例といえます。COBOLはC言語やJavaとの互換性が低く、レガシーシステムを刷新するには莫大な費用と工数を要するマイグレーションを実施する必要があります。しかし、エンジニア不足などの課題もあり、移行が思うように進んでいないのが現状です。

運用・保守のみ対応

COBOL言語は、金融機関のメインフレームにおける保守やトラブル対応などで一定の需要があり、比較的安定した案件が見込めます。しかし、新規開発はほとんどおこなわれていないのが現状です。

そのため、COBOL言語しか扱えない場合、主流の開発分野から取り残される恐れがあります。さらに、多言語化やシステム移行の進展により、案件数が減少する可能性も考えられます。今後もシステム開発に携わり続けるためには、オープン系言語の習得が求められるでしょう。


COBOL言語の課題解決の一つの選択肢「COBOL PARK」とは

COBOL言語の課題解決に向けた「COBOL PARK」について

前述のとおり、レガシーシステムにおいては、レガシースキルを持つ人材の確保やシステムの複雑化・ブラックボックス化への対応が急務となっています。こうした課題を解決するため、2024年10月29日にFPTとSCSKは、合弁会社「COBOL PARK」を設立することを検討・協議する基本方針に合意しました。

「COBOL PARK」とは、FPTソフトウェアの若手人材と、SCSKの高い技術力や業務知見を持つシニア人材を結集し、レガシーシステムの開発・運用を担う人材を確保するとともに、レガシーナレッジを持続的に継承する取り組みです。

これにより、既存システムの維持に必要な技術者を確保できるだけでなく、レガシーシステムのさらなるブラックボックス化を防ぐことも期待できます。また、シニア人材に対して、継続的かつ柔軟な働き方を提供する場としても機能します。


COBOLシステムの運用・保守、マイグレーションのご相談ならFPTへ


まとめ

誕生から長い歴史を持つCOBOL言語は、コードが読みやすく、高い計算処理能力を持つため、官公庁の行政システムや金融機関の業務システムで広く利用されてきました。しかし近年は、COBOLエンジニアの高齢化や、メインフレームのブラックボックス化が問題となっています。

こうした課題を解決するため、FPTとSCSKは「COBOL PARK」を通じて、レガシーシステムのさまざまな課題解決に取り組んでまいります。


FPT

この記事の監修者・著者:FPTコンテンツ制作チーム

FPTコンテンツ制作チームは、ITソリューションやデジタル技術に関する情報を発信しています。業界動向や技術トピックについて、記事の制作を行っています。
監修者・著者の詳しい情報はこちら →


関連リンク


関連ブログ:コラム


関連ブログ:レガシーモダナイゼーション