(57)【要約】【課題】  通信エラー等により１回のみの書込みが許可されるデータ領域へのデータの書込みが失敗した場合であっても、再度、当該データの書込み処理を実行することができ、書込みが失敗した場合であっても、再利用可能な携帯可能電子装置を提供する。【解決手段】  １回のみの書込みが許可されるデータファイルに対するデータの書込み処理が失敗した場合のオンされるフラグを設定しておき、ライトバイナリコマンドで指定された書込み対象とするＥＦのフラグがオン状態である場合、上記ＩＣカード１は、当該ＥＦに書込むべき受信データと当該ＥＦのデータ記憶領域に既に書込まれているデータとを比較し、一致しない記憶領域を受信データに基づいて書き換える処理を行うようにしたものである。【選択図】      図１
2008027070.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する第１の記憶手段と、
前記第１の記憶手段がデータの書き込みに失敗した状態であるか否かを示す識別情報を記憶する第２の記憶手段と、
前記第１の記憶手段へのデータの書込みを要求する命令が与えられた場合、前記識別情報に基づいて前記第１の記憶手段がデータの書込みに失敗した状態であるか否かを判断する判断手段と、
この判断手段により前記第１の記憶手段がデータの書込みに失敗した状態でないと判断した場合、前記命令に従って前記第１の記憶手段にデータを書込む処理を行う書込処理手段と、
前記判断手段により前記第１の記憶手段がデータの書込みに失敗した状態であると判断した場合、前記第１の記憶手段に書込まれているデータを前記命令で指定されたデータに書き換える処理を行う書換処理手段と、
を有することを特徴とする携帯可能電子装置。
【請求項２】
前記書込処理手段によるデータの書込処理が失敗した場合、前記識別情報を前記第１の記憶手段がデータの書込みに失敗した状態であることを示す情報に設定する第１の設定手段と、
前記書換処理手段によるデータの書き換え処理が成功した場合、前記識別情報を前記第１の記憶手段がデータの書込みに失敗した状態でないことを示す情報に設定する第２の設定手段と、
を有することを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項３】
さらに、前記判断手段により前記第１の記憶手段がデータの書込みに失敗した状態でないと判断した場合、前記第１の記憶手段が未書込み状態であるか否かを確認する確認手段と、
前記判断手段により前記第１の記憶手段がデータの書込みに失敗した状態でないと判断し、かつ、前記確認手段により前記第１の記憶手段が未書込み状態でないと判断された場合、前記第１の記憶手段へのデータの書込みを禁止する禁止手段と、を有し、
前記書込処理手段は、前記判断手段により前記第１の記憶手段がデータの書込みに失敗した状態でないと判断し、かつ、前記確認手段により前記第１の記憶手段が未書込み状態であると判断された場合に、前記命令に従って前記第１の記憶手段にデータを書込む処理を行う、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項４】
前記判断手段は、複数回に分けて与えられるデータを前記第１の記憶手段へ書込むこと要求する命令が与えられた場合、前記識別情報に基づいて前記第１の記憶手段がデータの書込みに失敗した状態であるか否かを判断し、
前記書込処理手段は、前記判断手段により前記識別情報が書込みに失敗した状態であることを示していると判断した場合、前記命令により前記第１の記憶手段に書込むことが要求されているデータの一部を受信するごとに、受信した各データを前記第１の記憶手段に書込む処理を行う、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項５】
前記書換処理手段は、前記命令により前記第１の記憶手段に書込むことが要求されている受信データと前記第１の記憶手段における当該受信データを書込むべき領域に書込まれているデータとが一致するか否かを判定し、一致しない領域のデータを前記受信データに書き換える処理を行う、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項６】
前記書換処理手段は、前記命令により前記第１の記憶手段に書込むことが要求されているデータの一部を受信するごとに、受信データと前記第１の記憶手段における当該受信データを書込むべき領域に書込まれているデータとが一致するか否かを判定し、一致しない領域のデータを受信データに書き換える処理を行う、
ことを特徴とする前記請求項４に記載の携帯可能電子装置。
【請求項７】
前記書換処理手段は、前記第１の記憶手段を未書込み状態に書き換え、未書込み状態に書き換えた前記第１の記憶手段に対して前記書込処理手段によるデータの書込み処理を実行させる、
ことを特徴とする前記請求項１に記載の携帯可能電子装置。
【請求項８】
前記各手段を具備するモジュールと、
前記モジュールが埋設された本体と、を有する、
ことを特徴とする前記請求項１乃至７の何れかに記載の携帯可能電子装置。
【請求項９】
データを記憶するための不揮発性メモリを有する携帯可能電子装置の制御方法であって、
前記不揮発性メモリにおけるデータ記憶領域へのデータの書込みを要求する命令が与えられた場合、当該データ記憶領域がデータの書き込みに失敗した状態であるか否かを示す識別情報に基づいて当該データ記憶領域がデータの書込みに失敗した状態であるか否かを判断し、
この判断により前記データ記憶領域がデータの書込みに失敗した状態でないと判断した場合、前記命令に従って前記データ記憶領域にデータを書込む処理を行い、
前記判断により前記データ記憶領域がデータの書込みに失敗した状態であると判断した場合、前記データ記憶領域に書込まれているデータを前記命令で指定されたデータに書き換える処理を行う、
ことを特徴とする携帯可能電子装置の制御方法。
【請求項１０】
さらに、前記データの書込処理が失敗した場合、前記識別情報を前記データ記憶領域がデータの書込みに失敗した状態であることを示す情報に設定し、
前記データの書換え処理が成功した場合、前記識別情報を前記データ記憶領域がデータの書込みに失敗した状態でないことを示す情報に設定する、
ことを特徴とする前記請求項９に記載の携帯可能電子装置の制御方法。
【請求項１１】
さらに、前記判断により前記データ記憶領域がデータの書込みに失敗した状態でないと判断した場合、前記データ記憶領域が未書込み状態であるか否かを確認し、
前記判断により前記データ記憶領域がデータの書込みに失敗した状態でないと判断し、かつ、前記確認により前記データ記憶領域が未書込み状態でないことが確認された場合、前記データ記憶領域へのデータの書込みを禁止し、
前記書込処理は、前記判断により前記データ記憶領域がデータの書込みに失敗した状態でないと判断し、かつ、前記確認により前記データ記憶領域が未書込み状態であることが確認された場合に、前記命令に従って前記データ記憶領域にデータを書込む処理を行う、
ことを特徴とする前記請求項９に記載の携帯可能電子装置の制御方法。
【請求項１２】
前記判断は、複数回に分けて与えられるデータを前記データ記憶領域へ書込むことを要求する命令が与えられた場合、前記識別情報に基づいて前記データ記憶領域がデータの書込みに失敗した状態であるか否かを判断し、
前記書込処理は、前記判断により前記識別情報が書込みに失敗した状態であることを示していると判断した場合、前記命令により前記データ記憶領域に書込むことが要求されているデータの一部を受信するごとに、受信した各データを前記データ記憶領域に書込む、
ことを特徴とする前記請求項９に記載の携帯可能電子装置の制御方法。
【請求項１３】
前記書換処理は、前記命令により前記データ記憶領域に書込むことが要求されている受信データと前記データ記憶領域における当該受信データを書込むべき領域に書込まれているデータとが一致するか否かを判定し、一致しない領域のデータを受信データに書き換える、
ことを特徴とする前記請求項９に記載の携帯可能電子装置の制御方法。
【請求項１４】
前記書換処理は、前記命令により前記データ記憶領域に書込むことが要求されているデータの一部を受信データとして受信するごとに、受信データと前記データ記憶領域における当該受信データを書込むべき領域に書込まれているデータとが一致するか否かを判定し、一致しない領域のデータを受信データに書き換える、
ことを特徴とする前記請求項１２に記載の携帯可能電子装置の制御方法。
【請求項１５】
前記書換処理は、前記データ記憶領域を未書込み状態に書き換え、未書込み状態に書き換えた前記データ記憶領域に対して前記書込処理によるデータの書込みを行う、
ことを特徴とする前記請求項９に記載の携帯可能電子装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、たとえば、データの書込みや書換え可能な不揮発性メモリおよびＣＰＵなどの制御素子を有したモジュールを内蔵し、外部から入力されるコマンドに対応した処理を実行するＩＣカードなどの携帯可能電子装置および携帯可能電子装置の制御方法に関する。
【背景技術】
【０００２】
近年、ＩＣカードなどの携帯可能電子装置は、様々な用途に利用されている。このようなＩＣカードには、画像データなどのデータ量の大きいデータ（データ長の長いデータ）を記憶することも多い。たとえば、個人用に発行されるＩＣカードには、発行処理時に、所有者の個人情報の1つとして顔画像データなどがＩＣカード内の不揮発性メモリに書込まれることも多い。また、上記のようなＩＣカードでは、不揮発性メモリに１回のみの書込みが可能な領域が設けられていることがある。このような１回のみの書込みが可能な領域には、発行処理時に、上記個人情報などのデータが書込まれる。画像データのようなデータ長の長いデータは、複数回に分けて順次、ＩＣカード処理装置からＩＣカードに送信される。これは、１つのコマンドでデータ長の長いデータを全て送信するのが困難であるからである。たとえば、ＩＣカードでは送受信データが２５５バイトまでと規定されているものがある。このような場合、上記ＩＣカードでは、順次、受信するデータを、不揮発性メモリに書込んでいく。しかしながら、通信エラー等でデータの書き込みが中断されると、当該ＩＣカードの上記不揮発性メモリには、残りのデータが書込めなくなる。これは、不揮発性メモリにおける１回のみ書込み可能な領域は、全て未書込み状態でないと、データが書き込めないためである。
【０００３】
また、従来のＩＣカードに関する技術として、特開平１０−２１４２３２号公報には、外部装置から与えられる特殊な初期化命令に応じて、１回のみ書込み可能な領域を未書込み状態にする技術が記載されている。この場合、外部装置では、初期化すべき特定のＩＣカードに対して初期化命令を与える必要がある。このような処理は、初期化すべきＩＣカードを人手で識別し、当該ＩＣカードに初期化命令を与えるための操作を人手で行う必要があると考えられる。
【０００４】
また、従来のＩＣカードに関する別の技術として、特開２００２−２２９７４４号公報には、データの書込み処理において、バックアップ領域にデータを書込んでおき、データの書込みが中断された場合、書込み識別フラグを参照してバックアップ領域に書込んでおいたデータの書込みを行う技術が提案されている。しかしながら、このような技術では、ＩＣカード内にバックアップ領域を設けたり、バックアップ領域にデータを書込む処理を行ったりする必要がある。
【特許文献１】特開平１０−２１４２３２号公報
【特許文献２】特開２００２−２２９７４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この発明の一形態は、上記のような問題点を解決するものであり、メモリへの効率的なデータの書き込み処理を行うことができる携帯可能電子装置および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明の一形態としての携帯可能電子装置は、データを記憶する第１の記憶手段と、前記第１の記憶手段がデータの書き込みに失敗した状態であるか否かを示す識別情報を記憶する第２の記憶手段と、前記第１の記憶手段へのデータの書込みを要求する命令が与えられた場合、前記識別情報に基づいて前記第１の記憶手段がデータの書込みに失敗した状態であるか否かを判断する判断手段と、この判断手段により前記第１の記憶手段がデータの書込みに失敗した状態でないと判断した場合、前記命令に従って前記第１の記憶手段にデータを書込む処理を行う書込処理手段と、前記判断手段により前記第１の記憶手段がデータの書込みに失敗した状態であると判断した場合、前記第１の記憶手段に書込まれているデータを前記命令で指定されたデータに書き換える処理を行う書換処理手段とを有する。
【０００７】
この発明の携帯可能電子装置の制御方法は、データを記憶するための不揮発性メモリを有する携帯可能電子装置に用いられる方法であって、前記不揮発性メモリにおけるデータ記憶領域へのデータの書込みを要求する命令が与えられた場合、当該データ記憶領域がデータの書き込みに失敗した状態であるか否かを示す識別情報に基づいて当該データ記憶領域がデータの書込みに失敗した状態であるか否かを判断し、この判断により前記データ記憶領域がデータの書込みに失敗した状態でないと判断した場合、前記命令に従って前記データ記憶領域にデータを書込む処理を行い、前記判断により前記データ記憶領域がデータの書込みに失敗した状態であると判断した場合、前記データ記憶領域に書込まれているデータを前記命令で指定されたデータに書き換える処理を行う。
【発明の効果】
【０００８】
この発明の一形態によれば、効率的なデータの書き込み処理を行うことができる携帯可能電子装置および携帯可能電子装置の制御方法を提供できる。
【発明を実施するための最良の形態】
【０００９】
以下、この発明を実施するための最良の形態について図面を参照しつつ説明する。  
図１は、この発明の実施の形態に係る携帯可能電子装置としてのＩＣカード１およびＩＣカード１を含むＩＣカードシステムの構成例を示すブロック図である。  
上記ＩＣカード１は、外部装置としてのＩＣカード処理装置２からの電源供給により動作可能な状態となる。動作可能となったＩＣカード１は、上記ＩＣカード処理装置２からのコマンドに応じて種々の処理を行う。上記ＩＣカード処理装置２は、ＩＣカード１を動作させるための電源を供給するとともに、当該ＩＣカード１に対して種々の処理を要求するコマンドを供給する。
【００１０】
なお、上記ＩＣカード１は、上記ＩＣカード処理装置２と物理的に接触して通信を行う接触式の携帯可能電子装置（接触式ＩＣカード）であっても良いし、アンテナや無線通信部等により上記ＩＣカード処理装置２と非接触の状態で無線通信を行う非接触式の携帯可能電子装置（非接触式ＩＣカード）であっても良い。非接触式ＩＣカードと接触式ＩＣカードとはＩＣカード処理装置２との通信方式等が異なるだけである。このため、以下に説明する実施の形態は、接触式ＩＣカードであっても、非接触式ＩＣカードであっても同様に適用できる。
【００１１】
まず、上記ＩＣカード１の構成例について説明する。  
図１に示すように、上記ＩＣカード１は、制御素子１１、プログラムメモリ１２、ワーキングメモリ１３、データメモリ１４、および、通信部（外部インターフェース）１５などにより構成される。  
また、上記ＩＣカード１は、カード状の本体Ｃにより形成されている。上記ＩＣカード１を形成するカード状の本体Ｃには、１つ（あるいは複数）のＩＣチップ１ａが埋設される。上記ＩＣチップ１ａは、制御素子１１、プログラムメモリ１２、ワーキングメモリ１３、データメモリ１４、通信部１５などにより構成される。たとえば、当該ＩＣカード１が非接触式ＩＣカードである場合、上記ＩＣチップ１ａは、電波を送受信するアンテナに接続された状態でモジュール化される。このモジュールは、カード状の本体内に埋設される。また、当該ＩＣカード１が接触式ＩＣカードである場合、上記ＩＣチップ１ａは、外部機器と物理的に接触するコンタクト部に接続された状態でモジュール化される。このモジュールは、上記コンタクト部が外部に露出するように、カード状の本体Ｃ内に埋設される。
【００１２】
上記制御素子１１は、ＩＣカード１全体の制御を司るものである。上記制御素子１１は、上記プログラムメモリ１２あるいはデータメモリ１４に記憶された制御プログラムおよび制御データなどに基づいて動作する。たとえば、上記制御素子１１は、基本的な動作（所定のコマンドに応じた処理）を司る制御プログラムを実行することにより、外部装置から与えられるコマンドに応じた処理を実行する。
【００１３】
上記プログラムメモリ１２は、読み出し専用のメモリ（ＲＯＭ：リードオンリーメモリ）により構成される。上記プログラムメモリ１２には、予め基本的な動作（たとえば所定のコマンドに対する処理）を実行するための制御プログラムおよび制御データなどが記憶されている。上記プログラムメモリ１２には、予め当該ＩＣカード１の仕様に応じた制御プログラム及び制御データが記憶される。上記プログラムメモリ１２に記憶される制御プログラムにより、上記制御素子１１は、外部から与えられるコマンドに応じた処理を実現している。
【００１４】
上記ワーキングメモリ１３は、揮発性のメモリ（ＲＡＭ；ランダムアクセスメモリ）により構成される。上記ワーキングメモリ１３は、データを一時保管するバッファメモリとして機能する。例えば、上記ワーキングメモリ１３には、ＩＣカード処理装置（外部装置）２との通信処理において、送信されるデータあるいは受信したデータなどが一時的に保管される。また、上記ワーキングメモリ１３には、種々の書込みデータなどを一時的に保持するメモリとしても利用される。
【００１５】
上記データメモリ（不揮発性メモリ）１４は、データの書き込みが可能な不揮発性のメモリである。上記データメモリ１４は、例えば、ＥＥＰＲＯＭあるいはフラッシュメモリなどにより構成される。上記データメモリ１４には、ＩＳＯ／ＩＥＣ７８１６などで定義された構造のファイルにより各種のデータが記憶される。たとえば、上記データメモリ１４には、複数の階層からなる構造（ツリー構造）で管理されるデータファイルとしてのファイル（ＥＦ：Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ）、および、データフォルダとしてのファイル（ＤＦ：Ｄｅｄｉｃａｔｅｄ  Ｆｉｌｅ）が記憶される。なお、上記ＤＦには、使用目的に応じた処理プログラムおよび運用データなどが記憶される。このため、当該ＩＣカード１が複数の使用目的に使用される場合、上記データメモリ１４には、各使用目的に応じた複数のＤＦが記憶される。
【００１６】
上記通信部１５は、外部装置（たとえば、ＩＣカード処理装置２）とのデータ通信を行うものである。たとえば、当該ＩＣカード１が非接触式ＩＣカードである場合、上記通信部１５は、受信した電波としての送信データを復調し、復調した信号を上記制御素子１１に供給する。また、当該ＩＣカード１が非接触式ＩＣカードである場合、上記通信部１５は、上記制御素子１１から与えられる送信用のデータを変調し、変調したデータを電波として発信する。また、当該ＩＣカード１が接触式ＩＣカードである場合、上記通信部では、外部装置と物理的に接触するコンタクト部を介してデータの送受信を行う。
【００１７】
また、上記通信部１５は、外部装置から供給される電力を受信する。たとえば、非接触式ＩＣカードでは、図示しない電源部が上記通信部１５により受信した電波から当該ＩＣカード１の各部を動作させるための電源およびクロックパルスを生成する。また、接触式ＩＣカードでは、図示しないコンタクト部を介して入力される電力およびクロックパルスがＩＣカード１内の各部に供給されるようになっている。
【００１８】
次に、上記ＩＣカード処理装置２について説明する。  
上記ＩＣカード処理装置２は、図１に示すように、制御装置２１およびカードリーダライタ２２を有している。上記制御装置２１は、パーソナルコンピュータ（ＰＣ）などにより構成される。上記制御装置２１は、ＣＰＵなどの演算処理部、ＲＡＭ、ＲＯＭ、不揮発性メモリおよびハードディスクドライブなどの各種メモリ、通信インターフェースなどの各種インターフェースなどにより構成される。上記制御装置２１では、上記演算処理部がメモリに記憶されている各種の制御プログラムを実行することにより各種の処理を実現している。また、上記制御装置２１は、ＩＣカード１とのデータ通信を行う上記カードリーダライタ２２とのデータの入出力を行うようになっている。
【００１９】
たとえば、上記制御装置２１には、上記ＩＣカード１を用いた各種の処理に応じた制御プログラムが予め記憶されている。上記制御装置２１では、上記のような制御プログラムを実行することにより上記ＩＣカード１に各種の処理を実行させる。たとえば、上記ＩＣカード１の発行処理は、発行処理用のプログラムにより実行される。つまり、上記ＩＣカードの発行処理において、上記制御装置２１は、発行処理用のプログラムに基づく所定の手順で、発行時に書込むべきデータをデータの書込みを要求するコマンドにより上記カードリーダライタ２２を介してＩＣカード１へ供給する。
【００２０】
上記カードリーダライタ２２は、上記ＩＣカード１とのデータ通信を行う通信手段として機能する。上記カードリーダライタ２２は、上記ＩＣカード１の通信方式に応じた通信方式によるデータ通信を行うものである。つまり、上記カードリーダライタ２２を介して制御装置２１は、上記ＩＣカード１とのデータ通信を実現している。
【００２１】
上記ＩＣカード１が接触型のＩＣカードである場合、上記カードリーダライタ２２は、ＩＣカード１と物理的に接触してデータ通信を行うためのコンタクト部および通信制御部などにより構成される。接触型のＩＣカードとのデータの送受信を行う場合、上記カードリーダライタ２２では、上記コンタクト部がＩＣカード１側に設けられているコンタクト部と物理的に接触して各種のデータ通信を行う。また、上記カードリーダライタ２２では、ＩＣカード１に物理的に接触しているコンタクト部を介して当該ＩＣカード１に対して電源およびクロックパルスを供給するようになっている。
【００２２】
また、上記ＩＣカード１が非接触型のＩＣカードである場合、上記カードリーダライタ２２は、上記ＩＣカード１との無線によるデータ通信を行うためのアンテナおよび通信制御部（変復調回路等）などにより構成される。非接触型のＩＣカード１へデータを送信する場合、上記カードリーダライタ２２では、通信制御部により上記制御装置２１から与えられる送信データを変調し、変調した信号を電波としてアンテナにより発信する。また、非接触型のＩＣカード１からデータを受信する場合、上記カードリーダライタ２２では、アンテナにより受信した電波としての信号を通信制御部により復調し、復調したデータを受信データとして上記制御装置２１へ供給する。また、上記カードリーダライタ２２では、上記のようなデータの送受信とともに、上記ＩＣカード１を動作させるための電源およびクロックパルスとなる電波をアンテナにより発信するようになっている。
【００２３】
次に、データメモリ１４に記憶されるデータの構成について説明する。  
上述したように、上記データメモリ１４には、データがデータファイル（ＥＦ）として記憶される。たとえば、ＩＣカードの標準仕様であるＩＳＯ７８１６では、データメモリ１４に記憶するデータファイル（ＥＦ）の構造として、透過構造（ｔｒａｎｓｐａｒｅｎｔ）ＥＦ（バイナリＥＦ）、および、レコード構造（ｒｅｃｏｒｄ）ＥＦ（レコードＥＦ）などが定義されている。
【００２４】
上記透過構造ＥＦには、構造化されていないデータ（バイナリデータ）が記憶される。このため、上記透過構造ＥＦでは、データの自由度が高く、画像データなどのデータ長の大きなデータを記憶するのに適している。このような透過構造ＥＦには、バイナリ系のコマンドでアクセスするようになっている。また、上記レコードＥＦには、管理情報と実データ（レコードデータ）とを有する所定の形式のレコードがデータとして記憶される。このため、レコードＥＦでは、データの管理が容易である。このようなレコード構造ＥＦに記憶されているデータ（レコード）には、レコード系のコマンドでアクセスするようになっている。
【００２５】
図２は、データメモリ（不揮発性メモリ）１４に記憶されるデータの構成例を示す図である。また、図３は、ＥＦ定義情報の構成例を示す図である。  
図２に示す構成例では、マスターファイル（ＭＦ）、ＤＦ（ＤＦ１）、ＥＦ（ＥＦ０００１、ＥＦ０００２、ＥＦ０００３）が定義されている。ＭＦ定義情報１００には、ＭＦを定義する情報が記憶される。ＤＦ定義情報１１０には、ＤＦ１を定義する情報が記憶される。ＥＦ定義情報１１１、１１２、１１３の記憶領域（第２の記憶手段）には、それぞれＥＦ０００１、ＥＦ０００２、ＥＦ０００３を定義する情報が記憶される。領域（第１の記憶手段）Ｒ１、Ｒ２、Ｒ３は、それぞれＥＦ０００１、ＥＦ０００２、ＥＦ０００３としてのデータを格納するためのデータ記憶領域（データエリア）である。なお、ここでは、ＥＦ０００１、ＥＦ０００２、ＥＦ０００３は、バイナリＥＦであり、かつ、１回のみの書込みが許可されるデータファイルであるものとする。
【００２６】
ＥＦ定義情報１１１、１１２、１１３は、図３に示すように、「ＥＦ  ＩＤ」、「先頭アドレス」、「サイズ」、「フラグ（書込みＮＧフラグ）」を有している。上記「ＥＦ  ＩＤ」は、ＥＦを識別するための識別情報である。上記「先頭アドレス」は、データメモリ１４において当該ＥＦのデータが記憶されるデータ記憶領域（データエリア）の先頭のアドレスを示す情報である。上記「サイズ」は、当該ＥＦのデータの大きさ（データ長）を示す情報である。
【００２７】
また、「フラグ（書込みＮＧフラグ）」は、当該ＥＦのデータエリアに対する書込みが失敗している状態か否かを示す情報である。上記「フラグ」は、当該ＥＦ（バイナリＥＦ）のデータエリアに対する書込みが失敗した場合に、オフ状態（ここでは「１」）からオン状態（ここでは「０」）に書き換えられる。上記「フラグ」の書き換え手順については、後で詳細に説明する。なお、上記ＥＦ定義情報には、上記「フラグ」がオン状態である場合に書込みが失敗した領域（エラーが発生したアドレス）を記憶するようにしても良い。この場合、上記ＥＦ定義情報では、データの書込みが失敗した状態であるか否かを「フラグ」により判定できるとともに、データの書込みが失敗した領域（アドレス）を特定することが可能となる。
【００２８】
たとえば、図３に示す例では、ＥＦ定義情報１１１は、「ＥＦ  ＩＤ」が「０００１」、「先頭アドレス」が「８０００」、「サイズ」が「１０００」となっている。これは、図２に示すように、データメモリ１４におけるアドレス「８０００」から「１０００」ビット分の領域、つまり、アドレス「８０００−８ＦＦＦ」がＥＦ０００１のデータエリアＲ１であることを定義することを示している。また、図３に示す例では、ＥＦ定義情報１１１は、「フラグ（書込みＮＧフラグ）」が「０（ＮＧ発生）」となっている。これは、当該ＥＦ０００１のデータエリアＲ１へのデータ書込み処理が失敗している状態であることを示している。なお、図２、図３、図４及び図５では、数値が１６進数で示されているものとする。
【００２９】
図３に示す例では、ＥＦ定義情報１１２は、「ＥＦ  ＩＤ」が「０００２」、「先頭アドレス」が「９０００」、「サイズ」が「２００」となっている。これは、図２に示すように、データメモリ１４におけるアドレス「９０００」から「２００」ビット分の領域、つまり、アドレス「９０００−９１ＦＦ」がＥＦ０００２のデータエリアＲ２であることを定義することを示している。また、図３に示す例では、ＥＦ定義情報１１２は、「フラグ（書込みＮＧフラグ）」が「１（ＮＧなし）」となっている。これは、当該ＥＦ０００２のデータエリアＲ２へのデータ書込み処理が失敗している状態でないことを示している。
【００３０】
図３に示す例では、ＥＦ定義情報１１３は、「ＥＦ  ＩＤ」が「０００３」、「先頭アドレス」が「９２００」、「サイズ」が「１００」となっている。これは、図２に示すように、データメモリ１４におけるアドレス「９２００」から「１００」ビット分の領域、つまり、アドレス「９２００−９２ＦＦ」がＥＦ０００３のデータエリアＲ３であることを定義することを示している。また、図３に示す例では、ＥＦ定義情報１１３は、「フラグ（書込みＮＧフラグ）」が「１（ＮＧなし）」となっている。これは、当該ＥＦ０００３のデータエリアＲ３へのデータ書込み処理が失敗している状態でないことを示している。
【００３１】
次に、上記ＩＣカード１に供給されるコマンドについて説明する。  
上述したように、図１に示すようなシステムにおいて、上記ＩＣカード１は、上記ＩＣカード処理装置２から供給されるコマンドに応じた処理を実行するようになっている。上記ＩＣカード１が実行可能なコマンドには、種々のコマンドがある。たとえば、上記データメモリ１４にデータの書込みあるいは読出しを要求するコマンドには、バイナリ系のコマンドとレコード系のコマンドとがある。
【００３２】
上記バイナリ系のコマンドは、主に、バイナリＥＦに対するデータの書込みあるいは読出しを要求するのに用いられる。上記バイナリ系のコマンドでは、上位装置がＥＦ内のデータへのアクセスをオフセットで指定する。これに対して、上記レコード系のコマンドは、主に、レコードＥＦに対するデータの書込みあるいは読出しを要求するのに用いられる。上記レコード系のコマンドでは、上位装置は、ＩＣカードに対してレコードＥＦへのアクセスをレコードを示す情報で指定する。
【００３３】
次に、上記バイナリ系のコマンドの１つとしてのライトバイナリ（WRITE BINARY）コマンドについて説明する。  
図４は、ライトバイナリコマンドの構成例を示す図である。また、図５は、図４に示すライトバイナリコマンドに続く、送信データ（コマンド）の例を示す図である。  
上記ライトバイナリコマンドは、バイナリＥＦへのデータの書込を要求するバイナリ系のコマンドである。ライトバイナリコマンドは、図４に示すように、「ＣＬＡ」部、「ＩＮＳ」部、「Ｐ１」部、「Ｐ２」部、「Ｌｃ」部、「Ｄａｔａ」部などの情報から構成されている。上記「ＣＬＡ」部および上記「ＩＮＳ」部には、コマンドの種類を示す情報が格納される。図４に示す例では、上記「ＣＬＡ」部および上記「ＩＮＳ」部には、ライトバイナリコマンドであることを示す「００」および「Ｄ０」が格納されている。
【００３４】
上記「Ｐ１」部および上記「Ｐ２」部には、当該コマンドの処理パラメータを示す情報が格納される。また、上記「Ｐ１」部には、データの書込み対象となるファイル（ＥＦ）を指定する情報（ＥＦ  ＩＤを示す情報）が格納される。図４に示す例では、上記「Ｐ１」部には、「８１（１６進数）＝１００００００１（２進数）」が格納されている。なお、図４に示す例では、「Ｐ１」部における値の２進数の下５桁がＥＦの識別情報（ＥＦ  ＩＤ）を示すものとする。つまり、図４に示す例では、上記「Ｐ１」部では、ＥＦＩＤとして「００００１」を指定している。
【００３５】
また、上記「Ｐ２」部には、上記「Ｐ１」部で指定されるＥＦにおけるデータの書込む位置（アドレス）を示す情報としてのオフセット値が格納される。図４に示す例では、上記「Ｐ２」部には、上記「Ｐ１」部で指定されるＥＦ０００１におけるオフセット値を示す情報として「００」が格納されている。すなわち、図４に示す例では、ＥＦＩＤが「００００１」、かつ、オフセット値が「０」である。このため、図４に示すライトバイナリコマンドでは、上記「Ｐ１」部および上記「Ｐ２」部において、データの書込み開始位置として、ＥＦ０００１の先頭アドレスを指定している。
【００３６】
また、上記「Ｌｃ」部には、バイナリデータとして書込むべきデータ全体の長さを示す情報が格納される。上記「Data」部には、書込むべきデータのうち最初の部分のデータが格納される。「Data」部には、所定の長さまでのデータが格納されるものとする。つまり、上記「Ｌｃ」部で指定されている長さのデータが、必ずしも「Data」部に全てが格納されているわけではない。バイナリデータとして書込むべきデータ全体の長さが、「Data」部に格納しきれない長さであれば、上記「Data」には、書込むべきデータのうち最初の部分のデータが格納される。
【００３７】
たとえば、図４に示す例では、「Ｌｃ」部にはデータ長として「００１０００」が指定されている。これは、書込むべきバイナリデータ全体のデータ長が「１０００」であることを示している。また、上記「Data」部には、データ長が「Ｆ７」のデータが格納されている。ここでは、上記「Data」部に格納可能なデータ長が「Ｆ７」であるとする。この場合、図４に示すように、ライトバイナリコマンドの「Data」部には、書込むべきバイナリデータ全体うち先頭からデータ長が「Ｆ７」までのデータだけしか格納されていない。
【００３８】
従って、書込むべきバイナリデータのうち残りの「Ｆ０９」のデータは、当該ライトバイナリコマンドとは、別にＩＣカードに供給する必要がある。このため、ライトバイナリコマンドでは、当該コマンドの「Data」部に格納しきれない残りのデータ（バイナリデータ）を続けてＩＣカードに供給できるようになっている。ここでは、当該ライトバイナリコマンドに続けて、データ長が「ＦＥ」のデータが順次送信されるようになっているものとする。図５は、図４に示すライトバイナリコマンドに続いて送信されるべきデータ（コマンド）の例を示す図である。図４に示すライトバイナリコマンドで指定された書込むべきバイナリデータ全体は、図５に示すようなデータ長が「ＦＥ」のデータごとに分割される。これらのデータ長が「ＦＥ」のデータは、ライトバイナリコマンドに続いて順次送信されるようになっている。
【００３９】
すなわち、ライトバイナリコマンドの「Data」部に格納しきれないデータ長が大きなバイナリデータは、所定のデータ長に基づいて分割され、ライトバイナリコマンドに続いて順次、ＩＣカード処理装置からＩＣカードへ供給されるようになっている。これにより、ＩＣカードでは、ライトバイナリコマンドの「Lc」部で指定されている長さのバイナリデータを、ライトバイナリコマンドの「Data」部、および、ライトバイナリコマンドに続く送信データとして順次受信する。この場合、ＩＣカード１は、受信したデータを書込む処理を行うようになっている。
【００４０】
また、上記のようなライトバイナリコマンドを用いて順次供給される複数のデータは、ワーキングメモリが大容量であれば、全てを一旦ワーキングメモリに蓄積することも可能である。しかしながら、ＩＣカード１等の携帯可能電子装置では、装置自体の物理的な大きさの制限などにより大容量のワーキングメモリを具備することは難しい。このため、本実施の形態では、ＩＣカード１は、受信した一部のデータをデータメモリ１４に書込んでから、書込んだデータに続くデータを受信するようになっているものとする。つまり、本実施の形態では、ライトバイナリコマンドを用いて供給される一連のデータのうち少なくとも一部のデータを書込んでから続きのデータを受信する場合を想定するものとする。
【００４１】
次に、上記ＩＣカード１における上記ライトバイナリコマンドに対する処理について説明する。  
図６は、ライトバイナリコマンドに対する処理例を説明するためのフローチャートである。なお、図６に示す例では、ライトバイナリコマンドで指定されるデータメモリ１４に書込むべきバイナリデータが複数に分割されてＩＣカード１に供給される場合を想定している。また、ここでは、ＩＣカード１の発行処理（データメモリ１４における１回のみ書込み可能な領域にデータを書込む処理）を想定するものとする。
【００４２】
まず、上記ＩＣカード処理装置２がＩＣカード１を動作させるための電力およびクロックパルスを当該ＩＣカード１に供給したものとする。上記ＩＣカード処理装置２から電力およびクロックが供給されると、上記ＩＣカード１は、起動処理、および、リセット処理を行う。上記リセット処理が完了すると、上記ＩＣカード１の制御素子１１は、上記ＩＣカード処理装置２に対する初期応答として、初期応答データをＩＣカード処理装置２へ送信する（ステップＳ１０）。このような初期応答データを受信したＩＣカード処理装置２では、ＩＣカード１に対してコマンドを送信する。
【００４３】
上記初期応答データを送信したＩＣカード１では、上記ＩＣカード処理装置２からのコマンドの待ちの状態となっている。この状態において上記ＩＣカード処理装置２から送信されたコマンドを上記通信部１５により受信すると（ステップＳ１１、ＹＥＳ）、上記ＩＣカード１の制御素子１１は、受信したコマンドの種類を判別する。上記ＩＣカード１の制御素子１１は、受信したコマンドの「CLA」部及び「INS」部の値に基づいて当該コマンドの種類を判別する。  
上記受信したコマンドがライトバイナリコマンド以外のコマンドであると判定した場合（ステップＳ１２、ＮＯ）、上記制御素子１１は、当該コマンドに応じた処理を実行する（ステップＳ１３）。なお、コマンドの種類と「CLA」部及び「INS」部の値との関係は、たとえば、上記プログラムメモリ１２に予め記憶されている。また、各種のコマンドに応じた処理は、予めプログラムメモリ１２に記憶されるプログラムに基づいて実行される。
【００４４】
上記受信したコマンドがライトバイナリコマンドであると判定した場合（ステップＳ１２、ＹＥＳ）、上記ＩＣカード１の制御素子１１は、当該ライトバイナリコマンドにおける処理パラメータとしての「Ｐ１」部の値に基づいてバイナリデータを書込む対象とするデータファイル（バイナリＥＦ）を判断する（ステップＳ１４）。すなわち、上記ＩＣカード１の制御素子１１は、受信したライトバイナリコマンドの「Ｐ１」部に設定されているＥＦＩＤのＥＦの定義情報をデータメモリ１４から検索する。この検索結果として、上記制御素子１１は、当該ライトバイナリコマンドで書込み対象として指定されているＥＦが存在するか否かを判断している。
【００４５】
この判断により対象となるＥＦ（当該ライトバイナリコマンドの「Ｐ１」部で指定されたＥＦ）が存在しないと判断した場合（ステップＳ１４、ＮＯ）、上記ＩＣカード１の制御素子１１は、所定のエラー処理を行う（ステップＳ２２）。この場合、上記制御素子１１は、エラー処理として、たとえば、当該ライトバイナリコマンドで指定された書込み対象のＥＦが存在しない旨を上記ＩＣカード処理装置２に通知する処理などを行う。
【００４６】
上記判断により対象となるＥＦ（当該ライトバイナリコマンドの「Ｐ１」部で指定されたＥＦ）が存在すると判断した場合（ステップＳ１４、ＹＥＳ）、上記制御素子１１は、対象とするＥＦに対するフラグ（書込みＮＧフラグ）がオン（図３に示す例では「０」）となっているか否かを判断する（ステップＳ１５）。すなわち、上記ＩＣカード１の制御素子１１は、当該ライトバイナリコマンドの「Ｐ１」部に設定されているＥＦＩＤのＥＦの定義情報において、フラグ（書込みＮＧフラグ）がオン（「０」）かオフ（「１」）かを判定する。この場合、上記制御素子１１は、当該ライトバイナリコマンドで書込み対象として指定されているＥＦのフラグがオンであるか否かを判断している。
【００４７】
この判断により対象となるＥＦ（当該ライトバイナリコマンドの「Ｐ１」部で指定されたＥＦ）のフラグがオンであると判断した場合（ステップＳ１５、ＹＥＳ）、上記ＩＣカード１の制御素子１１は、後述する書込みエラー状態のＥＦに対する処理を行う（ステップＳ３１〜Ｓ３８、又は、ステップＳ４１）。この書込みエラー状態のＥＦに対する処理については、後で詳細に説明する。
【００４８】
また、上記判断により対象とするＥＦに対するフラグがオンでないと判断した場合、つまり、対象とするＥＦに対するフラグがオフである場合、(ステップＳ１５、ＮＯ)、上記制御素子１１は、対象とするＥＦの記憶領域（書込み領域）は未書込み状態か否かを判断する（ステップＳ１６）。ここでは、対象とするＥＦが１回のみの書込みが許可されている領域であるものとする。また、書込み済みであるか否かは、未書き込み状態であるか否かにより判断されるものとする。
【００４９】
すなわち、上記ＩＣカード１の制御素子１１は、受信したライトバイナリコマンドの「Ｐ１」部に設定されているＥＦＩＤのＥＦ定義情報で示されている領域（当該ＥＦのデータ記憶領域）が未書込み状態であるか否かを判断する。ここでは、未書込み状態が全て「ＦＦ（全てのビットが「１」）」の値であるものとする。従って、上記ＩＣカード１の制御素子１１は、当該ＥＦのデータ記憶領域における全てのビットが「１」の値になっているか否かにより未書込み状態であるか否かを判断する。
【００５０】
この判断により対象とするＥＦの記憶領域が未書き込み状態でないと判断した場合（ステップＳ１６、ＮＯ）、上記制御素子１１は、所定のエラー処理を行う（ステップＳ２２）。この場合、上記制御素子１１は、エラー処理として、たとえば、当該ライトバイナリコマンドで指定された書込み対象のＥＦが未書込み状態でない旨を上記ＩＣカード処理装置２に通知する処理などを行う。  
なお、ここでは、前段のステップＳ１５で当該ＥＦのフラグがオフであることを確認している。このため、上記ステップＳ１６で未書込み状態でないと判断される場合、当該ＥＦのデータ記憶領域は、データの書込み済み、あるいは、メモリ不良等のハードウエアの不具合などが想定される。したがって、このような場合、上記制御素子１１は、当該ライトバイナリコマンドに対する処理が実行できないと判定し、エラー処理を行うようになっている。
【００５１】
また、上記判断により対象とするＥＦの記憶領域が未書き込み状態であると判断した場合（ステップＳ１６、ＹＥＳ）、上記制御素子１１は、当該ライトバイナリコマンドに応じた書込み処理を実行する（ステップＳ１７〜Ｓ２０）。まず、上記ライトバイナリコマンドを受信した場合、上記制御素子１１は、当該ライトバイナリコマンドの「Ｐ２」部に格納されているオフセット値で指定される先頭アドレスから当該ライトバイナリコマンドの「Data」部に格納されているデータを書込む処理を行う（ステップＳ１７）。
【００５２】
たとえば、図４に示すようなライトバイナリコマンドを受信した場合、上記制御素子１１は、データメモリ１４におけるＥＦ０００１の先頭アドレス「８０００」から「Data」部に格納されているデータ（全データ長「１０００」のうちの最初のデータ長「Ｆ７」分のデータ）を書込む処理を行う。なお、上記ステップＳ１７の各データの書込み処理においてハードウエア等の不具合により書き込みエラーが発生した場合も、上記制御素子１１は、上記対象ＥＦのフラグをオンし、エラー処理を行うようにしても良い。
【００５３】
上記ステップＳ１７の書込み処理が完了すると、上記制御素子１１は、全データの受信および書込み処理が完了したか否かを判断する（ステップＳ１８）。この判断は、「Lc」部に格納されているデータ長のデータ（つまり、全データ長分のバイナリデータ）の書込みが完了したか否かにより判断される。  
上記判断により全データの受信および書込み処理が完了していないと判断した場合（ステップＳ１８、ＮＯ）、上記制御素子１１は、受信した分のデータの書込み完了を示すレスポンスをＩＣカード処理装置２に送信し、次のデータ（バイナリデータ）の受信待ち状態となる。上記ＩＣカード処理装置２では、上記ＩＣカード１からの書込み完了を示すレスポンスに応じて次のデータ（バイナリデータ）を送信する処理を行う。
【００５４】
上記データの受信待ち状態においてＩＣカード処理装置２から次のデータが送信されると、上記ＩＣカード１は、上記通信部１５により当該データを受信する受信処理を行う（ステップＳ１９）。この受信処理において上記ＩＣカード１の制御素子１１は、データが正常に受信されているか否かを判断する処理を行っている（ステップＳ２０）。  
上記判断により上記ＩＣカード処理装置２から送信されたデータが正常に受信されたと判断した場合（ステップＳ２０、ＮＯ）、当該ＩＣカード１の制御素子１１は、上記ステップＳ１７へ戻り、受信したデータの書込み処理を行う。このように、上記ＩＣカード１の制御素子１１は、上記ライトバイナリコマンドで指定された全データが受信済みと判断されるまで、上記ステップＳ１７〜Ｓ２０の処理を繰り返し実行する。これにより、通信エラーなどのエラーが発生しなければ、上記ＩＣカード１には、複数に分割されて供給されるバイナリデータをライトバイナリコマンドで指定された条件に従ってデータメモリ１４に書込むことができる。
【００５５】
また、上記判断によりデータの受信処理において通信エラーが発生したと判断した場合、つまり、バイナリデータの受信途中で通信エラーが発生した場合（ステップＳ２０、ＹＥＳ）、上記制御素子１１は、対象とするＥＦのフラグをオン（図３に示す例では「０」）にする（ステップＳ２１）。たとえば、次のデータが所定の許容時間内に受信できない場合、あるいは、パリティチェックなどにより受信したデータが正常でないと判断された場合、上記制御素子１１は、通信エラーが発生したものと判断する。また、対象としているＥＦのフラグをオンにすると、当該ＩＣカード１の制御素子１１は、所定のエラー処理を行う（ステップＳ２２）。この場合、上記制御素子１１は、たとえば、通信エラーによりバイナリデータの書込み処理が失敗した旨をＩＣカード処理装置２に通知するなどのエラー処理を行う。
【００５６】
また、上記ステップＳ１８において、全データ（ライトバイナリコマンドの「Lc」部で指定されたデータ長のバイナリデータ）の受信および書込み処理が完了したと判断した場合（ステップＳ１８、ＹＥＳ）、上記制御素子１１は、上記ライトバイナリコマンドに対する全ての処理が正常に終了したものと判断する。この場合、上記制御素子１１は、当該ライトバイナリコマンドで指定されていたＥＦの定義情報におけるフラグをオフ（図３に示す例では「１」）に設定し（ステップＳ２３）、正常終了処理を行う（ステップＳ２４）。たとえば、上記制御素子１１は、上記正常終了処理として、当該ライトバイナリコマンドで指定された全データの書き込みか完了した旨を上記ＩＣカード処理装置２に通知する処理などを行う。
【００５７】
次に、ライトバイナリコマンドで指定された書込み対象のＥＦのフラグがオンであった場合（書込み対象のＥＦがエラー状態である場合）の処理例について説明する。  
まず、フラグがオンの状態であるＥＦに対する第１の処理例について説明する。  
図７は、ライトバイナリコマンドで書き込み対象に指定されたＥＦのフラグがオンであった場合に実行する処理（書換処理）としての第１の処理例を説明するためのフローチャートである。つまり、図７に示すフローチャートでは、上述した図６のステップＳ１５で対象とするＥＦのフラグがオンであると判断された場合に実行する第１の処理例を示している。
【００５８】
上述したように、ライトバイナリコマンドを受信した場合、上記ＩＣカード１の制御素子１１は、当該ライトバイナリコマンドの「Ｐ１」部で指定されたＥＦのフラグがオンであるか否かを判断する。この判断により対象となるＥＦ（当該ライトバイナリコマンドの「Ｐ１」部で指定されたＥＦ）のフラグがオンであると判断した場合（ステップＳ１５、ＹＥＳ）、上記ＩＣカード１の制御素子１１は、書込みエラー状態のＥＦに対する処理として、図７に示すような書込みエラー状態のＥＦに対する書換処理（第１の処理例）を行う（ステップＳ３１〜３８）。
【００５９】
この書込みエラー状態のＥＦに対する書換処理では、まず、上記ＩＣカード１の制御素子１１は、受信したライトバイナリコマンドの「Data」部に格納されている書き込むべきデータ（受信データ）と書込み対象のＥＦに書込まれているデータ（書込済みのデータ）とを先頭のアドレスから１バイト単位で比較する（ステップＳ３１）。この比較により、上記ＩＣカード１の制御素子１１は、１バイト単位で受信データと書込済みのデータとが一致するか否かを判断する（ステップＳ３２）。
【００６０】
なお、ここでは、受信データと書込済みのデータとを比較する単位は、適宜設定可能である。たとえば、受信データと書込済みのデータとを１ビット単位で比較しても良いし、複数バイト単位で比較するようにしても良い。ただし、ここでは、１バイト単位で受信データと書込済みのデータとを比較するものとする。  
また、上記ＥＦ定義情報において書込みが失敗した領域（エラーが発生したアドレス）が記憶されていれば、上記判断により受信データと書込済みのデータとが一致しないと判断した場合、上記制御素子１１は、不一致となった領域と書込みが失敗した領域とが一致するか否かを確認するようにしても良い。この場合、不一致となった領域が書込み失敗によって誤ったデータが記憶されている領域であるか否かを確認できる。
【００６１】
上記判断により受信データと書込済みのデータとが一致しないと判断した場合（ステップＳ３２、ＮＯ）、上記ＩＣカード１の制御素子１１は、一致していない各バイトに対して受信データを書込む処理を行う（ステップＳ３３）。つまり、書込み対象のＥＦのデータ記憶領域において受信データと一致しない領域は、受信データに書き換えられる。ここでは、１バイト単位で受信データと書込済みのデータとを比較している。このため、上記ステップＳ３３では、受信データと一致していないデータが記憶されているバイト単位の領域を受信データに基づいて書き換える。
【００６２】
上記ステップＳ３３により書込み対象とする領域を受信データに書き換えた場合、あるいは、上記判断により受信データと書込済みのデータとが一致すると判断した場合（ステップＳ３１、ＮＯ）、上記ＩＣカード１の制御素子１１は、全データの受信および書込み処理が完了したか否かを判断する（ステップＳ３４）。この判断は、上記ステップＳ１８と同様に、ライトバイナリコマンドの「Lc」部に格納されているデータ長のデータ（つまり、全データ長分のバイナリデータ）の受信および書込み処理が完了したか否かにより判断される。
【００６３】
上記判断により全データの受信および書込み処理が完了していないと判断した場合（ステップＳ３４、ＮＯ）、上記制御素子１１は、受信した分のデータの書込み完了を示すレスポンスをＩＣカード処理装置２に送信し、次のデータ（バイナリデータ）の受信待ち状態となる。上記ＩＣカード処理装置２では、上記ＩＣカード１からの書込み完了を示すレスポンスに応じて次のデータ（バイナリデータ）を送信する処理を行う。上記データの受信待ち状態においてＩＣカード処理装置２から次のデータが送信されると、上記ＩＣカード１は、上記ステップＳ１９と同様に、上記通信部１５によりＩＣカード処理装置２からのデータを受信する受信処理を行う（ステップＳ３５）。この受信処理において上記ＩＣカード１の制御素子１１は、上記ステップＳ２０と同様に、上記ＩＣカード処理装置２からのデータが正常に受信されているか否かを判断する処理を行っている（ステップＳ３６）。
【００６４】
上記判断により上記ＩＣカード処理装置２から送信されたデータが正常に受信されたと判断した場合（ステップＳ３６、ＮＯ）、当該ＩＣカード１の制御素子１１は、上記ステップＳ３１へ戻る。このように、上記ＩＣカード１の制御素子１１は、ライトバイナリコマンドで指定された全データが受信済みと判断されるまで、上記ステップＳ３１〜Ｓ３６の処理を繰り返し実行する。これにより、通信エラーなどのエラーが発生しなければ、上記ＩＣカード１は、ライトバイナリコマンドに続いて複数に分割されて供給されるバイナリデータをエラー状態（フラグがオンしている状態）のＥＦ（未書込み状態でないＥＦ）に書込むことができる。
【００６５】
また、上記判断によりデータの受信処理において通信エラーが発生したと判断した場合、つまり、バイナリデータの受信途中で通信エラーが発生した場合（ステップＳ３６、ＹＥＳ）、上記制御素子１１は、上記ステップＳ２１及びＳ２２と同様に、対象とするＥＦのフラグをオンし（ステップＳ３７）、所定のエラー処理を行う（ステップＳ３８）。この場合、上記制御素子１１は、たとえば、エラー処理として、通信エラーによりエラー状態のＥＦに対するバイナリデータの書込み処理が失敗した旨をＩＣカード処理装置２に通知するなどの処理を行う。
【００６６】
また、上記ステップＳ３４において、全データ（ライトバイナリコマンドの「Lc」部で指定されたデータ長のバイナリデータ）の受信および書込みが完了したと判断した場合（ステップＳ３４、ＹＥＳ）、上記制御素子１１は、上記ライトバイナリコマンドに対する全ての処理が正常に終了したものと判断し、上記ステップＳ２３へ進む。この場合、上記制御素子１１は、当該ライトバイナリコマンドで指定されていたＥＦの定義情報におけるフラグをオフに設定し（ステップＳ２３）、正常終了処理を行う（ステップＳ２４）。
【００６７】
上記のように、第１の処理例では、１回のみの書込みが許可されるデータファイルに対するデータの書込み処理が失敗した場合にオンされるフラグを設定しておき、ライトバイナリコマンドで指定された書込み対象とするＥＦのフラグがオン状態である場合、上記ＩＣカード１は、当該ＥＦに書込むべき受信データと当該ＥＦのデータ記憶領域に既に書込まれているデータとを比較し、一致しない記憶領域を受信データに基づいて書き換える処理を行うようにしたものである。
【００６８】
これにより、通信エラー等により１回のみの書込みが許可されるデータ領域へのデータの書込みが失敗した場合であっても、再度、当該データの書込み処理を実行することができる。特に、データ長が大きいバイナリデータを書込むために複数回に分けてデータがＩＣカードへ送信される場合、通信エラーが発生しても、再度、当該データの書込みを実行することができる。この結果、カードの発行処理等において、書込みが失敗したＩＣカードを再利用することができる。
【００６９】
次に、フラグがオンの状態であるＥＦに対する第２の処理例について説明する。  
図８は、ライトバイナリコマンドで書き込み対象に指定されたＥＦのフラグがオンであった場合に実行する第２の処理例を説明するためのフローチャートである。つまり、図８に示すフローチャートでは、上述した図６のステップＳ１５で対象とするＥＦのフラグがオンであると判断された場合に実行する第２の処理例を示している。
【００７０】
上述したように、ライトバイナリコマンドを受信した場合、上記ＩＣカード１の制御素子１１は、当該ライトバイナリコマンドの「Ｐ１」部で指定されたＥＦのフラグがオンであるか否かを判断する。この判断により対象となるＥＦ（当該ライトバイナリコマンドの「Ｐ１」部で指定されたＥＦ）のフラグがオンであると判断した場合（ステップＳ１５、ＹＥＳ）、上記ＩＣカード１の制御素子１１は、書込みエラー状態のＥＦに対する処理として、図８に示すような書込みエラー状態のＥＦを未書込み状態にする処理（第２の処理例）を行う（ステップＳ４１）。
【００７１】
この書込みエラー状態のＥＦを未書込み状態にする処理では、上記ＩＣカード１の制御素子１１は、受信したライトバイナリコマンドで書込み対象として指定されたＥＦのデータ記憶領域を全てイニシャル値（たとえば、「ＦＦ」）に書き換える処理を行う（ステップＳ４１）。ここでは、未書込み状態のＥＦは、データ記憶領域が全てイニシャル値としての「ＦＦ」（つまり、全てのビットが「１」）になっているものとしている。このため、上記ステップＳ４１でデータ記憶領域を全てイニシャル値に書き換えた場合、上述した図６のフローチャートで示す処理が可能となる。従って、上記ステップＳ４１でデータ記憶領域を全てイニシャル値に書き換えた場合、上記ＩＣカード１の制御素子１１は、上記ステップＳ１７へ進み、上述したような処理を行う。
【００７２】
上記のように、第２の処理例では、１回のみの書込みが許可されるデータファイルに対するデータの書込み処理が失敗した場合にオンされるフラグを設定しておき、ライトバイナリコマンドで指定された書込み対象とするＥＦのフラグがオン状態である場合、上記ＩＣカード１の制御素子１１は、当該ＥＦのデータ記憶領域を全てイニシャル値に書き換えることにより当該ＥＦを未書込み状態にし、未書込み状態にしたＥＦに対して受信データを書込むようにしたものである。
【００７３】
これにより、通信エラー等により１回のみの書込みが許可されるデータ領域へのデータの書込みが失敗した場合であっても、再度、当該データの書込み処理を実行することができる。特に、データ長が大きいバイナリデータを書込むために複数回に分けてデータがＩＣカードへ送信される場合、通信エラーが発生しても、再度、当該データの書込みを実行することができる。この結果、カードの発行処理等において、書込みが失敗したＩＣカードを再利用することができる。
【００７４】
また、上記第１の処理例あるいは上記第２の処理例によれば、ＩＣカード処理装置が再度ライトバイナリコマンドを与えれば、当該ＩＣカードは、書込み対象とするＥＦの状態をフラグにより判別し、その判別した状態に応じたデータの書込み処理を行うことができる。従って、ＩＣカード処理装置が特定のＩＣカードに対して特別なコマンドを与えなくても、当該ＩＣカードでは、通信エラー等により書込みが失敗した１回のみ書込みが可能な領域に対してデータを書込むことができる。また、ＩＣカード内にバッアップ用のメモリなどを設けなくとも、当該ＩＣカードでは、書込み対象とするＥＦの状態に応じたデータの書込み処理を行うことができる。これらの結果として、本実施の形態によれば、効率的なデータの書込み処理を行うことができるＩＣカードを提供できる。
【図面の簡単な説明】
【００７５】
【図１】本実施の形態に係るＩＣカードおよびＩＣカードを含むシステムの構成例を示すブロック図。
【図２】データメモリに記憶されるデータの構成例を示す図である。
【図３】ＥＦ定義情報の構成例を示す図である。
【図４】ライトバイナリコマンドの構成例を示す図である。
【図５】図４に示すライトバイナリコマンドに続く送信データの例を示す図である。
【図６】ライトバイナリコマンドに対する処理例を説明するためのフローチャートである。
【図７】ライトバイナリコマンドで書き込み対象に指定されたＥＦのフラグがオンであった場合に実行される第１の処理例を説明するためのフローチャート。
【図８】ライトバイナリコマンドで書き込み対象に指定されたＥＦのフラグがオンであった場合に実行される第２の処理例を説明するためのフローチャート。
【符号の説明】
【００７６】
１…ＩＣカード（携帯可能電子装置）、１ａ…ＩＣチップ、Ｃ…本体、２…ＩＣカード処理装置（外部装置）、１１…制御素子（判断手段、書込処理手段、書換処理手段、設定手段、確認手段、禁止手段）、１２…プログラムメモリ、１３…ワーキングメモリ、１４…データメモリ（不揮発性メモリ）、１５…通信部、１１１、１１２、１１３…ＥＦ定義情報（第２の記憶手段）、Ｒ１、Ｒ２、Ｒ３…データ記憶領域（第１の記憶手段）
【図１】
2008027070.tif 000003
【図２】
2008027070.tif 000004
【図３】
2008027070.tif 000005
【図４】
2008027070.tif 000006
【図５】
2008027070.tif 000007
【図６】
2008027070.tif 000008
【図７】
2008027070.tif 000009
【図８】
2008027070.tif 000010