(57)【要約】【課題】セキュリティーを維持しつつ、ファイルの容量を縮小または拡大することが可能なＩＣカードを提供する。【解決手段】ＩＣカードは、１又は２以上のファイルを格納可能なメモリを有するＩＣカードにおいて、外部からの命令により、外部から指定された指定容量だけ選択されているファイルの容量を縮小又は拡大する容量変更手段を有し、ファイルは、自己の空き容量を記憶する空き容量記憶部を有し、容量変更手段は、ファイルを配下に有する親ファイルの空き容量記憶部の内容を、指定容量に基づいて変更し、容量変更手段がファイルの容量を縮小する場合に、選択されているファイルの容量から、指定容量を減算した値が、選択されているファイルが配下に有するファイルのサイズの総容量より小となる場合に、容量変更手段が選択されているファイルの容量を縮小することを許可しない親ファイル変更制限手段を有する。【選択図】図２
2008016050.tif 000002
【特許請求の範囲】
【請求項１】
１又は２以上のファイルを格納可能なメモリを有するＩＣカードにおいて、
外部からの命令により、外部から指定された指定容量だけ選択されているファイルの容量を縮小又は拡大する容量変更手段を有し、
前記ファイルは、自己の空き容量を記憶する空き容量記憶部を有し、
前記容量変更手段は、前記ファイルを配下に有する親ファイルの前記空き容量記憶部の内容を、前記指定容量に基づいて変更し、
前記容量変更手段が前記ファイルの容量を縮小する場合に、前記選択されているファイルの容量から、前記指定容量を減算した値が、前記選択されているファイルが配下に有するファイルのサイズの総容量より小となる場合に、前記容量変更手段が前記選択されているファイルの容量を縮小することを許可しない親ファイル変更制限手段を有すること
を特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、
前記ファイルが有するデータ領域を移動する移動手段を有し、
前記ファイルのディレクトリ領域は、前記メモリの一方の端部から未使用な領域が存在しないように順に格納され、前記ファイルのデータ領域は、前記メモリの他方の端部から未使用な領域が存在しないように順に格納されており、
前記容量変更手段は、前記選択されているファイルがデータ領域を有するファイルである場合は、前記データ領域を前記指定容量だけ縮小又は拡大し、
前記移動手段は、前記容量変更手段により縮小されたデータ領域より前記メモリの一方の端部側に他の前記データ領域が存在する場合は、前記メモリの他方の端部側へ前記指定容量だけ前記他のデータ領域を移動させる、又は、前記容量変更手段により拡大されるべきデータ領域より前記メモリの一方の端部側に他の前記データ領域が存在する場合は、前記メモリの一方の端部側へ、前記指定容量だけ前記他のデータ領域を移動させること
を特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部からの命令により、メモリに格納されているファイルの容量を縮小又は変更することが可能なＩＣカードに関するものである。
【背景技術】
【０００２】
図１１は、従来のＩＣカードの構成、及びそのＩＣカードとリーダライタ装置との接続関係を示すブロック図である。従来のＩＣカード１０は、通常、Ｉ／Ｏインタフェース１１、ＣＰＵ１２、ＲＯＭ１３、ＲＡＭ１４、ＥＥＰＲＯＭ１５を内蔵している。Ｉ／Ｏインタフェース１１は、データを送受するための入出力回路であり、ＣＰＵ１２はこのＩ／Ｏインタフェース１１を介してリーダライタ装置２０と交信する。ＲＯＭ１３内には、ＣＰＵ１２によって実行されるべきプログラムが記憶されており、ＣＰＵ１２は、このプログラムに基いてＩＣカード１０を統括制御する。ＲＡＭ１４は、ＣＰＵ１２がこのような統括制御を行う上で作業領域として使用するメモリである。一方、ＥＥＰＲＯＭ１５は、このＩＣカード１０に記録すべき本来のデータを格納するメモリである。
【０００３】
図１２は、図１１に示すＥＥＰＲＯＭ１５内のファイル構成を示す図である。本実施形態では、３種類のファイルが階層構造を構成している。３種類のファイルとは、ＭＦ（Ｍａｓｔｅｒ  Ｆｉｌｅ）、ＤＦ（Ｄｅｄｉｃａｔｅｄ  Ｆｉｌｅ）及びＥＦ（Ｅｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ）のことである。ＭＦは、データメモリ全体のファイルである。ＭＦは、各アプリケーション（サービス）に共通したデータを格納するためのファイルであり、例えば、ＩＣカード１０の所有者の氏名、住所、電話番号などの情報が記録される。ＤＦは、専用ファイルであり、アプリケーションごとにＤＦの設定がなされている。ＥＦは、基礎ファイルであり、ＣＰＵがＩＣカードを管理・制御する際に解釈実行するデータを格納するＩＥＦと、アプリケーションで使用するデータを格納するＷＥＦの２種類がある。
【０００４】
ＭＦ、ＤＦ及びＥＦは、図１２（Ａ）に示す階層構造を構成する。ＭＦは、階層構造の根幹であり、その配下にＤＦ又はＥＦを配置する。図１２（Ａ）の例では、ＭＦはＤＦ１及びＷＥＦ１をその配下に配置しており、ＤＦ１、ＷＥＦ１の親ファイルとなっている。ＤＦは、ＭＦを親ファイルとしてその配下に位置することができると同時に、自己の配下に他のＤＦ又はＥＦを配置し、それらの親ファイルとなることも可能なファイルである。これに対しＥＦは、他のファイルの親ファイルとなることができないファイルである。
【０００５】
図１３は、ＥＥＰＲＯＭ１５におけるファイル格納イメージの一例を示す図である。図１３では、左上より右下へ向けてメモリの絶対アドレスが増大している。また、横幅は３２ビットに相当している。なお、本明細書では、絶対アドレスが大なる方を上位アドレスと呼ぶこととする。図１３に示す例では、ファイルのディレクトリは全て３２ビットから構成され、上位アドレスから各ディレクトリ間に空き領域が存在しないように、順に配置されている。一方、ファイルのデータ格納エリアは、下位アドレスから、これも各エリア間に空き容量の生じないように、順に配置されている。
【０００６】
図示の状態では、ディレクトリは３２バイトおきに規則的に配置されている。したがって、ディレクトリ又はディレクトリの内容を検索するときは、３２バイトおきのアドレスを検索すれば足り、演算処理能力が比較的低いＣＰＵを用いても迅速にディレクトリの検索を行うことが可能となっている。また、１つのＷＥＦのデータ格納エリアは、必ず連続した１つのメモリ領域にまとめて格納されており、例えば図１４に示すＷＥＦ１のデータ格納エリアのように、２つの領域に分散して格納されていない。これは、ＥＥＰＲＯＭ１５の限られたメモリ資源を最大限有効に利用するための処置である。つまり、図１４に示すように、一つのデータ格納エリアを複数の領域に分散して格納した場合には、それら分散した各領域のアドレス情報を管理するファイル・アロケーション・テーブル等が必要となり、余分にメモリを消費することとなる。これに対し、図１３の例では、ディレクトリにおいて、一つのデータ格納エリアについてのアドレス情報のみを管理すればよく、メモリの消費量が最小限に抑制される。
【０００７】
上記各種のファイルは、ＩＣカードの発行時に、ＩＣカード発行者により、所定の階層構造を構成するように格納される。つまり、各種のＤＦやＥＦは、カード発行時にＩＣカードに既に格納されており、ＩＣカード所有者は、既に格納された各種ファイルの中から必要とするものを選択して利用する。
また、特許文献１は、データを記憶するメモリを有効に利用できるＩＣカードを開示している。
【特許文献１】特開平６−１３１５１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、前述した従来のＩＣカードでは、ＩＣカード所有者と無関係に、ＩＣカード発行者が各種のファイルを格納する。しかも、ＩＣカードの価値を高めるために、ＩＣカード発行者は、異なるアプリケーション等に対応した数多くのファイルを格納し、ＩＣカードを多目的に利用可能とすることを希望する場合がある。ところが、ＩＣカード所有者は、それぞれにライフスタイル等が異なるため、必ずしも提供されている全てのアプリケーションを利用するとは限らない。このために、所有者によっては、格納されているファイルのうち一部のものは頻繁に使用するが、他のファイルは全く使用しないことがある。このような場合には、頻繁に使用されるファイルでは容量が不足する一方で、使用されないファイルではメモリが利用されず無駄となるという問題があった。
【０００９】
上記の問題に対し、各ファイルを一度消去し、それぞれのファイルを適切な大きさに直して、再度格納することで解決を図ることも考えられる。しかし、この場合には、各ファイルに記録されている情報をＩＣカードの外部へ読み出し、再度格納することとなるので、ＩＣカードの特徴の一つであるセキュリティーを担保することができないという問題があった。
【００１０】
そこで、本発明の課題は、セキュリティーを維持しつつ、ファイルの容量を縮小または拡大することが可能なＩＣカードを提供することである。
【課題を解決するための手段】
【００１１】
前記課題を解決するために、請求項１に係る発明は、１又は２以上のファイルを格納可能なメモリを有するＩＣカードにおいて、外部からの命令により、外部から指定された指定容量だけ選択されているファイルの容量を縮小又は拡大する容量変更手段を有し、前記ファイルは、自己の空き容量を記憶する空き容量記憶部を有し、前記容量変更手段は、前記ファイルを配下に有する親ファイルの前記空き容量記憶部の内容を、前記指定容量に基づいて変更し、前記容量変更手段が前記ファイルの容量を縮小する場合に、前記選択されているファイルの容量から、前記指定容量を減算した値が、前記選択されているファイルが配下に有するファイルのサイズの総容量より小となる場合に、前記容量変更手段が前記選択されているファイルの容量を縮小することを許可しない親ファイル変更制限手段を有することを特徴とするＩＣカードである。
請求項２の発明は、請求項１に記載のＩＣカードにおいて、前記ファイルが有するデータ領域を移動する移動手段を有し、前記ファイルのディレクトリ領域は、前記メモリの一方の端部から未使用な領域が存在しないように順に格納され、前記ファイルのデータ領域は、前記メモリの他方の端部から未使用な領域が存在しないように順に格納されており、前記容量変更手段は、前記選択されているファイルがデータ領域を有するファイルである場合は、前記データ領域を前記指定容量だけ縮小又は拡大し、前記移動手段は、前記容量変更手段により縮小されたデータ領域より前記メモリの一方の端部側に他の前記データ領域が存在する場合は、前記メモリの他方の端部側へ前記指定容量だけ前記他のデータ領域を移動させる、又は、前記容量変更手段により拡大されるべきデータ領域より前記メモリの一方の端部側に他の前記データ領域が存在する場合は、前記メモリの一方の端部側へ、前記指定容量だけ前記他のデータ領域を移動させることを特徴とするＩＣカードである。
【発明の効果】
【００１２】
本発明によれば、以下のような効果がある。
（１）セキュリティーを維持しつつ、選択されたファイルの容量を変更することが可能である。
（２）ファイルの有する有効な情報の容量を誤認し、その容量以下にファイルの容量を縮小することにより、ファイル内の情報が失われることが防止される。
【００１３】
（３）親ファイルが管理する領域を越えてファイルの容量を拡大し、その結果、他のファイルの有する情報が失われるという事態が防止される。
（４）ファイルの容量を縮小又は拡大しても、親ファイルの空き容量が正確に管理される。
【００１４】
（５）ファイルの容量を縮小した結果、その配下にあるファイルの有する情報が失われるという事態が防止される。
（６）ファイルのデータ領域を縮小しても、データ領域の間で空き領域が生じることはない。また、データ領域を拡大しても、他のデータ領域の有する情報が失われることはなく、かつ、データ領域の間で空き領域が生じることもない。つまり、メモリを最大限有効に利用し、かつ、情報を消失することなく、データ領域を縮小又は拡大することが可能である。
【００１５】
（７）移動手段は、最終データ位置記憶手段の記憶する情報に基づいて特定される位置までに存在するデータ領域を移動するので、ファイルのデータ部が格納されていない領域のデータを移動する不都合が回避される。
（８）容量変更手段は、位置情報記憶部の内容を指定容量に基づいて変更するので、データ領域が縮小又は拡大された後にも、前記位置記憶部の内容は適切なものに維持される。
（９）移動手段は、位置情報記憶部の内容を指定容量に基づいて変更するので、データ領域が移動された後にも、前記位置情報記憶部の内容は適切なものに維持される。
【００１６】
（１０）可変長レコード構造のファイルにおいて、データ領域に格納されている各レコードのアドレス情報は、指定容量に基づいて変更されるので、上記アドレス情報は、データ領域が縮小若しくは拡大又は移動された後も適正な値を有する。
【００１７】
（１１）可変長レコード構造のファイルにおいて、そのアドレス情報が変更された場合は、変更後のアドレス情報に基づいてデータ領域に格納されている誤り検出符号も変更されるので、データ領域が縮小若しくは拡大又は移動された後も誤り検出符号が適正な値を有する。
【発明を実施するための最良の形態】
【００１８】
以下、図面等を参照して、本発明に係る一実施形態について、さらに詳しく説明する。本実施形態は、ハードウェア構成において従来のＩＣカードと同一であるが、カレントファイルのファイルサイズを変更するＣＨＡＮＧＥ−ＳＩＺＥコマンドを処理する機能を備える点において従来のＩＣカードと異なっている。
【００１９】
図１は、ＣＨＡＮＧＥ−ＳＩＺＥのコマンドＡＰＤＵを示す図である。ＣＨＡＮＧＥ−ＳＩＺＥコマンドでは、パラメータＰ１において、サイズ（容量）を変更すべきファイルが現在選択されているＤＦ（以下「カレントＤＦ」という）あるいはＥＦ（以下「カレントＥＦ」という）のいずれであるかを指定する。また、データフィールド（ＤＡＴＡ）において、変更すべきサイズを指定する。
【００２０】
図２は、ＣＨＡＮＧＥ−ＳＩＺＥコマンドを処理するＩＣカード１０の動作を示す流れ図である。リーダライタ装置２０から「ＣＨＡＮＧＥ−ＳＩＺＥ」コマンドがあった場合には、ＣＰＵ１２は、実行前チェックを行い（Ｓ７０１）、エラーがあったときには、その旨のメッセージ（Ｓ７０３）を送信する。ファイルサイズの変更を行い（Ｓ７０４）、コマンドが正常に終了した場合には（Ｓ７０５）、その旨のメッセージを送信して（Ｓ７０８）、コマンドを終了する。
【００２１】
次に、Ｓ７０４のファイルサイズの変更について、さらに詳しく説明する。本実施形態において、ファイルサイズを変更できるファイルの種別は、ＤＦ／ＷＥＦの２種類である。サイズの変更は、増減両方をサポートしている。また、容量指定なし（管理ぺージ数ＦＦｈ）のＤＦのサイズ変更はできない。容量指定なしのＤＦとは、自己が管理する領域の容量が定められておらず、親ファイルの空き容量の範囲内でファイルの容量を拡大し得るＤＦをいう。言い換えると、容量指定なしのＤＦとは、その空き容量が常に親ファイルの空き容量に一致する容量親依存のファイルである。容量指定なしのＤＦでは、管理ページ数が「ＦＦｈ」に設定される。管理ページ数とは、ファイルのディレクトリに格納されている変数であり、ファイルの管理する容量を示すものである。
【００２２】
エラーチェックは、以下の項目について行う。
１）サイズ変更対象ファイルがＭＦ／ＩＥＦでないこと。これは、カレントＥＦ又はカレントＤＦのアドレスによって指定されるファイルのディレクトリを参照することにより判断される。
２）ＣＲＴ−ＡＰとＣＲＴ−ＤＰとＭＦディレクトリの空き容量の整合性があっていること。これは、ＭＦのディレクトリに記録されているＥＥＰＲＯＭ１５の空き容量と、ＣＲＴ−ＡＰとＣＲＴ−ＤＰの差を比較することにより判断される。なお、ＣＲＴ−ＡＰは、新しいデータ格納エリアを格納することが可能な領域の先頭アドレスを指し示すポインタであり、ＣＲＴ−ＤＰは、新しいディレクトリを格納することが可能な領域の先頭アドレスを指し示すポインタである。
【００２３】
３）ディレクトリテーブルの全エントリのＣＲＣがあっていること。これは、各ファイルディレクトリが有するＣＲＣコードを用いて行われる。
４）全レコード形式ＷＥＦの全レコードのＣＲＣがあっていること。ＣＨＡＮＧＥ−ＳＩＺＥコマンドは、ファイルサイズを縮小させる場合もある。この場合に、既に格納されている情報を誤って消去する事態を防ぐために、予め既に情報が格納されているレコードを確認する必要がある。しかし、レコードが何らかの事情により破壊されている場合には、上記確認を的確に行うことができなくなるため、予め、レコードが適正な状態に維持されているか否かを確認するものである。
【００２４】
５）トランスペアレントＷＥＦのファイル全体のＣＲＣがあっていること。このチェックを行う理由は、上記４）と同じである。なお、トランスペアレントファイルにＣＲＣチェックコードを備えない場合には、このチェック項目は省略される。
６）ファイルサイズ増加の場合に、領域管理ＤＦの空きぺージ数以内にサイズ増加分が納まること。なお、本実施形態において、１ページは３２バイトとなっている。
７）ＤＦのサイズ縮小の場合に、そのＤＦ下のすべてのファイルのサイズを加算したページ数以下にならないこと。ＤＦは、その配下に１又は２以上の他のファイルを配置することが可能である。この場合に、配下のファイルの総容量以下に当該ＤＦが縮小されたのでは、記憶されている情報を消去するおそれがあるからである。
【００２５】
８）ＷＥＦ（循環順編成以外）のサイズ縮小の場合に、ライトアペンドポインタよりファイルサイズが小さくならないこと。
９）ＷＥＦ（循環順編成ファイル）のサイズ縮小の場合、ローテーション済みのファイルでないこと。上記８）、９）は、既に格納されている情報を誤って失う事態を防止するための措置である。なお、上記エラーチェックは、ＥＥＰＲＯＭ１５の更新前に行われる。
【００２６】
次に、領域管理ＤＦを特定し、ファイルのサイズ変更後に、その管理領域ＤＦの空き容量を変更する。領域管理ＤＦの特定方法は、以下の通りである。サイズ変更するファイルの親ＤＦの管理ページ数をチェックする。親ＤＦの管理ページ数がＦＦｈならば、１レベル上のＤＦをチェックする。サイズ変更するファイルのすべての親ＤＦの管理ぺージ数がＦＦｈならば、ＭＦを領域管理ＤＦとする。
【００２７】
図３は、ＤＦのサイズ変更を説明する図である。ＤＦは、データ格納エリアを持たないために、ディレクトリのみの書き換えとなる。なお、容量指定なし（管理ぺージ数ＦＦｈ）のＤＦのサイズ変更はできない。図３（Ａ）は、サイズ縮小の場合を示している。
＃１：まず、ＤＦの縮小ぺージ数が、ＤＦの空きぺージ数以下であることを確認する。
＃２：ＤＦの管理ぺージ数及び空きぺージ数を縮小分減算する。
＃３：領域管理ＤＦの空きぺージ数を＃１：で減算した分だけ加算する。
【００２８】
図３（Ｂ）は、サイズ増加の場合を示している。
＃１：まず、領域管理ＤＦの空きぺージ数をサイズ変更ＤＦの増加分だけ減算する。
＃２：サイズ変更ＤＦの管理ぺージ数及び空きぺージ数をサイズ変更ＤＦの増加分だけ加算する。
【００２９】
次に、ＷＥＦのサイズ変更について説明する。ＷＥＦは、データ格納エリアを持つために、ディレクトリのデータ書き換え及びデータ格納領域のデータ移動を行う。また、データ領域の移動を行うために、移動したファイルのディレクトリの内容を書き換える。
【００３０】
［サイズ縮小の場合］まず、サイズ変更ファイルの変更を行なう。
＃１：縮小を行うＷＥＦが可変長のときには、後述する＜アドレステーブルポインタ移動処理＞を実行する。
＃２：縮小を行うＷＥＦ−ＤＩＲの管理領域内バイト数、書込み可能最終アドレス、アドレステーブルポインタを縮小した分だけ減算した値に書き換える。
【００３１】
図４は、ファイルのデータ部分書き換え（縮小バイト分詰める）を説明する図である。
＃１：縮小対象ファイルのＤＩＲアドレスをターゲットとしてセットする。
＃２：ターゲットアドレスより３２を減算する。
＃３：ターゲットアドレスがＣＲＴ−ＤＰと同じときに終了する。
＃４：ターゲットとなったＤＩＲがＷＥＦ以外のとき‘＃２：’へ戻る。
＃５：ターゲットとなったＤＩＲのデータ部分を縮小バイト分移動する。
＃６：‘＃２：’ヘ戻る。
【００３２】
次に、移動済ＷＥＦ−ＤＩＲの内容修正処理について説明する。
＃１：縮小対象ファイルのＤＩＲアドレスをターゲットとしてセットする。
＃２：ターゲットアドレスより３２減算する。
＃３：ターゲットアドレスがＣＲＴ−ＤＰと同じときに終了する。
＃４：ターゲットとなったＤＩＲがＷＥＦ以外のときに‘＃２：’へ戻る。
＃５：ＤＩＲの管理領域内バイト数、書込み可能最終アドレス、アドレステーブルポインタ、ＷＥＦエリア開始アドレスを縮小した分だけ減算した値に書き換える。
＃６：‘＃２：’ヘ戻る。
【００３３】
図５は、データ部分を移動した結果生じた不要部分のＦＦｈクリアを説明する図である。
＃１：ＣＲＴ−ＡＰより縮小した分だけ減算したアドレスを求める。
＃２：このアドレスを先頭に削除データ（ファイルを縮小した容量）分ＦＦｈクリアする。
【００３４】
図６は、ＣＲＴ−ＡＰの変更を説明する図である。
＃１：ＣＲＴ−ＡＰを、もとの値より削除（ファイルを縮小した容量）分だけ減算した値に書き換える。
【００３５】
ＷＥＦリニア可変長「アドレステーブルポインタ」とＣＲＣの書き換えについて説明する。
＃１：縮小を行うＷＥＦ−ＤＩＲをチェック用ＤＩＲとしてセットする。
＃２：チェック用ＤＩＲより３２減算する。
＃３：チェック用ＤＩＲがＣＲＴ−ＤＰと同じときに終了する。
＃４：チェック用ＤＩＲが「ＷＥＦリニア可変長」以外のときに‘＃２：’ヘ戻る。
＃５：「移動後差分アドレス」として縮小バイトをセットして、後述する＜アドレステーブルポインタ修正処理＞の＃３：以降を実行する。
＃６：後述する＜アドレステーブルポインタＣＲＣ修正処理＞を実行する。
＃７：‘＃２：’へ戻る。
【００３６】
ここで、ＷＥＦリニア可変長「アドレステーブルポインタ」とＣＲＣの書き換え動作について説明する。
＃１：７Ｆ８０ｈをチェック用ＤＩＲとしてセットする。７Ｆ８０ｈは、図１３に示す例では、トランスポートＩＥＦディレクトリのアドレスであり、このアドレスより下位のアドレスにＭＦ配下のＤＦ、ＥＦのディレクトリが格納されている。
＃２：チェック用ＤＩＲより３２減算する。
＃３：チェック用ＤＩＲがＣＲＴ−ＤＰと同じときに終了する。
＃４：チェック用ＤＩＲが「ＷＥＦリニア可変長」以外のときに、‘＃２：’へ戻る。
＃５：＜アドレステーブルポインタ修正処理＞を実行する。
＃６：＜アドレステーブルポインタＣＲＣ修正処理＞を実行する。
＃７：‘＃２：’へ戻る。
【００３７】
次に、＜アドレステーブルポインタ修正処理＞について説明する。
＃１：ＷＥＦデータエリア開始アドレス＋管理領域バイト数−２で指し示す内容を移動前ＷＥＦ先頭アドレスとして取得する。
＃２：移動前ＷＥＦ先頭アドレス−ＷＥＦ消去サイズによって得た値を「移動後差分アドレス」として保存する。
＃３：アドレステーブルポインタ＋１を修正アドレスとしてＲＡＭ１４に保存する。
＃４：現在のレコード数を保存し、０のときに処理を終了する。
＃５：修正アドレスを含むページを読み込みページデータとして保持する。
＃６：修正アドレスを３２で割った余りを‘ページ位置’として保持する。
＃７：修正アドレスより２バイトを読み込む。
＃８：読み込んだデータを移動した後に、差分アドレスを修正データとして保持する。
＃９：修正データ上位をページデータの‘ページ位置’番目にセットする。
＃１０：‘ページ位置’に１加算し、３２のときに、１ページの書き戻しを行い、‘ページ位置’を０クリアし、次ページの読み込みを行う。
＃１１：修正データの下位をページデータの‘ページ位置’番目にセットする。
＃１２：‘ページ位置’に１加算し、３２のときに、１ページの書き戻しを行い、‘ページ位置’を０クリアする。
＃１３：現在のレコード数より１減算し、０のときに処理を終了する。
【００３８】
次に、＜アドレステーブルポインタＣＲＣ修正処理＞について説明する。
＃１：ファイル最終アドレスを保持し、レコード登録個数を取得する。
＃２：レコード登録個数０のときに、処理を終了する。
＃３：保持したアドレスにより２減算する。
＃４：ＣＲＣチェック実行し、実行結果を保持する。
＃５：レコード登録数を１減算する。
＃６：‘＃２：’へ戻る。
【００３９】
［サイズ拡大の場合］図７は、ファイルのデータ部分書き換え（拡大バイト分広げる）を説明する図である。
＃１：ＣＲＴ−ＤＰをターゲットとしてセットする。
＃２：ターゲットアドレスに３２加算する。
＃３：ターゲットアドレスがファイル拡大をするＤＩＲと同じアドレスのときに終了する。
＃４：ターゲットとなったＤＩＲがＷＥＦ以外のときに‘＃２：’へ戻る。
＃５：ターゲットとなったＤＩＲのデータ部分を拡大バイト分だけ「アドレス上位方向」ヘ移動する。
＃６：‘＃２：’ヘ戻る。
【００４０】
移動済ＷＥＦ−ＤＩＲの内容修正処理は、以下の通りである。
＃１：拡大対象ファイルのＤＩＲアドレスをターゲットとしてセットする。
＃２：ターゲットアドレスより３２減算する。
＃３：ターゲットアドレスがＣＲＴ−ＤＰと同じときに終了する。
＃４：ターゲットとなったＤＩＲがＷＥＦ以外のときに‘＃２：’へ戻る。
＃５：ＤＩＲの管理領域内バイト数、書込み可能最終アドレス、アドレステーブルポインタ、ＷＥＦエリア開始アドレスを拡大した分だけ加算した値に書き換える。
＃６：‘＃２：’へ戻る。
【００４１】
図８は、ＣＲＴ−ＡＰの変更を説明する図である。
＃１：ＣＲＴ−ＡＰより拡大した分だけ加算した値に書き換える。
【００４２】
図９は、サイズ変更ファイルの格納領域の内容変更について説明する図である。
＃１：拡大を行うＷＥＦが可変長のときに、＜アドレステーブルポインタ移動処理＞を実行する。拡大を行うＷＥＦが可変長以外のときに、拡大を行うＷＥＦ−ＤＩＲのＷＥＦ開始アドレス＋管理領域内バイト数を先頭にＦＦｈを書き込む。拡大を行うＷＥＦが可変長以外のときには、＃２：拡大を行うＷＥＦ−ＤＩＲの管理領域内バイト数、書込み可能最終アドレス、アドレステーブルポインタを拡大分加算した値に書き換える。
【００４３】
次に、ＷＥＦリニア可変長「アドレステーブルポインタ」とＣＲＣの書き換えについて説明する。
＃１：拡大を行うＷＥＦ−ＤＩＲチェック用ＤＩＲとしてセットする。
＃２：チェック用ＤＩＲより３２減算する。
＃３：チェック用ＤＩＲがＣＲＴ−ＤＰと同じときに終了する。
＃４：チェック用ＤＩＲが「ＷＥＦリニア可変長」以外のときに‘＃２：’ヘ戻る。
＃５：「移動後差分アドレス」として、拡大バイトをビット反転して１を加えたもの（上位方向ヘファイル移動したために）をセットして＜アドレステーブルポインタ修正処理＞の＃３：以降を実行する。
＃６：＜アドレステーブルポインタＣＲＣ修正処理＞を実行する。
＃７：‘＃２：’ヘ戻る。
【００４４】
ここで、ＷＥＦがローテーション済循環順編成ファイルの場合を説明する。レコードの格納順序を保持するために、サイズ増加の際に、以下の処理を行う。並び変え不要チェックは、ライトアペンドポインタの示すアドレスがサイズ増加前のファイルエンドを超えているときに、ローテーション済フラグを消去して、処理を終了する。
【００４５】
図１０は、データ並び変え処理を示す流れ図である。データ並び変え処理は、以下の手順に従い行われる。
Ｓ９０１：ライトアペンドポインタまでのレコード数を計算し、その値を変数Ａに代入する。
Ｓ９０２：操作開始レコードは、物理番号Ａのレコードとする。
Ｓ９０３：変数Ｘ、Ｙを用意する。
Ｓ９０４：変数ＸにＡを代入する。
Ｓ９０５：変数Ｘに基づいて関数Ｆｕｎｃの計算を行い、その結果を変数Ｙに代入する。関数Ｆｕｎｃの処理内容については、後述する。
Ｓ９０６：物理レコードＡと物理レコードＹを入れ替える。
Ｓ９０７：変数Ｙを変数Ｘに代入する。
Ｓ９０８：以上の処理がレコード数分行われたか否かが判断され、レコード数分行われていないときはＳ９０５に戻り、レコード数分行われている場合には処理を終了する。
【００４６】
次に、Ｓ９０５の関数Ｆｕｎｃの計算内容を説明する。
Ｓ９０５１：変数ＡがＸ以上であるか否かを判断し、以上である場合はＳ９０５２の処理を、以上でない場合にはＳ９０５３の処理を実行する。
Ｓ９０５２：変数Ｙに変数Ｘ及び全レコード数を加算し、さらに変数Ａを減算する。
Ｓ９０５３：変数Ｙに変数Ｘを加算し、さらに変数Ａを減算する。
【００４７】
＜アドレステーブルポインタ移動処理＞は、以下の通りである。移動元、移動先アドレス、移動バイト数を取得し、（移動元）＜（移動先）のときに、最終データより移動する。
＃１：移動先アドレス＋移動バイト数−１を移動先アドレス、移動元アドレス＋移動バイト数−１を移動元アドレスとする。
＃２：移動先アドレスを含むぺージを読み込む。
＃３：移動先アドレス÷３２をカウンタとしてセットする。
＃４：読み込んだデータのカウンタ番目に、移動元アドレスの内容をセットする。
＃５：カウンタが０でないときに‘＃８：’へ進む。
＃６：セットしたぺージデータをＥＥＰＲＯＭ１５へ書き戻す。
＃７：１ページ前を読み込み、カウンタに３２をセットする。
＃８：カウンタ、移動元アドレス、移動バイト数を１減算する。
＃９：移動バイト数が０のときに、セットしたぺージデータをＥＥＰＲＯＭ１５へ書き戻して、処理を終了する。
＃１０：‘＃４：’ヘ戻る。
【００４８】
（移動元）＞（移動先）のときに、先頭データより移動する。
＃１：移動先アドレスを含むぺージを読み込み。
＃２：移動先アドレス÷３２をカウンタとしてセットする。
＃３：読み込んだデータのカウンタ番目に、移動元アドレスの内容をセットする。
＃４：カウンタが３１でないときに‘＃７：’へ進む。
＃５：セットしたぺージデータをＥＥＰＲＯＭ１５へ書き戻す。
＃６：１ページ後を読み込み、カウンタに０をセット。
＃７：カウンタ、移動元アドレス、移動バイト数を１加算する。
＃８：移動バイト数を１減算する。
＃９：移動バイト数が０のときに、セットしたぺージデータをＥＥＰＲＯＭ１５へ書き戻して、処理を終了する。
＃１０：‘＃３：’ヘ戻る。
【図面の簡単な説明】
【００４９】
【図１】ＣＨＡＮＧＥ−ＳＩＺＥのコマンドＡＰＤＵを示す図である。
【図２】ＣＨＡＮＧＥ−ＳＩＺＥコマンドを処理するＩＣカード１０の動作を示す流れ図である。
【図３】ＤＦのサイズ変更を説明する図である。
【図４】ファイルのデータ部分書き換え（縮小バイト分詰める）についての説明図である。
【図５】不要部分ＦＦｈクリアを説明する図である。
【図６】ＣＲＴ−ＡＰの変更を説明する図である。
【図７】ファイルのデータ部分書き換え（拡大バイト分広げる）についての説明図である。
【図８】ＣＲＴ−ＡＰの変更を説明する図である。
【図９】サイズ変更ファイルの格納領域の内容変更についての説明図である。
【図１０】データ並び変え処理を示す流れ図である。
【図１１】従来のＩＣカードの構成、及びそのＩＣカードとリーダライタ装置との接続関係を示すブロック図である。
【図１２】ＥＥＰＲＯＭ１５内のファイル構成を示す図である。
【図１３】ＥＥＰＲＯＭにおけるファイル格納イメージの一例を示す図である。
【図１４】ＥＥＰＲＯＭにおけるファイル格納イメージの一例であって、図１３に示すものと異なるものを示す図である。
【符号の説明】
【００５０】
１１  Ｉ／Ｏインタフェース
１２  ＣＰＵ
１３  ＲＯＭ
１４  ＲＡＭ
１５  ＥＥＰＲＯＭ
２０  リーダライタ装置
【図１】
2008016050.tif 000003
【図２】
2008016050.tif 000004
【図３】
2008016050.tif 000005
【図４】
2008016050.tif 000006
【図５】
2008016050.tif 000007
【図６】
2008016050.tif 000008
【図７】
2008016050.tif 000009
【図８】
2008016050.tif 000010
【図９】
2008016050.tif 000011
【図１０】
2008016050.tif 000012
【図１１】
2008016050.tif 000013
【図１２】
2008016050.tif 000014
【図１３】
2008016050.tif 000015
【図１４】
2008016050.tif 000016