1. なぜ「ピリオドの直前」にこだわらなければならないのか
COBOLの世界に足を踏み入れたばかりの皆さんは、コードを書く際に「ピリオド」の扱いに悩んだことはありませんか?実は、ピリオドの配置ひとつでプログラムが動かなくなったり、意図しない挙動を引き起こしたりすることがあります。特に、ピリオドの直前に「余計な空白」を入れてしまうのは、ベテランでも注意すべき基本的なマナー違反です。この記事では、なぜこのルールが重要なのか、どう書くのが正解なのかを解説します。
2. 基礎知識:COBOLにおける「ピリオド」の役割
COBOLにおいてピリオド(.)は、文の終わりを告げる「終止符」です。コンパイラは、このピリオドを検出することで「あ、ここで一つの命令が終わったな」と判断します。もし、ピリオドの直前に不要な空白があると、コンパイラによっては文の構造を正しくトークン(意味のある最小単位)として切り出せず、予期せぬ構文エラーを発生させることがあります。
3. 実装と解決策
解決策は非常にシンプルです。「命令語の直後からピリオドまで、空白を入れずに詰めて書く」こと、そして「ピリオドの後には必ず1つ以上の空白または改行を入れる」ことです。
良い例: MOVE A TO B.
悪い例: MOVE A TO B .
このように、命令の終了を示すピリオドは、直前の単語にピタリとくっつけるのがCOBOLの鉄則です。
4. サンプルプログラム
以下のコードを参考に、ピリオドの配置を意識してみてください。このままコピーしてコンパイルの練習に使うことができます。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE-PERIOD.
PROCEDURE DIVISION.
- 良い例:ピリオドは命令の直後に配置します
MOVE 10 TO WS-NUM.
- 悪い例:ピリオドの前に空白があると誤認やエラーの原因になります
- MOVE 20 TO WS-NUM .
DISPLAY “処理が完了しました。”
GOBACK.
5. 応用と注意点:現場でのトラブル回避
現場でよくあるのが、修正時にうっかりピリオドの前にスペースを入れてしまうケースです。特にIF文やPERFORM文などのネストが深いコードでは、ピリオドの位置がロジックの終了範囲を左右するため、たった一つの空白が「思わぬバグ」を生む原因になります。
また、最近のコンパイラは優秀でエラーを許容してくれることもありますが、保守性を考えるとルールを守るのがプロの流儀です。「ピリオドは直前の文字にくっつける」という癖を今のうちからつけておきましょう。これが、将来的に複雑なプログラムを読み解く際、ミスを最小限に抑えるための第一歩となります。

コメント