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


はじめに

この記事をご覧になっているほとんどの方は、「COBOLは名前は聞いたことはあるけど、見たことない、もちろん触ったこともない」という方が多いかもしれません。実際、「COBOL」というキーワードで検索をしても記事のヒット数は0件でした。ですので、曲がりなりにもCOBOL開発経験を持つ私が、今回はCOBOLについての記事を書かせていただきます。 ここでは、COBOLに関しての基礎的な知識と、2020年時点での状況を、私の経験も交えながら書き記していきます。

COBOLとは

1959年に事務処理用に開発されたプログラミング言語です。名前は「Common Business Oriented Language」(共通事務処理用言語)に由来します。当時すでに存在していた科学技術計算向けの高水準言語FORTRANに対し、専門的な知識がなくても使用できる事務処理用の言語として定着しました。1950年代、事務処理言語は開発メーカーごとに異なっていましたが、アメリカ国防総省によって、事務処理用の共通言語の開発が提案されました。そんな中開発されたのがCOBOLです。 自然言語に近い構文で人間の文法に近く、プログラミングの入門用としても扱いやすかったため、利用者が世界中に広まり、現在も基幹システムや事務処理のシステムなどに現役で使用されています。 2019年においても、COBOL Cowboys社の調査では2000億行のCOBOLプログラムが現役で、アメリカの経済誌フォーチュンが毎年発表する500の企業の内、90%が実際にCOBOLプログラムを使い続けているとの報告もあります。WindowsやUnix/Linux、.NET Frameworkなど、さまざまなコンピュータや環境で利用できるため、移植性が極めて高いです。

COBOLが使用されている場所

COBOLは主に、主に汎用系(ホスト系)コンピューター(メインフレーム)で使用されています。

汎用系

それまでの目的ごとの「専用機」と違い、ソフトウェアの部分を書き換えることで、色々な目的の作業を一つのコンピューター「汎用機」でできるようになったという所から汎用系と呼ばれます。CPUやOS、ネットワークなどがメーカーの独自設計で、保守も行います。とは言え、最近はオープン系のLinuxやOSS(オープンソースソフトウェア)も動かすことが可能にはなってきています。 主なメーカーは、
  • IBM(製品名:z System・IBM Zなど、OS:z/OS・z/VSEなど)
  • 富士通(製品名:GS21/PRIMEFORCE・GSなど、OS:OSIV/MSP・OSIV/XSPなど)
  • 日立製作所(製品名:AP8800・AP10000など、OS:VOS3など)
などが挙げられます。 現在のPCも、広い意味では事実上汎用系とも言えますが、慣習上分けて使用されています。

オープン系

ホストとなる機械が、汎用機ではなくパソコンとなったものを指します。汎用系のシステム内容が、そのメーカー独自仕様なのに対し、技術仕様が一般的に公開されていることからオープン系と呼ばれます。具体的にはLinuxなどがあります。 オンラインシステムなど、顧客が直接見たり使用したりする部分はCやJavaなどの言語であっても、基幹部分がCOBOLであるというシステムは多くあります。私が関わってきた案件も基本はその形でした。そのため、「あまり知られてはいないが、実は裏でCOBOLが動いている」というシステムは結構多いのかもしれません。「歴史が古く安定した言語で堅牢性に優れており、信頼性が高い」という特徴から、絶対に止まってはいけないようなシステムで採用されていることが多いようです。

特徴

事務処理や計算処理に優れている

「10進数演算を定義できる」という特徴ですが、COBOL(とLinuxを少々)しか触れていない私としては、むしろ当たり前のこととして受け入れていました。

他帳票の出力などに優れている

印刷内容を作成して、GUIベースで印刷することもあります。

可読性が高い

英語の文法や単語が分かれば、それほど苦労せず内容は理解できるかもしれません。 (例)MOVE A TO B IF 条件 THEN 文 [ ELSE 文 ] END-IF 言語規格は拡張が続けられていて、最新のCOBOL2002ではオブジェクト指向にも対応するようになりました。

可読性が高い特徴を持つ反面、記述が冗長になる

逆にLinuxやC言語を初めて見たとき、暗号のように感じたのを覚えています。

歴史が古く安定した言語で堅牢性に優れており、信頼性が高い

主に金融業界や銀行業界の他、いまだに様々な業種で使用されています。私が今まで開発に携わった所で言うと、 2010年ごろまで:某漁協、某外資の生命保険会社、某自動車メーカー、某地方銀行、など(基本的にはシステムの保守や新商品の開発をメインの作業としていました。) 2020年ごろ:某鉄道会社(顧客としての旅行会社との接続システムについての開発がメインとしていました。)

有用性

現在、オンラインでは別の言語でも、バックではCOBOLベースで作られたシステムも多く、移行コストや安定性を考慮して、あえてイミグレーションを行わずにCOBOLを使用していくところも多いようです。逆に、COBOLベースの旧システムから他の言語へのイミグレーション作業案件もそこそこあるそうです。

まとめ

結論として、移行コストや安定性を考慮した場合、必ずしもオープン系に移行しない方がいい場合もあるので、今すぐCOBOLの案件がなくなることはないです。ただ、これから増えていくとも考えにくく、総数としては多くはないようです。 私の場合、他にLinuxの知識を学んだり設計のような上流工程側にも経験を増やしていますが、COBOLだけでできることには限りがあるため、発展性はあまり大きくはないです。若手の方の場合、あえてCOBOL中心でやっていく必要はないかもしれませんが、この記事が参考になる方がいらっしゃれば幸いです。