(57)【要約】【課題】サイズの大きいデータの書込み処理の途中で通信エラーなどのエラーが発生した場合であっても、未書込み状態の領域を容易に検出でき、効率的に書込み処理を再開することができるＩＣカード１およびＩＣカード処理システムを提供できる。【解決手段】ＩＣカード１では、一度にバッファメモリとしてのワーキングメモリ１３に格納しきれないようなサイズの大きいデータをデータメモリ１４に書込む処理を行う場合、当該データを格納するデータ領域を複数のブロックに分けた各ブロックの書込み処理が完了するごとに各ブロックに対応づけて設けられている各フラグをセットする。上記データ領域における未書込み状態の位置を調査する場合、ＩＣカード１は、当該データ領域における各フラグをチェックすることにより未書込み状態の領域（ブロック）を判定する。【選択図】図１
2008310596.tif 000002
【特許請求の範囲】
【請求項１】
外部装置から供給されるコマンドに応じて動作する携帯可能電子装置において、
複数のブロック領域と各ブロックに対応づけられている複数のフラグ領域とからなるデータ領域を有する記憶手段と、
前記外部装置から前記データ領域へのデータの書込みを要求する命令が与えられた場合、各ブロック領域にデータを書込むごとに対応する各フラグ領域にデータが書込み済みであることを示す情報を書込む書込み手段と、
前記フラグ領域に格納されている情報に基づいて前記データ領域における各ブロック領域のうちデータが未書込み状態のブロック領域を検出する検出手段と、
この検出手段により検出された未書込み状態のブロック領域を示す情報を前記外部装置へ出力する出力手段と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
さらに、前記外部装置から前記データ領域においてデータが未書込み状態の領域を示す情報を要求する命令が与えられた場合、前記検出手段により未書き込み状態のブロック領域を検出し、前記出力手段により前記検出手段で検出した未書き込み状態のブロック領域を示す情報を前記外部装置へ出力する制御手段を有する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
さらに、前記外部装置から前記データ領域へのデータの書込みを要求する命令が与えられた場合、前記データ領域にデータが書込まれているか否かを判断する判断手段と、
この判断手段により前記データ領域にデータが書込まれていると判断した場合、前記検出手段により未書き込み状態のブロック領域を検出し、前記出力手段により前記検出手段で検出した未書き込み状態のブロック領域を示す情報を前記外部装置へ出力する制御手段と、を有し、
前記書込み手段は、前記判断手段により前記データ領域にデータが書込まれていないと判断した場合、各ブロック領域にデータを書込むごとに対応する各フラグ領域にデータが書込み済みであることを示す情報を書込む、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項４】
さらに、前記外部装置から前記データ領域に対するデータの書換えを要求する命令が与えられた場合、前記データ領域にデータが書込まれているか否かを判断する判断手段と、
この判断手段により前記データ領域にデータが書込まれていると判断した場合、前記検出手段により未書き込み状態のブロック領域を検出し、前記出力手段により前記検出手段で検出した未書き込み状態のブロック領域を示す情報を前記外部装置へ出力する制御手段と、を有する、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項５】
前記出力手段は、前記検出手段により検出された未書込み状態のブロック領域と書込み済みのブロック領域との境界位置を示す情報を前記データ領域における未書込み領域の先頭位置として出力する、
ことを特徴とする前記請求項１乃至４に記載の携帯可能電子装置。
【請求項６】
外部装置から供給されるコマンドに応じて動作する携帯可能電子装置に用いられる制御方法であって、
前記外部装置から複数のブロック領域と各ブロック領域に対応づけられている複数のフラグ領域とを有するデータ領域へのデータの書込みを要求する命令が与えられた場合、前記データを各ブロック領域に順次書込み、
前記各ブロック領域にデータを書込むごとに対応する各フラグ領域にデータが書込み済みであることを示す情報を書込み、
前記データ領域への前記データの書込みがエラーとなった場合、前記各フラグ領域に格納されている情報に基づいて前記データ領域における各ブロック領域のうちデータが未書込み状態のブロック領域を検出し、
この検出された未書込み状態のブロック領域を示す情報を前記外部装置へ出力する、
ことを特徴とする携帯可能電子装置の制御方法。
【請求項７】
さらに、前記外部装置から前記データ領域においてデータが未書込み状態の領域を示す情報を要求する命令が与えられた場合、前記検出により未書き込み状態のブロック領域を検出し、前記検出により検出した未書き込み状態のブロック領域を示す情報を前記外部装置へ出力する、
ことを特徴とする前記請求項６に記載の携帯可能電子装置の制御方法。
【請求項８】
さらに、前記外部装置から前記データ領域へのデータの書込みを要求する命令が与えられた場合、前記データ領域にデータが書込まれているか否かを判断し、
この判断により前記データ領域にデータが書込まれていると判断した場合、前記検出により前記データ領域における未書き込み状態のブロック領域を検出し、前記検出により検出した未書き込み状態のブロック領域を示す情報を前記外部装置へ出力し、
前記各ブロック領域への書込みは、前記判断により前記データ領域にデータが書込まれていないと判断した場合、前記データを各ブロック領域に書込む、
ことを特徴とする前記請求項６に記載の携帯可能電子装置の制御方法。
【請求項９】
さらに、前記外部装置から前記データ領域に対するデータの書換えを要求する命令が与えられた場合、前記データ領域にデータが書込まれているか否かを判断し、
この判断により前記データ領域にデータが書込まれていると判断した場合、前記検出により前記データ領域における未書き込み状態のブロック領域を検出し、前記検出により検出した未書き込み状態のブロック領域を示す情報を前記外部装置へ出力する、
ことを特徴とする前記請求項６に記載の携帯可能電子装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、個人情報あるいは取引情報などが記憶されているＩＣチップが内蔵されているＩＣカードあるいはＩＣタグなどの携帯可能電子装置、および、上記携帯可能電子装置の制御方法などに関する。
【背景技術】
【０００２】
近年、ＩＣカードなどの携帯可能電子装置は、様々な用途に利用されている。このようなＩＣカードには、使用用途に応じた個人情報や金銭的な取引情報などの種々のデータが記憶される。上記のようなデータは、通常、ＩＣカード内に設けられているＥＥＰＲＯＭやフラッシュＲＯＭなどの不揮発性メモリに書込まれる。また、ＩＣカードは、外部装置からのコマンドに応じて不揮発性メモリへのデータ書込み処理などを実行するようになっている。不揮発性メモリに書込むべきデータの量が多い場合、上記ＩＣカード内の受信データ格納用のメモリ（受信バッファ）では、全ての書込みデータを保持することができない。このため、ＩＣカードでは、分割された書込みデータを順次受信して不揮発性メモリへの書込み処理を行う。上記のような大量のデータを不揮発性メモリに書込み処理は、長い処理時間を要する。このため、不揮発性メモリへのデータ書込みに要する処理時間を短縮したり、処理を簡略化する技術が要望されている。
【０００３】
従来、受信バッファに格納しきれないような大量のデータを不揮発性メモリに書込み処理としては、ＩＣカードにおいて不揮発性メモリへのデータ書込み処理と外部装置とのデータ通信（書込みデータの受信処理）とを並行して行う技術が提案されている（たとえば、特許文献１）。このような技術では、不揮発性メモリにデータを書込む処理と並行して書込みデータの受信処理を行うことにより、全データの書込み処理に要する時間を短縮することが目的となっている。しかしながら、上記のような技術を適用しても、従来のＩＣカードでは、データの書込み処理が途中でエラーとなってしまった場合、最初から書込み処理を再実行するか、エラーが発生した位置を精査してエラーが発生した位置から書込み処理を行う必要がある。
【特許文献１】特開２００２−３５２７４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明の一形態は、サイズの大きなデータをメモリに書込む処理を効率的に行うことができる携帯可能電子装置および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明の一形態としての携帯可能電子装置は、外部装置から供給されるコマンドに応じて動作するものにおいて、複数のブロック領域と各ブロックに対応づけられている複数のフラグ領域とからなるデータ領域を有する記憶手段と、前記外部装置から前記データ領域へのデータの書込みを要求する命令が与えられた場合、各ブロック領域にデータを書込むごとに対応する各フラグ領域にデータが書込み済みであることを示す情報を書込む書込み手段と、前記フラグ領域に格納されている情報に基づいて前記データ領域における各ブロック領域のうちデータが未書込み状態のブロック領域を検出する検出手段と、この検出手段により検出された未書込み状態のブロック領域を示す情報を前記外部装置へ出力する出力手段とを有する。
【０００６】
この発明の一形態としての携帯可能電子装置の制御方法は、外部装置から供給されるコマンドに応じて動作する携帯可能電子装置に用いられる方法であって、前記外部装置から複数のブロック領域と各ブロック領域に対応づけられている複数のフラグ領域とを有するデータ領域へのデータの書込みを要求する命令が与えられた場合、前記データを各ブロック領域に順次書込み、前記各ブロック領域にデータを書込むごとに対応する各フラグ領域にデータが書込み済みであることを示す情報を書込み、前記データ領域への前記データの書込みがエラーとなった場合、前記各フラグ領域に格納されている情報に基づいて前記データ領域における各ブロック領域のうちデータが未書込み状態のブロック領域を検出し、この検出された未書込み状態のブロック領域を示す情報を前記外部装置へ出力する。
【発明の効果】
【０００７】
この発明の一形態によれば、サイズの大きなデータをメモリに書込む処理を効率的に行うことができる携帯可能電子装置および携帯可能電子装置の制御方法を提供できる。
【発明を実施するための最良の形態】
【０００８】
以下、この発明に係る実施の形態について図面を参照しつつ説明する。  
図１は、この発明の実施の形態に係る携帯可能電子装置としてのＩＣカード１およびＩＣカード１を含むＩＣカードシステムの構成例を示すブロック図である。  
上記ＩＣカード１は、外部装置としてのＩＣカード処理装置２からの電源供給により動作可能な状態となる。動作可能となったＩＣカード１は、上記ＩＣカード処理装置２からのコマンドに応じて種々の処理を行う。上記ＩＣカード処理装置２は、ＩＣカード１を動作させるための電源を供給するとともに、当該ＩＣカード１に対して種々の処理を要求するコマンドを供給する。上記ＩＣカード処理装置２がＩＣカード１に対して供給するコマンドは、用途あるいは運用形態などに応じた処理を要求するものである。
【０００９】
また、上記ＩＣカード１は、アンテナあるいは無線通信部等により上記ＩＣカード処理装置２と非接触の状態で無線通信を行う非接触式の携帯可能電子装置（非接触式ＩＣカード）であっても良し、上記ＩＣカード処理装置２と物理的に接触して通信を行う接触式の携帯可能電子装置（接触式ＩＣカード）であっても良い。さらには、上記ＩＣカード１は、非接触式ＩＣカードとしての通信機能と接触式ＩＣカードとしての通信機能とを有する複合型のＩＣカード（デュアルインターフェースＩＣカード）であっても良い。なお、この実施の形態では、主に、非接触式ＩＣカードを想定して説明する。非接触式ＩＣカードと接触式ＩＣカードとはＩＣカード処理装置２との通信方式等が異なるだけである。このため、以下に説明する実施の形態は、接触式ＩＣカードにも同様に適用できる。
【００１０】
上記ＩＣカード１の構成例について説明する。  
図１に示すように、上記ＩＣカード１は、制御素子１１、プログラムメモリ１２、ワーキングメモリ１３、データメモリ１４、通信制御部１５、電源部１６、および、インターフェース（アンテナあるいはコンタクト部）１７などを有している。  
また、上記ＩＣカード１は、カード状の本体Ｃにより構成される。上記ＩＣカード１を形成するカード状の本体Ｃには、１つ（あるいは複数）のＩＣチップ１ａとインターフェース１７とが埋設される。上記ＩＣチップ１ａは、制御素子１１、プログラムメモリ１２、ワーキングメモリ１３、データメモリ１４、通信制御部１５および電源部１６などを有している。上記ＩＣチップ１ａは、上記インターフェース１７に接続された状態でモジュール化され、当該ＩＣカード１を形成するカード状の本体Ｃ内に埋設される。たとえば、図２は、非接触式ＩＣカード全体の構成例を示す図である。図２に示す非接触式ＩＣカードは、カード状の本体Ｃを有している。この本体Ｃ内には、図２に点線で示すように、１つ（あるいは複数）のＩＣチップ１ａとインターフェース１７としてのアンテナとを有するモジュールＭが埋め込まれている。
【００１１】
上記制御素子１１は、ＩＣカード１全体の制御を司るものである。上記制御素子１１は、上記プログラムメモリ１２あるいはデータメモリ１４に記憶されている制御プログラムおよび制御データなどに基づいて動作する。たとえば、上記制御素子１１は、上記プログラムメモリ１２に記憶されている基本的な動作を司る制御プログラムを実行することにより、外部装置から与えられるコマンドに応じた処理を実行する。これにより、外部装置から上記データメモリ１４へのデータの書込みを要求するコマンドが与えられれば、上記制御素子１１は、上記データメモリ１４へのデータの書き込み処理を実行する。また、外部装置から上記データメモリ１４に記憶されているデータの読み出しを要求するコマンドが与えられれば、上記制御素子１１は、上記データメモリ１４からのデータの読み出し処理を実行する。さらに、上記制御素子１１は、当該ＩＣカード１の用途などに応じてインストールされる処理プログラムを実行することにより、用途に応じた処理を実現するようになっている。
【００１２】
上記プログラムメモリ１２は、読み出し専用のメモリ（ＲＯＭ：リードオンリーメモリ）により構成される。上記プログラムメモリ１２には、予め基本動作を司る制御プログラムおよび制御データなどが記憶されている。上記プログラムメモリ１２には、予め当該ＩＣカード１の仕様に応じた制御プログラム及び制御データが記憶される。たとえば、上記制御素子１１は、上記プログラムメモリ１２に記憶される制御プログラムにより外部から与えられるコマンドに応じた処理を実現する。また、上記プログラムメモリ１２には、データメモリ１４におけるメモリ領域の属性（たとえば、１回書込み領域などを指定する情報）などを指定するための情報なども記憶するようにしても良い。
【００１３】
上記ワーキングメモリ１３は、揮発性のメモリ（ＲＡＭ；ランダムアクセスメモリ）により構成される。上記ワーキングメモリ１３は、データを一時保管するバッファメモリとして機能する。例えば、上記ワーキングメモリ１３には、ＩＣカード処理装置（外部装置）２との通信処理において、送受信されるデータが一時的に保管される。また、上記ワーキングメモリ１３には、種々の書込みデータなどを一時的に保持するメモリとしても利用される。
【００１４】
上記データメモリ（不揮発性メモリ）１４は、データの書き込みが可能な不揮発性のメモリである。上記データメモリ１４は、例えば、ＥＥＰＲＯＭあるいはフラッシュメモリなどにより構成される。上記データメモリ１４には、当該ＩＣカード１の使用目的に応じた種々の情報が記憶される。  
たとえば、当該ＩＣカードの使用目的に応じたアプリケーション（処理プログラムおよび運用データなど）は、各種の用途に応じた使用を可能するための発行処理において、上記データメモリ１４に書込まれる。上記のような発行処理において上記データメモリ１４に書込むべきアプリケーションデータは、通常、データサイズが大きく、特定の書込みコマンドによって書込み処理が実行される。また、発行処理以外であっても、サイズが大きいデータをデータメモリに書込む場合、特定の書込みコマンドによって書込み処理が実行されれる。
【００１５】
なお、当該ＩＣカード１が複数の使用目的に使用される場合、上記データメモリ１４には、各使用目的に応じた複数のアプリケーションが記憶される。また、当該ＩＣカード１の使用目的に応じたアプリケーションは、上記データメモリ１４上に定義された使用目的ごとのプログラムファイルおよびデータファイルなどの各ファイルに記憶される。このようなファイル構造は、たとえば、ＩＳＯ／ＩＥＣ７８１６−４に基づくものである。つまり、上記ＩＣカード１のデータメモリ１４には、種々のアプリケーションおよび種々の運用データが記憶可能である。
【００１６】
上記通信制御部１５は、上記インターフェース１７を介して外部装置（たとえば、ＩＣカード処理装置２）とのデータ通信を制御するものである。たとえば、当該ＩＣカードが非接触型のＩＣカードであれば、外部装置からデータを受信する場合、上記通信制御部１５は、インターフェース１７としてのアンテナにより受信した電波としての送信データを復調し、復調した信号を上記制御素子１１に供給する。また、外部装置へデータを送信する場合、上記通信制御部１５は、上記制御素子１１から与えられるデータを変調し、変調したデータを上記インターフェース１７としてのアンテナにより電波として発信する。なお、接触式ＩＣカードでは、インターフェース１７として、アンテナの代わりに、外部装置の接触端子部と物理的・電気的に接触するコンタクト部を介して外部装置とのデータ通信を行う。
【００１７】
上記電源部１６は、当該ＩＣカード１の各部を動作させるための上記インターフェース１７を介して受信する電力およびクロックパルスを供給する。たとえば、当該ＩＣカードが非接触型のＩＣカードであれば、上記電源部１６は、上記インターフェース１７としてのアンテナにより受信した電波から電力およびクロックパルスを生成し、当該ＩＣカード内の各部に供給するようになっている。また、上記電源部１６からの電力供給により起動した場合、上記制御素子１１は、当該ＩＣカード１の処理状態をリセットする処理を行うようになっている。なお、当該ＩＣカード１が接触型のＩＣカードであれば、上記電源部１６はインターフェース１７を介して外部装置から直接的に供給される電力およびクロックパルスにより各部へ供給するようになっている。
【００１８】
次に、上記ＩＣカード処理装置２について説明する。  
上記ＩＣカード処理装置２は、図１に示すように、制御装置２１およびカードリーダライタ２２を有している。上記制御装置２１は、パーソナルコンピュータ（ＰＣ）などにより構成される。上記制御装置２１は、ＣＰＵなどの演算処理部、ＲＡＭ、ＲＯＭ、不揮発性メモリおよびハードディスクドライブなどの各種メモリ、通信インターフェースなどの各種インターフェースなどにより構成される。上記制御装置２１では、上記演算処理部がメモリに記憶されている各種の制御プログラムを実行することにより各種の処理を実現している。また、上記制御装置２１は、ＩＣカード１とのデータ通信を行う上記カードリーダライタ２２とのデータの入出力を行うようになっている。
【００１９】
たとえば、上記制御装置２１には、上記ＩＣカード１を用いた各種の処理に応じた制御プログラムが予め記憶されている。上記制御装置２１では、上記のような制御プログラムを実行することにより上記ＩＣカード１を用いた各種の処理を実行する。たとえば、上記ＩＣカード１を用いた各種の処理において、上記制御装置２１は、所定のコマンドを所定の手順で供給する。上記制御装置２１では、上記のような各コマンドに対するＩＣカード１からの各レスポンス（コマンドに対する処理結果等を示す情報）に基づいて各種の処理を行うようになっている。
【００２０】
上記カードリーダライタ２２は、上記ＩＣカード１とのデータ通信を行う通信手段として機能する。上記カードリーダライタ２２は、上記ＩＣカード１の通信方式に応じた通信方式によるデータ通信を行うためのものである。つまり、上記カードリーダライタ２２を介して制御装置２１は、上記ＩＣカード１とのデータ通信を実現している。
【００２１】
上記ＩＣカード１が非接触型のＩＣカードである場合、上記カードリーダライタ２２は、上記ＩＣカード１との無線によるデータ通信を行うためのアンテナおよび通信制御部（変復調回路等）などにより構成される。非接触型のＩＣカード１へデータを送信する場合、上記カードリーダライタ２２では、通信制御部により上記制御装置２１から与えられる送信データを変調し、変調した信号を電波としてアンテナにより発信する。また、非接触型のＩＣカード１からデータを受信する場合、上記カードリーダライタ２２では、アンテナにより受信した電波としての信号を通信制御部により復調し、復調したデータを受信データとして上記制御装置２１へ供給する。また、上記カードリーダライタ２２では、上記のようなデータの送受信とともに、上記ＩＣカード１を動作させるための電源およびクロックパルスとなる電波をアンテナにより発信するようになっている。
【００２２】
また、上記ＩＣカード１が接触型のＩＣカードである場合、上記カードリーダライタ２２は、ＩＣカード１と物理的に接触してデータ通信を行うためのコンタクト部および通信制御部などにより構成される。接触型のＩＣカードとのデータの送受信を行う場合、上記カードリーダライタ２２では、上記コンタクト部がＩＣカード１側に設けられているコンタクト部と物理的に接触して各種のデータ通信を行う。また、上記カードリーダライタ２２では、ＩＣカード１に物理的に接触しているコンタクト部を介して当該ＩＣカード１に対して電力およびクロックパルスを供給するようになっている。
【００２３】
次に、上記ＩＣカード１内のデータメモリ１４へのデータの書込み処理について説明する。  
図３は、データメモリ１４におけるデータＡの書込み領域（データＡ領域）４０の構成例を示している。  
図３に示すように、データＡの書込み領域４０は、所定のデータ長からなる複数の領域（以下、これの領域をブロックと称する）４１ａ、４１ｂ、…ごとにフラグ領域４２ａ、４２ｂ、…が設けられている。すなわち、データＡの書込み領域４０は、それぞれにフラグ領域４２ａ、４２ｂ、…が設けられている複数のブロック４１ａ、４１ｂ、…から構成されている。
【００２４】
ここでは、各ブロック（各ブロック領域）は、データメモリ１４に一度に書込めるデータ長ごとの領域として設定されているものとする。たとえば、３２バイト、６４バイト、１２８バイトごとに、データメモリ１４へデータを書込む仕様であれば、各ブロック４１ａ、４１ｂ、…としては、３２バイト、６４バイト、１２８バイトごとの領域が設けられる。すなわち、当該ＩＣカード１では、所定のデータサイズごとにデータメモリ１４における各ブロック４１ａ、４１ｂ、…に対して書込み処理を行う。
【００２５】
各フラグ領域４２ａ、４２ｂ、…は、それぞれ対応する各ブロック４１ａ、４１ｂ、…へのデータの書込み状態を示す情報が格納される。すなわち、各ブロック４１ａ、４１ｂ、…へのデータの書込みが完了するごとに、対応する各フラグ領域４２ａ、４２ｂ、…には、データ書込みが完了していることを示す情報（図３に示す例では「１」）が格納される。また、各フラグ領域４２ａ、４２ｂ、…は、初期状態において、対応する各ブロック４１ａ、４１ｂ、…へのデータ書込みが未了であることを示す情報（図３に示す例では「０」）が格納されている。
【００２６】
また、図３に示す例では、データＡ領域４０において、各フラグ領域４２ａ、４２ｂ、…は、１番目からｎ番目までの各ブロック４１ａ、４１ｂ、…、４１ｎへのデータの書込みが完了し、ｎ＋１番目以降の各ブロック４１ｎ＋１、…にはデータが書込まれていない状態を示している。たとえば、ＩＣカード１には、各ブロック４１ａ、４１ｂ、…に書込むべきデータＡを各ブロックのサイズごとに分割したデータがＩＣカード処理装置２から順次供給されるものとする。このような場合、ｎ＋１番目のブロック４１ｎ＋１に書込むべきデータの受信中に通信エラーが発生すると、データＡ領域４０は、図３に示すような状態となる。
【００２７】
次に、上記ＩＣカード１に供給されるコマンドについて説明する。  
図１に示すようなシステムにおいて、上記ＩＣカード１は、上記ＩＣカード処理装置２から供給されるコマンドに応じた処理を実行するようになっている。上記ＩＣカード１が実行可能なコマンドには、種々のコマンドがある。たとえば、データの書込みを要求するコマンド（ライトコマンド）あるいはデータの書換えを要求するコマンド（アップデートコマンド）には、一般に、バイナリ系のコマンドとレコード系のコマンドとがある。上記バイナリ系のコマンドは、主に、バイナリのデータ領域（データファイル）に対してデータの書込みあるいは書換えなどを要求するのに用いられる。上記バイナリ系のコマンドでは、データファイルにおけるデータの位置をオフセットで指定する。これに対して、上記レコード系のコマンドは、主に、レコード形式のデータ領域（データファイル）に対してデータの書込みあるいは書換えなどを要求するのに用いられる。上記レコード系のコマンドでは、データファイルへのアクセスをレコードを示す情報で指定する。なお、以下の説明では、主に、バイナリ系のライトコマンドによりサイズが大きいデータをデータメモリ１４に書込む処理を想定するものとする。
【００２８】
また、ＩＣカード処理装置２からＩＣカード１に供給されるコマンドは、通常、所定のデータ長で構成される。例えば、各コマンドは、「ＣＬＡ」部、「ＩＮＳ」部、「Ｐ１」部、「Ｐ２」部、「Ｌｃ」部、「Ｄａｔａ」部などから構成される。上記「ＣＬＡ」部および上記「ＩＮＳ」部には、コマンドの種類を示す情報が格納される。上記「Ｐ１」部および上記「Ｐ２」部には、当該コマンドの処理パラメータを示す情報が格納される。また、ライトコマンドの「Ｐ１」部には、データの書込み対象となるデータファイル（データ領域）を指定する情報（たとえば、図３ではデータＡ領域を示す情報）が格納される。また、ライトコマンドの「Ｐ２」部には、上記「Ｐ１」部で指定されるデータ領域におけるデータの書込む位置（アドレス）を示す情報としてのオフセット値（当該データ領域（データファイル）の先頭からのアドレス）が格納される。また、上記「Ｌｃ」部には、書込むべきデータ全体の長さを示す情報が格納される。上記「Ｄａｔａ」部には、書込むべきデータあるいは書込むべきデータのうちの最初の部分のデータが格納される。ここでは、コマンド全体が所定のデータ長であることを想定しているため、「Ｄａｔａ」部には、所定の長さまでのデータが格納される。このため、書込むべきデータ全体の長さが「Ｄａｔａ」部に格納しきれない長さであれば、「Ｄａｔａ」には、書込むべきデータのうち最初の部分のデータが格納される。
【００２９】
上記のように、１つのライトコマンドに格納しきれないデータ長が大きなデータは、所定のデータ長に基づいて分割され、当該ライトコマンドに続いて順次、ＩＣカード１へ供給されるようになっている。これにより、上記ＩＣカード１では、ライトコマンドで書込みが要求されるデータを順次受信する。このようなライトコマンドを用いて順次供給されるデータは、ＩＣカード１内のバッファとして機能するワーキングメモリ１３が大容量でなければ、全データを蓄積することができない。一般的に、ＩＣカード１等の携帯可能電子装置では、装置自体の物理的な大きさの制限などにより大容量のワーキングメモリ１３を具備することが難しい。
【００３０】
このため、本実施の形態において、ＩＣカード１は、受信したデータを順次データメモリ１４に書込みつつ、書込んだデータに続くデータを順次受信するようになっているものとする。このような処理手順では、データの書込み処理の途中で通信エラー等などが発生した場合、ＩＣカード１のデータメモリ１４には、書込み処理中であったデータが途中まで書込まれた状態となる。
【００３１】
たとえば、図３に示す構成例では、データメモリ１４におけるデータＡ領域における各ブロック４１ａ、４１ｂ、…へのデータＡの書込み状態は、各フラグ領域４２ａ、４２ｂ、…に格納されているデータにより示される。言い換えれば、各フラグ領域４２ａ、４２ｂ、…をチェックすれば、各ブロック４１ａ、４１ｂ、…へのデータＡの書込み状況がチェックできるようになっている。これにより、データＡの書込みが中断された場合、データＡ領域全体を読み出して照合するなどの調査を行わなくても、エラーが発生した位置、つまり、データの書込みが完了していない領域を容易に判断することが可能となる。
【００３２】
次に、上記ＩＣカード１におけるデータメモリ１４へのデータ書込み処理の手順について説明する。  
図４は、上記データメモリ１４へのデータ書込み処理の第１の処理例を説明するためのフローチャートである。なお、ここでは、ライトコマンドで指定されるデータメモリ１４に書込むべきデータが複数に分割されてＩＣカード１に供給される場合を想定するものとする。
【００３３】
まず、上記ＩＣカード処理装置２がＩＣカード１を動作させるための電力およびクロックパルスを当該ＩＣカード１に供給したものとする。上記ＩＣカード処理装置２から電力およびクロックが供給されると、上記ＩＣカード１は、起動処理、および、リセット処理を行う（ステップＳ１１）。上記リセット処理が完了すると、上記ＩＣカード１の制御素子１１は、上記ＩＣカード処理装置２に対する初期応答として、初期応答データをＩＣカード処理装置２へ送信する。このような初期応答データを受信したＩＣカード処理装置２では、ＩＣカード１に対してコマンドを送信する。
【００３４】
上記初期応答データを送信したＩＣカード１では、上記ＩＣカード処理装置２からのコマンドの待ちの状態となっている。この状態において上記ＩＣカード処理装置２から送信されたコマンドを上記通信制御部１５により受信すると（ステップＳ１２、ＹＥＳ）、上記ＩＣカード１の制御素子１１は、受信したコマンドの種類を判別する。たとえば、各コマンドが「ＣＬＡ」部、「ＩＮＳ」部、「Ｐ１」部、「Ｐ２」部、「Ｌｃ」部、「Ｄａｔａ」部で構成される場合、上記ＩＣカード１の制御素子１１は、受信したコマンドの「ＣＬＡ」部及び「ＩＮＳ」部の値に基づいて当該コマンドの種類を判別する。
【００３５】
上記受信したコマンドがデータの書込みを要求するコマンド（ライトコマンド）であると判定した場合（ステップＳ１３、ＹＥＳ）、上記ＩＣカード１の制御素子１１は、当該ライトコマンドにおける処理パラメータ（例えば「Ｐ１」部及び「Ｐ２」部の値）に基づいてデータを書込む対象とするデータファイル（データ領域）および当該データファイルにおける書込み開始位置を判別する。当該コマンドが指定するデータの書込み位置を判別すると、上記制御素子１１は、データの書込み位置が未書込み状態か否かを判断する（ステップＳ１４）。すなわち、上記制御素子１１は、当該コマンドで指定された書込み位置のブロックが、未書込み状態であるか否か（書込み済みか、未書き込みか）を判断する。指定された書込み位置が未書込み状態であるか否かは、たとえば、指定された書込み位置のブロックに対応するフラグの状態により判断される。
【００３６】
上記判断により指定されたデータの書込み位置が未書込み状態でないと判断した場合（ステップＳ１４、ＮＯ）、上記制御素子１１は、所定のエラー処理を行う（ステップＳ１５）。この場合のエラー処理では、指定された書込み位置がデータ書込み済みであるためデータが書込みが不可である旨の通知を当該コマンドに対する応答（レスポンス）としてＩＣカード処理装置２へ送信する。これにより、コマンドの送信元であるＩＣカード処理装置２では、指定した領域が書込済みのためエラーとなったことを認識できるようになっている。
【００３７】
また、上記判断により指定されたデータの書込み位置が未書込み状態であると判断した場合（ステップＳ１４、ＹＥＳ）、上記制御素子１１は、指定された書込み位置のブロックへのデータの書込み処理を実行する（ステップＳ１６）。この書込み処理を実行する時点では、少なくとも当該ブロックに書込むべきデータがバッファメモリとしてのワーキングメモリ１３に格納されているものとする。従って、上記書込み処理では、ワーキングメモリ１３に記憶されているデータをデータメモリ１４における指定されたデータ領域の各ブロックに順に書込む処理を行う。なお、上記書込み処理においてメモリ不良等のハードウエアの不具合などによりデータの書込みができない場合、上記制御素子１１は、その旨をＩＣカード処理装置２へ応答するなどのエラー処理を行う。
【００３８】
上記書込み処理により指定されたデータ領域のブロックに対するデータの書込みが完了すると、上記制御素子１１は、当該ブロックに対応するフラグをオン状態とする（ステップＳ１７）。たとえば、図３に示す構成において、ブロック４１ａに対するデータの書込みが完了すると、上記制御素子１１は、初期状態として「０」となっているフラグ領域４２ａを「１」に書き換える。
【００３９】
上記データの書込み及びフラグのセットが完了すると、上記制御素子１１は、ライトコマンドで指定された全データの受信および書込み処理が完了したか否かを判断する（ステップＳ１８）。この判断は、受信したライトコマンドにおけるパラメータで指定されたデータ長（たとえば、当該コマンドの「Ｌｃ」部で示される）のデータを指定されたデータファイル（データ領域）に書込んだか否かにより判断される。
【００４０】
上記判断により全データの受信および書込み処理が完了していないと判断した場合（ステップＳ１８、ＮＯ）、上記制御素子１１は、順次、ライトコマンドに続いてＩＣカード処理装置２から送信される分割された各データを受信し、受信した各データを各ブロックにの書込む処理を行う。また、上記ＩＣカード１の制御素子１１は、上記ＩＣカード処理装置２から分割された各データを受信し、受信した各データの各ブロックへの書込みが完了するごとに、各データの書込み完了を示すレスポンスをＩＣカード処理装置２に送信する。これに対して、上記ＩＣカード処理装置２では、ＩＣカード１のレスポンスを確認しつつ、順次データを送信する。
【００４１】
なお、図４に示す例では、説明を簡単にするため、ＩＣカード１は、受信したデータの書込みが完了するごとに、次のデータ（書込んだデータに続くデータ）をＩＣカード処理装置２から受信するようになっている。つまり、図４に示す例では、ＩＣカード処理装置２は、ＩＣカード１からの各データの書込み完了を示すレスポンスに応じて次のデータを送信する処理を行う。ただし、ＩＣカード１における各データの受信処理および書込み処理のタイミングは、これに限定されるものではない。たとえば、上記ＩＣカード１では、上記ＩＣカード１における各ブロックへのデータの書込み処理と並行して分割された各データをＩＣカード処理装置２から受信するようにしても良い。
【００４２】
すなわち、上記ＩＣカード処理装置２から次のデータ（ライトコマンドに続く分割されたデータ）が送信されると、上記ＩＣカード１は、上記通信制御部１５により当該データを受信する受信処理を行う（ステップＳ１９）。この受信処理において上記ＩＣカード１の制御素子１１は、ＩＣカード処理装置２から送信されたデータが正常に受信されているか否かを判断する処理を行っている（ステップＳ２０）。
【００４３】
上記判断により上記ＩＣカード処理装置２から送信されたデータが正常に受信されたと判断した場合（ステップＳ２０、ＮＯ）、当該ＩＣカード１の制御素子１１は、上記ステップＳ１６へ戻り、受信した次のデータを指定されたデータ領域における次のブロックに書込む書込み処理を行う。このように、上記ＩＣカード１の制御素子１１は、上記ライトコマンドで指定された全データが受信済みと判断されるまで、上記ステップＳ１６〜Ｓ２０の処理を繰り返し実行する。これにより、通信エラーなどのエラーが発生しなければ、上記ＩＣカード１では、複数に分割されて供給されるデータをライトコマンドで指定された条件に従ってデータメモリ１４に書込むことができる。
【００４４】
また、上記判断により上記ＩＣカード処理装置２から送信されたデータの受信処理において通信エラーが発生したと判断した場合、つまり、データの受信途中で通信エラーが発生した場合（ステップＳ２０、ＹＥＳ）、上記制御素子１１は、所定のエラー処理を行う（ステップＳ１５）。この場合のエラー処理としては、通信エラーが発生した旨の通知をＩＣカード処理装置２へ送信する処理を行う。たとえば、次のデータが所定の許容時間内に受信できない場合、あるいは、パリティチェックなどにより受信したデータが正常でないと判断された場合、上記制御素子１１は、通信エラーが発生したものと判断する。
【００４５】
また、上記ステップＳ１８において、全データ（ライトコマンドの「Ｌｃ」部で指定されたデータ長の書込みデータ）の受信および書込み処理が完了したと判断した場合（ステップＳ１８、ＹＥＳ）、上記制御素子１１は、ライトコマンドで指定された全データの書込み処理が正常に終了したものと判断する。この場合、上記制御素子１１は、当該ライトコマンドで指定されていた全データの書込みが正常終了した旨のレスポンスをＩＣカード処理装置２へ送信する正常終了処理を行う（ステップＳ２１）。
【００４６】
また、上記ＩＣカード処理装置２から書込み要求コマンド以外のコマンドを受信した場合（ステップＳ１３、ＮＯ）、上記制御素子１１は、各コマンドに応じた処理を行う。ここで、特定のデータ領域における未書込み領域の通知を要求するコマンドを受信した場合（ステップＳ２２、ＹＥＳ）、上記制御素子１１は、当該コマンドで指定されたデータ領域における各ブロックに対応する各フラグのチェックを行う（ステップＳ２３）。この各フラグのチェック処理では、指定されたデータ領域において未書き込み状態であることを示している最初のフラグを検出する。
【００４７】
上記各フラグのチェック処理の結果により未書込み状態の最初のフラグが検出されると、上記制御素子１１は、当該データ領域において未書込み状態の最初のフラグが対応するブロックが未書込み状態であると判定する。この判定結果に基づいて、上記制御素子１１は、指定されたデータ領域における未書込み領域を示す情報をＩＣカード処理装置２へ通知する処理を行う（ステップＳ２４）。この処理では、たとえば、データ領域における未書込み領域を示す情報として、当該データ領域の先頭からの未書込み領域の先頭のアドレス（未書込みのブロックの先頭アドレス）を通知する。これは、ライトコマンドにおいて指定したデータ領域におけるオフセットアドレス（当該データ領域の先頭からの位置）を書込み開始位置として指定できるためである。
【００４８】
すなわち、この第１の処理例において、通信エラーあるいは書込みエラー等によりデータ全体の書込みが完了しなかった場合、つまり、あるデータ領域に対するデータの書込み処理が途中でエラーとなった場合、上記ＩＣカード処理装置２は、上記ＩＣカード１からのエラー通知を受信する。このようなエラー通知を受信した上記ＩＣカード処理装置２では、当該ＩＣカード１に対して当該データの書込みを再度実行するのであれば、当該データ領域における書込みが失敗した位置（つまり、未書込み領域）を示す情報をＩＣカード１に要求する。
【００４９】
言い換えれば、データの書込みが途中でエラーとなった旨の通知を受信したＩＣカード処理装置２は、当該データの書込みをリトライするために、未書込み領域の通知を要求するコマンドをＩＣカード１へ送信する。この未書込み領域の通知を要求するコマンドでは、たとえば、データ領域（データファイル）を指定し、そのデータ領域における未書込み領域の先頭アドレスの通知を要求する。
【００５０】
このようなコマンドに対して、ＩＣカード１では、上記ステップＳ２３及びＳ２４の処理を実行する。つまり、指定データ領域における未書込み領域の通知を要求するコマンドを受信した場合、上記ＩＣカード１は、当該データ領域における各ブロックの各フラグの状態をチェックし、未書込み状態となっている最初のブロックの先頭アドレスを示す情報を上記コマンドに対するレスポンスとしてＩＣカード処理装置２へ送信する。
【００５１】
さらに、上記未書込み領域の通知を要求するコマンドに対するレスポンスとして、上記ＩＣカード１から未書込み状態の先頭アドレスを示す情報を受信すると、上記ＩＣカード処理装置２では、当該データ領域における未書込み状態の位置からデータの書込みを再開させるためのライトコマンドをＩＣカード１へ送信する。この場合、ＩＣカード処理装置２からＩＣカード１へ送信されるライトコマンドでは、ＩＣカード１から通知された未書込み状態の先頭アドレスが書込み開始位置として指定され、当該書込み開始位置から書込まれるべきデータ（例えば、通信エラーとなったデータ以降のデータ）が書込みデータとして指定される。このようなライトコマンドを受信した場合、上記ＩＣカード１では、当該コマンドで指定された位置を書込み開始位置として、上記ステップＳ１３〜２１の処理を行う。
【００５２】
上記のように、第１の処理例では、一度にバッファメモリとしてのワーキングメモリ１３に格納しきれないようなサイズの大きいデータをデータメモリ１４に書込む場合、ＩＣカード１は、当該データを格納するためのデータ領域を複数のブロックに分けた各ブロックの書込み処理が完了するごとに各ブロックに対応づけて設けられている各フラグをセットする。さらに、特定のデータ領域における未書込み状態の領域の通知を要求するコマンドを受信した場合、上記ＩＣカード１は、各ブロックに対応する各フラグをチェックすることにより未書込み状態の領域（ブロック）を判定し、その判定結果を通知する。これにより、サイズの大きいデータの書込み処理の途中で通信エラーなどのエラーが発生した場合であっても、未書込み状態の領域を容易に検出でき、効率的に書込み処理を再開することができる。
【００５３】
次に、上記データメモリ１４へのデータ書込み処理の第２の処理例について説明する。  
図５は、上記データメモリ１４へのデータ書込み処理の第２の処理例を説明するためのフローチャートである。なお、ここでは、ライトコマンドで指定されるデータメモリ１４に書込むべきデータが複数に分割されてＩＣカード１に供給される場合を想定するものとする。
【００５４】
図５に示す第２の処理例は、ライトコマンドを受信した場合に、当該ライトコマンドで指定されたデータ領域にデータが書込まれていれば、指定されたデータ領域において未書込み状態の領域をレスポンスとして通知する点が図４に示す第１の処理例と異なる。なお、図５に示すステップＳ３１−Ｓ３４およびＳ３６−Ｓ４１は、それぞれ図４に示すステップＳ１１−Ｓ１４およびＳ１６−Ｓ２１とほぼ同様であるため、詳細な説明を省略するものとする。
【００５５】
すなわち、上記ＩＣカード処理装置２から受信したライトコマンドで指定されたデータの書込み位置が未書込み状態でないと判断した場合、つまり、上記ＩＣカード処理装置２から受信したライトコマンドで指定されたデータの書込み位置が書込み済みの状態であると判断した場合（ステップＳ３４、ＮＯ）、上記制御素子１１は、上記ステップＳ２３と同様に、当該ライトコマンドで指定されたデータ領域における各ブロックに対応する各フラグのチェックを行う（ステップＳ４３）。この各フラグのチェック処理では、指定されたデータ領域において未書き込み状態であることを示している最初のフラグを検出する。
【００５６】
上記各フラグのチェック処理の結果により未書込み状態の最初のフラグが検出されると、上記制御素子１１は、当該データ領域において未書込み状態の最初のフラグが対応するブロックが未書込み状態であると判定する。この判定結果に基づいて、上記制御素子１１は、当該ライトコマンドで指定された書込み位置がデータ書込み済みであるためデータ書込みが不可である旨の通知とともに、当該ライトコマンドで指定されたデータ領域における未書込み領域を示す情報をＩＣカード処理装置２へ通知する処理を行う（ステップＳ４４）。この際、たとえば、データ領域における未書込み領域を示す情報としては、当該データ領域の先頭からの未書込み領域の先頭のアドレス（未書込みのブロックの先頭アドレス）を通知する。
【００５７】
このような通知を受けたＩＣカード処理装置では、ライトコマンドで指定したデータの書込み処理が失敗したことと、当該ライトコマンドで指定したデータ領域における未書込み領域を示す情報とを得る。これにより、上記ＩＣカード処理装置２では、当該データ領域における未書込み状態の位置からデータの書込みを実行させるためのライトコマンドをＩＣカード１へ送信する。このライトコマンドでは、ＩＣカード１から通知された未書込み状態の先頭アドレスが書込み開始位置として指定され、当該書込み開始位置から書込まれるべきデータ（例えば、通信エラーとなったデータ以降のデータ）が書込みデータとして指定される。
【００５８】
このようなライトコマンドを受信した上記ＩＣカード１では、当該コマンドで指定された位置を書込み開始位置として、上記ステップＳ３２〜４１の処理を行う。これにより、一度にバッファメモリとしてのワーキングメモリ１３に格納しきれないようなサイズの大きいデータの書込み処理の途中で通信エラーなどのエラーが発生した場合であっても、エラーとなった位置から書込み処理を再開することが可能となる。
【００５９】
上記のように、第２の処理例では、サイズの大きいデータをデータメモリ１４に書込む場合、ＩＣカード１は、当該データを格納するためのデータ領域を複数のブロックに分けた各ブロックの書込み処理が完了するごとに各ブロックに対応づけて設けられている各フラグをセットする。あるデータ領域へのデータの書込み処理が途中でエラーとなった状態において、再度、当該データ領域に対するデータの書込みコマンドを受信すると、上記ＩＣカード１は、当該コマンドで指定されたデータ領域における各フラグをチェックすることにより未書き込み状態の領域（ブロック）を検出し、その未書き込み状態の領域を示す情報を通知する。この通知した未書込み状態の領域からのデータの書込みを要求するライトコマンドを受信した場合、上記ＩＣカード１は、当該データ領域における未書込み状態の領域からデータの書込みを実行する。
【００６０】
また、上記ＩＣカード処理装置２では、あるデータ領域へのデータの書込み処理が途中でエラーとなった旨を通知を受けた場合、再度、当該データ領域を指定したデータの書込みコマンドを送信すれば、そのコマンドに対するレスポンスとして、当該データ領域における未書き込み領域を示す情報を得ることができる。このような情報を取得した場合、上記ＩＣカード処理装置２は、当該データ領域に対して未書込み状態の領域からのデータの書込みを要求する。これにより、上記のようなコマンドを受信したＩＣカードでは、未書込み状態の領域（たとえば、通信エラーによりデータが書込めなかった領域）からのデータ書込み処理を再開することが可能となる。
【００６１】
次に、上記データメモリ１４へのデータ書込み処理の第３の処理例について説明する。  
図６は、上記データメモリ１４へのデータ書込み処理の第３の処理例を説明するためのフローチャートである。なお、ここでは、ライトコマンドで指定されるデータメモリ１４に書込むべきデータが複数に分割されてＩＣカード１に供給される場合を想定するものとする。また、ここでは、データメモリ１４において１回のみデータの書込みを可能するメモリ属性が設定されている領域（以下、１回書込み領域と称する）にデータを書込む処理を想定するものとする。
【００６２】
図６に示す第３の処理例は、書換えコマンド（アップデートコマンド）を受信した場合に、当該書換えコマンドで指定されたデータ領域が１回書込みの領域で、かつ、当該データ領域にデータが書込まれていれば、当該データ領域において未書込み状態の領域を示す情報をレスポンスとして通知する点が図４に示す第１の処理例と異なる。なお、図５に示すステップＳ５１−Ｓ６１は、それぞれ図４に示すステップＳ１１−Ｓ２１とほぼ同様であるため、詳細な説明を省略するものとする。
【００６３】
すなわち、上記ＩＣカード処理装置２から１回書込み領域を指定した書換えコマンドを受信した場合（ステップＳ６２、ＮＯ）、上記制御素子１１は、当該書換えコマンドで指定されたデータ領域（書換え領域）が１回書込み領域であるか否かを判断する（ステップＳ６３）。この判断により指定された書換え領域が１回書込み領域であると判断した場合（ステップＳ６３、ＹＥＳ）、上記制御素子１１は、さらに、指定された書換え領域が未書込み状態であるか否かを判断する（ステップＳ６４）。
【００６４】
この判断により指定された書換え領域が書込み済みであると判断した場合（ステップＳ６４、ＮＯ）、つまり、書換えコマンドで指定された書換え領域が書込み済みの１回書込み領域である場合、上記制御素子１１は、上記ステップＳ２３と同様に、当該書換えコマンドで指定された書換え領域（データ領域）における各ブロックに対応する各フラグのチェックを行う（ステップＳ６５）。この各フラグのチェック処理では、指定されたデータ領域における各ブロックに対応する各フラグのうち未書き込み状態であることを示している最初のフラグを検出する。
【００６５】
上記各フラグのチェック処理の結果により未書込み状態の最初のフラグが検出されると、上記制御素子１１は、当該データ領域において未書込み状態の最初のフラグが対応するブロックが未書込み状態であると判定する。この判定結果に基づいて、上記制御素子１１は、当該書換えコマンドで指定されたデータの書換えが不可である旨の通知とともに、当該書換えコマンドで指定されたデータ領域における未書込み領域を示す情報をＩＣカード処理装置２へ通知する処理を行う（ステップＳ６６）。この際、たとえば、データ領域における未書込み領域を示す情報としては、当該データ領域の先頭からの未書込み領域の先頭のアドレス（未書込みのブロックの先頭アドレス）を通知する。
【００６６】
このような通知を受けたＩＣカード処理装置２では、書換えコマンドで指定したデータの書換え処理が失敗したことと、当該書換えコマンドで指定したデータ領域における未書込み領域とを示す情報を得る。これにより、上記ＩＣカード処理装置２では、当該データ領域における未書込み状態の位置からデータの書込みを実行させるためのライトコマンドをＩＣカード１へ送信する。このライトコマンドでは、ＩＣカード１から通知された未書込み状態の先頭アドレスが書込み開始位置として指定され、当該書込み開始位置から書込まれるべきデータ（例えば、通信エラーとなったデータ以降のデータ）が書込みデータとして指定される。
【００６７】
このようなライトコマンドを受信した上記ＩＣカード１では、当該コマンドで指定された位置を書込み開始位置として、上記ステップＳ５２〜６１の処理を行う。これにより、一度にバッファメモリとしてのワーキングメモリ１３に格納しきれないようなサイズの大きいデータの書込み処理の途中で通信エラーなどのエラーが発生した場合であっても、エラーとなった位置から書込み処理を再開することが可能となる。
【００６８】
上記のように、第３の処理例では、サイズの大きいデータをデータメモリ１４における１回書込み領域に書込む行う場合、当該データを格納するためのデータ領域を複数のブロックに分けた各ブロックの書込み処理が完了するごとに各ブロックに対応づけて設けられている各フラグをセットする。あるデータ領域へのデータの書込み処理が途中でエラーとなった状態において、再度、当該データ領域に対するデータの書換えコマンドを受信すると、上記ＩＣカード１は、当該書換えコマンドで指定されたデータ領域において各フラグをチェックすることにより未書き込み状態の領域（ブロック）を検出し、その未書込み状態の領域を示す情報を通知する。この通知した未書込み状態の領域からのデータの書込みを要求するライトコマンドを受信した場合、上記ＩＣカード１は、当該データ領域における未書込み状態の領域からデータの書込みを実行する。
【００６９】
また、ＩＣカード処理装置２では、あるデータ領域へのデータの書込み処理が途中でエラーとなった旨を通知を受けた場合、再度、当該データ領域を指定したデータの書換えコマンドを送信すれば、そのコマンドに対するレスポンスとして、当該データ領域における未書き込み状態の領域を示す情報を得ることができる。このような情報を取得した場合、上記ＩＣカード処理装置２は、当該データ領域に対して未書込み状態の領域からのデータの書込みを要求することができる。このようなコマンドを受信したＩＣカードでは、未書込み状態の領域（たとえば、通信エラーによりデータが書込めなかった領域）からのデータ書込み処理を再開することが可能となる。
【００７０】
上記のように、本実施の形態に係るＩＣカード１は、一度にバッファメモリとしてのワーキングメモリ１３に格納しきれないようなサイズの大きいデータをデータメモリ１４に書込む場合、当該データを格納するためのデータ領域を複数のブロックに分けて各ブロックの書込み処理が完了するごとに各ブロックに対応づけて設けられている各フラグをセットする。上記データ領域における未書込み状態の位置を調査する場合、ＩＣカード１は、当該データ領域における各フラグをチェックすることにより未書込み状態の領域（ブロック）を判定する。これにより、サイズの大きいデータの書込み処理の途中で通信エラーなどのエラーが発生した場合であっても、未書込み状態の領域を容易に検出でき、効率的に書込み処理を再開することができる。
【図面の簡単な説明】
【００７１】
【図１】本実施の形態に係るＩＣカードおよびＩＣカードを含むシステムの構成例を示すブロック図。
【図２】非接触式ＩＣカードの全体の構成例を示す図。
【図３】データメモリ内においてあるデータを格納するためのデータ領域の構成例を示す図。
【図４】データメモリへのデータ書込み処理の第１の処理例を説明するためのフローチャート。
【図５】データメモリへのデータ書込み処理の第２の処理例を説明するためのフローチャート。
【図６】データメモリへのデータ書込み処理の第３の処理例を説明するためのフローチャート。
【符号の説明】
【００７２】
Ｃ…本体、Ｍ…モジュール、１…ＩＣカード、１ａ…ＩＣチップ、２…ＩＣカード処理装置、１１…制御素子、１２…プログラムメモリ、１３…ワーキングメモリ、１４…データメモリ、１５…通信制御部、１６…電源部、１７…インターフェース、２１…制御装置、２２…カードリーダライタ、４０…データＡ領域（データ領域、データファイル、記憶手段）、４１（４１ａ、４１ｂ、…、４１ｎ、…）…ブロック領域（ブロック）、４２（４２ａ、４２ｂ、…、４２ｎ、…）…フラグ領域（フラグ）
【図１】
2008310596.tif 000003
【図２】
2008310596.tif 000004
【図３】
2008310596.tif 000005
【図４】
2008310596.tif 000006
【図５】
2008310596.tif 000007
【図６】
2008310596.tif 000008