JP2000215063A - 単一継承によるサブクラスを含むオブジェクトデ―タ格納方法および記録媒体 - Google Patents

単一継承によるサブクラスを含むオブジェクトデ―タ格納方法および記録媒体

Info

Publication number
JP2000215063A
JP2000215063A JP11014144A JP1414499A JP2000215063A JP 2000215063 A JP2000215063 A JP 2000215063A JP 11014144 A JP11014144 A JP 11014144A JP 1414499 A JP1414499 A JP 1414499A JP 2000215063 A JP2000215063 A JP 2000215063A
Authority
JP
Japan
Prior art keywords
class
data
field
subclass
object data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11014144A
Other languages
English (en)
Inventor
Wataru Ishiguro
渉 石黒
Toshiyuki Miyamoto
外志幸 宮本
Yasuhiro Kusakai
康弘 草開
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PFU Ltd
Original Assignee
PFU Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PFU Ltd filed Critical PFU Ltd
Priority to JP11014144A priority Critical patent/JP2000215063A/ja
Publication of JP2000215063A publication Critical patent/JP2000215063A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 単一継承によるサブクラスを含むオブジェク
トデータをバイナリ化して記憶部に格納するとき、オブ
ジェクトデータを単純にクラス継承順に格納すると、そ
の後、特定クラスについて検索を行う場合に、その特定
クラスのサブクラスに属するオブジェクトも検索の対象
に含める必要があり、元となるクラスのオブジェクトと
サブクラスのオブジェクトとでデータ格納形式が異なる
ため、検索処理が複雑となり、時間が掛かるという問題
点があった。 【解決手段】 単一継承によるサブクラスを含むオブジ
ェクトデータを格納するとき、各クラスのオブジェクト
データを固定長データ域の後に可変長データ域を配置
し、かつ、固定長データ域はクラス継承順にデータを配
置し、かつオブジェクトデータが可変長属性ならば、そ
の実データを可変長データ域に配置し、実データの開始
バイト位置を固定長データ域に設定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、単一継承による
サブクラスを含むオブジェクトデータ格納方法および記
録媒体に関するものであり、特に、検索対象のクラスお
よびそのサブクラスのデータを単純かつ迅速に検索でき
るようにする。
【0002】
【従来の技術】オブジェクト指向言語では、オブジェク
トのデータ型を定義するクラスを拡張する方法として継
承が用いられる。このとき、元となるクラスを拡張して
得られたクラス、つまりサブクラスは、スーパークラス
と同様の扱いができる。このため、オブジェクトをDB
(Data Base)などに格納し、その後特定のクラスにつ
いて検索を行う場合、そのサブクラスに属するオブジェ
クトも検索の対象に含める必要がある。
【0003】そして、DBにクラスおよびそのサブクラ
スに属するオブジェクトが混在して格納される場合、サ
ブクラスでは元となるクラスの他に拡張されたデータが
保持されており、元となるクラスのオブジェクトとサブ
クラスのオブジェクトではデータの格納形式が異なり、
検索処理の手順が複雑となっている。
【0004】図5から図9を参照して、従来の単一継承
によるサブクラスを含むオブジェクトデータ格納方法お
よびそのオブジェクトデータの検索について説明する。
【0005】図5は従来の単一継承によるサブクラスを
含むオブジェクトデータ格納構成例図であり、52は単
一継承によるサブクラスを含むオブジェクトが記憶され
ている記憶部、51は記憶部52に記憶されているオブ
ジェクトの中から特定のクラスの検索を行う検索部であ
る。
【0006】また、記憶部52には、オブジェクトのク
ラスを定義するクラス定義情報521と、クラスのフィ
ールドを定義するフィールド定義情報522と、検索処
理などでフィールドの位置を算出するためにクラス定義
情報521とフィールド定義情報522から作成される
フィールドマップ523と、オブジェクトの格納位置が
設定されているオブジェクトインデックス524と、オ
ブジェクトデータが格納されているオブジェクトテーブ
ル525とが格納されている。
【0007】なお、クラス継承関係図に示されるように
クラスBがクラスAを継承し、クラスCとクラスDとが
クラスBを継承している場合、オブジェクトテーブル5
25内のバイナリ化されたオブジェクトデータ、つまり
バイナリデータにおいて、クラスBのバイナリデータは
クラスAのデータの後にクラスBのデータが配置され、
クラスCのバイナリデータはクラスA、クラスB、クラ
スCの順にデータが配置され、クラスDのバイナリデー
タはクラスA、クラスB、クラスDの順にデータが配置
されている。
【0008】図6に、クラス定義情報とフィールド定義
情報の一実施例の構成図を示す。例えば、プログラムに
より、図6(a)のようにPersonクラスがname、ageフ
ィールドで定義され、StudentクラスがPersonクラスを
継承し、parent、gakunenフィールドで定義され、Emplo
yeeクラスがPersonクラスを継承し、company、nyuusyab
iフィールドで定義されている場合、クラス定義情報は
図6(b)、フィールド定義情報は図6(c)のように
設定される。
【0009】なお、この例では、図6(b)のクラス定
義情報521はクラスID、クラス名、上位のクラスI
Dを指す上位IDで構成され、図6(c)のフィールド
定義情報522はフィールドID、クラスID、フィー
ルド名、フィールドの属性を示す属性IDで構成されて
いる。
【0010】図7に、フィールドマップの一実施例の構
成図を示す。フィールドマップ523は、プログラムの
処理でフィールドをアクセスするとき、フィールドの位
置を算出するために作成され、フィールド名、フィール
ドID、データ型、フィールドのバイト長とで構成され
ている。
【0011】図8に、オブジェクトインデックスとオブ
ジェクトテーブルの一実施例の構成図を示す。オブジェ
クトインデックス524は、オブジェクト毎に一意に割
り付けられるリポジトリIDと、そのオブジェクトのク
ラスIDと、そのオブジェクトが格納されているオブジ
ェクトテーブルの位置を指すオブジェクトテーブル位置
とで構成されている。
【0012】また、オブジェクトテーブル525は、オ
ブジェクトデータのバイト長、オブジェクトのリポジト
リIDとクラスID、オブジェクトデータとで構成さ
れ、オブジェクトデータはオブジェクトのクラス定義に
継承が定義されているならば、継承順にデータが配置さ
れている。なお、データ型がStringやDateなど可変長の
場合、実データの前にその実データのバイト長が格納さ
れている。
【0013】図9に、従来の検索部の一実施例の処理フ
ローチャートを示す。以下、このフローにしたがって動
作を説明する。なお、この例の検索処理は記憶部に格納
されているオブジェクトデータから、特定クラスの特定
フィールド値が指定した値と一致するものを検索する処
理を示している。
【0014】ステップS901:指定クラスに対応する
クラスIDをクラス定義情報より求める。
【0015】ステップS902:求めたクラスIDを上
位クラスとするサブクラスIDを、また、そのサブクラ
スにサブクラスがあればそれを含めたクラスIDを検索
対象のクラスIDとして設定する。
【0016】ステップS903:指定されたクラスのフ
ィールドマップをクラス定義情報とフィールド定義情報
から作成する。
【0017】ステップS904:オブジェクトインデッ
クスの先頭をポインタpiに設定する。
【0018】ステップS905:オブジェクトインデッ
クスが終わりかを判定する。終わりならば処理を終了
し、終わりでないならばステップS906に進む。
【0019】ステップS906:ポインタpiが指すオ
ブジェクトインデックスのクラスIDが検索対象のクラ
スIDかを判定する。検索対象ならばステップS907
に進み、検索対象でないならばステップS915に進
む。
【0020】ステップS907:フィールドマップから
指定されたフィールドの配置順番を獲得する。
【0021】ステップS908:配置カウンタ、フィー
ルドポインタを0に設定する。
【0022】ステップS909:配置カウンタが検索対
象フィールドの配置順番と同じかを判定する。同じなら
ばステップS912に進み、同じでないならばステップ
S910に進む。
【0023】ステップS910:フィールドマップにお
ける配置カウンタのフィールドの型が固定長ならばフィ
ールドポインタにバイト長を加算し、固定長でないなら
ばフィールドポインタにバイト長とデータ長とを加算す
る。
【0024】ステップS911:配置カウンタを1加算
する。そして、ステップS909に戻る。
【0025】ステップS912:オブジェクトテーブル
の先頭にステップS907からステップS911までの
処理により求めたフィールドポインタの値を加算し、検
索対象のフィールド位置を算出する。
【0026】ステップS913:検索対象のフィールド
値が検索条件と同じかを判定する。同じならばステップ
S914に進み、同じでないならばステップS915に
進む。
【0027】ステップS914:検索条件と一致したオ
ブジェクトデータを一時記憶部に配列形式にして格納す
る。
【0028】ステップS915:次のオブジェクトを指
すようにポインタpiを更新する。そして、ステップS
905に戻る。
【0029】この処理において、オブジェクトデータが
図8のオブジェクトテーブル525のように格納されて
いる場合、検索対象のフィールドの位置を算出するため
ステップS907からステップS911までに処理を行
わなければならず、検索対象のオブジェクトが多いと検
索処理に多大な時間が掛かる。
【0030】
【発明が解決しようとする課題】このように図5に示す
従来技術では、クラスおよびそのサブクラスに属するオ
ブジェクトが混在して格納されている場合で、かつこれ
らのオブジェクト内の特定クラスについて検索を行うと
き、元となるクラスのオブジェクトとサブクラスのオブ
ジェクトとでデータ格納形式が異なるため、検索処理が
複雑となり、時間が掛かるという問題点があった。
【0031】
【課題を解決するための手段】この発明は上記のような
問題点を考慮してなされたもので、単一継承によるサブ
クラスを含むオブジェクトデータ格納方法において、各
クラスのオブジェクトデータを固定長データ域の後に可
変長データ域を配置するようにし、かつ、固定長データ
域にはスーパークラスの後にサブクラスのオブジェクト
データを継承順に配置し、かつオブジェクトデータが可
変長属性のデータならば、その実データを可変長データ
域に配置し、実データの開始バイト位置を固定長データ
域に設定することにより、検索対象のクラスおよびその
サブクラスのデータを単純かつ迅速に検索することがで
きる。
【0032】
【発明の実施の形態】単一継承によるサブクラスを含む
オブジェクトデータ格納方法において、各クラスのオブ
ジェクトデータを固定長データ域の後に可変長データ域
を配置するようにし、かつ、固定長データ域にはスーパ
ークラスの後にサブクラスのオブジェクトデータを継承
順に配置し、かつオブジェクトデータが可変長属性のデ
ータならば、その実データを可変長データ域に配置し、
実データの開始バイト位置を固定長データ域に設定す
る。これにより、格納したオブジェクトデータの特定ク
ラスを検索する場合、検索対象のクラスおよびそのサブ
クラスのデータを単純かつ迅速に検索することができ
る。
【0033】また、単一継承によるサブクラスを含むオ
ブジェクトデータを格納するプログラムを記録した記録
媒体において、各クラスのオブジェクトデータを固定長
データ域の後に可変長データ域を配置するようにし、か
つ、固定長データ域にはスーパークラスの後にサブクラ
スのオブジェクトデータを継承順に配置し、かつオブジ
ェクトデータが可変長属性のデータならば、その実デー
タを可変長データ域に配置し、実データの開始バイト位
置を固定長データ域に設定するプログラムをコンピュー
タで実行することにより、格納したオブジェクトデータ
の特定クラスを検索する場合、検索対象のクラスおよび
そのサブクラスのデータを単純かつ迅速に検索すること
ができる。
【0034】
【実施例】図1から図4を参照して、本発明の単一継承
によるサブクラスを含むオブジェクトデータ格納方法お
よびそのオブジェクトデータの検索について説明する。
【0035】図1は本発明の単一継承によるサブクラス
を含むオブジェクトデータ格納構成図であり、2は単一
継承によるサブクラスを含むオブジェクトが記憶されて
いる記憶部、1は記憶部2に記憶されているオブジェク
トの中から特定のクラスの検索を行う検索部である。
【0036】また、記憶部2には、オブジェクトのクラ
スを定義するクラス定義情報21と、クラスのフィール
ドを定義するフィールド定義情報22と、検索処理など
でフィールドの位置を算出するためにクラス定義情報2
1とフィールド定義情報22から作成されるフィールド
マップ23と、オブジェクトの格納位置が設定されてい
るオブジェクトインデックス24と、オブジェクトデー
タが格納されているオブジェクトテーブル25とが格納
されている。
【0037】なお、クラス継承関係図に示されるように
クラスBがクラスAを継承し、クラスCとクラスDとが
クラスBを継承している場合、オブジェクトテーブル2
5内のバイナリ化されたオブジェクトデータ、つまりバ
イナリデータにおいて、固定長データの後に可変長デー
タが配置されるように格納され、例えばクラスBのバイ
ナリデータはクラスAの固定長データの後にクラスBの
固定長データが配置され、続いてクラスA、クラスBの
可変長データが配置される。また、クラスCのバイナリ
データはクラスA、クラスB、クラスCの順に固定長デ
ータが配置され、続いてクラスA、クラスB、クラスC
の可変長データが配置される。そして、クラスDのバイ
ナリデータはクラスA、クラスB、クラスDの順に固定
長データが配置され、続いてクラスA、クラスB、クラ
スDの可変長データが配置される。
【0038】なお、以降の説明で使用される各クラスの
定義は、図6(a)クラス定義と同じとする。したがっ
て、クラス定義情報21とフィールド定義情報22の構
成は、図6のクラス定義情報521とフィールド定義情
報522と同じである。
【0039】図2に、フィールドマップの一実施例の構
成図を示す。フィールドマップ23は、プログラム処理
でフィールドをアクセスするとき、フィールドの位置を
算出するために作成され、フィールド名、フィールドI
D、データ型、フィールドのバイト長、オブジェクトデ
ータにおけるフィールドの開始位置を示す開始バイト位
置とで構成されている。
【0040】図3に、オブジェクトインデックスとオブ
ジェクトテーブルの一実施例の構成図を示す。オブジェ
クトインデックス24は、オブジェクト毎に一意に割り
付けられるリポジトリIDと、そのオブジェクトのクラ
スIDと、そのオブジェクトが格納されているオブジェ
クトテーブルの位置を指すオブジェクトテーブル位置と
で構成されている。
【0041】また、オブジェクトテーブル25は、オブ
ジェクトデータのバイト長、オブジェクトのリポジトリ
IDとクラスID、オブジェクトデータとで構成され、
オブジェクトデータは固定長データ域の後に可変長デー
タ域が配置され、かつ固定長データ域はクラス定義の継
承順にデータが配置されている。また、オブジェクトデ
ータがStringやDateなど可変長属性のデータならば、そ
の実データを可変長データ域に配置し、実データの開始
バイト位置を固定長データ域に設定している。
【0042】図4に、検索部の一実施例の処理フローチ
ャートを示す。以下、このフローにしたがって動作を説
明する。なお、この例の検索処理は記憶部に格納されて
いるオブジェクトデータから、特定クラスの特定フィー
ルド値が指定した値と一致するものを検索する処理を示
している。
【0043】ステップS401:指定クラスに対応する
クラスIDをクラス定義情報より求める。
【0044】ステップS402:求めたクラスIDを上
位クラスとするサブクラスIDを、また、そのサブクラ
スにサブクラスがあればそれを含めたクラスIDを検索
対象のクラスIDとして設定する。
【0045】ステップS403:指定されたクラスのフ
ィールドマップをクラス定義情報とフィールド定義情報
から作成する。
【0046】ステップS404:フィールドマップから
指定されたフィールドの開始バイト位置を獲得する。
【0047】ステップS405:オブジェクトインデッ
クスの先頭をポインタpiに設定する。
【0048】ステップS406:オブジェクトインデッ
クスが終わりかを判定する。終わりならば処理を終了
し、終わりでないならばステップS407に進む。
【0049】ステップS407:ポインタpiが指すオ
ブジェクトインデックスのクラスIDが検索対象のクラ
スIDかを判定する。検索対象ならばステップS408
に進み、検索対象でないならばステップS411に進
む。
【0050】ステップS408:オブジェクトテーブル
の先頭にステップS404で求めたフィールドの開始バ
イト位置を加算し、検索対象のフィールド位置を算出す
る。また、フィールドのデータ型がStringやDateなどの
ように可変長属性ならばフィールド位置には実データの
開始バイト位置が設定されているので、算出したフィー
ルド位置に、さらにフィールド値、つまり実データの開
始バイト位置を加算して、検索対象のフィールド位置を
算出する。
【0051】ステップS409:検索対象のフィールド
値が検索条件と同じかを判定する。同じならばステップ
S410に進み、同じでないならばステップS411に
進む。
【0052】ステップS410:検索条件と一致したオ
ブジェクトデータを一時記憶部に配列形式にして格納す
る。
【0053】ステップS411:次のオブジェクトを指
すようにポインタpiを更新する。そして、ステップS
406に戻る。
【0054】このようにオブジェクトデータが図3のオ
ブジェクトテーブル25のように格納されている場合、
検索対象のフィールドの位置は容易に算出することがで
き、検索処理の時間を大幅に短くすることができる。
【0055】
【発明の効果】この発明は、上記に説明したような形態
で実施され、以下の効果がある。
【0056】単一継承によるサブクラスを含むオブジェ
クトデータを格納するDBなどの検索において、検索対
象のクラスおよびそのサブクラスのデータを単純かつ迅
速に検索することが可能となる。
【図面の簡単な説明】
【図1】 本発明の単一継承によるサブクラスを含むオ
ブジェクトデータ格納構成図である。
【図2】 フィールドマップの一実施例の構成図であ
る。
【図3】 オブジェクトインデックスとオブジェクトテ
ーブルの一実施例の構成図である。
【図4】 検索部の一実施例の処理フローチャートであ
る。
【図5】 従来の単一継承によるサブクラスを含むオブ
ジェクトデータ格納構成例図である。
【図6】 クラス定義情報とフィールド定義情報の一実
施例の構成図である。
【図7】 フィールドマップの一実施例の構成図であ
る。
【図8】 オブジェクトインデックスとオブジェクトテ
ーブルの一実施例の構成図である。
【図9】 従来の検索部の一実施例の処理フローチャー
トである。
【符号の説明】
1 検索部 2 記憶部 21 クラス定義情報 22 フィールド定義情報 23 フィールドマップ 24 オブジェクトインデックス 25 オブジェクトテーブル
フロントページの続き (72)発明者 草開 康弘 石川県河北郡宇ノ気町字宇野気ヌ98番地の 2 ピーエフユーソフトウェアラボラトリ 株式会社内 Fターム(参考) 5B082 GA03 GA07

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 単一継承によるサブクラスを含むオブジ
    ェクトデータ格納方法において、 各クラスのオブジェクトデータを固定長データ域の後に
    可変長データ域を配置するようにし、かつ、固定長デー
    タ域にはスーパークラスの後にサブクラスのオブジェク
    トデータを継承順に配置し、かつオブジェクトデータが
    可変長属性のデータならば、その実データを可変長デー
    タ域に配置し、実データの開始バイト位置を固定長デー
    タ域に設定することを特徴とするオブジェクトデータ格
    納方法。
  2. 【請求項2】 単一継承によるサブクラスを含むオブジ
    ェクトデータを格納するプログラムを記録した記録媒体
    において、 各クラスのオブジェクトデータを固定長データ域の後に
    可変長データ域を配置するようにし、かつ、固定長デー
    タ域にはスーパークラスの後にサブクラスのオブジェク
    トデータを継承順に配置し、かつオブジェクトデータが
    可変長属性のデータならば、その実データを可変長デー
    タ域に配置し、実データの開始バイト位置を固定長デー
    タ域に設定するためのプログラムを記録したコンピュー
    タ読取り可能な記録媒体。
JP11014144A 1999-01-22 1999-01-22 単一継承によるサブクラスを含むオブジェクトデ―タ格納方法および記録媒体 Pending JP2000215063A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11014144A JP2000215063A (ja) 1999-01-22 1999-01-22 単一継承によるサブクラスを含むオブジェクトデ―タ格納方法および記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11014144A JP2000215063A (ja) 1999-01-22 1999-01-22 単一継承によるサブクラスを含むオブジェクトデ―タ格納方法および記録媒体

Publications (1)

Publication Number Publication Date
JP2000215063A true JP2000215063A (ja) 2000-08-04

Family

ID=11852968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11014144A Pending JP2000215063A (ja) 1999-01-22 1999-01-22 単一継承によるサブクラスを含むオブジェクトデ―タ格納方法および記録媒体

Country Status (1)

Country Link
JP (1) JP2000215063A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2006041104A1 (ja) * 2004-10-13 2008-05-15 ニッセイ情報テクノロジー株式会社 データ管理装置およびその方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2006041104A1 (ja) * 2004-10-13 2008-05-15 ニッセイ情報テクノロジー株式会社 データ管理装置およびその方法
JP2010015592A (ja) * 2004-10-13 2010-01-21 Nissay Information Technology Co Ltd データ管理装置およびその方法
JP2010015593A (ja) * 2004-10-13 2010-01-21 Nissay Information Technology Co Ltd データ管理装置およびその方法
JP4516084B2 (ja) * 2004-10-13 2010-08-04 ニッセイ情報テクノロジー株式会社 データ管理装置およびその方法
US8554582B2 (en) 2004-10-13 2013-10-08 Nissay Information Technology Co., Ltd. Data management apparatus and method thereof
US8694344B2 (en) 2004-10-13 2014-04-08 Nissay Information Technology Co., Ltd. Data management apparatus and method thereof

Similar Documents

Publication Publication Date Title
US5499358A (en) Method for storing a database in extended attributes of a file system
US5355476A (en) File update apparatus for generating a matrix representing a subset of files and the update correspondence between directories and files
US6925462B2 (en) Database management system, and query method and query execution program in the database management system
US20050038804A1 (en) Database system
US20040267817A1 (en) Efficiently storing indented threads in a threaded discussion application
JPH02501516A (ja) 単一の、単純な原素を用いたデータ構造を有するデータ処理システム
CN113568995A (zh) 基于检索条件的动态瓦片地图制作方法及瓦片地图系统
US20040078355A1 (en) Information management system
JP2000076105A (ja) タイムバ―ジョンデ―タ記憶装置
JP2000215063A (ja) 単一継承によるサブクラスを含むオブジェクトデ―タ格納方法および記録媒体
CN114840551A (zh) 数据库表的处理方法及装置、电子设备、存储介质
JPH06215037A (ja) インデックスの自動更新装置
JP2002202973A (ja) 構造化文書管理装置
JPH096653A (ja) データベースのチェックを行う情報処理装置
JP2940567B2 (ja) 画像データベースシステム
JP3337717B2 (ja) データベース処理装置およびデータベース処理方法
JPH0785079A (ja) 情報ファイルの管理装置
JP2785966B2 (ja) 外部キー動的解決処理方法
JP2000132439A (ja) パーソナルコンピュータのハードディスクに記憶されたファイルを検索する検索システム
JPH05204734A (ja) 階層構造をなすデータのデータ名命名方法
JP2001075795A (ja) プログラムとファイル項目の管理装置、プログラムとファイル項目の管理方法、プログラムを記録した記録媒体
JPS63276124A (ja) 研究情報処理装置
JPH08241239A (ja) データベース管理方法およびシステム
JPH02213956A (ja) フアイル管理方式
JPH07319874A (ja) 文書処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050607

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051101