COBOLのDISPLAY文を活用する10の実用例付き解説

COBOLのDISPLAY文を使ったプログラミングのイメージCOBOL
この記事は約15分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

COBOLは、長年にわたりビジネスと金融の分野で広く使用されてきたプログラミング言語です。

その中でも「DISPLAY文」は、COBOLの基本的な構成要素の一つであり、初心者にとって理解が不可欠です。

この記事では、COBOLのDISPLAY文の使い方を、初心者でも理解しやすいように、実際のサンプルコードと共に紹介します。

これにより、読者はCOBOLプログラミングの基本を学び、実際のプログラムでDISPLAY文を効果的に使用する方法を習得できます。

●COBOLとは

COBOL(Common Business Oriented Language)は、1959年に開発されたプログラミング言語で、特にビジネス、金融、行政機関でのデータ処理に広く使用されています。

その特徴は、英語に近い構文を持ち、読みやすく書きやすい点にあります。

これにより、プログラミング初心者や非技術者でも、プログラムの目的や動作を理解しやすくなっています。

○COBOLの基本概念

COBOLプログラミングを理解する上で、いくつかの基本的な概念を把握する必要があります。

まず、COBOLは様々な「データ型」を持ち、それぞれのデータ型には特定の目的と使用方法があります。

さらに、COBOLプログラムは「DIVISION」、「SECTION」、「PARAGRAPH」という構造で構成されており、これによってプログラムは効率的に整理され、管理されます。

また、COBOLでは「文」(statements)を用いて、プログラムの命令を記述します。

これらの文には、データの処理、条件分岐、ループ処理など、様々な種類が存在します。

●DISPLAY文の基本

COBOLにおけるDISPLAY文は、プログラム内で最も基本的かつ頻繁に使用される文の一つです。

この文は、データやメッセージを画面やプリンターに出力するために用いられます。

DISPLAY文の基本的な構文はシンプルで、’DISPLAY’の後に出力したいデータや文字列を指定します。

この文は、デバッグ時の情報表示や、ユーザーへのメッセージ表示など、様々なシーンで役立ちます。

○DISPLAY文の役割と構造

DISPLAY文は、主に二つの役割を担っています。

一つ目は、プログラムの進行状況や結果をユーザーに伝えること。

二つ目は、デバッグプロセス中に変数の内容を確認することです。

この文の構造は比較的単純で、「DISPLAY」キーワードの後に出力したいデータや文字列を記述します。

また、複数の項目を出力する場合は、それぞれの項目をコンマで区切って列挙することができます。

○サンプルコード1:基本的な文字列出力

ここでは、COBOLにおけるDISPLAY文の基本的な使い方を表すサンプルコードを紹介します。

この例では、簡単なメッセージを画面に表示するプログラムを作成します。

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
    DISPLAY 'Hello, COBOL world!'.
    STOP RUN.

このコードでは、「Hello, COBOL world!」というメッセージを画面に表示します。

‘IDENTIFICATION DIVISION’と’PROGRAM-ID’は、プログラムの識別情報を提供するための標準的なセクションです。

‘PROCEDURE DIVISION’は、プログラムの実行を行うセクションで、ここにDISPLAY文を記述しています。

‘STOP RUN’は、プログラムの実行を終了させるための文です。

このコードを実行すると、指定したメッセージが画面に表示されることになります。

これにより、COBOLにおける基本的な出力方法の理解を深めることができます。

●DISPLAY文の応用

COBOLのDISPLAY文は、単なる文字列出力にとどまらず、さまざまな応用が可能です。

条件に応じた出力や、計算結果の表示など、多岐にわたるシナリオで利用できるのが特徴です。

ここでは、変数の値を表示する方法と、条件に応じた出力の実装方法について解説します。

○サンプルコード2:変数の値を表示

COBOLで変数の値を表示するには、DISPLAY文に変数名を指定します。

ここでは、整数型の変数に値を代入し、その値を表示するサンプルコードを紹介します。

IDENTIFICATION DIVISION.
PROGRAM-ID. VAR-DISPLAY.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 NUM PIC 9(3) VALUE 100.
PROCEDURE DIVISION.
    DISPLAY 'The value of NUM is: ' NUM.
    STOP RUN.

このプログラムでは、まずDATA DIVISIONで整数型の変数NUMを定義し、初期値として100を代入しています。

PROCEDURE DIVISIONでは、この変数NUMをDISPLAY文で出力しています。

結果として、「The value of NUM is: 100」という文字列が表示されます。

○サンプルコード3:条件に応じた出力

条件に基づいて異なるメッセージを表示するには、IF文を使用します。

ここでは、条件に応じて異なるメッセージを表示するサンプルコードを紹介します。

IDENTIFICATION DIVISION.
PROGRAM-ID. COND-DISPLAY.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 NUM PIC 9(3).
PROCEDURE DIVISION.
    ACCEPT NUM.
    IF NUM > 100 THEN
        DISPLAY 'NUM is greater than 100.'.
    ELSE
        DISPLAY 'NUM is 100 or less.'.
    END-IF.
    STOP RUN.

このコードでは、ユーザーから数値を入力してもらい、その数値が100より大きいかどうかを判定しています。

IF文を使って条件を評価し、条件に応じて異なるメッセージを表示します。

このように、DISPLAY文は条件分岐と組み合わせることで、より動的な出力を行うことが可能です。

○サンプルコード4:ループ内での使用

COBOLでは、DISPLAY文をループ構造の中で使用することで、反復的な処理を行う際の出力を制御することができます。

ここでは、繰り返し処理を行う際にDISPLAY文を使って数値のシーケンスを出力するサンプルコードを紹介します。

IDENTIFICATION DIVISION.
PROGRAM-ID. LOOP-DISPLAY.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 NUM PIC 9 VALUE 1.
PROCEDURE DIVISION.
    PERFORM VARYING NUM FROM 1 BY 1 UNTIL NUM > 5
        DISPLAY 'Number: ' NUM
    END-PERFORM.
    STOP RUN.

このプログラムでは、PERFORM VARYING構文を使用して、変数NUMを1から始めて5まで増加させています。

各反復で、DISPLAY文を使って「Number: 数値」という形式で出力しています。

このコードを実行すると、1から5までの各数値が画面に表示されます。

○サンプルコード5:フォーマット指定

DISPLAY文では、出力フォーマットを指定することもできます。

これにより、出力の見た目を整えたり、特定の書式に合わせたりすることが可能です。

ここでは、書式指定を用いたDISPLAY文のサンプルコードを紹介します。

IDENTIFICATION DIVISION.
PROGRAM-ID. FORMAT-DISPLAY.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 NUM PIC 9(3) VALUE 123.
PROCEDURE DIVISION.
    DISPLAY 'Formatted Number: ' NUM WITH NO ADVANCING.
    DISPLAY ' is displayed'.
    STOP RUN.

このコードでは、WITH NO ADVANCINGオプションを使用して、複数のDISPLAY文の出力を同一行に連続して表示しています。

通常、DISPLAY文は新しい行で出力されますが、WITH NO ADVANCINGを使用することで、改行せずに次のDISPLAY文の出力を続けることができます。

この例では、「Formatted Number: 123 is displayed」というメッセージが一行で表示されます。

●DISPLAY文を使った入力処理

COBOLでは、DISPLAY文とACCEPT文を組み合わせることで、ユーザーからの入力を受け取ることができます。

この方法を用いると、ユーザーに指示を表示し、その入力をプログラム内の変数に格納することが可能です。

ここでは、ユーザーからの入力を受け取る基本的な方法と、入力エラー時にエラーメッセージを表示する方法をサンプルコードとともに解説します。

○サンプルコード6:ユーザー入力の取得

下記のサンプルコードは、ユーザーに数値の入力を求め、入力された数値を表示する簡単な例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. USER-INPUT.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 USER-NUM PIC 9(4).
PROCEDURE DIVISION.
    DISPLAY 'Please enter a number: ' WITH NO ADVANCING.
    ACCEPT USER-NUM.
    DISPLAY 'You entered: ' USER-NUM.
    STOP RUN.

このプログラムでは、まずDISPLAY文を使用してユーザーに数値の入力を求めています。

続いてACCEPT文でユーザーからの入力を受け取り、再度DISPLAY文で入力された数値を表示しています。

このように、COBOLではユーザーインタラクションを簡単に実装することが可能です。

○サンプルコード7:エラーメッセージの表示

ユーザーからの入力が期待される形式でない場合、プログラムは適切なエラーメッセージを表示するべきです。

下記のサンプルコードは、数値以外の入力が行われた際にエラーメッセージを表示しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. INPUT-ERROR.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 USER-NUM PIC 9(4).
    01 NUM-VALID PIC X VALUE 'N'.
PROCEDURE DIVISION.
    DISPLAY 'Enter a number: ' WITH NO ADVANCING.
    ACCEPT USER-NUM.
    IF USER-NUM NOT NUMERIC THEN
        MOVE 'Y' TO NUM-VALID
        DISPLAY 'Error: Invalid input, not a number'.
    END-IF.
    IF NUM-VALID = 'N' THEN
        DISPLAY 'Valid number: ' USER-NUM.
    END-IF.
    STOP RUN.

このプログラムでは、まずユーザーに数値の入力を求めています。

入力された値が数値かどうかを判断するためにIF USER-NUM NOT NUMERIC構文を使用し、数値でない場合にエラーメッセージを表示しています。

このようにして、ユーザーが適切な形式のデータを入力することを保証することができます。

●DISPLAY文の応用例

COBOLのDISPLAY文は、レポートの作成、データベースとの連携、インタラクティブなユーザーインターフェイス(UI)の構築など、多様な応用が可能です。

これらの応用例は、ビジネスアプリケーションやデータ処理タスクにおいて特に有用です。

ここでは、これらの応用例について具体的なサンプルコードを用いて説明します。

○サンプルコード8:レポートの作成

レポート作成において、DISPLAY文はデータの整形表示に役立ちます。

下記のサンプルコードは、簡単なレポートを画面に表示する例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. REPORT.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 SALES-RECORD.
       05 PRODUCT-NAME PIC X(10) VALUE 'Product'.
       05 SALES-AMOUNT PIC 9(4) VALUE 1500.
PROCEDURE DIVISION.
    DISPLAY 'Sales Report'.
    DISPLAY 'Product Name: ' PRODUCT-NAME.
    DISPLAY 'Sales Amount: $' SALES-AMOUNT.
    STOP RUN.

このプログラムは、商品名と販売額を含むレポートを表示します。

DISPLAY文は、レポートの各行を整形して出力するのに適しています。

○サンプルコード9:データベースとの連携

COBOLプログラムは、データベース操作のためのクエリ結果を表示するのにもDISPLAY文を使用できます。

下記の例では、データベースから取得したデータを表示します。

IDENTIFICATION DIVISION.
PROGRAM-ID. DB-CONNECT.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 DB-RESULT PIC X(50).
PROCEDURE DIVISION.
    PERFORM DATABASE-QUERY
    DISPLAY 'Query Result: ' DB-RESULT.
    STOP RUN.

    DATABASE-QUERY.
        MOVE 'Data from database' TO DB-RESULT.

このプログラムは、データベースからのデータを仮に「Data from database」としており、実際のデータベース連携を想定しています。

○サンプルコード10:インタラクティブなUI

COBOLを使用して、インタラクティブなUIを構築することも可能です。

下記のコードは、ユーザーの選択に応じて異なるメッセージを表示する簡単なUIの例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. INTERACTIVE-UI.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 USER-CHOICE PIC X.
PROCEDURE DIVISION.
    DISPLAY 'Press A to view message 1, B for message 2'.
    ACCEPT USER-CHOICE.
    IF USER-CHOICE = 'A' THEN
        DISPLAY 'Message 1'.
    ELSE IF USER-CHOICE = 'B' THEN
        DISPLAY 'Message 2'.
    END-IF.
    STOP RUN.

このプログラムでは、ユーザーからの入力(AまたはB)に基づいて、異なるメッセージを表示します。

このようなインタラクティブな機能は、ユーザーとのやり取りが必要なアプリケーションにおいて有効です。

●注意点と対処法

COBOLプログラミングにおいてDISPLAY文を使用する際には、いくつかの重要な注意点があります。

これらの点に留意することで、より効果的で安全なプログラミングが可能になります。

ここでは、特に重要な文字列のフォーマットと性能に関する考慮事項について解説します。

○文字列のフォーマット

DISPLAY文で文字列を出力する際には、文字列のフォーマットが重要です。

特に、データの長さや型が出力フォーマットと一致していない場合、予期せぬ結果やエラーが発生する可能性があります。

ここでは、適切なフォーマットを使用したサンプルコードを紹介します。

IDENTIFICATION DIVISION.
PROGRAM-ID. FORMAT-EXAMPLE.
DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 USER-NAME PIC X(10) VALUE 'John Doe'.
    01 AGE PIC 9(2) VALUE 30.
PROCEDURE DIVISION.
    DISPLAY 'Name: ' USER-NAME.
    DISPLAY 'Age: ' AGE.
    STOP RUN.

このコードでは、ユーザー名と年齢を適切なフォーマットで表示しています。

文字列USER-NAMEは10文字までの長さを持ち、整数AGEは2桁の数字で表されています。

このように、各データ型に合ったフォーマットを使用することが重要です。

○性能上の考慮事項

DISPLAY文を多用するプログラムでは、性能上の問題が発生することがあります。

特に、大量のデータを扱う場合や、反復処理内でDISPLAY文を頻繁に使用する場合には注意が必要です。

性能を向上させるためには、次のような対策を検討することが有効です。

  1. プログラムの各部分で本当に必要な情報のみを出力するようにします。
  2. ループや条件分岐を見直し、不必要な処理を削減します。
  3. 複数の出力を一度にまとめて行うことで、処理の回数を減らします。

これらの対策を適用することで、COBOLプログラムのパフォーマンスを向上させることができます。

特に、大規模なアプリケーションやデータ処理を行う際には、これらの点に留意することが重要です。

まとめ

この記事を通じて、COBOLのDISPLAY文の基本から応用までを詳しく解説しました。

初心者でも理解できるように、DISPLAY文の役割と基本的な構造、さまざまな使用方法について具体的なサンプルコードを交えて説明しました。

これにより、COBOLプログラミングにおけるDISPLAY文の使い方をマスターすることができるでしょう。

COBOLのDISPLAY文は、その柔軟性と単純さから、今でも多くのビジネス環境で重要な役割を果たしています。

この記事が、DISPLAY文の効果的な使い方を理解し、実践するための手助けとなれば幸いです。