COBOL言語のディスプレイ出力とコンソール入力について | 基礎ガイド

COBOL(コボル)言語のディスプレイ出力とコンソール入力の書き方とは

基礎-ディスプレイ出力-イメージ

COBOL(コボル)言語でコンソールに入力するためには

COBOL(コボル)ではキーボードから入力されたデータを、COBOLのプログラムで受け取るためにはACCEPT文を使用します。また、入力されたデータをディスプレイに出力するためにはDISPLAY文を使用します。

ACCEPT文はあらかじめ用意しておいたデータ項目に対して、入力されたデータを保存します。以下では、ACCEPT文で入力されたデータをデータ項目「IN-DATA-STR」に保存し、入力結果をDISPLAY文でディスプレイに出力します。

  1. WORKING-STORAGE SECTION.
  2. 01 INPUT-RECORD.
  3. 03 IN-DATA-STR PIC X(50).
  4. ~
  5. ACCEPT IN-DATA-STR FROM CONSOLE.
  6. DISPLAY IN-DATA-STR.

コンソールで入力したデータ項目をディスプレイ出力する

ここでは、実際にACCEPT文を使用して入力したデータをデータ項目に保存し、ディスプレイに出力する方法を紹介します。以下では英数字と数値形式のデータ項目を定義し、それぞれACCEPT文で入力した結果をディスプレイに出力する簡単なサンプルを紹介します。

サンプル:入力データをディスプレイに出力
基礎-ディスプレイ出力-使用例1
このサンプルプログラムを実行すると、ディスプレイに以下のように入力を促すメッセージが出力されますので、英数字と数値形式のデータをそれぞれ入力します。

英数字を入力してください。>>
数値を入力してください。>>

実行結果:
基礎-ディスプレイ出力-実行結果1

実行結果のようにACCEPT文でコンソールから入力したデータが、それぞれDISPLAY文で出力されます。サンプルプログラムのようにACCEPT文の前に「”英数字を入力してください。>> “」のようにどのような形式のデータを入力するのか、促すメッセージを出力するのが基本となります。

また、メッセージのあとにWITH NO ADVANCINGを指定すると、入力を促すメッセージの後が改行されず、「”英数字を入力してください。>> ” 」の後に続けてデータを入力することができます。

コンソールでデータを入力する上での注意点
1.ACCEPT文で指定するデータ項目が数値形式のデータを指定した場合、数値以外のデータを入力するとエラーとなります。そのため、ACCEPT文で指定するデータ項目は英数字形式とするのが一般的です。

2.ACCEPT文で数値のデータのみを受け取りたい場合は、ACCEPT文での入力後にデータが数値かどうか判定を行う必要があります。

練習問題
コンソールで入力したデータが数値の場合は入力したデータを出力し、数値以外の場合は「”数値以外が入力されました。”」を出力するプログラムを作成してみましょう。

データ項目が数値形式でセットされているかどうかを判定するには、IF~ELSE~THEN文でIS NUMERICを使用して判定と分岐を行います。

回答:入力されたデータが数値であるか確認する

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. DISPLAY_INPUT_SAMPLE02.
  3. ENVIRONMENT DIVISION.
  4. CONFIGURATION SECTION.
  5.  
  6. DATA DIVISION.
  7. WORKING-STORAGE SECTION.
  8. 01 INPUT-RECORD.
  9. 03 IN-DATA-NUM PIC X(3).
  10. PROCEDURE DIVISION.
  11. MAIN.
  12. *>----------------------------------------------------
  13. *> コンソールに入力
  14. *>----------------------------------------------------
  15. DISPLAY "数値を入力してください。>> " WITH NO ADVANCING.
  16. ACCEPT IN-DATA-NUM FROM CONSOLE.
  17. *>----------------------------------------------------
  18. *> 入力した値が数値か判定する
  19. *>----------------------------------------------------
  20. IF IN-DATA-NUM IS NUMERIC THEN
  21. DISPLAY "IN-DATA-NUM = "IN-DATA-NUM UPON CONSOLE
  22. ELSE
  23. DISPLAY "数値以外が入力されました。"
  24. END-IF.
  25. STOP RUN.

実行結果:
基礎-ディスプレイ出力-実行結果2

ACCEPTで入力したデータを判定するには、ACCEPTの直後で値の妥当性を確認するのが一般的です。さらに「入力されたデータが数値でかつ、値は100~999の範囲であるか」などの厳密な検査を行いたい場合は以下のように記述します。

サンプル:入力したデータが数値でかつ値が100~999の範囲であるか?

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. DISPLAY_INPUT_SAMPLE03.
  3. ENVIRONMENT DIVISION.
  4. CONFIGURATION SECTION.
  5. DATA DIVISION.
  6. WORKING-STORAGE SECTION.
  7. 01 INPUT-RECORD.
  8. 03 IN-DATA-NUM PIC X(3).
  9.  
  10. PROCEDURE DIVISION.
  11. MAIN.
  12. *>----------------------------------------------------
  13. *> コンソールに入力
  14. *>----------------------------------------------------
  15. DISPLAY "数値を入力してください。>> " WITH NO ADVANCING.
  16. ACCEPT IN-DATA-NUM FROM CONSOLE.
  17. *>----------------------------------------------------
  18. *> 入力した値が数値かつ100~999の範囲か判定する
  19. *>----------------------------------------------------
  20. IF IN-DATA-NUM IS NUMERIC AND
  21. IN-DATA-NUM >= 100 AND
  22. IN-DATA-NUM <= 999 THEN
  23. DISPLAY "IN-DATA-NUM = "IN-DATA-NUM UPON CONSOLE
  24. ELSE
  25. DISPLAY "入力された値が正しくありません。"
  26. END-IF.
  27. STOP RUN.

実行結果:
基礎-ディスプレイ出力-実行結果3

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門