ページの先頭行へ戻る
NetCOBOL V11.0 入門ガイド
FUJITSU Software

6.17 コレクションクラス(クラスライブラリ)(Sample16)

ここでは、本製品で提供するサンプルプログラム-Sample16-について説明します。

Sample16では、クラスライブラリの作成方法の例として、コレクションクラスの例を示します。

このサンプルは、クラスライブラリの作成方法の例として使用するだけでなく、実際にプログラムに組み込んで使用することができます。また、このサンプルには基本的な操作しか含まれていませんが、改造・変更することにより、さらに使いやすいクラスライブラリにすることができます。

注意

翻訳およびリンク以降では、NetCOBOLのインストール先フォルダーをC:\COBOLとして説明しています。フォルダー名がC:\COBOLになっているところは、NetCOBOLをインストールしたフォルダーに変更してください。

概要

“コレクションクラス”とは、集合を扱うクラスの総称です。つまり、たくさんのオブジェクトをまとめて扱ったり、格納したりするためのクラスです。サンプルには、以下のクラスが含まれています。

プログラムの内容

クラス階層

Sample16のクラスの階層関係を下図に示します。

参考

サンプルクラスには、上記の他にBinaryTree-Class、DictionaryNode-ClassおよびListNode-Classが含まれています。これらのクラスは、ListクラスおよびDictクラス内部で使用しているクラスで、コレクションクラス使用者からは見えなくなっています。そのため、ここではこれらのクラスの説明は省略します。

Collectクラス

コレクションクラスの最上位のクラスです。すべてのコレクションクラスはこのクラスを継承しています。Collectは抽象クラスであり、オブジェクトを作成しません。

このクラスは、FJBASEクラスを継承しているので、FJBASEクラスで定義されているメソッドもすべて使用することができます。

定義
CLASS-ID.  Collect  INHERITS  FJBASE.
 ENVIRONMENT  DIVISION.
 CONFIGURATION  SECTION.
   REPOSITORY.
     CLASS  FJBASE.
   OBJECT.
   PROCEDURE  DIVISION.
   METHOD-ID.  CollectionSize-Get.
   METHOD-ID.  FirstElement-Get.
   METHOD-ID.  NextElement-Get.
   METHOD-ID.  PreviousElement-Get.
   END  OBJECT.
 END  CLASS  Collect.
CollectionSize-Getメソッド

集合の要素数を調べます。

パラメタ

なし

復帰値

PIC 9(8) BINARY  :  集合の要素数を返します。

FirstElement-Getメソッド

集合の先頭の要素を取り出します。

パラメタ

なし

復帰値

USAGE OBJECT REFERENCE  :  集合の先頭の要素を返します。要素がない場合は、NULLを返します。

NextElement-Getメソッド

現在指している要素の次の要素を取り出します。

パラメタ

なし

復帰値

USAGE OBJECT REFERENCE  :  現在指している要素の次の要素を返します。次の要素がない場合は、NULLを返します。

PreviousElement-Getメソッド

現在指している要素の直前の要素を取り出します。

パラメタ

なし

復帰値

USAGE OBJECT REFERENCE  :  直前の要素を返します。直前の要素がない場合は、NULLを返します。

Dictクラス

以下の特徴を持つ集合クラスです。

  • 各要素はキーを持っています。

  • キーの値は一意です。

  • キーによる検索ができます。

  • キーにより順序付けされています。

このクラスは、Collectクラスを継承しているので、Collectクラスで定義されているメソッドもすべて使用することができます。

定義
CLASS-ID.  Dict  INHERITS  Collect.
 ENVIRONMENT  DIVISION.
 CONFIGURATION  SECTION.
   REPOSITORY.
     CLASS  Collect.
   OBJECT.
   PROCEDURE  DIVISION.
   METHOD-ID.  Element-Get.
   METHOD-ID.  Element-PutAt.
   METHOD-ID.  FirstKey-Get.
   METHOD-ID.  LastKey-Get.
   METHOD-ID.  Remove-All.
   METHOD-ID.  Remove-At.
   END  OBJECT.
 END  CLASS  Dict.
Element-Getメソッド

指定されたキーの要素を取り出します。

パラメタ

PIC X ANY LENGTH  :  取り出す要素のキー値を指定します。

復帰値

USAGE OBJECT REFERENCE  :  指定されたキーの要素が見つかった場合はその要素を、見つからなかった場合はNULLを返します。

Element-PutAtメソッド

指定されたキーの要素を追加します。すでに同じキーを持つ要素が存在している場合は、新しい要素で置き換えます。

パラメタ

PIC X ANY LENGTH  :  追加・置換する要素のキー値を指定します。

USAGE OBJECT REFERENCE  :  追加・置換する要素を指定します。

復帰値

なし

FirstKey-Getメソッド

先頭の要素のキー値を求めます。

パラメタ

なし

復帰値

PIC X ANY LENGTH  :  先頭の要素のキー値を返します。要素数が0の場合または先頭の要素のキーが空白の場合、空白を返します。

LastKey-Getメソッド

最後の要素のキー値を求めます。

パラメタ

なし

復帰値

PIC X ANY LENGTH  :  最後の要素のキー値を返します。要素数が0の場合または最後の要素のキーが空白の場合、空白を返します。

Remove-Allメソッド

集合に含まれるすべての要素を削除します。

パラメタ

なし

復帰値

なし

Remove-Atメソッド

指定されたキーの要素を削除します。

パラメタ

PIC X ANY LENGTH  :  削除する要素のキー値を指定します。

復帰値

なし

Listクラス

以下の特徴を持つ集合クラスです。

  • 要素間に順序があります。

  • 同一の要素を複数含むことができます。

このクラスは、Collectクラスを継承しているので、Collectクラスで定義されているメソッドもすべて使用することができます。

定義
CLASS-ID.  List  INHERITS  Collect.
 ENVIRONMENT  DIVISION.
 CONFIGURATION  SECTION.
   REPOSITORY.
     CLASS  Collect.
   OBJECT.
   PROCEDURE  DIVISION.
   METHOD-ID.  Element-Get.
   METHOD-ID.  Element-Insert.
   METHOD-ID.  Element-PutAt.
   METHOD-ID.  Element-PutLast.
   METHOD-ID.  ElementNo-Get.
   METHOD-ID.  LastElement-Get.
   METHOD-ID.  Remove-All.
   METHOD-ID.  Remove-At.
   END  OBJECT.
 END  CLASS  List.
Element-Getメソッド

指定された位置(インデックス)の要素を取り出します。

パラメタ

PIC 9(8) BINARY  :  取り出す要素の位置を、先頭を1とした整数で指定します。

復帰値

USAGE OBJECT REFERENCE  :  取り出した要素を返します。指定した位置の要素がなかった場合は、NULLを返します。

Element-Insertメソッド

指定された位置(インデックス)に要素を追加します。

パラメタ

PIC 9(8) BINARY  :  要素を追加する位置を、先頭を1とした整数で指定します。なお、要素数+1より大きい数を指定した場合は、要素は追加されません。

USAGE OBJECT REFERENCE  :  追加する要素を指定します。

復帰値

PIC 9(8) BINARY  :  要素を追加した位置を、先頭を1とした整数で返します。要素が追加されなかった場合は、0を返します。

Element-PutAtメソッド

指定された位置(インデックス)の要素を置き換えます。

パラメタ

PIC 9(8) BINARY  :  置き換える要素の位置を、先頭を1とした整数で指定します。なお、要素数より大きい数を指定した場合は、置き換えられません。

USAGE OBJECT REFERENCE  :  置き換える要素を指定します。

復帰値

PIC 9(4) BINARY  :  要素を置き換えた位置を、先頭を1とした整数で返します。要素が置き換えられなかった場合は、0を返します。

Element-PutLastメソッド

最後の要素の後に、要素を追加します。

パラメタ

USAGE OBJECT REFERENCE  :  追加する要素を指定します。

復帰値

なし

ElementNo-Getメソッド

指定した要素の位置(インデックス)を調べます。

パラメタ

USAGE OBJECT REFERENCE  :  位置を調べる要素を指定します。

復帰値

PIC 9(8) BINARY  :  要素の位置を、先頭を1とした整数で返します。指定した要素が見つからなかった場合は0を返します。同じ要素が複数存在する場合は、最初に見つかった位置を返します。

LastElement-Getメソッド

最後の要素を取り出します。

パラメタ

なし

復帰値

USAGE OBJECT REFERENCE  :  最後の要素を返します。要素数が0の場合は、NULLを返します。

Remove-Allメソッド

集合に含まれるすべての要素を削除します。

パラメタ

なし

復帰値

なし

Remove-Atメソッド

指定された位置(インデックス)の要素を削除します。

パラメタ

PIC 9(8) BINARY  :  削除する要素の位置を、先頭を1とした整数で指定します。なお、要素数より大きい数を指定した場合は、削除されません。

復帰値

PIC 9(4) BINARY  :  要素を削除した位置を、先頭を1とした整数で返します。削除されなかった場合は、0を返します。

提供プログラム

使用しているCOBOLの機能

使用しているオブジェクト指向の文/段落/定義