【COBOL学習|初心者向け】COBOLのデータ整形術!JUSTIFIED RIGHT句で文字を右詰めにする方法

1. 導入:なぜ「右詰め」が必要なのか?

COBOLで帳票出力や画面表示を行う際、データの見栄えは非常に重要です。通常、英数字項目(PIC X)はデフォルトで「左詰め」されますが、金額や整理番号、あるいは特定のレイアウト指示がある項目では「右詰め」が求められることが多々あります。この課題を一行の記述で解決してくれるのが、今回紹介する「JUSTIFIED RIGHT」句です。これを知っておくだけで、複雑な文字列操作を行うことなく、スマートにデータを整列させることができます。

2. 基礎知識:COBOLのデータ配置のルール

COBOLのデータ定義では、大きく分けて「数値項目(PIC 9)」と「英数字項目(PIC X)」で初期の配置ルールが異なります。
数値項目はデフォルトで右詰めですが、英数字項目は左詰めです。英数字項目に名前やコードを格納し、あえて右端に寄せたい場合、従来はMOVE文で何度も桁数を計算して動かす必要がありました。しかし、データ定義(FDやWORKING-STORAGE)の段階で「JUSTIFIED RIGHT」を付加することで、プログラム実行時に自動的に右端へ寄せてくれるようになります。

3. 実装と解決策

実装は非常にシンプルです。データ定義を行う際に、項目の宣言の最後に「JUSTIFIED RIGHT」を記述するだけです。
ただし、注意点としてこの句は「PIC X」などの英数字項目に対して有効です。数値項目(PIC 9)には指定が不要(元々右詰めのため)であるという点を覚えておきましょう。

4. サンプルプログラム

以下のコードをコピーして、コンパイル・実行してみてください。左詰めと右詰めの違いが明確にわかります。

IDENTIFICATION DIVISION.
PROGRAM-ID. JUSTIFY-SAMPLE.

DATA DIVISION.
WORKING-STORAGE SECTION.

  • 通常の英数字項目(左詰め)

05 WS-LEFT-DATA PIC X(10) VALUE “ABC”.

  • JUSTIFIED RIGHTを指定した項目(右詰め)

05 WS-RIGHT-DATA PIC X(10) JUSTIFIED RIGHT VALUE “ABC”.

PROCEDURE DIVISION.
DISPLAY “— 左詰め結果 —”
DISPLAY “[” WS-LEFT-DATA “]”

DISPLAY “— 右詰め結果 —”
DISPLAY “[” WS-RIGHT-DATA “]”

STOP RUN.

5. 応用・注意点:現場での活用と落とし穴

現場でよくある失敗は、データの上書きによる意図しないクリアです。JUSTIFIED RIGHTを指定した項目に、定義した桁数よりも長いデータをMOVEした場合、左側から切り捨てられる挙動になります。
また、この句を指定した項目に後から値をMOVEすると、以前のデータは自動的に右端へ寄るため、左側の余白にはスペース(空白)が自動補完されます。帳票レイアウトを設計する際は、この「左側のスペース」が計算や比較処理に悪影響を及ぼさないか、必ず確認するようにしてください。非常に強力な機能ですが、データ移動のたびに自動整列が行われるため、大量のデータ処理を行う際はパフォーマンスへの影響も考慮に入れるのがベテランの流儀です。

コメント

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