(57)【要約】【課題】記憶媒体装置に記憶されるファイルにおける単位データについての書き込み結果の管理を、記憶媒体装置自体で行えるようにする。【解決手段】書込完了識別情報が対応付けられた単位データを１以上含むファイルが記憶される記憶媒体と、データ書込装置と通信する通信部と、データ書込装置からのデータ書込の指示に応じて記憶媒体に対する単位データの書き込みが行われたことに応じて、書き込まれた単位データに対応する書込完了識別情報を、書き込みが行われていないことを示す状態から書き込み完了を示す状態に書き換える識別情報制御部とを備えて記憶媒体装置を構成する。【選択図】図３
2018049389.tif 000002
【特許請求の範囲】
【請求項１】
書込完了識別情報が対応付けられた単位データを１以上含むファイルが記憶される記憶媒体と、
データ書込装置と通信する通信部と、
前記データ書込装置からのデータ書込の指示に応じて前記記憶媒体に対する単位データの書き込みが行われたことに応じて、書き込まれた単位データに対応する書込完了識別情報を、書き込みが行われていないことを示す状態から書き込み完了を示す状態に書き換える識別情報制御部と
を備える記憶媒体装置。
【請求項２】
記憶媒体装置の状態遷移にあたり、前記状態遷移に必要な全ての単位データの書き込みが完了しているか否かを前記書込完了識別情報に基づいて判定し、前記全ての単位データの書き込みが完了していないことを判定した場合に前記状態遷移を禁止し、前記全ての単位データの書き込みが完了していることを判定した場合に前記状態遷移を許可する状態遷移制御部をさらに備える
請求項１に記載の記憶媒体装置。
【請求項３】
前記データ書込装置からのデータ書込の指示に対応して書込対象とされた単位データについて書き込みが完了しているか否かを前記書込完了識別情報に基づいて判定し、書き込みが完了していないことを判定した場合にデータの書き込みを行い、書き込みが完了していることを判定した場合にデータの書き込みを行わないようにされたデータ書込部をさらに備える
請求項１または２に記載の記憶媒体装置。
【請求項４】
書込完了識別情報が対応付けられた単位データを１以上含むファイルが記憶される記憶媒体と、データ書込装置と通信する通信部とを備える記憶媒体装置としてのコンピュータを、
前記データ書込装置により前記記憶媒体に対する単位データの書き込みが行われたことに応じて、書き込まれた単位データに対応する書込完了識別情報を、書き込みが行われていないことを示す状態から書き込み完了を示す状態に書き換える識別情報制御部
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶媒体装置及びプログラムに関する。
【背景技術】
【０００２】
ＩＣ（Integrated Circuit）カードの発行段階において、ＩＣカード発行機（データ書込装置）によりＩＣカードに対してデータを書き込むことが行われる（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２０６７６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＩＣカードに記憶されるファイルのデータは、さらにレコードと呼ばれる１以上の単位データの領域に対して格納される構造を有する。しかしながら、ＩＣカードにおけるデータの書き込み可否に関する制御はファイル単位で行われている。このため、レコード単位でのデータの書き込みに関してエラーが生じていたとしても、このことをＩＣカードにて把握することができない。このような事情から、レコード単位でのデータの書き込みに関するエラーの発生に対してデータ書込装置側で把握できないような場合には、データの記憶状態に不備のあるＩＣカードが発行されることになる。
【０００５】
本発明は、このような事情に鑑みてなされたもので、記憶媒体装置に記憶されるファイルにおける単位データについての書き込み結果の管理を、記憶媒体装置自体で行えるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決する本発明の一態様は、書込完了識別情報が対応付けられた単位データを１以上含むファイルが記憶される記憶媒体と、データ書込装置と通信する通信部と、前記データ書込装置からのデータ書込の指示に応じて前記記憶媒体に対する単位データの書き込みが行われたことに応じて、書き込まれた単位データに対応する書込完了識別情報を、書き込みが行われていないことを示す状態から書き込み完了を示す状態に書き換える識別情報制御部とを備える記憶媒体装置である。
【０００７】
上述した課題を解決する本発明の一態様は、書込完了識別情報が対応付けられた単位データを１以上含むファイルが記憶される記憶媒体と、データ書込装置と通信する通信部とを備える記憶媒体装置としてのコンピュータを、前記データ書込装置により前記記憶媒体に対する単位データの書き込みが行われたことに応じて、書き込まれた単位データに対応する書込完了識別情報を、書き込みが行われていないことを示す状態から書き込み完了を示す状態に書き換える識別情報制御部として機能させるためのプログラムである。
【発明の効果】
【０００８】
以上説明したように、本発明によれば、記憶媒体装置に記憶されるファイルにおける単位データについての書き込み結果の管理を、記憶媒体装置自体で行えるようになるという効果が得られる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態におけるＩＣカードが備える記憶媒体の記憶領域についてのメモリマッピング例を示す図である。
【図２】本実施形態の記憶媒体に記憶されるファイルの構造例を示す図である。
【図３】本実施形態における書込完了フラグの状態遷移例を示す図である。
【図４】本実施形態における書込完了フラグの状態遷移として、ファイルに格納されるレコードが３つである場合の例を示す図である。
【図５】本実施形態におけるＩＣカードの構成例を示す図である。
【図６】本実施形態のＩＣカードが実行する処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本実施形態について説明する。
［ＩＣカードの記憶媒体におけるデータ構造］
以下、本発明の実施形態としてのＩＣカード（記憶媒体装置の一例）について図面を参照して説明する。
本実施形態のＩＣカードは、内部に記憶媒体を備え、ＩＣカード発行装置やリーダライタなどの外部通信装置と通信が可能に構成される。ＩＣカードは、外部通信装置との通信により、外部通信装置の制御に応じて、記憶媒体に対するデータの書き込み、あるいは読み出しを実行する。
【００１１】
ＩＣカードの記憶媒体にはファイル単位でデータが管理される。図１は、本実施形態のＩＣカードが備える記憶媒体１０３の記憶領域についてのマッピング例を示している。同図に示すように、記憶媒体１０３の記憶領域は、ファイル管理領域ＡＲ１、システム領域ＡＲ２及びユーザデータ領域ＡＲ３を備える。
【００１２】
ファイル管理領域ＡＲ１は、システム領域ＡＲ２やユーザデータ領域ＡＲ３に記憶されるデータをファイル単位で管理するファイル管理情報が記憶される領域である。一例として本実施形態におけるファイル管理領域ＡＲ１には、ＦＡＴ（File Allocation Table）ファイルシステムに対応したファイル管理情報が格納されればよい。
【００１３】
システム領域ＡＲ２は、ＯＳ（Operating System）や各種設定情報などをはじめとするシステム情報が記憶される領域である。
ユーザデータ領域ＡＲ３は、アプリケーションが使用するユーザデータが記憶される領域である。ファイルのデータは、ユーザデータ領域ＡＲ３に記憶される。
なお、記憶媒体１０３の記憶領域においては、ファイル管理領域ＡＲ１、システム領域ＡＲ２及びユーザデータ領域ＡＲ３以外の領域が含まれていてもよい。
【００１４】
図２は、ファイルＦＬの構造例を示している。同図に示すように、ファイルＦＬは、ファイルヘッダとデータ領域とを含む構造である。
ファイルヘッダには、ファイルに関連する所定のパラメータが格納される。
データ領域には、ファイルとしてのデータが格納される。本実施形態において、データ領域に格納されるファイルは、固定長によるレコードが配置されるレコード構造を有する。このようなレコード構造においては、レコードごとにデータ（レコードデータ：単位データの一例）が格納される。レコードに格納されるレコードデータは、以下に例示するように、それぞれ所定の定義に従った内容を有する。即ち、１つのファイルは１以上のレコードを含み、各レコードには、例えば所定の定義に従った種別のデータが格納される。
本実施形態においては、ファイルＦＬのデータ領域に格納可能なレコード数が最大で「８」とされている場合を例に挙げる。同図においては、ファイルＦＬのデータ領域において、格納可能なレコードの最大数に対応する８個のレコード＃１〜＃８が格納された例を示している。
【００１５】
また、本実施形態では、ファイルヘッダにおける所定の位置に書込完了フラグエリアＦＬＡが配置される。
図３を参照して、図２のファイルＦＬに対応する書込完了フラグエリアＦＬＡの例について説明する。図３（Ａ）に示されるように、書込完了フラグエリアＦＬＡは、ビット位置ｂ１〜ｂ８ごとに対応する各１ビットの書込完了フラグが８個配置されて形成される。ビット位置ｂ１〜ｂ８ごとに対応する書込完了フラグが、それぞれ、レコード＃１〜＃８に対応付けられている。
書込完了フラグは、対応のレコードに対するレコードデータの書き込みが完了したか否かを示す。以降の説明において、本実施形態の書込完了フラグは、「０」により書き込みが完了していないことを示し、「１」により書き込みが完了したことを示すように定義されている場合を例に挙げる。
【００１６】
例えばＩＣカードがＩＣカード発行装置とセッションを開始する直前の段階においては、図３（Ａ）に示すように、８個の書込完了フラグは全て「０」にリセットされた初期状態となっている。
そして、ＩＣカード発行装置によりファイルＦＬの書き込みが指示されると、ＩＣカードは、記憶媒体１０３に対してファイルＦＬのデータの書き込みを行う。この際、ＩＣカードは、書込対象のファイルＦＬのデータ領域に配置されるレコードの領域に対して、ＩＣカード発行装置の指定に応じて、順次、レコードデータの書き込みを行う。
そして、ＩＣカードは、上記のようにデータの書き込みを実行していく過程において、レコードに対するレコードデータの書き込みを完了するごとに、レコードデータの書き込みが完了されたレコードに対応する書込完了フラグを「０」から「１」に書き換える。この結果、ファイルＦＬにおけるレコード＃１〜＃８の８つのレコードごとに対応するレコードデータの書き込みが全て成功すれば、図３（Ｂ）のように、ビット位置ｂ１〜ｂ８ごとのビットによる８つの書込完了フラグの全てが「１」となる状態が得られる。つまり、書込完了フラグエリアＦＬＡにおけるビット位置ｂ１〜ｂ８の書込完了フラグによって、レコード＃１〜＃８の全てに対するレコードデータの書き込みが完了したことが示される。
【００１７】
一方、図示は省略するが、ファイルＦＬ単位に対応する書き込みが完了した段階で、レコード＃１〜＃８のうちでレコードデータの書き込みが行われなかったものがあった場合、書き込みが行われなかったレコードに対応するビット位置の書込完了フラグについては「０」のままである。具体的に、レコード＃１〜＃８のうち、レコード＃３のみがレコードデータの書き込みが行われなかった場合、ビット位置ｂ１、ｂ２、ｂ４〜ｂ８の書込完了フラグについてはそれぞれ「１」であるが、ビット位置ｂ３の書込完了フラグについてはそれぞれ「０」の状態となる。この場合、書込完了フラグエリアＦＬＡにおけるビット位置ｂ１〜ｂ８の書込完了フラグによって、レコード＃１、＃２、＃４〜＃８についてはレコードデータの書き込みが完了したが、レコード＃３についてはレコードデータの書き込みが行われていないことが示される。
【００１８】
また、ファイルＦＬにおいて格納可能なレコードの最大数が８個である場合において、ファイルＦＬが８個未満のレコードを格納する場合に対応する書込完了フラグエリアＦＬＡの例について説明する。
図４は、一具体例として、ファイルＦＬが３つのレコードを格納する場合に対応する書込完了フラグエリアＦＬＡの例が示されている。このようにファイルＦＬが格納するレコード数が３つとされて８個より少ない場合においても、書込完了フラグエリアＦＬＡは、格納可能なレコードの最大数に対応させて８ビットにより形成される。
そのうえで、書込完了フラグの初期状態においては、図４（Ａ）に示すようにビット位置ｂ１〜ｂ８の各書込完了フラグがリセットされる。つまり、ビット位置ｂ１〜ｂ３に対応する３ビットの書込完了フラグについてはそれぞれ「０」がセットされ、書き込みが完了していないことを示す。一方、レコードが対応しないビット位置ｂ４〜ｂ８に対応する５ビットの書込完了フラグについてはそれぞれ「１」がセットされる。つまり、初期化段階にて既に書き込みが完了していることが示されるようにすることで無効化が図られる。
【００１９】
そして、或る１つのファイルＦＬに対するデータの書き込みがＩＣカード発行装置により指示されたことに応じて、ＩＣカードは、指定されたファイルＦＬのデータの書き込みにあたり、３つのレコードのレコードデータを書き込む。この結果、図４（Ａ）に示す初期状態の書込完了フラグエリアＦＬＡは、図４（Ｂ）に示すように、ビット位置ｂ１〜ｂ３の３ビットの書込完了フラグがそれぞれ「０」から「１」に書き換えられたことで、ビット位置ｂ１〜ｂ８の全てに対応する書込完了フラグが「１」となる。これにより、書込完了フラグエリアＦＬＡの書込完了フラグにより、ファイルＦＬにおける全てのレコードに対する書き込みを完了したことが示される。
【００２０】
一方、図示は省略するが、ファイルＦＬのデータ書き込みが完了した段階で、レコード＃１〜＃３のうちでレコードデータの書き込みが行われなかったものがあった場合、書き込みが行われなかったレコードに対応するビット位置の書込完了フラグについては「０」のままであり、レコードデータの書き込みが行われていないことが示される。
【００２１】
上記図３、図４の書込完了フラグエリアＦＬＡは、ファイルＦＬに格納可能なレコードの最大数に応じたビット数による固定長である。しかしながら、書込完了フラグエリアは、例えばファイルＦＬに格納されるレコード数に応じたビット数を有する可変長であってもよい。
【００２２】
なお、書込完了フラグエリアＦＬＡにおける各書込完了フラグの値は、例えば、ＩＣカード発行装置との通信が確立した状態のもとで実行されるセッションが完了した段階で初期状態に戻されるように初期化が行われる。あるいは、書込完了フラグエリアＦＬＡにおける各書込完了フラグの初期化は、例えばＩＣカード発行装置との通信の確立に応じてセッションが開始されるまでの所定の段階で行われるようにしてもよい。
また、書込完了フラグエリアＦＬＡは、図２に示したようにファイルＦＬのファイルヘッダに格納されている。つまり、図２の書込完了フラグエリアＦＬＡは、ファイルＦＬの構造内に格納された例を示している。
しかしながら、例えば書込完了フラグエリアＦＬＡは、ファイルＦＬとの関連付けが為されたうえで、ファイルＦＬに含まれない個別の情報として記憶媒体１０３における所定の領域に格納されるようにしてよい。この場合において、書込完了フラグエリアＦＬＡは、揮発性のＲＡＭ領域に格納されるようにしてよい。このように不揮発性の領域に書込完了フラグエリアＦＬＡの領域を設定することで、例えばトランザクションが完了してＩＣカード発行装置との通信が切断されて、ＩＣカードへの電源供給が停止することに応じて、書込完了フラグエリアＦＬＡにおける各書込完了フラグの値をリセットすることができる。
【００２３】
［ＩＣカードの構成例］
続いて、図５を参照して、本実施形態におけるＩＣカード１００の構成例について説明する。同図においては、ＩＣカード１００とともに、ＩＣカード発行装置２００（データ書込装置の一例）が示されている。
【００２４】
先に、ＩＣカード発行装置２００について説明する。ＩＣカード発行装置２００は、ＩＣカード１００の発行に関連する発行処理を行う装置である。ＩＣカード発行装置２００は、発行処理として、ＩＣカード１００が備える記憶媒体１０３に、ファイルＦＬのデータが格納されるファイル格納領域を作成するファイル生成を実行することができる。そのうえで、ＩＣカード発行装置２００は、ファイル生成により作成されたファイル格納領域にファイルのデータを書き込むことができる。ＩＣカード発行装置２００は、ファイルＦＬのデータの書き込みに際して、ユーザデータ領域ＡＲ３のデータについては、レコード単位で指定を行ってデータ（レコードデータ）の書き込みを行う。
【００２５】
次に、同図のＩＣカード１００について説明する。同図のＩＣカード１００は、通信部１０１、制御部１０２及び記憶媒体１０３を備える。
通信部１０１は、ＩＣカード発行装置２００と通信を実行する。
制御部１０２は、ＩＣカード１００における各種制御を実行する。制御部１０２としての機能は、例えばＩＣカード１００が備えるＣＰＵ（Central Processing Unit）が、記憶媒体１０３に記憶されたプログラムを実行することにより実現される。
本実施形態における制御部１０２は、記憶媒体１０３に記憶されるデータの書き込みに関連する機能部として、データ書込部１２１、識別情報制御部１２２、及び状態遷移制御部１２３を備える。
【００２６】
データ書込部１２１は、ＩＣカード発行装置２００から送信されるコマンドに応じて、記憶媒体１０３に対するデータの書き込みを実行する。この際、データ書込部１２１は、ファイルＦＬにおけるユーザデータ領域ＡＲ３については、レコード単位でレコードデータの書き込みを行う。そのうえで、本実施形態のデータ書込部１２１は、ＩＣカード発行装置２００からのデータ書き込みの指示に対応して書込対象とされたレコードデータについて書き込みが完了している状態にあるか否かを書込完了フラグ（書込完了識別情報の一例）に基づいて判定する。データ書込部１２１は、書き込みが完了していないことを判定した場合にデータの書き込みを行い、書き込みが完了していることを判定した場合にデータの書き込みを行わないようにする。
【００２７】
識別情報制御部１２２は、ＩＣカード発行装置２００からのデータ書き込みの指示に応じて記憶媒体１０３に対するレコードデータの書き込みが行われたことに応じて、書き込まれたレコードデータに対応する書込完了フラグを、書き込みが行われていないことを示す状態から書き込み完了を示す状態に書き換える。
【００２８】
状態遷移制御部１２３は、ＩＣカード１００の状態遷移を制御する。ここで、状態遷移制御部１２３が制御する「状態」は、１セッションにおけるＩＣカード発行装置２００からのコマンド等に対応して設定されるＩＣカード１００の状態（ステイタス）であり、例えば１セッションにおいて「idle（0x00）」、「select（0x01）」、「Write Complete（0x02）」・・・「end（0xXX）」のように遷移する。
状態遷移制御部１２３は、状態遷移に必要な全てのレコードへのレコードデータの書き込みが完了しているか否かを書込完了フラグに基づいて判定し、全てのレコードへのレコードデータの書き込みが完了していないことを判定した場合に状態遷移を禁止し、全てのレコードへのレコードデータの書き込みが完了していることを判定した場合に状態遷移を許可する。
【００２９】
記憶媒体１０３は、制御部１０２が利用する各種の情報を記憶する。前述のように、本実施形態の記憶媒体１０３は、図１に示した領域の設定が行われたうえで、図２に示した構造のファイルを記憶する。なお、記憶媒体１０３が対応するハードウェアは、例えばＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）やフラッシュメモリなどであればよい。
【００３０】
［処理手順例］
続いて、図６のフローチャートを参照して、本実施形態におけるＩＣカード１００が実行する処理手順例について説明する。同図の処理は、ＩＣカード１００がセッション内で或る１のコマンドに応じて実行するシーケンスに対応する。
【００３１】
ＩＣカード１００においてデータ書込部１２１は、ＩＣカード発行装置２００から受信したコマンドに対応するコマンド実行条件について確認する（ステップＳ１０１）。コマンド実行条件の確認にあたり、データ書込部１２１は、今回受信されたコマンドコードに対応するコマンド実行条件フラグの値を参照する。コマンド実行条件フラグは、対応のコマンドコードごとに対応して実行可能あるいは実行不可のいずれかを示す。
【００３２】
データ書込部１２１は、ステップＳ１０１によりコマンド実行条件を確認した結果、コマンドに応答した処理を実行可能であるか否かについて判定する（ステップＳ１０２）。
コマンドに応答した処理を実行可能である場合（ステップＳ１０２−ＹＥＳ）、データ書込部１２１は、コマンドに対する応答として書込対象となるファイルＦＬ内のレコードを検索する（ステップＳ１０３）。データ書込部１２１は、ステップＳ１０３による検索の結果、書込対象レコードが検索されたか否かについて判定する（ステップＳ１０４）。
【００３３】
書込対象のレコードがステップＳ１０３により検索された場合（ステップＳ１０４−ＹＥＳ）、データ書込部１２１は、書込対象のレコードごとについての書込完了フラグの値を確認する（ステップＳ１０５）。この際、データ書込部１２１は、書込対象のレコードを含むファイルＦＬにアクセスし、ファイルヘッダに格納された書込完了フラグエリアＦＬＡ内の書込完了フラグの値を確認する。
【００３４】
データ書込部１２１は、ステップＳ１０５による書込完了フラグの確認の結果、既に書き込みが完了しているレコード（書込完了レコード）が少なくとも１つ有るか否かについて判定する（ステップＳ１０６）。
【００３５】
ここで、コマンドに応答した処理が実行不可であった場合（ステップＳ１０２−ＮＯ）、データ書込部１２１は、実行条件エラーに対応する処理を実行する（ステップＳ１０７）。具体的に、データ書込部１２１は、ステップＳ１０７として、コマンドに応答した以降のデータ書き込みの処理を実行しないようにする。また、データ書込部１２１は、ＩＣカード発行装置２００に対して実行条件エラーの発生を通知してもよい。
【００３６】
また、コマンド実行条件フラグが実行可能を示していたとしても、例えばそのコマンドが本来はＩＣカード１００が対応不可のものであるなどの理由で、コマンドに対応する書込対象のレコードが記憶媒体１０３に存在しない場合がある。このような場合には、ステップＳ１０３による書込対象のレコードの検索の結果、書込対象のレコードの少なくとも一部が存在しないと判定される（ステップＳ１０４−ＮＯ）。この場合、データ書込部１２１は、実行条件エラーに対応する処理を実行する（ステップＳ１０７）。
【００３７】
また、コマンド実行条件フラグが実行可能を示しており、書込対象のレコードが記憶媒体１０３に存在していたとしても、今回のＩＣカード発行装置２００とのセッションにおいて、今回のコマンドに対応して書込対象とされたレコードが、既に書き込まれている場合がある。この場合には、ステップＳ１０５による書込完了フラグの確認の結果、書込完了レコードが有ると判定されることになる（ステップＳ１０６−ＹＥＳ）。本実施形態において、１セッションにおいて同じレコードに対して複数回のレコードデータの書き込みが行われることは許容されていない。そこで、この場合のデータ書込部１２１は、実行条件エラーに対応する処理を実行する（ステップＳ１０７）。これにより、１セッションにおいて同じレコードに対して複数回のレコードデータの書き込みが行われることが防止される。
【００３８】
一方、ステップＳ１０５による書込完了フラグの確認の結果、書込完了レコードが１つも無い、即ち、書込対象のレコードの全てが未だ書き込まれていないことが判定された場合（ステップＳ１０６−ＮＯ）、データ書込部１２１は、以下の処理を実行する。
つまり、データ書込部１２１は、書込対象のレコードのうちの１つのレコードに格納されたレコードデータの書き込みを実行する（ステップＳ１０８）。データ書込部１２１は、書き込まれたレコードデータを、通信部１０１を介してＩＣカード発行装置２００に転送する。
【００３９】
識別情報制御部１２２は、ステップＳ１０８によりレコードデータの書き込みが実行されたことに応じて、書き込まれたレコードデータのレコードに対応する書込完了フラグの書き換えを行う（ステップＳ１０９）。つまり、識別情報制御部１２２は、書き込まれたレコードデータのレコードに対応する書込完了フラグについて、未だ書き込まれていないことを示す「０」から、書き込みが完了したことを示す「１」に変更する。
【００４０】
データ書込部１２１は、今回のステップＳ１０８によるレコードデータの書き込みにより、書込対象のレコードのうち最後のレコードに対するレコードデータの書き込みが完了したか否かについて判定する（ステップＳ１１０）。
最後のレコードに対するレコードデータの書き込みを未だ実行していない場合（ステップＳ１１０−ＮＯ）、データ書込部１２１は、ステップＳ１０８に処理を戻す。これにより、未だレコードデータの書き込みが行われていない書込対象のレコードのうちの１つを対象としてレコードデータが書き込まれ、対応の書込完了フラグの書き換えが行われる。
【００４１】
一方、最後の書込対象として指定されたレコードに対するレコードデータの書き込みが完了した場合（ステップＳ１１０−ＹＥＳ）、状態遷移制御部１２３は、コマンドに対する応答として書き込むべきレコードのそれぞれに対応する書込完了フラグの値を確認する（ステップＳ１１１）。
状態遷移制御部１２３は、ステップＳ１１１による確認結果から、コマンドに対する応答として書き込むべき書込対象のレコードの全てに対するレコードデータの書き込みが完了しているか否かについて判定する（ステップＳ１１２）。
【００４２】
ＩＣカード発行装置２００による書き込み対象のレコードの指定のエラーや、データ書込部１２１側のデータ書き込みのエラーなどにより、コマンドに対する応答として書き込むべきレコードのうちのいずれかがステップＳ１０８によって書き込まれない場合がある。このような場合には、書き込まれなかったレコードについてはステップＳ１０８により対応の書込完了フラグの書き換えが行われない。この場合、ステップＳ１１１による確認の結果、書込対象のレコードの全てについて書き込みが完了していないと判定される（ステップＳ１１２−ＮＯ）。
このように書込対象のレコードの全てについて書き込みが完了していないことが判定された場合、状態遷移制御部１２３は、状態遷移エラーに対応する処理を実行する（ステップＳ１１３）。具体的に、状態遷移制御部１２３は、今回のコマンドに応答したデータの書き込みの完了に応じた次の状態への遷移を行わないようにする。つまり、この場合の状態遷移制御部１２３は、次の状態への遷移を禁止する制御を行う。また、状態遷移制御部１２３は、状態遷移エラーが発生したことをＩＣカード発行装置２００に対して通知してもよい。
【００４３】
一方、書込対象のレコードの全てについて書き込みが完了していることが判定された場合（ステップＳ１１２−ＹＥＳ）、状態遷移制御部１２３は、次の状態への遷移が行われるように制御する（ステップＳ１１４）。つまり、この場合の状態遷移制御部１２３は、次の状態への遷移を許可する制御を行う。
【００４４】
以上説明したように、本実施形態におけるＩＣカード１００は、記憶媒体１０３に記憶されるファイルＦＬに格納されるレコードごとに対応する書込完了フラグの管理が可能なようにされている。これにより、ＩＣカード１００自体が、１セッションにおけるレコード単位のデータの書き込みが完了しているか否かの判定を行うことが可能になる。
【００４５】
そのうえで、ＩＣカード１００は、データの書き込みに先立って、書込完了フラグにより書込対象のレコードに対する書き込みの完了していることが示されている場合には、データの書き込みを行わないようにする（ステップＳ１０５、ステップＳ１０６、ステップＳ１０７）。これにより、例えばコマンド実行条件を満足したことに応じてファイルＦＬの書き込みが許可されていたとしても、ファイルＦＬ内の同じレコードを対象として複数回の書き込みが実行されてしまうという不具合の発生を防ぐことができる。また、このような制御によって、不具合の発生の防止のほか、例えばコマンド実行条件を満たした後における不正な記憶媒体１０３へのアクセスによるデータの書き込みを防止できる。
また、ＩＣカード１００は、書込対象として指定されたレコードに対するレコードデータの書き込みが終了した段階において書込完了フラグを確認し、書込対象のレコードの全てに対する書き込みが完了していなければ、次の状態への遷移を行わない（禁止する）ようにしている（ステップＳ１１１、Ｓ１１２、Ｓ１１３）。これにより、本実施形態のＩＣカード１００においては、或る状態のもとでのデータの書き込みが適切に完了していないのに次の状態に遷移してしまうという不具合の発生を防止できる。また、例えば偽のコマンドでコマンド実行条件をクリアしたとしても、例えば書込対象のレコードの指定が異なっていれば状態遷移エラーとなって状態遷移が生じないことから、不正を有効に防止できる。
本実施形態においては、上記のような不具合発生の防止や不正の防止について、上位のＩＣカード発行装置２００に依ることなく、ＩＣカード１００自体で実現できる。
【００４６】
なお、ＩＣカード１００に対するデータの書き込み（書き換えも含む）は、ＩＣカードの発行後の運用段階においてもリーダライタ等の制御によって行われる場合がある。本実施形態のＩＣカード１００における上記のような書込完了フラグの管理、及び書込完了フラグに基づくレコード書込制御、状態遷移制御は、運用段階においても適用されてよい。
【００４７】
なお、上述のＩＣカード１００としての機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述のＩＣカード１００としての処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、ＣＤ−ＲＯＭ等の非一過性の記録媒体であってもよい。また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部または外部に設けられた記録媒体も含まれる。配信サーバの記録媒体に記憶されるプログラムのコードは、端末装置で実行可能な形式のプログラムのコードと異なるものでもよい。すなわち、配信サーバからダウンロードされて端末装置で実行可能な形でインストールができるものであれば、配信サーバで記憶される形式は問わない。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に端末装置で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【００４８】
１００  ＩＣカード、１０１  通信部、１０２  制御部、１０３  記憶媒体、１２１  データ書込部、１２２  識別情報制御部、１２３  状態遷移制御部、２００  ＩＣカード発行装置
【図１】
2018049389.tif 000003
【図２】
2018049389.tif 000004
【図３】
2018049389.tif 000005
【図４】
2018049389.tif 000006
【図５】
2018049389.tif 000007
【図６】
2018049389.tif 000008