50年前に事務処理用に開発されたCOBOLは、いまでも多くの企業で使われ続けている。基盤部分が近代化してもCOBOLは生き残るかもしれない(編集部)
マイクロフォーカスの小林純一です。今回、COBOL言語入門の連載をCoding Edgeで書かせていただくことになりました。最後までよろしくお願いします。
企業活動の迅速性とコスト削減を目指したITモダナイゼーションの潮流の中で、メインフレーム中心の情報システムの見直しが進んでいます。Java EE(Java Platform, Enterprise Edition)や.NETフレームワークを基盤としながらも、COBOLで書かれたコアとなる計算ロジックをサービスとして活用する手法は、低リスクのモダナイゼーションとして幅広く採用されています。
これまで「COBOLなんて関係ない」と考えていた方も、このようなビジネスでCOBOLコードに触れる機会があるかもしれません。そのような機会にこの連載を役立てていただければと思います。
言語の文法などの詳細に立ち入るのは第2回を待つことにし、第1回ではCOBOLの背景やほかの言語と比較した特徴について述べていくことにします。
COBOLの言語仕様がグレース・ホッパー(Grace Hopper、最終階級:米海軍少将)の指導によって開発されたのは1959年9月のことですから、今年はCOBOL生誕半世紀になります。
この時代、コンピュータには現在のようなオペレーティングシステムはなく、用途に応じて組まれたプログラムをロードして実行するというのが一般的な使い方でした。
すでにFORTRAN、LISPは登場しており、コンパイラとローダがコンピュータの操作環境であった時代です。コンパイラの登場によって機械語を意識せずにプログラムを作ることができるようになったソフトウェア工学の黎明期のことでした。
インターネットもマルチメディアもなかったこの時代のコンピュータの主用途は、弾道計算に代表される科学技術計算と給与計算に代表される事務処理です。特に数千、数万人の従業員を擁する大企業の給与計算は何百人もの手作業でなされていたといいますから、コンピュータによる機械化によって著しい効率化と精度の向上を手に入れたことになります。
すでに科学技術計算の分野で活躍していたFORTRANに並んで「事務処理分野での共通プログラム言語」が必要ということになったのは必然的なことでした。
COBOLは、COmmon Business Oriented Languageの略称です。先行して商品化されていたスペリランド(現ユニシス)、IBM、ハネウェルの事務処理言語がベースとなり、以下の項目を意識した言語設計がなされました。
「MOVE INPUT-AREA TO OUTPUT-AREA」とか「ADD 1 TO INDEX-1」のような英語らしい表現による構文が採用されています。
明示的な十進演算が可能です。プログラマはそれぞれのデータ項目に対して、小数点上・下の十進桁数を明示的に定義することができ、これらの間での四則演算およびべき乗の計算を自由に記述できます。
事務処理の基本であるバッチ処理を容易に記述するため、入出力および突合せで使用するファイルのレコード仕様や物理仕様を読みやすく定義できます。
帳票出力用に金額編集 (上位桁のゼロ抑止、通貨記号の浮動挿入など) を宣言的に定義できます。また、項目を固定桁に印刷するための空白詰めや右寄せ転記などが自動的に行われるよう宣言することができます。
こうしてCOBOLの半世紀の歴史がスタートしました。
COBOLの言語仕様を開発する目的で設立された「データシステムズ言語協議会」(CODASYL)によってCOBOL仕様が制定されると、米国政府の調達基準になったこともあり、急速に普及していきます。各コンピュータメーカーが積極的に処理系を実装しました。
先行するFORTRANなどと比べるとCOBOLの言語機能は豊富であり、コンパイラの開発にあたっては工数だけでなく効率的な構文解析アルゴリズムの開発などの多くのイノベーションも必要としました。コンパイラ開発者のための古典とされるA.V.エイホ、J.D.ウルマン共著「コンパイラ」にはCOBOLのMOVE CORRESPONDING文という厄介な文法を効率的にコンパイルするアルゴリズムが紹介されています。
日本ではやや遅れて1965年に富士通が最初のコンパイラを発表しており、以降COBOLコンパイラはほとんどすべての国産コンピュータに搭載されていきます。特に日本では1970年代から「オフコン」と呼ばれる中・小型機が普及し、その多くがCOBOLを主力言語としていました。膨大なCOBOLアプリケーションが生産される時代となります。
英マイクロフォーカスは、1976年に最初のマイコン用COBOLコンパイラを発表しました。それまで汎用機中心だったCOBOLの文化がPCやワークステーションにも広がっていく先鞭を付けたものです。その後、UNIXサーバがメインフレームオルタナティブとして幅広く採用されるにつれて、COBOLの利用はオープンシステムでも広まっていきました。
CODASYLは、1960年代、1970年代を通して精力的に言語仕様開発を推進しますが、これと並行してアメリカ規格協会(ANSI)が産業標準としてのCOBOL規格化の作業を進めました。CODASYLによる仕様開発とANSIによる規格化という両輪の作業によって、1968年、1974年、1985年と改訂を重ね、構造化プログラミングや各種組み込み関数など時代の要請に沿った機能を追加しています。その後CODASYLはANSIに役割を引き継ぎ、ANSIによる2002年の改版を経ていまに至っています。
Copyright © ITmedia, Inc. All Rights Reserved.