COBOLのUSAGE句(DISPLAY・COMPなど)をやさしく解説!初心者でもわかる効率化の基本
生徒
「COBOLのUSAGE(ユーセージ)って何のために使うんですか?よくわからなくて…」
先生
「いい質問ですね。USAGE句は、データの使い方やコンピュータ内での保存の仕方を指定するために使います。」
生徒
「保存の仕方?なんだか難しそうです…」
先生
「たとえば“表示専用なのか”、“計算に特化しているのか”を選ぶための設定なんです。具体的な使い方を一緒に見てみましょう!」
1. USAGE句とは?
USAGE句(ユーセージ句)は、COBOLで使うデータが「どのように格納され、どんな用途で使われるか」を指定するためのものです。たとえば、「文字を表示するため」や「計算を効率よく行うため」に使い分けることができます。
COBOLの変数は、単に「数値」や「文字」を表すだけでなく、パソコンの中でどういう形式で保存されるかを決めることで、メモリの節約や計算の高速化ができるようになります。
初心者にとってはちょっと難しそうに感じるかもしれませんが、料理で使う器のサイズや形を選ぶようなものと考えてみてください。表示するのに向いた「お皿」もあれば、計算に強い「ボウル」もあるのです。
2. USAGE DISPLAY:画面に表示したりする一般的な形式
USAGE DISPLAY(ユーセージ・ディスプレイ)は、COBOLで最もよく使われる形式です。この指定を使うと、変数は文字や数字を「人が読める形」で扱うことができます。特に画面に表示したり、印刷したりする場合に使われます。
DISPLAYは、パソコンの中では「1文字=1バイト(8ビット)」で保存されるため、とてもわかりやすい形式です。
例を見てみましょう。
01 USER-NAME PIC X(10) USAGE DISPLAY.
01 AGE PIC 99 USAGE DISPLAY.
この例では、「USER-NAME」や「AGE」は、どちらも人が見やすい形で保存されます。「X(10)」は文字列10文字分、「99」は2桁の数字を意味します。
3. USAGE COMP:計算処理を高速にする形式
USAGE COMP(コンプと読みます)は、「計算に特化した形式」で、パソコンの中では2進数(二進法)で保存されます。つまり、人が読める形ではなく、機械が扱いやすい形に変換して保存されます。
そのため、数値の四則演算(たし算、ひき算、かけ算、わり算)などをたくさん行う処理では、USAGE COMPを使うことでスピードアップが期待できます。
具体例を見てみましょう。
01 TOTAL-AMOUNT PIC 9(6) USAGE COMP.
このように書くと、「TOTAL-AMOUNT」は、6桁の数値を「2進数」で保存し、計算処理がとても高速になります。ただし、DISPLAYのように直接画面表示すると文字化けする可能性があるので注意が必要です。
4. USAGE COMP-3:少ないメモリで多くの数字を扱いたいとき
USAGE COMP-3(コンプスリー)は、「パック10進数」と呼ばれる特殊な形式で、メモリを節約しながら数字を保存したいときに使います。
これは、1バイトに2桁の数字を詰め込んで保存する仕組みで、金額などの桁数が多いデータに使われることが多いです。
たとえば、以下のように記述します。
01 SALES-AMOUNT PIC 9(7)V99 USAGE COMP-3.
この変数「SALES-AMOUNT」は、「9999999.99」のように最大9桁の数値(小数2桁)を扱えますが、メモリの使用量は非常に少なく済みます。
ただし、こちらも画面表示には向いておらず、DISPLAYに変換してから表示する必要があります。
5. USAGEの違いを実行例で見てみよう
では、実際にUSAGE DISPLAYとUSAGE COMPを比較して、画面に表示してみます。
IDENTIFICATION DIVISION.
PROGRAM-ID. USAGE-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DISPLAY-VALUE PIC 9(4) USAGE DISPLAY VALUE 1234.
01 COMP-VALUE PIC 9(4) USAGE COMP VALUE 1234.
PROCEDURE DIVISION.
DISPLAY "DISPLAY形式: " DISPLAY-VALUE.
DISPLAY "COMP形式 : " COMP-VALUE.
STOP RUN.
出力結果は次のようになります。
DISPLAY形式: 1234
COMP形式 : (文字化けまたは意図しない表示)
このように、COMPで定義した変数を直接DISPLAYすると、うまく表示されないことがあります。これが「人に見せるか」「機械に使わせるか」の違いです。
6. 初心者が注意すべきポイント
- 画面に出力するならUSAGE DISPLAYを使いましょう。
- 数値計算をたくさんする処理ではUSAGE COMPを使うと高速になります。
- メモリを節約したいならUSAGE COMP-3も選択肢になります。
- ただし、COMPやCOMP-3は表示に不向きなため、表示の前に変換が必要です。
用途に合わせて使い分けることで、無駄のないプログラムを作ることができます。