COBOL言語の「CLASS句」でVALIDATE文の指定をしよう! | 用語辞典

COBOL(コボル)言語の予約語CLASS句を使った命令文の書き方とは

辞典・辞書-CLASS-イメージ

COBOL(コボル)言語のCLASS句とは?

CLASS句はVALIDATE文によるデータの妥当性検査で、データ項目に関する値の範囲(字類)を検査するときに指定します。データ項目は、たとえば数字で定義していても必ずしも数字のデータが入力されるとは限りません。そのため、入力したデータが正しいか妥当性の検査は実際によく行われます。

CLASS句で可能な検査は「NUMERIC(数字)」「ALPHABETIC(英字)」「ALPHABETIC-LOWER(英字小文字)」「ALPHABETIC-UPPER(英字大文字)」「BOOLEAN(真偽値)」などがあります。

書き方:

CLASS IS {NUMERIC}・・・数字の妥当性検査

     {ALPHABETIC}・・・英字の妥当性検査

     {ALPHABETIC-LOWER}・・・英字小文字の妥当性検査

     {ALPHABETIC-UPPER}・・・英字大文字の妥当性検査

     {BOOLEAN}・・・真偽値の妥当性検査

     {符号系名1}

     {字類名1}

CLASS句は以下のように集団項目に属する各データ項目に対して、指定することができます。

辞典・辞書-CLASS-書き方

VALIDATE文によるデータの妥当性検査機能は、CLASS句以外にも以下の語句があります。

ALLOW句・・・全ての検査に優先して許容される値を指定します。

DEFAULT句・・・VALIDATE文の実行によりデータが不当と判断された場合に明示した代用値を指定します。

DESTINATION句・・・VALIDATE文実行時のデータの転記先を指定します。

ERROR句・・・妥当性検査の結果を自動的にフラグ項目に設定することを指示します。

INVALID句・・・関係妥当性の検査条件を指定します。

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

  1. CLASS IS 各項目などの間の空白や改行は、自由に指定できます。
  2. CLASS句はVALIDATE文によるデータの妥当性検査の「形式妥当性検査」「入力分配」「内容妥当性検査」「関係妥当性検査」「誤り指摘」の内、内容妥当性検査によるデータ項目の値が許容範囲内であるか調べるために指定します。
  3. CLASS句を指定した場合は、条件式の字類検査と同様の処理が行われます。
  4. CLASS句の検査対象は、指定したデータ項目の値の各文字を数字、英字、小文字、大文字、真偽値であるか否かを検査します。
  5. CLASS句は環境部(ENVIRONMENT DIVISION)の特殊名段落(SPECIAL-NAMES)のALPHABET句、またはCLASS句で指定された字類に適合する文字だけが含まれるかを、検査することもできます。

    以下のように特殊名段落を指定した場合は、0~9の数字と字数が4であるかが精査されます。
    辞典・辞書-CLASS-記入例
  6. 記述項の左辺が英数字集団項目または各国文字集団項目であるとき、それに従属する基本データ項目にCLASS句による検査が適用されます。
  7. VALIDATE文で形式が不当の場合はEC-VALIDATE-FORMATが発生し、内容が不当な場合はEC-VALIDATE-CONTENTが発生し、関係が不当の場合は、EC-VALIDATE-FORMATの例外が発生します。

COBOL(コボル)言語のCLASS句を扱う上での注意点

  1. CLASS句は、VALIDATE文の実行中以外は無視されます。
  2. CLASS句は英数字集団、各国文字集団の従属するデータ項目が検査対象になりますが、PRESENT WHEN句、 DEPENDING 指定のある OCCURS句の結果として処理されないデータ項目は除外されます。

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

字類条件による検査は、IF文を指定して検査する方法が一般的で、CLASS句でVALIDATE文の指定をした検査は、使用頻度は少ないと言えます。

しかし、VALIDATE文を使用すれば、さまざまなデータの妥当性検査を行うことができます。

以下にCLASS句とVALIDATE文を指定して、字類の検査を行う簡単なサンプルを紹介します。

(プログラムの詳細な処理内容については、ここでは省略します)

   
  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. CLASS_SAMPLE.
  3. ENVIRONMENT DIVISION.
  4. CONFIGURATION SECTION.
  5.  
  6. *----------------------------------------------------
  7. * 特殊名段落で、CLASS句で入力データの妥当性を判定する
  8. *----------------------------------------------------
  9. SPECIAL-NAMES.
  10. CLASS ALPHABETIC IS "A" THRU "Z".
  11.  
  12.  
  13. DATA DIVISION.
  14. WORKING-STORAGE SECTION.
  15.  
  16. *----------------------------------------------------
  17. * VALIDATE文で検査を行う場合は、各項目に対して検証する語句を指定する
  18. *----------------------------------------------------
  19. 01 INPUT-RECORD.
  20. 03 IN-TYPE PIC 99.
  21. 03 IN-RECORD-ITEM-1.
  22. 05 IN-NAME PIC X(20)
  23. CLASS IS ALPHABETIC.
  24. ・・・処理・・・
  25.  
  26. PROCEDURE DIVISION.
  27.  
  28. ・・・手続き処理・・・
  29.  
  30. *----------------------------------------------------
  31. * VALIDATE文の実行
  32. *----------------------------------------------------
  33. VALIDATE INPUT-RECORD
  34.  
  35.  
  36. END PROGRAM CLASS_SAMPLE.

VALIDATE文では先述した、前述した各検査項目「形式妥当性検査」「入力分配」「内容妥当性検査」「関係妥当性検査」「誤り指摘」に対して指定した語句の検証が行われます。

VALIDATE文で不当条件が見つかると、EC-VALIDATE(非致命的)の例外が発生します。

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

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

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

COBOL入門のカテゴリー

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