COBOLのコンパイルエラーの原因と対処法を完全ガイド!初心者でもわかる基本のキホン
生徒
「COBOLのプログラムを書いたんですが、よく分からないエラーが出て動きません…」
先生
「それはコンパイルエラーが出ている可能性がありますね。エラーの内容を見て、どこに間違いがあるかを確認する必要があります。」
生徒
「コンパイルエラーってなんですか?どうやって直せばいいんでしょうか?」
先生
「それではCOBOLのコンパイルエラーの意味や原因、よくある例とその直し方について詳しく見ていきましょう!」
1. コンパイルエラーとは?
COBOLのプログラムを書くときに、文法のミスや書き方のルールに反していると、コンパイル(プログラムを実行可能な形に変換する処理)の段階でエラー(間違い)が発生します。
このとき、プログラムは実行されず、まずは間違いを直さないと先に進めません。このようなエラーをコンパイルエラーと呼びます。
たとえば、人間でいうと、文法が崩れていて「ワタシ、行く、あした、お店、たぶん」みたいな文章を書いてしまうと、意味がわかりにくいですよね。コンピュータも同じで、「どこがどうおかしいのか」がわからないと動いてくれません。
2. コンパイルエラーの原因と対処法
COBOLの初心者がよくつまずくコンパイルエラーの原因を例とともに解説します。
2-1. 予約語(キーワード)のスペルミス
COBOLでは、DISPLAYやSTOP RUNなど、あらかじめ決められた予約語を正しく使わないとエラーになります。
DISPALY "こんにちは、世界!"
STOP RUN.
上の例では、DISPALYと書いてしまっているため、正しくは以下のように修正します。
DISPLAY "こんにちは、世界!"
STOP RUN.
2-2. セクションや段落の書き忘れ
COBOLのプログラムは、IDENTIFICATION DIVISION、ENVIRONMENT DIVISION、DATA DIVISION、PROCEDURE DIVISIONなど、決まった構造で書かないといけません。
たとえばPROCEDURE DIVISIONが抜けていると、次のようなエラーが発生します。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
DISPLAY "こんにちは".
STOP RUN.
正しくはこのようにPROCEDURE DIVISION.を必ず書きます。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY "こんにちは".
STOP RUN.
2-3. ピリオド(.)の付け忘れ
COBOLでは文の終わりに.(ピリオド)をつける決まりがあります。忘れると文が終わらないと判断され、次の行も1つの文として見なされてしまいます。
次の例では、ピリオドがないためにエラーになります。
DISPLAY "おはよう"
STOP RUN.
正しい形はこちらです。
DISPLAY "おはよう".
STOP RUN.
2-4. 変数の定義ミスや未定義の使用
COBOLではDATA DIVISIONで変数(データ)を定義してから使う必要があります。定義していない変数を使うとエラーになります。
以下は、変数NAMEを使っているのに定義されていない例です。
PROCEDURE DIVISION.
DISPLAY NAME.
STOP RUN.
正しくは、WORKING-STORAGE SECTIONで変数NAMEを定義しておく必要があります。
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NAME PIC X(10) VALUE "結衣".
PROCEDURE DIVISION.
DISPLAY NAME.
STOP RUN.
2-5. 行頭の桁(カラム位置)のミス
COBOLは、古い言語のため桁位置(カラム)が決められています。たとえば、A~B列は注釈、8~11列から文を書くなどのルールがあり、それを守らないとエラーになります。
最近ではフリー・フォーマットが使える環境もありますが、昔ながらのルールを守る必要がある場合は特に注意が必要です。
3. エラーの読み方とヒントの探し方
コンパイル時には、エラーメッセージが表示されます。たとえば次のような出力になります。
IGYPS2121-S "DISPLAY" 文が不完全です。ピリオドが必要です。
このような場合は、メッセージの中に書かれている単語(例:「ピリオド」)に注目して、何を直せばいいかを考えるのがポイントです。
また、エラーの行番号も表示されることが多いので、その行を中心に見直しましょう。
4. コンパイルエラーを防ぐための習慣
- コードを一行書くごとに確認する
- 文の終わりにピリオドを忘れない
- 構造(DIVISIONの順序)を守る
- 変数は使う前に必ず定義する
- スペルミスをしないようにゆっくり入力する
初心者のうちは、少しずつ丁寧に書いていくことでエラーを減らすことができます。
まとめ
COBOLのコンパイルエラーは、初心者にとってつまずきやすいポイントですが、原因と対処法を理解していれば落ち着いて対応できます。特に、予約語のスペルミスやピリオドの付け忘れ、変数の未定義、セクションの記述漏れなどは頻出のエラーです。また、COBOL特有のカラム位置のルールも、古い言語ゆえに注意が必要な点でした。
実際に表示されるエラーメッセージを読み解くことも大切です。意味のあるキーワードや行番号に注目することで、エラー修正の手がかりを得ることができます。これらの知識を身につけることで、COBOL開発におけるトラブル対応力を高めることができるでしょう。
以下に、典型的なエラーを避けた正しいCOBOLプログラムの一例を示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE-PROGRAM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MESSAGE PIC X(20) VALUE "コンパイル成功!".
PROCEDURE DIVISION.
DISPLAY MESSAGE.
STOP RUN.
このように、DIVISIONの順序、変数の定義、文末のピリオド、スペルの正確性など、基本を丁寧に守ることが大切です。エラーが発生した際には、焦らず一行ずつ確認する習慣を身につけましょう。
COBOLは金融や保険などの業界でも現役で使われている言語です。そのため、確実なコーディングと正しいエラー処理が非常に求められます。エラーを恐れず、確実に原因を読み取り、冷静に対処する力を磨いていきましょう。
最後に、エラーを防ぐための心がけとして、次の点を習慣づけると良いでしょう。
- コードを入力する際には、予約語を正しくタイピングする
- PROCEDURE DIVISIONなど、必要なセクションを必ず含める
- 文の終わりにはピリオドを忘れずに
- 変数は使う前にWORKING-STORAGE SECTIONで定義する
- エラーのメッセージを読む習慣をつける
こうした基本的なポイントを押さえることで、エラーに強いCOBOLプログラマへと成長できます。
生徒
「先生、今日の記事を読んで、コンパイルエラーの原因がすごく分かるようになりました!」
先生
「よかったですね。特にどのエラーが印象に残りましたか?」
生徒
「スペルミスとピリオドの付け忘れです。自分でもよくやっちゃうので…」
先生
「それは初心者にとってありがちなミスです。今後はエラーメッセージをしっかり読んで対処できますね」
生徒
「はい!ちゃんと行番号やキーワードをチェックして、冷静に直せるようにします」
先生
「素晴らしい心がけですね。COBOLは基本を丁寧に守ることで、安定したプログラムが書けますよ」
生徒
「この記事を読んで、COBOLに少し自信が持てました!」
先生
「その調子で、次は実際にエラーの出るコードを自分で直してみましょうね」