シンプルなCOBOL

ガッツポーズするエンジニア


COBOLは1959年に開発された事務処理用のシンプルなプログラミング言語です。


COBOLの特徴


COBOLは事務処理を目的として開発され、事務員でも簡単に書けるように設計されたシンプルな言語です。

  • 事務処理に特化
  • 英語に近似したプログラミング言語
  • 保守し易い

上記の特徴があります。


事務処理に特化

確定申告書B


COBOLはそもそも事務処理を目的として開発されています。

金額などの誤差が許されない正確な計算が必要とされる場合、他の言語だと演算誤差や小数点処理が問題です。

COBOLははじめに桁数を指定して2進数・10進数を用いて計算することで正確な数字を算出することができます。

また、文字列解析や帳票などの事務処理はこのCOBOLの得意分野です。


英語に近似したプログラミング言語

HTMLによるWeb開発


事務処理向けに開発されたCOBOLですが、機能面だけではなくコマンド語彙や構文の側面でも事務向けなところがあります。

事務員や公務員などプログラミングを専門的に学んでいない人でも扱えるように開発されたのがCOBOLです。

英語とほとんど同じように読める構文とコマンド語彙で構成されています。

COBOLの構文形態と英語が扱えればプログラムが書けるように設計されているため世界的に広く使われているようです。

可読性が高く、誰でも書き易いというのが最大の特徴であるといえます。


保守し易い

ソフトウェア開発企業のオフィスで働くプログラマー


COBOLは古い言語ですが、言語企画の拡張が現在でも続いていて常に最適化されています。

60年間も使用され続けているため規格が洗練されていて誰が書いても読みやすく分かり易い言語であるので保守が容易です。

またオブジェクト指向にも対応しているので、他言語との互換性と相互運用性に優れています。


COBOLのメリット

PCを操作する日本人男性


世界的に使わているだけその分多くのメリットがあります

メリットは以下の4つです。

  • 事務処理速度が速い
  • 扱いやすい
  • 優れた保守性
  • 世界中で使われている


事務処理速度

ハッカー


ハードウェアとストレージやインターフェースなどの各種I/Oが最適化されると、COBOLは最大のパフォーマンスを発揮します。

条件しだいですが、Javaなど最新言語よりも処理能力が高いといわれています

これが60年間も使われ続けている要因の一つです。


扱いやすい

最新ニュースを読んでいる


特徴でも述べましたが、英語に近似したプログラミング言語です。

コマンド語彙はほとんど英単語で、あとは構文を覚えてしまえば簡単に書くことも読むこともできます

60年間使われているだけあって規格が洗練されていて世界中の誰でも扱うことができるでしょう。


優れた保守性

ビジネスマンがセールスデータを分析しているところ


60年以上の使用実績が裏打ちしているように実用性と共に高い保守性があります

前述したように誰でも読めて書けるという特徴があり、保守の際に違う人が書いたコードも簡単に読めるということです。

解析に時間を使わないのでコストもかからず、保守・監視のし易さは他の言語を凌駕しています。


世界中で使われている



これは特徴であり、メリットです。

英語は世界中で使われている言語でもあるため、COBOLの敷居は低いでしょう。

事務処理と計算に特化しているため、金融・証券の世界で広く使われる言語です。

COBOLで組まれたシステムを現行で使用している組織は数千、数万もあるといわれています。


入門者でも分かる簡単プログラム

スクリーンにプログラムを書く若い女性


ここまでで誰でも簡単に書けるプログラミング言語だと分かったと思います。

ここからは表記法とプログラム書式の紹介です。

また実際に幾つかのプログラムとコードの例を挙げていきます。


COBOLの表記法



文法やプログラム語彙は英語に近いものが多用されています。

コマンドは英語の命令形になるような書き方で、文末は英文のようにピリオドで締めるというのが基本です。

  • 見出し部(IDENTIFICATION)
  • 環境部(ENVIRONMENT)
  • データ部(DATA)
  • 手続き部(PROCEDURE)

このようにプログラム全体は見出し部、環境部、データ部、手続き部の4つに分かれていてさらに各部が節や段落に分かれています


見出し部

HTMLコード


プログラムの最初、その名の通り見出しとなる部分です。

ここにはプログラム名や作成者名、作成日、インストール先などを明記します。

メンテナンスに関わる部分ですので実装後に重要となる場所です。

例えば、以下の情報を入力するとします。

  1. プログラム名「COBOLSAMPLE」
  2. 作成者「YAMADA」
  3. 作成日「2019年12月25日」
  4. コンパイル日「2019年12月25日」

COBOLだと、以下のような形で記述します。

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. COBOLSAMPLE.
  3. AUTHOR. YAMADA.
  4. DATA-WRITTEN. 2019/12/25.
  5. DATA-COMPILED. 2019/12/25.


環境部

ホワイトボードにLANネットワーク図を記入する女性


ここでは、プログラムのコンパイルと実行を担当するコンピュータ名を指定し、環境変数や入出力するファイル名と種類を定義します。

特にファイル名は入出力に関わり、プログラム動作に影響を及ぼすため確実に記述する必要があります

  1. ENVIRONMET DIVISION.
  2. INPUT-OUTPUT SECTION.
  3. FILE-CONTROL.
  4. SELECT IN-FILE ASSIGN TO IDABC
  5. ORGANIZATION IS LINE SEQUENTIAL.

上記は「IDABC」というファイルに書き込みを行う時の一例です。


データ部

データセンターのサーバールーム


ここからが実際に動作するプログラム部となります。

データ部にはデータ項目数、入出力ファイルや作業場所などのレイアウト、外部から引用したプログラムなどの全てのデータ定義をします。

  1. DATA DIVISION.
  2. FILE SECTION.
  3. FD IN-FILE.
  4. 01 IN-RECORD.
  5. 01 IN-ITEM-NAME PIC X(10).
  6. WORKING-STORAGE SECTON.
  7. 77 WRK-COUNT PIC 9(5)

上記は記述例です。

このプログラムだと「ITEM-NAME」つまりアイテム名は10文字以内で決めるという定義ができました。

データ部にはこの他にも「LINKAGE SECTION」「COMMUNICATION SECTION」「REPORT SECTION」で記述する、それぞれ連絡、通信、レポートの節があります。


手続き部

プログラミングするソフトウェアエンジニア


手続き部はCOBOLで最後に記述する部分です。

ここでは主にプログラムがどのように処理を行うかを決めます

今までの3つが既定の項目を使って記述していくのに対し、手続き部は作成者が処理内容を記述していかなければなりません。

  1. PROCEDURE DIVISION.
  2. INIT-PROC SECTION.
  3. MOVE “Hello” TO OUT-MSG.
  4. DISPLAY OUT-REC UPON CONSOLE.

この記述例をコンパイルすると、コンソール上には「Hello」と出力されます。

コードの最後に「STOP RUN」と書くと完成です。


COBOLにおけるデータ分類

ロウソク足チャート


COBOLで使用するデータは3つです。

  • 変数
  • 定数
  • 表意定数

紹介した具体例でも記述したこれらの定数、変数を組み合わせて定義をしていきます


基本コード・簡単なプログラム

ここからは基本的なコードと簡単なプログラム例を紹介します。


ハロー・ワールドプログラム

英語と若い女性


プログラム言語の入門書や入門サイトで必ず例題として登場する「Hello world」プログラムをCOBOLで書いてみましょう

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. SAMPLE-01.
  3. *
  4. ENVIRONMENT DIVISION.
  5. *
  6. DATA DIVISION.
  7. *
  8. PROCEDURE DIVISION.
  9. MAIN.
  10. DISPLAY “Hello world!” UPON CONSOLE.
  11. STOP RUN.

上記のプログラムでコンソール上に「Hello world!」と表示されます。


実際に記述すると



見出し部や環境部はプログラムを記述する上で動作に影響がない部分です。

実際にCOBOLを書くときは「IDENTIFICATION DIVISION」と宣言さえすればその内容は空欄でもプログラムは動作します。

ただし、見出し部で記述するプログラム名は記述する必要があります。


COBOLの今後

COBOLがその扱いやすさから世界中で親しまれている言語だと分かったと思います。では60年以上の歴史を持つCOBOLは今後どうなっていくのでしょうか


COBOLの現状



COBOLは60以上の歴史を持つ言語ですが、若い世代のエンジニアから見ると骨董品というイメージがあるようです。

実際に日本ではCOBOLの資格試験「COBOLプログラミング能力認定試験」が廃止されました。

IPAの基本情報技術者試験にもCOBOLの問題がありましたが、2020年4月でPythonの問題に切り替わるようです。

このままCOBOLは廃れる技術なのでしょうか。


COBOLは無くなる?

スーツ男性 オフィス


金融機関をはじめとする企業の業務は、数字や文字の羅列を扱う事務処理が多くを占めています。

COBOLが得意とするのは事務処理、計算処理です。

また、世界中の金融機関や政府機関の中枢システムには実は未だにCOBOLが使われいます

長年安定稼働を続け、保守性に優れたシステムを全く違う言語に書き換えるのはリスク、コスト共に大きく容易ではありません。

そのため、COBOLはこれからも社会の中枢的システムを動かし続けるでしょう。


COBOL技術者の需要



これだけしか使えない、というエンジニアは少ないと思います。

しかし、COBOLに特化したエンジニアの需要はどうなっていくのでしょうか。

上記で述べた通り、COBOL自体はこれからも社会の中枢で使用されるでしょう。

COBOLが持つ60年以上の歴史は重く、新言語がそう簡単に取って代わることができるものではありません。

COBOLを使って新しいシステムを構築する機会は少なくなってきましたが、現行のプログラムを保守・監視する仕事は今後もあるでしょう。

COBOL技術者の需要はなくならない、といえます。


COBOLの問題

COBOLは信頼性に優れた言語であることは間違いありません。しかし、古い技術であるというのも確かで、そこが問題となっています。


新規開発の市場が減っている



COBOL関連の業務は大半が保守業務です。つまりすでに開発されたものを見守り、整備する仕事ばかりということ。

開発案件は人気ですが、保守・監視の案件は人気がありません

また、システム開発する業務自体もプラグインで済んでしまうことが多く案件は殆どありません


技術者の高齢化

自分たちのオフィスで働く男性


COBOL自体は保守性と可読性が高い優れた言語です。しかし、それを扱える人がいなくなれば意味がありません。

COBOLのプロフェッショナルは高齢化が進み、現役で活躍しているエンジニアは少なくなっています。

その理由の一つが前述した新規開発案件の減少。COBOL関係の案件は保守業務ばかりということです。

保守業務は重要かつ難しい案件ですが、開発案件に比べて経験値を得るのが難しいといえます。

そのため、経験と実績にどん欲な若いエンジニアは保守業務でしか使わないCOBOLを敬遠する傾向があるようです。


COBOLのリプレイス・マイグレーション

ここまでを総括して考えられる事象としてリプレイス・マイグレーションの需要拡大が挙げられます


使える人が居なくなったら

紙を破る男性


COBOLが抱える問題として高齢化があると述べました。また、若い世代のエンジニアも敬遠しているのも事実です。

このままでは、COBOL技術者がほとんどいなくなる事態も考えられます。

COBOLが現役で動いている企業や政府機関も同じことを予想しているのではないでしょうか。

その結果として、リプレイス・マイグレーションの案件がこれから増える可能性があります


リプレイス・マイグレーション

正しいドアを選択するビジネスマン


これから開発案件が増える可能性は低いと予想できますが、保守やリプレイス・マイグレーション案件は増えると考えられます。

若い世代に敬遠されがちなCOBOLですがその可読性・保守性の高さからまだしばらくは使われいくでしょう。

しかしそう遠くない将来、リプレイス・マイグレーションが終わってしまうとCOBOLが無くなってしまうかもしれません