COBOLに関する世界観です。昔の言語やメインフレームや古いコンピュータも参照のこと。
メインフレームの時代の言語。業務用・事務処理用に使われることが多い。
COBOL - Wikipediaにサンプルコードがある。以下に「実例3 (Fizz Buzz)」を解説する。
部 | 説明 |
---|---|
見出し部 IDENTIFICATION DIVISION | PROGRAM-IDが宣言されている。 |
環境部 ENVIRONMENT DIVISION | 今回は存在しない。 |
データ部 DATA DIVISION | WORKING-STORAGE SECTION(作業場所)では プログラムの中で使われる変数の定義を行う。 |
手続き部 PROCEDURE DIVISION | PERFORM VARYING UNTIL文による繰り返しと EVALUATE文による条件分岐が行なわれている。 また、DISPLAY文でメッセージを表示している。 |
ほかにも、IF~THEN文(条件分岐)やPERFORM UNTIL文(繰り返し)やPERFORM TIMES文(回数が明確に分かっている場合に繰り返しに使う)が利用できる。
詳しくは以下を参照のこと。
2024.07.30編集
以下のページにサンプルコードがあります。
COBOLはそもそもエンジニアや科学者がプログラミングを行うためではなく、一般の事務系のユーザーをターゲットにしている。
そのため、FORTRANのような科学技術計算には向いておらず、事務処理のための機能が多い。
また、COBOLは企業や政府機関にとてもたくさんの過去の資産があることで有名である。
60年もの間使われた老人のような言語である。
COBOLは事務処理向けに開発されたこともあり、一般の事務系の職業の人間が使うことを意図しているため、文法が科学技術計算用のFORTRANなどと比べて、英語に近い。
たとえば、
COMPUTE MONEY = MONEY + 150.
という命令は、英語のように以下のように書くことができる。
ADD 150 TO MONEY.
しかしながら、この「英語に近い」という特徴は、他の言語に比べてCOBOLでは記述が冗長になりがち(たとえばX = 100 + (200 / Y) - 20のような計算を行う場合を考えてみてほしい)という欠点がある。可読性が高いと言われているものの、簡単に書いたC言語の構文よりもたくさんの記述があって逆に見通しがし辛いことも多い。政府などには膨大な過去のCOBOLプログラムとデータがあるとされている。
Microsoftはエクセルという表計算ソフトを提供しており、現在はエクセルで簡単に事務計算ができるので、COBOLを使う機会はとても少ない。だが、政府や公官庁には膨大な過去のCOBOL資産があるとされている。「PROGRAM-ID」にプログラム識別名を記載するなど、さまざまな形式的記述が要求され、そうしたところがMS-Officeにも雰囲気として良く似ている。
後日注記:残念ながら、COBOLとエクセルは比較対象としておかしい。COBOLはメインフレームでバッチ処理を書く際に使うことが多く、その際は大量に送られてくるデータにまとめてバッチ処理を行う。そのようなCOBOL処理は、今でもほかの言語にリプレースすることが難しいと言われている。
後日注記:COBOLとエクセルはともに金額計算(給与や決算など)に使われます。なので、両者の比較には何かしら意味があるとは言えるかもしれません。現代の事務処理では、COBOLを使わなくてもエクセルを使って金額計算ができます。
2023.10.10編集
GNU/LinuxでCOBOLを使いたいのであれば、GnuCOBOL(旧OpenCOBOL)というコンパイラや、OpenCobolIDEという開発環境が使える。
FedoraでGnuCOBOLをインストールするには、
# dnf install open-cobol
とする。COBOLコードのコンパイルは
$ cobc -x HOGE.cob
とする。
(現代のCOBOL開発のための3つのオープンソースプロジェクト | POSTDを参考に執筆・引用しました。)
実際のところ、日本の企業のシステムには、今でも大型コンピュータとCOBOLが多く使われています。
この理由は、日本企業がシステムのリプレースやアップデートに消極的だからです。
アメリカの企業では、IT技術を最新技術にアップデートするということが常に行われています。何十年もの間同じシステムを継続して使うことは少なく、COBOLのようなシステムは多くの場合Javaなどの新しい技術へとリプレースされます。
ですが、日本では、アップデートという概念を理解する経営者や会社が少なく、古くなったシステムが動き続ける間、何十年もの間同じシステムを使い続けることが多いのです。
僕は、これは日本のIT技術が遅れていることの主たる要因ではないかと思います。日本の会社は、IT技術を最新にアップデートしたり、古くなったシステムを最新のシステムにリプレースする、という考え方がありません。そのため、何十年も同じシステムを使い続けることになってしまいます。
なので、COBOLを「もう終わった古い言語」だと考えると、いろいろと間違えます。企業は今でも大型コンピュータとCOBOLによる「古びた巨大システム」を使っています。COBOLを習得すること自体は間違ったことではなく、COBOLのシステムの保守・点検という仕事を得ることには繋がるでしょう。