COBOLの「USAGE句」を徹底解説!初心者向けに種類と使い方を解説

2025年4月8日火曜日

COBOL

COBOLを書いていて「USAGE句って何のためにあるの?」と感じたこと、ありませんか?

DISPLAYとかCOMPとかCOMP-3とか、見た目は似ていても中身はまったく別物です。知らないまま使っていたら、処理速度が落ちたり、データがうまく扱えなかったり…ちょっと怖いですよね。

この記事では、USAGE句の基本的な用途と意味、代表的な種類の違い、初心者でもすぐわかる使い分けのコツをわかりやすく解説します。

「COBOLって古いけど、使いこなせると意外とカッコいいじゃん?」と思える内容になっているので、ぜひ読んでみてください。

COBOLのUSAGE句とは?まず知っておきたい基本的な役割

USAGE句とは、データがコンピュータの中でどんな形で保管されるかを決める宣言です。ちょっとした「変数の収納方法の指定」と考えるとイメージしやすいかもしれません。

たとえば、洋服をたたんで引き出しにしまうのか、ハンガーで吊るしておくのか。その違いがあるように、数字や文字もメモリに保存する方法にバリエーションがあります。

COBOLでは、「このデータは文字として保存してね」とか「この数値は計算が速くなるような形で持っておいてね」といった感じで、USAGE句を使って細かく指定します。

指定のしかた次第で、処理のスピードが上がったり、メモリの節約ができたりするんです。プログラムを書くうえで、思ったより地味だけど効果は大きい存在ですね。

なぜUSAGE句でデータ形式を指定する必要があるの?

「わざわざ指定しなくても動くのに、なんでそんな面倒なことを?」と感じる方も多いと思います。でも、コンピュータの中では文字と数字はまったく別物なんです。

文字は見た目重視、数字はスピード重視。たとえば「1234」という数字も、文字として扱えば「1」「2」「3」「4」と1文字ずつ保存されますが、数値として処理するともっとコンパクトで高速に扱えるんです。

コンピュータ側からすれば、「文字で渡されると計算しにくいんだよ…」とつぶやきたくなるかも。USAGE句は、そんな内部処理の“都合”をコントロールする仕組みです。

ざっくり言えば、計算メインならCOMPやCOMP-3、表示メインならDISPLAYと使い分ける感じですね。

たとえばCOMP形式にすると、計算が速くなる代わりに人間には読みにくくなります。PACKED-DECIMAL(COMP-3)にすると、容量は半分くらいに節約できる場合もあります。

【基本】USAGE IS DISPLAY句の用途と特徴

USAGE句の中でも、一番なじみ深いのがDISPLAY句です。というか、何も指定しなければ自動的にこの形式になります。

DISPLAYは「文字のまま保存する」タイプで、人間にとって読みやすい形式が特徴です。たとえば、数字を文字として表示したいときや、帳票に出力したいときにはこの形式が向いています。

イメージしやすいように、簡単な例を見てみましょう。

01  NAME        PIC X(10).
01  ZIP-CODE    PIC 9(5).

このように宣言すると、文字や数字がそのままの形で保存されます。数字でも、見た目どおり「1」「2」「3」「4」「5」と文字コードで並びます。

表示や印刷にはぴったりですが、計算させたいならちょっと工夫が必要。まずはDISPLAYで文字として扱って、そこからステップアップしていくと、理解が深まります。

【数値計算の定番】USAGE IS COMPUTATIONAL (COMP) 句の用途と特徴

数値計算といえばCOMP句(COMPUTATIONAL)。コンピュータが一番得意とする「バイナリ形式」で数値を保存する方式です。数字を文字として扱うよりも、断然スピードが出ます。

たとえばループのカウンターや、計算処理がメインの項目などでは、DISPLAYよりもCOMPの方が向いています。理由は単純。計算が圧倒的に速くなるからです。

人間には読みにくくなりますが、コンピュータは大喜び。数字をそのまま「機械語っぽく」保存しておけば、いちいち文字変換しなくて済むからです。

ただし、処理系(OSやCOBOLの種類)によっては、COMPの内部形式がちょっとずつ違うこともあります。でも、今の段階ではそこまで気にしなくてもOKです。

01  CNT       PIC 9(4) COMP.

このように書くと、CNTという項目は4桁の数値をバイナリ形式で保存するようになります。読みやすさよりもスピードを重視したい場面で大活躍です。

COMP句の種類について(COMP-1, COMP-2など)

少し発展的な話ですが、COMP句にもいろいろ種類があります。

  • COMP-1:単精度の浮動小数点数(小数を扱うけど、ちょっと誤差が出る)
  • COMP-2:倍精度の浮動小数点数(より高精度だけど、容量も増える)

ただ、事務系の処理ではこの2つを使うことはあまりありません。まずは基本のCOMP(バイナリ形式)と、次に紹介するCOMP-3(パック形式)を覚えておけば、現場ではほぼ困りません。

【容量節約】USAGE IS PACKED-DECIMAL (COMP-3) 句の用途と特徴

数字が多くなると、保存スペースもバカになりません。そんな時に使えるのがCOMP-3(PACKED-DECIMAL)です。数字をギュッと詰めて保存する形式で、表示用ではなく保存や計算用にぴったりです。

文字形式(DISPLAY)は1桁あたり1バイトを使いますが、COMP-3は2桁で1バイト、つまり約半分の容量で済むこともあります。大量データを扱う業務では、かなりありがたいですね。

たとえば、金額や取引件数のように、桁数の大きな数字をファイルに保存する場合によく使われます。

保存形式のイメージを簡単に比較してみましょう。

種類 数値「12345」の保存イメージ
DISPLAY 1 2 3 4 5(各桁1バイト)
COMP-3 12 34 5C(2桁で1バイト、末尾に符号)

人間が見るにはちょっと難解ですが、保存効率はバツグン。数字をたくさん扱う場面では、まさに頼れる存在です。

他にもある?知っておきたいUSAGE句(BINARY, INDEXなど)

補足として、他にもUSAGE句にはいくつか種類があります。

BINARY句はCOMPとほぼ同じ意味で使われることが多く、処理系によってはまったく同じ扱いになります。バイナリ形式で保存して、計算をスムーズに行いたいときに使われます。

INDEX句はちょっと特殊で、テーブル(配列)の添え字を操作するために使います。単独で何かをするというより、テーブルとセットで使う形ですね。

とはいえ、最初のうちはDISPLAY・COMP・COMP-3の3つをしっかり覚えておけば十分です。まずは基本をマスターしてから、少しずつ他の形式に手を広げていきましょう。

【実践】COBOL USAGE句の使い分け:簡単な選び方のヒント

USAGE句っていろいろあって迷いますよね。でも大丈夫。目的に合わせて選べば、そんなに難しくありません。まずは「何に使うか」をハッキリさせましょう。

迷った時は、下のチェックポイントを見てみてください。

  • 人に見せるため(画面・帳票・ファイル出力)ならDISPLAY
  • 計算処理がメイン(ループや合計など)ならCOMP
  • 桁数が多くて容量を節約したいときCOMP-3

もう少し分かりやすく、フローチャート風にするとこんな感じです。

【USAGE句 選び方】
       ↓
画面や帳票に出力する?
       └─ はい → DISPLAY
       ↓
数値計算が中心?
       └─ はい → COMP
       ↓
桁数が多くて容量も気になる?
       └─ はい → COMP-3
       ↓
特別な使い道(添字操作など)?
       └─ はい → INDEX(またはBINARY)

もちろん、現場によっては「会社のルールで必ずCOMP-3を使う」など決まっていることもあります。そういう時はルールを優先してくださいね。

完璧じゃなくても大丈夫。まずは「自分で選ぶ感覚」を育てるところから始めましょう。

USAGE句を使ったサンプルプログラム

実際にCOBOLでUSAGE句を使ったコードを見てみましょう。今回はDISPLAY・COMP・COMP-3の3つを並べて、どんな違いがあるかを比較してみます。

IDENTIFICATION DIVISION.
PROGRAM-ID. USAGE-SAMPLE.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  DISPLAY-VALUE    PIC 9(5)       VALUE 12345.
01  COMP-VALUE       PIC 9(5) COMP  VALUE 12345.
01  COMP3-VALUE      PIC 9(5) COMP-3 VALUE 12345.

PROCEDURE DIVISION.
    DISPLAY "DISPLAY形式: " DISPLAY-VALUE.
    DISPLAY "COMP形式:    " COMP-VALUE.
    DISPLAY "COMP-3形式:  " COMP3-VALUE.
    STOP RUN.

このサンプルでは、同じ「12345」という数値を3つの形式で定義しています。それぞれの違いを簡単に見てみましょう。

項目名 USAGE句 用途 特徴
DISPLAY-VALUE DISPLAY(省略可) 画面や帳票の表示用 読みやすいが容量が大きめ
COMP-VALUE COMP(バイナリ) 計算処理に使う 計算が速いが読めない
COMP3-VALUE COMP-3(パック10進) 容量節約しながら数値を保存 桁数が多いデータに向いている

実行結果は一見どれも同じ「12345」に見えますが、内部ではまったく違う形で保存されています。まるで同じ料理でも、お弁当箱に詰めるか、皿に盛るかで見た目も使い勝手も変わるようなものですね。

このサンプルをベースに、自分で数値を変えたり、表示方法を工夫したりして、USAGE句の違いを体感してみると理解がグッと深まります。

【まとめ】COBOL USAGE句の用途を理解してステップアップ!

USAGE句は、データをコンピュータの中でどう扱うかを決める宣言

使い分けができるようになると、COBOLプログラムの効率もグンと良くなります。数字の扱いにムダがなくなり、処理が軽くなることもあります。

どれを選べば良いか迷った時も、目的を意識すれば自然と答えが見えてきます。表示?計算?容量?目的別に選ぶクセをつけると、判断がどんどん速くなります。

これでUSAGE句マスターに一歩近づきました!次にコードを書くときは、ちょっとだけ意識してみてください。いつものCOBOLが、少しだけ賢く見えるかもしれません。

【関連記事】

>> 今さら聞けない「COBOLとは?」

このブログを検索

  • ()

自己紹介

自分の写真
リモートワークでエンジニア兼Webディレクターとして活動しています。プログラミングやAIなど、日々の業務や学びの中で得た知識や気づきをわかりやすく発信し、これからITスキルを身につけたい人にも役立つ情報をお届けします。 note → https://note.com/yurufuri X → https://x.com/mnao111

QooQ