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