(57)【特許請求の範囲】
【請求項１】
ＣＰＵとメモリとを有し、メモリ内のプログラムをＣＰＵに実行させることができるＩＣカードにおいて、
前記メモリは、書換不能な不揮発性メモリと、書換可能な不揮発性メモリと、を含んでおり、
前記書換不能な不揮発性メモリもしくは前記書換可能な不揮発性メモリには、基本ＯＳプログラムが格納されており、
前記書換可能な不揮発性メモリには、ＯＳ領域とアプリケーション領域とが設けられており、
前記基本ＯＳプログラムは、外部から与えられたアプリケーションプログラムを前記アプリケーション領域に格納するロード機能と、前記アプリケーションプログラムを前記アプリケーション領域から消去する消去機能と、を有しており、
前記アプリケーション領域には、前記アプリケーションプログラムに対応した消去フラグを記録するための領域が設けられており、
前記ＯＳ領域には、前記アプリケーションプログラムに対応したカウンタを記録するための領域が設けられており、
前記消去フラグは、前記アプリケーションプログラムが格納された初期状態では、前記基本ＯＳプログラムによって「寝ている状態」に設定され、前記アプリケーションプログラムに含まれている、所定の有効期限が満了した場合に自分自身を不必要と判断する手順、もしくは、プリペイド額の残金が零になった場合に自分自身を不必要と判断する手順により、自分自身が不必要と判断された場合には、前記アプリケーションプログラムに含まれている前記手順によって「立っている状態」に設定され、
前記カウンタは、前記基本ＯＳプログラムにより、前記アプリケーションプログラムが格納された初期状態では１に設定され、対応するアプリケーションプログラムについての消去フラグが「立っている状態」に変化したことが認識されたときには１だけ減じられ、
前記カウンタが零となったときに当該カウンタに対応するアプリケーションプログラムに対する前記消去機能が、前記基本ＯＳプログラムにより実行されることを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、
基本ＯＳプログラムのロード機能には、１つもしくは複数のアプリケーションプログラムによって利用されるデータ、テーブルまたはサブルーチンから構成される補助プログラムをアプリケーション領域に格納する機能が含まれており、
基本ＯＳプログラムの消去機能には、前記補助プログラムを前記アプリケーション領域から消去する機能が含まれており、
前記アプリケーション領域には、個々のアプリケーションプログラムに対応した補助プログラム用消去フラグを記録するための領域が設けられており、
前記ＯＳ領域には、前記補助プログラム用のカウンタを記録するための領域が設けられており、
前記補助プログラム用消去フラグは、対応するアプリケーションプログラムが格納された初期状態では、基本ＯＳプログラムによって「寝ている状態」に設定され、対応するアプリケーションプログラムに組み込まれている手順により前記補助プログラムが不必要と判断された場合には、前記手順によって「立っている状態」に設定され、
前記補助プログラム用のカウンタは、前記基本ＯＳプログラムにより、前記補助プログラムが格納された初期状態では、当該補助プログラムを利用するアプリケーションプログラムの数ｎに設定され、いずれかの補助プログラム用消去フラグが「立っている状態」に変化したことが認識されるたびに１だけ減じられ、
前記補助プログラム用のカウンタが零となったときに前記補助プログラムに対する前記消去機能が、前記基本ＯＳプログラムにより実行されることを特徴とするＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＩＣカードに関し、特に、ＣＰＵとメモリとを有し、外部からプログラムをメモリ内にロードし、これをＣＰＵに実行させることができるＩＣカードに関する。
【０００２】
【従来の技術】
キャッシュカードやクレジットカードとして利用されてきた磁気カードに代わって、光カードやＩＣカードが普及し始めている。特に、ＣＰＵを内蔵したＩＣカードは、高度なセキュリティを確保することができるため、高額な商取引にも利用することができる利点を有する。
【０００３】
現在、一般に利用されているＣＰＵを有するＩＣカードには、メモリとして、ＲＯＭ，ＥＥＰＲＯＭ，ＲＡＭが内蔵されている。通常、ＲＯＭには、ＣＰＵに実行させるべき基本的なプログラムが格納され、ＥＥＰＲＯＭには、ユーザデータや種々のアプリケーションプログラムが格納され、ＲＡＭはＣＰＵの作業領域として利用される。ＥＥＰＲＯＭは書換可能なメモリであるため、ここにユーザごとに必要なデータやアプリケーションプログラムを格納することができる。
【０００４】
ＩＣカードにデータやプログラムを書き込んだり、これらを読み出したりする際には、いわゆるリーダライタ装置と呼ばれる外部装置が用いられる。この外部装置とＩＣカードとの間では、物理的な伝送線を介してまたは非接触な伝送路を介して、相互にデータやプログラムの伝送が行われる。通常、外部装置からＩＣカードへの情報伝送は、コマンドという形式で与えられ、種々の指示やデータは、このコマンドの中の一情報としてＩＣカード側へと伝えられる。これに対して、ＩＣカードから外部装置への情報伝送は、レスポンスという形式で与えられ、処理結果やデータは、このレスポンスの中の一情報として外部装置側へと伝えられる。
【０００５】
ＥＥＰＲＯＭ内に所望のアプリケーションプログラムを格納したい場合は、外部装置から、当該プログラムをＩＣカード内にロードするためのロードコマンドを与えればよい。ＩＣカードの利用分野は様々であり、たとえば、１枚のＩＣカードを、医療用診察カード、クレジットカード、ガソリン給油カードなどとして利用するのであれば、ＥＥＰＲＯＭ内に、医療診断用プログラム、クレジット決済用プログラム、ガソリン代金支払用プログラムなど、それぞれ用途に応じたアプリケーションプログラムをロードしておき、必要に応じて、所望のアプリケーションプログラムを選択して実行するようにすればよい。
【０００６】
【発明が解決しようとする課題】
ＩＣカードは、一般のコンピュータ機器に比べて容積が著しく小さく、内蔵メモリの容量も著しく小さい。このため、限られたメモリ資源を有効に活用する必要がある。その反面、同一のＩＣカードを多数の用途に利用したいという要望も強く、ＩＣカード内にロードすべきプログラムやデータの種類は益々増加する傾向にある。そこで、ＩＣカード内にロードされたプログラムやデータのうち、不必要になったものについては、順次消去してゆく方法が採られている。しかしながら、ＩＣカードの管理者は、どのプログラムやデータが不要になったかを常に監視し、必要に応じて、プログラムやデータの消去コマンドを与え、メモリを解放する作業を行わねばならない。
【０００７】
そこで本発明は、不必要な情報を自動的に消去し、限られたメモリ資源を有効に活用することができるＩＣカードを提供することを目的とする。
【０００８】
【課題を解決するための手段】
(1)   本発明の第１の態様は、ＣＰＵとメモリとを有し、メモリ内のプログラムをＣＰＵに実行させることができるＩＣカードにおいて、
メモリには、書換不能な不揮発性メモリと、書換可能な不揮発性メモリと、が含まれており、
書換不能な不揮発性メモリもしくは書換可能な不揮発性メモリには、基本ＯＳプログラムが格納されており、
書換可能な不揮発性メモリには、ＯＳ領域とアプリケーション領域とが設けられており、
基本ＯＳプログラムは、外部から与えられたアプリケーションプログラムをアプリケーション領域に格納するロード機能と、アプリケーションプログラムをアプリケーション領域から消去する消去機能と、を有しており、
アプリケーション領域には、アプリケーションプログラムに対応した消去フラグを記録するための領域が設けられており、
ＯＳ領域には、アプリケーションプログラムに対応したカウンタを記録するための領域が設けられており、
消去フラグは、アプリケーションプログラムが格納された初期状態では、基本ＯＳプログラムによって「寝ている状態」に設定され、アプリケーションプログラムに含まれている、所定の有効期限が満了した場合に自分自身を不必要と判断する手順、もしくは、プリペイド額の残金が零になった場合に自分自身を不必要と判断する手順により、自分自身が不必要と判断された場合には、アプリケーションプログラムに含まれている上記手順によって「立っている状態」に設定され、
カウンタは、基本ＯＳプログラムにより、アプリケーションプログラムが格納された初期状態では１に設定され、対応するアプリケーションプログラムについての消去フラグが「立っている状態」に変化したことが認識されたときには１だけ減じられ、
カウンタが零となったときに当該カウンタに対応するアプリケーションプログラムに対する消去機能が、基本ＯＳプログラムにより実行されるようにしたものである。
【０００９】
(2)   本発明の第２の態様は、上述の第１の態様に係るＩＣカードにおいて、
基本ＯＳプログラムのロード機能には、１つもしくは複数のアプリケーションプログラムによって利用されるデータ、テーブルまたはサブルーチンから構成される補助プログラムをアプリケーション領域に格納する機能が含まれており、
基本ＯＳプログラムの消去機能には、補助プログラムをアプリケーション領域から消去する機能が含まれており、
アプリケーション領域には、個々のアプリケーションプログラムに対応した補助プログラム用消去フラグを記録するための領域が設けられており、
ＯＳ領域には、補助プログラム用のカウンタを記録するための領域が設けられており、
補助プログラム用消去フラグは、対応するアプリケーションプログラムが格納された初期状態では、基本ＯＳプログラムによって「寝ている状態」に設定され、対応するアプリケーションプログラムに組み込まれている手順により補助プログラムが不必要と判断された場合には、上記手順によって「立っている状態」に設定され、
補助プログラム用のカウンタは、基本ＯＳプログラムにより、補助プログラムが格納された初期状態では、当該補助プログラムを利用するアプリケーションプログラムの数ｎに設定され、いずれかの補助プログラム用消去フラグが「立っている状態」に変化したことが認識されるたびに１だけ減じられ、
補助プログラム用のカウンタが零となったときに補助プログラムに対する消去機能が、基本ＯＳプログラムにより実行されるようにしたものである。
【００１１】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。図１は、一般的なＩＣカード１０と、外部装置（リーダライタ装置）２０との間で、情報の伝送を行っている状態を示すブロック図である。この例では、ＩＣカード１０は、種々の演算処理機能をもったＣＰＵ１１と、外部装置２０に対する情報の送受を行うＩ／Ｏインターフェイス１２と、ＲＯＭ１３，ＥＥＰＲＯＭ１４，ＲＡＭ１５なるメモリとを備えている。ＲＯＭ１３は書換不能な不揮発性メモリであり、ＣＰＵ１１は、このＲＯＭ１３内に格納されている基本プログラムに基づいて所定の処理を実行する。ＥＥＰＲＯＭ１４は、書換可能な不揮発性メモリであり、ユーザデータや種々のアプリケーションプログラムが格納される。ＲＡＭ１５は、ＣＰＵ１１が種々の処理を実行する際の作業領域として利用される書換可能な揮発性メモリである。
【００１２】
ＩＣカード１０と外部装置２０とは、物理的な信号線による接続、赤外線による接続、電磁気を利用した非接触型接続、などの方法によって互いに接続され、情報の送受が行われる。外部装置２０からＩＣカード１０へは、コマンドという形式で情報が送信される。送信されたこのコマンドは、Ｉ／Ｏインターフェイス１２を介してＣＰＵ１１に与えられる。逆に、ＩＣカード１０から外部装置２０へは、与えられたコマンドに対するレスポンスという形式で情報が送信される。このレスポンスは、ＣＰＵ１１からＩ／Ｏインターフェイス１２を介して、外部装置２０へと送信される。
【００１３】
ここに示す実施形態では、ＲＯＭ１３内に、基本ＯＳ（Operating System）プログラムと、インタープリタプログラムとが格納されている。基本ＯＳプログラムは、このＩＣカード１０全体の動作を統括管理するためのプログラムであり、後述するように、外部装置２０側から与えられたモジュール（アプリケーションプログラムや補助プログラム）をＥＥＰＲＯＭ１４内に格納するロード機能や、外部装置２０側からの指示に基づいて特定のアプリケーションを選択するアプリケーション選択機能や、不必要になったモジュールを消去する消去機能などを実行することができる。このＩＣカード１０の用途に応じて、所定のアプリケーションプログラムおよびこのアプリケーションプログラムが利用する補助プログラムが、ＥＥＰＲＯＭ１４内にロードされることになる。通常、アプリケーションプログラムは、ＣＰＵ１１に依存しない汎用言語で記述される。ＲＯＭ１３内に用意されたインタープリタプログラムは、このような汎用言語で記述されたアプリケーションプログラムを、ＣＰＵ１１が解釈可能なマシン語プログラムに翻訳するためのプログラムである。なお、ここでは、基本ＯＳプログラムおよびインタープリタプログラムが、ＲＯＭ１３内に予め用意されている例を示すが、これらのプログラムは必ずしもＲＯＭ１３内に用意する必要はなく、ＥＥＰＲＯＭ１４内にロードして用いるようにしてもかまわない（この場合、ＲＯＭ１３内には、少なくとも当該ロードを行うための基本プログラムが必要である）。
【００１４】
図２は、このＩＣカード１０で実行されるプログラムの階層構造の一例を示すブロック図である。図示の例では、基本ＯＳプログラム（ここに示す例では、ＲＯＭ１３内に用意されている）が最も上位階層のプログラムであり、ＩＣカード１０の全動作を統括管理する。その下の階層には、２つのアプリケーションプログラム１，２が示されている。これらのアプリケーションプログラム１，２は、ＥＥＰＲＯＭ１４内にロードされて利用されるプログラムであり、それぞれ特定の用途に利用される（たとえば、医療用診断プログラムであったり、クレジット決済用プログラムであったりする）。
【００１５】
更にその下の階層には、補助プログラムＡが示されている。この補助プログラムＡは、アプリケーションプログラム１，２によって共通して利用されるプログラムである。なお、本願明細書において「プログラム」なる文言は、何らかの実行命令を示すコードだけではなく、データやテーブルなども含んだ広い意味を示すものであり、補助プログラムＡは、アプリケーションプログラム１，２によって利用されるデータ、テーブルまたはサブルーチンから構成されている。アプリケーションプログラム１または２を実行すると、必要に応じて、この補助プログラムＡに含まれているサブルーチンが呼び出されたり、この補助プログラムＡに含まれているデータやテーブルが参照されたりする。この補助プログラムＡも、ＥＥＰＲＯＭ１４内にロードされて利用されることになる。
【００１６】
なお、説明の便宜上、この実施形態では、２つのアプリケーションプログラム１，２と、１つの補助プログラムＡをＥＥＰＲＯＭ１４内にロードして用いる例を示すことにするが、実際には、ＥＥＰＲＯＭ１４のメモリ容量の制限の範囲内で、より多数のアプリケーションプログラムや補助プログラムをロードして用いることができる。ここでは、ＥＥＰＲＯＭ１４内にロードされるアプリケーションプログラムや補助プログラム（サブルーチン，データ，テーブル）を総称して、「モジュール」と呼ぶことにする。
【００１７】
さて、上述したように、ＲＯＭ１３内に用意されている基本ＯＳプログラムは、外部装置２０側から与えられたモジュールをＥＥＰＲＯＭ１４内に格納するロード機能と、このＥＥＰＲＯＭ１４内のモジュールを適宜消去する消去機能と、を実行することが可能である。このようなロード機能および消去機能を有するＩＣカード自体は、既に従来から利用されている。しかしながら、従来のＩＣカードでは、これらの機能を実行させるために、外部装置２０側からロードコマンドや消去コマンドを与える必要がある。これに対し、本発明に係るＩＣカードでは、ロード機能を実行させる場合には、外部装置２０側からロードコマンドを与える必要があるが、消去機能を実行させるためには、必ずしも外部装置２０側から消去コマンドを与える必要はない。別言すれば、本発明に係るＩＣカードは、外部から消去コマンドを与えることなしに、自動的に消去機能を実行することができる。
【００１８】
本発明の基本概念は、ＥＥＰＲＯＭ１４内にロードされるアプリケーションプログラムに、自分自身の必要性および自分が利用する補助プログラムの必要性を判断させ、この判断に基づいて消去機能を実行するようにした点にある。いわば、アプリケーションプログラムに、自己の任務が完了したか否かを判断する機能、あるいは自己が利用する補助プログラムの自己に対する任務が完了したか否かを判断する機能をもたせ、この判断に基づいて、外部からの指示を受けることなしに、任務が完了したアプリケーションプログラムあるいは補助プログラムを自動的に消去するようにしたものである。したがって、本発明を実施する上では、自分自身の必要性を判断する手順が組み込まれたアプリケーションプログラム、あるいは、自分自身の必要性とともに、自分自身が利用する補助プログラムの必要性を判断する手順が組み込まれたアプリケーションプログラムを用意し、これらのアプリケーションプログラムを、ＥＥＰＲＯＭ１４内にロードして用いることが前提となる。そして、これらのアプリケーションプログラムを実行した結果、自分自身について不必要との判断がなされた場合には、当該アプリケーションプログラムに対する消去機能が実行され、自分自身が利用する補助プログラムについて不必要との判断がなされた場合には、当該補助プログラムに対する消去機能が実行されるようにすればよい。
【００１９】
自分自身あるいは自分自身が利用する補助プログラムの必要性を判断する手順は、アプリケーションプログラムの作成者の意図に応じて、どのような手順を用いてもかまわない。たとえば、クレジットカードとして機能するためのアプリケーションプログラムであれば、所定の有効期限が満了した場合に、自分自身は不必要との判断がなされるような手順を組み込んでおくことができる。通常、有効期限の満了後には、このアプリケーションプログラムの実質的な処理機能は停止することになるので、ＥＥＰＲＯＭ１４内から自動的に消去されても全く問題はない。むしろ、不要なプログラムを自動削除することによって、ＥＥＰＲＯＭ１４のメモリ資源を有効活用することが可能になるメリットが得られる。また、プリペイドカードとして機能するためのアプリケーションプログラムであれば、残金が零になった場合に、自分自身は不必要との判断がなされるような手順を組み込んでおけばよいし、産婦人科受診用のカードとして機能するためのアプリケーションプログラムであれば、出産が無事終了した旨の情報が書き込まれた場合に、自分自身は不必要との判断がなされるような手順を組み込んでおくこともできよう。補助プログラムに関する判断も同様である。たとえば、ユーザ名などを新規登録するための処理を行うサブルーチンが、特定のアプリケーションプログラムから呼び出されて利用され、このアプリケーションプログラムにおける新規登録処理が完了した場合には、当該アプリケーションプログラムに関する限り、当該サブルーチンは不必要との判断がなされるようにしておけばよい。
【００２０】
なお、特定のアプリケーションプログラムにのみ利用される補助プログラムの場合は、当該特定のアプリケーションプログラムにおける判断だけで消去しても問題はないが、複数のアプリケーションプログラムによって共通して利用される補助プログラムの場合は、１つのアプリケーションプログラムにおいて不必要と判断されたとしても、別なアプリケーションプログラムは必要としている可能性がある。そこで、このような補助プログラムに対しては、これを利用するすべてのアプリケーションプログラムにおいて、当該補助プログラムについて不必要との判断がなされた場合に、消去機能が実行されるようにすればよい。たとえば、図２に示す例の場合、補助プログラムＡは、２つのアプリケーションプログラム１，２から共通して利用されるため、両アプリケーションプログラム１，２の双方において不必要との判断がなされた場合に限り、消去されるようにすればよい。
【００２１】
以上、本発明の基本概念を述べたが、ここでは、図２に示すように、２つのアプリケーションプログラム１，２と、これらから共通して利用される補助プログラムＡとをＥＥＰＲＯＭ１４内にロードして用いる場合について、本発明のより具体的な手法を述べることにする。まず、ここで述べる実施形態では、図３に示すように、ＥＥＰＲＯＭ１４の一部に、ＯＳ領域１４Ａとアプリケーション領域１４Ｂとが確保される。通常、複数のプログラムを並行して実行する場合、各プログラムごとに、それぞれメモリ空間を割り当て、各プログラムは、自分自身に割り当てられたメモリ空間に対してのみアクセスを行うような手法が採られる。このように、個々のプログラムごとに別個独立したメモリ空間を割り当てると、全体的に安定した動作が可能になる。図３に示す例では、ＯＳ領域１４Ａは、基本ＯＳプログラムに割り当てられたメモリ空間であり、アプリケーション領域１４Ｂは、アプリケーションプログラムに割り当てられたメモリ空間である。
【００２２】
図３に示す例では、アプリケーション領域１４Ｂに、アプリケーションプログラム１、アプリケーションプログラム２、補助プログラムＡがそれぞれロードされた状態が示されている。しかも、アプリケーションプログラム１および２が格納された領域には、それぞれ消去フラグＦ１，ＦＡおよびＦ２，ＦＡを記録するための付加領域が設けられている。アプリケーションプログラム１の付加領域に記録される消去フラグＦ１，ＦＡは、アプリケーションプログラム１内の手順においてのみアクセスされ、アプリケーションプログラム２の付加領域に記録される消去フラグＦ２，ＦＡは、アプリケーションプログラム２内の手順においてのみアクセスされる。一方、ＯＳ領域１４Ａ内には、３つのカウンタＣ１，Ｃ２，ＣＡを記録するための領域が設けられており、これらカウンタの記録領域は、基本ＯＳプログラム内の手順においてのみアクセスされる。
【００２３】
ここで、簡単に各カウンタおよび各フラグのもつ意味について述べておく。まず、カウンタＣ１，Ｃ２，ＣＡは、それぞれアプリケーションプログラム１，アプリケーションプログラム２，補助プログラムＡが不必要になったか否かを示すためのものであり、これら各プログラムがＥＥＰＲＯＭ１４内にロードされた時点で、それぞれ所定の初期値に設定される。具体的には、アプリケーションプログラムについてのカウンタは、いずれも初期値１に設定され、補助プログラムについてのカウンタは、当該補助プログラムを利用するアプリケーションプログラムの数が初期値として設定される。したがって、図示の例の場合、ＥＥＰＲＯＭ１４内にアプリケーションプログラム１，２および補助プログラムＡがロードされた時点で、Ｃ１＝１，Ｃ２＝１，ＣＡ＝２（図２に示すように、この例の場合、補助プログラムＡは、２つのアプリケーションプログラムから利用されるため）に設定される。なお、補助プログラムが、どのアプリケーションプログラムから利用されるか、という情報は、ＥＥＰＲＯＭ１４内へのロードを行う段階で、外部装置２０側から指定すればよい。
【００２４】
一方、消去フラグＦ１，Ｆ２，ＦＡは、上記カウンタＣ１，Ｃ２，ＣＡの値を減らす指示を与えるために用いられる。ここでは、各フラグは１ビットのデータからなり、この１ビットが０の場合に「フラグは寝ている状態」とし、この１ビットが１の場合に「フラグは立っている状態」とする。各プログラムがＥＥＰＲＯＭ１４内にロードされた初期状態では、いずれのフラグも寝ている状態に設定される。
【００２５】
続いて、これらカウンタやフラグを利用した具体的な処理手順を、図４および図５の流れ図に基づいて説明する。図４は、基本ＯＳプログラムによる処理手順を示す流れ図であり、図５は、選択された特定のアプリケーションプログラム（この例の場合、アプリケーションプログラム１または２のいずれか）によるコマンド実行処理手順を示す流れ図である。
【００２６】
ＩＣカード１０を外部装置２０に接続すると、外部装置２０側から電源の供給がなされるとともに、ＣＰＵ１１に対してリセット信号が与えられる。基本ＯＳプログラムは、このリセット信号によりスタートする。まず、図４のステップＳ１において、リセット処理が実行される。これは、必要な初期設定を行うとともに、外部装置２０側に、リセット信号に対する応答として、ＡＴＲ（Answer To Reset ）信号を送信する処理である。外部装置２０は、このＡＴＲ信号の受信により、ＩＣカード１０側のコマンド受信態勢が整ったことを認識し、所定のコマンド送信を開始することになる。ステップＳ２は、この外部装置２０側から与えられるコマンドの受信待ちの処理であり、何らかのコマンドが受信されると、ステップＳ３へと進むことになる。
【００２７】
このステップＳ３では、受信したコマンドの種別が判断される。この実施形態では、外部装置２０側から与えられるコマンドは、モジュールロードコマンド、アプリケーション選択コマンド、アプリケーション実行コマンドのいずれかである。モジュールロードコマンドは、外部装置２０側からコマンドとともに与えられるアプリケーションプログラムあるいは補助プログラムをロードするためのコマンドである。このコマンドが受信されると、ステップＳ４において、モジュールロード処理が行われ、アプリケーションプログラムあるいは補助プログラムが、ＥＥＰＲＯＭ１４内に格納されることになる。そして、ステップＳ５において、ロードされたモジュール種別が判断され、アプリケーションプログラムがロードされた場合には、ステップＳ６において対象カウンタ（当該アプリケーションプログラムについてのカウンタ）が１にセットされ、補助プログラムがロードされた場合には、ステップＳ７において対象カウンタ（当該補助プログラムについてのカウンタ）がｎにセットされる。ここで、ｎは、当該補助プログラムを利用するアプリケーションプログラムの数である。こうしてカウンタが所定の初期値にセットされたら、ステップＳ８において、レスポンス送信が行われる。具体的には、モジュールロード処理が無事完了したことを示すレスポンスが、外部装置２０側へ返されることになる。外部装置２０は、このレスポンスの受信により、次のコマンドの送信を行うことになる。
【００２８】
図２に示す例のように、２つのアプリケーションプログラム１，２およびこれらから共通して利用される１つの補助プログラムＡを用いた処理を行う場合には、合計３つのプログラムをロードするために、上述したステップＳ４以下の処理が合計３回、繰り返して行われることになる。そして、アプリケーションプログラム１の対象カウンタＣ１およびアプリケーションプログラム２の対象カウンタＣ２は、ステップＳ６において初期値１にセットされ、補助プログラムＡの対象カウンタＣＡは、ステップＳ７において初期値ｎ＝２にセットされることになる。
【００２９】
こうして、必要なアプリケーションプログラムおよび補助プログラムのロードが完了すると、外部装置２０は、所定のアプリケーションプログラムを選択するために、アプリケーション選択コマンドを送信する。このアプリケーション選択コマンドがＩＣカード側で受信されると、ステップＳ３からステップＳ９へと進むことになる。ここで、選択されたアプリケーションプログラムがロード済か否かが判断され、ロード済みである場合には、ステップＳ１０において、当該アプリケーションを選択する処理が行われる。上述の例の場合、アプリケーションプログラム１または２のいずれかを選択する旨のアプリケーション選択コマンドが送信されてきた場合には、ステップＳ９からステップＳ１０へと進み、いずれか一方を選択する処理（具体的には、いずれのアプリケーションが選択されたかを示す情報をメモリ内に記録する処理）が実行される。ところが、たとえば、ロードが行われていないアプリケーションプログラム３を選択する旨のアプリケーション選択コマンドが送信されてきたような場合には、ステップＳ９からステップＳ１１へと進み、エラーがセットされる。いずれの場合でも、ステップＳ８において、レスポンスが送信されるが、エラーがセットされた場合には、このエラーを示すレスポンスが送信されることになる。
【００３０】
実行すべきアプリケーションの選択が完了すると、いよいよ外部装置２０は、当該アプリケーションに対するアプリケーション実行コマンドを送信する。このアプリケーション実行コマンドは、当該アプリケーションに定義された命令コードであり、通常は、何種類かのコマンドが定義されていることになる。具体的には、たとえば、特定のユーザデータをＥＥＰＲＯＭ１４に書き込む作業を指示する書き込みコマンドや、ＥＥＰＲＯＭ１４内の特定のデータを外部装置２０側へと読み出す作業を指示する読み出しコマンドや、特定の演算処理を行う演算コマンドなど、種々のコマンドが定義される。このアプリケーション実行コマンドがＩＣカード側で受信されると、ステップＳ３からステップＳ１２へと進み、このアプリケーション実行コマンドに対応したアプリケーションが選択済みであるか否かが判断される。この時点で、まだアプリケーションの選択が行われていない場合や、アプリケーションは選択されていても、当該選択アプリケーションが、与えられたアプリケーション実行コマンドに対応していなかった場合は、ステップＳ１１へと進み、エラーがセットされることになる。選択アプリケーションが、与えられたコマンドに対応していた場合には、ステップＳ１３へと進み、この選択アプリケーションによるコマンド実行処理が行われる。このステップＳ１３の処理は、図５の流れ図に示された処理であり、その詳細は後述する。
【００３１】
こうして、ステップＳ１３の処理が完了すると、ステップＳ１４において、消去フラグが変化したか否かが判断される。すなわち、ステップＳ１３の実行前後において、状態が変化した消去フラグがあった場合には、ステップＳ１５へと進み、この変化した消去フラグに対応するカウンタの値を１だけ減じる処理が行われる。そして、ステップＳ１６では、値が零になったカウンタがあるかが判断され、そのようなカウンタがあった場合には、ステップＳ１７において、当該カウンタに対応するモジュールが消去される。いずれの場合も、ステップＳ８におけるレスポンス送信が行われて、再びステップＳ２におけるコマンド受信待ちの状態になる。データの読み出しコマンドなどが与えられた場合には、ステップＳ８におけるレスポンスとして、読み出されたデータが外部装置２０側へと送信されることになる。結局、図４に示す基本ＯＳの処理手順は、リセット後、外部装置２０側からのコマンドを受信し、このコマンドに基づく所定の処理を実行し、最後に外部装置２０側にレスポンスを送信する、という作業の繰り返しになる。
【００３２】
一方、ステップＳ１３に示す選択アプリケーションによるコマンド実行処理では、図５の流れ図に示すように、まず、ステップＳ２１において、与えられたコマンドの実行処理がなされる。すなわち、上述したように、書き込みコマンド、読み出しコマンド、演算コマンドなどが与えられると、ＲＯＭ１３内のインタープリタプログラムによって、これらのコマンドがマシン語に翻訳され、ＣＰＵ１１によって所定の作業が実行されることになる。この作業では、必要に応じて、補助プログラムＡが利用されることになる（サブルーチンが呼び出されたり、データやテーブルが参照されたりする）。続いて、ステップＳ２２において、このアプリケーションプログラムにおいて、補助プログラムが必要か否かが判断され、不必要であると判断された場合には、ステップＳ２３において、この不必要な補助プログラムについての消去フラグが立てられる。次に、ステップＳ２４において、このアプリケーションプログラム自身が必要か否かが判断され、不必要であると判断された場合には、ステップＳ２５において、この選択アプリケーションプログラム（自分自身）についての消去フラグが立てられる。
【００３３】
以上が、ステップＳ１３の処理内容の詳細である。結局、ステップＳ２３あるいはステップＳ２５において、初めて消去フラグが立てられたときには、ステップＳ１４において、消去フラグの変化が認識され、ステップＳ１５において対応カウンタの数値が１だけ減じられることになる。アプリケーションプログラムの場合、対応カウンタの初期値は１であるから、消去フラグが立った場合には、対応カウンタの値が零となり、ステップＳ１７において、消去されることになる。別言すれば、ステップＳ２４において、アプリケーションプログラムが「自分自身は不必要」なる判断を行った場合には、基本ＯＳの処理に戻った段階で、当該アプリケーションプログラムは消去されることになる。これに対し、補助プログラムの場合、対応カウンタの初期値は、当該補助プログラムを利用するアプリケーションプログラムの数であるから、１つのアプリケーションプログラムにおいて、補助プログラムについての消去フラグが立ったとしても、カウンタの値はすぐには零にはならないので、直ちに消去されることはない。しかしながら、当該補助プログラムを利用するすべてのアプリケーションプログラムにおいて、当該補助プログラムについての消去フラグが立つと、カウンタの値は零となるので、基本ＯＳの処理に戻った段階で、当該補助プログラムは消去されることになる。
【００３４】
たとえば、図３に示す例において、アプリケーションプログラム１が実行されている段階において、自分自身が不必要であるとの判断がなされた場合には、消去フラグＦ１が立った状態になり、基本ＯＳの処理に戻った段階で、カウンタＣ１が零になるので、当該アプリケーションプログラム１は消去されることになる（この場合、消去フラグＦ１，ＦＡが記録されていた付加領域も同時に消去される）。アプリケーションプログラム２によって消去フラグＦ２が立った状態になった場合も、同様にして、アプリケーションプログラム２は削除されることになる。これに対して、アプリケーションプログラム１が実行されている段階において、自分自身にとっては補助プログラムＡが不必要であるとの判断がなされると、このアプリケーションプログラム１の付加領域に記録された消去フラグＦＡが立った状態になり、カウンタＣＡの値は２から１に変化するが、零ではないので、補助プログラムＡはまだ消去はされない。ところが、更に、アプリケーションプログラム２が実行されている段階において、自分自身にとっては補助プログラムＡが不必要であるとの判断がなされると、このアプリケーションプログラム２の付加領域に記録された消去フラグＦＡも立った状態になり、カウンタＣＡの値は１から零に変化することになり、この時点で補助プログラムＡが消去されることになる。
【００３５】
以上、本発明を図示する実施形態に基づいて説明したが、本発明はこの実施形態に限定されるものではなく、この他にも種々の態様で実施可能である。特に、上述の具体例では、フラグとカウンタを組み合わせた処理方法を述べたが、本発明を具現化するための具体的な方法は、このような処理方法に何ら限定されるものではない。
【００３６】
【発明の効果】
以上のとおり、本発明に係るＩＣカードによれば、メモリ内にロードするプログラムに、自分自身の必要性を判断する手順を組み込んでおき、この判断に基づいてプログラムの自動消去を行うようにしたため、不必要な情報を自動的に消去し、限られたメモリ資源を有効に活用することができるようになる。
【図面の簡単な説明】
【図１】一般的なＩＣカードと、外部装置（リーダライタ装置）との間で、情報の伝送を行っている状態を示すブロック図である。
【図２】本発明に係るＩＣカードで実行されるプログラムの階層構造の一例を示すブロック図である。
【図３】本発明に係るＩＣカードのＥＥＰＲＯＭに格納されたプログラムおよびデータの一例を示す図である。
【図４】本発明に係るＩＣカードにおける基本ＯＳプログラムによる処理手順を示す流れ図である。
【図５】本発明に係るＩＣカードにおけるアプリケーションプログラムによるコマンド実行処理手順を示す流れ図である。
【符号の説明】
１，２…アプリケーションプログラム
１０…ＩＣカード
１１…ＣＰＵ
１２…Ｉ／Ｏインターフェイス
１３…ＲＯＭ
１４…ＥＥＰＲＯＭ
１４Ａ…ＯＳ領域
１４Ｂ…アプリケーション領域
１５…ＲＡＭ
２０…外部装置
Ａ…補助プログラム
【図１】
0004219455.tif 000002
【図２】
0004219455.tif 000003
【図３】
0004219455.tif 000004
【図４】
0004219455.tif 000005
【図５】
0004219455.tif 000006