ここでは、本製品で提供するサンプルプログラム-Sample16-について説明します。
Sample16では、クラスライブラリの作成方法の例として、コレクションクラスの例を示します。
このサンプルは、クラスライブラリの作成方法の例として使用するだけでなく、実際にプログラムに組み込んで使用することができます。また、このサンプルには基本的な操作しか含まれていませんが、改造・変更することにより、さらに使いやすいクラスライブラリにすることができます。
注意
翻訳およびリンク以降では、NetCOBOLのインストール先フォルダーをC:\COBOLとして説明しています。フォルダー名がC:\COBOLになっているところは、NetCOBOLをインストールしたフォルダーに変更してください。
概要
“コレクションクラス”とは、集合を扱うクラスの総称です。つまり、たくさんのオブジェクトをまとめて扱ったり、格納したりするためのクラスです。サンプルには、以下のクラスが含まれています。
Collect(Collection:収集)
Dict(Dictionary:辞書)
List(リスト)
プログラムの内容
Sample16のクラスの階層関係を下図に示します。
参考
サンプルクラスには、上記の他にBinaryTree-Class、DictionaryNode-ClassおよびListNode-Classが含まれています。これらのクラスは、ListクラスおよびDictクラス内部で使用しているクラスで、コレクションクラス使用者からは見えなくなっています。そのため、ここではこれらのクラスの説明は省略します。
コレクションクラスの最上位のクラスです。すべてのコレクションクラスはこのクラスを継承しています。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.
集合の先頭の要素を取り出します。
なし
USAGE OBJECT REFERENCE : 集合の先頭の要素を返します。要素がない場合は、NULLを返します。
現在指している要素の次の要素を取り出します。
なし
USAGE OBJECT REFERENCE : 現在指している要素の次の要素を返します。次の要素がない場合は、NULLを返します。
現在指している要素の直前の要素を取り出します。
なし
USAGE OBJECT REFERENCE : 直前の要素を返します。直前の要素がない場合は、NULLを返します。
以下の特徴を持つ集合クラスです。
各要素はキーを持っています。
キーの値は一意です。
キーによる検索ができます。
キーにより順序付けされています。
このクラスは、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.
指定されたキーの要素を取り出します。
PIC X ANY LENGTH : 取り出す要素のキー値を指定します。
USAGE OBJECT REFERENCE : 指定されたキーの要素が見つかった場合はその要素を、見つからなかった場合はNULLを返します。
指定されたキーの要素を追加します。すでに同じキーを持つ要素が存在している場合は、新しい要素で置き換えます。
PIC X ANY LENGTH : 追加・置換する要素のキー値を指定します。
USAGE OBJECT REFERENCE : 追加・置換する要素を指定します。
なし
先頭の要素のキー値を求めます。
なし
PIC X ANY LENGTH : 先頭の要素のキー値を返します。要素数が0の場合または先頭の要素のキーが空白の場合、空白を返します。
最後の要素のキー値を求めます。
なし
PIC X ANY LENGTH : 最後の要素のキー値を返します。要素数が0の場合または最後の要素のキーが空白の場合、空白を返します。
以下の特徴を持つ集合クラスです。
要素間に順序があります。
同一の要素を複数含むことができます。
このクラスは、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.
指定された位置(インデックス)の要素を取り出します。
PIC 9(8) BINARY : 取り出す要素の位置を、先頭を1とした整数で指定します。
USAGE OBJECT REFERENCE : 取り出した要素を返します。指定した位置の要素がなかった場合は、NULLを返します。
指定された位置(インデックス)に要素を追加します。
PIC 9(8) BINARY : 要素を追加する位置を、先頭を1とした整数で指定します。なお、要素数+1より大きい数を指定した場合は、要素は追加されません。
USAGE OBJECT REFERENCE : 追加する要素を指定します。
PIC 9(8) BINARY : 要素を追加した位置を、先頭を1とした整数で返します。要素が追加されなかった場合は、0を返します。
指定された位置(インデックス)の要素を置き換えます。
PIC 9(8) BINARY : 置き換える要素の位置を、先頭を1とした整数で指定します。なお、要素数より大きい数を指定した場合は、置き換えられません。
USAGE OBJECT REFERENCE : 置き換える要素を指定します。
PIC 9(4) BINARY : 要素を置き換えた位置を、先頭を1とした整数で返します。要素が置き換えられなかった場合は、0を返します。
提供プログラム
Collect.cob(COBOLソースプログラム)
Dict.cob(COBOLソースプログラム)
List.cob(COBOLソースプログラム)
Bin_Tree.cob(COBOLソースプログラム)
D_Node.cob(COBOLソースプログラム)
L_Node.cob(COBOLソースプログラム)
Makefile(メイクファイル)
使用しているCOBOLの機能
使用しているオブジェクト指向の文/段落/定義