- COBOLとは
- COBOLを学ぶメリット・デメリット
- COBOLのプログラムの記述方法
- COBOLが採用されている業界
- COBOLエンジニアの業務内容と必要なスキル
- COBOLエンジニアの将来性
- COBOLに関するよくある質問
- まとめ
COBOLとは
COBOLは、1959年に事務処理用に開発された汎用系のプログラミング言語です。企業や自治体、金融機関における事務処理を自動化することを目的に作られました。COBOLが開発されてから60年以上経っていますが、現在でも行政、企業の基幹業務、銀行、ホテルの予約、座席の予約システムなどで利用されています。
COBOLの特徴
COBOLは事務処理に特化したプログラミング言語です。そのため、COBOLに用意されている機能はファイル読み込みや帳簿出力、印刷などが中心です。コードの記述としてはシンプルで、英語を省略したような印象を持つ人が多いでしょう。
省略された英語で処理をべた書きしているような記述になります。また記述が英語に近いため、プログラミング経験がない人でもどのような処理が行われているのかわかりやすいという点も大きな特徴です。
COBOLでできること
COBOLでできることを具体的に挙げていきます。
事務処理
事務処理はCOBOLのメインの用途なので、COBOLでできることの代表例です。現在でも事務処理系のシステムにはCOBOLが用いられることがあります。古くからある公共システムなどが代表例でしょう。大量データを読み込んで処理し、出力する、といった処理を行っています。
計算
COBOLは計算も得意としています。プログラミング言語全般計算は得意ですが、その中でもCOBOLは計算に強みを持ちます。コンピューターは内部的には10進数を2進数に変換して計算し、再度10進数に変換して出力しています。
一方で、COBOLの場合は2進化10進数という10進数の1桁を2進数4桁で表記する独自のロジックが用いられています。プログラマーが2進数4桁で10進数を表記するので慣れるまでは少し混乱する可能性もありますが、慣れれば簡単です。
そしてプログラム側で10進数を2進数に変換する必要がなくなるので、計算処理がより正確、高速になります。
帳簿の出力
COBOLは帳簿の出力も得意としています。そのため、COBOLで開発されたシステムは帳簿出力の機能も有している場合が多いでしょう。プログラミングで帳簿出力時の細かい位置調整なども可能です。COBOLの開発現場では、コードを調整しながら帳簿出力を繰り返し、位置などを整える、といったことをやっている場合も多いです。
COBOLを学ぶメリット・デメリット
COBOLにはメリットもデメリットもあります。COBOLを学習する人は何か理由があってほかの言語ではなくCOBOLを選択している場合が多いと思いますが、ここでメリットとデメリットをまとめていきます。現状COBOLはどちらかというとマイナー言語で、若手エンジニアがCOBOLを選択するのは特殊です。希少価値を狙うという意味では有効な戦略なのですが、メリットもデメリットも把握した上でキャリアプランを考えることが重要です。
COBOLを学ぶメリット
まずはCOBOLを使うメリットです。
構文が英語に近く可読性が高い
COBOLは簡略化した英語のような表記になっています。そのため、プログラミング経験がない人でも処理の内容を推測できるでしょう。また上から下に一連の流れで記述されている場合が多いため、その点でも可読性は高いです。
保守性が高い
COBOLは長年事務処理システムに使用されてきており、現在でもCOBOLシステムは稼働しています。特に官公庁などシステムの保守が重要になるシステムで使用されているので、保守性の実績といえるでしょう。大規模システムでは担当者が入れ替わることも多いのですが、COBOLはコードの可読性が高いので、設計書が紛失していたりしても比較的処理を推測しやすいです。この点も保守性の高さにつながります。
金額計算に向いている
COBOLが多く採用されている金融業界では、大きな桁数の金額計算を行う必要があるうえ、誤差の発生は許されません。COBOL以外のプログラミング言語を利用する場合、浮動小数点を扱うと、丸め誤差が生じたり、切り捨てが発生したりしてしまいます。COBOLは、データを2進化10進数で扱う構文です。小数点以下を明示的に定義できるほか、桁数の指定も可能です。
大量レコード処理に向いている
COBOLは、データの書き込みや並列処理を高速で実行できるプログラミング言語です。そのため、金融業界で大量のデータを取り扱うバッチ処理などに用いられます。
移植性が高い
COBOLはOSに依存しないプログラミング言語なので、複数の環境に移植できます。現在主流のプログラミング言語では移植性が高いのは当たり前といった状況ですが、COBOLが誕生した当時は移植性の高さはCOBOLの大きな強みでした。つまりCOBOLは古いプログラミング言語のわりには移植性が高いということです。
COBOLを学ぶデメリット
COBOLにはメリットも多いですが、デメリットもあります。COBOLというプログラミング言語仕様のデメリットというよりは、COBOLを取り巻く環境要因によるデメリットです。
技術者の高齢化
COBOLは古くからあるプログラミング言語で、COBOL案件にはベテランエンジニアも多いです。一方で、若手のエンジニアがあまりCOBOL案件に積極的でないという面もあります。COBOLは現在も使用されているものの新規開発での使用は少なく、また若手エンジニアはWeb、スマホアプリ、AIなどに関心を持っているケースが多いです。
COBOLを習得するメリットが薄く、また新しい技術により関心があるといった事情から、若手人材が不足し技術者が高齢化しています。
COBOLでの新規案件は減少傾向にある
COBOL案件はほとんどがシステムの改修や保守・運用です。金融機関や官公庁などもともとはCOBOLシステムが多かった業界でも、今から新規にシステム開発を行う場合にCOBOLは選ばないでしょう。COBOLは可読性や保守性に優れているものの、たとえばオブジェクト指向言語のようにコードの使いまわしなどには向いていません。コードが長く冗長になるようなケースも多いため、結果的に新規案件ではより新しい別の言語のメリットに負けてしまいます。
COBOLのプログラムの記述方法
COBOLのプログラムは、4部に分けて記述する点が特徴です。各部は、さらに節や段落に分けられます。部、節、段落に分かれていることで、それぞれの役割が明確となるため、COBOLは可読性が高い言語といわれます。言語仕様的に改修効率が悪いなどの理由で後から誕生した言語に代替されていったのですが、可読性という意味では現在主流の言語よりもCOBOLはむしろ見やすいといえるでしょう。
見出し部(IDENTIFICATION DIVISION)
見出し部には、プログラム名、作者名、作成日などのメタ情報を記載します。以下に、見出し部の例を記載します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE001.
AUTHOR. TARO-SUZUKI.
DATE-WRITTEN. 2023/4/1.
DATE-COMPILED. 2023/4/1.
環境部(ENVIRONMENT DIVISION)
環境部には、環境変数や使用するファイルなどを記載します。下記は環境部の記載例です。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. COMPUTER01.
OBJECT-COMPUTER. COMPUTER01.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN TO FILE01
ORGANIZATION IS LINE SEQUENTIAL.
SELECT OUT-FILE ASSIGN TO FILE02
ORGANIZATION IS LINE SEQUENTIAL.
データ部(DATA DIVISION)
データ部には、変数の定義やファイルのレイアウトなどを記載します。データ項目のデータ型と桁数を指定する場合は、PICTURE句を利用します。データ型は、数値形式、英数字形式、書式編集形式の3つに大きく分けられます。たとえば、9は数字1桁、Xは任意の文字を表しており、データ型の後ろに記載される括弧内の数字はバイト数です。下記にデータ部の例を記載します。
DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-RECORD.
03 IN-PRODUCT-CODE PIC X(6).
03 IN-PRODUCT-NAME PIC X(30).
03 IN-PRODUCT-PRICE PIC 9(8).
WORKING-STORAGE SECTION.
77 WRK-COUNT PIC 9(2).
LINKAGE SECTION.
REPORT SECTION.
SCREEN SECTION.
手続き部(PROCEDURE DIVISION)
手続き部には、プログラムが行う処理内容を記載します。行の先頭に*を記述すると、その行はコメント行になります。下記は手続き部の記載例です。
PROCEDURE DIVISION.
PERFORM INIT-PROC.
*
PERFORM MAIN-PROC.
*
STOP RUN.
*
INIT-PROC SECTION.
*
MOVE ZERO TO WRK-COUNT.
*
OPEN INPUT IN-FILE.
PERFORM INFILE-READ-PROC.
*
INIT-PROC-EXIT.
*
EXIT.
COBOLでhello worldを出力する場合のプログラミング例
COBOLでhello worldを出力する場合のプログラム例を記載します。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORLD-01.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
*
PROCEDURE DIVISION.
MAIN.
DISPLAY "hello world" UPON CONSOLE.
STOP RUN.
COBOLが採用されている業界
COBOLは古くからあるプログラミング言語なので、古くからある業界、企業のシステムにCOBOLが採用されています。当時大規模システムにCOBOLが使用され、そのまま改修を続けているような状況です。大規模システムは改修を繰り返してさらに大きくなっていて、またセキュリティも重要視される場合が多いです。その結果COBOLから抜け出せなくなっているという事情もあります。
金融業界
金融業界の古いシステムではCOBOLが使用されているものもあります。Javaなどのプログラミング言語に大々的に書き替える動きはあったのですが、書き換えが難しくCOBOLのままになっているシステムもあります。
官公庁・公社
官公庁・公社・団体業界は金融業界と比較しても生き残っているCOBOLシステムは多いでしょう。システムの規模が大きすぎて全体像を把握できている人がおらず、結果的にほかのプログラミング言語に書き替えるのも難しい、といった事情もあります。こういったシステムは、今後もCOBOLが使われ続けるでしょう。
一般企業
一般企業でも古くからある企業だと、基幹システムにCOBOLが使用されている場合があります。金融機関や官公庁と比べると一般企業はCOBOLから別のプログラミング言語への書き換えを気軽に行いやすいでしょう。
しかし言語やシステムの刷新には予算がかかり、COBOLでの運用で問題なければ書き替える必要がないともいえます。結果的に、長年COBOLで動き続けている一般企業のシステムもあります。
ホテル業界
昔からあるホテルでは、予約システムなどにCOBOLが使用されているケースがあります。比較的新しいホテルでは、COBOLシステムを使用しているケースは稀でしょう。COBOLは単純かつ大量のデータ処理に向いているため、予約数が多いシステムでも単純な処理であれば不具合なく処理できます。
COBOLエンジニアの業務内容と必要なスキル
COBOLエンジニアの業務内容や必要スキルは基本的にほかのプログラミング言語エンジニアと同じですが、COBOLならではの事情もあります。古くから存在する業務システムを扱っていることや比較的固い印象の業界がクライアントになるのでプログラミング以外の面も重要になることが多いです。イメージ的には、事務作業に近い部分も多いでしょう。
業務内容
COBOLを用いて金融、生命保険、損保などのシステムやアプリを開発することがメインですが、人事、給与、会計に関する開発を行う場合もあります。また、運用・保守や障害対応が業務内容として明記されている求人も見られます。企業によっては、上流工程から携わるケースもあるでしょう。
必要なスキル
COBOLを用いて汎用系システムを開発した経験が一定年数求められます。業務用システムに携わることになるので、その業界の知識や、資料整理など事務的な能力も重要です。また、COBOLエンジニアに限らず、開発に携わるエンジニアに共通して必要なスキルとして、コミュニケーション能力や主体性が挙げられます。
関連記事:COBOLエンジニアの転職に必要な経験・スキルとは?
COBOLエンジニアの将来性
COBOLは1960年代に登場したプログラミング言語であり、COBOLでの開発をメインで担当してきたエンジニアは、すでに退職している人も少なくありません。また、若年層のエンジニアは、金融業界や官公庁を志望していない限りは、Web系で用いられるプログラミング言語の習得を優先するため、COBOLを扱える人材は不足気味です。しかし、COBOLで開発されたシステムが稼働している限り、これらのシステムの開発・運用・保守を行えるエンジニアの需要は続くでしょう。
COBOLの利用状況
COBOLは、現在でも日本国内における多くの企業で利用されています。IPA(情報処理推進機構)が公表しているソフトウェア開発分析データ集2022によると、国内のソフトウェア開発プロダクト開発に使われているプログラミング言語の累積件数において、COBOLは16.3%を占めており、1位のJava(42.4%)に次ぐ2位です。
COBOLはもう古い?
COBOLが古いプログラミング言語であることは間違いありません。そして、COBOL案件も縮小傾向です。とはいえ、今後もCOBOLは生き残っていくので習得するメリットはあります。COBOLが生き残る理由として、大規模システムで使用されていて他言語への入れ替えが難しいこと、COBOLから他言語への入れ替え案件もあること、言語がオブジェクト指向対応やオープン化など進化していることなどが挙げられます。
またCOBOLエンジニアが高齢化しているため、若手のCOBOLエンジニアの価値が高まっています。若手のエンジニアはCOBOLのスキルを身に付けることで、Web言語などよりも好待遇の可能性もあります。同じ一定のスキルレベルであれば、むしろCOBOL案件の方が単価が高いケースも珍しくないでしょう。
COBOLに関するよくある質問
COBOLに関するよくある質問と回答を紹介します。COBOLは現在主流のプログラミング言語と比較すると、言語仕様としても市場での開発プロジェクトとしても違いが大きいです。COBOLを学習するかどうか検討するには、言語仕様やどのようなプロジェクトがあるのか知る必要があるでしょう。理由なく選ぶような言語ではないので、COBOLを学習するのであれば明確な狙いを持って学習してください。
Q1. COBOLとはどんなプログラミング言語ですか?
COBOLは1959年にアメリカで開発された古くからあるプログラミング言語です。事務処理や計算を得意としていて、今でも古い大規模システムなどで使用されています。汎用機で使用する汎用COBOLだけでなく、使用環境を問わないオープンCOBOLもあります。
Q2. COBOLではどのようなことができますか?
COBOLでは、事務処理、帳簿の出力、計算処理などの実装ができます。厳密に言えばCOBOLでWebシステムを開発するようなことも可能で、事例はそれなりにあるでしょう。とはいえ、一般的に用いられ、またCOBOLが得意とするのは事務処理や帳簿出力や計算ということです。
Q3. COBOLの強みは何ですか?
COBOLの強みは、可読性の高さや数値計算能力の高さです。プログラム全般計算は得意ですが、中でもCOBOLは2進数と10進数の変換過程で誤差が生じないというメリットがあります。なぜなら、10進数を2進化10進数という独自の方法で記述するため変換処理がないからです。ただし人間が間違えると当然処理結果は想定とズレるので、2進化10進数に慣れる必要はあります。
Q4. COBOLの学習難易度を教えてください
COBOLの学習難易度はどちらかというと低いです。英語の文章を簡略化してそのまま記述しているような感じなので、プログラミングの知識がなくてもCOBOLのコードはある程度理解できるくらいです。また英語といっても本格的に英語ができる必要はなく、中学校で習うような簡単な単語がわかれば問題ありません。
Q5. COBOLとJavaの違いは何ですか?
COBOLが手続き型言語であるのに対し、Javaはオブジェクト指向言語です。ざっくりいえばCOBOLは処理をべた書きしていくような感じで、Javaはオブジェクトなど便利な概念をもって特殊な設計をしていきます。COBOLはべた書きなので全体の処理がわかりやすく、Javaは設計が複雑な分プログラミングや改修の利便性が高いといった違いも挙げられます。
まとめ
COBOLは数あるプログラミング言語の中でも歴史があり、60年以上も前から存在します。そして現在も現役で使用されています。特に古くからある大規模システムで使用されていて、処理内容としては事務処理、計算処理、帳簿出力などが一般的です。
COBOLエンジニアは高齢化が進んでいて、若手の人材が不足しています。COBOLは縮小傾向にある言語とはいえ、現在稼働しているシステムではCOBOL人材が不可欠です。そのため、若手エンジニアがCOBOLのスキルを身に付けると需要と供給の関係から単価は上がりやすい傾向にあります。
この観点から、若手エンジニアがスキルの一つとしてCOBOLを身に付ける戦略も有効です。ただしこの場合COBOLだけに依存すると将来的なリスクがあるので、別の言語と並行してスキルを身に付けるのがおすすめです。
ITエンジニアの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。
「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。
「個別相談会」に申し込む
転職支援サービスに申し込む
※転職活動を強制することはございません。
レバテックキャリアのサービスについて