COBOL言語の「USAGE句」を基本から応用方法まで徹底解説! | 用語辞典
COBOL(コボル)言語の予約語USAGEを使ったデータ項目の表現形式の定義とは
COBOL(コボル)言語のUSAGE句とは?
USAGE(英語)は、日本語に訳すると「使用方法」という意味です。
COBOL(コボル)言語のUSAGE句は、英語のとおりデータ項目の使用方法(表現形式)を定義します。
USAGE句の形式
USAGE句は、データ項目の表現形式を定義します。USAGE句を省略した場合、「DISPLAY」という形式が暗黙で採用されます。
■書式
レベル番号 データ項目名 PIC データ形式 USAGE 表現形式
■構文規則
<レベル番号>
データ項目のレベル番号を記述します。レベル番号は66と88を除く、01から49、および77を使用することができます。
<データ項目名>
データ項目名を記述します。
<データ形式>
データ項目のデータ形式を記述します。
<表現形式>
データ項目の表現形式を記述します。記述できる表現形式は、「DISPLAY」、「PACKED-DECIMAL」、「BINARY」、「NATIONAL」、「INDEX」、「COMP」、「COMP-3」の7種類です。それぞれの形式については、「USAGE句のCOBOL(コボル)言語における基本事項やルールについて」で説明します。
■使用例
データ項目にUSAGE句を指定したプログラム例をご紹介します。
サンプルプログラムは、表現形式にDISPLAYとPACKED-DECIMALを指定したデータ項目に整数値の1から10までを加算し、結果をコンソールに表示するプログラムです。
PACKED-DECIMAのデータ項目は、そのままでは表示できないため、37行目で暗黙の定義がDISPLAYのデータ項目に計算値を移送しています。
■実行結果
USAGE句のCOBOL(コボル)言語における基本事項やルールについて
記述できる表現形式は、「DISPLAY」、「PACKED-DECIMAL」、「BINARY」、「NATIONAL」、「INDEX」、「COMP」、「COMP-3」の7種類です。
■DISPLAY
DISPLAYはデータ項目が文字として表現されるデータ形式です。DISPLAYでは1文字を1バイトで表現し、数字の1から9は、EBCDICコードでは16進数のF1からF9に、ASCIIコードでは31から39になります。この数字を文字などで表す表現形式を外部10進形式、またはゾーン形式と呼びます。
■PACKED-DECIMAL
PACKED-DECIMALは数字項目を4ビットで表すデータ形式です。PACKED-DECIMALでは、1バイトに2つの数値を格納します。例えば、「123」という数値は、16進数で表すと「123+符号」になり、2バイトで表すことができます。
■BINARY
BINARYは、数値を2進数で表すデータ形式です。PICで定義する桁数と格納できるデータの値の関係は以下の通りです。
桁数 |
バイト数 |
格納できる値の範囲 |
1~4 |
2 |
-2の15乗~2の15乗-1 |
5~9 |
4 |
-2の31乗~2の31乗-1 |
10~18 |
8 |
-2の63乗~2の63乗-1 |
■NATIONARY
NATIONARYは、日本語文字項目を編集、格納するためのデータ形式です。
■INDEX
INDEXは、データ項目が指標項目で、表の要素の添え字(インデックス)とするためのデータ形式です。
■COMP
COMPは古いデータ形式で、BINARYに相当します。
■COMP-3
COMP-3は古いデータ形式で、PACKED-DECIMALに相当します。
COBOL(コボル)言語のUSAGE句を使うときの注意点
USAGE句でBINARYを指定した場合、物理的にメモリやファイルに格納するときに「エンディアン」を意識する必要があります。
エンディアンとは、コンピュータ(プロセッサ)のアーキテクチャの違いによるメモリ上のデータ格納順序です。ワークステーション系やUNIX系ではビッグエンディアン、パソコン系ではリトルエンディアンが採用されています。
例えば、10進数の15をメモリに格納する場合、ビッグエンディアンでは16進数の「000F」、リトルエンディアンでは16進数の「0F00」で格納されます。
USAGE句を使ったCOBOL(コボル)プログラムの活用方法
整数値をBINARYで定義すると、DISPLAYやPACKED-DECIMALで定義するよりも、計算速度が上がります。逆に小数点以下がある値を計算するときには、計算速度が落ちます。
では、1+1を100万回、DISPLAYとBINARYで計算させてみましょう。
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. USAGE-SUMPLE2.
- DATA DIVISION.
- FILE SECTION.
- WORKING-STORAGE SECTION.
- 01 WORKING-AREA.
- * カウンタ&合計
- 03 CNT PIC 9(7).
- 03 KEKKA_DISPLAY PIC 9(7) USAGE DISPLAY.
- 03 KEKKA_BIN PIC 9(7) USAGE BINARY.
- 03 KEKKA_TMP PIC X(7).
- * コンソール表示バッファ
- 03 DSP_BUF PIC X(64).
- *-------------------------------------------
- * 主手続
- *-------------------------------------------
- PROCEDURE DIVISION.
- MAIN-PROCEDURE.
- * カウンタと合計エリアの初期化
- MOVE 0 TO KEKKA_DISPLAY.
- MOVE 0 TO KEKKA_BIN.
- * ゾーン形式で1,000,000,回加算し、結果を表示する
- DISPLAY "ゾーン形式での計算を開始します。".
- PERFORM VARYING CNT FROM 1 BY 1 UNTIL CNT > 1000000
- COMPUTE KEKKA_DISPLAY = KEKKA_DISPLAY + 1
- END-PERFORM.
- DISPLAY "計算が終了しました。".
- MOVE SPACE TO DSP_BUF.
- STRING "計算結果は「" KEKKA_DISPLAY "」です。"
- DELIMITED BY SPACE
- INTO DSP_BUF.
- DISPLAY DSP_BUF.
- * バイナリ形式で1,000,000回加算し、結果を表示する
- DISPLAY "バイナリ形式での計算を開始します。".
- PERFORM VARYING CNT FROM 1 BY 1 UNTIL CNT > 1000000
- COMPUTE KEKKA_BIN = KEKKA_BIN + 1
- END-PERFORM.
- DISPLAY "計算が終了しました。".
- MOVE KEKKA_BIN TO KEKKA_TMP.
- MOVE SPACE TO DSP_BUF.
- STRING "計算結果は「" KEKKA_TMP "」です。"
- DELIMITED BY SPACE
- INTO DSP_BUF.
- DISPLAY DSP_BUF.
- STOP RUN.
- END PROGRAM USAGE-SUMPLE2.
■実行結果
「USAGE句を使ったCOBOL(コボル)プログラムの活用方法」のサンプルプログラムの実行結果画面からではわかりませんが、実際にサンプルプログラムを実行してみると、計算速度の違いを実感できるでしょう。整数値の計算で速度を求められる場合は、USAGE句を使用してデータ形式をBINARYにすることも、スピードアップ手段として視野に入れてくださいね。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典