COBOLの標準規格を徹底解説!COBOL 85から最新仕様まで初心者ガイド
生徒
「COBOLを勉強しようと思ったら、COBOL 85とか2002とか数字がいっぱい出てきました。これって何のことですか?」
先生
「それはCOBOLの『標準規格』ですね。プログラミング言語の世界にも、時代に合わせたルールの更新があるんですよ。」
生徒
「昔のルールと今のルールで何が違うんですか?初心者はどれを覚えればいいんでしょう?」
先生
「実は、今でも現場で一番使われているのはCOBOL 85という規格なんです。なぜ数字がついているのか、どう進化したのか、基本から優しく説明しますね!」
1. COBOLの標準規格とは?
プログラミング言語の標準規格(ひょうじゅんきかく)とは、世界中の誰が書いても同じようにコンピューターが動くように決められた「共通のルールブック」のことです。言葉の世界でいえば「標準語」や「辞書」のようなものだと考えてください。
パソコンを触ったことがない方向けに例えると、「料理のレシピの書き方ルール」のようなものです。「小さじ1杯」という基準が人によってバラバラだと、同じ料理が作れませんよね。それと同じで、COBOLも世界共通のルールを決めることで、A社で作ったプログラムがB社のコンピューターでも動くようにしているのです。
COBOLは歴史が長いため、このルールブックがこれまでに何度も更新されてきました。その更新された年が、規格の名前の後ろについている数字の正体です。
2. 最も有名な規格「COBOL 85」の特徴
現在、世界中の銀行や企業のシステムで最も広く使われているのが、1985年に制定されたCOBOL 85です。非常に安定しており、信頼性が高いため、誕生から数十年経った今でも現役で活躍しています。
COBOL 85の最大の特徴は、「構造化プログラミング」という考え方が取り入れられたことです。これは、プログラムの流れを整理整頓して、読みやすく、間違いを見つけやすくする書き方のことです。例えば、処理の終わりを明示する「END-IF」などが導入され、パズルのようにきれいにコードを組み立てられるようになりました。
以下は、COBOL 85で導入された構造化の書き方(END-IF)を使ったシンプルなプログラムです。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-85.
PROCEDURE DIVISION.
IF 10 > 5 THEN
DISPLAY "10は5より大きいです。"
END-IF.
STOP RUN.
実行結果は以下の通りです。
10は5より大きいです。
3. 構造化プログラミングで何が変わったのか
COBOL 85より前の古い規格(COBOL 74など)では、プログラムがあちこちに飛び跳ねるような書き方が主流でした。これを専門用語で「スパゲッティコード」と呼びます。茹ですぎたスパゲッティのように、糸が絡まり合ってどこに繋がっているのか分からない状態のことです。
COBOL 85からは、処理の入り口と出口をはっきりさせるルールが強化されました。これにより、パソコンに詳しくない人がコードを見ても、「ここからここまでがひとまとまりの処理なんだな」ということが視覚的に分かりやすくなったのです。これは、大規模なシステムを多人数で管理する上で非常に画期的な出来事でした。
4. 21世紀の進化「COBOL 2002」
次に大きな変化があったのが、2002年に制定されたCOBOL 2002です。この規格では、当時の流行であった「オブジェクト指向」という考え方が導入されました。
「オブジェクト指向」を簡単に説明すると、プログラムを「部品」として作り、それを組み合わせて大きな製品を作る考え方です。例えば、自動車を作るときに「タイヤ」「エンジン」「ハンドル」という部品を別々に作り、最後に合体させるイメージです。これにより、一度作った部品を他の車(プログラム)でも使い回せるようになり、開発の効率がぐっと上がりました。
また、この頃から「小文字」でプログラムを書くことが正式に認められたり、日本語の文字をより扱いやすくなったりと、現代のパソコン環境に合わせた調整が行われました。
5. 最新の規格とこれからのCOBOL
その後も、2014年や2023年といった具合に、COBOLの規格は進化を続けています。最新の規格では、インターネットを通じて他のシステムとデータをやり取りする機能が強化されたり、計算できる桁数がさらに増えたりしています。
しかし、現場では必ずしも「最新がベスト」とは限りません。特に銀行などの絶対に間違えてはいけないシステムでは、あえて実績のあるCOBOL 85を使い続けることも多いのです。大切なのは、「どのルールブックに基づいて書かれているシステムなのか」を正しく把握することです。新旧の知識をバランスよく持つことが、これからのエンジニアには求められています。
6. プログラミング未経験でもわかる用語解説
ここで、少し難しい用語を優しく解説します。
- コンパイラ:人間が書いたCOBOLの言葉を、コンピューターが理解できる「0と1」の電気信号に翻訳するソフトのことです。規格が変わると、この翻訳ソフトも新しくする必要があります。
- 予約語(よやくご):「IF」や「MOVE」など、COBOLのルールであらかじめ使い道が決まっている特別な単語のことです。自分で勝手に名前として使うことはできません。
- 互換性(ごかんせい):古いルールで作ったプログラムが、新しいルールでもそのまま動く性質のことです。COBOLはこの互換性が非常に高いのが自慢です。
7. 文字を扱う際の標準的な書き方
COBOLでは文字を表示したり移動させたりする際にも決まった書き方があります。初心者の方に馴染みやすい、名前を画面に出すプログラムを見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. NAME-DISPLAY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME PIC X(10) VALUE "愛知県民".
PROCEDURE DIVISION.
DISPLAY "こんにちは、" USER-NAME "さん。".
STOP RUN.
実行結果は以下のようになります。
こんにちは、愛知県民さん。
ここで使っている「PIC X(10)」という書き方も、COBOLの標準的なルールの一つで、「文字を10個分入れる箱を用意してください」という意味になります。
8. 数値計算の精度を守るためのルール
COBOLが長年使われている最大の理由は、数値計算の正確さです。標準規格では、小数点以下の計算をどう扱うかも厳密に決められています。お金の計算で1円でもズレたら大変ですよね。そのため、COBOLには「四捨五入(ROUNDED)」などの計算ルールを簡単に指定できる仕組みが備わっています。
以下のコードは、割り算の結果を四捨五入する例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. ROUND-CALC.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VAL-A PIC 9(3) VALUE 100.
01 VAL-B PIC 9(3) VALUE 3.
01 RESULT PIC 9(3)V9.
PROCEDURE DIVISION.
DIVIDE VAL-A BY VAL-B GIVING RESULT ROUNDED.
DISPLAY "100割る3の四捨五入の結果は " RESULT " です。".
STOP RUN.
実行結果は以下のようになります。
100割る3の四捨五入の結果は 033.3 です。
9. コーディング規約の重要性
「標準規格」が世界共通のルールなら、「コーディング規約」は会社やプロジェクト内での「独自のルール」のことです。例えば、「標準規格では小文字でもいいけど、うちの会社では全部大文字で書こう」とか「変数(箱)の名前は必ず日本語で付けよう」といった約束事です。
なぜこれが必要かというと、標準規格は自由度が高いため、人によって書き方のクセが出てしまうからです。みんなが同じルールで書くことで、誰かが書いたプログラムを他の人が修正するときに、迷わず作業できるようになります。初心者の方は、まずはこの「会社のルール」を覚えることが上達の近道です。
10. 繰り返し処理で学ぶ標準的なループ
最後に、同じ作業を何度も繰り返す「ループ処理」の標準的な書き方を紹介します。COBOL 85以降では、これも非常に見やすく書けるようになりました。
IDENTIFICATION DIVISION.
PROGRAM-ID. LOOP-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CNT PIC 9(1) VALUE 1.
PROCEDURE DIVISION.
PERFORM UNTIL CNT > 3
DISPLAY "現在 " CNT " 回目の処理です"
ADD 1 TO CNT
END-PERFORM.
STOP RUN.
実行結果は以下の通りです。
現在 1 回目の処理です
現在 2 回目の処理です
現在 3 回目の処理です
このように、決まったルール(標準規格)に従って書くことで、コンピューターは忠実に、そして正確に私たちの命令を実行してくれます。COBOLの規格を知ることは、コンピューターとの対話の作法を学ぶことなのです。