COBOL言語の修飾子「OF句」を使用して重複データ項目を一意に取り扱うには? | 用語辞典

COBOL(コボル)言語の予約語OFを使用した重複するデータ項目の特定方法とは

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

COBOL(コボル)言語の修飾子OF句とは?

OF(英語)は、日本語に訳すると「~の」という意味です。

COBOL(コボル)言語の修飾子OF句には、データ項目が所属する集団項目を指定する機能がありあます。修飾子OF句を使用すると、重複するデータ項目名がどの集団項目に所属するのか一意に特定することができます。

修飾子OF句の形式

COBOL(コボル)言語では、所属する集団項目が異なる場合、同じデータ項目名を定義することができます。同じデータ項目名のデータ項目は、修飾子OF句で所属する集団項目を記述することにより、プログラム上で一意に取り扱うことができます。

■書式

 データ項目名 OF 集団項目名

■構文規則

 <データ項目名>

  データ項目名を記述します。

 <集団項目名>

  データ項目が所属する集団項目名を記述します。

■使用例

修飾子OF句を使用して、重複して定義したデータ項目にデータを設定するプログラム例をご紹介します。

このプログラムでは、集団項目「GROUP1」と集団項目「GROUP2」に、「DATA1」という重複したデータ項目が定義されていますが、実行結果を見ていただくと、プログラム内でそれぞれが一意に取り扱われていることがご理解いただけるでしょう。

辞典・辞書-OF-使用例

■実行結果

辞典・辞書-OF-実行結果

集団項目「GROUP1」と集団項目「GROUP2」の、「DATA1」にそれぞれ、「みかん」、「りんご」が設定されました。

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

COBOL言語の修飾子OF句は、MOVE文、COMPUTE文、IF文など、さまざまな命令文で使用することができ、修飾子OF句を使用することにより、重複するデータ項目名がどの集団項目に所属するデータなのかを一意に特定することができます。

命令文を記述するときに、重複したデータ項目名を一意に特定でないコーディングになっていると、コンパイル時にエラーが発生しますので、修飾子OF句を使用してデータ項目名を一意にする必要があります。

COBOL言語では、所属する集団項目が異なる場合には、重複するデータ項目名を定義することができますが、データ名が重複しているとバグを生みやすいため、通常は重複するデータ項目名を定義するべきではありません。

COBOL(コボル)言語の修飾子OF句を使うときの注意点

COBOL言語では通常は重複するデータ項目名を定義するべきではありませんが、同じ名前のデータ項目を1度に転記したい場合など、重複するデータ項目名を定義することによって、プログラムがシンプルになる場合もあります。そのような場合は、所属する集団項目を間違ってコーディングしないように注意してください。

修飾子OF句を使ったCOBOL(コボル)プログラムの活用方法

修飾子OF句は単独項目にも使用できますが、配列にも使用することができます。

配列になっているデータ項目の場合は、集団項目名のあとに要素番号を記述することにより、簡単に重複したデータ項目を一意にすることができます。要素番号には数字を直接記述することも、数字データ項目名を記述することもできます。

■書式

 データ項目名 OF 集団項目名(要素番号)

「COBOL(コボル)言語の修飾子OF句とは?」でご紹介したサンプルプログラムでは、単独項目にデータを設定していましたが、ここでは配列にデータを設定する方法をご紹介します。

サンプルプログラムでは、集団項目「GROUP1」が配列で、集団項目「GROUP2」が単独項目です。「GROUP1」と「GROUP2」には、「DATA1」という重複したデータ項目が定義されていますので、それぞれにデータを設定して、内容を表示してみましょう。

   
  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. OF_SAMPLE2.
  9. DATA DIVISION.
  10. WORKING-STORAGE SECTION.
  11. 01 WORKING-AREA.
  12. 03 GROUP1 OCCURS 2.
  13. 05 DATA1 PIC X(10).
  14. 03 GROUP2.
  15. 05 DATA1 PIC X(10).
  16. 03 DISP-BUF PIC X(64).
  17.  
  18. *-------------------------------------------
  19. * 主手続
  20. *-------------------------------------------
  21. PROCEDURE DIVISION.
  22.  
  23. MAIN-PROCEDURE.
  24. MOVE "みかん" TO DATA1 OF GROUP1(1).
  25. MOVE "ばなな" TO DATA1 OF GROUP1(2).
  26. MOVE "りんご" TO DATA1 OF GROUP2.
  27. DISPLAY DATA1 OF GROUP1(1).
  28. DISPLAY DATA1 OF GROUP1(2).
  29. DISPLAY DATA1 OF GROUP2.
  30.  
  31. STOP RUN.
  32. END PROGRAM OF_SAMPLE2.

■実行結果

辞典・辞書-OF-実行結果

重複したデータ項目名があると、COBOL言語で書かれたプログラムだけではなく、どのような言語のプログラムでも、記述ミスによるバグが発生しやすくなります。しかし、一方でプログラムをパターン化してわかりやすくしたり、コーディングをシンプルにしたりできる場合もあります。データを定義するときは、安易に重複して定義せずに、重複させる必要性を十分に考えた上で定義しましょう。

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

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

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

COBOL入門のカテゴリー

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