(57)【要約】【課題】バイナリレコードファイル内に格納されている複数のデータオブジェクトに対して効率的にアクセスできる携帯可能電子装置としてのＩＣカードを提供する。【解決手段】ＩＣカード１は、外部装置としてのＩＣカード処理装置２とのデータ通信を行う通信インターフェースと複数のデータオブジェクトが順に並べられたレコードファイルを記憶するデータメモリとを有する。ＩＣカード１のＲＡＭ２３に設けられたカンレトポインタ設定テーブル２３ａは、上記データメモリに記憶されているレコードファイルのうちアクセス対象となるレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルである。ＩＣカード処理装置２から特定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、ＩＣカード１の制御部２１は、前記カンレトポインタ設定テーブル２３ａに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスする。【選択図】図１
2010211516.tif 000002
【特許請求の範囲】
【請求項１】
外部装置との通信を行う通信インターフェースと、
複数のデータオブジェクトを有するレコードファイルを記憶するデータメモリと、
前記データメモリに記憶されているアクセス対象のレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルと、
外部装置から指定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、前記管理テーブルに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスするアクセス制御部と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
さらに、アクセス対象のレコードファイルが選択された場合、当該レコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルを生成するテーブル生成部を有する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
さらに、外部装置から受信したコマンドに対応する処理内容に応じて管理テーブルの記憶内容を更新するテーブル更新部を有する、
ことを特徴とする前記請求項１又は２の何れかに記載の携帯可能電子装置。
【請求項４】
前記管理テーブルは、カレント状態のデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態であると特定したデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項５】
前記管理テーブルは、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態となっているデータオブジェクトの次のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの次のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項６】
さらに、前記管理テーブルにおいてカレント状態となっているデータオブジェクトを示す情報を前記受信したコマンドで指定された次のデータオブジェクトがカレント状態であることを示す情報に更新するテーブル更新部を有する、
ことを特徴とする前記請求項５に記載の携帯可能電子装置。
【請求項７】
前記管理テーブルは、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態となっているデータオブジェクトの直前のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの直前のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項８】
さらに、前記管理テーブルにおいてカレント状態となっているデータオブジェクトを示す情報を前記受信したコマンドで指定された直前のデータオブジェクトがカレント状態であることを示す情報に更新するテーブル更新部を有する、
ことを特徴とする前記請求項７に記載の携帯可能電子装置。
【請求項９】
複数のデータオブジェクトを有するレコードファイルをデータメモリに記憶しておき、
アクセス対象となるレコードファイルにおける複数のデータオブジェクトに対する管理情報をテーブルに記憶し、
外部装置から特定のデータオブジェクトを指定してアクセスを要求するコマンドが与えられた場合、前記テーブルに記憶されている各データオブジェクトの管理情報に基づいて当該コマンドで指定されたデータオブジェクトへのアクセスを制御する、
ことを特徴とする携帯可能電子装置におけるアクセス制御方法。
【請求項１０】
さらに、アクセス対象のレコードファイルが選択された場合、選択されたレコードファイルにおける各データオブジェクトの管理情報を記憶するテーブルを生成する、
ことを特徴とする前記請求項９に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項１１】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御では、カレント状態のデータオブジェクトを指定するコマンドを受信した場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態であると特定したデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項９に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項１２】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御では、カレント状態となっているデータオブジェクトの次のデータオブジェクトを指定するコマンドが与えられた場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの次のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項９に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項１３】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御は、カレント状態となっているデータオブジェクトの直前のデータオブジェクトを指定するコマンドを受信した場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの直前のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項９に記載の携帯可能電子装置におけるアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、携帯可能電子装置してのＩＣカードにおいて、ファイル内に格納されているデータオブジェクトへのアクセス制御に関する。
【背景技術】
【０００２】
従来、ＩＣカードでは、複数のデータオブジェクト（レコードデータ）を格納するバイナリレコードファイルと呼ばれるファイル形式がある。バイナリレコードファイル内の各データオブジェクトには、当該ファイルの先頭からソートすることによりアクセスが可能となっている。言い換えれば、従来のＩＣカードでは、バイナリレコードファイル内の各データオブジェクトに対して直接的にアクセスすることができない。
【０００３】
近年では、ＩＣカードの運用形態の多様化に伴って取り扱うデータも多様化してきている。ＩＣカードで取り扱うデータが多様化すると、ＩＣカード内では、データの種類あるいはデータ構造が複雑になってくる。たとえば、上記バイナリレコードファイルには、大量のデータが複数のデータオブジェクトとして記憶されることも多くなってきている。しかしながら、上述したように、従来のＩＣカードでは、バイナリレコードファイル内の各データオブジェクトを当該ファイルの先頭からソートする必要がある。このようなアクセス制御では、バイナリレコードファイル内のデータオブジェクトが多様化すると、特定のデータオブジェクトに対する処理に多くの時間がかかってしまう。このため、バイナリレコードファイル内の各データオブジェクトに対して効率良くアクセスできるＩＣカードが要望されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第２６９５８５７号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この発明の一形態は、ファイル内に格納されている複数のデータオブジェクトに対して効率的にアクセスできる携帯可能電子装置および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明の一形態としての携帯可能電子装置は、外部装置との通信を行う通信インターフェースと、複数のデータオブジェクトを有するレコードファイルを記憶するデータメモリと、前記データメモリに記憶されているアクセス対象のレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルと、外部装置から指定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、前記管理テーブルに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスするアクセス制御部とを有する。
【０００７】
この発明の一形態としての携帯可能電子装置におけるアクセス制御方法は、複数のデータオブジェクトを有するレコードファイルをデータメモリに記憶しておき、アクセス対象となるレコードファイルにおける複数のデータオブジェクトに対する管理情報をテーブルに記憶し、外部装置から特定のデータオブジェクトを指定してアクセスを要求するコマンドが与えられた場合、前記テーブルに記憶されている各データオブジェクトの管理情報に基づいて当該コマンドで指定されたデータオブジェクトへのアクセスを制御する。
【発明の効果】
【０００８】
この発明の一形態によれば、ファイル内に格納されている複数のデータオブジェクトに対して効率的にアクセスできる携帯可能電子装置および携帯可能電子装置の制御方法を提供できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、ＩＣカードおよびＩＣカード処理装置の構成例を概略的に示すブロック図である。
【図２】図２は、ＩＣカードのハードウエア構成例を概略的に示すブロック図である。
【図３】図３は、データメモリに格納されるファイルの構成例を示す模式的に示す図である。
【図４】図４は、複数のデータオブジェクトを格納するレコードファイルのメモリ領域におけるデータ構造を示す図である。
【図５】図５は、複数のデータオブジェクトを格納するレコードファイルのメモリ領域におけるデータ構造を示す図である。
【図６】図６は、カレントポインタ設定テーブルの構成例である。
【図７】図７は、カレントポインタ設定テーブルの第２の構成例を示す図である。
【図８】図８は、カレントポインタ設定テーブルの生成処理の例を説明するためのフローチャートである。
【図９】図９は、カレント指定のリードコマンド又はライトコマンドに対する処理を説明するためのフローチャートである。
【図１０】図１０は、カレント指定のライトコマンドによる処理結果の例を示す図である。
【図１１】図１１は、ネクスト指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
【図１２】図１２は、ネクスト指定のコマンドを処理した後のカレントポインタ設定テーブルの状態を示す図である。
【図１３】図１３は、ネクスト指定のライトコマンドによる処理結果の例を示す図である。
【図１４】図１４は、プリビアス指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
【図１５】図１５は、プリビアス指定のコマンドを処理した後のカレントポインタ設定テーブルの状態を示している。
【図１６】図１６は、プリビアス指定のライトコマンドによる処理結果の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、この発明の実施の形態について図面を参照して詳細に説明する。  
図１は、本実施の形態に係るＩＣカード（携帯可能電子装置）１、および、ＩＣカード１との通信機能を有する外部装置としてのＩＣカード処理装置２の構成例を概略的に示すブロック図である。  
上記ＩＣカード処理装置２は、図１に示すように、端末装置１１、ディスプレイ１２、キーボード１３、テンキー１４、及び、カードリーダライタ１５などを有している。
【００１１】
上記端末装置１１は、ＩＣカード処理装置２全体の動作を制御するものである。上記端末装置１１は、ＣＰＵ、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記端末装置１１は、パーソナルコンピュータ（ＰＣ）により構成される。  
上記端末装置１１は、上記カードリーダライタ１５によりＩＣカード１へコマンドを送信する機能、ＩＣカード１から受信したデータを基に種々の処理を行う機能などを有している。たとえば、上記端末装置１１は、カードリーダライタ１５を介してＩＣカード１にデータの書き込みコマンド（ライトコマンド）を送信することによりＩＣカード１内のデータメモリにデータを書き込む制御を行う。また、上記端末装置１１は、ＩＣカード１に読み取りコマンド（リードコマンド）を送信することによりＩＣカード１のデータメモリからデータを読み出す制御を行う。
【００１２】
上記ディスプレイ１２は、上記端末装置１１の制御により種々の情報を表示する表示装置である。上記キーボード１３は、当該ＩＣカード処理装置２の操作員が操作する操作部として機能し、操作員により種々の操作指示あるいはデータなどが入力される。上記テンキー１４は、使用者ＩＤあるいはパスワードなどの情報を入力する為の入力部として機能する。
【００１３】
上記カードリーダライタ１５は、上記ＩＣカード１との通信を行うためのインターフェース装置である。上記カードリーダライタ１５は、上記ＩＣカード１の通信方式に応じたインターフェースにより構成される。たとえば、上記ＩＣカード１が接触型のＩＣカードである場合、上記カードリーダライタ１５は、ＩＣカード１のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。
【００１４】
また、上記ＩＣカード１が非接触型のＩＣカードである場合、上記カードリーダライタ１５は、ＩＣカード１との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ１５では、上記ＩＣカード１に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ１５は、上記端末装置１１による制御に基づいて上記ＩＣカード１の活性化（起動）、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【００１５】
次に、上記ＩＣカード１のハードウエア構成例について説明する。  
上記ＩＣカード１は、上記カードリーダライタ１５を介してＩＣカード処理装置２などの上位装置から電力供給を受けた際、活性化される（動作可能な状態になる）。例えば、上記ＩＣカード１が接触型の通信機能を具備している場合、つまり、ＩＣカード１が接触型のＩＣカードで構成される場合、上記ＩＣカード１は、通信インターフェースとしてのコンタクト部を介してカードリーダライタ１５からの動作電源及び動作クロックの供給を受けて活性化される。
【００１６】
また、上記ＩＣカード１が非接触型の通信機能を具備している場合、つまり、上記ＩＣカード１が非接触式のＩＣカードで構成される場合、上記ＩＣカード１は、通信インターフェースとしてのアンテナ及び変復調回路などを介してカードリーダライタ１５からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化する。
【００１７】
図２は、本実施の形態に係るＩＣカード１のハードウエア構成例を概略的に示すブロック図である。  
上記ＩＣカード１は、本体Ｂを構成する筐体内にモジュールＭが内蔵されている。上記モジュールＭは、１つまたは複数のＩＣチップＣと通信用の外部インターフェース（通信部）とが接続された状態で一体的に形成される。上記モジュールＭは、ＩＣカード１の本体Ｂ内に埋設される。上記ＩＣカード１のモジュールＭは、図２に示すように、ＣＰＵ（制御素子）２１、データメモリ２２、ＲＡＭ（ワーキングメモリ）２３、ＲＯＭ（プログラムメモリ）２４、および、通信部２５などを有してしている。
【００１８】
上記制御部２１は、当該ＩＣカード１全体の制御を司るものである。上記制御部２１は、上記プログラムメモリ２４あるいは上記データメモリ２２に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、上記制御部２１は、オペレーティングシステムのプログラムを実行することにより、当該ＩＣカード１の基本的な動作制御を行う。また、上記制御部２１は、当該ＩＣカード１の利用目的に応じたアプリケーションプログラムを実行することにより、当該ＩＣカード１の運用形態に応じた種々の動作制御を行う。
【００１９】
上記データメモリ２２は、書換え可能な不揮発性メモリである。上記データメモリ２２は、例えば、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read-Only  Memory）あるいはフラッシュＲＯＭなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記データメモリ２２には、当該ＩＣカード１の運用用途に応じた制御プログラムあるいは種々のデータが書込まれる。上記データメモリ２２には、当該ＩＣカード１の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。上記データメモリ２２に格納されるファイルの例については、後述する。
【００２０】
上記ＲＡＭ２３は、ワーキングメモリとして機能する揮発性のメモリである。上記ＲＡＭ２３は、処理中のデータなどを一時的に保管するバッファとして機能する。たとえば、上記ＲＡＭ２３には、各レコードファイルにおいてカレント状態となっているオブジェクトを示す情報を格納する管理テーブル（カレントポインタ設定テーブル）２３ａなどが設けられる。  
上記ＲＯＭ２４は、プログラムメモリとして機能するマスクＲＯＭなどの不揮発性メモリである。上記ＲＯＭ２４は、予め制御用のプログラムあるいは制御データなどを記憶する。上記ＲＯＭ２４には、当該ＩＣカードの製造段階で制御プログラムあるいは制御データなどが記憶された状態でＩＣカード１内に組み込まれる。上記ＲＯＭ２４に記憶されている制御プログラムあるいは制御データは、当該ＩＣカードの基本的な動作を司るものであり、予め当該ＩＣカード１の仕様に応じて組み込まれるものである。
【００２１】
上記通信部２５は、上記リーダライタ１５を介してＩＣカード処理装置２と通信するためのインターフェースである。当該ＩＣカード１が接触型のＩＣカードとして実現される場合、上記通信部２５は、上記リーダライタ１５と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ＩＣカード１が非接触型のＩＣカードとして実現される場合、上記通信部２５は、上記リーダライタ１５との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【００２２】
次に、上記データメモリ２２に格納されるファイルについて説明する。  
図３は、上記データメモリ２２に格納されるファイルの構成例を示す模式的に示す図である。  
図３は、ＩＣカードなどの携帯可能電子装置におけるファイル構成例を示している。図３に示す例は、ＩＣカードなどの携帯可能電子装置に関する規格であるＩＳＯ／ＩＥＣ７８１６−４に定義されるファイル構成例である。図３に示すファイル構成例では、種々のファイルをツリー構造で管理している。
【００２３】
図３に示すように、上記データメモリ２２には、ＭＦ（Master File）、ＤＦ(Dedicated File)およびＥＦ(Elementary File)などからなる階層構造を有する複数のファイルが定義される。図３に示す構成例では、最上階層のマスターファイル（ＭＦ）３１の次の階層には、第１ＤＦ（ＤＦ１）３２および第２ＤＦ（ＤＦ２）３３が存在している。上記第１ＤＦの次の階層には、第１ＥＦ（ＥＦＩＤ：０００１）３４、第２ＥＦ（ＥＦＩＤ：０００２）３５、および、第３ＥＦ（ＥＦＩＤ：０００３）３６が存在している。
【００２４】
上記ＭＦ３１は、上記データメモリ２２に格納されている各種ファイルに対するファイル構成において、最上位に位置する。上記各ＤＦ（ＤＦ１、ＤＦ２）３２、３３は、たとえば、アプリケーションに対応して設けられる。この場合、上記各ＤＦ３２、３３は、各アプリケーションに相当するフォルダとして機能する。上記各ＥＦ３４、３５、３６は、実データを格納するレコードファイル（データファイル）である。すなわち、ＤＦ１の配下の各ＥＦ３４、３５、３６は、ＤＦ１が対応するアプリケーションで使用されるデータを格納する。なお、ＥＦは、ＭＦ３１直下の階層に設けることも可能である。また、後述の説明では、上記第１ＥＦ３４および第２ＥＦ３５は、複数のデータオブジェクトを格納するバイナリレコードファイルであるものと想定する。
【００２５】
次に、レコードファイル（ＥＦ）の構成について説明する。  
図４および図５は、データメモリ２２のメモリ領域におけるレコードファイルのデータ構造を示す図である。図４は、第１ＥＦ（ＥＦＩＤ：０００１）３４のデータ構造を示している。図５は、第２ＥＦ（ＥＦＩＤ：０００２）３５のデータ構造を示している。  
図４あるいは図５に示すレコードファイルは、複数のデータオブジェクトにより構成されている。各データオブジェクトは、識別子（タグ；Tag）、データ長（レングス；Length）、および、データ値（バリュー；Value）からなる。このようなデータ構造のデータオブジェクトは、たとえば、ＴＬＶオブジェクトと呼ばれる。ＴＬＶオブジェクトは、識別子「タグ」のデータと、データ長「レングス」のデータと、データ値「バリュー」のデータとが順に連結されたデータ構造となっている。
【００２６】
このようなＴＬＶオブジェクトは、上記「識別子」のデータサイズと「データ長」のデータサイズとが決まっていれば、「データ長」で示される「データ値」のデータサイズにより全体のデータサイズが判別される。このため、複数のＴＬＶオブジェクトは、連続してレコードファイルの記憶領域に格納できる。図４あるいは図５に示すＴＬＶオブジェクトを格納するレコードファイルでは、当該レコードファイルのデータ領域の先頭から各データオブジェクトの識別子、データ長およびデータ値が順に配置される。従って、複数のデータオブジェクトが格納されたレコードファイルであっても、当該ファイルの先頭から順に各データオブジェクトの「識別子」および「データ長」を確認していくことにより、特定のデータオブジェクトが検出できるようになっている。一般に、ＩＣカードに用いられるレコードファイルは、上述したＩＳＯなどの規格により、「識別子」および「データ長」の長さ（サイズ）が決まっている。このため、「データ長」で示される「データ値」の長さ（サイズ）により、オブジェクト全体の長さ（サイズ）も判別できるようになっている。
【００２７】
図４及び図５に示す構成例では、レコードファイルに複数のＴＬＶオブジェクトが格納されている状態を示している。  
図４及び図５において、各データオブジェクトの識別子の記憶領域は、矩形で数値を囲んだ領域である。各データオブジェクトのデータ長の記憶領域は、数値に下線を付した領域である。各データオブジェクトのデータ値の記憶領域は、矩形も下線も付与されていない数値が記述された領域（識別子およびデータ長以外の領域）である。ただし、図４及び図５において左端の１列は、メモリ上におけるアドレス（各行の先頭アドレス）の例を示すものである。なお、図４及び図５に示す数値は、何れも１６進数であるものとする。
【００２８】
たとえば、図４に示すレコードファイルにおいて、当該ファイル内における先頭のＴＬＶオブジェクト（第１オブジェクト）の識別子は、「０１」である。この第１オブジェクトのデータ長は、「０１」である。従って、第１オブジェクトのデータ長としての「０１」に続く１バイト分の領域には、第１オブジェクトのデータ値としての「ＡＡ」が格納されている。さらに、第１オブジェクトのデータ値「ＡＡ」の次には、次のＴＬＶオブジェクト（第２オブジェクト）の識別子「０２」が格納され、識別子「０２」の次には、第２オブジェクトのデータ長「０３」が格納されている。第２オブジェクトのデータ長としての「０３」に続く３バイト分の領域には、第２オブジェクトのデータ値として「ＢＢ」、「ＢＢ」、「ＢＢ」が格納されている。
【００２９】
図４及び図５に示すようなデータ構造のレコードファイルでは、上述したように、先頭から順に各データオブジェクトの識別子及びデータ長を確認することにより、特定のデータオブジェクトにアクセスすることが可能である。言い換えれば、図４あるいは図５に示すようなレコードファイルでは、特定のデータオブジェクトに対して直接的にアクセスするために、先頭から順に各データオブジェクトを検索する必要がある。このため、本ＩＣカード１では、レコードファイル内の各データオブジェクトに対して直接的にアクセスするための情報を保持する。また、本ＩＣカード１では、レコードファイル内の１つのデータオブジェクトをカレント状態に設定することができるものとする。
【００３０】
次に、レコードファイルにおけるデータオブジェクトの管理について説明する。  
本ＩＣカード１では、レコードファイルにおけるデータオブジェクトを、管理テーブルとしてのカレントポインタ設定テーブル２３ａにより管理する。また、上記カレントポインタ設定テーブル２３ａは、データオブジェクトに対するカレント状態を示す情報でもある。図２に示す構成例では、カレントポインタ設定テーブル２３ａは、ＲＡＭ２３内に設けられる。なお、カレントポインタ設定テーブル２３ａは、制御部２１により書き込み或いは書換えが可能な記憶領域に存在すれば良い。たとえば、カレントポインタ設定テーブル２３ａは、データメモリ２２内に設けるようにしても良い。
【００３１】
上記カレントポインタ設定テーブル２３ａは、制御部２１により生成および更新される。たとえば、制御部２１は、カレントファイルとして選択されたレコードファイルについて、カレントポインタ設定テーブル２３ａを生成する。この場合、カレントポインタ設定テーブル２３ａは、ＩＣカード１の起動時あるいは外部装置からのコマンドで特定のレコードファイルがカレントファイルとして選択された場合に、生成するようにすれば良い。また、上記データメモリ２２は、各レコードファイルに対するカレントポインタ設定テーブル２３ａを記憶しておくようにしても良い。この場合、制御部２１は、種々の処理内容に応じてカレントポインタ設定テーブル２３ａを適宜更新する。
【００３２】
図６は、レコードファイルとしての第１ＥＦ（ＥＦＩＤ：０００１）３４に対するカレントポインタ設定テーブル２３ａの構成例である。  
図６に示す構成例では、カレントポインタ設定テーブル２３ａは、図４に示す第１ＥＦ３４における全データオブジェクトの管理情報を格納している。すなわち、図６に示すカレントポインタ設定テーブル２３ａでは、図４に示す第１ＥＦ３４における各データオブジェクトの管理情報として、ファイル識別情報（ＥＦＩＤ）、識別子（タグ）情報、アドレス（Ａｄｄｒｅｓｓ）情報、データ長（レングス）情報、カレントフラグ（カレントポインタＦｌａｇ）などの情報を格納している。
【００３３】
上記カレントポインタ設定テーブル２３ａに格納されるＥＦＩＤは、各オブジェクトが格納されているレコードファイルを識別するための情報である。図６に示す例は、図４に示す第１ＥＦ３４におけるデータオブジェクトを管理するテーブルである。このため、図６に示す例では、各データオブジェクトのＥＦＩＤは、「０００１」となっている。上記カレントポインタ設定テーブル２３ａに格納される識別子情報およびデータ長情報は、各データオブジェクトの識別子およびデータ長である。図６に示す例では、各データオブジェクトの識別子情報及びデータ長情報としては、図４に示す第１ＥＦ３４に格納されている各データオブジェクトの識別子及びデータ長そのものが格納されている。
【００３４】
上記カレントポインタ設定テーブル２３ａに格納されるアドレス情報は、データメモリ２２上における各データオブジェクトの先頭アドレスを示す情報である。各データオブジェクトのアドレス情報は、図４に示す第１ＥＦ３４において各データオブジェクトの識別子及びデータ長から順に判別される。また、上記カレントポインタ設定テーブル２３ａに格納されるカレントフラグは、当該データオブジェクトがカレント状態であるか否かを示すものである。たとえば、カレント状態であるデータオブジェクトのカレントフラグは、「１」にセットされ、カレント状態でないデータオブジェクトのカレントフラグは、「０」にセットされる。
【００３５】
図７は、カレントポインタ設定テーブル２３ａの第２の構成例を示す図である。  
図７は、図４に示す第１ＥＦ３４と図５に示す第２ＥＦ３５とに対するカレントポインタ設定テーブル２３ａの構成例である。  
第２の構成例のカレントポインタ設定テーブル２３ａでは、ロジカルチャネルごとにカレント状態を示す情報を保持する。図７に示す構成例においては、カレントポインタ設定テーブル２３ａは、図４に示す第１ＥＦ３４と図５に示す第２ＥＦ３５における全データオブジェクトの管理情報を格納している。ここでは、第１ＥＦ３４は、ロジカルチャネル「０」でカレントファイルに選択され、第２ＥＦ３５は、ロジカルチャネル「１」でカレントファイルに選択された状態を想定している。すなわち、図７に示すカレントポインタ設定テーブル２３ａでは、ロジカルチャネル「０」でカレント状態となっている第１ＥＦ３４内のデータオブジェクトと、ロジカルチャネル「１」でカレント状態となっている第２ＥＦ３５内のデータオブジェクトとを示している。
【００３６】
上記ロジカルチャネルとは、概略的に言えば、当該ＩＣカード１において、上記制御部２１が各種の処理を実行可能な論理上のチャンネルである。ＩＣカードにおけるロジカルチャネルは、たとえば、ＩＳＯ／ＩＥＣ７８１６−４で規定されている。すなわち、上記ＩＣカード１では、上記制御部２１が、各ロジカルチャネルごとに各種の処理を並列的に実施することができる。この場合、上記ＩＣカード１では、各ロジカルチャネルでの各処理内容（たとえば、カレント情報等）を保持するようになっている。
【００３７】
たとえば、ＩＣカードは、４個のロジカルチャネル（Ｃｈ．０、Ｃｈ．１、Ｃｈ．２、Ｃｈ．３）をサポートしているものがある。この場合、デフォルトのロジカルチャネルが「Ｃｈ．０」であれば、ロジカルチャネル「Ｃｈ．０」は、常時使用可能とし、ロジカルチャネル（Ｃｈ．１、Ｃｈ．２、Ｃｈ．３）は、ロジカルチャネルを指定するコマンド（たとえば、マネージチャネルコマンド）などによりオープン（使用可能な状態）にする処理を行う必要がある。
【００３８】
図７に示すカレントポインタ設定テーブル２３ａでは、図４に示す第１ＥＦ３４および図５に示す第２ＥＦにおける各データオブジェクトの管理情報として、ロジカルチャンネルごとにレコードファイル内のデータオブジェクトを管理している。図７に示すカレントポインタ設定テーブル２３ａでは、各データオブジェクトの管理情報として、ロジカルチャネル情報、ＥＦＩＤ情報、識別子（Ｔａｇ）情報、アドレス（Ａｄｄｒｅｓｓ）情報、データ長（Ｄａｔａ  Ｌｅｎｇｔｈ）情報、カレントフラグ（カレントポインタＦｌａｇ）などの情報を格納している。
【００３９】
上記カレントポインタ設定テーブル２３ａに格納されるロジカルチャネル情報は、各データオブジェクトが格納されているレコードファイルが選択されているロジカルチャネルを示す情報である。図７に示す例は、図４に示す第１ＥＦ３４がロジカルチャネル「０」で選択され、図５に示す第２ＥＦがロジカルチャネル「１」で選択された状態である。このため、図７に示すように、ＥＦＩＤが「０００１」の各データオブジェクトに対応するロジカルチャネル情報は「０」となっており、ＥＦＩＤが「０００２」の各データオブジェクトに対応するロジカルチャネル情報は「１」となっている。
【００４０】
上記カレントポインタ設定テーブル２３ａに格納される識別子およびデータ長は、各データオブジェクトの識別子およびデータ長そのものである。図６に示す例では、各データオブジェクトの識別子及びデータ長としては、図４に示す第１ＥＦ３４に格納されている各データオブジェクトの識別子及びデータ長が格納されている。上記カレントポインタ設定テーブル２３ａに格納されるアドレスは、データメモリ２２上における各データオブジェクトの先頭アドレスを示す情報である。各データオブジェクトのアドレス情報は、図４に示す第１ＥＦ３４および図５に示す第２ＥＦ３５において各データオブジェクトの識別子及びデータ長から順に特定される。
【００４１】
また、上記カレントポインタ設定テーブル２３ａに格納されるカレントフラグは、各ロジカルチャネルにおいて、当該データオブジェクトがカレント状態であるか否かを示す。図７に示す例では、ロジカルチャネル「０」においてカレント状態であるオブジェクトとロジカルチャネル「１」においてカレント状態であるデータオブジェクトとは、カレントフラグに「１」がセットされている。
【００４２】
次に、カレントポインタ設定テーブルの作成処理について説明する。  
図８は、カレントポインタ設定テーブル２３ａの作成処理の例を説明するためのフローチャートである。  
まず、上記ＩＣカード１は、ＩＣカード処理装置２などの上位装置からの電力供給により活性化される（ステップＳ１）。この状態において、ＩＣカード１は、ＩＣカード処理装置２からのコマンドが受信可能となる（ステップＳ２）。ＩＣカード処理装置２からコマンドを受信した場合、上記ＩＣカード１の制御部２１は、受信したコマンドがレコードファイルの識別情報（ＥＦＩＤ）とデータオブジェクトの識別子（タグ）とを指定するコマンドであるか否かを判定する（ステップＳ３）。
【００４３】
上記レコードファイルとデータオブジェクトとを指定するコマンドを受信した場合（ステップＳ３、ＹＥＳ）、上記制御部２１は、ＲＡＭ２３上にカレントポインタ設定テーブル２３ａが存在するか否かを判断する（ステップＳ４）。たとえば、ＩＣカード１の活性化の直後は、ＲＡＭ２３内にはカレントポインタ設定テーブル２３ａが作成されていないと考えられる。また、カレントポインタ設定テーブル２３ａが存在している場合、上記制御部２１は、カレントポインタ設定テーブルの作成処理を省略する。
【００４４】
上記カレントポインタ設定テーブル２３ａが存在しないと判断した場合（ステップＳ４、ＮＯ）、上記制御部２１は、受信コマンドで指定されたレコードファイルに対するカレントポインタ設定テーブル２３ａを作成する（ステップＳ５）。この場合、上記制御部２１は、受信コマンドで指定されたレコードファイル内をソートすることにより、当該ファイル内の各データオブジェクトの管理情報を抽出する。すなわち、上記制御部２１は、当該レコードファイルの先頭から順に各データオブジェクトの識別子とデータ長とを読み込む。これにより、制御部２１は、順に各データオブジェクトの先頭アドレス、識別子、データ長を判別する。
【００４５】
各データオブジェクトの識別子およびデータ長は、レコードファイルから読み込んだ情報そのものである。各データオブジェクトの先頭アドレスは、当該レコードファイルの先頭アドレスを基準として、各データオブジェクトのデータ長などにより判別される。すなわち、レコードファイル内の１つ目のデータオブジェクトの先頭アドレスは、当該レコードファイルの先頭アドレスである。２つ目以降のデータオブジェクトの先頭アドレスは、それぞれ前のデータオブジェクトのデータ長により判別される。たとえば、２つ目以降のデータオブジェクトの先頭アドレスは、直前のデータオブジェクトの先頭アドレスに、直前のオブジェクトの識別子のサイズとデータ長のサイズとデータ長で示されるデータ値のサイズとを加算したアドレス値である。
【００４６】
受信コマンドで指定されたレコードファイルにおける各データオブジェクトの管理情報を抽出すると、制御部２１は、抽出した各データオブジェクトの管理情報を当該レコードファイルのＥＦＩＤに対応づけて記憶することによりカレントポインタ設定テーブル２３ａを作成する。この場合、制御部２１は、作成するカレントポインタ設定テーブル２３ａには当該受信コマンドで指定されたデータオブジェクトの管理情報にカレントフラグをセットする。これにより、ＲＡＭ２３上には、図６に示すようなカレントポインタ設定テーブル２３ａが作成される。
【００４７】
なお、複数のロジカルチャネルで処理を行う場合、制御部２１は、各ロジカルチャネルで選択されるレコードファイルごとに上記のようなテーブルが作成することにより、図７に示すような複数のロジカルチャネルに対応したカレントポインタ設定テーブル２３ａを作成する。
【００４８】
受信コマンドで指定されたレコードファイルに対するカレントポインタ設定テーブル２３ａを作成した場合、あるいは、既にカレントポインタ設定テーブル２３ａが存在していた場合、制御部２１は、受信コマンドで要求されている処理を実行する（ステップＳ６）。受信コマンドで要求された処理を実行すると、制御部２１は、実行した処理内容に応じてカレントポインタ設定テーブル２３ａを更新する（ステップＳ７）。たとえば、カレント状態とするデータオブジェクトを変更した場合、制御部２１は、カレントポインタ設定テーブル２３ａにおけるカレントフラグの状態を更新する。
【００４９】
次に、カレント状態のデータオブジェクトを指定するコマンドに対応する処理について説明する。  
図９は、カレント状態のデータオブジェクトを指定するコマンド（カレント指定のリードコマンド又はライトコマンド）に対する処理について説明するためのフローチャートである。  
まず、上記ＩＣカード１は、ＩＣカード処理装置２などの上位装置からカレント指定のリードコマンド又はライトコマンドを受信したものとする（ステップＳ１１）。カレントのデータオブジェクトを指定するコマンドを受信した場合、上記ＩＣカード１の制御部２１は、当該レコードファイルに対応するカレントポインタ設定テーブル２３ａを読み込む。すなわち、制御部２１は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部２１は、カレントポインタ設定テーブル２３ａから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する（ステップＳ１２）。
【００５０】
たとえば、カレントポインタ設定テーブル２３ａが図７に示すような状態である場合、ロジカルチャネルが「０」のコマンドを受信した制御部２１は、カレントポインタ設定テーブル２３ａからロジカルチャネルが「０」の各データオブジェクトのカレントフラグを確認する。つまり、制御部２１は、カレントポインタ設定テーブル２３ａからロジカルチャネルが「０」でカレントフラグが「１」のデータオブジェクトを検索する。図７に示す例では、ロジカルチャネルが「０」でカレントフラグが「１」のデータオブジェクトは、ＥＦＩＤが「０００１」でタグが「ＤＦ０１」のデータオブジェクトである。従って、制御部２１は、ＥＦＩＤが「０００１」のレコードファイルにおけるタグが「ＤＦ０１」のデータオブジェクトがカレント状態であると判別する。
【００５１】
このカレント状態と判別されたＥＦＩＤが「０００１」でタグが「ＤＦ０１」のデータオブジェクトは、図７に示すように、カレントポインタ設定テーブル２３ａにより先頭アドレスが「００５９」であると判別される。このように、カレントポインタ設定テーブル２３ａを参照することにより、制御部２１は、カレント状態となっているデータオブジェクトの先頭アドレスが容易に判別できる。この結果として、制御部２１は、直接的にカレント状態のデータオブジェクトにアクセスすることができる。
【００５２】
受信コマンドがアクセス対象とするカレント状態のデータオブジェクトを特定すると、制御部２１は、受信コマンドがリードコマンドかライトコマンドかを判別する（ステップＳ１３）。  
受信コマンドがライトコマンドである場合（ステップＳ１３、ライトコマンド）、制御部２１は、カレント状態のデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理（更新処理）を行う（ステップＳ１４〜Ｓ１６）。ここでは、制御部２１は、カレントポインタ設定テーブル２３ａによりカレント状態のデータオブジェクトの先頭アドレスを特定する。
【００５３】
すなわち、制御部２１は、カレント状態のデータオブジェクトの先頭アドレスから識別（タグ）およびデータ長（レングス）に続いて記憶されているデータ値（バリュー）の領域（データ領域）を初期化する（ステップＳ１４）。カレント状態のデータオブジェクトのデータ領域を初期化すると、制御部２１は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む（ステップＳ１５）。カレント状態のデータオブジェクトのデータ領域におけるデータを更新すると、制御部２１は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部２１は、生成したレスポンスデータを当該受信コマンドの送信元であるＩＣカード処理装置２へ送信する（ステップＳ１６）。
【００５４】
受信コマンドがリードコマンドである場合（ステップＳ１３、リードコマンド）、制御部２１は、カレント状態となっているデータオブジェクトのデータを読み出す処理を行う（ステップＳ１７−Ｓ１８）。ここでは、制御部２１は、カレントポインタ設定テーブル２３ａによりカレント状態のデータオブジェクトの先頭アドレスを特定する。
【００５５】
すなわち、制御部２１は、カレント状態のデータオブジェクトの先頭アドレスから識別（タグ）およびデータ長（レングス）に続いて記憶されているデータ値（バリュー）を読み出す（ステップＳ１７）。カレント状態のデータオブジェクトのデータを読み出すと、制御部２１は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるＩＣカード処理装置２へ送信する（ステップＳ１８）。
【００５６】
上記のような手順により、カレント指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図１０は、カレント指定のライトコマンドによる処理結果の例を示す図である。図１０は、図４に示す第１ＥＦ３４におけるカレント状態のデータオブジェクトを図７に示すカレントポインタ設定テーブル２３ａを参照して書き換えた場合の例を示している。
【００５７】
図１０に示す例では、図４に示す第１ＥＦ３４内において、図中の斜線で示す領域のデータが書換えられている。図１０に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「３０」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「ＤＦ０１」が格納されている。すなわち、図１０に示す例では、識別子「ＤＦ０１」のデータオブジェクトのデータ値（バリュー）が書換えられたことを示している。この識別子「ＤＦ０１」のデータオブジェクトは、図７に示すカレントポインタ設定テーブル２３ａで示されるカレント状態のデータオブジェクトである。つまり、カレントポインタ設定テーブル２３ａが図７に示すような状態である場合、カレント指定のライトコマンドを受けたＩＣカード１は、図４に示す第１ＥＦ３４内のデータオブジェクトを図１０に示すように書き換えるようになっている。
【００５８】
なお、カレント指定のリードコマンド又はライトコマンドに対する処理では、カレント状態のデータオブジェクトを変更する必要がない。このため、上述した例では、カレントポインタ設定テーブル２３ａの更新を行っていない。しかしながら、実行した処理によってカレントポインタ設定テーブル２３ａに記憶されている情報が変化する場合、制御部２１は、カレントポインタ設定テーブル２３ａを更新する。たとえば、書換え処理などによりカレント状態のデータオブジェクトのデータ長が変更される場合、カレント状態のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部２１は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル２３ａを更新する。
【００５９】
上記のようなカレント指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトに対して繰り返し読出しあるいは書込みすることが容易である。たとえば、カレント指定のコマンドが連続して与えられた場合、ＩＣカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを直ちに特定することができ、カンレト状態のデータオブジェクトに効率よくアクセスできる。
【００６０】
次に、カレント状態のデータオブジェクトの次のデータオブジェクトを指定するコマンド（ネクスト指定のコマンド）に対応する処理について説明する。  
図１１は、ネクスト指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。  
まず、上記ＩＣカード１は、ＩＣカード処理装置２などの上位装置からネクスト指定のリードコマンド又はライトコマンドを受信したものとする（ステップＳ２０）。ネクスト指定のコマンドを受信した場合、上記ＩＣカード１の制御部２１は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部２１は、カレントポインタ設定テーブル２３ａから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する（ステップＳ２１）。
【００６１】
上述したように、カレント状態のデータオブジェクトは、カレントフラグが「１」となっているか否かにより判別される。カレント状態のデータオブジェクトを特定すると、上記制御部２１は、さらに、カレント状態のデータオブジェクトの次のデータオブジェクト（ネクスト指定のデータオブジェクト）を特定する（ステップＳ２２）。
【００６２】
たとえば、カレントポインタ設定テーブル２３ａが図７に示すような状態である場合、ロジカルチャネル「０」でネクスト指定のコマンドを受信した制御部２１は、カレントポインタ設定テーブル２３ａからロジカルチャネルが「０」でカレントフラグが「１」のデータオブジェクトを検索する。図７に示す例では、ロジカルチャネルが「０」でカレントフラグが「１」のデータオブジェクト（カレント状態のデータオブジェクト）は、ＥＦＩＤが「０００１」でタグが「ＤＦ０１」のデータオブジェクトである。この場合、カレント状態のデータオブジェクトの次のデータオブジェクトは、ＥＦＩＤが「０００１」でタグが「ＤＦ０２」のデータオブジェクトである。従って、制御部２１は、ＥＦＩＤが「０００１」でタグが「ＤＦ０１」のデータオブジェクトがネクスト指定のデータオブジェクトであると判別する。
【００６３】
ネクスト指定のデータオブジェクトと判別されたＥＦＩＤが「０００１」でタグが「ＤＦ０１」のデータオブジェクトは、図７に示すカレントポインタ設定テーブル２３ａにより先頭アドレスが「００８Ｃ」であると判別される。このように、カレントポインタ設定テーブル２３ａを参照することにより、制御部２１は、ネクスト指定されたデータオブジェクト（カレント状態のデータオブジェクトの次のデータオブジェクト）の先頭アドレスが容易に判別できる。この結果として、制御部２１は、直接的にネクスト指定のデータオブジェクトにアクセスすることができる。
【００６４】
受信コマンドでアクセス対象とするネクスト指定のデータオブジェクトを特定すると、制御部２１は、受信コマンドがリードコマンドかライトコマンドかを判別する（ステップＳ２３）。  
受信コマンドがライトコマンドである場合（ステップＳ２３、ライトコマンド）、制御部２１は、ネクスト指定されたデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理（更新処理）を行う（ステップＳ２４〜Ｓ２６）。ここでは、制御部２１は、カレントポインタ設定テーブル２３ａによりネクスト指定のデータオブジェクトの先頭アドレスを特定する。
【００６５】
すなわち、制御部２１は、ネクスト指定のデータオブジェクトの先頭アドレスから識別（タグ）およびデータ長（レングス）に続いて記憶されているデータ値（バリュー）の領域（データ領域）を初期化する（ステップＳ２４）。ネクスト指定のデータオブジェクトのデータ領域を初期化すると、制御部２１は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む（ステップＳ２５）。ネクスト指定のデータオブジェクトのデータ領域におけるデータを更新すると、制御部２１は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部２１は、生成したレスポンスデータを当該受信コマンドの送信元であるＩＣカード処理装置２へ送信する（ステップＳ２６）。
【００６６】
受信コマンドがリードコマンドである場合（ステップＳ２３、リードコマンド）、制御部２１は、ネクスト指定されたデータオブジェクトのデータを読み出す処理を行う（ステップＳ２７−Ｓ２８）。ここでは、制御部２１は、カレントポインタ設定テーブル２３ａによりネクスト指定のデータオブジェクトの先頭アドレスを特定する。
【００６７】
すなわち、制御部２１は、ネクスト指定のデータオブジェクトの先頭アドレスから識別（タグ）およびデータ長（レングス）に続いて記憶されているデータ値（バリュー）を読み出す（ステップＳ２７）。ネクスト指定のデータオブジェクトのデータを読み出すと、制御部２１は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるＩＣカード処理装置２へ送信する（ステップＳ２８）。
【００６８】
上記のようなネクスト指定のリードコマンド又はライトコマンドに対する処理では、データオブジェクトのカレント状態を変更する必要がある。つまり、ネクスト指定されたデータオブジェクトは、カレント状態に変更される。このため、制御部２１は、カレントポインタ設定テーブル２３ａにおけるカレントフラグの更新を行う（ステップＳ２９）。この更新処理では、ネクスト指定されたデータオブジェクトのカレントフラグを「１」に書き換えるとともに、カレント状態であったデータオブジェクトのカレントフラグを「０」に書き換える。
【００６９】
たとえば、図１２は、ネクスト指定のコマンドを処理した後のカレントポインタ設定テーブル２３ａの状態を示している。図１２は、カレントポインタ設定テーブル２３ａが図７に示す状態である場合に受信したネクスト指定のコマンドを処理した後の状態を示している。つまり、ネクスト指定のコマンドを実行すると、データオブジェクトのカレント状態は、次のデータオブジェクトに変更される。これは、図７あるいは図１２に示すようなカレントポインタ設定テーブル２３ａでは、ネクスト指定のコマンドを実行するごとに、カレントフラグに「１」がセットされるデータオブジェクトが順次移動することを意味する。
【００７０】
上記のような手順により、ネクスト指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図１３は、ネクスト指定のライトコマンドによる処理結果の例を示す図である。つまり、図１３は、カレントポインタ設定テーブル２３ａが図７に示す状態である場合に、受信したネクスト指定のライトコマンドの処理結果を示している。
【００７１】
図１３に示す例では、図４に示す第１ＥＦ３４内において、図中の斜線で示す領域のデータが書換えられている。図１３に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「１１」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「ＤＦ０２」が格納されている。
【００７２】
すなわち、図１３に示す例では、識別子「ＤＦ０２」のデータオブジェクトのデータ値（バリュー）が書換えられている。この識別子「ＤＦ０２」のデータオブジェクトは、図７に示すカレントポインタ設定テーブル２３ａで示されるカレント状態のデータオブジェクトの次のデータオブジェクト（ネクスト指定のデータオブジェクト）である。つまり、カレントポインタ設定テーブル２３ａが図７に示すような状態である場合、ネクスト指定のライトコマンドを受けたＩＣカード１は、図４に示す第１ＥＦ３４内のデータオブジェクトを図１３に示すように書き換えるようになっている。
【００７３】
なお、実行した処理によってカレントポインタ設定テーブル２３ａにおけるカレントフラグ以外の情報が変化する場合も、制御部２１は、カレントポインタ設定テーブル２３ａを更新する。たとえば、書換え処理などによりカレント状態のデータオブジェクトのデータ長が変更される場合、カレント状態のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部２１は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル２３ａを更新する。
【００７４】
上記のようなネクスト指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトを基準として、データオブジェクトを順に読出しあるいは書込みすることができる。たとえば、ネクスト指定のコマンドが連続的に与えられた場合、ＩＣカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを基準とする次のデータオブジェクトに順にアクセスする処理を効率よく実行することができる。
【００７５】
次に、カレント状態のデータオブジェクトの直前のデータオブジェクトを指定するコマンド（プリビアス指定のコマンド）に対応する処理について説明する。  
図１４は、プリビアス指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。  
まず、上記ＩＣカード１は、ＩＣカード処理装置２などの上位装置からプリビアス指定のリードコマンド又はライトコマンドを受信したものとする（ステップＳ３０）。プリビアス指定のコマンドを受信した場合、上記ＩＣカード１の制御部２１は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部２１は、カレントポインタ設定テーブル２３ａから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する（ステップＳ３１）。
【００７６】
上述したように、カレント状態のデータオブジェクトは、カレントポインタ設定テーブル２３ａにおいてカレントフラグが「１」となっているか否かにより判別される。カレント状態のデータオブジェクトを特定すると、上記制御部２１は、さらに、カレント状態のデータオブジェクトの直前のデータオブジェクト（プリビアス指定のデータオブジェクト）を特定する（ステップＳ３２）。
【００７７】
たとえば、カレントポインタ設定テーブル２３ａが図７に示すような状態である場合、ロジカルチャネル「０」でプリビアス指定のコマンドを受信した制御部２１は、カレントポインタ設定テーブル２３ａからロジカルチャネルが「０」でカレントフラグが「１」のデータオブジェクトを検索する。図７に示す例では、ロジカルチャネルが「０」でカレントフラグが「１」のデータオブジェクト（カレント状態のデータオブジェクト）は、ＥＦＩＤが「０００１」でタグが「ＤＦ０１」のデータオブジェクトである。この場合、カレント状態のデータオブジェクトの直前のデータオブジェクトは、ＥＦＩＤが「０００１」でタグが「０９」のデータオブジェクトである。従って、制御部２１は、ＥＦＩＤが「０００１」でタグが「０９」のデータオブジェクトがプリビアス指定のデータオブジェクトであると判別する。
【００７８】
プリビアス指定のデータオブジェクトと判別されたＥＦＩＤが「０００１」でタグが「０９」のデータオブジェクトは、図７に示すカレントポインタ設定テーブル２３ａにより先頭アドレスが「００２７」であると判別される。このように、カレントポインタ設定テーブル２３ａを参照することにより、制御部２１は、プリビアス指定されたデータオブジェクト（カレント状態のデータオブジェクトの直前のデータオブジェクト）の先頭アドレスが容易に判別できる。この結果として、制御部２１は、直接的にプリビアス指定のデータオブジェクトにアクセスすることができる。
【００７９】
受信コマンドでアクセス対象とするプリビアス指定のデータオブジェクトを特定すると、制御部２１は、受信コマンドがリードコマンドかライトコマンドかを判別する（ステップＳ３３）。  
受信コマンドがライトコマンドである場合（ステップＳ３３、ライトコマンド）、制御部２１は、プリビアス指定されたデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理（更新処理）を行う（ステップＳ３４〜Ｓ３６）。ここでは、制御部２１は、カレントポインタ設定テーブル２３ａによりプリビアス指定のデータオブジェクトの先頭アドレスを特定する。
【００８０】
すなわち、制御部２１は、プリビアス指定のデータオブジェクトの先頭アドレスから識別（タグ）およびデータ長（レングス）に続いて記憶されているデータ値（バリュー）の領域（データ領域）を初期化する（ステップＳ３４）。プリビアス指定のデータオブジェクトのデータ領域を初期化すると、制御部２１は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む（ステップＳ３５）。プリビアス指定のデータオブジェクトのデータ領域におけるデータを更新すると、制御部２１は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部２１は、生成したレスポンスデータを当該受信コマンドの送信元であるＩＣカード処理装置２へ送信する（ステップＳ３６）。
【００８１】
受信コマンドがリードコマンドである場合（ステップＳ３３、リードコマンド）、制御部２１は、プリビアス指定されたデータオブジェクトのデータを読み出す処理を行う（ステップＳ３７−Ｓ３８）。ここでは、制御部２１は、カレントポインタ設定テーブル２３ａによりプリビアス指定のデータオブジェクトの先頭アドレスを特定する。
【００８２】
すなわち、制御部２１は、プリビアス指定のデータオブジェクトの先頭アドレスから識別（タグ）およびデータ長（レングス）に続いて記憶されているデータ値（バリュー）を読み出す（ステップＳ３７）。プリビアス指定のデータオブジェクトのデータを読み出すと、制御部２１は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるＩＣカード処理装置２へ送信する（ステップＳ３８）。
【００８３】
上記のようなプリビアス指定のリードコマンド又はライトコマンドに対する処理では、データオブジェクトのカレント状態を変更する必要がある。つまり、プリビアス指定されたデータオブジェクトは、カレント状態に変更される。このため、制御部２１は、カレントポインタ設定テーブル２３ａにおけるカレントフラグの更新を行う（ステップＳ３９）。この更新処理では、プリビアス指定されたデータオブジェクトのカレントフラグを「１」に書き換えるとともに、カレント状態であったデータオブジェクトのカレントフラグを「０」に書き換える。
【００８４】
たとえば、図１５は、プリビアス指定のコマンドを処理した後のカレントポインタ設定テーブル２３ａの状態を示している。図１５は、カレントポインタ設定テーブル２３ａが図７に示す状態である場合に受信したプリビアス指定のコマンドを処理した後の状態を示している。つまり、プリビアス指定のコマンドを実行すると、データオブジェクトのカレント状態は、次のデータオブジェクトに変更される。これは、図７あるいは図１５に示すようなカレントポインタ設定テーブル２３ａでは、プリビアス指定のコマンドを実行するごとに、カレントフラグに「１」がセットされるデータオブジェクトが順次移動することを意味する。
【００８５】
上記のような手順により、プリビアス指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図１６は、プリビアス指定のライトコマンドによる処理結果の例を示す図である。図１６は、カレントポインタ設定テーブル２３ａが図７に示す状態である場合に、受信したプリビアス指定のライトコマンドの処理結果の例を示している。
【００８６】
図１６に示す例では、図４に示す第１ＥＦ３４内において、図中の斜線で示す領域のデータが書換えられている。図１６に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「３０」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「０９」が格納されている。すなわち、図１６に示す例では、識別子「０９」のデータオブジェクトのデータ値（バリュー）が書換えられている。この識別子「０９」のデータオブジェクトは、図７に示すカレントポインタ設定テーブル２３ａで示されるカレント状態のデータオブジェクトの直前のデータオブジェクト（プリビアス指定のデータオブジェクト）である。つまり、カレントポインタ設定テーブル２３ａが図７に示すような状態である場合、プリビアス指定のライトコマンドを受けたＩＣカード１は、図４に示す第１ＥＦ３４内のデータオブジェクトを図１６に示すように書き換えるようになっている。
【００８７】
なお、実行した処理によってカレントポインタ設定テーブル２３ａにおけるカレントフラグ以外の情報が変化する場合も、制御部２１は、カレントポインタ設定テーブル２３ａを更新する。たとえば、書換え処理などによりプリビアス指定のデータオブジェクトのデータ長が変更される場合、プリビアス指定のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部２１は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル２３ａを更新する。
【００８８】
上記のようなプリビアス指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトを基準とする直前のデータオブジェクトを順に読出しあるいは書込みすることができる。たとえば、プリビアス指定のコマンドが連続的に与えられた場合、ＩＣカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを基準とする前のデータオブジェクトに順にアクセスする処理を効率よく実行することができる。
【符号の説明】
【００８９】
Ｂ…本体、Ｍ…モジュール、Ｃ…ＩＣチップ、１…ＩＣカード、２…ＩＣカード処理装置、１１…端末装置、１２…ディスプレイ、１３…キーボード、１４…テンキー、１５…カードリーダライタ、２１…制御部、２２…データメモリ、２３…ＲＡＭ、２３ａ…カレントポインタ設定テーブル、２４…ＲＯＭ、２５…通信部。
【図１】
2010211516.tif 000003
【図２】
2010211516.tif 000004
【図３】
2010211516.tif 000005
【図４】
2010211516.tif 000006
【図５】
2010211516.tif 000007
【図６】
2010211516.tif 000008
【図７】
2010211516.tif 000009
【図８】
2010211516.tif 000010
【図９】
2010211516.tif 000011
【図１０】
2010211516.tif 000012
【図１１】
2010211516.tif 000013
【図１２】
2010211516.tif 000014
【図１３】
2010211516.tif 000015
【図１４】
2010211516.tif 000016
【図１５】
2010211516.tif 000017
【図１６】
2010211516.tif 000018