導入: なぜハイフンの使い分けが重要なのか
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では避けるべきです(一部のコンパイラで警告が出る場合があります)。「単語をハイフンでつなぐ」という命名規則をチーム内で統一し、常に「計算の時は前後を空ける」という意識を持つことが、ベテランへの第一歩です。ぜひ、日々のコーディングで意識してみてください。

コメント