COBOL言語の「NUMERIC」の使い方について理解しよう!|基礎ガイド

COBOL(コボル)言語の判断処理で使用するNUMERICとは

基礎-NUMERIC-イメージ

COBOL(コボル)言語のNUMERIC文とは?

プログラムの判断処理には、そのデータ項目が数字であるかどうか、英文字であるかどうかを判断する字類条件というものがあります。この字類条件の内、データ項目が数字であるかどうか判断する際に使用されるのが「NUMERIC」です。

例えばあるデータ項目を使った演算処理を行う場合、その項目に英文字が入っていると正しい演算が行えません。この時「NUMERIC」を使用して数字かどうか判断する事により、数字でない場合はエラー処理を行ったり、データを読み飛ばすなどという事を簡単に行う事ができます。では、この「NUMERIC」の使い方についてみていきましょう。

書き方:

データ項目 IS NUMERIC

使用例:

基礎-NUMERIC-使用例

使用例は、画面入力した文字が数字かどうかを判断し、数字であればその値を画面に表示し、数字でなければ数字を入力するよう促すメッセージを表示しています。この使用例のように、NUMERICはIF文の1つの条件として使用する事が一般的です。

実行結果(数字を入力した場合):

基礎-NUMERIC-実行結果1

実行結果(数字以外を入力した場合):

基礎-NUMERIC-実行結果2

NUMERIC文のCOBOL(コボル)言語における基本事項やルールについて

  1. 「データ項目 IS NUMERIC」の間の空白や改行は、自由に設定できます。
  2. NUMERICは「ANDやOR等」の論理演算子を組み合わせる事で複数条件指定できます。

COBOL(コボル)言語の数字項目を扱う上での注意点

プログラム内のデータ項目が数字項目で定義されていても、必ずしも数字が入っているとは限りません。例えば集団項目に属している基本項目で、集団項目のデータを移送する場合や、複数レコードが格納されているファイルを扱う場合に、このような事象になる事があります。

もし数字以外の情報に気づかずそのまま計算処理等を実行してしまうと、実行時エラーや予期せぬエラーを引き起こす事になりますので、今回ご紹介した「NUMERIC」を活用し数字かどうか判断する事で、予期せぬ事象に対応できるようにしておきましょう。

NUMERIC文を使ったCOBOL(コボル)プログラムの活用法

あるデータ項目が数字項目で定義されていたとしても、ファイル等、複数レコードを扱う際には、数字でないものが格納されているという事は先にもご紹介した通りです。ここでは先にご紹介したNUMERICのサンプルプログラムをファイルのレコードを読む形に変更し、レコード単位に持つ数字項目の値を加算していくプログラムを考えてみましょう。数字かどうか判断する処理の必要性をご理解いただけるかと思います。

サンプルプログラム(NUMERIC_SAMPLE02):

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. NUMERIC_SAMPLE02.
  3. ENVIRONMENT DIVISION.
  4. INPUT-OUTPUT SECTION.
  5. *>読み込みファイルを指定する
  6. FILE-CONTROL.
  7. SELECT IN01-FILE
  8. ASSIGN TO "in01.txt"
  9. ORGANIZATION IS LINE SEQUENTIAL
  10. FILE STATUS IS IN-FILE-STATUS.
  11. DATA DIVISION.
  12. FILE SECTION.
  13. FD IN01-FILE.
  14. 01 IN01.
  15. 03 IN01-SUJI PIC 99.
  16. WORKING-STORAGE SECTION.
  17. 01 IN-FILE-STATUS PIC XX.
  18. 01 WK-SUM-SUJI PIC 999.
  19.  
  20. PROCEDURE DIVISION.
  21. *> 1.初期処理(ファイルオープン)
  22. OPEN INPUT IN01-FILE.
  23. READ IN01-FILE
  24. AT END
  25. DISPLAY "READ END"
  26. NOT AT END
  27. IF (IN01-SUJI IS NUMERIC)
  28. THEN
  29. MOVE IN01-SUJI TO WK-SUM-SUJI
  30. END-IF
  31. END-READ.
  32. *> 2.主処理(キーブレイク処理、データ集計処理)
  33. PERFORM UNTIL IN-FILE-STATUS NOT = "00"
  34. READ IN01-FILE
  35. AT END
  36. DISPLAY "READ END"
  37. NOT AT END
  38. IF (IN01-SUJI IS NUMERIC)
  39. THEN
  40. ADD IN01-SUJI TO WK-SUM-SUJI
  41. END-IF
  42. END-READ
  43. END-PERFORM.
  44. DISPLAY "入力された数値の合計は「" WK-SUM-SUJI "」です"
  45. *> 3.終了処理(ファイルクローズ)
  46. CLOSE IN01-FILE.
  47. STOP RUN.
  48. END PROGRAM NUMERIC_SAMPLE02.

入力ファイル(in01.txt):

基礎-NUMERIC-入力ファイル

実行結果:

基礎-NUMERIC-実行結果

いかがでしたでしょうか?COBOL(コボル)言語はこのように人の理解しやすい言葉を利用したコーディングができる事が特徴です。今回ご紹介したNUMERIC以外にも正負条件や英文字の判断に利用できるものが用意されていますので、こちらも活用いただければと思います。また、他のプログラミング言語を学習した方は、見慣れない言葉に少し戸惑う事もあるかもわかりませんが、これらの使い方を是非覚えていただき、実際の開発等に活用いただければと思います。

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

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

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

COBOL入門のカテゴリー

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