(57)【特許請求の範囲】
【請求項１】
外部装置との通信を行う通信手段と、
複数種類の形式からなるデータが格納されるデータファイルを記憶する第１の記憶手段と、
各種のデータ形式ごとにカレントとなるファイルを示す情報を記憶する第２の記憶手段と、
前記通信手段によりカレントファイルを指定したコマンドを受信した場合、当該コマンドで要求されている処理が適用されるデータ形式を判断する判断手段と、
この判断手段により判断したデータ形式に対応するカレントファイルを前記第２の記憶手段に記憶されている情報に基づいて特定する特定手段と、
この特定手段により特定したカレントファイルをアクセス対象として前記コマンドで要求されている処理を行う処理手段と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
さらに、前記通信手段によりセレクトコマンドを受信した場合、当該セレクトコマンドで指定されたファイルを当該ファイルのデータ形式に対応するカレントファイルに設定する設定手段を有する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
さらに、前記通信手段によりファイル指定のコマンドを受信した場合、当該コマンドで指定されたファイルを当該ファイルのデータ形式に対応するカレントファイルに設定する設定手段を有する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項４】
さらに、前記各手段を有するモジュールと、
前記モジュールが内蔵された本体と、
を具備することを特徴する請求項１乃至３の何れかに記載の携帯可能電子装置。
【請求項５】
外部装置との通信を行う通信部と、複数種類の形式からなるデータが格納されるデータファイルを記憶するデータメモリと、を有する携帯可能電子装置に用いられる制御方法であって、
各種のデータ形式ごとにカレントとなるファイルを示す情報を記憶手段に記憶しておき、
前記通信手段によりカレントファイルを指定したコマンドを受信した場合、当該コマンドが適用されるデータ形式を判断し、
この判断により判断したデータ形式に対応するカレントファイルを前記記憶手段に記憶されている情報に基づいて特定し、
この特定したカレントファイルをアクセス対象として前記コマンドで要求されている処理を行う、
ことを特徴とする携帯可能電子装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば、書込みあるいは書換えが可能な不揮発性メモリおよびＣＰＵなどの制御素子を具備し、外部からのコマンドに応じた処理を行うＩＣカードなどの携帯可能電子装置および携帯可能電子装置の制御方法に関する。
【背景技術】
【０００２】
従来、ＩＣカードなどの携帯可能電子装置のデータメモリには、種々のデータ形式でデータを格納するデータファイルが記憶される。たとえば、ＩＣカードでは、データファイルに格納されるデータ構造として、バイナリ型（Transparent structure）、レコード型（Record structure）、データオブジェクト型（TLV(Tag Length Value) structure）などがある。一方、外部からのコマンドに応じた処理を行うＩＣカードの処理システムでは、特定のデータ構造のデータファイルをアクセス対象とするコマンドがある。たとえば、バイナリ型（Transparent structure）のデータをアクセス対象とするバイナリ系コマンド、レコード型（Record structure）のデータをアクセス対象とするレコード系コマンド、データオブジェクト型（TLV(Tag Length Value) structure）のデータをアクセス対象とするデータオブジェクト系コマンドなどがある。
【０００３】
また、従来のＩＣカードでは、データメモリに記憶されている種々のデータファイルに対して、１つのカレントファイルだけでファイルへのアクセス制御を行うようになっている。従って、従来のＩＣカードでは、常に、直前に実行したコマンドでアクセスしたファイルがカレントファイルとなる。たとえば、直前に実行したコマンドがレコード系コマンドである場合、カレントファイルは、レコード型のデータが格納されているデータファイルとなる。この状態では、カレントファイルがレコード型のデータであるため、カレントファイルをアクセス対象として指定したバイナリ系コマンドあるいはデータオブジェクト系コマンドで要求された処理が実行できないという状況となる。言い換えると、従来のＩＣカードでは、カレントファイルのデータ構造とは異なるデータ構造のデータファイルにアクセスする場合、アクセス対象とするデータ構造のデータファイルをカレントファイルとして選択した後に、再度、カレントファイルのデータ構造に適合するコマンドを実行させる必要がある。この結果として、所望の処理を実行するのに時間がかかることがある。
【特許文献１】特開平７−１６０５４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明の一形態では、各種のデータファイルに対して効率的なコマンド処理が実現できる携帯可能電子装置および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明の一形態としての携帯可能電子装置は、外部装置との通信を行う通信手段と、複数種類の形式からなるデータが格納されるデータファイルを記憶する第１の記憶手段と、各種のデータ形式ごとにカレントとなるファイルを示す情報を記憶する第２の記憶手段と、前記通信手段によりカレントファイルを指定したコマンドを受信した場合、当該コマンドが適用されるデータ形式を判断する判断手段と、この判断手段により判断したデータ形式に対応するカレントファイルを前記第２の記憶手段に記憶されている情報に基づいて特定する特定手段と、この特定手段により特定したカレントファイルをアクセス対象として前記コマンドで要求されている処理を行う処理手段とを有する。
【０００６】
この発明の一形態としての携帯可能電子装置の制御方法は、外部装置との通信を行う通信部と、複数種類の形式からなるデータが格納されるデータファイルを記憶するデータメモリと、を有する携帯可能電子装置に用いられる方法であって、各種のデータ形式ごとにカレントとなるファイルを示す情報を記憶手段に記憶しておき、前記通信手段によりカレントファイルを指定したコマンドを受信した場合、当該コマンドが適用されるデータ形式を判断し、この判断により判断したデータ形式に対応するカレントファイルを前記記憶手段に記憶されている情報に基づいて特定し、この特定したカレントファイルをアクセス対象として前記コマンドで要求されている処理を行う。
【発明の効果】
【０００７】
この発明の一形態によれば、各種のデータファイルに対して効率的なコマンド処理が実現できる携帯可能電子装置および携帯可能電子装置の制御方法を提供できる。
【発明を実施するための最良の形態】
【０００８】
以下、この発明の実施の形態について図面を参照して説明する。  
図１は、本実施の形態に係るＩＣカード（携帯可能電子装置）２、および、ＩＣカード２との通信機能を有する外部装置としてのＩＣカード処理装置１の構成例を概略的に示すブロック図である。  
まず、上記ＩＣカード処理装置１の構成について説明する。  
上記ＩＣカード処理装置１は、図１に示すように、端末装置１１、カードリーダライタ１２、キーボード１３、ディスプレイ１４、および、プリンタ１５などを有している。
【０００９】
上記端末装置１１は、ＩＣカード処理装置１全体の動作を制御するものである。上記端末装置１１は、ＣＰＵ、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記端末装置１１は、パーソナルコンピュータ（ＰＣ）により構成される。  
上記端末装置１１は、上記カードリーダライタ１２によりＩＣカード２へコマンドを送信する機能、ＩＣカード２から受信したデータを基に種々の処理を行う機能などを有している。たとえば、上記端末装置１１は、カードリーダライタ１２を介してＩＣカード２にデータの書き込みコマンドを送信することによりＩＣカード２内の不揮発性メモリにデータを書き込む制御を行う。また、上記端末装置１１は、ＩＣカード２に読み取りコマンドを送信することによりＩＣカード２からデータを読み出す制御を行う。
【００１０】
上記カードリーダライタ１２は、上記ＩＣカード２との通信を行うためのインターフェース装置である。上記カードリーダライタ１２は、上記ＩＣカード２の通信方式に応じたインターフェースにより構成される。たとえば、上記ＩＣカード２が接触型のＩＣカードである場合、上記カードリーダライタ１２は、ＩＣカード２のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。また、上記ＩＣカード２が非接触型のＩＣカードである場合、上記カードリーダライタ１２は、ＩＣカード２との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ１２では、上記ＩＣカード２に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ１２は、上記端末装置１１による制御に基づいて上記ＩＣカード２の活性化（起動）、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【００１１】
上記キーボード１３は、当該ＩＣカード処理装置１の操作員が操作する操作部として機能し、操作員により種々の操作指示やデータなどが入力される。上記ディスプレイ１４は、上記端末装置１１の制御により種々の情報を表示する表示装置である。上記プリンタ１５は、処理結果などの各種データを印刷出力するためのものである。
【００１２】
次に、上記ＩＣカード２のハードウエア構成例について説明する。  
上記ＩＣカード２は、上記ＩＣカード処理装置１などの上位機器から電力などの供給を受けた際、活性化される（動作可能な状態になる）ようになっている。例えば、上記ＩＣカード２が接触型の通信によりＩＣカード処理装置１と接続される場合、つまり、ＩＣカード２が接触型のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのコンタクト部を介してＩＣカード処理装置１からの動作電源及び動作クロックの供給を受けて活性化される。
【００１３】
また、上記ＩＣカード２が非接触型の通信方式によりＩＣカード処理装置１と接続される場合、つまり、上記ＩＣカード２が非接触式のＩＣカードで構成される場合、上記ＩＣカード２は、通信インターフェースとしてのアンテナ及び変復調回路などを介してＩＣカード処理装置１からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化するようになっている。
【００１４】
図２は、本実施の形態に係るＩＣカード２のハードウエア構成例を概略的に示すブロック図である。  
上記ＩＣカード２は、本体Ｂを構成する筐体内にモジュールＭが内蔵されている。上記モジュールＭは、１つまたは複数のＩＣチップＣと通信用の外部インターフェース（通信インターフェース）とが接続された状態で一体的に形成され、ＩＣカード２の本体Ｂ内に埋設されている。また、上記ＩＣカード２のモジュールＭは、図２に示すように、制御素子２１、データメモリ２２、ワーキングメモリ２３、プログラムメモリ２４、および、通信部２５などを有してしている。
【００１５】
上記制御素子２１は、当該ＩＣカード２全体の制御を司るものである。上記制御素子２１は、上記プログラムメモリ２４あるいは上記データメモリ２２に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、上記制御素子２１は、オペレーティングシステムのプログラムを実行することにより、当該ＩＣカード２の基本的な動作制御を行う。また、上記制御素子２１は、当該ＩＣカード２の利用目的に応じたアプリケーションプログラムを実行することにより、当該ＩＣカード２の運用形態に応じた種々の動作制御を行う。
【００１６】
上記データメモリ２２は、例えば、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read-Only  Memory）あるいはフラッシュＲＯＭなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記データメモリ２２には、当該ＩＣカード２の運用用途に応じた制御プログラムあるいは種々のデータが書込まれる。上記データメモリ２２には、当該ＩＣカード２の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。上記データメモリ２２に格納されるファイルの例については、後述する。
【００１７】
上記ワーキングメモリ２３は、ＲＡＭなどの揮発性のメモリである。また、上記ワーキングメモリ２３は、制御素子２１が処理中のデータなどを一時保管するバッファとしても機能する。また、上記ワーキングメモリ２３には、カレント状態となっているファイルを示す情報を格納するためのテーブル２３ａ、２３ｂ、２３ｃが設けられる。各テーブル２３ａ、２３ｂ、２３ｃは、それぞれファイルタイプ（各種データ構造）ごとのカレントファイルを示す情報が格納される。
【００１８】
上記プログラムメモリ２４は、予め制御用のプログラムや制御データなどが記憶されているマスクＲＯＭなどの不揮発性のメモリである。上記プログラムメモリ２４には、当該ＩＣカードの製造段階で制御プログラムあるいは制御データなどが記憶された状態でＩＣカード２内に組み込まれる。つまり、上記プログラムメモリ２４に記憶されている制御プログラムあるいは制御データは、当該ＩＣカードの基本的な動作を司るものであり、予め当該ＩＣカード２の仕様に応じて組み込まれるものである。
【００１９】
上記通信部２５は、上記ＩＣカード処理装置１のカードリーダライタ１２との通信を行うためのインターフェースである。当該ＩＣカード２が接触型のＩＣカードとして実現される場合、上記通信部２５は、上記ＩＣカード処理装置１のカードリーダライタ１２と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ＩＣカード２が非接触型のＩＣカードとして実現される場合、通信部２５は、上記ＩＣカード処理装置１のカードリーダライタ１２との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【００２０】
次に、上記データメモリ２２に格納されるファイルについて説明する。  
図３は、上記データメモリ２２に格納されるファイルの構造例を示す図である。  
図３に示すように、上記データメモリ２２には、ＭＦ（Master File）、ＤＦ(Dedicated File)およびＥＦ(Elementary File)などからなる階層構造を有する複数のファイル群が定義される。図３に示す例では、最上階層のマスターファイル（ＭＦ）４１の次の階層に第１ＤＦ（ＤＦ１）４２および第２ＤＦ（ＤＦ２）４３が存在している。また、第１ＤＦ（ＤＦ１）４２の配下としてＤＦ１の次の階層には、第１ＥＦ（ＥＦ１−１）、第２ＥＦ（ＥＦ１−２）、および、第３ＥＦ（ＥＦ１−３）が存在している。また、図３に示す例では、ＥＦ１−１は、識別子（ＳＦＩ：Short ＥＦＩＤ）が「００００１」と定義され、ＥＦ１−２は、識別子（ＳＦＩ）が「００００２」と定義され、ＥＦ１−３は、識別子（ＳＦＩ）が「００００３」と定義されている。
【００２１】
上記各ＥＦは、各種のデータを格納するためのデータファイルである。上記各ＥＦに格納されるデータには、複数種類のデータ構造がある。たとえば、上記各ＥＦに格納されるデータ構造は、バイナリ型（Transparent structure）、レコード型（Record structure）、データオブジェクト型（TLV(Tag Length Value) structure）の３種類に分類されるものとする。ここでは、バイナリ型のデータが格納されるＥＦをバイナリＥＦと称し、レコード型のデータが格納されるＥＦをレコードＥＦと称し、データオブジェクト型のデータが格納されるＥＦをデータオブジェクトＥＦと称するものとする。また、図３に示す例では、ＥＦ１−１がバイナリＥＦであり、ＥＦ１−２がレコードＥＦであり、ＥＦ１−３がデータオブジェクトＥＦであるものとする。
【００２２】
次に、上記のようなファイルにアクセスするためのコマンドについて説明する。  
上記ＩＣカード２は、外部装置（ＩＣカード処理装置）１から与えられるコマンドに応じて動作する。従って、上記ＩＣカード２は、外部装置１からのコマンドに応じて特定のファイルに対するアクセス（読出し、書込み、更新、削除など）を行う。上記のようなコマンドは、所定のフォーマットで構成される。たとえば、本ＩＣカード２に与えられるコマンドは、コマンドの種類、および、アクセス対象のファイルなどを示す情報が所定のファーマットで格納されるようになっている。
【００２３】
図４は、コマンドフォーマットの例を示す図である。  
図４に示す例では、コマンドは、「ＣＬＡ」部、「ＩＮＳ」部、「Ｐ１」部、「Ｐ２」部、「Ｌｃ」部、「Ｄａｔａ」部、「Ｌｅ」部などの情報から構成されている。上記「ＣＬＡ」部および上記「ＩＮＳ」部には、コマンドの種類を示す情報が格納される。
【００２４】
上記「Ｐ１」部および上記「Ｐ２」部には、当該コマンドの処理パラメータを示す情報が格納される。上記「Ｐ１」部には、データのアクセス対象とすべきファイル（ＥＦ）を指定する情報（ＳＦＩを示す情報）が格納される。上記「Ｐ２」部には、たとえば、上記「Ｐ１」部で指定されるＥＦにおけるデータのアクセス開始位置（アドレス）を示す情報としてのオフセット値などが格納される。
【００２５】
また、上記「Ｌｃ」部には、たとえば、「Ｄａｔａ」部の長さを示す情報あるいは書込むべきデータ全体の長さを示す情報が格納される。上記「Ｄａｔａ」部には、書込みデータなどが格納される。ただし、バイナリデータとして書込むべきデータ全体の長さが、「Ｄａｔａ」部に格納しきれない長さである場合、上記「Ｄａｔａ」部には、書込むべきデータのうち最初の部分のデータが格納される。また、例えば、リード系のコマンドなどの「Ｄａｔａ」が不要なコマンドでは「Ｄａｔａ」部が省略される。
【００２６】
また、上記のようなコマンドには、特定のデータ形式のファイルをアクセス対象とするものがある。たとえば、バイナリ型のデータに対してアクセスを要求するコマンド（以下、バイナリ系コマンドとも称する）、レコード型のデータに対してアクセスを要求するコマンド（以下、レコード系コマンドとも称する）、データオブジェクト型のデータに対してアクセスを要求するコマンド（以下、データオブジェクト系コマンドとも称する）などがある。なお、カレントファイルを指定するためのセレクトコマンドなどのコマンドは、アクセス対象とするファイルのデータ構造が限定されないようになっている。
【００２７】
図５は、各種のデータ構造のファイルにアクセスするためのコマンドの例を示す図である。  
図５に示すように、バイナリＥＦに対してアクセスするためのコマンドには、バイナリデータの読出しを要求するリードバイナリ（READ BINARY）、バイナリデータの書込みを要求するライトバイナリ（WRITE BINARY）、バイナリデータの更新を要求するアップデートバイナリ（UPDATE BINARY）、バイナリデータの削除を要求するイレーズバイナリ（ERASE BINARY）などのコマンドがある。
【００２８】
また、レコードＥＦに対してアクセスするためのコマンドには、レコードデータの読出しを要求するリードレコード（READ RECORD）、レコードデータの書込みを要求するライトレコード（WRITE RECORD）、レコードデータの追記を要求するアペンドレコード（APPEND RECORD）、レコードデータの更新を要求するアップデートレコード（UPDATE RECORD）などのコマンドがある。  
また、データオブジェクトＥＦに対してアクセスするためのコマンドには、データの取得を要求するゲットデータ（GET DATA）、データの格納を要求するプットデータ（PUT DATA）などのコマンドがある。
【００２９】
次に、本ＩＣカード２におけるカレントファイルの設定について説明する。  
上述したようなアクセス対象とするファイルのデータ構造が限定される各種のコマンドは、異なるデータ構造（適合しないデータ構造）のファイルを指定している場合、当該コマンド処理が正常に実行されずに異常終了となる。すなわち、アクセス対象とするファイルのデータ構造が限定される各種のコマンドでは、必ず適合するデータ構造のファイルを指定した状態でなければならない。
【００３０】
仮に、１つのカレントファイルだけでファイルへのアクセス制御を行うと、常に、直前に実行したコマンドでアクセスしたファイルがカレントファイルとなる。たとえば、直前に実行したコマンドがレコードＥＦに対するアクセスである場合（つまり、１つのカレントファイルがレコード型ＥＦである場合）、カレントファイルを指定したバイナリ系コマンドあるいはデータオブジェクト系コマンドは、アクセス対象のファイルのデータ構造がレコード型であるため、正常に実行されない。言い換えると、直前のコマンドとは異なるデータ構造のファイルへのアクセスを要求するコマンドは、当該コマンドが適合するデータ構造のファイルの何れかをアクセス対象のファイルとして必ず指定しなければならない。
【００３１】
これに対して、本ＩＣカード２では、上記ワーキングメモリ２３内に各データ形式ごとのカレントファイルを示す情報を可能するためのテーブル２３ａ、２３ｂ、２３ｃが設けられる。各テーブル２３ａ、２３ｂ、２３ｃには、各データ形式（バイナリ型、レコード型、データオブジェクト型）ごとのカレントファイルを示す情報が格納される。たとえば、テーブル２３ａには、バイナリ型のＥＦ群におけるカレントファイルを示す情報が格納され、テーブル２３ｂには、レコード型のＥＦ群におけるカレントファイルを示す情報が格納され、テーブル２３ｃには、データオブジェクト型のＥＦ群におけるカレントファイルを示す情報が格納される。
【００３２】
上記のような複数のテーブルで各データ構造ごとにカレントファイルを設定することにより、データ構造の異なるファイル群に対して各種のコマンドを用いて効率的にアクセスすることができる。すなわち、ＥＦのデータ構造ごとにカレントＥＦを設定すると、直前のコマンドとは異なるデータ構造のＥＦへのアクセスを要求するコマンドが、特定のファイルを指定していなくても（カレントＥＦ指定であっても）、当該データ構造のＥＦのうち最後にアクセスした当該データ構造のＥＦ（当該データ構造のカレントＥＦ）をアクセス対象とすることが可能となる。
【００３３】
次に、上記のように構成されるＩＣカード２における処理例について説明する。
【００３４】
まず、セレクトコマンドによるカレントＥＦの設定処理について説明する。  
図６は、セレクトコマンドに対する処理例を説明するためのフローチャートである。  
まず、上記ＩＣカード２が上記ＩＣカード処理装置１からのコマンドを受信すると（ステップＳ１０、ＹＥＳ）、上記制御素子２１は、受信したコマンドの種類を判別する。受信したコマンドがカレントＥＦを指定するセレクトコマンドであった場合（ステップＳ１１、ＹＥＳ）、上記制御素子２１は、セレクトコマンドで指定されたＥＦが存在するか否かを判断する（ステップＳ１２）。
【００３５】
当該セレクトコマンドで指定されたＥＦが存在しないと判断した場合（ステップＳ１２、ＮＯ）、上記制御素子２１は、当該セレクトコマンドに対する応答として指定されたＥＦが存在しない旨の応答を上記ＩＣカード処理装置１へ通知し、当該セレクトコマンドに対する処理を異常終了とする（ステップＳ１３）。  
当該セレクトコマンドで指定されたＥＦが存在すると判断した場合（ステップＳ１２、ＹＥＳ）、上記制御素子２１は、当該ＥＦに格納されているデータの構造（ＥＦの種類）を判定する。
【００３６】
すなわち、当該セレクトコマンドで指定されたＥＦがバイナリ型のデータが格納されているバイナリＥＦであると判定した場合（ステップＳ１４、ＹＥＳ）、上記制御素子２１は、当該セレクトコマンドで指定されたＥＦを示す情報をバイナリＥＦのカレントＥＦを示すテーブル２３ａに格納する（ステップＳ１５）。これにより、当該ＩＣカード２では、ＩＣカード処理装置１から供給されたセレクトコマンドで指定されたＥＦ（バイナリＥＦ）がバイナリＥＦのカレントＥＦとして設定される。この場合、上記制御素子２１は、当該セレクトコマンドに対する処理が正常に終了したことを示す応答を上記ＩＣカード処理装置１へ送信し、処理を正常終了する（ステップＳ１９）。
【００３７】
また、当該セレクトコマンドで指定されたＥＦがレコード構造のデータが格納されているレコードＥＦであると判定した場合（ステップＳ１６、ＹＥＳ）、上記制御素子２１は、当該セレクトコマンドで指定されたＥＦを示す情報をレコードＥＦのカレントＥＦを示すテーブル２３ｂに格納する（ステップＳ１７）。これにより、当該ＩＣカード２では、上記ＩＣカード処理装置１から供給されたセレクトコマンドで指定されたＥＦ（レコードＥＦ）がレコードＥＦのカレントＥＦとして設定される。この場合、上記制御素子２１は、当該セレクトコマンドに対する処理が正常に終了したことを示す応答を上記ＩＣカード処理装置１へ送信し、処理を正常終了する（ステップＳ１９）。
【００３８】
また、当該セレクトコマンドで指定されたＥＦがバイナリＥＦでなくレコードＥＦでもないと判定した場合、つまり、当該セレクトコマンドで指定されたＥＦがデータオブジェクト構造のデータが格納されているデータオブジェクトＥＦであると判定した場合（ステップＳ１６、ＮＯ）、上記制御素子２１は、当該セレクトコマンドで指定されたＥＦを示す情報をデータオブジェクトＥＦのカレントＥＦを示すテーブル２３ｃに格納する（ステップＳ１８）。これにより、当該ＩＣカード２では、上記ＩＣカード処理装置１から供給されたセレクトコマンドで指定されたＥＦ（データオブジェクトＥＦ）がデータオブジェクトＥＦのカレントＥＦとして設定される。この場合、上記制御素子２１は、当該セレクトコマンドに対する処理が正常に終了したことを示す応答を上記ＩＣカード処理装置１へ送信し、処理を正常終了する（ステップＳ１９）。
【００３９】
上記のように、ＩＣカード２は、特定のＥＦを選択することを要求するセレクトコマンドを受信した場合、指定されたＥＦのデータ構造を判別し、指定されたＥＦを当該ＥＦのデータ構造に対応するカレントＥＦとして設定する。これにより、データ構造ごとにカレントＥＦを設定することでき、データ構造ごとのカレントＥＦに対するアクセスが可能となる。
【００４０】
次に、ＥＦを指定したコマンドに対する処理について説明する。  
図７は、特定のＥＦが指定されているコマンドに対する処理例を説明するためのフローチャートである。  
まず、上記ＩＣカード２が上記ＩＣカード処理装置１からのコマンドを受信すると（ステップＳ２０、ＹＥＳ）、上記制御素子２１は、受信したコマンドでアクセス対象とする特定のＥＦが指定されているか否かを判別する。受信したコマンドにおいて特定のＥＦが指定されている場合（ステップＳ２１、ＹＥＳ）、上記制御素子２１は、当該コマンドで指定されたＥＦが存在するか否かを判断する（ステップＳ２２）。
【００４１】
当該コマンドで指定されたＥＦが存在しないと判断した場合（ステップＳ２２、ＮＯ）、上記制御素子２１は、当該コマンドに対する応答として指定されたＥＦが存在しない旨の応答を上記ＩＣカード処理装置１へ通知するとともに、当該コマンドに対する処理を異常終了とする（ステップＳ２３）。  
当該コマンドで指定されたＥＦが存在すると判断した場合（ステップＳ２２、ＹＥＳ）、上記制御素子２１は、当該コマンドで指定されたＥＦに格納されているデータの構造（ＥＦの種類）を判定する。
【００４２】
すなわち、当該コマンドで指定されたＥＦがバイナリ型のデータが格納されているバイナリＥＦであると判定した場合（ステップＳ２４、ＹＥＳ）、上記制御素子２１は、当該コマンドがバイナリＥＦをアクセス対象とするコマンドであるか否かを判断する（ステップＳ２５）。たとえば、図５に示すように、レコード系コマンドあるいはデータオブジェクト系コマンドでは、バイナリＥＦをアクセス対象としない。このため、当該コマンドがレコード系コマンドあるいはデータオブジェクト系コマンドである場合、上記制御素子２１は、当該コマンドがバイナリＥＦをアクセス対象とするコマンドでないと判断する。
【００４３】
上記判断により当該コマンドがバイナリＥＦをアクセス対象とするコマンドでないと判断した場合（ステップＳ２５、ＮＯ）、上記制御素子２１は、当該コマンドで指定されたＥＦが無効である旨をＩＣカード処理装置１へ通知するとともに、当該コマンドを異常終了とする（ステップＳ２３）。  
また、上記判断により当該コマンドがバイナリＥＦをアクセス対象とするコマンドであると判断した場合（ステップＳ２５、ＹＥＳ）、上記制御素子２１は、指定されたＥＦをバイナリＥＦのカレントＥＦに設定する（ステップＳ２６）。当該コマンドで指定されたＥＦをバイナリＥＦのカレントＥＦに設定すると、上記制御素子２１は、バイナリＥＦのカレントＥＦに設定したＥＦをアクセス対象としてコマンドで要求された処理を実行する（ステップＳ３２）。当該コマンドで要求された処理を実行すると、上記制御素子２１は、その実行結果をＩＣカード処理装置１へ通知し、処理を終了する（ステップＳ３３）。
【００４４】
また、当該コマンドで指定されたＥＦがレコード型のデータが格納されているレコードＥＦであると判定した場合（ステップＳ２７、ＹＥＳ）、上記制御素子２１は、当該コマンドがレコードＥＦをアクセス対象とするコマンドであるか否かを判断する（ステップＳ２８）。たとえば、図５に示すように、バイナリ系コマンドあるいはデータオブジェクト系コマンドでは、レコードＥＦをアクセス対象としない。このため、当該コマンドがバイナリ系コマンドあるいはデータオブジェクト系コマンドである場合、上記制御素子２１は、当該コマンドがレコードＥＦをアクセス対象とするコマンドでないと判断する。
【００４５】
上記判断により当該コマンドがレコードＥＦをアクセス対象とするコマンドでないと判断した場合（ステップＳ２８、ＮＯ）、上記制御素子２１は、当該コマンドで指定されたＥＦが無効である旨をＩＣカード処理装置１へ通知するとともに、当該コマンドを異常終了とする（ステップＳ２３）。  
また、上記判断により当該コマンドがレコードＥＦをアクセス対象とするコマンドであると判断した場合（ステップＳ２８、ＹＥＳ）、上記制御素子２１は、指定されたＥＦをレコードＥＦのカレントＥＦに設定する（ステップＳ２９）。当該コマンドで指定されたＥＦをレコードＥＦのカレントＥＦに設定すると、上記制御素子２１は、レコードＥＦのカレントＥＦに設定したＥＦをアクセス対象としてコマンドで要求された処理を実行する（ステップＳ３２）。当該コマンドで要求された処理を実行すると、上記制御素子２１は、その実行結果をＩＣカード処理装置１へ通知し、処理を終了する（ステップＳ３３）。
【００４６】
また、当該コマンドで指定されたＥＦがバイナリＥＦでもなくレコードＥＦでもないと判定した場合、つまり、当該コマンドで指定されたＥＦがデータオブジェクト型のデータが格納されているデータオブジェクトＥＦであると判定した場合（ステップ２７、ＮＯ）、上記制御素子２１は、当該コマンドがデータオブジェクトＥＦをアクセス対象とするコマンドであるか否かを判断する（ステップＳ３０）。たとえば、図５に示すように、バイナリ系コマンドあるいはレコード系コマンドでは、データオブジェクトＥＦをアクセス対象としない。このため、当該コマンドがバイナリ系コマンドあるいはレコード系コマンドである場合、上記制御素子２１は、当該コマンドがデータオブジェクトＥＦをアクセス対象とするコマンドでないと判断する。
【００４７】
上記判断により当該コマンドがデータオブジェクトＥＦをアクセス対象とするコマンドでないと判断した場合（ステップＳ３０、ＮＯ）、上記制御素子２１は、当該コマンドで指定されたＥＦが無効である旨をＩＣカード処理装置１へ通知するとともに、当該コマンドを異常終了とする（ステップＳ２３）。  
また、上記判断により当該コマンドがデータオブジェクトＥＦをアクセス対象とするコマンドであると判断した場合（ステップＳ３０、ＹＥＳ）、上記制御素子２１は、指定されたＥＦをデータオブジェクトＥＦのカレントＥＦに設定する（ステップＳ３１）。当該コマンドで指定されたＥＦをデータオブジェクトＥＦのカレントＥＦに設定すると、上記制御素子２１は、データオブジェクトＥＦのカレントＥＦに設定したＥＦをアクセス対象としてコマンドで要求された処理を実行する（ステップＳ３２）。当該コマンドで要求された処理を実行すると、上記制御素子２１は、その実行結果をＩＣカード処理装置１へ通知し、処理を終了する（ステップＳ３３）。
【００４８】
上記のように、ＩＣカード２は、特定のＥＦが指定されているコマンドを受信した場合、指定されたＥＦのデータ構造を判別し、当該コマンドがアクセス対象とするＥＦの種別が指定されているＥＦのデータ構造と矛盾しなければ、指定されたＥＦを当該ＥＦのデータ構造に対応するカレントＥＦとして設定し、当該データ構造のＥＦのカレントＥＦをアクセス対象として当該コマンドで要求された処理を実行する。これにより、データ構造ごとにカレントＥＦを設定することでき、指定されたＥＦをカレントＥＦとしたコマンド処理が可能となる。
【００４９】
次に、カレントＥＦを指定したコマンドに対する処理について説明する。  
図８は、カレントＥＦが指定されているコマンドに対する処理例を説明するためのフローチャートである。  
まず、上記ＩＣカード２が上記ＩＣカード処理装置１からのコマンドを受信すると（ステップＳ４０、ＹＥＳ）、上記制御素子２１は、受信したコマンドでアクセス対象とするＥＦがカレントＥＦに指定されているか否かを判別する（ステップＳ４１）。
【００５０】
すなわち、受信したコマンドにおいてカレントＥＦが指定されている場合（ステップＳ４１、ＹＥＳ）、上記制御素子２１は、まず、当該コマンドがバイナリＥＦをアクセス対象とするバイナリ系コマンドであるか否かを判断する（ステップＳ４２）。たとえば、受信したコマンドが図５に示すようなバイナリ系コマンドである場合、上記制御素子２１は、当該コマンドがバイナリＥＦをアクセス対象とするコマンドであると判断する。
【００５１】
上記判断により当該コマンドがバイナリＥＦをアクセス対象とするバイナリ系コマンドであると判断した場合（ステップＳ４２、ＹＥＳ）、上記制御素子２１は、バイナリＥＦに対するカレントＥＦが存在するか否かを判断する（ステップＳ４３）。つまり、上記制御素子２１は、バイナリＥＦのカレントＥＦを示す情報が格納されるテーブル２３ａにカレントＥＦを示す情報が格納されているか否かを判断する。
【００５２】
上記判断により当該コマンドがアクセス対象するデータ構造のＥＦに対するカレントＥＦが存在しないと判断した場合、つまり、バイナリＥＦに対するカレントＥＦが設定されていない場合（ステップＳ４３、ＮＯ）、上記制御素子２１は、当該コマンドに対する応答として指定されたカレントＥＦが存在しない旨の応答を上記ＩＣカード処理装置１へ通知するとともに、当該コマンドに対する処理を異常終了とする（ステップＳ４４）。  
上記判断により当該コマンドがアクセス対象とするデータ構造のＥＦに対するカレントＥＦが存在すると判断した場合、つまり、バイナリＥＦに対するカレントＥＦが設定されている場合（ステップＳ４３、ＹＥＳ）、上記制御素子２１は、上記テーブル２３ａに格納されているバイナリＥＦのカレントＥＦを示す情報に基づいてアクセス対象とするバイナリＥＦのカレントＥＦを特定する（ステップＳ４５）。当該コマンドがアクセス対象とするカレントＥＦ（バイナリＥＦに対するカレントＥＦ）を特定すると、上記制御素子２１は、バイナリＥＦのカレントＥＦをアクセス対象として当該コマンドが要求している処理を実行する（ステップＳ５２）。当該コマンドで要求された処理を実行すると、上記制御素子２１は、その実行結果をＩＣカード処理装置１へ通知し、処理を終了する（ステップＳ５３）。
【００５３】
また、受信したコマンドがバイナリ系コマンドでない場合（ステップＳ４１、ＮＯ）、上記制御素子２１は、当該コマンドがレコードＥＦをアクセス対象とするレコード系コマンドであるか否かを判断する（ステップＳ４６）。たとえば、受信したコマンドが図５に示すようなレコード系コマンドである場合、上記制御素子２１は、当該コマンドがレコードＥＦをアクセス対象とするコマンドであると判断する。
【００５４】
上記判断により当該コマンドがレコードＥＦをアクセス対象とするレコード系コマンドであると判断した場合（ステップＳ４６、ＹＥＳ）、上記制御素子２１は、レコードＥＦに対するカレントＥＦが存在するか否かを判断する（ステップＳ４７）。つまり、上記制御素子２１は、レコードＥＦのカレントＥＦを示す情報が格納されるテーブル２３ｂにカレントＥＦを示す情報が格納されているか否かを判断する。
【００５５】
上記判断により当該コマンドがアクセス対象とするデータ構造のＥＦに対するカレントＥＦが存在しないと判断した場合、つまり、レコードＥＦに対するカレントＥＦが設定されていない場合（ステップＳ４７、ＮＯ）、上記制御素子２１は、当該コマンドに対する応答として指定されたカレントＥＦが存在しない旨の応答を上記ＩＣカード処理装置１へ通知するとともに、当該コマンドに対する処理を異常終了とする（ステップＳ４４）。  
上記判断により当該コマンドがアクセス対象とするデータ構造のＥＦに対するカレントＥＦが存在すると判断した場合、つまり、レコードＥＦに対するカレントＥＦが設定されている場合（ステップＳ４７、ＹＥＳ）、上記制御素子２１は、上記テーブル２３ｂに格納されているレコードＥＦのカレントＥＦを示す情報に基づいてアクセス対象とするレコードＥＦのカレントＥＦを特定する（ステップＳ４８）。当該コマンドがアクセス対象とするカレントＥＦ（レコードＥＦに対するカレントＥＦ）を特定すると、上記制御素子２１は、レコードＥＦのカレントＥＦをアクセス対象として当該コマンドが要求している処理を実行する（ステップＳ５２）。当該コマンドで要求された処理を実行すると、上記制御素子２１は、その実行結果をＩＣカード処理装置１へ通知し、処理を終了する（ステップＳ５３）。
【００５６】
また、受信したコマンドがバイナリ系コマンドでなくレコード系コマンドでもない場合（ステップＳ４６、ＮＯ）、上記制御素子２１は、当該コマンドがデータオブジェクトＥＦをアクセス対象とするデータオブジェクト系コマンドであるか否かを判断する（ステップＳ４９）。たとえば、受信したコマンドが図５に示すようなデータオブジェクト系コマンドである場合、上記制御素子２１は、当該コマンドがデータオブジェクトＥＦをアクセス対象とするコマンドであると判断する。
【００５７】
上記判断により当該コマンドがデータオブジェクトＥＦをアクセス対象とするデータオブジェクト系コマンドであると判断した場合（ステップＳ４９、ＹＥＳ）、上記制御素子２１は、データオブジェクトＥＦに対するカレントＥＦが存在するか否かを判断する（ステップＳ５０）。つまり、上記制御素子２１は、データオブジェクトＥＦのカレントＥＦを示す情報が格納されるテーブル２３ｃにカレントＥＦを示す情報が格納されているか否かを判断する。
【００５８】
上記判断により当該コマンドがアクセス対象とするデータ構造のＥＦに対するカレントＥＦが存在しないと判断した場合、つまり、データオブジェクトＥＦに対するカレントＥＦが設定されていない場合（ステップＳ５０、ＮＯ）、上記制御素子２１は、当該コマンドに対する応答として指定されたカレントＥＦが存在しない旨の応答を上記ＩＣカード処理装置１へ通知するとともに、当該コマンドに対する処理を異常終了とする（ステップＳ４４）。
【００５９】
上記判断により当該コマンドがアクセス対象とするデータ構造のＥＦに対するカレントＥＦが存在すると判断した場合、つまり、データオブジェクトＥＦに対するカレントＥＦが設定されている場合（ステップＳ５０、ＹＥＳ）、上記制御素子２１は、上記テーブル２３ｂに格納されているデータオブジェクトＥＦのカレントＥＦを示す情報に基づいてアクセス対象とするデータオブジェクトＥＦのカレントＥＦを特定する（ステップＳ５１）。当該コマンドがアクセス対象とするカレントＥＦ（データオブジェクトＥＦに対するカレントＥＦ）を特定すると、上記制御素子２１は、データオブジェクトＥＦのカレントＥＦをアクセス対象として当該コマンドが要求している処理を実行する（ステップＳ５２）。当該コマンドで要求された処理を実行すると、上記制御素子２１は、その実行結果をＩＣカード処理装置１へ通知し、処理を終了する（ステップＳ５３）。
【００６０】
上記のように、ＩＣカード２は、カレントＥＦが指定されているコマンドを受信した場合、当該コマンドがアクセス対象とするＥＦのデータ構造に対するカレントＥＦが設定されていれば、当該コマンドがアクセス対象とするＥＦのデータ構造に対応するカレントＥＦをアクセス対象として当該コマンドで要求された処理を実行する。これにより、カレントＥＦを指定したコマンドに対して、当該コマンドがアクセス対象とするデータ構造に対するカレントＥＦをアクセス対象として処理を実行できる。この結果として、データ構造が異なる各種のＥＦをアクセス対象とする各種のコマンドが任意の順序で与えられる場合であっても、各データ構造ごとに設定されるカレントＥＦにより効率的なコマンド処理が実現できる。
【図面の簡単な説明】
【００６１】
【図１】本実施の形態に係るＩＣカードとＩＣカード処理装置の構成例を概略的に示すブロック図。
【図２】本実施の形態に係るＩＣカードのハードウエア構成例を概略的に示すブロック図。
【図３】データメモリに格納されるファイルの構造例を示す図。
【図４】コマンドフォーマットの例を示す図。
【図５】各種のデータ構造のファイル（ＥＦ）にアクセスするためのコマンドの例を示す図。
【図６】特定のＥＦをカレントＥＦに指定するためのセレクトコマンドに対する処理例を説明するためのフローチャート。
【図７】特定のＥＦが指定されているコマンドに対する処理例を説明するためのフローチャート。
【図８】カレントＥＦが指定されているコマンドに対する処理例を説明するためのフローチャート。
【符号の説明】
【００６２】
Ｂ…本体、Ｍ…モジュール、Ｃ…ＩＣチップ、１…ＩＣカード処理装置（外部装置）、２…ＩＣカード、１１…端末装置、１２…カードリーダライタ、２１…制御素子、２２…データメモリ（第１の記憶手段）、２３…ワーキングメモリ、２３ａ、２３ｂ、２３ｃ…テーブル（第２の記憶手段）、２４…プログラムメモリ、２５…通信部
【図１】
0005038918.tif 000002
【図２】
0005038918.tif 000003
【図３】
0005038918.tif 000004
【図４】
0005038918.tif 000005
【図５】
0005038918.tif 000006
【図６】
0005038918.tif 000007
【図７】
0005038918.tif 000008
【図８】
0005038918.tif 000009