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

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

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

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

DEFAULT句はVALIDATE文によるデータの妥当性検査で、データ項目に関する値が空白または形式が不当か検査するときに指定します。DEFAULT句で検査した値が不当だった場合は代用値を指定します。

データ項目は必ず正しい値が入力されているとは限りません。そのため、判定文でもデータが空白や不当の場合は代用した値を用いることはよくあります。

DEFAULT句では代用値として、指定するデータ項目または値の転記を行わない場合はNONEを指定します。

書き方:

DEFAULT IS {定数1}

      {一意名1}

      {NONE}

DEFAULT句は集団項目や集団項目に属する各データ項目に対して、指定することができます。

以下の例では、PICTURE句の検査で2桁の値でなければ、DEFAULT句で規定値10が設定されます。

この検査段階で不当となった場合は以降DEFAULT句で指定した値が使われます。

辞典・辞書-DEFAULT-書き方

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

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

CLASS句・・・字類の内容妥当性検査を行います。

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

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

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

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

  1. DEFAULT IS 各項目などの間の空白や改行は自由に設定できます。
  2. DEFAULT句はVALIDATE文によるデータの妥当性検査の「形式妥当性検査」「入力分配」「内容妥当性検査」「関係妥当性検査」「誤り指摘」の内、形式妥当性検査によるデータ項目の形式が不当または全て空白か検査して、不当または全て空白の場合に代用値を転記するために指定します。
  3. DEFAULT句は、検査段階で不当になった場合はDESTINATION句で指定された送り先へ代用値が転記されます。
    辞典・辞書-DEFAULT-記入例
    以下の場合ではDESTINATIONのデータ項目に規定値10が転記されます。
  4. 基本データ項目がその項目に関連する内部標識の形式が不当な状態に設定されているときに代用値が確立します。
  5. 基本データ項目がDISPLAYまたはNATIONALで、内容が全て空白の場合に代用値が確立します。
  6. DEFAULT句はNONEの場合を除き、代用値を明示的に指定する必要があります。定数1を設定した場合は定数1で設定され、一意名1を指定したときは一意名1がデータ項目の値となります。
  7. DEFAULT句でNONEを指定した場合は、形式妥当性に違反または空白の場合でも転記を行いません。

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

 
  1. CLASS句は、VALIDATE文の実行中以外は無視されます。
  2. 記述項の左辺の字類は、指標、オブジェクト、ポインタであってはいけません。

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

DEFAULT句による形式妥当性、空白有無による検査は、IF文を指定して検査する方法が一般的で、DEFAULT句でVALIDATE文の指定をした検査は使用頻度が少ないと言えます。

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

以下にDEFAULT句とVALIDATE文を指定してデータの検査を行い、代用値を転記する簡単なサンプルを紹介します。

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

   
  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. DEFAULT_SAMPLE.
  3. ENVIRONMENT DIVISION.
  4. CONFIGURATION SECTION.
  5.  
  6. DATA DIVISION.
  7. WORKING-STORAGE SECTION.
  8.  
  9. *----------------------------------------------------
  10. * VALIDATE文で検査を行う場合は、各検査項目に対して検証する語句を指定する
  11. *----------------------------------------------------
  12. 01 INPUT-RECORD.
  13. 03 IN-DATA-X PIC X(4)
  14. DEFAULT 1111.
  15. DESTINATION OUT-DATA-X.
  16. ・・・処理・・・
  17.  
  18. PROCEDURE DIVISION.
  19.  
  20. ・・・手続き処理・・・
  21.  
  22. *----------------------------------------------------
  23. * ACCEPT文でデータを入力する
  24. *----------------------------------------------------
  25. DISPLAY "データ(4桁)を入力してください。--> " WITH NO ADVANCING.
  26. ACCEPT IN-DATA-X FROM CONSOLE.
  27.  
  28. *----------------------------------------------------
  29. * VALIDATE文の実行
  30. *----------------------------------------------------
  31. VALIDATE INPUT-RECORD
  32.  
  33.  
  34. END PROGRAM DEFAULT_SAMPLE.

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

サンプルでは、入力したデータが4桁以外の場合はDEFAULT句による検査が不当とみなされ、代用値が適用されます。

代用値はDESTINATION句で定義されたデータ項目に適用されます。また、DEFAULT句による検査の結果が合格の場合、DESTINATION句は無視されます。

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

あなたのCOBOL技術を活かしませんか?

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

COBOL入門のカテゴリー

|  基礎  |  応用  |  勉強  |  試験 |  辞書  |

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