IT (情報技術) 学習記録

主に情報処理技術者試験、オラクルマスター、Linux技術者試験(LPIC)等の、IT系、または電気系の学習記録を中心に。(働き方や世の中も)

汎用機(メインフレーム)とCOBOLのシステムが使われ続ける理由


汎用機(メインフレーム)とCOBOLのシステムが使われ続ける理由


以下のようなニュースが目に止まった。


IBMメインフレーム、「15年に一度の大型アップデート」

itpro.nikkeibp.co.jp


特にIBMに愛着がある訳ではないが、コンピュータの世界も、ダイバーシティ(多様性)という事で、汎用機(メインフレーム)文明が衰退してしまうのは個人的には避けて欲しい。

いまや、Webサーバーを中心としたサーバー分野においては、多くの商用UNIXLinux系に置き替えられている。DBサーバーなどのバックエンド側は企業などの秘密領域なので確かな情報はないが、Linux系が浸透しているのは確実だろう。

しかし、DBやバッチ処理用のバックエンド環境を中心に、いまだに汎用機(メインフレーム)環境は使われ続けている。

よく言われるのが、1970年代くらいから積極的に業務をIT化してきた中央官庁や大企業の基幹系業務システム。とりわけ、銀行などの金融業界では、汎用機(メインフレーム)環境は根強い人気がある。

考えられる理由は以下の通りである。


<理由>

  • 1970年代~1990年代にかけて開発され、現在も稼働しているCOBOL系業務プログラムが膨大にある。おそらく都市銀行1行につき数千万行はいまだに存在する

  • COBOLコンパイラー、汎用機OS、専用ハードウェアの組み合わせにおいて、I/O最適化、メモリ内命令最適化が行われ、高速/高並列処理が可能である。特にバッチ処理でその能力を発揮する(UNIX系とJavaVMの処理系ではなかなか勝てない部分)

  • 二進化十進法(BCD,Binary Coded Decimal)と、COBOL独特のデータ表現(ゾーン10進、パック10進)、COBOLの仮想小数点データ定義法により、『誤差がない』固定小数点の大桁数計算が可能である


固定小数点の大桁数計算については、Javaにも「BigDecimal」という型が存在する事が知られているが、Javaのお作法では、いちいち「new」によってオブジェクト化する事になる。

COBOLは、高級言語である割には、データに対しては低レベルでのアクセスを強要する言語であるC言語のようにビット単位での処理は不得意だが、バイト単位以上ならばC言語並みに低レベルなアクセスが可能であり、むしろそれを強要する。

入出力データの抽象化ができず、常に物理的なバイトイメージをプログラマーが持っていないと誤った処理を書いてしまう。(エンディアンの違いも意識しないといけない)

データの扱いもきわめて物理的で、JavaよりもC言語に近い。

それでいて、入出力データ内の「文字としての数字」は、意識的に「ASCII to BINARY変換」をしなくても計算に使用できる。


汎用機とCOBOLのシステムの大多数は今後も稼働し続けるだろう


汎用機(メインフレーム)環境の話であるはずが、COBOLの話になってしまった。

しかし、それくらい、両者には密接な関係がある。

世の中のシステムにオープン化の波が来た頃から、「COBOLはなくなる」と言われ続けて、30年近くが経過しているが、いまだにCOBOLの新たなプログラム資産は増加している。

(そしてCOBOLという言語が登場してからは既に60年近く経過しようとしている。OS誕生よりも前からある言語である)

金融機関などの大型システムにおいても、Javaで組み直すプロジェクトが発生したりして話題になっているが、全体的には、いまCOBOLで作られている領域を、まったく異なるプラットフォームと言語で置き換えるような事は、進まないだろう。そこまでのコストを投入するだけのメリットが出ないからである。


開発言語などにこだわるよりも、OSやDBのしくみなどのプラットフォーム系を勉強する方が、いろいろ応用がきく。

COBOLプログラマーは業界ではいろいろとバカにされるが、気にすることはない。

COBOLの学習コストが低いのは事実である。他の言語をひとつでも経験したことがあれば、まず短期間のうちに理解できるだろう。

それに、言語仕様よりも、むしろプラットフォーム系の理解の方が大変であり、重要である。(こういう事を言うと反論者が一定数居るのだが…)

COBOLプログラマーは単なるプログラマーとしてではなく、業務要件からの理解を求められるエンジニアの場合が多い。

業務面から、システムのデータ面までを熟知している技術者は少ないので、特にユーザー側の官僚化が進行した現代では、ますます重要性は増すかもしれない。


ただし、いわゆる?悪い意味での「staticおじさん」にはならないように気をつける必要はあるだろう。


関連過去記事

kf7757.hatenablog.com


少し古い記事ですが、二進化十進法(BCD,Binary Coded Decimal)などの、データ表現についての解説記事

1週間で学ぶIT基礎の基礎 - コンピュータにおける「データ表現」の基礎(第3回):ITpro

1週間で学ぶIT基礎の基礎 - コンピュータにおける「データ表現」の基礎---目次:ITpro