JP2010182270A - 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法 - Google Patents

携帯可能電子装置および携帯可能電子装置におけるデータ管理方法 Download PDF

Info

Publication number
JP2010182270A
JP2010182270A JP2009027774A JP2009027774A JP2010182270A JP 2010182270 A JP2010182270 A JP 2010182270A JP 2009027774 A JP2009027774 A JP 2009027774A JP 2009027774 A JP2009027774 A JP 2009027774A JP 2010182270 A JP2010182270 A JP 2010182270A
Authority
JP
Japan
Prior art keywords
record
data
area
backup
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2009027774A
Other languages
English (en)
Inventor
Satoru Sekiya
哲 関谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009027774A priority Critical patent/JP2010182270A/ja
Priority to US12/402,724 priority patent/US20100205149A1/en
Priority to SG200901806-0A priority patent/SG164307A1/en
Priority to EP09155229A priority patent/EP2216719B1/en
Publication of JP2010182270A publication Critical patent/JP2010182270A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】データメモリの記憶領域を効率的に使用しつつ、最新のレコードデータと更新前の複数世代のレコードデータとを容易に保存したり、簡単な手順で読み出したりすることができるICカードを提供する。
【解決手段】ICカード1は、複数のレコードデータを格納するレコードファイルを記憶するデータメモリ14を有し、外部装置2からレコードファイルにおける特定のレコードデータの書換えを要求するコマンドが与えられた場合、書換えが要求されたレコードデータの書換え前のレコードデータを当該レコードファイル内にバックアップデータとして保存し、書換え前のレコードデータをバックアップデータとして保存した場合、前記コマンドに従って当該レコードデータを書き換える。
【選択図】図1

Description

本発明は、例えば、個人情報あるいは取引情報などが記憶されているICチップが内蔵されているICカードあるいはICタグなどの携帯可能電子装置、および、上記携帯可能電子装置におけるデータ管理方法などに関する。
近年、ICカードなどの携帯可能電子装置は、様々な用途に利用されている。このようなICカードには、使用用途に応じた個人情報や金銭的な取引情報などの種々のデータが記憶される。上記のようなデータは、通常、ICカード内に設けられているEEPROMやフラッシュROMなどの不揮発性メモリに書込まれる。また、ICカードは、外部装置からのコマンドに応じて不揮発性メモリへのデータ書込み処理などを実行するようになっている。
また、一般的な接触式あるいは非接触式ICカードでは、国際標準規格であるISO/IEC7816−4に規定されている形式でデータを取り扱う。ISO/IEC7816−4では、ICカード内の不揮発性メモリ上に定義されたELEMENTARY FILE(EF)と呼ばれるファイルにデータを記録する。また、ISO/IEC 7816−4では、種々の形式のEFが規定されている。ISO/IEC 7816−4で規定されているEFのうち一般的に使用されるのは、レコード形式のEFである。ISO/IEC 7816−4には、レコード形式のEFとして、次の3種類の形式が規定されている。
(1)固定長順編成レコードファイル
(2)可変長順編成レコードファイル
(3)固定長循環順編成レコードファイル
上記固定長順編成レコードファイルあるいは上記可変長順編成レコードファイルのEFは、ファイルID及びレコード番号により1つのデータの記録場所(領域)が確定する。従って、上記固定長順編成レコードファイルあるいは上記可変長順編成レコードファイルのEFに対して、データの読み出し、データの書き込み、若しくは、データの書き換えを行う場合、指定されたファイルID及びレコード番号により特定される領域に対して、書き込み、若しくは、書き換えなどを行う。
一方、固定長循環順編成レコードファイルには、データが順次追記される構成となっている。このような固定長循環順編成レコードファイルでは、一般的に、データを追記する毎にデータに対するレコード番号が付け替えられる。即ち、固定長循環順編成レコードファイルでは、順次蓄積される複数のデータに対して、新しい順(若しくは古い順)にレコード番号が割り当てられる。
従来のICカードにおいては、取引履歴情報の様に、取引処理の都度データの追加が発生する様なデータは、固定長循環順編成レコードファイルに格納され、それ以外のデータは、固定長または可変長順編成レコードファイルに格納されるのが一般的である。
しかしながら、ICカードの運用形態によっては、EF内にレコード番号で管理された複数のレコードに複数のデータを記憶させるとともに、あるレコードのデータが更新(書き換え)された後に更新前のデータを参照したいといった要求がある。
この様な要求を実現するには、従来のICカードでは、各データ毎に、固定長循環順編成レコードファイルを個別に作成したり、管理したりする必要がある。この場合、同一EF内でのレコード管理に比べ使い勝手の悪いものとなってしまう。また、一般的な運用形態では、ICカード内のEFは、発行処理後に追加したり、削除したりすることが出来ないものが多い。このようなICカードでは、発行処理後に、上記のようなデータ管理を実現するのが難しいという問題もある。
さらに、上記したICカードなどの小型電子装置では、メモリ容量に制限がある。メモリ領域に制約がある場合、上記のようなレコード管理を行うためのメモリ領域としては、大きな領域を確保することが困難である。このため、上記ICカードなどの小型電子装置では、レコード管理用として使用するメモリ領域は、効率的に確保されることが要望される。
ISO/IEC 7816−4
この発明の一形態は、データの蓄積および読出しを効率的に行うことができ、かつ、メモリ領域を効率的に使用できる携帯可能電子装置および携帯可能電子装置におけるデータ管理方法を提供することを目的とする。
この発明の一形態としての携帯可能電子装置は、外部装置から与えられるコマンドに応じて処理を行うものにおいて、レコードデータを記憶するレコード領域と前記レコード領域に記憶されるレコードデータに対するバックアップデータを記憶するデータ退避領域とを有するレコードファイルを記憶する記憶手段と、前記外部装置から前記レコードファイルにおけるレコードデータの書換えを要求するコマンドが与えられた場合、前記レコード領域に記憶されている前記レコードデータをバックアップデータとして前記データ退避領域に保存するデータ退避手段と、前記データ退避手段によりデータ退避領域にバックアップデータを保存した場合、前記レコード領域に記憶されているレコードデータを書き換える書換え手段と、を有する。
この発明の一形態としての携帯可能電子装置は、外部装置から与えられるコマンドに応じて処理を行うものにおいて、複数のレコードデータを順次格納するレコード領域を有するレコードファイルを記憶する記憶手段と、前記外部装置から前記レコードファイルにおけるレコードデータの書換えを要求するコマンドが与えられた場合、書換え前の当該レコードデータを当該レコードファイルにおけるレコード領域の未使用領域にバックアップデータとして保存するデータ退避手段と、前記データ退避手段により書換え前のレコードデータをバックアップデータとして保存した場合、当該レコードファイルのレコード領域に記憶されているレコードデータを書き換える書換え手段とを有する。
この発明の一形態としての携帯可能電子装置におけるデータ管理方法は、レコードデータを記憶するレコード領域と前記レコード領域に記憶されるレコードデータに対するバックアップデータを記憶するデータ退避領域とを有するレコードファイルを記憶部に記憶し、外部装置から前記レコードファイルにおけるレコードデータの書換えを要求するコマンドが与えられた場合、前記レコード領域に記憶されている前記レコードデータをバックアップデータとして前記データ退避領域に保存し、前記データ退避領域にバックアップデータを保存した場合、前記レコード領域に記憶されているレコードデータを書き換える。
この発明の一形態としての携帯可能電子装置におけるデータ管理方法は、複数のレコードデータを順次格納するレコード領域を有するレコードファイルを記憶部に記憶し、外部装置から前記レコードファイルにおけるレコードデータの書換えを要求するコマンドが与えられた場合、書換え前の当該レコードデータを当該レコードファイルにおけるレコード領域の未使用領域にバックアップデータとして保存し、当該レコードファイル内に書換え前のレコードデータをバックアップデータとして保存した後に、当該レコードファイルのレコード領域に記憶されているレコードデータを書き換える。
この発明の一形態によれば、データの蓄積および読出しを効率的に行うことができ、かつ、メモリ領域を効率的に使用できる携帯可能電子装置および携帯可能電子装置におけるデータ管理方法を提供できる。
本実施の形態に係るICカードおよびICカードを含むシステムの構成例を示すブロック図。 非接触式ICカードの全体の構成例を示す図。 レコードファイルの第1の構成例を示す図。 第1の構成例のレコードファイルに対するデータの書換え処理の例を説明するためのフローチャート。 第1の構成例のレコードファイルに対するデータの読出し処理の例を説明するためのフローチャート。 レコードファイルの第2の構成例を示す図。 第2の構成例のレコードファイルに対するデータの書換え処理の例を説明するためのフローチャート。 第2の構成例のレコードファイルに対するデータの読出し処理の例を説明するためのフローチャート。 レコードファイルの第3の構成例を示す図。 第3の構成例のレコードファイルに対するデータの書換え処理の例を説明するためのフローチャート。 第3の構成例のレコードファイルに対するデータの読出し処理の例を説明するためのフローチャート。 レコードファイルの第4の構成例を示す図。 第4の構成例のレコードファイルに対するデータの書換え処理の例を説明するためのフローチャート。 第4の構成例のレコードファイルに対するデータの読出し処理の例を説明するためのフローチャート。 レコードファイルの第5の構成例を示す図。 第5の構成例のレコードファイルに対するデータの書換え処理の例を説明するためのフローチャート。 第5の構成例のレコードファイルに対するデータの読出し処理の例を説明するためのフローチャート。 レコードファイルの第6の構成例を示す図。
以下、この発明に係る実施の形態について図面を参照しつつ説明する。
図1は、この発明の実施の形態に係る携帯可能電子装置としてのICカード1およびICカード1を含むICカードシステムの構成例を示すブロック図である。
上記ICカード1は、外部装置としてのICカード処理装置2からの電源供給により動作可能な状態となる。動作可能となったICカード1は、上記ICカード処理装置2からのコマンドに応じて種々の処理を行う。上記ICカード処理装置2は、ICカード1を動作させるための電源を供給するとともに、当該ICカード1に対して種々の処理を要求するコマンドを供給する。上記ICカード処理装置2がICカード1に対して供給するコマンドは、用途あるいは運用形態などに応じた処理を要求するものである。
また、上記ICカード1は、アンテナあるいは無線通信部等により上記ICカード処理装置2と非接触の状態で無線通信を行う非接触式の携帯可能電子装置(非接触式ICカード)であっても良し、上記ICカード処理装置2と物理的に接触して通信を行う接触式の携帯可能電子装置(接触式ICカード)であっても良い。さらには、上記ICカード1は、非接触式ICカードとしての通信機能と接触式ICカードとしての通信機能とを有する複合型のICカード(デュアルインターフェースICカード)であっても良い。なお、この実施の形態では、主に、非接触式ICカードを想定して説明する。非接触式ICカードと接触式ICカードとはICカード処理装置2との通信方式等が異なるだけである。このため、以下に説明する実施の形態は、接触式ICカードにも同様に適用できる。
上記ICカード1の構成例について説明する。
図1に示すように、上記ICカード1は、CPU11、プログラムメモリ12、ワーキングメモリ13、データメモリ14、通信制御部15、電源部16、および、インターフェース(アンテナあるいはコンタクト部)17などを有している。
また、上記ICカード1は、カード状の本体Cにより構成される。上記ICカード1を形成するカード状の本体Cには、1つ(あるいは複数)のICチップ1aとインターフェース17とが埋設される。上記ICチップ1aは、CPU11、プログラムメモリ12、ワーキングメモリ13、データメモリ14、通信制御部15および電源部16などを有している。上記ICチップ1aは、上記インターフェース17に接続された状態でモジュール化され、当該ICカード1を形成するカード状の本体C内に埋設される。たとえば、図2は、非接触式ICカード全体の構成例を示す図である。図2に示す非接触式ICカードは、カード状の本体Cを有している。この本体C内には、図2に点線で示すように、1つ(あるいは複数)のICチップ1aとインターフェース17としてのアンテナとを有するモジュールMが埋め込まれている。
上記CPU11は、ICカード1全体の制御を司るものである。上記CPU11は、上記プログラムメモリ12あるいはデータメモリ14に記憶されている制御プログラムおよび制御データなどに基づいて動作する。たとえば、上記CPU11は、上記プログラムメモリ12に記憶されている基本的な動作を司る制御プログラムを実行することにより、外部装置から与えられるコマンドに応じた処理を実行する。これにより、外部装置から上記データメモリ14へのデータの書込みを要求するコマンドが与えられれば、上記CPU11は、上記データメモリ14へのデータの書き込み処理を実行する。また、外部装置から上記データメモリ14に記憶されているデータの読み出しを要求するコマンドが与えられれば、上記CPU11は、上記データメモリ14からのデータの読み出し処理を実行する。さらに、上記CPU11は、当該ICカード1の用途などに応じてインストールされる処理プログラムを実行することにより、用途に応じた処理を実現するようになっている。
上記プログラムメモリ12は、読み出し専用のメモリ(ROM:リードオンリーメモリ)により構成される。上記プログラムメモリ12には、予め基本動作を司る制御プログラムおよび制御データなどが記憶されている。上記プログラムメモリ12には、予め当該ICカード1の仕様に応じた制御プログラム及び制御データが記憶される。たとえば、上記CPU11は、上記プログラムメモリ12に記憶される制御プログラムにより外部から与えられるコマンドに応じた処理を実現する。
上記ワーキングメモリ13は、揮発性のメモリ(RAM;ランダムアクセスメモリ)により構成される。上記ワーキングメモリ13は、データを一時保管するバッファメモリとして機能する。例えば、上記ワーキングメモリ13には、ICカード処理装置(外部装置)2との通信処理において、送受信されるデータが一時的に保管される。また、上記ワーキングメモリ13には、種々の書込みデータなどを一時的に保持するメモリとしても利用される。
上記データメモリ(不揮発性メモリ)14は、データの書き込みが可能な不揮発性のメモリである。上記データメモリ14は、例えば、EEPROMあるいはフラッシュメモリなどにより構成される。上記データメモリ14には、当該ICカード1の使用目的に応じた種々の情報が記憶される。
たとえば、当該ICカードの使用目的に応じたアプリケーション(処理プログラムおよび運用データなど)は、上記データメモリ14に書込まれる。当該ICカード1が複数の使用目的に使用される場合、上記データメモリ14には、各使用目的に応じた複数のアプリケーションが記憶される。また、当該ICカード1の使用目的に応じたアプリケーションは、上記データメモリ14上に定義された使用目的ごとのプログラムファイル(DF;Dedicated File)およびデータファイル(EF;Elementary File)などの各ファイルに記憶される。このようなファイル構造は、たとえば、ISO/IEC7816−4に基づくものである。なお、各種のデータを記憶するためのデータファイル(EF)の構成例については、後で詳細に説明するものとする。
上記通信制御部15は、上記インターフェース17を介して外部装置(たとえば、ICカード処理装置2)とのデータ通信を制御するものである。たとえば、当該ICカードが非接触型のICカードであれば、外部装置からデータを受信する場合、上記通信制御部15は、インターフェース17としてのアンテナにより受信した電波としての送信データを復調し、復調した信号を上記CPU11に供給する。また、外部装置へデータを送信する場合、上記通信制御部15は、上記CPU11から与えられるデータを変調し、変調したデータを上記インターフェース17としてのアンテナにより電波として発信する。なお、接触式ICカードでは、インターフェース17として、アンテナの代わりに、外部装置の接触端子部と物理的・電気的に接触するコンタクト部を介して外部装置とのデータ通信を行う。
上記電源部16は、当該ICカード1の各部を動作させるための上記インターフェース17を介して受信する電力およびクロックパルスを供給する。たとえば、当該ICカードが非接触型のICカードであれば、上記電源部16は、上記インターフェース17としてのアンテナにより受信した電波から電力およびクロックパルスを生成し、当該ICカード内の各部に供給するようになっている。また、上記電源部16からの電力供給により起動した場合、上記CPU11は、当該ICカード1の処理状態をリセットする処理を行うようになっている。なお、当該ICカード1が接触型のICカードであれば、上記電源部16はインターフェース17を介して外部装置から直接的に供給される電力およびクロックパルスにより各部へ供給するようになっている。
次に、上記ICカード処理装置2について説明する。
上記ICカード処理装置2は、図1に示すように、制御装置21およびカードリーダライタ22を有している。上記制御装置21は、パーソナルコンピュータ(PC)などにより構成される。上記制御装置21は、CPUなどの演算処理部、RAM、ROM、不揮発性メモリおよびハードディスクドライブなどの各種メモリ、通信インターフェースなどの各種インターフェースなどにより構成される。上記制御装置21では、上記演算処理部がメモリに記憶されている各種の制御プログラムを実行することにより各種の処理を実現している。また、上記制御装置21は、ICカード1とのデータ通信を行う上記カードリーダライタ22とのデータの入出力を行うようになっている。
たとえば、上記制御装置21には、上記ICカード1を用いた各種の処理に応じた制御プログラムが予め記憶されている。上記制御装置21では、上記のような制御プログラムを実行することにより上記ICカード1を用いた各種の処理を実行する。たとえば、上記ICカード1を用いた各種の処理において、上記制御装置21は、所定のコマンドを所定の手順で供給する。上記制御装置21では、上記のような各コマンドに対するICカード1からの各レスポンス(コマンドに対する処理結果等を示す情報)に基づいて各種の処理を行うようになっている。
上記カードリーダライタ22は、上記ICカード1とのデータ通信を行う通信手段として機能する。上記カードリーダライタ22は、上記ICカード1の通信方式に応じた通信方式によるデータ通信を行うためのものである。つまり、上記カードリーダライタ22を介して制御装置21は、上記ICカード1とのデータ通信を実現している。
上記ICカード1が非接触型のICカードである場合、上記カードリーダライタ22は、上記ICカード1との無線によるデータ通信を行うためのアンテナおよび通信制御部(変復調回路等)などにより構成される。非接触型のICカード1へデータを送信する場合、上記カードリーダライタ22では、通信制御部により上記制御装置21から与えられる送信データを変調し、変調した信号を電波としてアンテナにより発信する。また、非接触型のICカード1からデータを受信する場合、上記カードリーダライタ22では、アンテナにより受信した電波としての信号を通信制御部により復調し、復調したデータを受信データとして上記制御装置21へ供給する。また、上記カードリーダライタ22では、上記のようなデータの送受信とともに、上記ICカード1を動作させるための電源およびクロックパルスとなる電波をアンテナにより発信するようになっている。
また、上記ICカード1が接触型のICカードである場合、上記カードリーダライタ22は、ICカード1と物理的に接触してデータ通信を行うためのコンタクト部および通信制御部などにより構成される。接触型のICカードとのデータの送受信を行う場合、上記カードリーダライタ22では、上記コンタクト部がICカード1側に設けられているコンタクト部と物理的に接触して各種のデータ通信を行う。また、上記カードリーダライタ22では、ICカード1に物理的に接触しているコンタクト部を介して当該ICカード1に対して電力およびクロックパルスを供給するようになっている。
次に、上記データメモリ14に記憶されるファイルについて説明する。
本実施例では、上述したようにデータメモリ14内の各ファイルがISO/IEC 7816で規定されているファイル構造となっているものとする。ISO/IEC 7816では、MF(Master File)、DF(Dedicated File)、EF(Elementary File)などからなる階層構造のファイル構成が規定されている。MFは、階層構造の最上位に位置するファイルであり、MFの下層にDFあるいはEFが設けられる。DFは、例えば、アプリケーションごとに設定されるファイルであり、当該アプリケーションで利用するデータを格納するためのデータファイルとしてのEFが下層に設けられる。各EFは、それぞれ実データを記憶するためのデータファイルである。また、実データは、データファイル内において、各レコードごとに記憶される。各レコードには、それぞれレコード番号が与えられる。
上記のような各ファイルは、それぞれが図示しない管理テーブルに記憶される定義情報により定義される。たとえば、上記のようなデータファイルとしてのEFは、図示しない管理テーブルに記憶されるEF定義情報により定義される。EF定義情報では、当該EFを特定するための情報として、ファイルID、データメモリ14における先頭アドレス、および、データサイズなどが定義される。
また、ISO/IEC 7816で規定されているデータファイル(EF)には、種々の形式がある。たとえば、ISO/IEC 7816には、EFの形式として、固定長順編成レコードファイル、可変長順編成レコードファイル、固定長循環順編成レコードファイルなどがある。
上記固定長順編成レコードファイルあるいは上記可変長順編成レコードファイルは、複数のデータを格納するための複数のレコード領域(以下、単にレコードとも称する)が設定可能である。たとえば、1つのファイルに複数のデータを格納したい場合、データファイルには、複数のデータに対応する複数のレコードに各データが格納される。複数のレコードを有するファイルでは、ファイルID及びレコード番号により各レコードが特定される。たとえば、上記固定長順編成レコードファイルあるいは上記可変長順編成レコードファイルの特定のレコードに対して、データの読み出し、データの書き込み、若しくは、データの書き換えを行う場合、ICカード処理装置2は、書き込み、書き換え、若しくは、読出しなどを要求するコマンドにおいて、ファイルID及びレコード番号によりレコードを指定する。
また、アクセス対象とするレコードを指定するには、各種のコマンドにおいて、カレントレコードを指定することも可能である。カレントレコードとは、カレント状態とするレコードである。カレントレコードを示す情報(レコードポインタ)は、常時、ワーキングメモリなどに格納され、適宜更新される。たとえば、レコード番号を指定するコマンドあるいはカレントレコードの移動(たとえば、ネクストあるいはプレビアス)を指定するコマンドに応じてレコードポインタは更新される。従って、カレントレコードを指定するコマンドを受信した場合、CPU11は、レコードポインタが示すレコード(つまり、カレントレコード)にアクセスするようになっている。
なお、固定長循環順編成レコードファイルには、データが順次レコード領域に追記される。このような固定長循環順編成レコードファイルでは、一般的には、データが追記される毎に各データを格納する各レコードの領域に対するレコード番号が付け替えられる。即ち、固定長循環順編成レコードファイルでは、順次蓄積される複数のデータの各レコード領域に対して、新しい順(若しくは古い順)にレコード番号が割り当てられる。
以下、本実施例で処理対象とする順編成レコードファイルの構成例について説明する。
本実施例では、上記のような順編成レコードファイルにおける各レコードは、それぞれバックアップデータが保存されるものとする。つまり、順編成レコードファイルにおける各レコードに対しては、1つ又は複数のバックアップデータが保存される。また、バックアップデータを保存するための記憶領域は、種々の手法で設定することが可能である。以下、レコードファイルの構成例について説明する。
まず、レコードァイルの第1の構成例について説明する。
第1の構成例では、当該レコードファイル内の各レコードは、識別情報(レコード番号)の記憶領域とレコードデータの記憶領域と1つのバックアップデータの記憶領域とを有している。すなわち、第1の構成例では、各レコードにおいて、1つのレコードデータと1つのバックアップデータとが記憶可能となっている。
図3は、レコードファイルの第1の構成例を示す図である。
図3に示す第1の構成例は、固定長順編成レコードファイルの構成例である。第1の構成例のレコードファイルは、ファイルIDで特定される。ファイルIDで特定されるレコードファイルは、レコード単位の複数のデータ(レコード)を記憶するレコード領域を有している。レコード領域における各レコードには、レコード番号が割当てられる。レコード番号が割り当てられた各レコードには、レコードデータの領域とバックアップデータの領域とが設けられる。レコードデータの領域には、当該レコードの最新のデータ(これが、当該レコードのレコードデータとして取り扱われる)が記憶される。バックアップデータの領域には、レコードデータの領域のデータが現在のデータに書き換えられる前のデータ(つまり、更新前のレコードデータ)が記憶される。
図3に示す例では、レコード番号「03」およびレコード番号「05」の各レコードには、バックアップデータが記憶されている。つまり、レコード番号「03」および「05」の各レコードには、レコードデータの領域とバックアップデータの領域とにそれぞれデータが書込まれている。これは、レコード番号「03」及び「05」の各レコードが少なくとも1回更新されていることを示している。第1の構成例のレコードでは、データを書き換える場合、当該レコードのレコードデータの領域に格納されているデータが当該レコードのバックアップデータの領域に移動され、当該レコードのレコードデータの領域に最新のデータ(書換えデータ)が書込まれる。このような構成により、各レコードには、最新のデータと最新のデータに更新する直前のデータとが常時保存される。
上記のようなレコードファイルの各レコードに格納されているデータには、ファイルIDとレコード番号とによりアクセスが可能となっている。たとえば、図3に示す例では、ファイルID「0001」かつレコード番号「01」を指定することにより、レコード番号「01」のレコードデータの領域に格納されているデータにアクセスすることが可能となっている。同様に、バックアップデータが記憶されているレコード番号「03」(又は「05」)のレコードに対しても、ファイルID「0001」かつレコード番号「03」(又は「05」)を指定することにより、レコード番号「03」(又は「05」)のレコードデータの領域に格納されているデータにアクセスすることが可能となっている。
また、レコード番号「03」(又は「05」)のバックアップデータの領域に格納されているデータ(更新前のデータ)には、所定の操作によりアクセスすることが可能となっている。バックアップデータの領域に格納されているデータにアクセスするための手法としては、種々の手法が考えられる。たとえば、バックアップデータの領域のデータへのアクセスを要求するコマンドコードを定義しても良いし、コマンドにおける処理パラメータでバックアップデータの領域を指定するように定義しても良い。また、特定のコマンドを受信した順序、あるいは、特定のコマンドを受信した回数などに基づいて、バックアップデータの領域のデータへのアクセスを行うようにしても良い。
ここでは、カレントレコードを指定するコマンドによりカレントレコードのバックアップデータの領域のデータにアクセスする場合について説明する。
たとえば、図3に示すようなレコードファイルを有するICカード1が、ファイルID「0001」かつレコード番号「03」のレコードを指定したデータの読出要求コマンド(リードレコードコマンド)を受信した場合、CPU11は、ファイルID「0001」かつレコード番号「03」のレコードにおけるレコードデータの領域のデータを読み出す処理を行う。この際、当該ICカード1では、カレントレコードがファイルID「0001」かつレコード番号「03」のレコードとなる。このようなカレントレコードを示す情報は、たとえば、ワーキングメモリ13に保持される。
この状態において、続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、カレントレコードであるファイルID「0001」かつレコード番号「03」のレコードにおけるバックアップデータの領域のデータを読み出す処理を行う。なお、このようなカレントレコードを指定したリードレコードコマンドによりバックアップデータの領域を読出した回数は、たとえば、ワーキングメモリ13に保持されるものとする。
ここで、2度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、バックアップデータの領域のデータが読出し済みであるためエラーとして処理するか、あるいは、当該レコードのレコードデータの領域のデータを読み出す処理を行うようにするものとする。特に、前者のような形態では、ICカード処理装置2は、ICカード1からエラー通知を受けることにより、当該レコードにおけるバックアップデータの領域のデータを読み出したことを容易に識別できる。また、後者のような形態では、ICカード処理装置2は、カレントレコードを指定するリードコマンドを連続してICカード1に与えることにより、各レコードにおけるレコードデータの領域のデータ、および、バックアップデータの領域のデータを交互に読み出すことが可能となる。
次に、上記第1の構成例のレコードファイルにおける各レコードに対するデータの書換え処理の流れについて説明する。
図4は、第1の構成例のレコードファイルにおけるレコードに対するデータの書換え処理を説明するためのフローチャートである。
まず、ICカード処理装置2からコマンドを受信した場合(ステップS10)、CPU11は、コマンドコードなどにより受信したコマンドがデータの書換えを要求するコマンドであるか否かを判断する(ステップS11)。この判断により受信したコマンドがデータの書換えコマンドであると判断した場合(ステップS11、YES)、CPU11は、当該コマンドで指定されたレコードを特定する(ステップS12)。たとえば、ファイルIDとレコード番号とが指定されている場合、CPU11は、指定されたファイルIDとレコード番号とにより特定されるレコードのデータを書き換えるものと判定する。
指定されたレコードを特定すると、CPU11は、指定されたレコードにバックアップデータの領域が設定されているか否かを判断する(ステップS13)。この判断は、指定されたレコードにおける更新前のデータをバックアップデータとして保存するか否かを判断するものである。上記判断により指定されたレコードにバックアップデータの領域が設定されていると判断した場合、CPU11は、当該レコードのレコードデータの領域に格納されているデータをバックアップデータの領域に移動させる(ステップS14)。ここで、CPU11は、当該レコードのレコードデータの領域に格納されているデータを読み出し、読み出したデータをバックアップデータの領域に記憶する処理を行う。たとえば、上記ステップS14において、既に当該レコードのバックアップデータの領域にデータが格納されている場合、レコードデータの領域から読み出したデータは、バックアップデータの領域のデータに上書きされる(すなわち、指定されたレコードにおけるバックアップデータの領域のデータは、レコードデータの領域から読み出したデータに書換えられる)。
ただし、各レコードのレコードデータの領域とバックアップデータの領域とは、それぞれの意味付けが異なるだけである。従って、上記ステップS14の処理としては、当該レコードにおけるレコードデータの領域とバックアップデータの領域とを交換し、交換後のレコードデータの領域にデータを書き込むようにしても良い。つまり、データ更新処理時に、レコードデータの領域をバックアップデータの領域に変更し、かつ、バックアップデータの領域をレコードデータの領域に変更することにより、更新前のレコードデータの領域(更新後のバックアップデータの領域)に格納されているデータをバックアップデータに変更するようにしても良い。
この場合、当該レコードにおけるレコードデータの領域とバックアップデータの領域の定義付けを変更(交換)し、更新前のバックアップデータの領域(更新後のレコードデータの領域)のデータを書き換えることにより、当該レコードにおけるレコードデータの領域およびバックアップデータの領域の書換えが実現できる。この場合、レコードデータの領域のデータを書き換えるだけで良い(バックアップデータの領域のデータは書き換えなくても良い)ので、処理時間の短縮化が期待できる。
上記レコードデータの領域に格納されているデータをバックアップデータの領域に移動させると、CPU11は、当該レコードのレコードデータの領域のデータを、受信した書換えコマンドに含まれる書換えデータに書き換える(ステップS15)。このようなレコードデータの領域のデータの書換えが正常終了すると、CPU11は、受信したコマンドに対する処理が正常終了した旨のレスポンスをICカード処理装置2に送信し(ステップS16)、処理を終了する。
なお、上記ステップS15においてレコードデータの領域に対するデータの書換えが失敗した場合(あるいは、受信したコマンドに含まれる書換えデータのレコードデータの領域への書込みがリトライできない状態となった場合)、CPU11は、当該レコードのバックアップデータの領域に移動したデータを再度、当該レコードのレコードデータの領域に書き込むことにより、当該レコードの復旧処理を行うようにしても良い。このようにレコードデータの領域へのデータの書込みが失敗した場合に、バックアップデータの領域のデータでレコードデータの領域のデータを復旧させる(コマンドの受信前の状態に戻す)ことにより、ICカードとしての動作を安定化させることが可能である。
上記のように、上述した第1の構成例のレコードファイルに対する書込み処理は、あるレコードのデータを更新する場合に、当該レコードの更新前のデータをバックアップデータの領域に退避させ、最新のデータ(書換えデータ)を当該レコードのデータとしてのレコードデータの領域に書き込むようにしたものである。
これにより、更新前のデータを別のレコードとして保存するコマンドを与えたりすることなく、擬似的な2次元配列ファイルによって更新前のデータを随時保存しておくことが可能となる。
次に、上記第1の構成例のレコードファイルにおける各レコードに対するデータの読出し処理について説明する。
図5は、第1の構成例のレコードファイルにおけるレコードに対するデータの読出し処理を説明するためのフローチャートである。
まず、ICカード処理装置2からコマンドを受信した場合(ステップS20)、CPU11は、当該コマンドのコマンドコードに基づいてデータの読出しを要求するリードレコードコマンドであるか否かを判断する(ステップS21)。
この判断により受信したコマンドがリードレコードコマンドであると判断した場合(ステップS21、YES)、CPU11は、受信したリードレコードコマンドがバックアップデータの領域の読出しを要求するものであるか否かを判定する(ステップS22)。バックアップデータの領域の読出を要求する手法には、上述したような様々な形態が考えられる。たとえば、特定のコマンドの実行手順などによりバックアップデータの領域の読出要求を示すようにしても良いし、コマンドの内容(コマンドデータに含まれる情報)によって直接的にバックアップデータの領域の読出要求を示すようにしても良い。
また、特定のコマンドの実行手順によりバックアップデータの領域の読出要求を示す形態としては、特定のコマンドが連続して与えられた場合にバックアップデータの領域を読み出すようにしても良いし、複数種類のコマンドが特定の順序で与えられた場合にバックアップデータの領域を読み出すようにしても良い。また、コマンドの内容(コマンドデータに含まれる情報)によって直接的にバックアップデータの領域の読出を要求する形態としては、コマンドコードあるいは処理パラメータなどでバックアップデータの領域の読出を指定するようにすれば良い。上記のような運用形態に従って、CPU11は、受信したコマンドがバックアップデータの領域の読出しを要求するコマンドであるか否かを判断するようになっている。
ここでは、図5に示す処理例のように、「カレントレコード」が指定されたリードレコードコマンドが与えられた場合に、カレントレコードのバックアップデータの領域を読み出すようにするものとする。このような形態であれば、CPU11は、上記ステップS22の処理として、当該コマンドにおいて読出対象とするレコードが、レコード番号で指定されているか、「カレントレコード」として指定されているかを判定する(ステップS22)。
上記リードレコードコマンドにおいてレコードの指定が「カレントレコード」である場合、つまり、受信コマンドがバックアップデータの領域の読出しを要求する場合(ステップS22、YES)、CPU11は、現在のカレントレコード(指定されたレコード)にバックアップデータの領域が設定されているか否かを判断する(ステップS23)。
この判断により指定されたレコードにバックアップデータの領域が設定されていると判断した場合(ステップS23、YES)、CPU11は、受信したコマンドの直前に受信したリードレコードコマンドによって当該レコードのバックアップデータの領域のデータが読出し処理済みであるか否かを判断する(ステップS24)。つまり、上記ステップS24において、上記CPU11は、前回受信したリードコマンドによってバックアップデータの領域のデータを読み出したか否かを判断する。言い換えると、上記ステップS24において、上記CPU11は、連続してバックアップデータの領域のデータの読出しを要求するコマンドを受信したか否かを判断している。
上記判断によりカレントレコードのバックアップデータの領域のデータが読出し済みでないと判断した場合(ステップS24、NO)、CPU11は、当該コマンドで指定されたレコード(カレントレコード)におけるバックアップデータの領域のデータを読み出す(ステップS25)。カレントレコードのバックアップデータの領域領域のデータを読み出すと、CPU11は、当該コマンドの送信元であるICカード処理装置2に読み出したデータを含むレスポンスデータを送信する(ステップS26)。このように、上記ステップS20〜S26までの処理によって、当該ICカード1では、カレントレコードのバックアップデータの領域のデータが読み出される。
また、図5に示す処理例では、上記ステップS22において、上記受信したコマンドにおいてレコードの指定が「カレントレコード」でない場合、つまり、受信したコマンドにおけるレコードの指定がファイルIDとレコード番号とによるものである場合(ステップS22、NO)、CPU11は、当該リードレコードコマンドが指定レコードのレコードデータの領域のデータ(最新のデータ)の読出しを要求するものであると判定する。
すなわち、受信したコマンドにおけるレコードの指定がファイルIDとレコード番号とによるものである場合(ステップS22、NO)、CPU11は、ファイルIDとレコード番号とにより読出対象とするレコード(指定されたレコード)を特定する(ステップS28)。つまり、CPU11は、当該コマンドで指定されたファイルIDによりレコードファイルとしてのEFを特定し、さらに、レコード番号に基づいて当該EF内におけるレコードを特定する。この際、上記CPU11は、特定されたレコードをカレントレコードに設定する。
受信したコマンドで指定されているファイルID及びレコード番号によりレコードを特定すると、上記CPU11は、特定されたレコードのレコードデータの領域のデータを読出し(ステップS29)、当該コマンドの送信元であるICカード処理装置2に読み出したデータを含むレスポンスデータを送信する(ステップS26)。
また、図5に示す処理例では、ステップS23でカレントレコードにバックアップデータの領域が設定されていないと判断した場合(ステップS23、NO)、CPU11は、ステップS29へ進み、カレントレコードのレコードデータの領域のデータを読み出す処理を行うものとする。ただし、ステップS23でNOと判断される場合は、バックアップデータの領域の読出しを要求するコマンドを受信したにも係らず、当該コマンドが指定するレコード(カレントレコード)にバックアップデータの領域が設定されていないと判断した場合である。このため、CPU11は、ステップS27へ進み、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信するようにしても良い。
また、図5に示す処理例では、ステップS24でバックアップデータの領域のデータが直前のリードコマンドによって読出し済みであると判断した場合(ステップS24、YES)、CPU11は、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信する(ステップS27)。これは、バックアップデータの領域の読出しを要求するコマンド(カレントレコードを指定したリードレコードコマンド)が連続して与えられた場合であっても、連続して特定のレコード(カレントレコード)におけるバックアップデータの領域のデータの読出しを行わないようにする仕組みである。
ただし、上記ステップS24でバックアップデータの領域のデータが直前のリードコマンドで読出し済みであると判断した場合(ステップS24、YES)、CPU11は、図5に点線で示すように、ステップS29へ進み、カレントレコードのレコードデータの領域のデータを読み出す処理を行うようにしても良い。これは、バックアップデータの領域の読出しを要求するコマンド(カレントレコードを指定したリードレコードコマンド)が連続して与えられた場合に、特定のレコード(カレントレコード)におけるバックアップデータの領域のデータとレコードデータの領域のデータとを交互に読み出すようにする仕組みである。この場合、ICカード処理装置2では、カレントレコードを指定したリードレコードコマンドを連続して与えることにより、ICカード1からカレントレコードのバックアップデータの領域のデータとレコードデータの領域のデータとを交互に読み出す制御が可能となる。
上記のような読出処理では、レコード番号を指定したリードコマンドに対しては、当該レコードのレコードデータの領域に記憶されている最新のデータを読出し、カレントレコードを指定したリードコマンド(バックアップデータの領域のデータの読出しを要求するコマンド)に対しては、当該レコードのバックアップデータの領域に記憶されているデータを読み出すようになっている。
これにより、擬似的な2次元配列ファイルに格納されているデータを容易に読み出すことができ、レコード番号の管理などが複雑化することなく、取引履歴情報などの更新されることが予測されるデータについて最新のデータおよび更新前のデータを容易に読み出すことができる。
次に、レコードァイルの第2の構成例について説明する。
第2の構成例では、レコードファイル内の各レコードは、識別情報(レコード番号)の記憶領域とレコードデータの記憶領域と複数のバックアップデータの記憶領域とを有している。すなわち、第2の構成例では、各レコード内において、1つのレコードデータと複数のバックアップデータとが保存可能となっている。
図6は、レコードファイルの第2の構成例を示す図である。
図6に示す第2の構成例は、固定長順編成レコードファイルの構成例である。第2の構成例のレコードファイルは、ファイルIDで特定される。ファイルIDで特定されるレコードファイルは、レコード単位の複数のデータ(レコード)を格納するレコード領域により構成される。レコード領域内の各レコードには、レコード番号が割当てられる。レコード番号が割り当てられる各レコードは、1つのレコードデータの領域と複数のバックアップデータの領域とを有している。レコードデータの領域には当該レコードの最新のデータ(これが、当該レコードのデータとして取り扱われる)が格納され、各バックアップデータの領域には上記レコードデータの領域のデータの更新時に順次古いデータ(更新前のデータ)が格納される。また、1つのレコードにおける複数のバックアップデータの領域には、それぞれ順に更新前のデータが書込まれる。言い換えれば、第2の構成例のファイルでは、各レコード毎に、バックアップデータの領域の数だけ古いデータが格納される。
たとえば、図6に示す例では、レコード番号「02」のレコードには、最新のデータがレコードデータの領域に格納され、3つのバックアップデータの領域に3回分の古いデータがそれぞれ順に格納されている。これは、レコード番号「02」の各レコードが少なくとも3回更新されていることを示している。このようなレコードに対しては、レコードデータの領域のデータを更新する場合に、レコードデータの領域に格納されているデータが1世代前のデータを格納する第1のバックアップデータの領域に移動され、第1のバックアップデータの領域に格納されているデータが2世代前のデータを格納する第2のバックアップデータの領域に移動され、第2のバックアップデータの領域に格納されているデータが3世代前のデータを格納する第3のバックアップデータの領域に移動される。このような構成により、各レコードには、最新のデータと複数のバックアップデータが常時保存される。
また、上記のようなレコードファイルの各レコードのレコードデータの領域に格納されているデータには、上記第1の構成例と同様に、ファイルIDとレコード番号とを指定することによりアクセスすることが可能となっている。これに対して、各レコードの各バックアップデータの領域に格納されているデータには、所定の操作によりアクセスすることが可能となっている。
各レコードの各バックアップデータの領域に格納されているデータにアクセスするための手法としては、種々の手法が考えられる。たとえば、バックアップデータの領域のデータへのアクセスを要求するコマンドコードを定義しても良いし、コマンドにおける処理パラメータでバックアップデータの領域を指定するように定義しても良い。また、特定のコマンドを受信した順序、あるいは、特定のコマンドを受信した回数などに基づいて、バックアップデータの領域のデータへのアクセスを行うようにしても良い。
ここでは、「カレントレコード」を指定するコマンドによりバックアップデータの領域のデータにアクセスする場合について説明する。
たとえば、図6に示すファイルID「0001」かつレコード番号「02」のレコードを指定したデータの読出要求コマンド(リードレコードコマンド)を受信した場合、CPU11は、ファイルID「0001」かつレコード番号「02」のレコードにおけるレコードデータの領域のデータを読み出す処理を行う。この際、当該ICカード1では、カレントレコードがファイルID「0001」かつレコード番号「02」のレコードとなる。このようなカレントレコードを示す情報は、たとえば、ワーキングメモリ13に保持される。
この状態において、カレントレコードを指定した読出要求コマンド(リードレコードコマンド)を受信した場合、CPU11は、カレントレコードであるファイルID「0001」かつレコード番号「02」のレコードにおける第1のバックアップデータの領域のデータを読み出す処理を行う。なお、このようなカレントレコードを指定したリードレコードコマンドによりバックアップデータの領域を読出した回数は、たとえば、ワーキングメモリ13に保持されるものとする。また、再度(2度連続して)、ファイルID「0001」かつレコード番号「02」のレコードを指定したデータのリードレコードコマンドを受信した場合も、上記同様に、第1のバックアップデータの領域のデータを読み出すようにしても良い。
また、続けて同じコマンドを受信した場合、つまり、2度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、カレントレコードであるレコード番号「02」のレコードにおける第2のバックアップデータの領域のデータを読み出す処理を行う。なお、3度連続して、ファイルID「0001」かつレコード番号「02」のレコードを指定したデータのリードレコードコマンドを受信した場合も、上記同様に、第2のバックアップデータの領域のデータを読み出すようにしても良い。
さらに、続けて同じコマンドを受信した場合、つまり、3度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、カレントレコードであるレコード番号「02」のレコードにおける第3のバックアップデータの領域のデータを読み出す処理を行う。なお、4度連続して、ファイルID「0001」かつレコード番号「02」のレコードを指定したデータのリードレコードコマンドを受信した場合も、上記同様に、第3のバックアップデータの領域のデータを読み出すようにしても良い。
ここで、バックアップデータの領域が各レコードに対して3つまでであるものとする。このような場合、4度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、全バックアップデータの領域のデータが読出し済みであるため、エラーとして処理するか、あるいは、当該レコードのレコードデータの領域のデータを読み出す処理を行うようにするものとする。特に、前者のような形態では、ICカード処理装置2は、ICカード1からエラー通知を受けることにより、当該レコードにおける全バックアップデータの領域のデータを読み出したことを容易に識別できる。また、後者のような形態では、ICカード処理装置2は、カレントレコードを指定するリードコマンドを連続してICカード1に与えることにより、各レコードにおけるレコードデータの領域のデータ、および、各バックアップデータの領域のデータを順次循環させて読み出すことが可能となる。
次に、上記第2の構成例のレコードファイルにおける各レコードに対するデータの書換え処理について説明する。
図7は、第2の構成例のレコードファイルにおけるレコードに対するデータの書換え処理を説明するためのフローチャートである。
まず、ICカード処理装置2からコマンドを受信した場合(ステップS30)、CPU11は、当該コマンドのコマンドコードに基づいてデータの書換えを要求するコマンドであるか否かを判断する(ステップS31)。この判断により受信したコマンドがデータの書換えコマンドであると判断した場合(ステップS31、YES)、CPU11は、当該コマンドで指定されたレコードを特定する(ステップS32)。たとえば、ファイルIDとレコード番号とが指定されている場合、CPU11は、指定されたファイルIDとレコード番号とにより特定されるレコードのデータを書き換えるものと判定する。
指定されたレコードを判定すると、CPU11は、指定されたレコードにバックアップデータの領域が設定されているか否かを判断する(ステップS33)。この判断は、指定されたレコードにおいて更新前のデータをバックアップデータとして保存するように設定されているか否かを判断するものである。上記判断により指定されたレコードにバックアップデータの領域が設定されていると判断した場合、CPU11は、当該レコードのレコードデータの領域および各バックアップデータの領域に格納されている各データを順次次のバックアップデータの領域に移動させる処理を行う(ステップS34〜S36)。
たとえば、CPU11は、まず、全バックアップデータの領域にデータが保存されているか否かを判断する(ステップS34)。この判断により全バックアップデータの領域にデータが保存されていると判断した場合、CPU11は、最も古いデータが記憶されているバックアップデータの領域のデータを削除する(ステップS35)。このような状態において、CPU11は、レコードデータの領域および各バックアップデータの領域のデータを順次各バックアップデータの領域に移動させる(ステップS36)。
なお、上記ステップS34〜S36の処理は、当該レコードにおけるレコードデータの領域及び各バックアップデータの領域のデータを順次次のバックアップデータの領域に上書きすることにより実現しても良いし、最古のデータが記憶されているバックアップデータの領域にレコードデータの領域のデータを上書きすることにより実現するようにしても良い。何れの場合であっても、結果として、当該レコードでは、最古のデータが削除され、レコードデータの領域と各バックアップデータの領域の各データがぞれぞれバックアップデータの領域に格納される。
当該レコードのレコードデータの領域および各バックアップデータの領域のデータを順次各バックアップデータの領域に移動させると、CPU11は、当該レコードのレコードデータの領域のデータを、受信した書換えコマンドに含まれる書換えデータに書き換える(ステップS37)。このようなレコードデータの領域のデータの書換えが正常終了すると、CPU11は、受信したコマンドに対する処理が正常終了した旨のレスポンスをICカード処理装置2に送信し(ステップS38)、処理を終了する。
なお、上記ステップS37においてレコードデータの領域に対するデータの書換えが失敗した場合(あるいは、受信したコマンドに含まれる書換えデータのレコードデータの領域への書込みがリトライできない状態となった場合)、CPU11は、レコードデータの領域からバックアップデータの領域へ移動させたデータを再度、当該レコードのレコードデータの領域に書き込むことにより、当該レコードの復旧処理を行うようにしても良い。このようにレコードデータの領域へのデータの書込みが失敗した場合に、バックアップデータの領域のデータでレコードデータの領域のデータを復旧させる(コマンドの受信前の状態に戻す)ことにより、ICカード1としての動作を安定化させることが可能である。
上記のような書込み処理は、あるレコードのデータを更新する際に、レコードデータの領域および各バックアップデータの領域の各データを順次それぞれバックアップデータの領域に退避させ、最新のデータ(書換えデータ)を当該レコードのデータとしてのレコードデータの領域に書き込むようにしたものである。これにより、更新前のデータを別のレコードとして保存するコマンドを与えたりすることなく、擬似的な2次元配列ファイルによって最新のデータと更新前の複数のデータ(複数世代のデータ)を容易に保存しておくことが可能となる。
また、上記のような書込み処理では、バックアップデータが全バックアップデータの領域の容量を超える場合、最古のデータを削除して、最新のデータからバックアップデータの領域の数の分だけ古い各データを各バックアップデータの領域に常時保存しておくようにしたものである。これにより、各レコードに設けられた各バックアップデータの領域に、最新のデータからバックアップデータの領域の数だけ古いデータまでの各世代のデータを各バックアップデータの領域に保存することが可能となる。
次に、上記第2の構成例のレコードファイルにおける各レコードに対するデータの読出し処理について説明する。
図8は、第2の構成例のレコードファイルにおけるレコードに対するデータの読出し処理を説明するためのフローチャートである。
まず、ICカード処理装置2からコマンドを受信した場合(ステップS40)、CPU11は、当該コマンドのコマンドコードに基づいてレコードデータの読出しを要求するリードレコードコマンドであるか否かを判断する(ステップS41)。
この判断により受信したコマンドがリードレコードコマンドであると判断した場合(ステップS41、YES)、CPU11は、受信したリードレコードコマンドがバックアップデータの領域の読出しを要求するコマンドであるか否かを判定する(ステップS42)。
上述したように、バックアップデータの領域の読出を要求する手法には、様々な形態が考えられる。たとえば、特定のコマンドの実行手順などによりバックアップデータの領域の読出要求を示すようにしても良いし、コマンドの内容(コマンドデータに含まれる情報)によって直接的にバックアップデータの領域の読出要求するようにしても良い。また、特定のコマンドの実行手順によりバックアップデータの領域の読出要求を示す形態としては、特定のコマンドが連続して与えられた場合に各バックアップデータの領域を順次読み出すようにしても良いし、複数種類のコマンドが特定の順序で与えられた場合に各バックアップデータの領域を順次読み出すようにしても良い。また、コマンドの内容(コマンドデータに含まれる情報)によって直接的にバックアップデータの領域の読出要求を示す形態としては、コマンドコードあるいは処理パラメータなどで各レコードの各バックアップデータの領域の読出を指定するようにすれば良い。上記のような運用形態に応じて、CPU11は、受信したコマンドがバックアップデータの領域の読出しを要求するコマンドであるか否かを判断するようになっている。
ここでは、図8に示す処理例のように、「カレントレコード」が指定されたリードレコードコマンドが与えられた場合に、カレントレコードの各バックアップデータの領域を順次読み出すようにするものとする。このような形態であれば、CPU11は、上記ステップS42の処理として、当該コマンドにおいて読出対象とするレコードが、レコード番号で指定されている(あるいは、カレント以外のレコードが指定されている)か、「カレントレコード」として指定されているかを判定する(ステップS42)。
上記リードレコードコマンドにおいてレコードの指定が「カレントレコード」である場合、つまり、受信コマンドがバックアップデータの領域の読出しを要求する場合(ステップS42、YES)、CPU11は、現在のカレントレコードにバックアップデータの領域が設定されているか否かを判断する(ステップS43)。
この判断によりカレントレコードにバックアップデータの領域が設定されていると判断した場合(ステップS43、YES)、CPU11は、受信したコマンドの前までに受信したリードレコードコマンドによって当該レコードの全バックアップデータの領域のデータが読出し処理済みであるか否かを判断する(ステップS44)。つまり、上記ステップS44において、上記CPU11は、前回までに受信したリードコマンドによって全バックアップデータの領域のデータを読み出したか否かを判断する。
上記判断によりカレントレコードの全バックアップデータの領域のデータが読出し済みでないと判断した場合(ステップS44、NO)、CPU11は、当該コマンドで指定されたレコード(カレントレコード)における各バックアップデータの領域のデータを順次読み出す(ステップS45)。たとえば、上記CPU11は、バックアップデータの領域のデータを読み出すごとに、ワーキングメモリ13に設けた図示しないカウンタをカウントアップする。これにより、連続してカレントレコードを指定するリードレコードコマンドを受けるごとに、CPU11は、カウンタの値に基づいて順に各バックアップデータの領域のデータを読み出す。
カレントレコードのバックアップデータの領域のデータを読み出すと、CPU11は、当該コマンドの送信元であるICカード処理装置2に読み出したデータを含むレスポンスデータを送信する(ステップS46)。このように、上記ステップS40〜S46までの処理によって、当該ICカード1では、カレントレコードのバックアップデータの領域のデータが読み出される。このような処理を繰り返すことで、当該ICカード1は、各バックアップデータの領域のデータを順に読み出すことが可能となっている。
また、図8に示す処理例では、上記ステップS42において、上記受信したコマンドにおいてレコードの指定が「カレントレコード」でない場合、つまり、受信したコマンドにおけるレコードの指定がファイルIDとレコード番号とによるものである場合(ステップS42、NO)、CPU11は、当該リードレコードコマンドが指定レコードのレコードデータの領域のデータ(最新のデータ)の読出しを要求するものであると判定する。ただし、カレントレコードを変更しないリードコマンドを受信した場合は、上記ステップS43へ進むようにしても良い。
受信したコマンドにおけるレコードの指定がファイルIDとレコード番号とによるものである場合(ステップS42、NO)、CPU11は、ファイルIDとレコード番号とにより読出対象とするレコード(指定されたレコード)を特定する(ステップS48)。つまり、CPU11は、当該コマンドで指定されたファイルIDによりレコードファイルとしてのEFを特定し、さらに、レコード番号に基づいて当該EF内におけるレコードを特定する。この際、上記CPU11は、指定されたレコードをカレントレコードとする。
受信したコマンドで指定されているファイルID及びレコード番号によりレコードを特定すると、上記CPU11は、特定されたレコードのレコードデータの領域のデータを読出し(ステップS49)、当該コマンドの送信元であるICカード処理装置2に読み出したデータを含むレスポンスデータを送信する(ステップS46)。
また、図8に示す処理例では、ステップS43でカレントレコードにバックアップデータの領域が設定されていないと判断した場合(ステップS43、NO)、CPU11は、ステップS49へ進み、カレントレコードのレコードデータの領域のデータを読み出す処理を行うものとする。ただし、ステップS43でNOと判断される場合は、バックアップデータの領域の読出しを要求するコマンドを受信したにも係らず、当該コマンドが指定するレコード(カレントレコード)にバックアップデータの領域が設定されていないと判断した場合である。このため、CPU11は、ステップS47へ進み、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信するようにしても良い。
また、図8に示す処理例では、ステップS44で全バックアップデータの領域のデータが直前のリードコマンドによって読出し済みであると判断した場合(ステップS44、YES)、CPU11は、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信する(ステップS47)。これは、バックアップデータの領域の読出しを要求するコマンド(カレントレコードを指定したリードレコードコマンド)が連続して与えられた場合、連続して特定のレコード(カレントレコード)における全バックアップデータの領域のデータが読出し済みであることをエラー通知によって通知する仕組みである。
ただし、上記ステップS44で全バックアップデータの領域のデータが直前までのリードコマンドで読出し済みであると判断した場合(ステップS44、YES)、CPU11は、図8に点線で示すように、ステップS49へ進み、カレントレコードのレコードデータの領域のデータを読み出す処理を行うようにしても良い。これは、バックアップデータの領域の読出しを要求するコマンド(カレントレコードを指定したリードレコードコマンド)が連続して与えられた場合に、特定のレコード(カレントレコード)における各バックアップデータの領域の各データとレコードデータの領域のデータとを順に読み出すようにする仕組みである。この場合、ICカード処理装置2では、カレントレコードを指定したリードレコードコマンドを連続して与えることにより、ICカード1からカレントレコードの各バックアップデータの領域のデータとレコードデータの領域のデータとを順に読み出す制御が可能となる。
上記のような読出処理では、レコード番号を指定したリードコマンドに対しては、当該レコードのレコードデータの領域に記憶されている最新のデータを読出し、カレントレコードを指定したリードコマンド(バックアップデータの領域のデータの読出しを要求するコマンド)に対しては、当該レコードのバックアップデータの領域に記憶されているデータを読み出すようになっている。つまり、レコードデータの領域のデータを読み出した後に連続して特定のレコードの読出しが要求される場合、各バックアップデータの領域のデータを順に読み出すようになっている。
これにより、擬似的な2次元配列ファイルに格納されている複数のバックアップデータを簡単な手順で順に読み出すことができ、レコード番号の管理などが複雑化することなく、取引履歴情報などの更新されることが予測されるデータについて最新のデータおよび更新前の複数のデータを容易に読み出すことができる。
次に、レコードァイルの第3の構成例について説明する。
第3の構成例は、レコードファイル内において、レコードを格納するためのレコード領域とバックアップデータを格納するためのバックアップ領域(データ退避領域)とを設けるものである。上記バックアップ領域は、レコード領域内の各レコードに対応して予め確保されているものではなく、保存すべきバックアップデータに応じて適宜確保されるものである。すなわち、第1及び第2の構成例では、各レコードの記憶領域内にバックアップデータを保存するための記憶領域を確保しておくのに対して、第3の構成例では、各レコードの記憶領域とは別の記憶領域(バックアップ領域)に各レコードに対するバックアップデータを保存する。なお、第3の構成例では、1つのレコードに対して1つのバックアップデータを保存するものとする。
図9は、レコードファイルの第3の構成例を示す図である。
図9に示す第3の構成例は、固定長順編成レコードファイルの構成例である。図9に示す第3の構成例のレコードファイルは、ファイルIDで特定される。ファイルIDで特定されるレコードファイルは、レコード領域とバックアップ領域とを有している。上記レコード領域には、複数のレコードが格納される。レコード領域に格納される各レコードは、それぞれレコード番号とレコードデータとにより構成される。各レコードには、レコード番号とレコードデータとを記憶するための記憶領域が割当てられる。
また、上記バックアップ領域には、レコード領域における何れかのレコードに対するバックアップレコードが格納される。バックアップ領域に格納される各バックアップレコードは、それぞれレコード番号とバックアップデータとにより構成される。各バックアップレコードのレコード番号は、バックアップしているレコードを示すレコード番号である。つまり、バックアップ領域における各バックアップデータは、対応するレコード番号で示されるレコードのレコードデータが更新される直前のレコードデータ(つまりバックアップされたデータ)である。
たとえば、図9に示すバックアップ領域には、レコード番号「03」のレコードに対するバックアップデータとレコード番号「05」のレコードに対するバックアップデータとが記憶されている。つまり、レコード番号「03」および「05」の各レコードには、バックアップデータがバックアップ領域に保存されている。これは、レコード番号「03」及び「05」の各レコードが少なくとも1回更新されていることを示している。
第3の構成例では、あるレコードを更新する場合、レコード領域に格納されている当該レコードのレコードデータが、バックアップデータとして当該レコード番号に対応づけてバックアップ領域に書き込まれる。つまり、当該レコードファイルは、バックアップデータがバックアップ領域に保存された後、レコード領域における当該レコードのレコードデータが書換えられる。これにより、最新のレコードデータがレコード領域に記憶されるとともに、最新のレコードデータに更新する直前のレコードデータがバックアップデータとしてバックアップ領域に保存される。
上記のようなレコード領域における各レコードのレコードデータには、ファイルIDとレコード番号とによりアクセスが可能となっている。たとえば、図9に示す例では、ファイルID「0001」かつレコード番号「01」を指定することにより、レコード番号「01」のレコードデータにアクセスすることが可能となっている。同様に、バックアップデータが存在するレコード番号「03」(又は「05」)のレコードデータに対しても、ファイルID「0001」とレコード番号「03」(又は「05」)とを指定することによりアクセスすることが可能となっている。
また、上記バックアップ領域における各レコードのバックアップデータ(更新前のデータ)には、所定の手順によりアクセスすることが可能となっている。バックアップ領域のバックアップデータにアクセスするための手法としては、たとえば、バックアップデータへのアクセスを要求するコマンドを定義しても良いし、コマンドにおける処理パラメータでバックアップデータの領域を指定するように定義しても良い。また、特定のコマンドを受信した順序、あるいは、特定のコマンドを受信した回数などに基づいて、バックアップデータへのアクセスを行うようにしても良い。
ここでは、カレントレコードを指定するコマンドによりカレントレコードに対するバックアップデータにアクセスする手法について説明する。
たとえば、ファイルID「0001」、かつ、レコード番号「03」を指定したデータの読出要求コマンド(リードレコードコマンド)を受信したICカード1のCPU11は、図9に示すようなファイルID「0001」のレコードファイルにおけるレコード番号「03」のレコードデータをレコード領域から読み出す。この際、当該ICカード1では、カレントレコードがファイルID「0001」のレコードファイルにおけるレコード番号「03」のレコードとなる。このようなカレントレコードを示す情報は、たとえば、ワーキングメモリ13に保持される。
この状態において、続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、カレントレコードであるファイルID「0001」のレコードファイルにおけるレコード番号「03」のレコードに対するバックアップデータを当該レコードファイルのバックアップ領域から読み出す。なお、このようなカレントレコードを指定したリードレコードコマンドによりバックアップデータの領域を読出した回数は、たとえば、ワーキングメモリ13に保持されるものとする。
なお、2度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、カレントレコードに対するバックアップデータが読出し済みであるためエラーとして処理するか、あるいは、当該カレントレコードのレコードデータを読み出す処理を行う。前者のような形態では、ICカード処理装置2は、ICカード1からエラー通知を受けることにより、当該レコードに対するバックアップデータを読み出したことを確実に識別できる。また、後者のような形態では、ICカード処理装置2は、カレントレコードを指定するリードレコードコマンドを連続してICカード1に与えることにより、カレントレコードのレコードデータ、および、カレントレコードに対するバックアップデータを交互に読み出すことが可能となる。
次に、上記第3の構成例のレコードファイルにおける各レコードに対するデータの書換え処理の流れについて説明する。
図10は、第3の構成例のレコードファイルにおけるレコードに対するデータの書換え処理を説明するためのフローチャートである。
まず、ICカード処理装置2からコマンドを受信した場合(ステップS110)、CPU11は、コマンドコードなどにより受信したコマンドがデータの書換えを要求するコマンドであるか否かを判断する(ステップS111)。この判断により受信したコマンドがデータの書換えコマンドであると判断した場合(ステップS111、YES)、CPU11は、当該コマンドで指定されたレコードを特定する(ステップS112)。たとえば、受信したコマンドにおいてファイルIDとレコード番号とが指定されている場合、CPU11は、指定されたファイルIDとレコード番号とにより特定されるレコードのデータを書き換えるものと判定する。
指定されたレコードを特定すると、CPU11は、指定されたレコードにおける更新前のレコードデータをバックアップデータとして保存するか否かを判断するものである(ステップS113)。指定レコードに対するバックアップの要否は、種々の設定方法が考えられる。たとえば、各レコードに対するバックアップの要否は、レコードごとに設定しても良いし、レコードファイルごとに設定するようにしても良い。また、書換えコマンドにおけるパラメータでバックアップの要否を指定するようにしても良いし、特定の送信元からの書換えコマンドに対してのみバックアップを行うようにしても良い。
上記判断により指定されたレコードに対するバックアップが必要であると判断した場合(ステップS113、YES)、CPU11は、当該レコードのレコードデータを当該レコードのバックアップデータとしてバックアップ領域に保存する処理を行う(ステップS114)。ここで、CPU11は、当該レコードのレコードデータを読み出し、読み出したデータをバックアップデータとして当該レコードのレコード番号に対応づけてバックアップ領域に書き込む。たとえば、上記ステップS114において、既にバックアップ領域に当該レコードのバックアップデータが格納されている場合(つまり、当該レコード番号のバックアップデータが既に存在する場合)、CPU11は、読み出したレコードデータを当該レコード番号のバックアップデータに上書きする。すなわち、CPU11は、バックアップ領域における当該レコード番号に対応するバックアップデータを当該レコードの更新直前のレコードデータに書換える。
上記バックアップ領域にバックアップデータを書き込むと、CPU11は、上記レコード領域における当該レコードのレコードデータを書換えコマンドで指定される書換えデータに書き換える(ステップS115)。このようなレコードデータの書換えが正常終了すると、CPU11は、受信した書換えコマンドに対する処理が正常終了した旨のレスポンスをICカード処理装置2に送信し(ステップS116)、処理を終了する。
なお、上記ステップS115においてレコードデータの書換えが失敗した場合(たとえば、レコードデータの書換えがリトライできない状態となった場合)、CPU11は、当該レコードの復旧処理として、上記バックアップ領域に書き込んだ当該レコードのバックアップデータを再度、当該レコードのレコードデータとして書き込むようにしても良い。このように、当該ICカード1では、レコードデータの書換えが失敗した場合に、バックアップ領域に保存したバックアップデータでレコードデータを復旧させる(コマンドの受信前の状態に戻す)機能も実現できる。このような機能によれば、当該ICカードの動作を安定化させることが可能となる。
上記のように、第3の構成例のレコードファイルに対するレコードデータの書換え処理は、バックアップ領域に更新前のレコードデータをレコード番号と対応づけたバックアップデータとして退避させ、当該レコード領域における当該レコードのレコードデータを最新のデータ(書換えデータ)に書き換える処理を行うようにしたものである。
これにより、更新前のレコードデータを別のレコードとして保存するコマンドを与えたりすることなく、更新前のレコードデータを随時保存した状態でレコードデータの書換え処理が実行できる。
次に、上記第3の構成例のレコードファイルにおける各レコードに対するデータの読出し処理について説明する。
図11は、第3の構成例のレコードファイルにおけるレコードに対するデータの読出し処理を説明するためのフローチャートである。
まず、ICカード処理装置2からコマンドを受信した場合(ステップS120)、CPU11は、当該コマンドのコマンドコードに基づいてデータの読出しを要求するリードレコードコマンドであるか否かを判断する(ステップS121)。この判断により受信したコマンドがリードレコードコマンドであると判断した場合(ステップS121、YES)、CPU11は、受信したリードレコードコマンドがバックアップデータの読出しを要求するものであるか否かを判定する(ステップS122)。
バックアップデータの読出を要求する手法には、上述したような様々な形態が考えられる。たとえば、特定のコマンドの実行手順などによりバックアップデータの読出要求を示すようにしても良いし、コマンドの内容(コマンドデータに含まれる情報)によって直接的にバックアップデータの読出要求を示すようにしても良い。
特定のコマンドの実行手順によりバックアップデータの読出要求を示す形態としては、特定のコマンドが連続して与えられた場合にバックアップデータを読み出すようにしても良いし、複数種類のコマンドが特定の順序で与えられた場合にバックアップデータを読み出すようにしても良い。また、コマンドの内容(コマンドデータに含まれる情報)によって直接的にバックアップデータの読出を要求する形態としては、コマンドコードあるいは処理パラメータなどでバックアップデータの読出を指定するようにすれば良い。上記のような運用形態に従って、CPU11は、受信したコマンドがバックアップデータの領域の読出しを要求するコマンドであるか否かを判断するようになっている。
ここでは、図11に示す処理例のように、「カレントレコード」が指定されたリードレコードコマンドが与えられた場合に、カレントレコードのバックアップデータを読み出すようにするものとする。このような形態であれば、CPU11は、受信したリードレコードコマンドにおいて読出対象とするレコードが、「カレントレコード」として指定されているか、レコード番号で指定されているかにより、バックアップデータの読出要求であるか否かを判定する(ステップS122)。
上記リードレコードコマンドにおいてレコードの指定が「カレントレコード」である場合、つまり、受信コマンドがバックアップデータの読出要求である場合(ステップS122、YES)、CPU11は、現在のカレントレコード(指定されたレコード)に対するバックアップデータがバックアップ領域に存在するか否かを判断する(ステップS123)。これは、カレントレコードのレコード番号がバックアップ領域に存在するか否かにより判断できる。
上記判断により現在のカレントレコード(指定されたレコード)に対するバックアップデータが存在すると判断した場合(ステップS123、YES)、CPU11は、当該リードレコードコマンドの直前のコマンドによる処理として当該バックアップデータの読出し処理を行ったか否かを判断する(ステップS124)。言い換えると、上記ステップS124において、上記CPU11は、連続してバックアップデータの読出しを要求するコマンドを受信したか否かを判断している。
上記判断によりカレントレコードに対するバックアップデータが読出し済みでないと判断した場合(ステップS124、NO)、CPU11は、当該コマンドで指定されたレコード(カレントレコード)に対するバックアップデータをバックアップ領域から読み出す(ステップS125)。カレントレコードに対するバックアップデータを読み出すと、CPU11は、当該コマンドの送信元であるICカード処理装置2へ読み出したデータを含むレスポンスデータを送信する(ステップS126)。このように、上記ステップS120〜S126までの処理によって、当該ICカード1では、カレントレコードのバックアップデータが読み出される。
また、図11に示す処理例では、上記ステップS122において、上記受信したコマンドにおいてレコードの指定が「カレントレコード」でない場合、つまり、受信したコマンドにおけるレコードの指定がファイルIDとレコード番号とによるものである場合(ステップS122、NO)、CPU11は、当該コマンドが指定レコードのレコードデータをレコード領域から読出すことを要求するものであると判定する。
すなわち、受信したコマンドにおいてファイルIDとレコード番号とによりレコードが指定されている場合(ステップS122、NO)、CPU11は、ファイルIDとレコード番号とにより指定されるレコードを読出対象として特定する(ステップS128)。つまり、CPU11は、当該コマンドで指定されたファイルIDによりレコードファイルとしてのEFを特定し、さらに、レコード番号に基づいて当該EF内におけるレコードを特定する。この際、上記CPU11は、特定されたレコードをカレントレコードに設定する。
受信したコマンドで指定されているファイルID及びレコード番号によりレコードを特定すると、上記CPU11は、特定したレコードのレコードデータを読出し(ステップS129)、当該コマンドの送信元であるICカード処理装置2へ読み出したデータを含むレスポンスデータを送信する(ステップS126)。
また、図11に示す処理例では、カレントレコードに対するバックアップデータが存在しない場合(ステップS123、NO)、CPU11は、ステップS129へ進み、カレントレコードのレコードデータを読み出す処理を行うものとする。ただし、CPU11は、ステップS127へ進み、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信するようにしても良い。この場合、エラーであることを示すレスポンスには、受信したコマンドで指定されるレコード(カレントレコード)に対するバックアップデータが存在しない旨を通知するようにしても良い。
また、図11に示す処理例では、バックアップデータが直前のコマンドによって読出し済みであると判断した場合(ステップS124、YES)、CPU11は、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信する(ステップS127)。これは、バックアップデータの読出しを要求するコマンド(カレントレコードを指定したリードレコードコマンド)が連続して与えられた場合には、連続して特定のレコード(カレントレコード)におけるバックアップデータの読出しを行わないようにするための仕組みである。
ただし、上記ステップS124でバックアップデータが直前のコマンドによって読出し済みであると判断した場合(ステップS124、YES)、CPU11は、図11に点線で示すように、ステップS129へ進み、カレントレコードのレコードデータを読み出す処理を行うようにしても良い。これは、カレントレコードを指定したリードレコードコマンドが連続して与えられた場合に、特定のレコード(カレントレコード)におけるバックアップデータとレコードデータとを交互に読み出すようにするための仕組みである。この場合、ICカード処理装置2では、カレントレコードを指定したリードレコードコマンドを連続して与えることにより、ICカード1からカレントレコードのバックアップデータとレコードデータとを交互に読み出す制御が可能となる。
上記のような第3の構成例のレコードファイルに対する読出処理では、ICカード1は、レコード番号を指定したリードコマンドに対しては、当該レコードのレコードデータを読出し、カレントレコードを指定したリードコマンド(バックアップデータの読出しを要求するコマンド)に対しては、当該レコード(カレントレコード)に対するバックアップデータを読み出すようになっている。
これにより、コマンドの内容によって特定のレコードのレコードデータを読み出したり、バックアップデータを読み出したりすることができる。すなわち、レコードファイルを第3の構成例としたICカードでは、レコードデータとバックアップデータとの管理などが容易化できる。この結果として、上記ICカードでは、たとえば、取引履歴情報などの更新されることが予測されるデータについて、最新のデータ(レコードデータ)および更新前のデータ(バックアップデータ)を容易に管理できる。
次に、レコードァイルの第4の構成例について説明する。
第4の構成例は、上記第3の構成例と同様に、レコードファイル内にレコードを格納するためのレコード領域とバックアップデータを格納するためのバックアップ領域とを設ける。ただし、第4の構成例では、上記バックアップ領域には、1つのレコードに対して複数のバックアップデータが保存可能となるものとする。
図12は、レコードファイルの第4の構成例を示す図である。
図12に示す第4の構成例は、固定長順編成レコードファイルの構成例である。図12に示す第4の構成例のレコードファイルは、ファイルIDで特定されるファイルである。図12に示すレコードファイルは、レコード領域とバックアップ領域とを有している。上記レコード領域には、複数のレコードが格納される。レコード領域に格納される各レコードは、それぞれレコード番号とレコードデータとにより構成される。つまり、各レコードには、レコード領域内において、レコード番号の記憶領域とレコードデータの記憶領域とが割当てられる。
上記バックアップ領域には、レコード領域における何れかのレコードに対するバックアップレコードが格納される。バックアップ領域に格納される各バックアップレコードは、それぞれレコード番号と世代情報(世代番号)とバックアップデータとにより構成される。つまり、各バックアップレコードには、バックアップ領域内において、レコード番号の記憶領域と世代番号の記憶領域とバックアップデータの記憶領域とが割当てられる。
バックアップレコードのレコード番号は、バックアップしているレコードを示すレコード番号である。バックアップレコードの世代番号は、対応する各レコードに対するバックアップデータの世代を示す情報である。バックアップデータは、対応するレコード番号および世代番号により、どのレコードの何世代前のレコードデータであるかが識別される。すなわち、第4の構成例では、1つのレコードに対して、複数世代のバックアップデータが保存可能となっている。これは、1つのレコードに対して、更新直前(第1世代)のレコードデータだけでなく、複数世代分のレコードデータをバックアップデータとして保存できることを意味している。
また、世代番号には、保存可能な世代の数に応じた上限値を設けても良い。たとえば、第3世代までのバックアップデータを保存する運用形態では、世代番号の上限値は、「3」と設定すれば良い。この場合、各レコードに対して最大3世代分のバックアップデータが保存可能な運用形態となる。なお、以下の説明では、世代番号の上限値が「3」であり、レコードデータの更新ごとにバックアップデータが生成されるものとする。
たとえば、図12に示すバックアップ領域には、レコード番号「01」のレコードに対して、世代番号「1」(第1世代)、世代番号「2」(第2世代)及び世代番号「3」(第3世代)の3つのバックアップデータが保存されている。これは、レコード番号「01」のレコードが少なくとも3回更新されていることを示している。また、図12に示すバックアップ領域には、レコード番号「04」のレコードに対して、世代番号「1」(第1世代)及び世代番号「2」(第2世代)の2つのバックアップデータが保存されている。これは、レコード番号「04」のレコードが2回更新されていることを示している。また、図12に示すバックアップ領域には、レコード番号「07」のレコードに対して、世代番号「1」(第1世代)の1つのバックアップデータが保存されている。これは、レコード番号「07」のレコードが1回更新されていることを示している。
第4の構成例のレコードデータを更新する場合、更新直前のレコードデータが1世代前のバックアップデータ(世代番号「1」のバックアップデータ)としてバックアップ領域に保存される。この際、当該レコードに対するバックアップデータが既にバックアップ領域に存在している場合、それらのバックアップデータに対する世代番号がインクリメント(1世代分古く)される。これにより、当該レコードに対する複数のバックアップデータの世代番号が古い順にセットされる。
また、世代番号に上限値が設定されている場合、世代番号が上限値を超えるバックアップデータは削除される。たとえば、世代番号の上限値が「3」である場合、世代番号が「3」を超えるバックアップデータ(世代番号が「4」以上となるバックアップデータ)は削除される。このような手順により、バックアップ領域には、各レコードに対する複数世代のバックアップデータが保存される。
ここでは、第4の構成例のレコードファイルに対するアクセスの手法としては、上記第3の構成例のレコードファイルに対するアクセスの手法が適用できる。ここでは、第4の構成例のレコードファイルに対するアクセス方法の一例として、ファイルIDとレコード番号とを指定するコマンドに応じてレコードデータにアクセスし、「カレントレコード」を指定するコマンドによりバックアップデータにアクセスする運用形態について説明する。
このようなアクセス方法では、たとえば、ファイルID「0001」かつレコード番号「01」を指定することにより、図12に示すレコード番号「01」のレコードデータにアクセスすることが可能となる。この際、当該ICカード1は、ファイルID「0001」のレコードファイルにおけるレコード番号「01」のレコードをカレントレコードとする。このようなカレントレコードを示す情報は、たとえば、ワーキングメモリ13に保持される。
この状態において、カレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、カレントレコードであるファイルID「0001」のレコードファイルにおけるレコード番号「01」のレコードに対する1世代前(世代番号が「1」)のバックアップデータを当該レコードファイルのバックアップ領域から読み出す。このようなカレントレコードを指定したリードレコードコマンドによりバックアップデータを読出した回数は、たとえば、ワーキングメモリ13に保持される。なお、カレントレコード指定でなくとも、2度連続してファイルID「0001」かつレコード番号「01」のレコードを指定したリードレコードコマンドを受信した場合も、上記同様に、1世代前のバックアップデータを読み出すようにしても良い。
さらに、続けて同じコマンドを受信した場合、つまり、2度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、カレントレコードであるレコード番号「01」のレコードにおける2世代前(世代番号が「2」)のバックアップデータを読み出す。なお、3度連続してファイルID「0001」かつレコード番号「02」のレコードを指定したリードレコードコマンドを受信した場合も、上記同様に、2世代前のバックアップデータを読み出すようにしても良い。
さらに続けて同じコマンドを受信した場合、つまり、3度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、カレントレコードであるレコード番号「01」のレコードに対する3世代前(世代番号が「3」)のバックアップデータを読み出す。なお、4度連続してファイルID「0001」かつレコード番号「02」のレコードを指定したリードレコードコマンドを受信した場合も、上記同様に、3世代前のバックアップデータを読み出すようにしても良い。
ここで、ICカード1は、各レコードに対するバックアップデータが3世代前まで保存される運用形態であるものとする。このような運用形態では、4度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、当該カレントレコードに対する全バックアップデータが読出し済みである。このため、CPU11は、当該コマンドをエラーとして処理するか、あるいは、当該レコードのレコードデータを読み出す処理を行う。前者のような形態では、ICカード処理装置2は、ICカード1からエラー通知を受けることにより、当該カレントレコードに対する全バックアップデータを読み出したことを容易に識別できる。また、後者のような形態では、ICカード処理装置2は、カレントレコードを指定するリードコマンドを連続してICカード1に与えることにより、各レコードにおけるレコードデータ、および、各世代のバックアップデータを順次循環させて読み出すことが可能となる。
次に、上記第4の構成例のレコードファイルにおけるレコードデータの書換え処理について説明する。
図13は、第4の構成例のレコードファイルにおけるレコードデータの書換え処理を説明するためのフローチャートである。
まず、ICカード処理装置2からコマンドを受信した場合(ステップS130)、CPU11は、当該コマンドのコマンドコードに基づいてデータの書換えを要求するコマンドであるか否かを判断する(ステップS131)。この判断により受信したコマンドがデータの書換えコマンドであると判断した場合(ステップS131、YES)、CPU11は、当該コマンドで指定されたレコードを特定する(ステップS132)。たとえば、ファイルIDとレコード番号とが指定されている場合、CPU11は、指定されたファイルIDとレコード番号とにより特定されるレコードのレコードデータを書き換えるものと判定する。
指定されたレコードを特定すると、CPU11は、指定されたレコードに対するバックアップが必要か否かを判断する(ステップS133)。指定レコードに対するバックアップの要否は、種々の設定方法が考えられる。たとえば、各レコードに対するバックアップの要否は、レコードごとに設定しても良いし、レコードファイルごとに設定するようにしても良い。また、書換えコマンドにおけるパラメータでバックアップの要否を指定するようにしても良いし、特定の送信元からの書換えコマンドに対してのみバックアップを行うようにしても良い。
上記判断により指定されたレコードに対するバックアップが必要であると判断した場合、CPU11は、当該レコードのレコードデータをバックアップデータとしてバックアップ領域に保存する処理を行う(ステップS134〜S136)。
すなわち、CPU11は、まず、バックアップ領域に当該レコードに対する上限数のバックアップデータが保存されているか否かを判断する(ステップS134)。たとえば、上限数が「3」である場合、CPU11は、世代番号が「3」のバックアップデータが存在するか否かを判断する。上記判断により上限数のバックアップデータが保存されていると判断した場合(ステップS134、YES)、CPU11は、最も古い世代番号のバックアップデータを削除する(ステップS135)。このような状態において、CPU11は、レコードデータを最新世代のバックアップデータとして書込み処理を行う(ステップS136)。すなわち、CPU11は、レコードデータを世代番号「1」のバックアップデータとしてバックアップ領域に書き込む。これとともに、CPU11は、バックアップ領域に存在している当該レコードに対する他のバックアップデータの世代番号をインクリメント(更新)する。
また、上限数のバックアップデータが既に存在する場合、上記ステップS134〜S136の処理は、最古のバックアップデータに更新前のレコードデータを上書きし、各バックアップデータの世代番号を更新することにより実現するようにしても良い。また、上限数のバックアップデータが存在する場合、当該レコードにおける更新前のレコードデータ及び各世代のバックアップデータを順次次の世代のバックアップデータに上書きすることにより実現しても良い。何れの実現形態であっても、結果として、当該レコードに対する上限数のバックアップデータがバックアップ領域に格納される。
更新前のレコードデータを最新のバックアップデータとして保存すると、CPU11は、当該レコードのレコードデータを受信した書換えコマンドに含まれる書換えデータに書き換える(ステップS137)。このようなレコードデータの書換えが正常終了すると、CPU11は、受信したコマンドに対する処理が正常終了した旨のレスポンスをICカード処理装置2に送信し(ステップS138)、処理を終了する。
なお、上記ステップS137においてレコードデータの書換えが失敗した場合(たとえば、レコードデータの書換えがリトライできない状態となった場合)、CPU11は、当該レコードの復旧処理として、バックアップ領域に保存した最新のバックアップデータ(更新前のレコードデータ)を再度、当該レコードのレコードデータとして書き込むようにしても良い。このように、当該ICカード1では、レコードデータの書換えが失敗した場合にバックアップ領域に保存したバックアップデータでレコードデータを復旧させる(コマンドの受信前の状態に戻す)機能も実現できる。このような機能によれば、ICカード1としての動作を安定化させることが可能である。
上記のような第4の構成例のレコードファイルに対する書込み処理によれば、あるレコードデータを更新する場合、更新前のレコードデータをバックアップデータとしてバックアップ領域に退避させた後、レコードデータを書き換えられる。また、バックアップ領域には、新しい順に世代番号を付与した複数のバックアップデータが保存される。これにより、更新前のレコードデータを別のレコードとして保存するコマンドを与えたりすることなく、更新前のレコードデータを複数世代分保存しておくことが可能となる。
また、上記のような書込み処理では、上限数のバックアップデータが既に保存されている場合、最古のバックアップデータを削除して、最新のバックアップデータを保存する。これにより、バックアップ領域には、各レコードに対して、新しい順に最大上限数分のバックアップデータが常時保存できる。
次に、上記第4の構成例のレコードファイルにおける各レコードに対するデータの読出し処理について説明する。
図14は、第4の構成例のレコードファイルにおけるレコードに対するデータの読出し処理を説明するためのフローチャートである。
まず、ICカード処理装置2からコマンドを受信した場合(ステップS140)、CPU11は、当該コマンドのコマンドコードに基づいてレコードデータの読出しを要求するリードレコードコマンドであるか否かを判断する(ステップS141)。この判断により受信したコマンドがリードレコードコマンドであると判断した場合(ステップS141、YES)、CPU11は、受信したリードレコードコマンドがバックアップデータの読出しを要求するコマンドであるか否かを判定する(ステップS142)。
バックアップデータの読出を要求する手法には、上述したような様々な形態が考えられる。たとえば、特定のコマンドの実行手順などによりバックアップデータの読出要求を示すようにしても良いし、コマンドの内容(コマンドデータに含まれる情報)によって直接的にバックアップデータの読出要求を示すようにしても良い。特定のコマンドの実行手順によりバックアップデータの読出要求を示す形態としては、特定のコマンドが連続して与えられた場合にバックアップデータを読み出すようにしても良いし、複数種類のコマンドが特定の順序で与えられた場合にバックアップデータを読み出すようにしても良い。
また、コマンドの内容(コマンドデータに含まれる情報)によって直接的にバックアップデータの読出を要求する形態としては、コマンドコードあるいは処理パラメータなどでバックアップデータの読出を指定するようにすれば良い。上記のような運用形態に従って、CPU11は、受信したコマンドがバックアップデータの領域の読出しを要求するコマンドであるか否かを判断するようになっている。
ここでは、図11に示す処理例のように、「カレントレコード」が指定されたリードレコードコマンドが与えられた場合に、カレントレコードのバックアップデータを読み出すようにするものとする。このような形態であれば、CPU11は、受信したリードレコードコマンドにおいて読出対象とするレコードが、「カレントレコード」として指定されているか、レコード番号で指定されているかにより、バックアップデータの読出要求であるか否かを判定する(ステップS142)。
上記リードレコードコマンドにおいてレコードの指定が「カレントレコード」である場合、つまり、受信コマンドがバックアップデータの読出しを要求する場合(ステップS142、YES)、CPU11は、現在のカレントレコードに対するバックアップデータがバックアップ領域に保存されているか否かを判断する(ステップS143)。
この判断によりカレントレコードに対するバックアップデータが保存されていると判断した場合(ステップS143、YES)、CPU11は、当該レコードに対するバックアップデータが読出し処理済みであるか否かを判断する(ステップS144)。つまり、上記ステップS144において、上記CPU11は、前回までに受信したリードコマンドによって当該レコードに対する全バックアップデータが読出し済みでないかを判断する。
上記判断によりカレントレコードに対する全バックアップデータが読出し済みでないと判断した場合(ステップS144、NO)、CPU11は、当該コマンドで指定されたレコード(カレントレコード)に対する各バックアップデータを順次読み出す(ステップS145)。たとえば、上記CPU11は、カレントレコードに対するバックアップデータを読み出すごとに、ワーキングメモリ13に設けた図示しないカウンタをカウントアップする。連続してカレントレコードを指定するリードレコードコマンドを受けた場合、CPU11は、上記カウンタの値に応じた世代番号のバックアップデータをバックアップ領域から読み出す。
カレントレコードに対するバックアップデータを読み出すと、CPU11は、当該コマンドの送信元であるICカード処理装置2に読み出したデータを含むレスポンスデータを送信する(ステップS146)。このように、上記ステップS140〜S146までの処理によって、当該ICカード1では、カレントレコードに対するバックアップデータが読み出される。このような処理を繰り返すことで、当該ICカード1は、カレントレコードに対する複数のバックアップデータを順に読み出すことが可能となっている。
また、上記ステップS142において、上記受信したコマンドにおいてレコードの指定が「カレントレコード」でない場合、つまり、受信したコマンドにおけるレコードの指定がファイルIDとレコード番号とによるものである場合(ステップS142、NO)、CPU11は、当該リードレコードコマンドが指定レコードのレコードデータの読出しを要求するものであると判定する。なお、ファイルIDとレコード番号とでカレントレコードを指定するコマンドを受信した場合には、上記ステップS143へ進むようにしても良い。
受信したコマンドにおけるレコードの指定がファイルIDとレコード番号とによるものである場合(ステップS142、NO)、CPU11は、ファイルIDとレコード番号とにより読出対象とするレコード(指定されたレコード)を特定する(ステップS148)。つまり、CPU11は、当該コマンドで指定されたファイルIDによりレコードファイルとしてのEFを特定し、さらに、レコード番号に基づいて当該EF内におけるレコードを特定する。この際、上記CPU11は、指定されたレコードをカレントレコードとする。
受信したコマンドで指定されているファイルID及びレコード番号によりレコードを特定すると、上記CPU11は、特定されたレコードのレコードデータを読出す(ステップS149)。指定されたレコードデータを読み出すと、CPU11は、当該コマンドの送信元であるICカード処理装置2に読み出したレコードデータを含むレスポンスデータを送信する(ステップS146)。
また、ステップS143でカレントレコードに対するバックアップデータが存在しないと判断した場合(ステップS143、NO)、CPU11は、ステップS149へ進み、カレントレコードに対するレコードデータを読み出す処理を行うようにしても良い。ただし、上記ステップS143でNOと判断される場合は、バックアップデータの読出しを要求するコマンドを受信したにも係らず、当該コマンドが指定するレコード(カレントレコード)に対するバックアップデータが設定されていないと判断した場合である。このため、CPU11は、ステップS147へ進み、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信するようにしても良い。
また、上記ステップS144で全バックアップデータのが読出し済みであると判断した場合(ステップS144、YES)、CPU11は、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信する(ステップS147)。これは、カレントレコードに対する全バックアップデータが読出し済みとなったことをエラー通知によってICカード1からICカード処理装置2へ通知する仕組みである。
ただし、上記ステップS144で全バックアップデータが読出し済みであると判断した場合(ステップS144、YES)、CPU11は、図14に点線で示すように、ステップS149へ進み、カレントレコードのレコードデータを読み出すようにしても良い。これは、バックアップデータの読出しを要求するコマンド(カレントレコードを指定したリードレコードコマンド)が連続して与えられた場合に、カレントレコードにおける各バックアップデータとレコードデータとを順に読み出すようにする仕組みである。この場合、ICカード処理装置2では、カレントレコードを指定したリードレコードコマンドを連続して与えることにより、ICカード1からカレントレコードの各バックアップデータとレコードデータとを順に読み出す制御が可能となる。
上記のような第4の構成例のレコードファイルに対する読出処理では、レコード番号を指定したリードコマンドに対しては、当該レコードのレコードデータを読出し、カレントレコードを指定したリードコマンド(バックアップデータの読出しを要求するコマンド)に対しては、カレントレコードに対するバックアップデータをバックアップ領域から読み出すようになっている。つまり、レコードデータを読み出した後に連続してカレントレコードを指定した読出し要求が与えられる場合、カレントレコードに対する複数のバックアップデータを順に読み出すようになっている。
これにより、バックアップ領域に保存されている特定のレコードに対する複数のバックアップデータを簡単な手順で順に読み出すことができる。すなわち、第4の構成例によれば、ICカード1は、バックアップデータをバックアップ領域に格納する形態であっても、各レコードに対する記憶するレコードデータおよび複数のバックアップデータを容易に管理できる。この結果として、上記ICカードでは、たとえば、取引履歴情報などの更新されることが予測されるデータをメモリ領域を有効に使用しつつ、最新のデータ(レコードデータ)および更新前のデータ(バックアップデータ)を容易に管理できる。
次に、レコードァイルの第5の構成例について説明する。
第5の構成例は、レコード領域内にレコードデータとバックアップデータとを順次保存するレコードファイルの構成例である。第5の構成例のレコードファイルには、レコード領域内の未使用領域にバックアップデータが保存される。すなわち、第5の構成例では、各レコードに対するバックアップデータの記憶領域を予め確保したり、レコードファイル内にレコード領域とは別にバックアップ領域を設けたりするものではない。つまり、第5の構成例では、レコードファイル内にレコードのバックアップデータを保存するための領域を予め確保したり、定義したりする必要がない。この結果として、第5の構成例のレコードファイルでは、効率的にメモリ領域を使用できる。なお、第5の構成例では、1つのレコードに対して1つのバックアップデータが保存されるものとする。
図15は、レコードファイルの第5の構成例を示す図である。
図15に示す第5の構成例は、固定長順編成レコードファイルの構成例である。図15に示す第5の構成例のレコードファイルは、ファイルIDで特定される。ファイルIDで特定されるレコードファイルは、複数のレコードおよび複数のバックアップレコードが格納されるレコード領域を有している。レコード領域に格納される各レコードおよび各バックアップレコードは、それぞれレコード番号と識別子とデータ本体(レコードデータ或いはバックアップデータ)とにより構成される。すなわち、各レコード及びバックアップレコードには、レコード番号と識別子とデータ本体とを記憶するための記憶領域が割当てられる。
上記識別子は、対応するデータ本体がレコードデータであるかバックアップデータであるかを示す情報である。なお、第5の構成例では、各レコードに対してバックアップデータが1つであることを想定している。このため、上記識別子は、対応するデータ本体がレコードデータあるいはバックアップデータの何れかであることを示す情報である。図15に示す例では、識別子が「正規」である場合、当該識別子に対応するデータ本体は、対応するレコード番号で示されるレコードのレコードデータである。また、図15に示す例では、識別子が「退避」である場合、当該識別子に対応するデータ本体は、対応するレコード番号で示されるレコードに対するバックアップデータ(当該レコードの更新前のレコードデータ)である。
すなわち、図15に示す例では、レコード番号「01」〜「07」の各レコードにおける「正規」のレコードデータに続けて、レコード番号「03」のレコードに対するバックアップデータとレコード番号「05」のレコードに対するバックアップデータとが記憶されている。これらのバックアップデータは、識別子が「退避」となっていることにより識別される。
第5の構成例では、あるレコードを更新する場合、当該レコードの更新前のレコードデータがバックアップデータとして保存される。バックアップデータは、当該レコード番号と退避であることを示す識別子とに対応づけてバックアップレコードとして記憶される。更新前のレコードデータをバックアップデータとして保存した後(退避した後)、当該レコードのレコードデータ自体が更新される。これにより、最新のレコードデータがレコード領域に記憶されるとともに、最新のレコードデータに更新する直前のデータがバックアップデータとして保存される。
上記のような各レコードのレコードデータには、ファイルIDとレコード番号とによりアクセスが可能となっている。たとえば、図15に示す例では、ファイルID「0001」かつレコード番号「01」を指定することにより、レコード番号「01」のレコードデータにアクセスすることが可能となっている。同様に、バックアップデータが存在するレコード番号「03」(又は「05」)のレコードデータに対しても、ファイルID「0001」かつレコード番号「03」(又は「05」)を指定することにより、アクセスすることが可能となっている。
また、各レコードに対するバックアップデータ(更新前のレコードデータ)には、所定の手順によりアクセスすることが可能となっている。バックアップデータにアクセスするための手法としては、たとえば、バックアップデータへのアクセスを要求するコマンドを定義しても良いし、コマンドにおける処理パラメータでバックアップデータの領域を指定するように定義しても良い。また、特定のコマンドを受信した順序、あるいは、特定のコマンドを受信した回数などに基づいて、バックアップデータへのアクセスを行うようにしても良い。
ここでは、カレントレコードを指定するコマンドによりカレントレコードのバックアップデータにアクセスする場合について説明する。
たとえば、ファイルID「0001」、かつ、レコード番号「03」を指定したデータの読出要求コマンド(リードレコードコマンド)を受信したICカード1のCPU11は、図15に示すようなレコード領域からレコード番号が「03」で、かつ、識別子が「正規」のデータ本体をレコードデータとして読み出す。この際、当該ICカード1では、カレントレコードがファイルID「0001」のレコードファイルにおけるレコード番号「03」のレコードとなる。このようなカレントレコードを示す情報は、たとえば、ワーキングメモリ13に保持される。
この状態において、続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、図15に示すようなレコード領域からカレントレコードのレコード番号「03」で、かつ、識別子が「退避(バックアップ)」のデータ本体をバックアップデータとして読み出す。なお、カレントレコードを指定したリードレコードコマンドによりバックアップデータを読出した回数は、たとえば、ワーキングメモリ13に保持されるものとする。
また、2度続けてカレントレコードを指定したリードレコードコマンドを受信した場合、CPU11は、バックアップデータが読出し済みであるためエラーとして処理するか、あるいは、当該レコードのレコードデータを読み出す処理を行う。特に、前者のような形態では、ICカード処理装置2は、ICカード1からエラー通知を受けることにより、当該レコードにおけるバックアップデータが読出し済みであることを容易に識別できる。また、後者のような形態では、ICカード処理装置2は、カレントレコードを指定するリードコマンドを連続してICカード1に与えることにより、各レコードにおけるレコードデータ、および、バックアップデータを交互に読み出すことが可能となる。
次に、上記第5の構成例のレコードファイルにおけるレコードの書換え処理の流れについて説明する。
図16は、第5の構成例のレコードファイルにおけるレコードの書換え処理を説明するためのフローチャートである。なお、第5の構成例のレコードファイルにおけるレコードの書換え処理は、バックアップデータを保存する処理以外は、上述した第3の構成例のレコードファイルにおけるレコードの書換え処理と同様である。すなわち、図16に示すステップS160〜S163及びS165〜S166は、図10に示すステップS110〜S113及びS115〜S116と同様な処理手順で実現できる。このため、図16に示すステップS160〜S163及びS165〜S166については、詳細な説明を省略するものとする。
すなわち、第5の構成例のレコードファイルを保持しているICカード1が、ICカード処理装置2からバックアップが必要なレコードデータの書換え処理を要求する書換えコマンドを受信したものとする(ステップS163、YES)。この場合、CPU11は、当該レコードの更新前のレコードデータをバックアップデータとして保存する処理を行う(ステップS164)。
上記ステップS164の処理において、CPU11は、当該レコードのレコードデータ(更新前のレコードデータ)を読み出す。当該レコードに対するバックアップデータが保存されていない場合、CPU11は、読み出したレコードデータにレコード番号とバックアップデータであることを示す識別子とを対応づけたバックアップレコードをレコード領域の未使用領域に記憶する。また、既に当該レコードに対するバックアップデータが保存されている場合(つまり、当該レコード番号のバックアップデータが既に存在する場合)、CPU11は、読み出したレコードデータを当該レコード番号のバックアップデータに上書きする。これにより、更新前のレコードデータが当該レコードのバックアップデータとしてレコード領域に保存される。
上記バックアップデータを保存した後、CPU11は、受信した書換えコマンドで指定されるレコードのレコードデータ(対応する識別子が「正規」となっているデータ本体)を新しいレコードデータに書き換える(ステップS165)。このようなレコードデータの書換えが正常終了すると、CPU11は、受信した書換えコマンドに対する処理が正常終了した旨のレスポンスをICカード処理装置2に送信し(ステップS166)、処理を終了する。なお、上記ステップS165においてレコードデータの書換えが失敗した場合、CPU11は、上記バックアップデータとして保存した更新前のレコードデータを再度当該レコードのレコードデータとして書き込む当該レコードの復旧処理を行うようにしても良い。
また、上記ステップS164の処理として、CPU11は、当該レコードのレコードデータに対応づけられている識別子(正規のレコードデータであることを示す情報)をバックアップであることを示す情報に書換えるようにしても良い。この場合、上記ステップS165の処理としては、CPU11は、新たなレコードデータを、レコード領域における未使用領域、あるいは、既存の当該レコードに対するバックアップデータが記憶されている領域に書き込むようにする。つまり、上記ステップS164及びS165の処理としては、識別子の書換えにより更新前のレコードデータをバックアップデータに変更し、新たなレコードデータを書き込むようにしても実現可能である。
上記のように、第5の構成例のレコードファイルに対するレコードデータの書換え処理は、更新前のレコードデータをレコード番号とバックアップである事を示す識別子とに対応づけたバックアップデータとしてレコード領域の未使用領域に保存した後、当該レコードのレコードデータの書換えを行う。これにより、更新前のレコードデータを確実に保存(バックアップ)した状態でレコードデータの書換え処理が実行できる。
次に、上記第5の構成例のレコードファイルにおける各レコードに対するデータの読出し処理について説明する。
図17は、第5の構成例のレコードファイルにおけるレコードに対するデータの読出し処理を説明するためのフローチャートである。第5の構成例のレコードファイルにおけるレコードに対するデータの読出し処理は、レコード領域におけるレコードデータとバックアップデータとを識別子により特定する以外は、上述した第3の構成例のレコードファイルにおけるレコードに対するデータの読出し処理と同様である。
すなわち、ICカード処理装置2からリードレコードコマンドを受信した場合(ステップS171、YES)、CPU11は、受信したリードレコードコマンドがバックアップデータの読出要求であるか否かを判定する(ステップS172)。バックアップデータの読出要求する手法には、上述したような形態が考えられる。ここでは、バックアップデータの読出要求は、カレントレコードを指定したリードレコードコマンドであり、レコードデータの読出要求は、レコード番号を指定したリードレコードコマンドであるものとする。この場合、CPU11は、受信したリードレコードコマンドが「カレントレコード」を指定しているか否かにより、バックアップデータの読出要求か否かを判断する。
上記判断により受信コマンドがバックアップデータの読出要求である場合(ステップS172、YES)、CPU11は、現在のカレントレコードに対するバックアップデータが存在するか否かを判断する(ステップS173)。これは、カレントレコードのレコード番号で、かつ、識別子がバックアップであるデータが存在するか否かにより判断できる。
上記判断により現在のカレントレコードに対するバックアップデータが存在すると判断した場合(ステップS173、YES)、CPU11は、当該コマンドの直前のコマンドによる処理として当該バックアップデータが読出し済みか否かを判断する(ステップS174)。つまり、上記CPU11は、連続してバックアップデータの読出しを要求するコマンドを受信したか否かを判断する。
上記判断によりカレントレコードに対するバックアップデータが読出し済みでないと判断した場合(ステップS174、NO)、CPU11は、カレントレコードに対するバックアップデータを読み出す(ステップS175)。カレントレコードに対するバックアップデータを読み出すと、CPU11は、当該コマンドの送信元であるICカード処理装置2へ読み出したデータを含むレスポンスデータを送信する(ステップS176)。このように、上記ステップS170〜S176の処理によって、当該ICカード1では、カレントレコードのバックアップデータが読み出される。
また、受信したコマンドがカレントレコードを指定するものない場合、つまり、レコードの指定がファイルIDとレコード番号とによるものである場合(ステップS172、NO)、CPU11は、当該コマンドで指定されるファイルIDとレコード番号とにより特定されるレコードのレコードデータを読出対象とする(ステップS178)。上記CPU11は、ファイルIDとレコード番号とにより特定されるレコードのレコードデータを読出す(ステップS179)。CPU11は、読み出したレコードデータを含むレスポンスデータを当該コマンドの送信元であるICカード処理装置2へ送信する(ステップS176)。
また、カレントレコードに対するバックアップデータが存在しない場合(ステップS173、NO)、CPU11は、ステップS179へ進み、カレントレコードのレコードデータを読み出す。ただし、ステップS173で「NO」と判断される場合、CPU11は、ステップS177へ進み、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信するようにしても良い。
また、バックアップデータが直前のコマンドによって読出し済みであると判断した場合(ステップS174、YES)、CPU11は、エラーであることを示すレスポンスを当該コマンドの送信元であるICカード処理装置2に送信する(ステップS177)。これは、連続してカレントレコードに対するバックアップデータの読出しを行わないようにするための仕組みである。
ただし、上記ステップS174でバックアップデータが直前のコマンドによって読出し済みであると判断した場合(ステップS174、YES)、CPU11は、ステップS179へ進み、カレントレコードのレコードデータを読み出す処理を行うようにしても良い。この場合、カレントレコードを指定したリードレコードコマンドが連続して与えられれば、CPU11は、カレントレコードのバックアップデータとレコードデータとを交互に読み出す。
上記のような第5の構成例のレコードファイルに対する読出処理では、ICカード1は、レコード番号を指定したリードコマンドに対しては、当該レコードのレコードデータを読出し、カレントレコードを指定したリードコマンド(バックアップデータの読出しを要求するコマンド)に対しては、当該レコード(カレントレコード)に対するバックアップデータを読み出す。これにより、第5の構成例のレコードファイルでは、効率的にメモリ領域を使用することができ、レコードデータとバックアップデータとの管理も容易化できる。この結果として、上記ICカード1では、たとえば、取引履歴情報などの更新されることが予測されるデータについても、効率的な保存および管理が実現できる。
次に、レコードァイルの第6の構成例について説明する。
第6の構成例は、第5の構成例の変形例である。第6の構成例は、第5の構成例と同様に、レコード領域内にレコードデータとバックアップデータとを順次保存するレコードファイルの構成例である。ただし、第6の構成例のレコードファイルでは、1つのレコードに対して複数のバックアップデータを保存するものである。
図18は、レコードファイルの第6の構成例を示す図である。
図18に示す第6の構成例は、図15に示す第5の構成例のレコードファイルと同様な構成を有している。ただし、第6の構成例のレコードファイルでは、1つのレコードに対して複数のバックアップデータを保存するものとする。このため、図18に示す第6の構成例のレコードファイルでは、レコードデータおよびバックアップデータとしてのデータ本体に対応する識別子が各データ本体の世代を示す情報となっている。
なお、1つのレコードに対しては、所定の上限数のバックアップデータが保存可能であるものとする。たとえば、ここでは、第4の構成例と同様に、1つのレコードに対しては、3つのバックアップデータが保存可能であるものとする。この場合、識別子は、4通りの状態を示す情報であれば良い。すなわち、識別子は、レコードデータあるいは3つのバックアップデータのどれであるかを示す情報が用いられる。
図18に示す例では、識別子は、「0」、「1」、「2」、「3」の何れかの値となっている。図18に示す例では、識別子「0」が正規のレコードデータであることを示し、識別子「1」が1世代前のバックアップデータであることを示し、識別子「2」が2世代前のバックアップデータであることを示し、識別子「3」が3世代前のバックアップデータであることを示しているものとする。このような識別子によれば、各レコードに対して最大3つのバックアップデータが保存でき、かつ、各バックアップデータの世代も示すことができる。
図18に示す例は、図12に示す各データを第6の構成例のレコードファイルに格納した状態を示している。第6の構成例のレコードファイルは、バックアップデータがレコード領域内に保存される点が、第4の構成例のレコードファイルと異なっている。このため、第6の構成例のレコードファイルにおける各レコードのレコードデータおよび複数のバックアップデータへのアクセス制御は、第4の構成例のレコードファイルに対するアクセス制御と類似している。
たとえば、第6の構成例のレコードファイルに対するレコードの書換え処理は、バックアップデータを保存する領域がレコード領域内であることを除けば、図13を参照して説明した第4の構成例のレコードファイルに対するレコードの書換え処理と同様な手順で実現できる。また、第6の構成例のレコードファイルに対するレコードの書換え処理では、既存の各世代のバックアップデータだけでなく、更新前のレコードデータも、対応する識別子を更新(インクリメント)するだけで、1世代前のバックアップデータとして保存できる。
また、第6の構成例のレコードファイルに対するデータの読出し処理は、レコードデータおよび各世代のバックアップデータを識別子により識別してレコード領域内から読み出されることを除けば、図14を参照して説明した第4の構成例のレコードファイルに対するデータの読出し処理と同様な手順で実現できる。
上記のような第6の構成例のレコードァイルによれば、1つのレコードに対して複数のバックアップデータを保存する形態であっても、各レコードごとにバックアップデータの記憶領域を予め確保したり、レコードファイル内にレコード領域とは別にバックアップ領域を設けたりする必要がない。すなわち、第6の構成例のレコードファイルでは、1つのレコードに対して複数のバックアップデータを保存する場合であっても、効率的にメモリ領域を使用つつ、各レコードに対するレコードデータと複数のバックアップデータとを容易に管理できる。
また、上述した第1乃至第6の構成例のレコードファイルに対する更新処理あるいは読出処理は、種々の変形が可能である。
以下、上述した実施の形態に対する変形例について説明する。
まず、第1の変形例として、各レコード毎に、全バックアップデータを一括して読み出す処理例について説明する。
すなわち、第2、第4あるいは第6の構成例のレコードファイルでは、に対する読出処理では、図8、図12あるいは図18に示すように、1つのレコードデータに対して複数のバックアップデータが保存可能である。このようなレコードファイルに対しては、各レコード毎に全バックアップデータを一括して読み出したい場合があると考えられる。たとえば、履歴情報としての複数世代のバックアップデータは、一括して読み出せる仕組みを設けることにより、効率的な運用が可能になると考えらえる。
上記第2、第4、第6の構成例のレコードファイルに関する説明では、各レコードごとに複数世代のバックアップデータを順次読み出す処理について説明している。これに対して、各レコード毎に全バックアップデータの領域のデータを一括して読出す処理は、たとえば、リードレコードコマンドにおいて、カレントレコードに対する全バックアップデータの一括読出しを要求するパラメータを定義しておくことにより実現できる。この場合、CPU11は、カレントレコードに対する全バックアップデータの一括読出しを指定するパラメータがセットされたコマンドを受信すると、カレントレコードに対する全バックアップデータを一括して読み出し、一括して読み出した全バックアップデータをレスポンスデータとして出力する。
また、各レコードに対する複数のバックアップデータを順に読み出す必要がない運用形態もありうる。このような運用形態では、常に各レコードに対する全バックアップデータを読み出すような仕様としても良い。すなわち、ICカードは、バックアップデータの読出しを要求するコマンドに対して、特定のレコード(たとえば、カレントレコード)に対する全バックアップデータを読み出すようにしても良い。
次に、第2の変形例として、1つのレコードファイルにおける全レコードの全バックアップデータを一括して読み出す処理例について説明する。
上記第1乃至第6の構成例のレコードファイルでは、実際の運用形態として、互いに関連する複数のデータがそれぞれレコードとして格納される形態が多いと考えられる。このような運用形態では、1つのレコードファイルにおける全バックアップデータ(全レコードの全バックアップデータ)を一括して読み出せる仕組みを設けることにより、効率的な運用が可能となることもあると考えられる。
上記第1乃至第6の構成例のレコードファイルに関する説明では、特定のレコードに対するバックアップデータの読出し処理について説明している。これに対して、1つのレコードファイルにおける全レコードの全バックアップデータを一括して読出す処理は、たとえば、リードコマンドにおいて、レコードファイルにおける全バックアップデータ(全レコードの全バックアップデータ)を読み出すことを指定するパラメータを定義しておくことにより実現できる。この場合、CPU11は、特定のレコードファイル(たとえば、カレント状態のレコードファイル)における全バックアップデータの一括読出しを指定するパラメータがセットされたコマンドを受信すると、当該レコードファイル内の全バックアップデータを一括して読み出し、一括して読み出した全バックアップデータをレスポンスデータとして出力する。これにより、ICカード1は、第1乃至第6の構成例のようなレコードファイルに対しても、当該ファイル内の全レコードに対する全バックアップデータを一括して読み出す処理が実現できる。
次に、第3の変形例として、レコードデータの領域のデータ異常で読み出しが失敗した場合の処理例について説明する。
上述したレコードの書換え処理では、既存のレコードデータをバックアップデータとして保存した後、当該レコードデータの書換えが失敗した場合、バックアップデータとして保存したデータをレコードデータとして再度書き込むという復旧処理について説明している。このような処理と同様に、レコードデータの読出処理においても、メモリ異常などのデータ異常によりレコードデータが読み出せない場合、当該レコードデータに対する最新のバックアップデータ(前回の更新直前のデータ)で当該レコードデータを復旧させるようにすることが可能である。
たとえば、図5のステップS29、図8のステップS49、図11のステップS129、図14のステップS149、あるいは、図17のステップS179の処理において、データ異常によりレコードデータの読出に失敗した場合、ICカード1のCPU11は、最新のバックアップデータをレコードデータとして書き込むようにすれば良い。この場合、CPU11は、読出処理の結果として、エラー通知を行うようにしても良いし、レコードデータに書込んだデータを出力するようにしても良い。
また、上記のようなレコードデータの復旧処理は、ICカード処理装置2からの復旧を要求するコマンドに応じて実行するようにしても良い。すなわち、ICカード処理装置2からレコードデータの読出を要求するコマンドに対して当該レコードデータの領域のデータ異常で読出に失敗した場合、ICカード1は、当該レコードデータがデータ異常である旨をエラー通知とともに出力する。その後、ICカード処理装置2からのレコードデータの復旧を要求するコマンドを受信した場合、ICカード1は、上記のようなレコードデータの復旧処理を実行する。言い換えれば、ICカード処理装置2は、ICカード1からデータ異常によるレコードデータの読出に失敗のエラー通知を受信した場合、当該レコードデータの復旧を要求するコマンドを当該ICカード1に与えることにより、データ異常となったレコードデータを復旧させることができる。
また、ICカード1は、上記のような読出処理においてレコードデータのデータ異常が発見された場合、レコードデータを読み出す代りに、当該レコードデータに対する最新のバックアップデータ(前回の更新直前のレコードデータ)を読み出すするようにしても良い。この場合、ICカード1は、読み出したデータとともに、レコードデータの代りに最新のバックアップデータを読み出した事を通知するようにする。これにより、レコードデータの領域がメモリ異常などにより使用不能となった場合であっても、レコードデータが異常であることを通知するとともに、バックアップデータをレコードデータの代わりとして出力(使用)することが可能となる。
C…本体、M…モジュール、1…ICカード、1a…ICチップ、2…ICカード処理装置、11…CPU、12…プログラムメモリ、13…ワーキングメモリ、14…データメモリ、15…通信制御部、16…電源部、17…インターフェース、21…制御装置、22…カードリーダライタ。

Claims (15)

  1. 外部装置から与えられるコマンドに応じて処理を行う携帯可能電子装置において、
    レコードデータを記憶するレコード領域と前記レコード領域に記憶されるレコードデータに対するバックアップデータを記憶するデータ退避領域とを有するレコードファイルを記憶する記憶手段と、
    前記外部装置から前記レコードファイルにおけるレコードデータの書換えを要求するコマンドが与えられた場合、前記レコード領域に記憶されている前記レコードデータをバックアップデータとして前記データ退避領域に保存するデータ退避手段と、
    前記データ退避手段により前記データ退避領域にバックアップデータを保存した場合、前記レコード領域に記憶されているレコードデータを書き換える書換え手段と、
    を有することを特徴とする携帯可能電子装置。
  2. 外部装置から与えられるコマンドに応じて処理を行う携帯可能電子装置において、
    複数のレコードデータを順次格納するレコード領域を有するレコードファイルを記憶する記憶手段と、
    前記外部装置から前記レコードファイルにおけるレコードデータの書換えを要求するコマンドが与えられた場合、書換え前の当該レコードデータを当該レコードファイルにおけるレコード領域の未使用領域にバックアップデータとして保存するデータ退避手段と、
    前記データ退避手段により書換え前のレコードデータをバックアップデータとして保存した場合、当該レコードファイルのレコード領域に記憶されているレコードデータを書き換える書換え手段と、
    を有することを特徴とする携帯可能電子装置。
  3. さらに、前記外部装置から前記レコードファイルにおけるレコードデータに対するバックアップデータの読出しを要求するコマンドが与えられた場合、当該コマンドで指定されるレコードデータに対するバックアップデータを読み出す読出手段を有する、
    ことを特徴とする前記請求項1又は2の何れかに記載の携帯可能電子装置。
  4. 前記データ退避手段は、各バックアップデータに退避した順序を示す世代情報を付加して保存する、
    ことを特徴とする前記請求項1又は2の何れかに記載の携帯可能電子装置。
  5. 前記データ退避手段は、前記レコードデータに対するバックアップデータの保存に伴って既存のバックアップデータを削除する場合、各バックアップデータに付加されている世代情報により特定される最古のバックアップデータを削除する、
    ことを特徴とする前記請求項4に記載の携帯可能電子装置。
  6. 前記データ退避手段は、バックアップデータとして保存すべきレコードデータに対する既存のバックアップデータが所定の上限数に達している場合、当該レコードデータに対するバックアップデータのうち最古のバックアップデータを削除する、
    ことを特徴とする前記請求項4に記載の携帯可能電子装置。
  7. 前記外部装置から前記レコードファイルにおける特定のレコードデータに対するバックアップデータの読出しを要求するコマンドが連続して与えられる場合、当該レコードデータに対応する各バックアップデータを退避した順序を示す情報に従って順次読み出す読出手段を有する、
    ことを特徴とする前記請求項4に記載の携帯可能電子装置。
  8. 前記外部装置から前記レコードファイルにおける特定のレコードデータに対する全バックアップデータの読出しを要求するコマンドが与えられる場合、当該レコードデータに対応する全バックアップデータを読み出す読出手段を有する、
    ことを特徴とする前記請求項4に記載の携帯可能電子装置。
  9. 前記外部装置から前記レコードファイルにおける全バックアップデータの読出しを要求するコマンドが与えられた場合、当該レコードファイルに記憶されている全バックアップデータを読み出す読出手段を有する、
    ことを特徴とする前記請求項4に記載の携帯可能電子装置。
  10. さらに、前記書換え手段により前記レコードデータの書換えに失敗した場合、前記データ退避手段により保存したバックアップデータを前記レコードデータとして書き込む復旧手段を有する、
    ことを特徴とする前記請求項1又は2の何れかに記載の携帯可能電子装置。
  11. さらに、前記読出手段による前記レコードデータの読出しが失敗した場合、当該レコードデータに対するバックアップデータを前記レコードデータとして書き込む復旧手段を有する、
    ことを特徴とする前記請求項3に記載の携帯可能電子装置。
  12. さらに、前記読出手段による前記レコードデータの読出しが失敗した場合、当該レコードデータに対するバックアップデータを前記レコードデータとして読み出す処理手段を有する、
    ことを特徴とする前記請求項3に記載の携帯可能電子装置。
  13. 前記処理手段は、前記レコードデータの代わりに当該レコードデータに対するバックアップデータを読出した場合、読み出したバックアップデータと共に、当該レコードデータが読出し異常のためレコードデータの代りにバックアップデータを読み出した事を示す応答を出力する、
    ことを特徴とする前記請求項12に記載の携帯可能電子装置。
  14. 携帯可能電子装置におけるデータ管理方法であって、
    レコードデータを記憶するレコード領域と前記レコード領域に記憶されるレコードデータに対するバックアップデータを記憶するデータ退避領域とを有するレコードファイルを記憶部に記憶し、
    外部装置から前記レコードファイルにおけるレコードデータの書換えを要求するコマンドが与えられた場合、前記レコード領域に記憶されている前記レコードデータをバックアップデータとして前記データ退避領域に保存し、
    前記データ退避領域にバックアップデータを保存した後に、前記レコード領域に記憶されているレコードデータを書き換える、
    ことを特徴とする携帯可能電子装置におけるデータ管理方法。
  15. 携帯可能電子装置におけるデータ管理方法であって、
    複数のレコードデータを順次格納するレコード領域を有するレコードファイルを記憶部に記憶し、
    外部装置から前記レコードファイルにおけるレコードデータの書換えを要求するコマンドが与えられた場合、書換え前の当該レコードデータを当該レコードファイルにおけるレコード領域の未使用領域にバックアップデータとして保存し、
    当該レコードファイル内に書換え前のレコードデータをバックアップデータとして保存した後に、当該レコードファイルのレコード領域に記憶されているレコードデータを書き換える、
    ことを特徴とする携帯可能電子装置におけるデータ管理方法。
JP2009027774A 2009-02-09 2009-02-09 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法 Withdrawn JP2010182270A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2009027774A JP2010182270A (ja) 2009-02-09 2009-02-09 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法
US12/402,724 US20100205149A1 (en) 2009-02-09 2009-03-12 Mobile electronic apparatus and data management method in mobile electronic apparatus
SG200901806-0A SG164307A1 (en) 2009-02-09 2009-03-12 Mobile electronic apparatus and data management method in mobile electronic apparatus
EP09155229A EP2216719B1 (en) 2009-02-09 2009-03-16 Mobile electronic apparatus and data management method in mobile electronic apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009027774A JP2010182270A (ja) 2009-02-09 2009-02-09 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法

Publications (1)

Publication Number Publication Date
JP2010182270A true JP2010182270A (ja) 2010-08-19

Family

ID=42200935

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009027774A Withdrawn JP2010182270A (ja) 2009-02-09 2009-02-09 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法

Country Status (4)

Country Link
US (1) US20100205149A1 (ja)
EP (1) EP2216719B1 (ja)
JP (1) JP2010182270A (ja)
SG (1) SG164307A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2420997A1 (en) 2010-08-17 2012-02-22 Yamaha Corporation Audio device, and methods for designing and making the audio devices
JP2013037430A (ja) * 2011-08-04 2013-02-21 Dainippon Printing Co Ltd Icチップ、icチップにおける処理方法、及びicチップ用処理プログラム
JP2019008671A (ja) * 2017-06-27 2019-01-17 大日本印刷株式会社 電子情報記憶装置、icカード、データ復元方法、及びデータ復元プログラム
JP2019057156A (ja) * 2017-09-21 2019-04-11 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
JP2020112855A (ja) * 2019-01-08 2020-07-27 凸版印刷株式会社 Icチップ及びicカード
JP7438432B1 (ja) 2023-06-01 2024-02-26 大日本印刷株式会社 電子情報記憶媒体、icチップ、icカード、レコード書き込み方法、及びプログラム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2033145B1 (en) * 2006-06-15 2011-04-06 Kabushiki Kaisha Toshiba Portable electronic device and control method thereof
US20110004750A1 (en) * 2009-07-03 2011-01-06 Barracuda Networks, Inc Hierarchical skipping method for optimizing data transfer through retrieval and identification of non-redundant components
DE102010056424A1 (de) * 2010-12-28 2012-06-28 Giesecke & Devrient Gmbh Verfahren zum Zurücksetzen eines Dateisystems
US8661196B2 (en) * 2011-08-15 2014-02-25 International Business Machines Corporation Optimizing locations of data accessed by client applications interacting with a storage system
US10095587B1 (en) * 2011-12-23 2018-10-09 EMC IP Holding Company LLC Restricted data zones for backup servers
GB2505185A (en) * 2012-08-21 2014-02-26 Ibm Creating a backup image of a first memory space in a second memory space.
CN103020010A (zh) * 2012-12-21 2013-04-03 中颖电子股份有限公司 嵌入式系统存储架构
CN105637521B (zh) * 2014-06-30 2020-02-14 华为技术有限公司 一种数据处理方法及智能终端
US10306057B1 (en) * 2016-01-07 2019-05-28 William Sasso Automatic call blocking and routing system and method
US10466927B2 (en) * 2016-02-17 2019-11-05 Honeywell International Inc. Replication of memory image for efficient simultaneous uses

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2759795B1 (fr) * 1997-02-14 1999-05-07 Francois Charles Oberthur Fidu Procede de stockage de donnees dans une memoire reinscriptible de carte a puce
US6490610B1 (en) * 1997-05-30 2002-12-03 Oracle Corporation Automatic failover for clients accessing a resource through a server
JPH117505A (ja) * 1997-06-17 1999-01-12 Fujitsu Ltd カード型記憶媒体
US6317755B1 (en) * 1999-07-26 2001-11-13 Motorola, Inc. Method and apparatus for data backup and restoration in a portable data device
US6970890B1 (en) 2000-12-20 2005-11-29 Bitmicro Networks, Inc. Method and apparatus for data recovery
KR100584338B1 (ko) * 2003-09-17 2006-05-26 삼성전자주식회사 소프트웨어 업데이트 방법 및 시스템
US7904679B2 (en) * 2004-02-04 2011-03-08 Netapp, Inc. Method and apparatus for managing backup data
US7343452B2 (en) * 2004-03-31 2008-03-11 Kabushiki Kaisha Toshiba Apparatus for direct access to only specific lower hierarchy data in a nest structure
US20060010007A1 (en) * 2004-07-09 2006-01-12 Denman John F Process for using smart card technology in patient prescriptions, medical/dental/DME services processing and healthcare management
US7240162B2 (en) * 2004-10-22 2007-07-03 Stream Theory, Inc. System and method for predictive streaming
JP2007084187A (ja) 2005-09-20 2007-04-05 Toshiba Elevator Co Ltd エレベータの制御装置
US7870548B2 (en) * 2007-01-05 2011-01-11 Inventec Corporation Method for updating an image file

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2420997A1 (en) 2010-08-17 2012-02-22 Yamaha Corporation Audio device, and methods for designing and making the audio devices
JP2013037430A (ja) * 2011-08-04 2013-02-21 Dainippon Printing Co Ltd Icチップ、icチップにおける処理方法、及びicチップ用処理プログラム
JP2019008671A (ja) * 2017-06-27 2019-01-17 大日本印刷株式会社 電子情報記憶装置、icカード、データ復元方法、及びデータ復元プログラム
JP7021465B2 (ja) 2017-06-27 2022-02-17 大日本印刷株式会社 電子情報記憶装置、icカード、データ復元方法、及びデータ復元プログラム
JP2019057156A (ja) * 2017-09-21 2019-04-11 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
JP7065578B2 (ja) 2017-09-21 2022-05-12 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
JP2020112855A (ja) * 2019-01-08 2020-07-27 凸版印刷株式会社 Icチップ及びicカード
JP7438432B1 (ja) 2023-06-01 2024-02-26 大日本印刷株式会社 電子情報記憶媒体、icチップ、icカード、レコード書き込み方法、及びプログラム

Also Published As

Publication number Publication date
EP2216719B1 (en) 2012-05-02
US20100205149A1 (en) 2010-08-12
SG164307A1 (en) 2010-09-29
EP2216719A1 (en) 2010-08-11

Similar Documents

Publication Publication Date Title
JP2010182270A (ja) 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法
JP5454933B2 (ja) 携帯可能電子装置、icカード、および携帯可能電子装置の制御方法
JP5329884B2 (ja) 携帯可能電子装置および携帯可能電子装置におけるデータ処理方法
US11029867B2 (en) Apparatus and method for transmitting map information and read count in memory system
KR101783526B1 (ko) Ic 카드, 전자 장치 및 휴대 가능 전자 장치
JP4776462B2 (ja) 携帯可能電子装置および携帯可能電子装置の制御方法
JP6426411B2 (ja) Icカード及び携帯可能電子装置
JP2008310596A (ja) 携帯可能電子装置および携帯可能電子装置の制御方法
JP4460850B2 (ja) Icカードとicカードの処理方法
JP6769150B2 (ja) 電子情報記憶媒体、情報処理方法、及び情報処理プログラム
JP2009075816A (ja) 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法
JP7322923B2 (ja) セキュアエレメント,トランザクション制御方法およびデバイス
JP6370669B2 (ja) Icカード、携帯可能電子装置、及び、icカード処理装置
JP5341947B2 (ja) Icカード、icカードの制御方法、および携帯可能電子装置の制御方法
JP2014059806A (ja) Icカード、携帯可能電子装置、及びicカード処理装置
JP2011191808A (ja) 携帯可能電子装置、icカード、および携帯可能電子装置の制御方法
JP3863479B2 (ja) Icカード
JP2012133656A (ja) 携帯可能電子装置及びicカード
JP2011034125A (ja) 情報処理方法、情報処理装置、およびプログラム
JP5038918B2 (ja) 携帯可能電子装置および携帯可能電子装置の制御方法
JP3920166B2 (ja) Icカード及びその情報処理方法
JP2021056815A (ja) 電子情報記憶媒体、データ保存及び復元方法、及びプログラム
JP2018152142A (ja) Icカード、携帯可能電子装置、及び、icカード処理装置
JP2005338924A (ja) 携帯可能電子装置に用いられる不揮発性メモリと携帯可能電子装置
JP2008134945A (ja) 記憶装置、記憶装置のプログラム及び記憶処理方法

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120501