(57)【要約】【課題】１回だけデータの書込みが許可されたデータ領域に対してデータの書込みを行なっている途中で書込みエラーが発生しても、当該データ領域のエラー発生アドレスよりも後ろの領域を有効に利用できる携帯可能電子装置およびＩＣカードを提供する。【解決手段】不揮発性メモリを有し、この不揮発性メモリには、１回だけバイナリデータの書込みが許可されたバイナリファイルが設定され、かつ、当該ファイルの先頭アドレスおよび当該ファイルのファイルサイズが格納されていて、これら先頭アドレスおよびファイルサイズに基づき当該ファイルに対するデータの書込みが行なわれるＩＣカードにおいて、バイナリファイルにデータを書込む途中でエラーが発生した場合、エラー発生時のアドレスの次のアドレスを再設定先頭アドレスとして当該ファイルの先頭アドレスに設定するとともに、エラーが発生したバイトまでのバイト数をファイルサイズから減算した値を再設定ファイルサイズとして当該ファイルのファイルサイズに設定する。【選択図】      図５
2007114961.tif 000002
【特許請求の範囲】
【請求項１】
メモリを有し、このメモリには、１回だけデータの書込みが許可されたデータ領域が設定されているとともに、当該データ領域の先頭アドレスおよび当該データ領域のサイズが格納されていて、これら先頭アドレスおよびサイズに基づき当該データ領域に対するデータの書込みが行なわれる携帯可能電子装置であって、
前記データ領域の先頭アドレスからデータを書込む途中でエラーが発生した場合、当該エラーが発生した際のアドレスから［前記データ領域の先頭アドレス＋１］の値を減算した値を前記データ領域のサイズから減算して得た値を再設定サイズとして前記メモリ内のデータ領域のサイズに設定するとともに、当該エラーが発生したアドレスの次のアドレスを再設定先頭アドレスとして前記メモリ内のデータ領域の先頭アドレスに設定することを特徴とする携帯可能電子装置。
【請求項２】
データを記憶するためのメモリと、このメモリに対してデータの読出しおよびまたは書込みを行なう制御素子を有し、外部から入力されるコマンドに対応した処理を実行してその結果を外部へ出力するもので、前記メモリには、１回だけデータの書込みが許可されたデータ領域が設定されているとともに、当該データ領域の先頭アドレスおよび当該データ領域のサイズが格納されていて、これら先頭アドレスおよびサイズに基づき当該データ領域に対するデータの書込みが行なわれる携帯可能電子装置であって、
外部から入力されるデータを１回だけ書込む機能を有するコマンドを受信すると、当該コマンドにて指定された長さのデータを前記データ領域の先頭アドレスから書込む書込み手段と、
この書込み手段によるデータの書込み途中でエラーが発生した場合、当該エラーが発生した際のアドレスから［前記データ領域の先頭アドレス＋１］の値を減算した値を前記データ領域のサイズから減算して得た値を再設定サイズとして前記メモリ内のデータ領域のサイズに設定するサイズ再設定手段と、
前記書込み手段によるデータの書込み途中でエラーが発生した場合、当該エラーが発生したアドレスの次のアドレスを再設定先頭アドレスとして前記メモリ内のデータ領域の先頭アドレスに設定する先頭アドレス再設定手段と、
前記サイズ再設定手段および先頭アドレス再設定手段の処理が終了すると、エラー発生の応答を外部へ出力するエラー応答出力手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項３】
データを記憶するためのメモリと、このメモリに対してデータの読出しおよびまたは書込みを行なう制御素子を有し、外部から入力されるコマンドに対応した処理を実行してその結果を外部へ出力するもので、前記メモリには、１回だけデータの書込みが許可されたデータ領域が設定されているとともに、当該データ領域の先頭アドレス、当該データ領域のサイズ、当該データ領域を複数のページ単位に分割した１ページ当たりのバイト数、当該データ領域の書込み完了ページ番号、および、当該データ領域のデータ書込み状態を示す書込み状態フラグが格納されていて、これらのデータに基づき当該データ領域に対するデータの書込みがページ単位で行なわれる携帯可能電子装置であって、
外部から入力されるデータを１回だけ書込む機能を有するコマンドを受信すると、当該コマンドにて指定されるデータ領域を前記メモリ内から検索し、当該データ領域の書込み状態フラグをチェックするチェック手段と、
このチェック手段によるチェックの結果、書込み状態フラグがデータ書込み中を示している場合、［前記１ページ当たりのバイト数Χ（前記書込み完了ページ番号＋１）の値を前記データ領域のサイズから減算して得た値を再設定サイズとして前記メモリ内のデータ領域のサイズに設定するサイズ再設定手段と、
前記チェック手段によるチェックの結果、書込み状態フラグがデータ書込み中を示している場合、［前記データ領域の先頭アドレス＋（前記１ページ当たりのバイト数Χ（前記書込み完了ページ番号＋１））］の値を再設定先頭アドレスとして前記メモリ内のデータ領域の先頭アドレスに設定する先頭アドレス再設定手段と、
前記サイズ再設定手段および先頭アドレス再設定手段の処理が終了すると、前記書込み完了ページ番号をクリアするとともに前記書込み状態フラグをデータ書込み前に設定するフラグ設定手段と、
このフラグ設定手段の処理が終了すると、前記書込み状態フラグをデータ書込み中に設定した後、当該データ領域に対して先頭アドレスから１ページ当たりのバイト数分のデータの書込みを行なう書込み手段と、
この書込み手段によるデータの書込みが終了すると、前記書込み完了ページ番号を「＋１」するとともに書込みバイト数を「−２」し、書込みデータを書込み終了分詰める処理を行なう処理手段と、
この処理手段による処理が終了すると、書込みデータ長が「０」以下か否かをチェックし、「０」以下でない場合は再び前記書込み手段による１ページ当たりのバイト数分のデータの書込み処理から実行するよう制御し、「０」以下の場合は前記書込み状態フラグをデータ書込み完了に設定して正常終了を示す応答を外部へ出力する第１の制御手段と、
前記チェック手段によるチェックの結果、書込み状態フラグがデータ書込み前を示している場合、前記書込み手段から第１の制御手段までの処理と同じ処理を行なうよう制御する第２の制御手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項４】
データを記憶するためのメモリと、このメモリに対してデータの読出しおよびまたは書込みを行なう制御素子を有し、外部から入力されるコマンドに対応した処理を実行してその結果を外部へ出力するもので、前記メモリには、１回だけデータの書込みが許可されたデータ領域が設定されているとともに、当該データ領域の先頭アドレスおよび当該データ領域のサイズが格納されていて、これら先頭アドレスおよびサイズに基づき当該データ領域に対するデータの書込みが行なわれるＩＣカードであって、
外部から入力されるデータを１回だけ書込む機能を有するコマンドを受信すると、当該コマンドにて指定された長さのデータを前記データ領域の先頭アドレスから書込む書込み手段と、この書込み手段によるデータの書込み途中でエラーが発生した場合、当該エラーが発生した際のアドレスから［前記データ領域の先頭アドレス＋１］の値を減算した値を前記データ領域のサイズから減算して得た値を再設定サイズとして前記メモリ内のデータ領域のサイズに設定するサイズ再設定手段と、前記書込み手段によるデータの書込み途中でエラーが発生した場合、当該エラーが発生したアドレスの次のアドレスを再設定先頭アドレスとして前記メモリ内のデータ領域の先頭アドレスに設定する先頭アドレス再設定手段と、前記サイズ再設定手段および先頭アドレス再設定手段の処理が終了すると、エラー発生の応答を外部へ出力するエラー応答出力手段とを有したＩＣモジュールと、
このＩＣモジュールを収納したＩＣカード本体と、
を具備したことを特徴とするＩＣカード。
【請求項５】
データを記憶するためのメモリと、このメモリに対してデータの読出しおよびまたは書込みを行なう制御素子を有し、外部から入力されるコマンドに対応した処理を実行してその結果を外部へ出力するもので、前記メモリには、１回だけデータの書込みが許可されたデータ領域が設定されているとともに、当該データ領域の先頭アドレス、当該データ領域のサイズ、当該データ領域を複数のページ単位に分割した１ページ当たりのバイト数、当該データ領域の書込み完了ページ番号、および、当該データ領域のデータ書込み状態を示す書込み状態フラグが格納されていて、これらのデータに基づき当該データ領域に対するデータの書込みがページ単位で行なわれるＩＣカードであって、
外部から入力されるデータを１回だけ書込む機能を有するコマンドを受信すると、当該コマンドにて指定されるデータ領域を前記メモリ内から検索し、当該データ領域の書込み状態フラグをチェックするチェック手段と、このチェック手段によるチェックの結果、書込み状態フラグがデータ書込み中を示している場合、［前記１ページ当たりのバイト数Χ（前記書込み完了ページ番号＋１）の値を前記データ領域のサイズから減算して得た値を再設定サイズとして前記メモリ内のデータ領域のサイズに設定するサイズ再設定手段と、前記チェック手段によるチェックの結果、書込み状態フラグがデータ書込み中を示している場合、［前記データ領域の先頭アドレス＋（前記１ページ当たりのバイト数Χ（前記書込み完了ページ番号＋１））］の値を再設定先頭アドレスとして前記メモリ内のデータ領域の先頭アドレスに設定する先頭アドレス再設定手段と、前記サイズ再設定手段および先頭アドレス再設定手段の処理が終了すると、前記書込み完了ページ番号をクリアするとともに前記書込み状態フラグをデータ書込み前に設定するフラグ設定手段と、このフラグ設定手段の処理が終了すると、前記書込み状態フラグをデータ書込み中に設定した後、当該データ領域に対して先頭アドレスから１ページ当たりのバイト数分のデータの書込みを行なう書込み手段と、この書込み手段によるデータの書込みが終了すると、前記書込み完了ページ番号を「＋１」するとともに書込みバイト数を「−２」し、書込みデータを書込み終了分詰める処理を行なう処理手段と、この処理手段による処理が終了すると、書込みデータ長が「０」以下か否かをチェックし、「０」以下でない場合は再び前記書込み手段による１ページ当たりのバイト数分のデータの書込み処理から実行するよう制御し、「０」以下の場合は前記書込み状態フラグをデータ書込み完了に設定して正常終了を示す応答を外部へ出力する第１の制御手段と、前記チェック手段によるチェックの結果、書込み状態フラグがデータ書込み前を示している場合、前記書込み手段から第１の制御手段までの処理と同じ処理を行なうよう制御する第２の制御手段とを有したＩＣモジュールと、
このＩＣモジュールを収納したＩＣカード本体と、
を具備したことを特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば、書込み、書換え可能な不揮発性メモリおよびＣＰＵ（セントラル・プロセッシング・ユニット）などの制御素子を有するＩＣ（集積回路）チップを内蔵し、外部から供給されるコマンドに基づいて各種処理を実行するＩＣカードなどの携帯可能電子装置およびＩＣカードに関する。
【背景技術】
【０００２】
最近、携帯可能電子装置として、不揮発性メモリとしてのＥＥＰＲＯＭ、揮発性メモリとしてのＲＡＭ、これらのメモリに対してアクセス（データの読出しおよびまたは書込み等）を行なう制御素子としてのＣＰＵ、および、ＣＰＵの動作用プログラム等を格納したＲＯＭを有し、外部装置（ＩＣカードリーダ・ライタ）から供給されるコマンドに基づいてデータの入出力等を行なう手段を備えたＩＣチップを内蔵したＩＣカードが産業各方面で利用されている。
【０００３】
この種のＩＣカードにおいて、不揮発性メモリには、バイナリデータを１回だけ書込めて書換えができないバイナリファイル（データ領域）が定義されているとともに、当該ファイルの先頭アドレスおよび当該ファイルのファイルサイズが格納されている。そして、外部装置（ＩＣカードリーダ・ライタ）から入力されるバイナリデータを１回だけ書込む機能を有するライトバイナリ（WRITE BINARY）コマンドを受信すると、上記先頭アドレスおよびファイルサイズに基づき、当該コマンドにて指定されたバイナリファイル（データ領域）の先頭アドレスから、指定された長さのバイナリデータを書込む。
【０００４】
この場合、ライトバイナリコマンドは１回書込みのコマンドであるため、瞬間的なノイズなどでエラーが発生した場合などの書込みエラー時には、その箇所の書込みができなくなってしまうので、書込みエラーを示すステータスワードを外部装置（ＩＣカードリーダ・ライタ）へ出力する。  
このように、従来は、ライトバイナリコマンドによりバイナリデータの１回書込みを行なっている途中で書込みエラーが発生した場合、そのバイナリファイルは書込みが失敗した状態から回復できないので、当該ファイルを破棄するようになっている（たとえば、非特許文献１参照）。
【非特許文献１】国際標準化規格  ＩＳＯ／ＩＥＣ７８１６
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記した従来の技術では、書込みエラーが発生しても、書込みエラーを示すステータスワードを外部へ出力するだけで、当該バイナリファイル（データ領域）を再利用するような処理は行なっていない。  
したがって、瞬間的なノイズ等で書込みエラーが発生した場合には、書込み失敗ということで当該バイナリファイル（データ領域）が使用不可になってしまうという問題がある。
【０００６】
そこで、本発明は、１回だけデータの書込みが許可されたデータ領域に対してデータの書込みを行なっている途中で書込みエラーが発生しても、当該データ領域のエラー発生アドレスよりも後ろの領域を有効に利用できる携帯可能電子装置およびＩＣカードを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の携帯可能電子装置は、メモリを有し、このメモリには、１回だけデータの書込みが許可されたデータ領域が設定されているとともに、当該データ領域の先頭アドレスおよび当該データ領域のサイズが格納されていて、これら先頭アドレスおよびサイズに基づき当該データ領域に対するデータの書込みが行なわれる携帯可能電子装置であって、前記データ領域の先頭アドレスからデータを書込む途中でエラーが発生した場合、当該エラーが発生した際のアドレスから［前記データ領域の先頭アドレス＋１］の値を減算した値を前記データ領域のサイズから減算して得た値を再設定サイズとして前記メモリ内のデータ領域のサイズに設定するとともに、当該エラーが発生したアドレスの次のアドレスを再設定先頭アドレスとして前記メモリ内のデータ領域の先頭アドレスに設定することを特徴とする。
【０００８】
本発明の携帯可能電子装置は、データを記憶するためのメモリと、このメモリに対してデータの読出しおよびまたは書込みを行なう制御素子を有し、外部から入力されるコマンドに対応した処理を実行してその結果を外部へ出力するもので、前記メモリには、１回だけデータの書込みが許可されたデータ領域が設定されているとともに、当該データ領域の先頭アドレスおよび当該データ領域のサイズが格納されていて、これら先頭アドレスおよびサイズに基づき当該データ領域に対するデータの書込みが行なわれる携帯可能電子装置であって、外部から入力されるデータを１回だけ書込む機能を有するコマンドを受信すると、当該コマンドにて指定された長さのデータを前記データ領域の先頭アドレスから書込む書込み手段と、この書込み手段によるデータの書込み途中でエラーが発生した場合、当該エラーが発生した際のアドレスから［前記データ領域の先頭アドレス＋１］の値を減算した値を前記データ領域のサイズから減算して得た値を再設定サイズとして前記メモリ内のデータ領域のサイズに設定するサイズ再設定手段と、前記書込み手段によるデータの書込み途中でエラーが発生した場合、当該エラーが発生したアドレスの次のアドレスを再設定先頭アドレスとして前記メモリ内のデータ領域の先頭アドレスに設定する先頭アドレス再設定手段と、前記サイズ再設定手段および先頭アドレス再設定手段の処理が終了すると、エラー発生の応答を外部へ出力するエラー応答出力手段とを具備している。
【０００９】
また、本発明のＩＣカードは、データを記憶するためのメモリと、このメモリに対してデータの読出しおよびまたは書込みを行なう制御素子を有し、外部から入力されるコマンドに対応した処理を実行してその結果を外部へ出力するもので、前記メモリには、１回だけデータの書込みが許可されたデータ領域が設定されているとともに、当該データ領域の先頭アドレスおよび当該データ領域のサイズが格納されていて、これら先頭アドレスおよびサイズに基づき当該データ領域に対するデータの書込みが行なわれるＩＣカードであって、外部から入力されるデータを１回だけ書込む機能を有するコマンドを受信すると、当該コマンドにて指定された長さのデータを前記データ領域の先頭アドレスから書込む書込み手段と、この書込み手段によるデータの書込み途中でエラーが発生した場合、当該エラーが発生した際のアドレスから［前記データ領域の先頭アドレス＋１］の値を減算した値を前記データ領域のサイズから減算して得た値を再設定サイズとして前記メモリ内のデータ領域のサイズに設定するサイズ再設定手段と、前記書込み手段によるデータの書込み途中でエラーが発生した場合、当該エラーが発生したアドレスの次のアドレスを再設定先頭アドレスとして前記メモリ内のデータ領域の先頭アドレスに設定する先頭アドレス再設定手段と、前記サイズ再設定手段および先頭アドレス再設定手段の処理が終了すると、エラー発生の応答を外部へ出力するエラー応答出力手段とを有したＩＣモジュールと、このＩＣモジュールを収納したＩＣカード本体とを具備している。
【発明の効果】
【００１０】
本発明によれば、１回だけデータの書込みが許可されたデータ領域に対してデータの書込みを行なっている途中で書込みエラーが発生しても、当該データ領域のエラー発生アドレスよりも後ろの領域を有効に利用できる携帯可能電子装置およびＩＣカードを提供できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図面を参照して説明する。  
まず、第１の実施の形態について説明する。  
図１は、本発明に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すものである。このＩＣカードシステムは、ＩＣカード１１をカードリーダ・ライタ１２を介してパーソナルコンピュータなどの端末装置１３と接続可能にするとともに、端末装置１３にキーボード１４、ＣＲＴ表示部１５、プリンタ１６を接続して構成される。
【００１２】
図２は、ＩＣカード１１の構成を示すもので、制御素子としてのＣＰＵ１０１、記憶内容が書換え可能な記憶手段（メモリ）としてのデータメモリ１０２、ワーキングメモリ１０３、プログラムメモリ１０４、および、カードリーダ・ライタ１２との電気的接触を得るためのコンタクト部１０５によって構成されている。そして、これらのうち、破線内の部分（ＣＰＵ１０１、データメモリ１０２、ワーキングメモリ１０３、プログラムメモリ１０４）は１つ（あるいは複数）のＩＣチップ１０６で構成され、さらに、このＩＣチップ１０６とコンタクト部１０５とが一体的にＩＣモジュール化されて、ＩＣカード本体１１ａ内に埋設されている。
【００１３】
データメモリ１０２は、たとえば、ＥＥＰＲＯＭなどの記憶内容が書換え可能な不揮発性メモリで構成されていて、各種アプリケーションデータなどがファイル構造で記憶される。  
たとえば、データメモリ１０２には、バイナリデータを１回だけ書込めて書換えができないバイナリファイル（データ領域）が少なくとも１つ定義されているとともに、当該バイナファイルに対する定義情報が格納（記憶）されている。この定義情報は、たとえば、図３に示すように、少なくとも当該ファイルの先頭アドレス（以降、データ領域先頭アドレスと称す）および当該ファイルのファイルサイズから構成されている。  
ここに、上記データ領域先頭アドレスは、当該ファイルのバイナリデータが格納されている領域の先頭アドレスを表す。上記ファイルサイズは、当該ファイルのバイナリデータが格納可能な大きさを表す。
【００１４】
ワーキングメモリ１０３は、ＣＰＵ１０１が処理を行なう際の処理データなどを一時的に保持するための作業用メモリであり、たとえば、ＲＡＭなどで構成される。  
プログラムメモリ１０４は、たとえば、マスクＲＯＭなどの記憶内容が書換え不可能な不揮発性メモリで構成されており、ＣＰＵ１０１の制御プログラムなどを記憶するものである。
【００１５】
図４は、ライトバイナリ（WRITE BINARY）コマンドのフォーマットを示すものである。ライトバイナリコマンドは、コマンドを識別する機能などを持つ分類部（ＣＬＡ：ｃｌａｓｓ）、命令部（ＩＮＳ：ｉｎｓｔｒｕｃｔｉｏｎ）、パラメータデータ（Ｐ１、Ｐ２）、書込むデータの長さを表すデータ長（Ｌｃ）、および、書込みデータ（ＤＡＴＡ）から構成されている。
【００１６】
次に、このような構成において、第１の実施の形態に係るライトバイナリコマンドに対するデータ書込み処理について図５に示すフローチャートを参照して説明する。  
ＣＰＵ１０１は、カードリーダ・ライタ１２から入力されるライトバイナリコマンドを受信すると（ステップＳ１）、当該コマンドとしての正当性を確認すべく、コマンドフォーマットのチェックを行なう（ステップＳ２、Ｓ３）。このチェックでは、当該コマンドのＣＬＡ部およびＩＮＳ部がライトバイナリコマンドを示すものかどうかを確認し、Ｐ１部およびＰ２部が機能外に設定されていないかを確認し、Ｌｃ部が「００」などの規定外に設定されていないかを確認し、ＤＡＴＡ部がＬｃ部で示されるデータ長のデータ列であるかを確認する。
【００１７】
ステップＳ２、Ｓ３におけるチェックの結果、フォーマットに異常が発見された場合、ＣＰＵ１０１は、フォーマットエラーを示すステータスワードを設定して（ステップＳ４）、その出力処理を実行し（ステップＳ５）、当該データ書込み処理を終了する。
【００１８】
ステップＳ２、Ｓ３におけるチェックの結果、フォーマットに異常が発見されなかった場合、ＣＰＵ１０１は、当該コマンドのＰ１部およびＰ２部によって指定されたバイナリファイル（データ領域）をデータメモリ１０２内から検索し（ステップＳ６、Ｓ７）、指定されたバイナリファイルが発見できない場合は指定ファイル無しエラーを示すステータスワードを設定して（ステップＳ８）、その出力処理を実行し（ステップＳ５）、当該データ書込み処理を終了する。
【００１９】
指定されたバイナリファイルが発見できた場合、ＣＰＵ１０１は、当該ファイルの定義情報の先頭アドレスを取得し、当該ファイルのファイルタイプをチェックする（ステップＳ９、Ｓ１０）。このチェックの結果、ファイルタイプがバイナリではない場合、ＣＰＵ１０１は、ファイルタイプエラーを示すステータスワードを設定して（ステップＳ１１）、その出力処理を実行し（ステップＳ５）、当該データ書込み処理を終了する。
【００２０】
ステップＳ９、Ｓ１０におけるチェックの結果、ファイルタイプがバイナリである場合、ＣＰＵ１０１は、当該バイナリファイルに対しライトバイナリコマンドのＤＡＴＡ部に格納されたバイナリデータを書込む（ステップＳ１２）。このデータ書込みは、データメモリ１０２内の当該ファイルの定義情報の先頭アドレスおよびファイルサイズに基づき、当該ファイルの先頭アドレスから行なわれる。
【００２１】
ＣＰＵ１０１は、このデータ書込み処理の実行中に書込みエラーが発生したか否かをチェックし（ステップＳ１３）、何らかの書込みエラーが発生した場合は、後述する書込み失敗処理を実行し（ステップＳ１４）、その後、当該書込み失敗処理で設定された書込みエラーを示すステータスワードの出力処理を実行し（ステップＳ５）、当該データ書込み処理を終了する。
【００２２】
ステップＳ１３におけるチェックの結果、何のエラーも無く書込み処理を終了した場合、ＣＰＵ１０１は、書込み正常終了を示すステータスワードを設定して（ステップＳ１５）、その出力処理を実行し（ステップＳ５）、当該データ書込み処理を終了する。
【００２３】
次に、図５のステップＳ１４における書込み失敗処理について図６に示すフローチャートを参照して説明する。  
ＣＰＵ１０１は、まず、当該バイナリファイルの定義情報を参照することで、［ファイルサイズ−（エラー発生アドレス−（データ領域先頭アドレス＋１））］の値を求め（ステップＳ２１）、この求めた値を再設定ファイルサイズ（再設定サイズ）として、当該バイナリファイルの定義情報内のファイルサイズに設定する（ステップＳ２２）。ここに、上記エラー発生アドレスは、当該バイナリファイルの書込みエラーが発生した際のアドレスを表す。
【００２４】
次に、ＣＰＵ１０１は、（エラー発生アドレス＋１）の値を求め（ステップＳ２３）、この求めた値を再設定先頭アドレスとして、当該バイナリファイルの定義情報内のデータ領域先頭アドレスに設定する（ステップＳ２４）。その後、書込みエラーを示すステータスワードを設定して（ステップＳ２５）、メイン処理に戻る。
【００２５】
なお、書込み失敗処理を行なった後に更新処理を行なう場合には、変更したデータ領域先頭アドレスとファイルサイズの値にしたがって、更新処理を行なう。
【００２６】
このように、第１の実施の形態によれば、エラー発生時のアドレスの次のアドレスを再設定先頭アドレスとして当該ファイルのデータ領域先頭アドレスに設定するとともに、エラーが発生したバイトまでのバイト数をファイルサイズから減算し、その減算結果を再設定ファイルサイズとして当該ファイルのファイルサイズに設定することにより、バイナリデータを書込むライトバイナリコマンドの実行時に書込みエラーが発生しても、エラー発生アドレスよりも後ろのファイル領域を有効に利用できる。
【００２７】
次に、第２の実施の形態について説明する。  
図７は、データメモリ１０２に格納（記憶）されるバイナリファイル（データ領域）の定義情報を示している。第２の実施の形態に係る定義情報は、たとえば、少なくとも当該ファイルの先頭アドレス、当該ファイルのファイルサイズ、当該ファイルを複数のページ単位に分割した１ページ当たりのバイト数、当該ファイルの書込み完了ページ番号、および、当該ファイルのデータ書込み状態を示す書込み状態フラグから構成されている。  
ここに、上記１ページ当たりのバイト数は、書込みを行なう際のページ単位として何バイトを設定するかを表す。上記書込み完了ページ番号は、何ページまで書込みを完了したかを表す。上記書込み状態フラグは、当該ファイルが書込み前の状態か、書込み中の状態か、書込み完了した状態かを表す。
【００２８】
次に、このような構成において、第２の実施の形態に係るライトバイナリコマンドに対するデータ書込み処理について図８に示すフローチャートを参照して説明する。  
ＣＰＵ１０１は、カードリーダ・ライタ１２から入力されるライトバイナリコマンドを受信すると（ステップＳ３１）、当該コマンドとしての正当性を確認すべく、コマンドフォーマットのチェックを行なう（ステップＳ３２、Ｓ３３）。このチェックでは、当該コマンドのＣＬＡ部およびＩＮＳ部がライトバイナリコマンドを示すものかどうかを確認し、Ｐ１部およびＰ２部が機能外に設定されていないかを確認し、Ｌｃ部が「００」などの規定外に設定されていないかを確認し、ＤＡＴＡ部がＬｃ部で示されるデータ長のデータ列であるかを確認する。
【００２９】
ステップＳ３２、Ｓ３３におけるチェックの結果、フォーマットに異常が発見された場合、ＣＰＵ１０１は、フォーマットエラーを示すステータスワードを設定して（ステップＳ３４）、その出力処理を実行し（ステップＳ３５）、当該データ書込み処理を終了する。
【００３０】
ステップＳ３２、Ｓ３３におけるチェックの結果、フォーマットに異常が発見されなかった場合、ＣＰＵ１０１は、当該コマンドのＰ１部およびＰ２部によって指定されたバイナリファイル（データ領域）をデータメモリ１０２内から検索し（ステップＳ３６、Ｓ３７）、指定されたバイナリファイルが発見できない場合は指定ファイル無しエラーを示すステータスワードを設定して（ステップＳ３８）、その出力処理を実行し（ステップＳ３５）、当該データ書込み処理を終了する。
【００３１】
指定されたバイナリファイルが発見できた場合、ＣＰＵ１０１は、当該ファイルの定義情報の先頭アドレスを取得し、当該ファイルのファイルタイプをチェックする（ステップＳ３９、Ｓ４０）。このチェックの結果、ファイルタイプがバイナリではない場合、ＣＰＵ１０１は、ファイルタイプエラーを示すステータスワードを設定して（ステップＳ４１）、その出力処理を実行し（ステップＳ３５）、当該データ書込み処理を終了する。
【００３２】
ステップＳ３９、Ｓ４０におけるチェックの結果、ファイルタイプがバイナリである場合、ＣＰＵ１０１は、当該バイナリファイルの定義情報内の書込み状態フラグをチェックする（ステップＳ４２、Ｓ４３）。このチェックの結果、書込み状態フラグが書込み完了を示している場合、ＣＰＵ１０１は、ファイル状態未対応を示すステータスワードを設定して（ステップＳ４４）、その出力処理を実行し（ステップＳ３５）、当該データ書込み処理を終了する。
【００３３】
ステップＳ４２、Ｓ４３におけるチェックの結果、書込み状態フラグが書込み中を示している場合、ＣＰＵ１０１は、後述する書込み失敗処理を実行し（ステップＳ４５）、その後、後述する書込み処理を実行する（ステップＳ４６）。その後、当該書込み処理で設定された書込み正常終了を示すステータスワードの出力処理を実行し（ステップＳ３５）、当該データ書込み処理を終了する。
【００３４】
ステップＳ４２、Ｓ４３におけるチェックの結果、書込み状態フラグが書込み前を示している場合、ＣＰＵ１０１は、後述する書込み処理を実行し（ステップＳ４６）、その後、当該書込み処理で設定された書込み正常終了を示すステータスワードの出力処理を実行し（ステップＳ３５）、当該データ書込み処理を終了する。
【００３５】
次に、図８のステップＳ４５における書込み失敗処理について図９に示すフローチャートを参照して説明する。  
ＣＰＵ１０１は、まず、当該バイナリファイルの定義情報を参照することで、［ファイルサイズ−（１ページ当たりのバイト数Χ（書込み完了ページ番号＋１））の値を求め（ステップＳ５１）、この求めた値を再設定ファイルサイズ（再設定サイズ）として、当該バイナリファイルの定義情報内のファイルサイズに設定する（ステップＳ５２）。
【００３６】
次に、ＣＰＵ１０１は、［データ領域先頭アドレス＋（１ページ当たりのバイト数Χ（書込み完了ページ番号＋１））］の値を求め（ステップＳ５３）、この求めた値を再設定先頭アドレスとして、当該バイナリファイルの定義情報内のデータ領域先頭アドレスに設定する（ステップＳ５４）。
【００３７】
次に、ＣＰＵ１０１は、当該バイナリファイルの定義情報内の書込み完了ページ番号をクリアし（ステップＳ５５）、その後、当該バイナリファイルの定義情報内の書込み状態フラグを書込み前に設定し（ステップＳ５６）、メイン処理に戻る。
【００３８】
次に、図８のステップＳ４６における書込み処理について図１０に示すフローチャートを参照して説明する。  
ＣＰＵ１０１は、まず、当該バイナリファイルの定義情報を参照することで、書込み状態フラグを書込み中に設定し（ステップＳ６１）、その後、当該バイナリファイルに対しライトバイナリコマンドのＤＡＴＡ部に格納されたバイナリデータの１ページ当たりのバイト数分のデータを書込む（ステップＳ６２）。このデータ書込みは、データメモリ１０２内の当該ファイルの定義情報に基づき、当該ファイルの先頭アドレスから行なわれる。
【００３９】
次に、ＣＰＵ１０１は、当該バイナリファイルの定義情報内の書込み完了ページ番号を「＋１」し（ステップＳ６３）、その後、当該データ書込み処理の実行中に書込みエラーが発生したか否かをチェックし（ステップＳ６４）、何らかの書込みエラーが発生した場合、書込みエラーを示すステータスワードを設定し（ステップＳ６５）、メイン処理に戻る。
【００４０】
ステップＳ６４におけるチェックの結果、何のエラーも無く書込み処理を終了した場合、ＣＰＵ１０１は、書込みバイト数を「−２」し（ステップＳ６６）、書込みデータを書込み終了分（２バイト）詰める（ステップＳ６７）。
【００４１】
次に、ＣＰＵ１０１は、書込みデータ長が「０」以下か否かをチェックし（ステップＳ６８）、書込みデータ長が「０」以下でない場合はステップＳ６２に戻って上記同様な動作を繰り返す。
【００４２】
ステップＳ６８におけるチェックの結果、書込みデータ長が「０」以下である場合、ＣＰＵ１０１は、当該バイナリファイルの定義情報内の書込み状態フラグを書込み完了に設定し（ステップＳ６９）、その後、書込み正常終了を示すステータスワードを設定して（ステップＳ７０）、メイン処理に戻る。
【００４３】
なお、書込み失敗処理を行なった後に更新処理を行なう場合には、変更したデータ領域先頭アドレスとファイルサイズの値にしたがって、更新処理を行なう。
【００４４】
このように、第２の実施の形態によれば、あらかじめ書込み前に書込み完了ページを記憶するため、たとえば、セットされたＩＣカードをカードリーダ・ライタ１２から引き抜かれる等のエラー検知後に、どのページでエラーが発生したのかを把握することができる。よって、不正領域に対しての対処が可能になり、かつ、第１の実施の形態と同様、使用可能データ領域と不正データ領域とを切り分けることで、バイナリファイルを有効に利用することができる。
【００４５】
なお、前記実施の形態では、携帯可能電子装置として接触式のＩＣカードに適用した場合について説明したが、本発明はこれに限定されるものではなく、非接触式のＩＣカードなどへの応用も可能であり、また、ＰＤＡと称される携帯端末装置や携帯電話機などであっても適用でき、さらに、携帯可能電子装置の形状もカード型に限らず、冊子型、ブロック型あるいはタグ型など、他の形状であってもよい。
【図面の簡単な説明】
【００４６】
【図１】本発明に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すブロック図。
【図２】ＩＣカードの構成を概略的に示すブロック図。
【図３】第１の実施の形態に係るバイナリファイル（データ領域）の定義情報を示す図。
【図４】ライトバイナリコマンドのフォーマットを示す模式図。
【図５】第１の実施の形態に係るライトバイナリコマンドに対するデータ書込み処理について説明するフローチャート。
【図６】図５のステップＳ１４における書込み失敗処理について説明するフローチャート。
【図７】第２の実施の形態に係るバイナリファイル（データ領域）の定義情報を示す図。
【図８】第２の実施の形態に係るライトバイナリコマンドに対するデータ書込み処理について説明するフローチャート。
【図９】図８のステップＳ４５における書込み失敗処理について説明するフローチャート。
【図１０】図８のステップＳ４６における書込み処理について説明するフローチャート。
【符号の説明】
【００４７】
１１…ＩＣカード（携帯可能電子装置）、１１ａ…ＩＣカード本体、１２…カードリーダ・ライタ、１３…端末装置、１４…キーボード、１５…ＣＲＴ表示部、１６…プリンタ、１０１…ＣＰＵ（制御素子）、１０２…データメモリ（記憶手段）、１０３…ワーキングメモリ、１０４…プログラムメモリ、１０５…コンタクト部、１０６…ＩＣチップ。
【図１】
2007114961.tif 000003
【図２】
2007114961.tif 000004
【図３】
2007114961.tif 000005
【図４】
2007114961.tif 000006
【図５】
2007114961.tif 000007
【図６】
2007114961.tif 000008
【図７】
2007114961.tif 000009
【図８】
2007114961.tif 000010
【図９】
2007114961.tif 000011
【図１０】
2007114961.tif 000012