【COBOL学習|豆知識】COBOLのデータ名におけるハイフンの正しい作法と落とし穴

導入: なぜハイフンの使い分けが重要なのか

COBOLのプログラムにおいて、ハイフン(-)は単なる文字以上の意味を持ちます。データ名にハイフンを使うことは非常に一般的ですが、演算子としてのマイナス記号と混同してしまうと、コンパイルエラーや予期せぬ論理バグの原因となります。堅牢なコードを書くためには、この「空白の有無」というルールを徹底することが不可欠です。

基礎知識: ハイフンと利用者定義語

COBOLでは、変数名(データ名)や段落名などの「利用者定義語」にハイフンを使用できます。これは、長い変数名を読みやすくするために、単語を区切る役割を果たします。ただし、COBOLコンパイラは「ハイフンの前後にある空白」を判断基準として、それが「名前の一部」なのか「算術演算子」なのかを判別しています。

実装/解決策: 空白による役割の明確化

ルールは非常にシンプルです。
・データ名の一部として使う場合:ハイフンの前後には空白を入れない
・算術演算(引き算)として使う場合:ハイフンの前後には必ず空白を入れる

このルールを守ることで、コンパイラは迷うことなくプログラムを解釈でき、保守性の高いコードになります。

サンプルプログラム

以下のコードで、データ名の中のハイフンと、演算子としてのマイナス記号の使い分けを確認してください。

IDENTIFICATION DIVISION.
PROGRAM-ID. HYPHEN-TEST.

DATA DIVISION.
WORKING-STORAGE SECTION.

  • データ名(WS-TOTAL-AMOUNT)の中のハイフンには空白を入れません

01 WS-TOTAL-AMOUNT PIC 9(05) VALUE 1000.
01 WS-TAX-VALUE PIC 9(05) VALUE 100.
01 WS-RESULT-VAL PIC 9(05).

PROCEDURE DIVISION.

  • 算術演算子のマイナス記号には、両側に必ず空白が必要です

COMPUTE WS-RESULT-VAL = WS-TOTAL-AMOUNT – WS-TAX-VALUE.

DISPLAY “計算結果: ” WS-RESULT-VAL.

GOBACK.

応用・注意点: 現場で陥りやすい罠

現場でよくあるミスは、データ名の中に誤って空白を入れてしまうケースです。例えば「WS- TOTAL」のように書いてしまうと、コンパイラは「WS-」という変数と「TOTAL」というキーワードが並んでいると誤認し、文法エラーとなります。

また、ハイフンをデータ名の先頭や末尾に使うこともCOBOLでは避けるべきです(一部のコンパイラで警告が出る場合があります)。「単語をハイフンでつなぐ」という命名規則をチーム内で統一し、常に「計算の時は前後を空ける」という意識を持つことが、ベテランへの第一歩です。ぜひ、日々のコーディングで意識してみてください。

コメント

タイトルとURLをコピーしました