【COBOL学習|初心者向け】COBOLの基礎!「文字定数」を正しく使ってプログラムを安定させよう

1. 導入:なぜ文字定数が重要なのか

COBOLでのプログラミングにおいて、プログラム内で「固定された文字列」を扱うことは非常に多いです。例えば、エラーメッセージ、画面の固定見出し、あるいはファイル出力のヘッダーなどがこれに当たります。これらを適切に定義し、扱うことは、ソースコードの読みやすさを高め、誤植によるバグを防ぐために非常に重要です。今回は、COBOLにおける「文字定数(リテラル)」の扱い方について解説します。

2. 基礎知識:リテラルとは何か

「リテラル(Literal)」とは、プログラムのソースコード内に直接記述された「値そのもの」を指します。変数(データ項目)が中身を入れ替えられる箱であるのに対し、文字定数は「その場に書かれた動かせない文字」です。
COBOLでは、この文字定数は二重引用符(”)または単一引用符(’)で囲んで記述します。どちらを使っても構いませんが、プロジェクト内のコーディング規約でどちらかに統一するのが一般的です。

3. 実装と解決策:継続行のルールをマスターする

文字定数は非常に便利ですが、長い文字列を記述する際に注意が必要です。COBOLの伝統的な固定形式では、1行の中に書ける長さには限界があります。もし文字列が長すぎて行の最後(72桁目)に達してしまった場合、そのまま改行することはできません。
そこで登場するのが「継続行」のルールです。7桁目(標識領域)に「-(ハイフン)」を記述することで、前の行からの文字列が続いていることをコンパイラに伝えます。この作法を覚えておかないと、コンパイルエラーの原因となります。

4. サンプルプログラム

以下は、文字定数を定義し、変数に格納して表示する簡単なサンプルプログラムです。

IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE-LITERAL.

DATA DIVISION.
WORKING-STORAGE SECTION.

  • 15文字分のスペースを確保

01 WS-MSG PIC X(15).

PROCEDURE DIVISION.
> 文字定数を変数に代入
MOVE “HELLO WORLD” TO WS-MSG.
DISPLAY “出力結果1: ” WS-MSG.

> 長い文字列を継続行で記述する例
> 7桁目にハイフンを入れることで文字列を連結します
MOVE “これは非常に長い文字定数の”

  • “テストです。” TO WS-MSG.

DISPLAY “出力結果2: ” WS-MSG.

STOP RUN.

5. 応用・注意点:現場でのトラブルを避けるために

現場の技術者として、以下の点に注意してください。

・引用符の混在は避ける
プログラム内で「’」と「”」を混ぜて使うと、コードの可読性が著しく低下します。開発チームでどちらを使うかあらかじめ決めておきましょう。

・文字定数の中に引用符を含める場合
例えば、文字列の中に「”」という文字そのものを含めたい場合は、もう片方の引用符(’)で囲むことで表現可能です。
例: MOVE ‘名前は”COBOL”です’ TO WS-NAME.

・最大長の制限
古いシステム(COBOL 85以前)では160文字という制限がありますが、現代のコンパイラではより長い文字列も扱えます。ただし、メンテナンス性を考えると、あまりに長い文字列をプログラムに直接埋め込むのは避け、外部のパラメータファイルや定数定義専用のコピー句(COPY句)に切り出す工夫も検討してください。

これらを意識するだけで、あなたのコードは格段に美しく、保守性の高いものになります。ぜひ活用してください。

コメント

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