Tech

COBOL言語とは?今でも使われている?将来性は?

COBOL 将来性

歴史が古いプログラミング言語のCOBOLで作成したシステムが、今でも多くの企業で使われていて問題だ、お荷物だと言われています。

そもそもCOBOLはどういうものかを紹介します。

私自身も入社して数年間COBOLを使っていました。COBOLコンパイラの保守、某社オフコン用COBOLからオープン系COBOLに変換するプログラムの作成、お客のCOBOLプログラムのデバッグなども行ってきました。

COBOLとは

COBOL(コボル)は1959年に登場した歴史あるプログラミング言語です。ISOなどで国際的な標準化が行われています。

IPA(情報処理推進機構)がまとめている「IPAソフトウェア開発データ白書」- 「ソフトウェア開発 分析データ集 2020」で日本で使われている開発言語を確認すると
トップがJavaで4割強、2番目にCOBOLで15%となっています。

一般のユーザが使うアプリで使われることはなく、主な利用は金融機関や官公系のシステムなのであまり表にでることはないので、一般の感覚からすると多いイメージですね。

COBOL言語 利用率

https://www.ipa.go.jp/ikc/reports/20200930.html
https://www.ipa.go.jp/files/000085879.pdf  1.2.2 開発言語

特徴

・事務処理に特化
・帳票の出力も簡単
・お金の計算に強い
・文法がシンプル
・オブジェクト指向ではない
・ベンダーが拡張した方言がある

今どきのオブジェクト指向の言語に比べるとシンプルで分かりやすいです。

特徴・機能の詳細

もう少し機能や特徴を説明します。

特徴・機能

1. 事務処理用のプログラムを作成するのに特化している
=>今どきのWebのプログラミングには向かない、AIや機械学習なども使えない。対象分野が違う。

2.お金の計算など事務処理を目的として作られた言語のため、お金の計算処理に強い
=>これはCOBOLの最大の特徴に1つです。Javaでもできるが可読性が悪い。

3.ファイルに大量のデータを書き込んだり、ソートやマージしてデータを並べ替える処理を高速で行える
=>今どきならRDBを使ってSQLで処理したい

4.帳票の作成や印刷などの処理が可能
=>これはCOBOLの最大の特徴の1つです。

5.英語に近い文法でプログラムを記述するため可読性6高く、習得難易度は低い。C言語やJavaよりは簡単。

長く基幹系システムでの利用を想定されているので、保守のしやすさも重要になります。

保守しやすさ

・上から下へ流れていくので、シンプルで処理の流れをつかみやすい

・事務処理に特化していることから、文法や命令が比較的シンプル

・どのようなデータ定義や処理が行われているのかが直感的に理解できるので、仕様書がなくてもわかりやすい

・各データ項目に対して、小数点の上・下の10進桁数を明示的に定義することができ、これらの間での四則演算、べき乗の計算を自由に記述できる

Javaや .NETのクラス・ライブラリーを使用して同じことをしようとすれば可能ですが、複雑な算術式だととても読みにくいものになってしまいます。

COBOLの利用形態

・汎用系(ホスト系)システム
メインフレームやオフィスコンピュータ(オフコン)などの大規模コンピュータで利用
金融機関をはじめ、政府機関でも広く使われている。
並行処理やバッチ処理、帳票出力に向いている

・中小企業で使われているパッケージソフト(会計、伝票処理など)
WindowsやLinuxなどOSで動作。古くても20年ぐらいと予想。
COBOLで作成された古い造りのパッケージなど、オフコンなどから移植だったりする

COBOLの将来性

COBOLには、いい面もいろいろありますが、積極的に学ぶ言語ではありません。
新規のシステムではまず使わないでしょう。
世の中の動きとしてもITエンジニアの基礎資格といわれる「基本情報技術者試験」で、2019年秋期からCOBOLの出題が廃止されています。

ただし、汎用系システムが存在する限り、COBOL人材は重宝されるでしょう。
COBOL技術者の求人も多いです。

COBOLを利用したシステムが減ってはきていますが、機能追加やメンテナンスは必要になります。

ベテランの引退などでCOBOL技術者の数も減っているので、逆に現在COBOLを扱える技術者は貴重ですね。
特にドメイン知識(特定業務の知識)を持っている開発者は強いですね。

汎用系のシステム自体がなくなると何十年前から言われていますが、
オープン系への移植の難しさもあり、かつ、
基幹システムとして社会を支えているものなので、急にはなくならないです。

COBOLプログラム例

・最初におまじないの行が続く
・文法はシンプル
・数値の桁の表記が特殊 (9V999 の “V”が小数点の位置)

IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 RESULT PIC 9V9999999.
PROCEDURE DIVISION.
MAIN.
DISPLAY “HELLO world!” UPON CONSOLE.
* 除算
COMPUTE RESULT = 12 / 34.
DISPLAY RESULT UPON CONSOLE.

STOP RUN.

まとめ

私たちは、インターネットを中心にオープン系のシステムを使っていますが、日常生活や経済を支えている基幹システムでは、まだまだCOBOLは現役でありCOBOL技術者は重宝されるますね。

では、なぜ、IT業界は騒いでいるかをCOBOLの移植の難しさと絡めて別記事で紹介しています。

COBOLからCOBOLへの移行時のポイント!方言と帳票が肝COBOLで作成したシステムのリプレースは他社COBOLへの移行でも難しい面があります。 RDBを変更する場合と似ていますね。(例...