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の順序)を守る
- 変数は使う前に必ず定義する
- スペルミスをしないようにゆっくり入力する
初心者のうちは、少しずつ丁寧に書いていくことでエラーを減らすことができます。