カテゴリ: COBOL 更新日: 2026/08/20

COBOLのJUSTIFIED句を完全マスター!初心者でもわかる文字の右寄せ・左寄せの基本

JUSTIFIED句の活用例と文字配置の制御
JUSTIFIED句の活用例と文字配置の制御

先生と生徒の会話形式で理解しよう

生徒

「先生、COBOLで文字の位置を右寄せにしたり左寄せにしたりすることはできますか?」

先生

「できますよ。COBOLではJUSTIFIED句を使えば、文字の配置を自由に制御できます。」

生徒

「文字の配置って、どんな場面で使うんですか?」

先生

「たとえば帳票(ちょうひょう)を印刷するときに、金額を右寄せにしたい場合などに使います。では、実際の使い方を見てみましょう。」

1. JUSTIFIED句とは?:文字を右端に揃える便利な機能

1. JUSTIFIED句とは?:文字を右端に揃える便利な機能
1. JUSTIFIED句とは?:文字を右端に揃える便利な機能

COBOLのJUSTIFIED句(ジャスティファイド句)は、一言で言うと「文字列を右寄せにする」ための命令です。プログラミング未経験の方には少し意外かもしれませんが、COBOLでは名前や住所などの文字データを扱う際、標準では左側から詰めて格納される仕組み(左寄せ)になっています。

例えば、10文字分のスペースがある場所に「TARO」という4文字を入れると、通常は以下のようになります。


[T][A][R][O][ ][ ][ ][ ][ ][ ] (左寄せ:標準の動作)

しかし、これでは帳票(レポート)で金額などを表示する際に、桁がバラバラで見栄えが悪くなってしまいます。そこでJUSTIFIED RIGHT(省略してJUST RIGHTとも書けます)を使うと、次のように自動で右側に寄せてくれるのです。


[ ][ ][ ][ ][ ][ ][T][A][R][O] (右寄せ:JUSTIFIED句を使用)

「右寄せ」を英語で「Justified Right」と呼びますが、COBOLではこの用語をそのままソースコードに記述するだけで、複雑な計算をすることなく文字の配置を美しく整えることができます。特に2026年現在のシステム保守現場でも、読みやすい帳票レイアウトを作成するために欠かせない基本スキルといえます。

2. JUSTIFIED句の基本的な書き方と構文

2. JUSTIFIED句の基本的な書き方と構文
2. JUSTIFIED句の基本的な書き方と構文

COBOLでデータを扱う際、通常は左詰めで格納されますが、JUSTIFIED RIGHT(略記:JUST RIGHT)を使用することで、簡単に右寄せ処理を実現できます。これはデータ項目を定義する「DATA DIVISION(データ部)」で指定します。

プログラミング未経験の方でも分かりやすいよう、10文字分のスペースがある箱(項目)に「ABC」という3文字を入れる例を見てみましょう。


DATA DIVISION.
WORKING-STORAGE SECTION.
01  WS-NORMAL-FIELD  PIC X(10).
01  WS-JUST-FIELD    PIC X(10) JUSTIFIED RIGHT.

上記のコードでは、2つの項目を定義しています。

  • WS-NORMAL-FIELD:通常の定義です。文字を入れると左から順に詰まります。
  • WS-JUST-FIELDJUSTIFIED RIGHTを指定した定義です。文字を入れると自動で右側に寄せて格納されます。

例えば、これらの項目に「ABC」という値をMOVE文で代入した場合、コンピュータ内部では以下のように保持されます。


通常の場合(左詰め)  : [ABC       ]
JUSTIFIED句あり(右寄せ): [       ABC]

このように、空白(スペース)を左側に埋めて、文字列の末尾を右端に合わせるのがこの句の役割です。帳票の金額表示や、特定のフォーマットに合わせた名前の印字など、見た目を整えるシーンで非常に重宝される構文です。

3. JUSTIFIED句の動作を具体例で確認してみよう

3. JUSTIFIED句の動作を具体例で確認してみよう
3. JUSTIFIED句の動作を具体例で確認してみよう

COBOLにおける「データの入り方」を視覚的に理解するために、簡単なプログラムで動作を比較してみましょう。プログラミングが初めての方でも、箱の中に文字を入れるイメージを持つと分かりやすくなります。

通常、COBOLの文字項目(英数字項目)は「左詰め」で格納されるのが基本ルールですが、JUSTIFIED RIGHT(省略形:JUST)を指定することで、このルールを「右詰め」に逆転させることができます。


IDENTIFICATION DIVISION.
PROGRAM-ID. JUSTIFY-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
* 10桁の箱を用意し、右寄せ(JUSTIFIED)を指定
01  NAME-RIGHT    PIC X(10) JUSTIFIED RIGHT.
* 10桁の箱を用意(指定なし:通常は左寄せになる)
01  NAME-LEFT     PIC X(10).

PROCEDURE DIVISION.
    * 4文字の"TARO"を10桁の箱に代入します
    MOVE "TARO" TO NAME-RIGHT
    MOVE "TARO" TO NAME-LEFT

    * 実行結果を表示して、空白の位置を確認しましょう
    DISPLAY "右寄せ(JUST指定あり):[" NAME-RIGHT "]"
    DISPLAY "左寄せ(指定なし)  :[" NAME-LEFT "]"
    STOP RUN.

このプログラムを実行すると、画面には以下のように表示されます。文字が10桁の枠内のどこに配置されているかに注目してください。


右寄せ(JUST指定あり):[      TARO]
左寄せ(指定なし)  :[TARO      ]

実行結果を見ると一目瞭然ですね。NAME-RIGHTの方は、余った6文字分のスペースが左側に詰められ、文字が右側に寄っています。一方で通常のNAME-LEFTは、余白が右側にできています。

このJUSTIFIED句は、帳票の金額表示を揃えたり、特定のフォーマットに合わせて文字を配置したい時に非常に便利です。記述する際は、必ずDATA DIVISIONの項目定義で指定することを覚えておきましょう。

4. JUSTIFIED句の実務での使いどころと活用メリット

4. JUSTIFIED句の実務での使いどころと活用メリット
4. JUSTIFIED句の実務での使いどころと活用メリット

「なぜ、わざわざJUSTIFIED句を使って右寄せにする必要があるの?」と疑問に思う方もいるかもしれません。実は、実際の業務システム(特に金融機関や物流、製造業など)において、この「右寄せ」は非常に重要な役割を持っています。

最も頻繁に使われるのは、「帳票(レポート)」や「請求書」などの金額表示です。例えば、売上報告書で「1,000円」と「1,000,000円」が並んでいるとき、左端から文字を並べてしまうと桁の位置がバラバラになり、パッと見ていくらなのか判別しにくくなってしまいます。これを右端に揃えることで、1の位、10の位が縦にピシッと並び、視認性が劇的に向上します。

プログラミング未経験の方でもイメージしやすいよう、具体的なサンプルコードで「右寄せ」と「左寄せ」の違いを見てみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. JUST-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
* JUSTIFIED RIGHTを指定(右寄せになる箱)
01  TOTAL-AMOUNT     PIC X(10) JUSTIFIED RIGHT.
* 通常の定義(左寄せになる箱)
01  AMOUNT-DISPLAY   PIC X(10).

PROCEDURE DIVISION.
    * 同じ「5000」という文字列を代入します
    MOVE "5000" TO TOTAL-AMOUNT
    MOVE "5000" TO AMOUNT-DISPLAY

    DISPLAY "--- 表示結果の比較 ---"
    DISPLAY "右寄せ(JUSTIFIEDあり):[" TOTAL-AMOUNT "]"
    DISPLAY "左寄せ(通常の動作)  :[" AMOUNT-DISPLAY "]"
    STOP RUN.

このプログラムを実行すると、画面には次のように表示されます。[ ]で囲まれた部分に注目してください。


--- 表示結果の比較 ---
右寄せ(JUSTIFIEDあり):[      5000]
左寄せ(通常の動作)  :[5000      ]

このように、通常のCOBOLの動作(左寄せ)では文字の後ろにスペースが入りますが、JUSTIFIED RIGHTを指定するだけで、自動的に文字の前にスペースが詰められ、右側にピタッと寄せてくれます。本来なら「文字の長さを数えて、足りない分だけスペースを自分で追加する」という面倒なプログラミングが必要ですが、COBOLならこの1行だけで済んでしまうのです。これが、長年事務処理の現場でCOBOLが重宝されている理由の一つです。

5. JUSTIFIED句を使うときの注意点と活用法

5. JUSTIFIED句を使うときの注意点と活用法
5. JUSTIFIED句を使うときの注意点と活用法

JUSTIFIED RIGHT(または略記のJUST)は、非常に便利な機能ですが、使いこなすにはいくつか覚えておきたいルールがあります。特にプログラミング初心者の方が陥りやすいポイントを整理しました。

① 文字列型(PIC X)専用の機能

JUSTIFIED RIGHTは、英数字項目(PIC X)でしか使えません。数値項目(PIC 9)に指定しようとするとコンパイルエラーになります。もし計算結果などの数値を右寄せして表示したい場合は、一度「編集項目」や「文字列項目」へ移送(MOVE)してから使用するのが一般的です。

② データが溢れた時の挙動(桁あふれ)

通常、COBOLでは長い文字を短い項目に入れると「右側」が切れますが、JUSTIFIED RIGHTを指定していると「左側」が切り捨てられます。

例: 5文字のデータを3文字の枠に右寄せで入れると、最初の2文字が消えてしまいます。受け側の桁数は余裕を持って設計しましょう。

③ 反映されるのは「MOVE」したタイミング

ここが一番の注意点です。項目を定義しただけでは右寄せは行われません。別の変数からデータを「MOVE」で代入した瞬間に、右寄せの処理が実行されます。

初心者のための実践サンプル

実際にどのような動きになるか、簡単なプログラムで確認してみましょう。名前を入れる枠を準備して、普通に代入した場合と、右寄せ指定をした場合を比較します。


IDENTIFICATION DIVISION.
PROGRAM-ID. JUST-SAMPLE.

DATA DIVISION.
WORKING-STORAGE SECTION.
* 通常の定義(左詰め)
01 NORMAL-NAME    PIC X(10).
* 右寄せの定義
01 JUSTIFIED-NAME PIC X(10) JUSTIFIED RIGHT.

PROCEDURE DIVISION.
    * 同じデータをMOVEしてみます
    MOVE "COBOL" TO NORMAL-NAME.
    MOVE "COBOL" TO JUSTIFIED-NAME.

    DISPLAY "通常表示: [" NORMAL-NAME "]"
    DISPLAY "右寄せ : [" JUSTIFIED-NAME "]"

    STOP RUN.

実行結果:


通常表示: [COBOL     ]
右寄せ : [     COBOL]

このように、同じ「PIC X(10)」という10文字分のスペースでも、JUSTIFIED RIGHTがあるだけで表示位置が劇的に変わります。帳票のレイアウトを整える際や、特定のフォーマットに合わせる際に欠かせないテクニックです。

6. 実際の活用例:帳票の出力

6. 実際の活用例:帳票の出力
6. 実際の活用例:帳票の出力

では、右寄せを使った簡単な帳票出力の例を見てみましょう。ここでは3人の売上金額を右寄せで出力します。


IDENTIFICATION DIVISION.
PROGRAM-ID. JUSTIFY-REPORT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01  NAME-1        PIC X(10) VALUE "TARO".
01  NAME-2        PIC X(10) VALUE "HANAKO".
01  NAME-3        PIC X(10) VALUE "JIRO".
01  SALES-1       PIC X(10) JUSTIFIED RIGHT.
01  SALES-2       PIC X(10) JUSTIFIED RIGHT.
01  SALES-3       PIC X(10) JUSTIFIED RIGHT.
PROCEDURE DIVISION.
    MOVE "5000"  TO SALES-1
    MOVE "12000" TO SALES-2
    MOVE "300"   TO SALES-3
    DISPLAY "------------------------"
    DISPLAY "氏名        売上金額"
    DISPLAY "------------------------"
    DISPLAY NAME-1 " " SALES-1
    DISPLAY NAME-2 " " SALES-2
    DISPLAY NAME-3 " " SALES-3
    DISPLAY "------------------------"
    STOP RUN.

実行結果は次のようになります。


------------------------
氏名        売上金額
------------------------
TARO           5000
HANAKO        12000
JIRO             300
------------------------

このように、JUSTIFIED RIGHTを使うことで、桁の異なる数値でも美しく整列された出力が簡単に実現できます。これがCOBOLの帳票出力でよく使われる理由です。

7. まとめ:JUSTIFIED句でCOBOLの文字配置を制御しよう

7. まとめ:JUSTIFIED句でCOBOLの文字配置を制御しよう
7. まとめ:JUSTIFIED句でCOBOLの文字配置を制御しよう

COBOLのJUSTIFIED RIGHTは、文字列データを右寄せで配置できる便利な機能です。帳票の出力や画面表示など、見た目を整える場面で非常に役立ちます。COBOLではレイアウトの整形もプログラムの重要な要素なので、ぜひこのJUSTIFIED句を使いこなして、読みやすく整った出力を作ってみましょう。

まとめ

まとめ
まとめ

ここまで、COBOLにおける文字配置の要であるJUSTIFIED句(ジャスティファイド句)について、その基本概念から具体的なコーディング方法、そして実務での活用シーンまでを詳しく解説してきました。COBOLという言語は、その誕生の経緯からも分かる通り、事務処理や帳票出力に特化した設計がなされています。そのため、今回学んだ「右寄せ」のようなレイアウト制御は、単なる見た目の問題ではなく、データの読み取りミスを防ぎ、業務の正確性を担保するための非常に重要な技術なのです。

JUSTIFIED句の重要ポイント再確認

記事の内容を振り返り、特に意識しておくべきポイントを整理しましょう。まず、COBOLの標準的な動作(デフォルト)では、英数字項目(PIC X)にデータを転記(MOVE)すると、データは左端から詰められ、右側の余ったスペースには空白が埋められます。これに対してJUSTIFIED RIGHT(または省略形のJUST RIGHT)を指定すると、データは右端に寄せられ、左側の余ったスペースに空白が挿入されます。

この挙動は、特に可変長の文字列を固定長のフィールドに格納する際に威力を発揮します。例えば、10桁の領域に対して4文字のデータを移送する場合、通常なら「[T][A][R][O][ ][ ][ ][ ][ ][ ]」となりますが、JUSTIFIED RIGHTを使うことで「[ ][ ][ ][ ][ ][ ][T][A][R][O]」という形で保持されることになります。

数値の扱いとC#での考え方の違い

実務において注意が必要なのは、この句が適用できるのはあくまで「英数字項目(文字列)」である点です。純粋な数値項目(PIC 9)に対しては使用できません。数値を右寄せで表示したい場合は、編集項目(PIC Zやコンマ編集など)を利用するか、一旦文字列項目に変換してからJUSTIFIED RIGHTを適用するのが一般的なテクニックです。

また、モダンなプログラミング言語であるC#などと比較してみると、その違いがより明確になります。C#で文字列を右寄せにする場合は、String.PadLeftメソッドや、文字列補間における書式指定を利用します。参考までに、C#で同様の処理を行うコード例を以下に示します。


using System;

class Program
{
    static void Main()
    {
        string name = "TARO";
        
        // 10桁の枠の中で右寄せにする(左側にスペースを埋める)
        string justifiedName = name.PadLeft(10);
        
        // 文字列補間を使って右寄せにする
        string formattedName = $"{name,10}";

        Console.WriteLine("実行結果:");
        Console.WriteLine($"[{justifiedName}]");
        Console.WriteLine($"[{formattedName}]");
    }
}

実行結果:
[      TARO]
[      TARO]

C#では実行時のロジックとして右寄せを制御しますが、COBOLでは「データ定義の属性」としてこれを保持できるのが大きな特徴です。一度定義してしまえば、その項目にデータを放り込むだけで自動的に右側に揃ってくれるため、大量の項目を扱う帳票プログラムでは非常にコーディング効率が高まります。

実務的な応用:データの切り捨てに注意

もう一点、プログラマが陥りやすい罠として「データの切り捨て」があります。通常、受け取り側の桁数が足りない場合、COBOLでは右側が切り捨てられます。しかし、JUSTIFIED RIGHTを指定している場合は左側から切り捨てられるという独特の動きをします。


IDENTIFICATION DIVISION.
PROGRAM-ID. JUSTIFY-CAUTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01  SHORT-FIELD  PIC X(3) JUSTIFIED RIGHT.
PROCEDURE DIVISION.
    MOVE "ABCDE" TO SHORT-FIELD
    DISPLAY "結果:" SHORT-FIELD
    STOP RUN.

結果:CDE

このように、大事なデータの先頭が消えてしまうリスクがあるため、定義する桁数には常に余裕を持たせることが大切です。銀行システムや在庫管理システムにおいて、コードの先頭が欠落することは致命的なバグに繋がります。

最後に

JUSTIFIED句は非常にシンプルな機能ですが、レガシーシステムの保守から新規のバッチ処理開発まで、幅広く使われ続けています。特に「誰が見ても読みやすい出力」が求められるビジネスプログラミングの世界では、こうした細かなレイアウト制御の積み重ねがシステムの信頼性を生みます。今回の内容をしっかりマスターして、ぜひ現場でのプログラム改修や作成に役立ててください。

先生と生徒の振り返り会話

生徒

「先生、JUSTIFIED RIGHTの使い方がよく分かりました!定義するだけで自動的に右に寄ってくれるなんて、帳票が多いCOBOLらしい便利な機能ですね。」

先生

「その通りです。他の言語だと表示する直前に整形関数を通すことが多いですが、COBOLはデータそのものの型に『右寄せ』という性質を持たせられるのが面白いところですね。」

生徒

「さっきの注意点で、桁が足りないと左側から文字が消えるっていうのは驚きました。普通は後ろ(右側)が切れるイメージだったので、気を付けないといけませんね。」

先生

「いいところに気づきましたね。右端を基準にデータを合わせるから、溢れた分は反対側の左から押し出されてしまうんです。これを防ぐためにも、設計段階でPIC句の桁数をしっかり見積もることがプロの仕事ですよ。」

生徒

「なるほど。文字の見た目だけでなく、データの保持のされ方まで意識して設計するのが大事なんですね。金額の表示とかで早速使ってみます!」

先生

「ぜひ活用してください。特に複数の数値項目を縦に並べて表示する時は、右端がビシッと揃っているだけで、使う人にとっての使いやすさが劇的に向上しますからね。頑張ってください!」

カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでWhere・Select・OrderByを使う方法を完全解説!初心者でもわかる基本操作
New2
C#
C#プログラムの実行方法まとめ!Visual Studio・コマンドライン・.NET CLIの使い方
New3
Azure
Azure DDoS ProtectionとAzure WAFの違いとは?アプリレイヤーまで守る最強の防御策を徹底解説
New4
C#
C#でHello Worldを表示する方法を完全ガイド!初心者でも1行から始められる入門講座
人気記事
No.1
Java&Spring記事人気No1
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.2
Java&Spring記事人気No2
Azure
Azure SQL Database購入モデル比較!vCoreとDTUの違いと選び方を初心者向けに解説
No.3
Java&Spring記事人気No3
Azure
Azure ExpressRouteとBGPプロトコルを徹底解説!ルート広報の仕組みとルーティング設計の基本
No.4
Java&Spring記事人気No4
C#
C#の文字列を数値に変換する方法(int.Parse・TryParse)をわかりやすく解説!
No.5
Java&Spring記事人気No5
C#
C#のforeachループを完全ガイド!初心者でもわかるコレクション操作の基本
No.6
Java&Spring記事人気No6
C#
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド
No.7
Java&Spring記事人気No7
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.8
Java&Spring記事人気No8
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説