(57)【特許請求の範囲】
【請求項１】
ＣＰＵ、ＲＡＭ、ＥＥＰＲＯＭ、ＲＯＭを有し、ＥＥＰＲＯＭ内に格納されたファイルと、ファイル内のデータを外部よりコマンドで指定可能なＩＣカードにおいて、コマンド受信手段と、受信したコマンドの内容を解釈して実行する実行手段とを備え、ＩＣカード内のデータ間演算を実行するとき、演算対象データをコマンドのデータ部で指定し、演算結果の出力先を、ファイルＩＤと更新レコード番号で指定することを特徴とするＩＣカード。
【請求項２】
請求項１記載のＩＣカードにおいて、前記実行手段は、演算結果が条件を満たしているか否かを、ファイル管理領域に格納することを特徴とするＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＥＥＰＲＯＭ（Electrically Erasable and Programable Read Only Memory）を有するＩＣカードに係り、特にＥＥＰＲＯＭの複数ファイル間での演算を行うようにしたＩＣカードに関する。
【０００２】
【従来の技術】
従来、図５に示すように、リーダ／ライタ１はＩＣカード２に対してコマンドを送信し、これを受信したＩＣカードは、コマンドを解釈して書き込み／読み出し等の処理を実行し、処理結果をレスポンスとしてリーダ／ライタ１へ返すようになっている。
【０００３】
図６に示すように、ＩＣカード２は、ＣＰＵ２ａ、ＲＡＭ２ｂ、ＲＯＭ２ｃ、ＥＥＰＲＯＭ２ｄを有しており、ＲＯＭ２ｃに記憶されているプログラムをＣＰＵ２ａに読み込み、リーダ／ライタ１から送信されるコマンドをＩ／Ｏポートを通して受信すると、コマンドとともに送信されたデータを読み込んで必要な処理を行い、結果をＥＥＰＲＯＭ２ｄの所定のファイルに書き込み、Ｉ／Ｏポートを通してレスポンスを出力する。
【０００４】
【発明が解決しようとする課題】
このようにＩＣカードにおいては、通常、ＣＰＵ２ａで１つのファイルの内容を読みだして演算処理し、処理結果で内容を更新することを行っているが、２つのファイル間のデータを読みだして処理することは行われていない。例えば、図７に示すように、ファイルＡのレコードｎの内容からファイルＢのレコードｍの内容を減算し、減算した内容でレコードｍを更新するといった処理は、リーダ／ライタ１により、次のような手順で実行される。
【０００５】
リード：ファイルＡ（レコードｎ）
リード：ファイルＢ（レコードｍ）
（レコードｎ）−（レコードｍ）
ライト：ファイルＢ（レコードｍ）
この場合、リーダ／ライタとＩＣカードとの間では、多数のデータが伝送線上を行き来することになり、伝送効率が良くないとともに、セキュリティ上好ましくない。
【０００６】
本発明は上記課題を解決するためのもので、ＩＣカードに格納されている複数ファイル間での演算とその結果の保持を、１つのコマンドのみでＩＣカード内で実行可能にし、伝送効率、セキュリティを向上させることを目的とする。
【０００７】
【課題を解決するための手段】
本発明は、ＣＰＵ、ＲＡＭ、ＥＥＰＲＯＭ、ＲＯＭを有し、ＥＥＰＲＯＭ内に格納されたファイルと、ファイル内のデータを外部よりコマンドで指定可能なＩＣカードにおいて、コマンド受信手段と、受信したコマンドの内容を解釈して実行する実行手段とを備え、ＩＣカード内のデータ間演算を実行するとき、演算対象データをコマンドのデータ部で指定し、演算結果で更新する出力先を、ファイルＩＤと更新レコード番号を指定することにより行うことを特徴とする。
また、本発明は、前記実行手段は、演算結果が条件を満たしているか否かを、ファイル管理領域に格納することを特徴とする。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。
図１はＥＥＰＲＯＭに格納されたファイルを説明する図、図２はディレクトリの構成を説明する図、図３はコマンドの構成を説明する図、図４はファイル間演算を説明する図である。なお、本発明のＩＣカードの構成は、図６に示したものと同じであるので、その構成の説明は省略する。
図１に示すように、ＥＥＰＲＯＭには複数のファイルが保持され、各ファイルは複数のレコードを有している。もちろん、レコードが１つの場合もあり得る。ファイルにはファイルを指定するためのファイル番号（ファイルＩＤ）が付与され、また、各ファイル内のレコードにはレコード番号が付与されており、ファイルＩＤとレコード番号を指定することにより、所望のレコードにアクセスすることが可能である。
【０００９】
ファイル領域にファイルを生成（ファイルエリアを指定）したとき、ディレクトリ領域にはファイルの制御情報であるディレクトリが生成されるようになっている。ディレクトリは、図２に示すように、ファイルを識別するためのファイルＩＤ、ファイルが記憶される先頭アドレス、エリア容量、属性情報（リード／ライトのアクセス権（キー）の情報）、チェックコードからなっている。また、図示は省略するが、ＯＳが管理するＩＣカード内のシステム領域には、ディレクトリに示された先頭アドレスとエリア容量から、割り当てられたファイルエリアの最後のアドレスを示すポインタがセットされ、ファイルエリアが割り当てられるごとにその最後のアドレスを示すようになっている。
【００１０】
リーダ／ライタからのコマンドは、図３に示すように、コマンドの分類（ＣＬＡ）、命令（ＩＮＳ）、パラメータＰ１、Ｐ２にデータ長Ｌｃおよびデータ部が付加されたものであり、本発明におけるファイル間の演算とその保持は、ファイル間演算命令で行われ、演算対象のファイルはデータ部で指定し、演算結果の出力先はパラメータＰ１、Ｐ２で、ファイルＩＤとデータ位置を指定することにより行われる。例えば、ＡファイルとＢファイルを演算し、その演算結果でＢファイルの内容を更新する場合、データ部でＡ、Ｂファイルを指定し、パラメータＰ１、Ｐ２でＢファイルと、更新レコードが指定される。なお、演算がＡファイルの内容とＢファイルの内容を比較するだけで、更新がない場合は、ファイル間演算命令はＡ−Ｂを命令し、Ａ、Ｂをデータ部で指定するのみで、パラメータＰ１、Ｐ２での更新先ファイルの指定をしない。なお、結果を出力する場合は、ステータスバイトを使って行う。なお、このようなコマンドはＩＣカードのＩ／Ｏを通して受信されてＣＰＵでその内容が解釈される。
ファイル間演算命令が、例えば、ファイルｊのレコードｎの内容から、ファイルｋのレコードｍの内容を減算し、レコードｍの内容を減算結果で更新するものである場合について図４により説明する。
このようなファイル間演算命令を受信すると、ＩＣカードのＣＰＵは、命令で指定されたファイルＩＤ、レコード番号から、図４に示すように、ファイルｊのレコードｎとファイルｋのレコードｍを読み出し、
（レコードｎ）−（レコードｍ）
を演算する。演算の結果
（レコードｎ）−（レコードｍ）≧０
であればＯＫとして、この内容をレコードｍに上書きして更新する。一方、
（レコードｎ）−（レコードｍ）＜０
であればＮＧとして、レコードｍは更新しない。この演算結果、ＯＫ、ＮＧはステータスバイトに書き込まれてレスポンスとしてリーダ／ライタに返される。なお、演算結果、ＯＫ、ＮＧは、ＯＳが管理するシステム領域に保持しておくようにしてもよい。演算結果を保持しておけば、他の演算をするときに、関係があればこの演算結果を反映することが可能である。
【００１１】
また、（レコードｎ）−（レコードｍ）の内容は、別ファイルとして保持するようにしてもよい。このようにすることにより、演算履歴として残すことが可能である。
【００１２】
なお、上記説明では減算を例にして説明したが、演算の内容としては、加算、乗算、除算等、ＣＰＵで可能などのような演算であってもよい。また、演算対象のファイルは２つに限らず、３つ以上であってもよい。
【００１３】
【発明の効果】
以上のように本発明によれば、複数のファイル間の演算と、その結果の保持をリーダ／ライタ側からの１つの命令で行うことが可能であるので、伝送効率が格段に向上するとともに、演算時のデータがＩＣカードの外には出ないので、セキュリティを向上させることができる。
【図面の簡単な説明】
【図１】  ＥＥＰＲＯＭに格納されたファイルを説明する図である。
【図２】  ディレクトリの構成を説明する図である。
【図３】  コマンドの構成を説明する図である。
【図４】  ファイル間演算を説明する図である。
【図５】  リーダ／ライタとＩＣカードの通信を説明する図である。
【図６】  ＩＣカードの構成を説明する図である。
【図７】  従来の複数のファイル間での演算を説明する図である。
【符号の説明】
１…リーダ／ライタ、２…ＩＣカード、２ａ…ＣＰＵ、２ｄ…ＥＥＰＲＯＭ
【図１】
0004059452.tif 000002
【図２】
0004059452.tif 000003
【図３】
0004059452.tif 000004
【図４】
0004059452.tif 000005
【図５】
0004059452.tif 000006
【図６】
0004059452.tif 000007
【図７】
0004059452.tif 000008