カテゴリ: COBOL 更新日: 2025/07/14

COBOLのNUMERIC・ALPHABETICをやさしく解説!初心者でも理解できるクラス条件の使い方

NUMERIC・ALPHABETICなどのクラス条件の活用
NUMERIC・ALPHABETICなどのクラス条件の活用

先生と生徒の会話形式で理解しよう

生徒

「COBOLで、入力された文字が数字だけなのか、文字だけなのかを調べたいときって、どうするんですか?」

先生

「そういうときには、COBOLの『クラス条件(クラスけんじょう)』を使うんですよ。『NUMERIC』や『ALPHABETIC』がよく使われます。」

生徒

「なんだか難しそうですが、使い方は簡単なんですか?」

先生

「実はとっても簡単なんです。やさしく説明するので、順番に見ていきましょう!」

1. クラス条件(NUMERIC・ALPHABETIC)とは?

1. クラス条件(NUMERIC・ALPHABETIC)とは?
1. クラス条件(NUMERIC・ALPHABETIC)とは?

COBOL(コボル)には、変数の中に入っている値が「数字だけ」なのか「アルファベットだけ」なのかを調べる便利な機能があります。これが「クラス条件」と呼ばれるものです。

具体的には次の2つがよく使われます:

  • NUMERIC(ニューメリック)…数字だけで構成されているか調べる条件
  • ALPHABETIC(アルファベティック)…英字だけで構成されているか調べる条件

この条件を使えば、たとえばユーザーが入力したデータが数字か文字かを簡単に判断できます。

2. NUMERIC(数字だけかをチェック)

2. NUMERIC(数字だけかをチェック)
2. NUMERIC(数字だけかをチェック)

NUMERICは、「そのデータが全部数字(0~9)でできているかどうか」を調べるための条件です。

たとえば、ユーザーが年齢を入力する場面で、数字以外の文字が混じっていないか確認したい場合に使います。

次のサンプルコードを見てみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. CHECK-NUMERIC.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-INPUT       PIC X(5).
01 RESPONSE-MESSAGE PIC X(40).

PROCEDURE DIVISION.
    DISPLAY "年齢を入力してください(例:25):" 
    ACCEPT USER-INPUT

    IF USER-INPUT IS NUMERIC
        MOVE "数字だけが入力されました。" TO RESPONSE-MESSAGE
    ELSE
        MOVE "数字以外の文字が含まれています。" TO RESPONSE-MESSAGE
    END-IF

    DISPLAY RESPONSE-MESSAGE
    STOP RUN.

実行結果の例:


    年齢を入力してください(例:25):
    25
    数字だけが入力されました。

このように、IF USER-INPUT IS NUMERIC で、USER-INPUTが数字かどうかを判断できます。

3. ALPHABETIC(英字だけかをチェック)

3. ALPHABETIC(英字だけかをチェック)
3. ALPHABETIC(英字だけかをチェック)

ALPHABETICは、「英字(A~Z、a~z)だけでできているか」を調べます。数字や記号が入っていると判定されません。

たとえば、名前を入力してもらう場面で使えます。


IDENTIFICATION DIVISION.
PROGRAM-ID. CHECK-ALPHABETIC.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NAME-INPUT       PIC X(10).
01 RESULT-MESSAGE   PIC X(40).

PROCEDURE DIVISION.
    DISPLAY "名前を入力してください(例:TARO):" 
    ACCEPT NAME-INPUT

    IF NAME-INPUT IS ALPHABETIC
        MOVE "英字だけが入力されました。" TO RESULT-MESSAGE
    ELSE
        MOVE "数字や記号が含まれています。" TO RESULT-MESSAGE
    END-IF

    DISPLAY RESULT-MESSAGE
    STOP RUN.

実行結果の例:


    名前を入力してください(例:TARO):
    TARO
    英字だけが入力されました。

ALPHABETICは、英字以外の記号や数字が混じっていると、条件に当てはまりません。

4. 注意!空白(スペース)にも気をつけよう

4. 注意!空白(スペース)にも気をつけよう
4. 注意!空白(スペース)にも気をつけよう

実は、COBOLのクラス条件は「スペース(空白)」もチェックの対象になります。

たとえば、名前に続いて空白が入っているだけでも、ALPHABETICでは「英字だけではない」と判断されてしまいます。

このような場合、入力前に余計なスペースを除去する方法(トリム処理)を使うと便利ですが、それは別の記事で紹介します。

5. クラス条件を使った簡単なバリデーション

5. クラス条件を使った簡単なバリデーション
5. クラス条件を使った簡単なバリデーション

バリデーションとは、「入力されたデータが正しいかどうかを確認する処理」のことです。

たとえば、社員コードは数字だけ、氏名は英字だけといったルールがある場合、NUMERICやALPHABETICでチェックすることで正しい入力を促すことができます。

次のように使うこともできます:


IF EMPLOYEE-CODE IS NOT NUMERIC
    DISPLAY "社員コードは数字で入力してください。"
END-IF

このようにIS NOT NUMERICと書けば、「数字ではない」ことをチェックできます。

6. その他のクラス条件(参考)

6. その他のクラス条件(参考)
6. その他のクラス条件(参考)

今回はNUMERICALPHABETICの基本だけを紹介しましたが、他にもCOBOLには次のようなクラス条件があります。

  • ALPHANUMERIC(アルファニューメリック)…英数字が混ざっていてもOK
  • DBCS(ダブルバイト)…日本語などの全角文字が含まれるかをチェック(環境による)

これらはもう少し上級者向けの内容ですが、COBOLでは入力データの中身をしっかりと確認できるようにたくさんの機能が備わっているのです。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法