(57)【特許請求の範囲】
【請求項１】
外部装置との通信を行う通信部と、
前記通信部により前記外部装置から受信したコマンドに応じたコマンド処理を実行する実行部と、
前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する生成部と、
前記生成部により生成した前記追加情報を記憶する記憶部と、
前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する第１の処理部と、
前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する第２の処理部と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
前記生成部は、前記実行部により実行した前記コマンド処理がエラーとなった場合に前記コマンド処理におけるエラーの内容を示す追加情報を生成し、
前記第１の処理部は、前記実行部によるコマンド処理がエラーとなったことを示す情報とともに前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
前記第２の処理部は、前記第１の処理部により追加情報が有ることを示す情報を含むレスポンスを送信した後、次に受信するコマンドが前記追加情報を要求するコマンドである場合に、前記追加情報を前記外部装置へ送信する、
ことを特徴とする前記請求項１又は２の何れか１つに記載の携帯可能電子装置。
【請求項４】
さらに、データを記憶するメモリを有し、
前記生成部は、前記メモリへのデータの書込みを要求する書込みコマンドに応じた書込み処理がエラーとなった場合に、前記エラーの詳細な内容を示す追加情報を生成し、
前記第１の処理部は、前記実行部による前記書込み処理がエラーとなったことを示す情報とともに前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する、
ことを特徴とする前記請求項１乃至３の何れか１つに記載の携帯可能電子装置。
【請求項５】
前記記憶部は、前記生成部により生成した追加情報を複数件分記憶し、
前記第２の処理部は、前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶した追加情報から前記外部装置へ送信すべき１つの追加情報を特定し、前記特定した追加情報を前記外部装置へ送信する、
を有することを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項６】
前記第２の処理部は、前記追加情報を要求するコマンドが追加情報を指定する情報を含まない場合、前記記憶部に記憶されている最新の追加情報を送信すべき追加情報と特定する、
ことを特徴とする前記請求項５に記載の携帯可能電子装置。
【請求項７】
前記記憶部は、前記生成部により生成した追加情報と、当該追加情報を生成した処理のコマンドを示す情報と、を対応付けて記憶し、
前記第２の処理部は、前記追加情報を要求するコマンドにおいて送信すべき追加情報を生成した処理のコマンドが指定されている場合、前記指定されたコマンドと対応づけて前記記憶部に記憶している追加情報を送信すべき追加情報と特定する、
ことを特徴とする前記請求項５又は６の何れか１つに記載の携帯可能電子装置。
【請求項８】
さらに、前記第２の処理部により送信した追加情報を前記記憶部から削除する削除部（Ｓ１２９）を有する、
ことを特徴とする前記請求項１乃至７の何れか１つに記載の携帯可能電子装置。
【請求項９】
さらに、前記生成部により生成した追加情報の種別を決定する種別決定部と、
前記追加情報を要求するコマンド以外のコマンドを受信した場合、前記記憶部が記憶している追加情報を当該追加情報の種別に応じて処理する追加情報処理部と、を有し、
前記記憶部は、前記追加情報と当該追加情報の種別とを対応づけて記憶する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項１０】
前記追加情報処理部は、前記記憶部に記憶している追加情報の種別が前記外部装置へ通知が必須な種別である場合、前記外部装置から受信したコマンドに対する処理として前記第１の処理部により当該追加情報が有ることを通知する処理のみを行う、
ことを特徴とする前記請求項９に記載の携帯可能電子装置。
【請求項１１】
前記追加情報処理部は、前記記憶部に記憶している追加情報の種別が前記外部装置へ通知が任意の種別である場合、前記外部装置から受信したコマンドに対する処理として当該追加情報を削除する、
ことを特徴とする前記請求項９または１０の何れかに記載の携帯可能電子装置。
【請求項１２】
前記種別決定部は、前記追加情報の種別として、当該追加情報を前記外部装置へ通知する必要性を示す優先度を決定し、
前記追加情報処理部は、前記記憶部が記憶する前記追加情報に対する処理内容を優先度に応じて決定する、
ことを特徴とする前記請求項９乃至１１の何れか１つに記載の携帯可能電子装置。
【請求項１３】
前記種別決定部は、同じ内容の追加情報が前記記憶部に記憶されている場合、当該追加情報の優先度を高くする、
ことを特徴とする前記請求項１２に記載の携帯可能電子装置。
【請求項１４】
外部装置との通信を行う通信部と、前記通信部により前記外部装置から受信したコマンドに応じたコマンド処理を実行する実行部と、前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する生成部と、前記生成部により生成した前記追加情報を記憶する記憶部と、前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する第１の処理部と、前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する第２の処理部と、を有するモジュールと、
前記モジュールを有する本体と、
を有することを特徴とするＩＣカード。
【請求項１５】
外部装置から供給されるコマンドを処理する携帯可能電子装置に用いられる制御方法であって、
前記外部装置から受信したコマンドに応じたコマンド処理を実行し、
前記実行した前記コマンド処理の結果に応じて、前記コマンド処理の結果に対する追加情報を生成し、
前記生成した前記追加情報を記憶し、
前記生成した前記追加情報を記憶した場合、前記実行したコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信し、
前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記追加情報を前記外部装置へ送信する、
ことを特徴とする携帯可能電子装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
たとえば、携帯可能電子装置、ＩＣカード、および携帯可能電子装置の制御方法に関する。
【背景技術】
【０００２】
従来、携帯可能電子装置としてのＩＣカードは、たとえば、メモリやＣＰＵなどの機能を有したＩＣモジュールがプラスチック板などで構成される筐体内に埋設されている。このようなＩＣカードは、入退出管理、クレジットカード、携帯電話、電子商取引などの高いセキュリティ性が必要ないろいろな分野で使用されている。ＩＣカードは、単体で動作することはなく、上位装置からのコマンドを受信し、受信したコマンドを解釈して処理を実行し、処理結果をレスポンスとして上位装置へ返信することによって動作する。つまり、ＩＣカードは、通常、上位装置に対して完全なスレーブ状態であり、上位装置からのコマンドが無ければ動作することができない。このようなＩＣカード処理システムでは、上位装置からＩＣカードへ供給するコマンドのフォーマットとＩＣカードから上位装置へ返信されるレスポンスのフォーマットとが厳格に決められる必要がある。たとえば、一般的なＩＣカードに適用される国際標準規格としてのＩＳＯ／ＩＥＣ７８１６では、コマンドのフォーマットとレスポンスのフォーマットとの体系（コマンド体系）が規定されている。ＩＣカードでは、上記のようなコマンド体系が予め規定されているため、レスポンスの自由度が少ないのが現状である。
【０００３】
従来、ＩＣカードを処理するＩＣカード処理システムでは、実際の運用形態として、ＩＣカードに対して簡単な処理を要求することがほとんどである。ＩＣカードに要求する処理が簡単な処理のみであれば、ＩＣカードから上位装置へのレスポンスに自由度がなくてもほとんど問題がない。これは、レスポンスに必ず含まれるステータスワードによって、簡単な情報をＩＣカードから上位装置へ送信可能であるためである。たとえば、書込み系のコマンドに対するレスポンスに含まれるステータスワードでは、当該コマンドに対する処理結果として、「正常終了」、「ハードウェアが故障している」、「アクセス権限がない」、「対象のファイルが存在しない」などの情報を示すことが可能である。
【０００４】
しかしながら、近年では、ＩＣカード処理システムあるいはＩＣカードに要求する処理が複雑化してきている。ＩＣカード処理システムあるいはＩＣカードに要求する処理が複雑化すると、コマンドに対する処理結果を示す情報が「ステータスワード」だけでは不十分なことが多くなる。エラーが発生した後の処理を効率的に実施するためには、エラー内容の詳細な情報を上位装置が把握することが必要となる。たとえば、書込み系のコマンドに対する処理に対するエラー時のレスポンスとしては、単に書込みエラーが発生したことだけでなく、「アドレスの○○○○○○○○番地が故障している」、もしくは、「論理チャネル○番が、既にファイルを占有しているために、書込みが実施できない」、といったエラー内容の詳細な情報を必要となる。しかしながら、現状のＩＣカード処理システムでは、ステータスワード以外でエラーの詳細な内容を示す情報をＩＣカードから上位装置へ提供することができない。
【０００５】
また、書込み系コマンドに対しては、ステータスワードのみでレスポンスを返すコマンド体系が一般的である。すなわち、書込み系コマンドに対するレスポンスにステータスワード以外のエラーの詳細な内容を示す情報（レスポンスデータ）を追加するのは、書込み系コマンドに対するレスポンスのフォーマット自体を変更する必要がある。特定のコマンドに対するレスポンスのフォーマットを変更するには、コマンド体系全体を大きく変更しなければならなくなる。このようなコマンド体系全体の変更は、現実的ではないと考えられる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】ＩＳＯ／ＩＥＣ７８１６
【発明の概要】
【発明が解決しようとする課題】
【０００７】
コマンド体系を変更することなく、コマンドに対する処理結果としての詳細な情報を送信可能な携帯可能電子装置、ＩＣカード、および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態としての携帯可能電子装置は、実行部と、生成部と、記憶部と、第１の処理部と、第２の処理部とを有する。実行部は、前記外部装置から受信したコマンドに応じたコマンド処理を実行する。生成部は、前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する。記憶部は、前記生成部により生成した前記追加情報を記憶する。第１の処理部は、前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する。第２の処理部は、前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態に係る携帯可能電子装置としてのＩＣカードのハードウエア構成を概略的に示すブロック図。
【図２】不揮発性メモリに記憶されるデータのファイル構成例を示す図。
【図３】ＩＣカードにおけるソフトウエア構成を説明するための模式図。
【図４】ＩＣカード処理システムに用いられるコマンド体系の例を示す図である。
【図５】ＩＣカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図６】書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンス図である。
【図７】複数の論理チャネルによる各ファイルへのアクセス状態の例を示す図である。
【図８】複数の追加情報が記憶可能な追加情報テーブルの構成例を示す図である。
【図９】ＩＣカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図１０】最新の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図１１】別のコマンドを実行後に過去の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図１２】複数の追加情報が記憶可能な追加情報テーブルの構成例を示す図である。
【図１３】ＩＣカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図１４】最新の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図１５】別のコマンドを実行後に過去の追加情報を読み出す場合の処理例を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
以下、実施の形態について図面を参照して説明する。
【００１１】
図１は、実施の形態に係る携帯可能電子装置としてのＩＣカード１のハードウエア構成を概略的に示すものである。  
ＩＣカード１は、上位装置としてのＩＣカード処理装置２からのコマンドに応じて処理を実行する。すなわち、ＩＣカード１とＩＣカード処理装置２とは、図１に示すようなＩＣカード処理システムを構成している。
【００１２】
図１に示すように、ＩＣカード１は、ＣＰＵ（セントラル・プロセッシング・ユニット）１１、ＲＯＭ（リード・オンリ・メモリ）１２、ＲＡＭ（ランダム・アクセス・メモリ）１３、通信ユニット（ＵＡＲＴ）１４、コプロセッサ（Ｃｏ−Ｐｒｏｃｅｓｓｏｒ）１５、および、不揮発性メモリ（ＮＶ（ＥＥＰＲＯＭ））１６などを有している。
【００１３】
上記ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、通信ユニット１４、コプロセッサ１５および不揮発性メモリ１６は、ＩＣチップなどにより一体的に形成されたモジュールＣａにより構成される。このモジュールＣａは、当該ＩＣカード１を形成する筐体（本体）Ｃの内部に埋設される。すなわち、上記ＩＣカード１は、モジュールＣａが埋設された筐体Ｃにより構成されている。
【００１４】
また、上記ＩＣカード１は、上位装置としての上記ＩＣカード処理装置２から電力などの供給を受けた際、活性化し（動作可能な状態となり）、上記ＩＣカード処理装置２からのコマンドに応じて動作するようになっている。ＩＣカード処理装置２は、本ＩＣカード１の通信方式に適合したリーダライタが接続されたパーソナルコンピュータなどにより構成される。たとえば、ＩＣカード処理装置２は、図示しない制御部がアプリケーションプログラムを実行することにより、ＩＣカード１に対してコマンドを送信したり、ＩＣカード１からのレスポンスを受信したりする機能を実現している。
【００１５】
上記ＣＰＵ１１は、当該ＩＣカード１全体の制御およびデータ処理などを司るものである。上記ＣＰＵ１１は、制御プログラム等に基づいて動作することにより種々の処理を行う。上記ＲＯＭ１２は、制御用プログラムおよび制御データなどが予め格納されている不揮発性メモリである。上記ＲＡＭ１３は、ワーキングメモリとして機能する揮発性のメモリである。
【００１６】
上記ＲＡＭ１３には、追加情報テーブル１３ａ（１３ａ´）が設けられる。上記追加情報テーブル１３ａ（１３ａ´）には、コマンドの処理結果などを示す追加情報（詳細情報）を複数件分保存する。上記追加情報テーブル１３ａ（１３ａ´）に保存される追加情報は、コマンドのレスポンスでは送信しきれない処理内容の詳細な内容を示す情報である。たとえば、コマンドの実行結果がエラーとなった場合、エラー内容の詳細を示す情報が追加情報（詳細情報）として追加情報テーブル１３ａ（１３ａ´）に保存される。上記追加情報テーブル１３ａ（１３ａ´）には、記憶する追加情報の最大件数が設定されるようにしても良い。なお、上記追加情報テーブル１３ａ（１３ａ´）がＲＡＭ１３に設けられる場合、当該ＩＣカード１の非活性化されると、追加情報テーブル１３ａ（１３ａ´）に記憶した追加情報がクリアされる。
【００１７】
上記通信ユニット１４は、通信手段として機能し、上位装置としてのＩＣカード処理装置２とのデータ通信を制御するものである。また、上記通信ユニット１４は、上記ＩＣカード１が動作するための電源を受給する手段としても機能する。上記コプロセッサ１５は、暗号化あるいは復号化などの演算の補助を行うものである。上記不揮発性メモリ１６は、各種データやアプリケーション（アプリケーションプログラム）などを記憶する書き換え可能な不揮発性メモリである。なお、上記追加情報テーブル１３ａは、上記不揮発性メモリ１６上に設けても良い。上記追加情報テーブル１３ａが不揮発性メモリ１６に設けられる場合、当該ＩＣカード１の非活性化されても、追加情報テーブル１３ａに記憶した追加情報は保持される。
【００１８】
また、上記通信ユニット１４は、ＩＣカード１の通信方式に応じた構成を有している。たとえば、上記ＩＣカード１の通信方式が接触式の通信方式である場合、上記通信ユニット１４は、上位装置としてのＩＣカード処理装置２のコンタクト部と物理的に接触するためのコンタクト部などにより構成される。この場合、ＩＣカード１は、ＩＣカード処理装置２と物理的に接触している上記通信ユニット１４によりＩＣカード処理装置２からの電源を受給する。つまり、上記ＩＣカード１が接触式ＩＣカードである場合、上記ＩＣカード１は、通信ユニット１４としてのコンタクト部を介してＩＣカード処理装置２からの動作電源および動作クロックの供給を受けて活性化される。
【００１９】
また、上記ＩＣカード１の通信方式が非接触式（無線式）の通信方式である場合、上記通信ユニット１４は、電波の送受信を行うアンテナおよび通信を制御する通信制御部等により構成される。この場合、上記ＩＣカード１は、通信ユニット１４により受信した電波から図示しない電源部により動作電源および動作クロックを生成するようになっている。つまり、上記ＩＣカード１が非接触式ＩＣカードである場合、上記ＩＣカード１は、通信ユニット１４としてのアンテナおよび通信制御部等を介してＩＣカード処理装置２からの電波を受信し、その電波から図示しない電源部により動作電源および動作クロックを生成して活性化するようになっている。
【００２０】
次に、上記不揮発性メモリ１６に記憶されるデータの構成について説明する。  
上記不揮発性メモリ１６には、たとえば、ＩＳＯ／ＩＥＣ７８１６において定義されたファイル構造で各種のデータが記憶される。たとえば、上記不揮発性メモリ１６には、複数階層構造（ツリー構造）で管理されるデータファイルとしてのファイル（ＥＦ：Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ）、および、データフォルダとしてのファイル（ＤＦ：Ｄｅｄｉｃａｔｅｄ  Ｆｉｌｅ）が記憶されている。
【００２１】
図２は、上記不揮発性メモリ１６に記憶されているファイル構造の例を示す図である。  
図２に示す例では、最上位がマスタファイルとしてのファイル（ＭＦ：Ｍａｓｔｅｒ  Ｆｉｌｅ）２１である。上記ＭＦ２１の配下には、フォルダとしてのＤＦ（アプリケーションＡ）２２Ａ、および、フォルダとしてのＤＦ（２アプリケーションＢ）２２Ｂが設けられている。さらに、上記ＤＦ（アプリケーションＡ）２２Ａの配下には、データの格納などに使用されるＥＦ（ファイルＡ１）２３Ａ１およびＥＦ（ファイルＡ２）２３Ａ２が設けられている構成になっている。さらに、上記ＤＦ（アプリケーションＢ）２２Ｂの配下には、データの格納などに使用されるＥＦ（ファイルＢ１）２３Ｂ１が設けられている構成になっている。このようなファイル構造では、各種のデータは、データファイルとしてのＥＦに記憶される。
【００２２】
次に、上記ＩＣカード１におけるソフトウエア構成について説明する。  
上記ＩＣカード１では、上述したように、ＣＰＵ１１がＲＯＭ１２あるいは不揮発性メモリ１６に記憶されているプログラムを実行することにより、種々の処理を実現している。すなわち、上記ＩＣカード１では、ＣＰＵ１１が実行するソフトウエアによってＲＯＭ１２、ＲＡＭ１３、不揮発性メモリ１６、通信ユニット１４あるいはコプロセッサ１５などを制御することにより種々の処理を実現している。
【００２３】
図３は、上記ＩＣカード１におけるソフトウエア構成を模式的に示す図である。  
上記ＩＣカード１におけるソフトウエアは、ハードウエア（Ｈ／Ｗ）層３１、ＯＳ（オペレーティングシステム）層３２、および、アプリケーション層３３から構成される。図３に示すように、上記ＩＣカード１では、上記アプリケーション層３３が最上位に位置し、上記ＯＳ層３２が上記Ｈ／Ｗ層３１の上位に位置するような構造となっている。
【００２４】
上記Ｈ／Ｗ層３１は、上記ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、通信ユニット１４、コプロセッサ１５、不揮発性メモリ１６などのハードウエアから構成される。上記Ｈ／Ｗ層３１の各ハードウエアは、上記ＯＳ層３２からの処理要求に応じて処理を実行したり、実行した処理の結果を上記ＯＳ層３２に送ったりするものである。
【００２５】
上記ＯＳ層３２は、当該ＩＣカード１における基本的な制御を実行するためのプログラムとしてのカードＯＳ（オペレーティングシステム）４１を有する。なお、上記ＯＳ層３２は、環境設定モジュール、アプリケーションインタフェース群などのモジュールなどを有するようにしても良い。上記カードＯＳ４１としてのソフトウエアは、当該ＩＣカードの基本的な動作を司るプログラムであり、上記Ｈ／Ｗ層３１の各ハードウエアを制御したり、各ハードウエアからの処理結果などの情報を受けて動作したりするプログラムである。上記カードＯＳ４１としてのソフトウエアは、ＩＣカード内における不揮発性のメモリに予め記憶されているものであり、たとえば、上記ＲＯＭ１２などに記憶される。
【００２６】
また、上記カードＯＳ４１は、当該ＩＣカード１の基本動作を実現するためのＨ／Ｗ層の各ハードウエアを制御する基本機能に加えて、ロジカルチャネル管理機能４２を有している。ロジカルチャネルとは、上記不揮発性メモリ１６内の各ファイルあるいは各アプリケーションに対してアクセスするための論理的なチャネルを管理するものである。たとえば、複数の通信方式で通信を行っている場合、各通信方式ごとにロジカルチャネルが割り当てられる。このようなロジカルチャネルによる制御を行うことにより、ＩＣカード１では、各チャネルごとに複数系列のコマンド群を処理することができる。たとえば、アプリケーションＡでは、第１のチャネルでコマンド処理を実行し、アプリケーションＢでは、第２のチャネルでコマンド処理を実行するという処理が可能となっている。
【００２７】
上記ロジカルチャネル管理機能４２は、上記のようなロジカルチャネルを管理する機能である。すなわち、上記ロジカルチャネル管理機能４２は、ロジカルチャネルのオープン及びクローズを制御したり、アプリケーションプログラムに対してロジカルチャネルを割り当てたり、チャネル管理テーブル４２ａを用いてファイルあるいはアプリケーションに対する各ロジカルチャネルのアクセス順番を管理したりするものである。また、上記チャネル管理テーブル４２ａに記憶される情報は、各ロジカルチャネルでカレントとして設定するファイルあるいはアプリケーションプログラムなどの変更に応じて、テーブル更新機能４２ｂにより更新される。
【００２８】
上記アプリケーション層３３は、各種の処理を実現するためのプログラムとしての各種のアプリケーション（アプリケーションＡ、アプリケーションＢ、…）から構成される。上記各アプリケーションとしてのソフトウエアは、当該ＩＣカード１の運用形態に応じた各種の処理を実現するためのプログラムおよびデータなどにより構成される。上記アプリケーションとしてのソフトウエアは、予めＩＣカード１内の不揮発性のメモリ１６に記憶されたり、適宜外部装置からダウンロードしてＩＣカード１内の不揮発性メモリ１６に記憶されたりするものである。  
すなわち、上記Ｈ／Ｗ層３１の各ハードウエアは、上記ＯＳ層３２のカードＯＳ４１により制御される。上記ＯＳ層３２のカードＯＳ４１は、上記アプリケーション層３３の各アプリケーションから要求に応じて各ハードウエアの動作を制御する。また、上記Ｈ／Ｗ層３１の各ハードウエアによる処理結果等は、上記ＯＳ層３２のカードＯＳ４１を介してアプリケーションへ供給される。たとえば、外部装置からのコマンドは、上記Ｈ／Ｗ層３１のハードウエアにより受信され、上記ＯＳ層３２のカードＯＳ４１へ供給される。上記カードＯＳ４１では、上記Ｈ／Ｗ層３１で受信したコマンドを選択的にアプリケーション層３３における特定のアプリケーションへ供給する。
【００２９】
たとえば、上記Ｈ／Ｗ層３１で外部装置からアプリケーション選択コマンドを受信した場合、上記カードＯＳ４１は、上記アプリケーション層３３から当該アプリケーション選択コマンドで指定されたアプリケーションをカレント状態とする。この状態において上記Ｈ／Ｗ層３１で外部装置からコマンドを受信した場合、上記カードＯＳ４１は、当該コマンドをカレント状態のアプリケーションへ供給する。これにより、アプリケーション層３３の各アプリケーションは、上記ＯＳ層３２のカードＯＳ４１から供給されるコマンドに応じた処理を実行する。すなわち、上記カードＯＳ４１は、カレント状態のアプリケーション（以下、カレントアプリケーションとも称する）を指定し、カレントアプリケーションに対してコマンドを供給するようになっている。
【００３０】
次に、ＩＣカード処理システムに用いられるコマンド体系について説明する。  
上述したように、ＩＣカード１は、ＩＣカード処理装置２からのコマンドに応じて処理を実行し、その処理結果をレスポンスとしてＩＣカード処理装置２へ送信する。このようなシステムでは、コマンドとレスポンスとによる動作を実現するためのコマンド体系を予め規定しておく必要がある。つまり、ＩＣカード処理システムでは、事前に定められているコマンド体系で実現される。
【００３１】
図４は、ＩＣカード処理システムに用いられるコマンド体系の例を示す図である。図４に示すコマンド体系は、ＩＣカードの国際標準規格であるＩＳＯ／ＩＥＣ７８１６で規定されているものを想定している。図４に示す例では、コマンド体系として、コマンドのフォーマットに対応するＩＣカードが出力するレスポンスのフォーマットが予め規定されている。図４に示す例では、４通りのパターンが規定されている。
【００３２】
図４に示すCASE1では、コマンドヘッダのみからなるコマンドに対して、ＩＣカードがステータスワードのみからなるレスポンスを返すように規定されている。なお、コマンドヘッダは、コマンドの種類を示す情報と処理のパラメータとからなる。また、ステータスワードは、所定のコード情報（番号）により処理結果を示す。このCASE1に該当するコマンドは、データを供給する必要がない処理をＩＣカードに要求し、ＩＣカードから処理が成功したか否かのみを受信するためのコマンドである。
【００３３】
図４に示すCASE2は、コマンドヘッダとレスポンスデータ長（Ｌｅ）とからなるコマンドに対して、ＩＣカードがレスポンスデータとステータスワードとからなるレスポンスを返すように規定されている。なお、レスポンスデータ長は、コマンドに対するレスポンスにおいてＩＣカードが送信するレスポンスデータのサイズを指定する情報である。このCASE2に該当するコマンドは、データの供給無しで、かつ、処理結果としてのデータが得られる処理をＩＣカードに要求し、ＩＣカードから処理結果としてのデータ（レスポンスデータ）を受信するためのコマンドである。たとえば、ＩＣカードに対してメモリに記憶されているデータの読出しを要求するコマンドは、CASE2のコマンドに含まれる。
【００３４】
図４に示すCASE3では、コマンドヘッダ、データ長（Ｌｃ）、および、コマンドデータからなるコマンドに対して、ＩＣカードがステータスワードのみからなるレスポンスを返すように規定されている。なお、コマンドデータは、データ長で指定されるサイズのデータである。このCASE3に該当するコマンドは、供給するコマンドデータを用いた処理の実行をＩＣカードに要求し、ＩＣカードから処理が成功したか否かを示すステータスワードを受信するためのコマンドである。たとえば、ＩＣカードに対してコマンドデータの書込みを要求するコマンドは、CASE3のコマンドに含まれる。
【００３５】
図４に示すCASE4では、コマンドヘッダ、データ長（Ｌｃ）、コマンドデータ、および、レスポンスデータ長（Ｌｅ）からなるコマンドに対して、ＩＣカードがレスポンスデータとステータスワードとからなるレスポンスを返すように規定されている。このCASE4に該当するコマンドは、コマンドデータを用いた処理をＩＣカードに要求し、ＩＣカードから処理結果としてのレスポンスデータを受信するためのコマンドである。
【００３６】
次に、コマンドに対応する処理でエラーが発生した場合のＩＣカードにおける処理について説明する。
【００３７】
以下、本実施の形態では、ＩＣカード１は、図４に示すようなＩＳＯで規定されたコマンド体系で動作するものであることを前提とする。図４に示すようなコマンド体系では、レスポンスデータ長が設定されていないコマンドに対しては、ステータスワード以外のレスポンスデータを送信することができない。ステータスワードは、データサイズ（たとえば、２バイト）が規定されており所定のコード情報によってコマンド処理の結果を通知するものである。
【００３８】
すなわち、上述したCASE1或いはCASE3のコマンドに対するレスポンスとして許容されるステータスワードだけでは、各コマンドに対する処理において発生した種々の状況を詳細に通知することができないことがある。たとえば、CASE3の書込みコマンドに対する処理において書込みエラーが発生した場合、ＩＣカード１は、当該書込みコマンドに対するレスポンスとして、書込みエラーが発生したことをステータスワードのみを通知することが許容されているが、書込みエラーの詳細な内容（エラーの原因、エラーが発生したメモリアドレス等）を通知することはできない。
【００３９】
また、CASE2或いはCASE4のコマンドであっても、コマンドに対するレスポンスとして送信可能なレスポンスデータは、規定のデータでなければならない。これは、システム全体としての処理の整合性を保つために、コマンドで指定されたデータ以外のデータをレスポンスデータとすることができないことを意味している。たとえば、CASE2の読出しコマンドに対してレスポンスにおけるレスポンスデータは、指定された読出しデータでなければならず、それ以外のデータをレスポンスデータすることはできない。
【００４０】
上記のようなコマンド体系は、予め規定されているものであるから遵守しなければならない。本ＩＣカード１では、上記のようなコマンド体系に従って動作しつつ、エラーの詳細な内容などの情報を上位装置へ提供できるものである。すなわち、ＩＣカード１は、上位装置からのコマンドに対する処理においてエラーが発生した場合、エラーの詳細な内容を示す追加情報を生成してメモリに保持する機能を有する。さらに、ＩＣカード１は、メモリに保持した追加情報を上位装置からの要求（コマンド）に応じて送信する。
【００４１】
次に、上記のような動作を実現するＩＣカード１におけるコマンド処理の例について説明する。  
まず、第１の処理例について説明する。  
図５は、ＩＣカード１におけるコマンドに対する第１の処理例の流れを説明するためのフローチャートである。  
電源供給を受けているＩＣカード１では、待機状態において、通信ユニット１４によりＩＣカード処理装置２からのコマンドが受信可能となっている（ステップＳ１１）。この状態においてＩＣカード処理装置２からのコマンドを上記通信ユニット１４が受信した場合（ステップＳ１１、ＹＥＳ）、ＩＣカード１のＣＰＵ１１は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する（ステップＳ１２）。追加情報を要求するコマンドは、予め規定される特殊コマンドである。たとえば、追加情報有りを含むステータスワードをセットしたレスポンスを送信した直後に受信するゲットレスポンスコマンド（ＩＳＯで規定されているCASE2のGET RESPONSE Command）を追加情報を要求する特殊コマンドとして規定しても良い。
【００４２】
上記判断により受信したコマンドが追加情報を要求するコマンドでないと判断した場合（ステップＳ１２、ＮＯ）、ＣＰＵ１１は、当該受信したコマンドに応じた処理（コマンド処理）を実行する（ステップＳ１３）。ＣＰＵ１１は、当該コマンドのコマンドヘッダで指定されている処理内容を判別することによりコマンド処理を実行する。  
このコマンド処理が正常に成功した場合（ステップＳ１４、ＮＯ）、ＣＰＵ１１は、ステータスワード（ＳＷ）に処理成功を示す情報（コード情報）をセットしたレスポンスを生成し（ステップＳ１５）、生成したレスポンスをＩＣカード処理装置２へ送信する（ステップＳ１６）。
【００４３】
また、コマンド処理においてエラーが発生した場合（ステップＳ１４、ＹＥＳ）、ＣＰＵ１１は、エラーの詳細な内容を示す追加情報を生成する（ステップＳ１７）。エラーの詳細な内容としては、エラーの原因、あるいは、エラーの具体的な内容（エラーが発生した処理工程）などが考えられる。たとえば、書込み系のコマンド処理におけるエラーでは、エラー原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられ、エラーの具体的な内容としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【００４４】
上記のような追加情報を生成すると、ＣＰＵ１１は、生成した追加情報をＲＡＭ１３或いは不揮発性メモリ１６に保持する（ステップ１８）。追加情報をＲＡＭ１３あるいは不揮発性メモリ１６に保持すると、ＣＰＵ１１は、ステータスワード（ＳＷ）に、エラーが発生したことを示す情報（コード情報）と追加情報有りを示す情報とをセットしたレスポンスを生成する（ステップＳ１９）。ステータスワードをセットしたレスポンスを生成すると、ＣＰＵ１１は、生成したレスポンスをＩＣカード処理装置２へ送信する（ステップＳ１６）。  
なお、ＩＣカード１のＣＰＵ１１は、追加情報有りのステータスワードを送信したことを示す情報（あるいは追加情報を保持していることを示す情報）をＲＡＭ１３等に保持しておくようにしても良い。たとえば、追加情報有りのレスポンスを送信した直後の特定のコマンド（例えばゲットレスポンスコマンド）を追加情報の読出しを要求する特殊コマンドとする場合、追加情報を保持していることを示す情報は、当該レスポンスを送信した後、次のコマンドを受信するまで保持するようにすれば良い。
【００４５】
また、上記ステップＳ１２の判断により受信したコマンドが追加情報を要求するコマンドであると判断した場合（ステップＳ１２、ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１３あるいは不揮発性メモリ１６から追加情報を読み出す（ステップＳ２０）。追加情報を読み出すと、ＣＰＵ１１は、読み出した追加情報をレスポンスデータにセットし（ステップＳ２１）、ステータスワードに処理成功を示す情報をセットしたレスポンスを生成する（ステップＳ１３）。追加情報をレスポンスデータにセットしたレスポンスを生成すると、ＣＰＵ１１は、生成したレスポンスを追加情報を要求するコマンドに対するレスポンスとしてＩＣカード処理装置２へ送信する（ステップＳ１６）。
【００４６】
なお、上記した第１の処理例では、コマンド処理においてエラーが発生した場合にエラーの詳細な内容を示す追加情報を生成するものとしたが、これに限らず、コマンド処理が成功した場合であっても、コマンド処理の詳細な結果を示す追加情報を生成するようにしても良い。すなわち、コマンド処理が成功した場合であっても処理結果としてステータスワードだけでは通知しきれない情報がある場合には、追加情報してメモリに保持しておき、当該コマンドに対するレスポンスで追加情報があることを通知するようにしても良い。
【００４７】
上記のように、第１の処理例のＩＣカード１では、上位装置から受信したコマンドに対する処理においてエラーが発生した場合、エラーの詳細な内容を示す追加情報を生成してメモリに保持しておき、当該コマンドに対するレスポンスでは追加情報があることを通知する。このようなレスポンスに対して上位装置から追加情報が要求するコマンドを受信した場合、ＩＣカード１は、保持した追加情報をレスポンスデータにセットしたレスポンスを送信する。
【００４８】
言い換えれば、第１の処理例のＩＣカード１は、ＩＣカード処理装置２からのコマンドの実行結果としてステータスワードだけでは示せない詳細情報（追加情報）がある場合、当該コマンドに対するレスポンスのステータスワードにおいて上記詳細情報が存在することを示し、当該レスポンス後に上記詳細情報の読出しを要求するコマンドを受信した場合、上記詳細情報をＩＣカード処理装置２へ送信する。
【００４９】
上記のような第１の処理例のＩＣカード１によれば、既存のコマンド体系のままであっても、エラーの詳細な内容などのコマンド処理結果の詳細情報（追加情報）を上位装置に通知する機能を提供できる。この結果として、上位装置では、詳細情報（追加情報）で示される情報に基づいて効率的な処理をＩＣカードに実行させることができる。
【００５０】
次に、ＩＣカード処理システム全体におけるコマンド処理の例について説明する。  
ここでは、書込み系のコマンドに対する処理においてエラーが発生した場合の処理について説明するものとする。また、書込み処理におけるエラーの原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられる。
【００５１】
たとえば、書込み系のコマンドを受信した場合に、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ＩＣカード１は、書込みが出来なかった理由（他の論理チャネルによるアクセス対象ファイルの占有）を追加情報として生成して保持しておく。この状態で、ＩＣカード１は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを送信することにより受信したコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ＩＣカード１は、書込みが出来なかった理由を示す追加情報を送信する。
【００５２】
図６は、第１の処理例としての書込み系のコマンド処理においてエラーが発生した場合のシーケンス図である。  
以下の説明では、ＩＣカード１は、図２に示すように、アプリケーションＡ、Ｂ、ファイル（ＥＦ）Ａ１，Ａ２，Ｂ１が存在することを想定する。さらに、ＩＣカード１は、ロジカルチャネル管理機能４２により管理する複数の論理チャネルでのアクセス状態が図７に示すような状態である場合を想定する。図７に示す例では、論理チャネル（Ｃｈ．０）がファイルＡ１をカレントに設定している状態を示している。
【００５３】
上位装置としてのＩＣカード処理装置２は、ＩＣカード１内のファイルＡ１にデータを書き込むための準備として、論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択を要求するコマンドをＩＣカード１に送信する（ステップＳ３１）。これに対して、ＩＣカード１は、論理チャネル（Ｃｈ．１）を開設してアプリケーションＡを選択するコマンド処理を実行する。論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択とが成功すると、ＩＣカード１は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをＩＣカード処理装置２へ送信する（ステップＳ３２）。
【００５４】
論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ＩＣカード処理装置２は、ファイルＡ１の選択を要求するコマンドをＩＣカード１に対して送信する（ステップＳ３３）。これに対して、ＩＣカード１は、論理チャネル（Ｃｈ．１）におけるカレントファイルをファイルＡ１に設定するコマンド処理を実行する。論理チャネル（Ｃｈ．１）におけるカレントファイルをファイルＡ１に設定する処理が成功すると、ＩＣカード１は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをＩＣカード処理装置２へ送信する（ステップＳ３４）。
【００５５】
ファイルＡ１の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ＩＣカード処理装置２は、ファイルＡ１に対するデータの書込みを要求する書込みコマンドをＩＣカード１に対して送信する（ステップＳ３５）。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ＩＣカード１は、書込みコマンドに応じた書込み処理を実行する（ステップＳ３６）。
【００５６】
このような書込みコマンドに対する処理において、まず、ＩＣカード１のＣＰＵ１１は、カレントファイルに設定されているファイルＡ１へのアクセス権限の確認する（ステップＳ３６−１）。当該書込みコマンドに対する処理は、論理チャネルが「Ｃｈ．１」でカレントファイルとしてのファイルＡ１にデータを書込む処理である。ここでは、ＩＣカード１は、図７に示すように、論理チャネル「Ｃｈ．０」でファイルＡ１をカレントファイルに設定している状態である。このため、ＩＣカード１のＣＰＵ１１は、論理チャネル「Ｃｈ．１」でのファイルＡ１に対する書込み権限がないものと判断する（ステップＳ３６−２）。このような書込み権限無しの判断に基づいて、ＩＣカード１のＣＰＵ１１は、当該コマンド処理（データの書込み処理）を実施せずに中止する（ステップＳ３６−３）。
【００５７】
受信した書込みコマンドに対応するコマンド処理を中止すると、ＩＣカード１のＣＰＵ１１は、当該コマンド処理を中止した詳細な理由を示す追加情報を作成する（ステップＳ３６−４）。ここでは、コマンド処理を中止した理由（エラーの詳細な内容）は、論理チャネル「Ｃｈ．０」が既にファイルＡ１にアクセス中であることである。このため、ＩＣカード１のＣＰＵ１１は、コマンド処理を中止の理由（例えば、「ファイルＡ１に対する当該論理チャネル（Ｃｈ．１）のアクセス優先権が２番目」、「ファイルＡ１には論理チャネル（Ｃｈ．０）がアクセス中」など）を示す追加情報を作成する。このように作成した追加情報は、ＣＰＵ１１によりＲＡＭ１３あるいは不揮発性メモリ１６に保持される。
【００５８】
上記追加情報を保持した状態において、ＩＣカード１のＣＰＵ１１は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する（ステップＳ３６−５）。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ＩＣカード１のＣＰＵ１１は、作成したレスポンスをＩＣカード処理装置２へ送信し（ステップＳ３７）、当該書込みコマンドに対する処理を終了する。
【００５９】
ＩＣカード処理装置２は、追加情報有りを含むレスポンスを受信すると、追加情報が必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ＩＣカード処理装置２のオペレータが適宜選択するようにしても良い。ＩＣカード処理装置２は、追加情報の要否の判断結果に基づいて当該ＩＣカード１に次に供給するコマンドを決定する。
【００６０】
たとえば、上記追加情報が必要であると判断した場合、ＩＣカード処理装置２は、次のコマンドとして、追加情報を取得するためのCASE2の特殊コマンド（例えば、CASE2のGET  RESPONSEコマンド）を送信する（ステップＳ３８）。これに対して、ＩＣカード１は、追加情報を読出すコマンド処理を実行する（ステップＳ３９）。この場合、特殊コマンドは、CASE2であるため、ＩＣカード１のＣＰＵ１１は、ステータスワードだけでなくレスポンスデータを返信することが可能である。
【００６１】
すなわち、追加情報を要求する特殊コマンドに対する処理として、ＩＣカード１のＣＰＵ１１は、ＲＡＭ１３あるいは不揮発性メモリ１６に保持している追加情報を読み出し、読み出した追加情報をレスポンスデータにセットしたレスポンスとしてＩＣカード処理装置２へ送信する。レスポンスデータとして追加情報を送信した場合、ＩＣカード１のＣＰＵ１１は、ＲＡＭ１３あるいは不揮発性メモリ１６に保持している追加情報を削除する。なお、追加情報は削除せずに保持しておくようにしても良い。
【００６２】
また、上記追加情報が不要であると判断した場合、ＩＣカード処理装置２は、追加情報を取得するための特殊コマンドを送信する必要はない。この場合、ＩＣカード処理装置２は、追加情報を取得するための特殊コマンド以外の通常のコマンドを送信しても良い。なお、ＩＣカード１では、追加情報有りのステータスワードを含むレスポンスを送信した後に追加情報を取得するための特殊コマンド以外の通常のコマンドを受信した場合、受信したコマンドに応じたコマンド処理を実行する。このような通常のコマンドを実行した場合、ＩＣカード１は、ＲＡＭ１３あるいは不揮発性メモリ１６に保持している追加情報を削除する。なお、この場合も、追加情報は削除せずに保持しておくようにしても良い。
【００６３】
上記のように、本第１の処理例のＩＣカードは、書込みコマンドで指定された書込み処理において書込みエラーが発生した場合、書込みエラーとなった原因あるいは書込みエラーとなったメモリアドレスなどを示す情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと（書込みエラーとなったこと）」と「追加情報があること」とを示すステータスワードを送信する。その後、ＩＣカードは、上位装置からの追加情報を要求する特殊コマンドを受信した場合に、保持している上記追加情報を送信する。
【００６４】
たとえば、書込みコマンドで指定された書込み対象とするファイルが別のチャネルでアクセスされているためにデータの書込みが出来ない場合、本ＩＣカードは、別のチャネルが書込み対象のファイルにアクセスしているという情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと」と「追加情報があること」とを示すステータスワードを送信する。その後、ＩＣカードは、上位装置から追加情報を要求する特殊コマンドを受信した場合、別のチャネルが書込み対象のファイルにアクセスしている旨の追加情報を送信する。
【００６５】
また、書込みコマンドで指定された書込み処理においてメモリ異常によりデータの書込みが出来ない場合、第１の処理例のＩＣカードは、メモリ異常が発生したメモリアドレスを示す情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと」と「追加情報があること」とを示すステータスワードを送信する。その後、ＩＣカードは、上位装置からの追加情報を要求する特殊コマンドを受信した場合、メモリ異常が発生したメモリアドレスを示す追加情報を送信する。
【００６６】
上記のような第１の処理例によれば、ＩＣカードは、既存のコマンド体系のままであっても、コマンドに対するレスポンスで送信しきれない追加情報を上位装置へ提供することが可能となる。この結果として、上位装置では、追加情報から得られる書込みエラーの詳細な内容に応じて効率的な処理をＩＣカードに実行させることができる。
【００６７】
次に、ＩＣカード１におけるコマンド処理の第２の処理例について説明する。  
第２の処理例においても、ＩＣカード１は、予め規定されている上記したコマンド体系を遵守するものとする。本第２の処理例において、ＩＣカード１は、上記のようなコマンド体系に従って動作しつつ、エラーの詳細な内容などの情報を上位装置へ提供する。たとえば、ＩＣカード１は、上位装置から与えられたコマンドの実行処理においてエラーが発生した場合、エラー内容の詳細な情報を示す追加情報を生成し、生成した追加情報を追加情報テーブル１３ａに保存する。さらに、ＩＣカード１は、追加情報テーブル１３ａに保存した追加情報を上位装置からの要求に応じて送信する。
【００６８】
次に、第２の処理例に係る追加情報テーブル１３ａの構成について説明する。  
図８は、第２の処理例に係る追加情報テーブル１３ａの構成例を示す図である。  
上記追加情報テーブル１３ａには、複数件の追加情報（詳細情報）が保存可能である。上記追加情報テーブル１３ａに追加情報として保存可能な件数（最大件数）は、予め設定可能である。たとえば、上記追加情報テーブル１３ａに保存可能な追加情報の最大件数は、当該ＩＣカード１の発行処理時に設定される。
【００６９】
上記追加情報テーブル１３ａには、作成順番、処理コマンド情報、および追加情報などを対応づけて記憶する。追加情報は、実行した処理コマンドの実行結果に関連する詳細な情報である。ここで、追加情報としては、実行した処理コマンドのレスポンスデータでは伝えきれない情報を想定する。たとえば、実行した処理コマンドの実行結果がエラーとなった場合、ＩＣカード１は、エラー内容の詳細を示す情報を追加情報として生成する。図８に示す例では、書込みコマンドに対する追加情報として、書込み対象のファイルにはチャネル「Ｃｈ．０」でアクセス中であったため、書込みがエラーとなった旨が記憶されている。追加情報は、処理結果としてステータスワードだけでは通知しきれない情報であり、エラー内容の詳細を示す情報に限らない。たとえば、コマンドの処理が成功した場合であっても、ＩＣカード１では、当該コマンドの実行結果に関連する情報を追加情報として生成するようにしても良い。
【００７０】
また、作成順番は、対応する追加情報を作成した順番（保存した順番）を示す情報である。複数の追加情報を追加情報テーブル１３ａに保存する場合、各追加情報には、新しい順に作成順番が付与される。このため、追加情報テーブル１３ａに追加情報が保存されるごとに、各追加情報の作成順番が更新される。
【００７１】
処理コマンド情報は、追加情報が発生した処理コマンドの内容を示す情報である。処理コマンド情報は、実行結果に関連する追加情報が生成された処理コマンド自体を示す情報である。たとえば、処理コマンド情報としては、実際に受信したコマンドの一部が記憶される。図８に示す例では、処理コマンド情報として、WRITE COMMANDの一部のデータ（00h D0h 00h 00h 10h 11h 12h）が記憶されている。これにより、上位装置としてのＩＣカード処理装置２は、後述する追加情報の読出を要求する特殊コマンドにおいて、特定の追加情報を処理コマンド情報により指定することが可能となる。
【００７２】
次に、上記ＩＣカード１におけるコマンド処理の第２の処理例の流れを説明する。  
図９は、ＩＣカード１におけるコマンドに対する第２の処理例の流れを説明するためのフローチャートである。  
電源供給を受けているＩＣカード１では、待機状態において、通信ユニット１４によりＩＣカード処理装置２からのコマンドが受信可能となっている（ステップＳ１１１）。この状態においてＩＣカード処理装置２からのコマンドを上記通信ユニット１４が受信した場合（ステップＳ１１１、ＹＥＳ）、ＩＣカード１のＣＰＵ１１は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する（ステップＳ１１２）。追加情報の読出しを要求するコマンドは、予め規定される特殊コマンドであるものとする。この場合、ＣＰＵ１１は、受信コマンドが特殊コマンドか否かを判断する。
【００７３】
なお、追加情報の読出しを要求する特殊コマンドとしては、後述する図７或は図８に示す例のように、ゲットレスポンスコマンド（ＩＳＯで規定されているCASE2のGET RESPONSE Command）を用いることができる。このような特殊コマンドでは、読出対象とする追加情報、あるいは、読出し後の追加情報に対する処理内容（削除するか否か）がパラメータなどにより指定可能となっている。
【００７４】
上記判断により受信したコマンドが追加情報の読出しを要求する特殊コマンドでないと判断した場合（ステップＳ１１２、ＮＯ）、ＣＰＵ１１は、当該受信したコマンド（処理コマンド）に応じた処理を実行する（ステップＳ１１３）。ＣＰＵ１１は、コマンドヘッダで指定される処理内容を判別することにより当該処理コマンドで要求された処理を実行する。  
当該処理コマンドの実行結果として追加情報（詳細情報）が無い場合（ステップＳ１１４、ＮＯ）、ＣＰＵ１１は、ステータスワード（ＳＷ）に処理結果を示す情報（コード情報）をセットしたレスポンスデータを生成し（ステップＳ１１５）、生成したレスポンスデータをＩＣカード処理装置２へ送信する（ステップＳ１１６）。たとえば、書込みコマンドに対して正常に処理が完了した場合、ＣＰＵ１１は、処理成功を示す情報（コード情報）をセットしたレスポンスデータを生成してＩＣカード処理装置２へ送信する。当該レスポンスを送信した後、ＩＣカード１は、次のコマンドが受信可能な状態となる。
【００７５】
また、処理コマンドの実行結果として追加情報（詳細情報）が有る場合（ステップＳ１１４、ＹＥＳ）、ＣＰＵ１１は、処理コマンドの実行結果に関連する詳細な内容を示す追加情報（詳細情報）を生成する（ステップＳ１１７）。追加情報は、処理コマンドの実行結果として、当該処理コマンドに対する通常のレスポンスデータでは送信しきれない情報である。たとえば、書込みコマンドの処理でエラーが発生した場合、ＣＰＵ１１は、追加情報として、エラーの原因、あるいは、エラーの具体的な内容（エラーが発生した処理工程）などを示す情報を含む詳細情報を生成する。なお、書込み系のコマンド処理におけるエラーでは、エラー原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられ、エラーの具体的な内容としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【００７６】
上記のような追加情報を生成すると、ＣＰＵ１１は、既に追加情報テーブル１３ａに記憶されている追加情報の件数が所定の最大件数であるか否かを判断する（ステップＳ１１８）。最大件数は、たとえば、ＩＣカード１の発行処理時に設定される値である。既存の追加情報の件数が最大件数未満である場合（ステップＳ１１８、ＮＯ）、ＣＰＵ１１は、生成した追加情報を追加情報テーブル１３ａに新規に記憶（追記）する（ステップＳ１１９）。また、既存の追加情報の件数が最大件数である場合（ステップＳ１１８、ＹＥＳ）、ＣＰＵ１１は、生成した追加情報を追加情報テーブル１３ａに保存されている最古の追加情報に上書きする（ステップＳ１２０）。これにより、既存の追加情報の件数が最大件数である場合、追加情報テーブル１３ａでは、既存の追加情報のうち最古の追加情報が削除され、新たに生成した最新の追加情報が保存される。
【００７７】
追加情報テーブル１３ａに生成した追加情報を記憶すると、ＣＰＵ１１は、当該追加情報が発生したコマンドの内容を示す情報（図５に示す処理コマンド情報）を当該追加情報に対応付けて追加情報テーブル１３ａに記憶する（ステップＳ１２１）。追加情報が発生したコマンドの内容を示す情報は、上位装置（ＩＣカード処理装置）が特定の追加情報を指定するための情報である。たとえば、追加情報が発生したコマンドの内容を示す情報としては、図５に示すような当該コマンドの一部の情報を用いることができる。
【００７８】
上記追加情報テーブル１３ａに追加情報とコマンド内容を示す情報とを記憶すると、ＣＰＵ１１は、追加情報テーブル１３ａに保存されている各追加情報に対応する作成順番を更新する（ステップＳ１２２）。たとえば、追加情報テーブル１３ａに１つ目の追加情報を記憶する場合、ＣＰＵ１１は、当該追加情報に対する作成順番を「１」として記憶する。また、追加情報テーブル１３ａに既に追加情報が記憶されている場合、ＣＰＵ１１は、既存の追加情報の作成順番をインクリメント（１加算）し、新たに記憶した追加情報（最新の追加情報）に対する作成順番を「１」として記憶する。これにより、追加情報テーブル１３ａでは、各追加情報に対する作成順番が新しい順になるように更新される。
【００７９】
なお、上記追加情報テーブル１３ａは、ＲＡＭ１３に設けられる。ＲＡＭ１３に設けた追加情報テーブル１３ａは、当該ＩＣカード１がリセットされるごとに保存した追加情報としての詳細情報をクリアする。つまり、ＲＡＭ１３に設けたエラー情報テーブル１３ａは、ＩＣカード１のリセットに伴ってリセットされる。言い換えると、ＩＣカード１のリセットするごとに追加情報もリセットしたい場合、エラー情報テーブル１３ａは、ＲＡＭ１３に設けられる。
【００８０】
また、エラー情報テーブル１３ａは、不揮発性メモリ１６に設けても良い。不揮発性メモリ１６に設けたエラー情報テーブル１３ａは、ＩＣカード１の電源がオフとなっても追加情報を保持する。つまり、不揮発性メモリ１６に設けたエラー情報テーブル１３ａは、コマンドによって上書き或は削除などの処理が行われなければ、追加情報としての詳細情報が保持される。言い換えると、ＩＣカードが非活性化されても追加情報を保持したい場合、エラー情報テーブル１３ａは、不揮発性メモリ１６に設けられる。
【００８１】
追加情報テーブル１３ａに追加情報、処理コマンド情報、および作成順番を保存すると、ＣＰＵ１１は、ステータスワード（ＳＷ）にコマンド処理結果を示す情報（コード情報）と追加情報有りを示す情報とをセットしたレスポンスデータを生成する（ステップＳ１２３）。追加情報有りを示す情報をセットしたレスポンスデータを生成すると、ＣＰＵ１１は、生成したレスポンスをＩＣカード処理装置２へ送信する（ステップＳ１１６）。当該レスポンスを送信した後、ＩＣカード１は、次のコマンドが受信可能な状態となる。
【００８２】
また、上記ステップＳ１１２で受信したコマンドが追加情報の読出しを要求する特殊コマンド（以下、単に特殊コマンドとも称する）であると判断した場合（ステップＳ１１２、ＹＥＳ）、ＣＰＵ１１は、追加情報テーブル１３ａに記憶されている追加情報から読出対象とする追加情報を特定する処理を行う（ステップＳ１２５）。読出対象とする追加情報は、追加情報の読出しを要求する特殊コマンドの内容（パラメータ或は受信タイミング）に基づいて判断される。
【００８３】
上記第２の処理例では、追加情報テーブル１３ａは、追加情報に対応づけて、作成順序および処理コマンド情報を記憶している。このため、追加情報の読出しを要求する特殊コマンドでは、作成順番、あるいは処理コマンド情報により特定の追加情報を指定することが可能である。また、特定の追加情報が指定されない特殊コマンドに対しては、最新の追加情報を読出対象の追加情報とするようにしても良い。なお、上記特殊コマンドでは、複数の追加情報を指定したり、全ての追加情報を指定したりすることもできる。このような特殊コマンドに対しては、ＣＰＵ１１は、複数の追加情報、或は全ての追加情報を読出対象と判定する。
【００８４】
読出対象の追加情報を特定すると、ＣＰＵ１１は、特定した読出対象の追加情報を追加情報テーブル１３ａから読み出し（ステップＳ１２６）、読み出した追加情報をセットしたレスポンスデータを生成する（ステップＳ１２７）。  
読出対象の追加情報をセットしたレスポンスデータを生成すると、ＣＰＵ１１は、読み出した追加情報を削除するか保存しておくかを判断する（ステップＳ１２８）。読み出した追加情報を削除するか否かは、前記特殊コマンドのパラメータで指定できるようにしても良いし、予め何れかに設定しておくようにしても良い。たとえば、前記特殊コマンドで読出した追加情報を削除するか否かを指定できるようにする場合、ＣＰＵ１１は、受信した特殊コマンドのパラメータにより読出し後の追加情報を削除するか否かを判断する。
【００８５】
読出した追加情報を削除すると判断した場合（ステップＳ１２８、ＹＥＳ）、ＣＰＵ１１は、読み出した追加情報を追加情報テーブル１３ａから削除する（ステップＳ１２９）。この場合、ＣＰＵ１１は、追加情報テーブル１３ａに残った追加情報に対する作成順番を更新するようにしても良い。なお、ステップＳ１２８及びＳ１２９の処理は、読み出した追加情報をレスポンスデータにセットした後、或はレスポンスデータを送信した後に実行するようにしても良い。
【００８６】
上記特殊コマンドで指定された読出対象の追加情報をレスポンスデータにセットすると、ＣＰＵ１１は、読出対象の追加情報をセットしたレスポンスデータにステータスワードに処理成功を示す情報をセットし（ステップＳ１１５）、上記特殊コマンドに対するレスポンスとしてＩＣカード処理装置２へ送信する（ステップＳ１１６）。
【００８７】
上記のように、第２の処理例のＩＣカードでは、上位装置から受信した処理コマンドに対する実行結果としてステータスワードでは示せない追加情報（詳細情報）がある場合、追加情報を生成し、生成した追加情報を当該処理コマンドを示す情報および作成順番に対応づけて追加情報テーブルに保存しておき、当該処理コマンドに対するレスポンスでは追加情報があることを通知する。追加情報テーブルに保存した追加情報の読出しを要求する特殊コマンドを上位装置から受信した場合、ＩＣカードは、当該特殊コマンドで指定される追加情報を特定し、特定した追加情報をセットしたレスポンスデータを生成して上位装置へ送信する。
【００８８】
上記のような第２の処理例によれば、ＩＣカード１は、既存のコマンド体系のままで、エラー内容の詳細情報などの処理コマンドの実行結果に関わる追加情報（詳細情報）を複数件数分保存することができ、保存した追加情報を上位装置からの要求に応じて任意のタイミングで通知する機能を提供できる。この結果として、上位装置では、詳細情報（追加情報）で示される情報に基づいて効率的な処理をＩＣカードに実行させることができる。
【００８９】
次に、ＩＣカード処理システム全体における第２の処理例の流れを具体例を用いて説明する。  
まず、コマンドの実行結果として生成した最新の追加情報（詳細情報）を読み出す場合の具体例について説明する。  
図１０は、最新の追加情報を読み出す場合の処理例を示すシーケンス図である。図１０は、書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンスを示している。なお、書込み処理におけるエラーの原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられる。
【００９０】
たとえば、書込み系のコマンドを受信した場合、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ＩＣカード１は、書込みが出来なかった理由（他の論理チャネルによるアクセス対象ファイルの占有）を追加情報として生成して保持しておく。この状態で、ＩＣカード１は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを返信することにより、受信した書込みコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ＩＣカード１は、書込みが出来なかった理由を示す追加情報を送信する。
【００９１】
ここで、ＩＣカード１は、図２に示すように、アプリケーションＡ、Ｂ、ファイル（ＥＦ）Ａ１，Ａ２，Ｂ１が存在することを想定する。さらに、ＩＣカード１は、ロジカルチャネル管理機能４２により管理する複数の論理チャネルでのアクセス状態として、論理チャネル「Ｃｈ．０」がファイルＡ１をカレントに設定している状態を想定するものとする。
【００９２】
まず、上位装置としてのＩＣカード処理装置２は、ＩＣカード１内のファイルＡ１にデータを書き込むための準備として、論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択を要求するコマンドをＩＣカード１に送信する（ステップＳ１３１）。これに対して、ＩＣカード１は、論理チャネル（Ｃｈ．１）を開設してアプリケーションＡを選択するコマンド処理を実行する。論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択とが成功すると、ＩＣカード１は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをＩＣカード処理装置２へ送信する（ステップＳ１３２）。
【００９３】
論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ＩＣカード処理装置２は、ファイルＡ１の選択を要求するコマンドをＩＣカード１に対して送信する（ステップＳ１３３）。これに対して、ＩＣカード１は、論理チャネル（Ｃｈ．１）におけるカレントファイルをファイルＡ１に設定するコマンド処理を実行する。論理チャネル（Ｃｈ．１）におけるカレントファイルをファイルＡ１に設定する処理が成功すると、ＩＣカード１は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをＩＣカード処理装置２へ送信する（ステップＳ１３４）。
【００９４】
ファイルＡ１の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ＩＣカード処理装置２は、ファイルＡ１に対するデータの書込みを要求する書込みコマンドをＩＣカード１に対して送信する（ステップＳ１３５）。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ＩＣカード１は、書込みコマンドに応じた書込み処理を実行する（ステップＳ１３６）。
【００９５】
このような書込みコマンドに対する処理において、まず、ＩＣカード１のＣＰＵ１１は、カレントファイルに設定されているファイルＡ１へのアクセス権限の確認する（ステップＳ１３６−１）。当該書込みコマンドに対する処理は、論理チャネルが「Ｃｈ．１」でカレントファイルとしてのファイルＡ１にデータを書込む処理である。ここでは、ＩＣカード１は、論理チャネル「Ｃｈ．０」でファイルＡ１をカレントファイルに設定している状態である。このため、ＩＣカード１のＣＰＵ１１は、論理チャネル「Ｃｈ．１」でのファイルＡ１に対する書込み権限がないものと判断する（ステップＳ１３６−２）。このような書込み権限無しの判断に基づいて、ＩＣカード１のＣＰＵ１１は、当該コマンドで要求されるデータの書込み処理を実施せずに中止（エラー）とする（ステップＳ１３６−３）。
【００９６】
受信した書込みコマンドに対応するコマンド処理を中止すると、ＩＣカード１のＣＰＵ１１は、当該コマンドの処理を中止した詳細な理由を示す追加情報（詳細情報）を生成する（ステップＳ１３６−４）。ここでは、コマンド処理を中止した理由（エラー内容の詳細情報）は、論理チャネル「Ｃｈ．０」が既にファイルＡ１にアクセス中であることである。このため、ＩＣカード１のＣＰＵ１１は、コマンド処理を中止の理由（例えば、「ファイルＡ１には論理チャネル「Ｃｈ．０」でアクセス中のため論理チャネル「Ｃｈ．１」では書込み不可」、あるいは、「ファイルＡ１に対する当該論理チャネル（Ｃｈ．１）のアクセス優先権が２番目」など）を示す追加情報を生成する。ＣＰＵ１１は、生成した追加情報に処理コマンド情報としてのエラーとなった書込みコマンドを示す情報（当該書込みコマンドの一部（00h D0h 00h 00h 10h 11h 12h））に対応づけ、最新の追加情報（作成番号「１」の情報）として追加情報テーブル１３ａに記憶する（ステップＳ３６−５）。
【００９７】
最新の追加情報を追加情報テーブル１３ａに記憶すると、ＩＣカード１のＣＰＵ１１は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する（ステップＳ１３６−６）。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ＩＣカード１のＣＰＵ１１は、作成したレスポンスをＩＣカード処理装置２へ送信し（ステップＳ１３７）、当該書込みコマンドに対する処理を終了する。
【００９８】
ＩＣカード処理装置２は、追加情報有りを含むレスポンスを受信すると、追加情報が直に必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ＩＣカード処理装置２のオペレータが適宜選択するようにしても良い。ＩＣカード処理装置２は、追加情報の要否の判断結果に基づいて当該ＩＣカード１に次に供給するコマンドを決定する。ここでは、ＩＣカード処理装置２は、ＩＣカード１に対して、すぐに最新の追加情報の読出しを要求するものとする。
【００９９】
最新の追加情報が必要であると判断した場合、ＩＣカード処理装置２は、最新の追加情報を指定した追加情報の読出しを要求する特殊コマンド（例えば、CASE2のGET  RESPONSEコマンド）をＩＣカード１へ送信する（ステップＳ１３８）。上記特殊コマンドは、特定の追加情報の指定が無い場合、最新の追加情報が読出対象の追加情報と判断されるようにしても良い。また、特殊コマンドでは、作成順番「１」を指定したり、最新の追加情報が発生した処理コマンド情報（ここでは、書込みコマンド）を指定したりすることにより最新の追加情報を指定するようにしても良い。ここでは、追加情報有りのレスポンスを受けたＩＣカード処理装置２が、特定の追加情報を指定しない特殊コマンドにより、最新の追加情報の読出しを要求するものとする。
【０１００】
上記特殊コマンドを受信したＩＣカード１のＣＰＵ１１は、当該特殊コマンドで追加情報の指定が無ければ、当該特殊コマンドが最新の追加情報の読出しを要求するコマンドであると判断する。この判断に基づいて、ＩＣカード１のＣＰＵ１１は、追加情報テーブル１３ａから最新の追加情報（作成番号が最も新しい追加情報）を読出し、レスポンスデータにセットする（ステップＳ３９）。最新の追加情報をレスポンスデータにセットすると、ＩＣカード１のＣＰＵ１１は、当該レスポンスデータをＩＣカード処理装置２へ送信する（ステップＳ１４０）。
【０１０１】
上記のように、追加情報の読出しを要求する特殊コマンドで特定の追加情報が指定されていない場合、ＩＣカードは、追加情報テーブルに保存した最新の追加情報をレスポンスとして送信するようにできる。また、読み出した最新の追加情報は、削除するようにしても良いし、保存しておくようにしても良い。たとえば、読出した追加情報を削除するか否かを特殊コマンドで指定する場合、ＩＣカード１のＣＰＵ１１は、当該特殊コマンドでの指定に基づいて読み出した追加情報を削除あるいは保存する。
【０１０２】
なお、最新の追加情報がすぐには必要でない場合、ＩＣカード処理装置２は、追加情報有りのステータスワードを含むレスポンスを送信した後も、追加情報の読出しを要求する特殊コマンド以外の通常のコマンドをＩＣカード１に送信することにより、通常の処理を継続的に実行することが可能である。このような場合であっても、ＩＣカード１は、所定の最大件数までの追加情報を追加情報テーブル１３ａに保持している。このため、ＩＣカード処理装置２は、別の処理を実行した後に特定の追加情報をＩＣカード１から取得することも可能である。
【０１０３】
次に、追加情報テーブル１３ａに記憶した追加情報を複数のコマンド処理を実行した後に読み出す処理例について説明する。  
図１１は、追加情報テーブル１３ａに記憶した追加情報を追加情報に関連のない複数のコマンドの処理を実行後に読み出す処理例を示すシーケンス図である。  
ここでは、図１０に示すステップＳ１３１〜Ｓ１３７の処理が実行された状態であることを想定するものとする。この状態（追加情報有りのステータスワードを受信した場合）であっても、最新の追加情報がすぐには必要でなければ、ＩＣカード処理装置２は、通常のコマンドをＩＣカード１に送信することにより、通常の処理を継続的に実行できる。
【０１０４】
図１１の処理例では、ＩＣカード処理装置２は、上記ステップＳ１３７で書込みコマンドに対して追加情報有りのステータスワードを受信した後、追加情報に関連のない処理を要求する処理コマンド（CASE2のGET CHALLENGE コマンド）をＩＣカード１へ供給している（ステップＳ１４１）。この処理コマンドを受信したＩＣカード１は、当該処理コマンドで要求された処理を実行する（ステップＳ１４２）。処理コマンドに対する処理が正常に行われると、ＩＣカード１は、正常終了を示すステータスワードをセットした処理結果（ここでは、乱数）をＩＣカード処理装置２へ送信する（ステップＳ１４３）。このように、ＩＣカード処理装置２は、追加情報有りのステータスワードを受信した後も、通常のコマンド処理を実行できる。
【０１０５】
ここで、ＩＣカード処理装置２が追加情報に関連のない処理を要求する処理コマンド（CASE2のGET CHALLENGE コマンド）をＩＣカード１へ供給したものとする（ステップＳ１５１）。この処理コマンドを受信したＩＣカード１のＣＰＵ１１は、当該処理コマンドで要求された処理を実行する（ステップＳ１５２）。当該処理コマンドの実行中にステータスワードでは示せない追加情報が発生した場合、ＣＰＵ１１は、当該処理コマンドの実行結果に関する追加情報（詳細情報）を生成する（ステップＳ１５２−１）。追加情報を生成すると、ＣＰＵ１１は、生成した追加情報に当該処理コマンドを示す情報（当該処理コマンドの一部）を対応づけて追加情報テーブル１３ａに保存する（ステップＳ１５２−２）。
【０１０６】
生成された当該処理コマンドに対する追加情報は、作成番号が「１」の最新の追加情報として追加情報テーブル１３ａに記憶すべきものである。ここでは、追加情報テーブル１３ａには既に別の追加情報が記憶されているため、ＣＰＵ１１は、既存の追加情報に対する作成番号を更新する（ステップＳ１５２−３）。すなわち、図８の処理例では、追加情報テーブル１３ａには上記ステップＳ１３６−４で生成した追加情報が記憶されている。このため、ＣＰＵ１１は、上記ステップＳ１３６−４で生成した追加情報に対する作成番号を「２」に更新する。
【０１０７】
最新の追加情報を追加情報テーブル１３ａに記憶すると、ＩＣカード１のＣＰＵ１１は、当該処理コマンドに対する処理結果を示すコード情報（たとえば、処理異常を示すコード情報）とともに、追加情報ありを示すステータスワードをセットしたレスポンスデータを作成する（ステップＳ１５２−４）。処理結果を示すコード情報と追加情報有りを示すステータスワードをセットしたレスポンスデータを作成すると、ＩＣカード１のＣＰＵ１１は、作成したレスポンスデータをＩＣカード処理装置２へ送信する（ステップＳ１５３）。
【０１０８】
このようなレスポンスデータを受信した場合であっても、ＩＣカード処理装置２では、追加情報に関連のない処理を継続できる。図１１に示す例では、ＩＣカード処理装置２は、追加情報に関連のない処理を要求する処理コマンド（CASE2のGET CHALLENGE コマンド）をＩＣカード１へ供給する（ステップＳ１６１）。この処理コマンドを受信したＩＣカード１は、当該処理コマンドで要求された処理を実行する（ステップＳ１６２）。処理コマンドに対する処理が正常に行われると、ＩＣカード１は、正常終了を示すステータスワードをセットした処理結果（ここでは、乱数）をＩＣカード処理装置２へ送信する（ステップＳ１６３）。
【０１０９】
ここで、ＩＣカード処理装置２が上記ステップＳ１３６で生成した追加情報（つまり、ステップＳ１３７で通知された追加情報）を読み出したいとする。すると、ＩＣカード処理装置２は、作成番号「２」の追加情報を指定して追加情報の読出しを要求する特殊コマンドをＩＣカード１へ送信する（ステップＳ１７１）。ただし、ここでは、ＩＣカード処理装置２が読出対象とする追加情報の作成番号を認識しているものとする。読出対象とする追加情報の作成番号を認識していない場合、ＩＣカード処理装置２は、当該追加情報に対応づけて記憶している処理コマンド情報（ここでは、書込みコマンドの一部を示す情報）により、読出対象とする追加情報を指定しても良い。
【０１１０】
なお、追加情報の読出しを要求する特殊コマンドでは、特定の追加情報だけでなく、複数の追加情報を読出対象として指定したり、全部の追加情報を読出対象として指定したりすることも可能である。  
さらに、追加情報の読出しを要求する特殊コマンドでは、パラメータの設定により読み出した追加情報の削除を指定することも可能である。図１１に示す例では、作成番号「２」の追加情報を指定する特殊コマンドにおいて、当該追加情報を読出し後に削除することが指定されているものとする。
【０１１１】
上記のような作成番号「２」の追加情報を読出対象に指定する特殊コマンドを受信したＩＣカード１のＣＰＵ１１は、追加情報テーブル１３ａから指定された作成番号「２」の追加情報を読み出す（ステップＳ１７２−１）。指定された作成番号「２」の追加情報を読み出すと、ＣＰＵ１１は、読み出した作成番号「２」の追加情報をセットしたレスポンスデータを作成する（ステップＳ１７２−２）。作成番号「２」の追加情報をレスポンスデータにセットすると、ＣＰＵ１１は、作成番号「２」の追加情報を追加情報テーブル１３ａから削除する（ステップＳ１７２−３）。
【０１１２】
上記特殊コマンドで指定された追加情報をレスポンスデータにセットすると、ＩＣカード１のＣＰＵ１１は、当該レスポンスデータをＩＣカード処理装置２へ送信する（ステップＳ１７３）。このレスポンスデータには、たとえば、作成番号が「２」で、処理コマンド情報が書込みコマンド（一部のデータが（00h D0h 00h 00h 10h 11h 12h））で、追加情報が「書込み対象のファイルＡ１にはチャネル「Ｃｈ．０」でアクセス中のためチャネル「Ｃｈ．１」では書込不可」であるという情報がセットされる。
【０１１３】
上記のように、第２の処理例では、ＩＣカードは、複数件の追加情報を記憶できる。このため、第２の処理例では、ＩＣカード処理装置は、ＩＣカードから追加情報有りが通知された場合であっても、追加情報に関連のないコマンドを継続的に実行させることができる。さらに、追加情報に関連のないコマンドを実行した後であっても、ＩＣカード処理装置は、任意のタイミングで、ＩＣカード１から過去のコマンド処理で生じた追加情報を取得することができる。この結果として、ＩＣカード処理装置では、既存のコマンド体系のままであっても、ＩＣカードにおけるコマンド処理で生じた追加情報（詳細情報）に基づいて効率的な処理をＩＣカードに実行させることができる。
【０１１４】
次に、ＩＣカード１におけるコマンド処理の第３の処理例について説明する。  
第３の処理例においても、ＩＣカード１は、予め規定されている上記したコマンド体系を遵守する。第３の処理例において、ＩＣカード１は、上位装置から与えられたコマンドの実行処理においてエラーが発生した場合、エラー内容の詳細な情報を示す追加情報を生成し、生成した追加情報を追加情報テーブル１３ａに保存する。さらに、ＩＣカード１は、追加情報テーブル１３ａに保存した追加情報を上位装置からの要求に応じて送信する。
【０１１５】
次に、第３の処理例に係る追加情報テーブル１３ａ´の構成について説明する。  
図１２は、上記追加情報テーブル１３ａ´の構成例を示す図である。  
上記追加情報テーブル１３ａ´には、複数件の追加情報（詳細情報）が保存可能である。上記追加情報テーブル１３ａ´に追加情報として保存可能な件数（最大件数）は、予め設定可能である。たとえば、上記追加情報テーブル１３ａ´に保存可能な追加情報の最大件数は、当該ＩＣカード１の発行処理時に設定される。
【０１１６】
上記追加情報テーブル１３ａ´には、コマンド処理においてエラーなどにより追加情報が発生するごとに、作成順番、優先度および処理コマンド情報を対応づけた追加情報を記憶する。追加情報は、コマンド処理の実行中に発生した事象の詳細な内容を示す情報である。追加情報としては、実行したコマンド処理のレスポンスデータでは伝えきれない情報を想定している。たとえば、コマンド処理においてエラーが発生した場合、ＩＣカード１は、エラー内容の詳細を示す情報を追加情報として生成する。
【０１１７】
たとえば、図１２に示す例では、書込みコマンドに対する追加情報として、書込み対象のファイルにはロジカルチャネル「Ｃｈ．０」でアクセス中であったため書込みがエラーとなった旨が記憶されている。既存のコマンド体系においては、書込みコマンドに対するレスポンスでは上記のようなエラー内容を示す情報は通知できない。このため、ＩＣカード１は、上記のようなエラー内容を追加情報として生成する。なお、上記追加情報は、コマンド処理の処理結果を示すレスポンスにおけるステータスワードだけでは通知しきれない情報であり、エラー内容の詳細を示す情報に限らない。たとえば、コマンドの処理が成功した場合であっても、ＩＣカード１では、コマンド処理の実行中に発生した事象を示す情報を追加情報として生成するようにしても良い。
【０１１８】
作成順番は、追加情報を作成した順番（保存した順番）を示す情報である。複数の追加情報を追加情報テーブル１３ａ´に保存する場合、たとえば、各追加情報には、新しい順に作成順番が付与される。この場合、追加情報テーブル１３ａ´に追加情報が保存されるごとに、各追加情報の作成順番が更新される。
【０１１９】
処理コマンド情報は、追加情報が発生した処理コマンドの内容を示す情報である。処理コマンド情報は、実行結果に関連する追加情報が生成された処理コマンド自体を示す情報である。たとえば、処理コマンド情報としては、実際に受信したコマンドの一部が記憶される。図１２に示す例では、処理コマンド情報として、WRITE COMMANDの一部のデータ（00h D0h 00h 00h 10h 11h 12h）が記憶されている。これにより、上位装置としてのＩＣカード処理装置２は、後述する追加情報の読出を要求する特殊コマンドにおいて、特定の追加情報を処理コマンド情報により指定することが可能となる。
【０１２０】
優先度は、追加情報の重要度を示す情報である。追加情報の優先度は、追加情報の内容に応じて決定される。ＩＣカード処理システム全体あるいはＩＣカード自体の動作にとって重要な問題となる追加情報には、高い優先度（例えば、５段階の優先度に対して「５」あるいは３段階の優先度に対して「３」）を付与する。重要性或は緊急性が高く、上位装置（ＩＣカード処理装置）に必ず通知すべき追加情報は、優先度を高くする。たとえば、優先度が高い追加情報としては、システム全体あるいはＩＣカードが正常に機能しなくなるような不具合を示す追加情報が考えられる。具体例としては、ＩＣカード１が正常に動作しなくなるようなハードウエアの故障を示す追加情報は、優先度を高くする。また、ＩＣカードの動作を停止させるべき不正攻撃などのセキュリティに関する重要情報を示す追加情報も、優先度を高くする。
【０１２１】
これに対して、ＩＣカード処理システム全体あるいはＩＣカード自体の動作には問題がなく後段のコマンド処理においても影響が少ない軽微な問題を示す追加情報には、低い優先度（例えば、５段階の優先度に対して「１」あるいは３段階の優先度に対して「１」）を付与する。たとえば、上位装置（ＩＣカード処理装置）が無視しても、後段のコマンド処理に影響がないような追加情報は、優先度を低くする。具体例としては、一時的に電源電圧が不安定であったために書込みエラーとなったことを示す追加情報は、電源電圧が安定すれば解消されるエラーであるため、優先度を低くしても良い。
【０１２２】
また、ＩＣカード処理システム全体あるいはＩＣカード自体の動作には問題ないが、後段のコマンド処理に影響がある追加情報には、中程度の優先度（例えば、５段階の優先度に対して「２」〜「４」、あるいは、３段階の優先度に対して「２」）を付与する。たとえば、アクセス対象としたファイルへのアクセス権が不備であったためにエラーとなったことを示す追加情報は、優先度を中程度としても良い。また、コマンドで指示されたアクセス対象のファイルが存在しないためにエラーとなったことを示す追加情報は、優先度を中程度としても良い。
【０１２３】
さらに、追加情報の優先度は、発生頻度、あるいは、連続して発生した回数などに応じて変化させるようにしても良い。たとえば、同一内容の追加情報が既に追加情報テーブルに存在する場合、新しい追加情報に対する優先度を＋１することにより、優先度をより高く設定するようにすれば良い。また、連続発生回数が所定閾値以上となった場合、当該追加情報の優先度を高くするようにしても良い。また、当該ＩＣカードにおける同一内容の追加情報の発生頻度に応じて当該追加情報の優先度を高くするようにしても良い。
【０１２４】
また、ＩＣカード１は、追加情報テーブル１３ａ´に保持している追加情報の優先度に応じてコマンド処理の内容を決定する機能も有する。たとえば、優先度が高い追加情報を保持している場合、ＩＣカード１は、受信したコマンドに対する処理を実行せずに、優先度の高い追加情報を保持していることを通知するようにしても良い。このような運用形態では、優先度が高い追加情報を保持している場合、当該追加情報が読み出されるまで、ＩＣカード１は、優先度の高い追加情報を保持していることを通知し続ける。このような処理によれば、ＩＣカード１は、優先度が高い追加情報を確実に上位装置へ通知することができる。
【０１２５】
また、優先度が低い追加情報を保持している場合、ＩＣカード１は、上位装置から当該追加情報の読出しが要求されなければ、優先度の低い追加情報を削除するようにしても良い。このような処理によれば、ＩＣカード１は、優先度が低い追加情報で追加情報テーブルが占有されることが少なくなる。
【０１２６】
なお、本第３の処理例では、主として、追加情報の優先度は、上位装置（ＩＣカード処理装置）への通知の必要性（重要度或は緊急度）に応じて決定されることを想定している。ただし、追加情報の優先度は、追加情報を種別ごとに分類できる情報であれば良い。たとえば、優先度の代わりに追加情報の種別を決定し、追加情報テーブル１３ａ´には、優先度の代りに追加情報の種別を示す情報を記憶するようにしても良い。このような場合であっても、ＩＣカード１は、追加情報の種別に応じた処理を行うことができる。
【０１２７】
次に、上記ＩＣカード１におけるコマンド処理の第３の処理例の流れを説明する。  
図１３は、ＩＣカード１におけるコマンドに対する第３の処理例の流れを説明するためのフローチャートである。  
電源供給を受けているＩＣカード１では、待機状態において、通信ユニット１４によりＩＣカード処理装置２からのコマンドが受信可能となっている（ステップＳ２０１）。この状態においてＩＣカード処理装置２からのコマンドを上記通信ユニット１４が受信した場合（ステップＳ２０１、ＹＥＳ）、ＩＣカード１のＣＰＵ１１は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する（ステップＳ２０２）。追加情報の読出しを要求するコマンドは、予め規定される特殊コマンドであるものとする。
【０１２８】
たとえば、追加情報の読出しを要求する特殊コマンドとしては、後述する図１４或は図１５に示す例のように、ゲットレスポンスコマンド（ＩＳＯで規定されているCASE2のGET RESPONSE Command）を用いることができる。このような特殊コマンドでは、読出対象とする追加情報、あるいは、追加情報を読出した後の当該追加情報に対する処理内容（削除するか否か）がパラメータなどにより指定可能となっている。
【０１２９】
上記判断により受信したコマンドが追加情報の読出しを要求する特殊コマンド（以下、単に特殊コマンドとも称する）でないと判断した場合（ステップＳ２０２、ＮＯ）、ＣＰＵ１１は、追加情報テーブル１３ａ´に追加情報が記憶されているか否かを判断する（ステップＳ２０３）。追加情報テーブル１３ａ´に追加情報が記憶されていると判断した場合（ステップＳ２０３、ＹＥＳ）、ＣＰＵ１１は、追加情報テーブル１３ａ´に優先度が第１の閾値以上となる優先度が高い追加情報が存在するか否かを判断する（ステップＳ２０４）。第１の閾値は、追加情報が必ず上位装置に通知すべき情報であるか否かを優先度に基づいて判定するための閾値である。
【０１３０】
すなわち、第３の処理例では、ＩＣカード１は、上位装置としてのＩＣカード処理装置２への通知が必須の追加情報が追加情報テーブル１３ａ´に保持されているか否かを判断する。言い換えると、ＣＰＵ１１は、優先度が第１の閾値以上である否かにより、追加情報テーブル１３ａ´に保持されている追加情報がＩＣカード処理装置２への通知が必須であるか否かを判断する。たとえば、「１」〜「５」の５段階の優先度に対して第１の閾値を「５」と設定した場合、ＣＰＵ１１は、優先度が「５」の追加情報を優先度が高い追加情報と判断する。
【０１３１】
上記第１の閾値以上の優先度が高い追加情報が存在すると判断した場合（ステップＳ２０４、ＹＥＳ）、ＣＰＵ１１は、受信したコマンドに対する処理を実行せずに、追加情報有りを示すステータスワードをセットしたレスポンスデータを作成し（ステップＳ２１３）、作成したレスポンスデータをＩＣカード処理装置２へ送信する（ステップＳ２１４）。これにより、ＩＣカード１では、追加情報テーブル１３ａ´に第１の閾値以上となる高い優先度の追加情報を存在する限り、特殊コマンド以外の通常コマンドに対してはコマンド処理を実行せずに、追加情報が有りというレスポンスのみを返す。この結果として、ＩＣカード処理装置２では、優先度の高い追加情報をＩＣカード１から読み出すまで、他の処理を当該ＩＣカード１に実行させることが出来なくなる。
【０１３２】
また、上記第１の閾値以上の優先度が高い追加情報が存在しないと判断した場合（ステップＳ２０４、ＮＯ）、ＣＰＵ１１は、追加情報テーブル１３ａ´に優先度が第２の閾値以下となる優先度が低い追加情報が存在するか否かを判断する（ステップＳ２０５）。第２の閾値は、追加情報が上位装置に通知しなくとも良い情報であるか否かを優先度に基づいて判定するための閾値である。
【０１３３】
すなわち、第３の処理例では、ＩＣカード１は、追加情報テーブル１３ａ´に保持している追加情報が上位装置に通知しなくても良い追加情報であるか否かを判断する。本実施の形態では、後段のステップＳ２０６で、第２の閾値以下の追加情報を削除する。これは、ステップＳ２０５の処理が、追加情報テーブル１３ａ´に保持している追加情報が削除しても良い情報であるか否かを判断することを意味している。すなわち、特殊コマンド以外のコマンドを受信した場合、ＣＰＵ１１は、ＩＣカード処理装置２から読出し要求が無った直前のコマンド処理で発生した追加情報を削除しても良いか否かを判断する。たとえば、「１」〜「５」の５段階の優先度に対して第２の閾値を「１」と設定した場合、ＣＰＵ１１は、優先度が「１」の追加情報を優先度が低い追加情報と判断する。
【０１３４】
上記第２の閾値以下の優先度の追加情報が存在すると判断した場合（ステップＳ２０５、ＹＥＳ）、ＣＰＵ１１は、優先度が第２の閾値以下となっている低い優先度の追加情報（直前のコマンド処理で発生した追加情報）を追加情報テーブル１３ａ´から削除する（ステップＳ２０６）。なお、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合、追加情報テーブル１３ａ´から削除する追加情報の内容は、追加情報テーブル１３ａ´以外の記憶領域に保存しておくようにしても良い。また、追加情報を完全に削除せずに、追加情報テーブル１３ａ´に削除済みである旨を対応づけて記録しておくようにしても良い。
【０１３５】
上記第２の閾値以下の優先度の追加情報が存在しないと判断した場合（ステップＳ２０５、ＹＥＳ）、あるいは、優先度が第２の閾値以下の追加情報を削除した場合（ステップＳ２０６）、ＣＰＵ１１は、受信したコマンドの内容に従ったコマンド処理を実行する（ステップＳ２０７）。コマンド処理において、ＣＰＵ１１は、コマンドヘッダで指定される処理内容を判別することにより受信したコマンドの内容に従った処理を実行する。
【０１３６】
コマンド処理を実行すると、ＣＰＵ１１は、当該コマンド処理の実行中に追加情報（詳細情報）としてＩＣカード処理装置２に通知すべき事象（例えば、エラー）が発生したか否かを判断する（ステップＳ２０８）。当該コマンド処理においてＩＣカード処理装置２へ追加情報として通知すべき事象が発生しなかった場合（ステップＳ２０８、ＮＯ）、ＣＰＵ１１は、ステータスワード（ＳＷ）に処理結果を示す情報（コード情報）をセットしたレスポンスデータを生成し（ステップＳ２１５）、生成したレスポンスデータをＩＣカード処理装置２へ送信する（ステップＳ２１４）。たとえば、書込みコマンドに対して正常に処理が完了した場合、ＣＰＵ１１は、処理成功を示す情報（コード情報）をセットしたレスポンスデータを生成してＩＣカード処理装置２へ送信する。当該レスポンスを送信した後、ＩＣカード１は、次のコマンドが受信可能な状態となる。
【０１３７】
また、コマンド処理においてＩＣカード処理装置２へ追加情報として通知すべき事象（例えば、エラー）が発生した場合、つまり、追加情報が発生した場合（ステップＳ２０８、ＹＥＳ）、ＣＰＵ１１は、当該コマンド処理の実行結果に関連する詳細な内容を示す追加情報（詳細情報）を生成する（ステップＳ２０９）。追加情報は、コマンド処理の実行結果としての当該コマンドに対するレスポンスでは送信しきれない情報である。たとえば、書込みコマンドの処理でエラーが発生した場合、ＣＰＵ１１は、追加情報として、エラーの原因、あるいは、エラーの具体的な内容（エラーが発生した処理工程）などを示す情報を含む詳細情報を生成する。なお、書込み系のコマンド処理におけるエラーにおいて、エラー原因としては、メモリ異常（ハードウエアの故障）、不正攻撃（不正なアクセス手順による処理）、アクセス権無し、あるいは、動作電圧の低下などが考えられる。また、エラーの具体的な内容を示す情報としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【０１３８】
上記のような追加情報を生成すると、ＣＰＵ１１は、生成した追加情報を追加情報テーブル１３ａ´に新規に記憶する（ステップＳ２１０）。さらに、ＣＰＵ１１は、生成した追加情報に対する優先度を決定する処理を行う（ステップＳ２１１）。追加情報に対する優先度は、追加情報の重要度或は緊急度などに応じて決定されるものであり、たとえば、上位装置としてのＩＣカード処理装置２への通知の必要性に応じて決定される。追加情報に対する優先度が決定されると、ＣＰＵ１１は、図５に示すように、作成順番、優先度、およびコマンド情報を当該追加情報に対応づけて追加情報テーブル１３ａ´に記憶する（ステップＳ２１２）。
【０１３９】
なお、上記追加情報テーブル１３ａ´は、ＲＡＭ１３に設けられる。ＲＡＭ１３に設けた追加情報テーブル１３ａ´は、当該ＩＣカード１がリセットされるごとに保存した追加情報としての詳細情報をクリアする。言い換えると、ＩＣカード１のリセットするごとに追加情報もリセットしたい場合、追加情報テーブル１３ａ´は、ＲＡＭ１３に設けられる。また、追加情報テーブル１３ａ´は、不揮発性メモリ１６に設けても良い。不揮発性メモリ１６に設けた追加情報テーブル１３ａ´は、ＩＣカード１の電源がオフとなっても追加情報を保持する。不揮発性メモリ１６に設けた追加情報テーブル１３ａ´は、コマンドによって上書き或は削除などの処理が行われなければ、追加情報としての詳細情報が保持される。言い換えると、ＩＣカード１がリセットされても追加情報を保持しておきたい場合、追加情報テーブル１３ａ´は、不揮発性メモリ１６に設けられる。
【０１４０】
追加情報テーブル１３ａ´に優先度、コマンド情報、および作成順番を対応づけた追加情報を保存すると、ＣＰＵ１１は、ステータスワード（ＳＷ）にコマンド処理結果を示す情報（コード情報）と追加情報有りを示す情報とをセットしたレスポンスデータを生成する（ステップＳ２１３）。追加情報有りを示す情報をセットしたレスポンスデータを生成すると、ＣＰＵ１１は、生成したレスポンスをＩＣカード処理装置２へ送信する（ステップＳ２１４）。当該レスポンスを送信した後、ＩＣカード１は、次のコマンドが受信可能な状態となる。
【０１４１】
また、上記ステップＳ２０２で受信したコマンドが追加情報の読出しを要求する特殊コマンドであると判断した場合（ステップＳ２０２、ＹＥＳ）、ＣＰＵ１１は、追加情報テーブル１３ａ´に記憶されている追加情報から読出対象とする追加情報を特定する処理を行う（ステップＳ２２１）。読出対象とする追加情報は、追加情報の読出しを要求する特殊コマンドの内容（パラメータ或は受信タイミング）に基づいて判断される。
【０１４２】
上記追加情報テーブル１３ａ´では、追加情報に対応づけて、作成順序および処理コマンド情報を記憶している。このため、追加情報の読出しを要求する特殊コマンドでは、作成順番、あるいは処理コマンド情報により特定の追加情報を指定することが可能である。また、特定の追加情報が指定されない特殊コマンドに対しては、最新の追加情報を読出対象の追加情報とするようにしても良い。なお、上記特殊コマンドでは、複数の追加情報を指定したり、全ての追加情報を指定したりすることもできる。このような特殊コマンドに対しては、ＣＰＵ１１は、複数の追加情報、或は全ての追加情報を読出対象と判定する。
【０１４３】
読出対象の追加情報を特定すると、ＣＰＵ１１は、特定した読出対象の追加情報を追加情報テーブル１３ａ´から読み出し（ステップＳ２２２）、読み出した追加情報をセットしたレスポンスデータを生成する（ステップＳ２２３）。読出対象の追加情報をセットしたレスポンスデータを生成すると、ＣＰＵ１１は、読み出した追加情報を削除するか保存しておくかを判断する（ステップＳ２２４）。読み出した追加情報を削除するか否かは、前記特殊コマンドのパラメータで指定できるようにしても良いし、予め何れかに設定しておくようにしても良い。たとえば、前記特殊コマンドで読出した追加情報を削除するか否かを指定できるようにする場合、ＣＰＵ１１は、受信した特殊コマンドのパラメータにより読出し後の追加情報を削除するか否かを判断する。
【０１４４】
読出した追加情報を削除すると判断した場合（ステップＳ２２４、ＹＥＳ）、ＣＰＵ１１は、読み出した追加情報を追加情報テーブル１３ａ´から削除する（ステップＳ２２５）。この場合、ＣＰＵ１１は、追加情報テーブル１３ａ´に残った追加情報に対する作成順番を更新する。なお、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合、追加情報テーブル１３ａ´から削除する追加情報の内容は、追加情報テーブル１３ａ´以外の記憶領域に保存しておくようにしても良い。また、追加情報を完全に削除せずに、追加情報テーブル１３ａ´に削除済みである旨を対応づけて記録しておくようにしても良い。また、ステップＳ２２４及びＳ２２５の処理は、読み出した追加情報をレスポンスデータにセットした後、或はレスポンスデータを送信した後に実行するようにしても良い。
【０１４５】
上記特殊コマンドで指定された読出対象の追加情報をレスポンスデータにセットすると、ＣＰＵ１１は、読出対象の追加情報をセットしたレスポンスデータに処理成功を示すステータスワードをセットし（ステップＳ２１５）、上記特殊コマンドに対するレスポンスとしてＩＣカード処理装置２へ送信する（ステップＳ２１４）。
【０１４６】
上記のように、本実施の形態のＩＣカードでは、上位装置から受信した処理コマンドに対する実行結果としてステータスワードでは示せない追加情報（詳細情報）がある場合、追加情報を生成し、生成した追加情報の優先度を決定し、決定した優先度を当該追加情報に対応づけて追加情報テーブルに保存し、追加情報がある旨のレスポンスを通知する。追加情報テーブルに追加情報を保存した状態でコマンドを受信した場合、ＩＣカードは、追加情報テーブルに保存している追加情報の優先度に応じた処理を行う。
【０１４７】
たとえば、優先度が所定の閾値よりも高い追加情報を保持している場合、ＩＣカードは、通常の処理を要求するコマンドを受信しても、当該コマンドを実行せずに、追加情報がある旨のレスポンスを送信する。また、優先度が所定の閾値よりも低い追加情報を保持している場合、ＩＣカードは、通常の処理コマンドを受信すると当該コマンドに従ってコマンド処理を実行するとともに、優先度が低い当該追加情報を削除する。
【０１４８】
上記のような第３の処理例のＩＣカード１によれば、既存のコマンド体系のままであっても、エラー内容の詳細情報などのコマンド処理中に発生した事象を示す追加情報（詳細情報）を、各追加情報の優先度に応じて効率良く上位装置へ通知することを実現できる。
【０１４９】
次に、ＩＣカード処理システム全体における第３の処理例の流れを具体例を用いて説明する。  
まず、コマンドの実行結果として生成した最新の追加情報（詳細情報）を読み出す場合の具体例について説明する。  
図１４は、第３の処理例により最新の追加情報を読み出す処理の具体例を示すシーケンス図である。図１４は、書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンスを示している。なお、書込み処理におけるエラーの原因としては、メモリ異常、不正攻撃、アクセス権無し、あるいは、動作電圧低下などが考えられる。
【０１５０】
たとえば、書込み系のコマンドを受信した場合、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ＩＣカード１は、書込みが出来なかった理由（他の論理チャネルによるアクセス対象ファイルの占有）を追加情報として生成して保持しておく。この状態で、ＩＣカード１は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを返信することにより、受信した書込みコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ＩＣカード１は、書込みが出来なかった理由を示す追加情報を送信する。
【０１５１】
ここでは、ＩＣカード１は、図２に示すように、アプリケーションＡ、Ｂ、ファイル（ＥＦ）Ａ１，Ａ２，Ｂ１が存在することを想定する。さらに、ＩＣカード１は、ロジカルチャネル管理機能４２により管理する複数の論理チャネルでのアクセス状態として、論理チャネル「Ｃｈ．０」がファイルＡ１をカレントに設定している状態を想定するものとする。
【０１５２】
まず、上位装置としてのＩＣカード処理装置２は、ＩＣカード１内のファイルＡ１にデータを書き込むための準備として、論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択を要求するコマンドをＩＣカード１に送信する（ステップＳ２３１）。これに対して、ＩＣカード１は、論理チャネル（Ｃｈ．１）を開設してアプリケーションＡを選択するコマンド処理を実行する。論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択とが成功すると、ＩＣカード１は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをＩＣカード処理装置２へ送信する（ステップＳ２３２）。
【０１５３】
論理チャネル（Ｃｈ．１）の開設とアプリケーションＡの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ＩＣカード処理装置２は、ファイルＡ１の選択を要求するコマンドをＩＣカード１に対して送信する（ステップＳ２３３）。これに対して、ＩＣカード１は、論理チャネル（Ｃｈ．１）におけるカレントファイルをファイルＡ１に設定するコマンド処理を実行する。論理チャネル（Ｃｈ．１）におけるカレントファイルをファイルＡ１に設定する処理が成功すると、ＩＣカード１は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをＩＣカード処理装置２へ送信する（ステップＳ２３４）。
【０１５４】
ファイルＡ１の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ＩＣカード処理装置２は、ファイルＡ１に対するデータの書込みを要求する書込みコマンドをＩＣカード１に対して送信する（ステップＳ２３５）。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ＩＣカード１は、書込みコマンドに応じた書込み処理を実行する（ステップＳ２３６）。
【０１５５】
このような書込みコマンドに対する処理において、まず、ＩＣカード１のＣＰＵ１１は、カレントファイルに設定されているファイルＡ１へのアクセス権限の確認する（ステップＳ２３６−１）。当該書込みコマンドに対する処理は、論理チャネルが「Ｃｈ．１」でカレントファイルとしてのファイルＡ１にデータを書込む処理である。ここでは、ＩＣカード１は、論理チャネル「Ｃｈ．０」でファイルＡ１をカレントファイルに設定している状態である。このため、ＩＣカード１のＣＰＵ１１は、論理チャネル「Ｃｈ．１」でのファイルＡ１に対する書込み権限がないものと判断する（ステップＳ２３６−２）。このような書込み権限無しの判断に基づいて、ＩＣカード１のＣＰＵ１１は、当該コマンドで要求されるデータの書込み処理を実施せずに中止（エラー）とする（ステップＳ２３６−３）。
【０１５６】
受信した書込みコマンドに対応するコマンド処理を中止すると、ＩＣカード１のＣＰＵ１１は、当該コマンドの処理を中止した詳細な理由を示す追加情報（詳細情報）を生成する（ステップＳ２３６−４）。ここでは、コマンド処理を中止した理由（エラー内容の詳細情報）は、論理チャネル「Ｃｈ．０」が既にファイルＡ１にアクセス中であることである。このため、ＩＣカード１のＣＰＵ１１は、コマンド処理を中止の理由（例えば、「ファイルＡ１には論理チャネル「Ｃｈ．０」でアクセス中のため論理チャネル「Ｃｈ．１」では書込み不可」、あるいは、「ファイルＡ１に対する当該論理チャネル（Ｃｈ．１）のアクセス優先権が２番目」など）を示す追加情報を生成する。
【０１５７】
追加情報を生成すると、ＣＰＵ１１は、生成した追加情報に対する優先度を決定する（ステップＳ２３６−５）。ここでは、追加情報は、「ファイルＡ１には論理チャネル「Ｃｈ．０」でアクセス中のため論理チャネル「Ｃｈ．１」では書込み不可」という情報である。このような追加情報に対しては、図１２に示す例では、優先度が「２」と設定される。
【０１５８】
生成した追加情報に対する優先度を決定すると、ＣＰＵ１１は、生成した追加情報に、優先度（ここでは、「２」）、コマンド情報（ここでは、書込みコマンドの一部（00h D0h 00h 00h 10h 11h 12h））、および、作成番号（ここでは、「１」）を対応づけて追加情報テーブル１３ａ´に記憶する（ステップＳ２３６−６）。
【０１５９】
最新の追加情報を追加情報テーブル１３ａ´に記憶すると、ＩＣカード１のＣＰＵ１１は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する（ステップＳ２３６−７）。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ＩＣカード１のＣＰＵ１１は、作成したレスポンスをＩＣカード処理装置２へ送信し（ステップＳ２３７）、当該書込みコマンドに対する処理を終了する。
【０１６０】
ＩＣカード処理装置２は、追加情報有りを含むレスポンスを受信すると、追加情報が直に必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ＩＣカード処理装置２のオペレータが適宜選択するようにしても良い。ＩＣカード処理装置２は、追加情報の要否の判断結果に基づいて当該ＩＣカード１に次に供給するコマンドを決定する。ここでは、ＩＣカード処理装置２は、ＩＣカード１に対して、すぐに最新の追加情報の読出しを要求するものとする。
【０１６１】
最新の追加情報が必要であると判断した場合、ＩＣカード処理装置２は、最新の追加情報を指定した追加情報の読出しを要求する特殊コマンド（例えば、CASE2のGET  RESPONSEコマンド）をＩＣカード１へ送信する（ステップＳ２３８）。上記特殊コマンドは、特定の追加情報の指定が無い場合、最新の追加情報が読出対象の追加情報と判断されるようにしても良い。また、特殊コマンドでは、作成順番「１」を指定したり、最新の追加情報が発生した処理コマンド情報（ここでは、書込みコマンド）を指定したりすることにより最新の追加情報を指定するようにしても良い。ここでは、追加情報有りのレスポンスを受けたＩＣカード処理装置２が、特定の追加情報を指定しない特殊コマンドにより、最新の追加情報の読出しを要求するものとする。
【０１６２】
上記特殊コマンドを受信したＩＣカード１のＣＰＵ１１は、当該特殊コマンドで追加情報の指定が無ければ、当該特殊コマンドが最新の追加情報の読出しを要求するコマンドであると判断する。この判断に基づいて、ＩＣカード１のＣＰＵ１１は、追加情報テーブル１３ａ´から最新の追加情報（作成番号が最も新しい追加情報）を読出し、レスポンスデータにセットする（ステップＳ２３９）。最新の追加情報をレスポンスデータにセットすると、ＩＣカード１のＣＰＵ１１は、当該レスポンスデータをＩＣカード処理装置２へ送信する（ステップＳ２４０）。
【０１６３】
上記のように、追加情報の読出しを要求する特殊コマンドで特定の追加情報が指定されていない場合、ＩＣカードは、追加情報テーブルに保存した最新の追加情報をレスポンスとして送信するようにできる。また、読み出した最新の追加情報は、削除するようにしても良いし、保存しておくようにしても良い。たとえば、読出した追加情報を削除するか否かを特殊コマンドで指定する場合、ＩＣカード１のＣＰＵ１１は、当該特殊コマンドでの指定に基づいて読み出した追加情報を削除あるいは保存する。
【０１６４】
次に、追加情報テーブル１３ａ´に優先度が高い追加情報を保存している場合の処理例について説明する。  
図１５は、追加情報テーブル１３ａ´に優先度が高い追加情報を記憶した状態でＩＣカード処理装置２から受信するコマンドに対する処理例を示すシーケンス図である。  
ここでは、追加情報テーブル１３ａ´に５段階で「５」の優先度が設定された追加情報を記憶している状態であることを想定するものとする。この状態において、ＩＣカード処理装置２は、追加情報に関連のない処理を要求するコマンド（特殊コマンド以外の通常コマンド）（図１５の例では、CASE2のGET CHALLENGE コマンド）をＩＣカード１へ供給している（ステップＳ２４１）。
【０１６５】
通常コマンドを受信したＩＣカード１は、追加情報テーブル１３ａ´に優先度が高い追加情報が存在するか否かを確認する。ここで、ＣＰＵ１１１は、追加情報テーブル１３ａ´に優先度が高い追加情報（優先度「５」）が記憶されていることを確認する（ステップＳ２４２−１）。このため、ＩＣカード１のＣＰＵ１１は、当該コマンドで要求された処理を実行することなく、追加情報の読出しを促すレスポンスデータを作成する（ステップＳ２４２−２）。たとえば、ＩＣカード１のＣＰＵ１１は、処理異常である事と追加情報がある事とを示すステータスワードをセットしたレスポンスデータを作成し、ＩＣカード処理装置２へ送信する（ステップＳ２４３）。
【０１６６】
この場合、ＩＣカード１は、上位装置としてのＩＣカード処理装置２からの要求に応じて追加情報を読み出さない限り、通常コマンドを実行しない。すなわち、ＩＣカード処理装置２は、ＩＣカード１から優先度の高い追加情報を読み出さない限り、通常コマンドが実行できない。このため、ＩＣカード処理装置２は、追加情報の読出しを要求する特殊コマンド（図１５に示す例では、CASE2のGET  RESPONSEコマンド）をＩＣカード１へ送信する（ステップＳ２５１）。
【０１６７】
なお、特殊コマンドでは、読出し対象とする追加情報を作成順番あるいは優先度などにより指定しても良い。また、読出し対象の追加情報を指定しない場合、直前のレスポンスデータで通知された追加情報が読み出されるようにしても良い。また、特殊コマンドでは、１つの追加情報だけでなく、複数の追加情報を読出対象として指定したり、追加情報テーブル１３ａ´に記憶されている全部の追加情報を読出対象として指定したりすることも可能である。
【０１６８】
さらに、追加情報の読出しを要求する特殊コマンドでは、パラメータの設定により読み出した後の追加情報を削除するか保持するかを指定することも可能である。図１５に示す例では、追加情報を指定する特殊コマンドでは、当該追加情報を読出し後に削除することが指定されているものとする。すなわち、図１５に示す処理例では、読出し後の追加情報は削除されるものとする。なお、このような場合であっても、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合には、当該追加情報を完全に削除せずに、当該追加情報の内容を別途記録しておくようにする。
【０１６９】
上記特殊コマンドを受信したＩＣカード１のＣＰＵ１１は、追加情報テーブル１３ａ´から読出し対象となる追加情報を読み出し（ステップＳ２５２−１）、読み出した追加情報をセットしたレスポンスデータを作成する（ステップＳ２５２−２）。追加情報をレスポンスデータにセットすると、ＣＰＵ１１は、当該追加情報を追加情報テーブル１３ａ´から削除する（ステップＳ２５２−３）。上記特殊コマンドで指定された追加情報をレスポンスデータにセットすると、ＩＣカード１のＣＰＵ１１は、当該レスポンスデータに処理の正常終了を示すステータスワードをセットしてＩＣカード処理装置２へ送信する（ステップＳ２５３）。
【０１７０】
上記追加情報を含むレスポンスデータを受信した後、ＩＣカード処理装置２は、追加情報に関連のない処理を要求するコマンド（特殊コマンド以外の通常コマンド）（図１５の例では、CASE2のGET CHALLENGE コマンド）をＩＣカード１へ供給したものとする（ステップＳ２６１）。通常コマンドを受信した場合、ＩＣカード１は、追加情報テーブル１３ａ´に優先度が高い追加情報が存在するか否かを確認する。
【０１７１】
ここでは、優先度が高い追加情報（優先度「５」）が削除されたため、ＣＰＵ１１は、追加情報テーブル１３ａ´に優先度が高い追加情報が記憶されていないことを確認する（ステップＳ２６２−１）。この場合、ＩＣカード１のＣＰＵ１１は、当該コマンドの内容に従ってコマンド処理を実行する（ステップＳ２６２−２）。このコマンド処理が正常に実行されると、ＩＣカード１のＣＰＵ１１は、上記コマンド処理の結果として、コマンド処理により生成した乱数と処理が正常終了を示すステータスワードとをセットしたレスポンスデータを作成し、ＩＣカード処理装置２へ送信する（ステップＳ２６３）。
【０１７２】
上記のように、本第３の処理例のＩＣカードは、コマンド処理の実行中に発生したエラーなどの事象を示す詳細情報と当該詳細情報に対する優先度とを対応づけて記憶し、前記詳細情報の読出しを要求する特殊コマンドを受信した場合には前記詳細情報を出力し、前記特殊コマンド以外のコマンドを受信した場合には前記詳細情報の優先度に応じた処理を実行するようにしたものである。このような第３の処理例によれば、ＩＣカードは、コマンド処理で生じた追加情報（詳細情報）を優先度に応じた効率的な処理により上位装置側に提供できる。
【０１７３】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１７４】
Ｃａ…モジュール、Ｃ…筐体、１…ＩＣカード、２…ＩＣカード処理装置、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１３ａ（１３ａ´）…追加情報（詳細情報）テーブル１４…通信ユニット（ＵＡＲＴ）、１５…コプロセッサ、１６…不揮発性メモリ。
【図１】
0005454933.tif 000002
【図２】
0005454933.tif 000003
【図３】
0005454933.tif 000004
【図４】
0005454933.tif 000005
【図５】
0005454933.tif 000006
【図６】
0005454933.tif 000007
【図７】
0005454933.tif 000008
【図８】
0005454933.tif 000009
【図９】
0005454933.tif 000010
【図１０】
0005454933.tif 000011
【図１１】
0005454933.tif 000012
【図１２】
0005454933.tif 000013
【図１３】
0005454933.tif 000014
【図１４】
0005454933.tif 000015
【図１５】
0005454933.tif 000016