(57)【特許請求の範囲】
【請求項１】
書換え回数に制限のない第１の記憶手段と、
書換え回数に制限のある第２の記憶手段と、
商品に関する複数の項目についての情報のうち、書換え頻度が予め定める基準頻度以上である第１の項目の情報を第１の記憶手段に記憶させ、書換え頻度が予め定める基準頻度未満である第２の項目の情報を第１の項目の情報と対応付けて第２の記憶手段に記憶させる制御手段であって、互いに対応する第１の項目の情報と第２の項目の情報とを、第１の記憶手段および第２の記憶手段から読出し、読出した第１の項目の情報と第２の項目の情報とに基づいて取引処理を行う制御手段とを含むことを特徴とする電子式金銭登録機。
【請求項２】
前記第１の記憶手段には、各商品を識別するための識別情報が記憶されており、
前記制御手段は、第１の項目の情報を、前記識別情報に対応付けて第１の記憶手段に記憶させ、第２の項目の情報を、前記識別情報に対応付けて第２の記憶手段に記憶させることを特徴とする請求項１に記載の電子式金銭登録機。
【請求項３】
前記制御手段は、第２の項目の情報が記憶される第２の記憶手段のアドレスを特定する特定情報を、前記識別情報と対応付けて第１の記憶手段に記憶させることを特徴とする請求項２に記載の電子式金銭登録機。
【請求項４】
前記制御手段は、第２の記憶手段に記憶される第２の項目の情報を更新するとき、変更前の第２の項目の情報を消去することなく、変更後の第２の項目の情報を第２の記憶手段の領域のうち未書込みの領域に書込み、第１の記憶手段に記憶される特定情報を、変更後の第２の項目の情報を書込んだアドレスを特定する特定情報に書換えることを特徴とする請求項３に記載の電子式金銭登録機。
【請求項５】
前記識別情報は、自然数によって表され、
前記制御手段は、第１の項目の情報を前記識別情報に対応付けて前記識別情報の昇順または降順に第１の記憶手段に記憶させ、第２の項目の情報を前記識別情報に対応付けて前記識別情報の昇順または降順に第２の記憶手段に記憶させることを特徴とする請求項２〜４のいずれか１つに記載の電子式金銭登録機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書換え回数に制限のある記憶媒体を用いる電子式金銭登録機に関する。
【背景技術】
【０００２】
従来、電子式金銭登録機（Electronic Cash Register：略称「ＥＣＲ」）では、商品マスタを記憶するデバイスとしてメモリバックアップが可能なランダムアクセスメモリ（Random Access Memory：略称「ＲＡＭ」）、たとえばスタティックＲＡＭ（以下「ＳＲＡＭ」という）を使用している。
【０００３】
商品の件数が多い日本商品識別番号（Japanese Article Number：略称「ＪＡＮ」）などを用いる商品マスタのデータを保存するためには、大容量のＳＲＡＭを使用する必要がある。しかし、ＳＲＡＭは、コスト、つまり商品単価が高いので、大容量のＳＲＡＭを使用する場合、ＥＣＲの製品原価が高くなり、商品の利益率が低下する。
【０００４】
そこで、商品マスタ保存用のメモリとして、ＳＲＡＭに比べ低コストの大容量メモリであるフラッシュメモリ（俗称「フラッシュＲＯＭ（Read Only Memory）」：以下「フラッシュＲＯＭ」という）を採用することによって、利益率の改善を図っている。しかし、ＳＲＡＭに比べ、フラッシュＲＯＭには、書換え回数に制限がある、また、記憶されているデータを消去しないと書換え、つまり上書き更新ができないというデメリットがある。したがって、フラッシュＲＯＭは、日々の売上金額や単価の変更など、書換え頻度が多いデータの記憶には適していない。
【０００５】
従来技術として、特許文献１に記載されるジャーナル書込み方式がある。このジャーナル書込み方式では、処理部は、フラッシュアドバンストテクノロジーアタッチメント（Advanced Technology Attachment：略称「ＡＴＡ」）−パーソナルコンピュータ（Personal Computer：略称「ＰＣ」）カード（以下「フラッシュＡＴＡ−ＰＣカード」という）にジャーナルデータファイルをオープンした後、入力されるジャーナルデータを一旦ＲＡＭのジャーナルデータ一時格納領域に記録する。そして、ジャーナルデータ一時格納領域に記録されたジャーナルデータのサイズがセクタサイズ以上になると、処理部は、セクタサイズ分のジャーナルデータをフラッシュＡＴＡ−ＰＣカードに記録する。処理部は、システムを終了するときに、ジャーナルデータファイルをクローズする。このようにして、フラッシュＡＴＡ−ＰＣカードに形成されるファイルアロケーションテーブル（File Allocation Table：略称「ＦＡＴ」）領域への書換え回数を、システム終了時の１回のみとし、フラッシュＡＴＡ−ＰＣカードの使用可能期間を延長している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−２０９５６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術は、ＲＡＭのジャーナルデータ一時格納領域に記憶するジャーナルデータの容量が少ない場合には有効であるが、ＪＡＮなどデータ量が多い場合は、ＲＡＭの容量を増やす必要があり、コストが増大するという問題がある。
【０００８】
本発明の目的は、大容量のデータの更新を行うに際して、高価なＲＡＭの使用量を減らすとともに、書換え回数に制限のあるフラッシュＲＯＭの使用可能期間を伸ばすことができる電子式金銭登録機を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、書換え回数に制限のない第１の記憶手段と、
書換え回数に制限のある第２の記憶手段と、
商品に関する複数の項目についての情報のうち、書換え頻度が予め定める基準頻度以上である第１の項目の情報を第１の記憶手段に記憶させ、書換え頻度が予め定める基準頻度未満である第２の項目の情報を第１の項目の情報と対応付けて第２の記憶手段に記憶させる制御手段であって、互いに対応する第１の項目の情報と第２の項目の情報とを、第１の記憶手段および第２の記憶手段から読出し、読出した第１の項目の情報と第２の項目の情報とに基づいて取引処理を行う制御手段とを含むことを特徴とする電子式金銭登録機である。
【００１０】
また本発明は、前記第１の記憶手段には、各商品を識別するための識別情報が記憶されており、
前記制御手段は、第１の項目の情報を、前記識別情報に対応付けて第１の記憶手段に記憶させ、第２の項目の情報を、前記識別情報に対応付けて第２の記憶手段に記憶させることを特徴とする。
【００１１】
また本発明は、前記制御手段は、第２の項目の情報が記憶される第２の記憶手段のアドレスを特定する特定情報を、前記識別情報と対応付けて第１の記憶手段に記憶させることを特徴とする。
【００１２】
また本発明は、前記制御手段は、第２の記憶手段に記憶される第２の項目の情報を更新するとき、変更前の第２の項目の情報を消去することなく、変更後の第２の項目の情報を第２の記憶手段の領域のうち未書込みの領域に書込み、第１の記憶手段に記憶される特定情報を、変更後の第２の項目の情報を書込んだアドレスを特定する特定情報に書換えることを特徴とする。
【００１３】
また本発明は、前記識別情報は、自然数によって表され、
前記制御手段は、第１の項目の情報を前記識別情報に対応付けて前記識別情報の昇順または降順に第１の記憶手段に記憶させ、第２の項目の情報を前記識別情報に対応付けて前記識別情報の昇順または降順に第２の記憶手段に記憶させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、第１の記憶手段は、書換え回数に制限がない。第２の記憶手段は、書換え回数に制限がある。そして、制御手段は、商品に関する複数の項目についての情報のうち、書換え頻度が予め定める基準頻度以上である第１の項目の情報を第１の記憶手段に記憶させ、書換え頻度が予め定める基準頻度未満である第２の項目の情報を第１の項目の情報と対応付けて第２の記憶手段に記憶させる。制御手段は、第１の記憶手段および第２の記憶手段から互いに対応する第１の項目の情報と第２の項目の情報とを読出し、読出した第１の項目の情報と第２の項目の情報とに基づいて取引処理を行う。したがって、第１の記憶手段、たとえば高価なＳＲＡＭの使用量を減らすことができ、コスト削減を図ることができる。また、書換え頻度の低い情報を書換え回数に制限のある第２の記憶手段に記憶するので、第２の記憶手段、たとえばフラッシュＲＯＭの使用可能期間を延ばすことができる。
【００１５】
また本発明によれば、前記第１の記憶手段には、各商品を識別するための識別情報が記憶されている。そして、前記制御手段は、第１の項目の情報を、前記識別情報に対応付けて第１の記憶手段に記憶させ、第２の項目の情報を、前記識別情報に対応付けて第２の記憶手段に記憶させる。したがって、複数の項目の情報を識別情報ごとに管理することができる。
【００１６】
また本発明によれば、前記制御手段は、第２の項目の情報が記憶される第２の記憶手段のアドレスを特定する特定情報を、前記識別情報と対応付けて第１の記憶手段に記憶させる。したがって、第１の記憶手段に記憶される特定情報によって、第２の記憶手段に記憶される第２の項目の情報を特定することができる。
【００１７】
また本発明によれば、前記制御手段は、第２の記憶手段に記憶される第２の項目の情報を更新するとき、変更前の第２の項目の情報を消去することなく、変更後の第２の項目の情報を第２の記憶手段の領域のうち未書込みの領域に書込み、第１の記憶手段に記憶される特定情報を、変更後の第２の項目の情報を書込んだアドレスを特定する特定情報に書換える。したがって、第２の項目の情報を更新しても、第２の記憶手段の消去を行う必要がなく、第２の記憶手段、たとえばフラッシュＲＯＭの使用可能期間をより延ばすことができる。
【００１８】
また本発明によれば、前記識別情報は、自然数によって表される。そして、前記制御手段は、第１の項目の情報を前記識別情報に対応付けて前記識別情報の昇順または降順に第１の記憶手段に記憶させ、第２の項目の情報を前記識別情報に対応付けて前記識別情報の昇順または降順に第２の記憶手段に記憶させる。したがって、識別情報による検索を容易に行うことができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態であるＥＣＲ１の構成を示すブロック図である。
【図２】商品マスタ情報３０の構成を示す図である。
【図３】ＲＡＭ１２に記憶される情報の構成を示す図である。
【図４】フラッシュＲＯＭ１３に記憶される情報の構成を示す図である。
【図５】プログラム格納ＲＯＭ１４に記憶される情報の構成を示す図である。
【図６】フラッシュＲＯＭブロック構成テーブル１４４の構成を示す図である。
【図７】商品マスタ情報メモリ構成テーブル１２５の構成を示す図である。
【図８】フラッシュＲＯＭ書込みポインタテーブル１２６の構成を示す図である。
【図９】商品マスタインデックス情報１２２の構成を示す図である。
【図１０】レコードポインタが示すレコードに記憶される情報を示す図である。
【図１１】フラッシュＲＯＭ１３に記憶される第２商品マスタ情報１３１の構成を示す図である。
【図１２】商品名変更に伴う商品マスタインデックス情報１２２の変更前後のデータを示す図である。
【図１３】商品名変更に伴うフラッシュＲＯＭ書込みポインタテーブル１２６の変更前後のデータを示す図である。
【図１４】商品名変更に伴う第２商品マスタ情報１３１の一部の変更前後のデータを示す図である。
【図１５】精算処理に伴う商品マスタインデックス情報１２２の変更前後のデータを示す図である。
【図１６】精算処理に伴う当日売上情報１２８の変更前後のデータを示す図である。
【図１７】精算処理に伴うフラッシュＲＯＭ書込みポインタテーブル１２６の変更前後のデータを示す図である。
【図１８】精算処理に伴う第２商品マスタ情報１３１の他の一部の変更前後のデータを示す図である。
【図１９】商品名変更処理の処理手順を示すフローチャートである。
【図２０】精算処理の処理手順を示すフローチャートである。
【図２１】商品マスタデータ読出処理の処理手順を示すフローチャートである。
【図２２】商品マスタデータ書込処理の処理手順を示すフローチャートである。
【図２３】商品マスタデータ書込処理の処理手順を示すフローチャートである。
【図２４】従来技術による商品名変更での商品マスタ情報の書換えを説明するための図である。
【図２５】従来技術による精算処理での変更前後の商品マスタ情報を示す図である。
【発明を実施するための形態】
【００２０】
図１は、本発明の一実施形態である電子式金銭登録機（Electronic Cash Register：以下「ＥＣＲ」という）１の構成を示すブロック図である。ＥＣＲ１は、制御部１１、ランダムアクセスメモリ（Random Access Memory：略称「ＲＡＭ」）１２、データ格納用フラッシュメモリ（俗称「フラッシュＲＯＭ（Read Only Memory）」：以下「フラッシュＲＯＭ」という）１３、プログラム格納ＲＯＭ１４、表示部１５、プリンタ１６、時計１７、キーボード１８、通信部１９、ＳＤカードインタフェース部２０、バーコードスキャナ２１およびドロア２２を含んで構成される。
【００２１】
制御手段である制御部１１は、たとえば中央処理装置（Central Processing Unit：略称「ＣＰＵ」）によって構成され、プログラム格納ＲＯＭ１４に記憶されるプログラムを実行することによって、ＲＡＭ１２、フラッシュＲＯＭ１３、表示部１５、プリンタ１６、時計１７、キーボード１８、通信部１９、セキュアデジタル（Secure Digital：略称「ＳＤ」）カードインタフェース部２０、バーコードスキャナ２１およびドロア２２を制御する。
【００２２】
第１の記憶手段であるＲＡＭ１２は、たとえばスタティックＲＡＭ（以下「ＳＲＡＭ」という）によって構成される。ＲＡＭ１２は、制御部１１がプログラムを実行するために必要な情報を記憶し、制御部１１によって情報の書込みおよび読出しが行われる。ＲＡＭ１２は、書換え頻度が予め定める基準頻度以上、たとえば１日に２回以上の書換えが発生する情報を記憶する。ＲＡＭ１２には、たとえば、第１商品マスタ情報１２１、表示／印字用データ１２７、レシート計算用データ１２８、商品マスタ情報メモリ構成テーブル１２５およびフラッシュＲＯＭ書込みポインタテーブル１２６が記憶される。ＲＡＭ１２は、書換え回数に制限はない。
【００２３】
第１商品マスタ情報１２１は、商品マスタインデックス情報１２２、単価情報１２３および当日売上情報１２４を含む。商品マスタインデックス情報１２２は、商品に関する複数の項目の情報が記憶されているアドレスを示すインデックスを表す情報である。単価情報１２３は、各商品の単価を表す情報である。当日売上情報１２４は、日単位の商品の売上金額を表す情報である。表示／印字用データ１２７は、表示部１５に表示させるための情報およびプリンタ１６に印刷させるための情報である。レシート計算用データ１２８は、販売した商品に対するレシートを作成するための情報である。商品マスタ情報メモリ構成テーブル１２５は、商品に関する複数の項目の情報がどの記憶媒体のどこに何バイト単位で記憶されているかを示すテーブルである。フラッシュＲＯＭ書込みポインタテーブル１２６は、フラッシュＲＯＭ１３に形成される各ブロックの未使用の領域、つまり未書込みの領域の先頭アドレス、つまり書込み可能な領域の先頭アドレスを表す書込みポインタを記憶するテーブルである。単価情報１２３および当日売上情報１２４は、第１の項目の情報である。インデックスは、特定情報である。
【００２４】
第２の記憶手段であるフラッシュＲＯＭ１３は、書換え回数に制限がある半導体メモリである。フラッシュＲＯＭ１３の価格は、ＲＡＭ１２の価格よりも低価格である。フラッシュＲＯＭ１３は、制御部１１がプログラムを実行するために必要な情報を記憶し、制御部１１によって情報の書込みおよび読出しが行われる。フラッシュＲＯＭ１３に書込まれた情報を書換えるためには、書込まれている情報を一旦消去してから、書込む必要がある。
【００２５】
フラッシュＲＯＭ１３は、書換え頻度が予め定める基準頻度未満、たとえば１日に２回未満の書換えが発生する情報を記憶する。すなわち、フラッシュＲＯＭ１３には、ＲＡＭ１２に記憶される情報よりも更新頻度が少ない情報が記憶される。フラッシュＲＯＭ１３には、たとえば、第２商品マスタ情報１３１、および売上記録１３６が記憶される。
【００２６】
第２商品マスタ情報１３１は、商品名情報１３２、各種設定情報１３３、週間売上情報１３４および月間売上情報１３５を含む。商品名情報１３２は、各商品に命名された名称を表す情報である。各種設定情報１３３は、商品ごとに設定された情報であり、たとえば税種別およびグループなどの情報がある。税種別は、内税／外税および課税／非課税などの別を表す。グループは、各商品が分類されているグループを表す。週間売上情報１３４は、週単位の商品の売上金額を表す情報である。月間売上情報１３５は、月単位の商品の売上金額を表す情報である。売上記録１３６は、個々の売上を電子的に記憶する電子ジャーナルである。商品名情報１３２、各種設定情報１３３、週間売上情報１３４および月間売上情報１３５は、第２の項目の情報である。
【００２７】
プログラム格納ＲＯＭ１４は、たとえば書換え可能なフラッシュメモリ、あるいは書換え不可のマスクＲＯＭなどによって構成される。プログラム格納ＲＯＭ１４は、制御部１１によって実行されるプログラムおよびテーブルを記憶する。
【００２８】
表示部１５は、たとえば液晶ディスプレイなどの表示装置によって構成される。表示部１５は、制御部１１から受取る情報を表示する。プリンタ１６は、たとえば印刷装置によって構成される。プリンタ１６は、制御部１１から受取る情報を印刷する。制御部１１は、プリンタ１６によって、たとえばレシートを印刷する。時計１７は、時刻を計時する。制御部１１は、時計１７を参照することによって、時刻を認識し、あるいは時間を計測する。キーボード１８は、文字、数字および記号などを入力するための複数のキーを有する入力装置である。キーボード１８は、操作されたキーに対応付けられた情報を制御部１１に送る。ユーザは、キーボード１８を操作することによって、商品コードおよび顧客番号などの情報を入力することができる。
【００２９】
通信部１９は、たとえば通信装置によって構成される。通信部１９は、通信回線に接続される他の装置、たとえばサーバ装置と情報の送受信を行う。ＳＤカードインタフェース部２０は、着脱可能な記録媒体、たとえばＳＤカードを装着可能であり、装着された記録媒体に情報の書込みおよび読出しを行うためのインタフェースである。ＳＤカードインタフェース部２０は、装着された記録媒体に記録された情報を読出し、読出した情報を制御部１１に送り、制御部１１から受け取る情報を装着された記録媒体に書込む。ＳＤカードには、商品マスタ、顧客マスタ、および売上記録などの情報が記憶される。バーコードスキャナ２１は、バーコードを読取り、読取った情報を制御部１１に送る。バーコードスキャナ２１は、たとえば商品のバーコード、およびカードに記憶される顧客番号のバーコードを読取る。ドロア２２は、金銭を収容する収容装置である。
【００３０】
制御部１１は、キーボード１８によって入力された情報に従って、記憶している情報の更新処理、および取引処理を行う。たとえば、制御部１１は、更新処理では、商品名の変更処理を行う。また、制御部１１は、取引処理では、商品の販売が行われると、商品の売上処理を行い、売上記録を更新する。売上処理では、売上金額の集計を行い、第１商品マスタ情報１２１の当日売上情報、ならびに第２商品マスタ情報１３１の週間売上情報１３４および月間売上情報１３５を更新する精算処理を行う。
【００３１】
制御部１１は、データ送受信部１１１および各種データ作成部１１２を含む。データ送受信部１１１および各種データ作成部１１２は、制御部１１がプログラム格納ＲＯＭ１４に記憶されるプログラムを実行することによって実現される機能である。データ送受信部１１１は、通信部１９によって、たとえば通信回線に接続されるサーバ装置と情報の送受信を行う。各種データ作成部１１２は、表示用データや印字用データを作成する。制御部１１は、各種データ作成部１１２によって作成された表示用データを表示部１５に表示させ、また、各種データ作成部１１２によって作成された印字用データをプリンタ１６に印刷させる。
【００３２】
図２は、商品マスタ情報３０の構成を示す図である。商品マスタ情報３０は、商品に関する複数の項目の情報を商品コードごとに示す情報である。商品マスタ情報３０は、商品コード３０１、商品名３０２、単価３０３、各種設定３０４、当日売上金額３０５、週間売上金額３０６および月間売上金額３０７の項目を含む。
【００３３】
商品コード３０１は、各商品を識別するための識別情報である。商品コード３０１は、自然数によって表される。商品名３０２は、各商品に命名された名称である。単価３０３は、各商品の１個当たりの価格である。各種設定３０４は、税種別およびグループなど予め設定されている情報である。当日売上金額３０５は、日単位の売上金額である。週間売上金額３０６は、週単位の売上金額である。月間売上金額３０７は、月単位の売上金額である。
【００３４】
図２に示した商品マスタ情報３０には、商品名３０２、単価３０３、各種設定３０４、当日売上金額３０５、週間売上金額３０６および月間売上金額３０７が、商品コードごとに行単位で表わされている。図２に示した商品マスタ情報３０は、商品コードの昇順に配列されているが、降順であってもよい。
【００３５】
図２には、商品コード「００００１」について、商品名「ウーロン茶」、単価「１５０」、各種設定「内税、第１グループ」、当日売上金額「６６，０００円」、週間売上金額「３３０，０００円」、および月間売上金額「１，５００，０００円」が示されている。商品コード「００００２」については、商品名「緑茶Ａ」、単価「１５０」、各種設定「内税、第１グループ」、当日売上金額「７５，０００円」、週間売上金額「４１２，５００円」、および月間売上金額「２，２００，０００円」が示されている。商品コード「００００３」については、商品名「緑茶Ｂ」、単価「１５０」、各種設定「内税、第１グループ」、当日売上金額「６，０００円」、週間売上金額「３６，０００円」、および月間売上金額「１５０，０００円」が示されている。商品コード「０００１１」については、商品名「アンパン」、単価「１００」、各種設定「内税、第２グループ」、当日売上金額「８，０００円」、週間売上金額「４８，０００円」、および月間売上金額「１２０，０００円」が示されている。商品コード「０００１２」については、商品名「サンドイッチ」、単価「２５０」、各種設定「内税、第２グループ」、当日売上金額「８，７５０円」、週間売上金額「７０，０００円」、および月間売上金額「２５０，０００円」が示されている。商品コード「００１０１」については、商品名「商品券Ａ」、単価「１０００」、各種設定「非課税、第３グループ」、当日売上金額「１２，０００円」、週間売上金額「８０，０００円」、および月間売上金額「３８５，０００円」が示されている。商品コード「００１０２」については、商品名「商品券Ｂ」、単価「１０００」、各種設定「非課税、第３グループ」、当日売上金額「５，０００円」、週間売上金額「２０，０００円」、および月間売上金額「７２，０００円」が示されている。
【００３６】
図３は、ＲＡＭ１２に記憶される情報の構成を示す図である。ＲＡＭ１２には、表示／印字用データ１２７、レシート計算用データ１２８、商品マスタインデックス情報１２２、単価情報１２３、当日売上情報１２４、商品マスタ情報メモリ構成テーブル１２５およびフラッシュＲＯＭ書込みポインタテーブル１２６が記憶されている。商品マスタインデックス情報１２２、単価情報１２３および当日売上情報１２４は、第１商品マスタ情報１２１を構成する。
【００３７】
図４は、フラッシュＲＯＭ１３に記憶される情報の構成を示す図である。フラッシュＲＯＭ１３には、１４個の第２商品マスタ情報１３１、および２個の売上記録１３６が、ブロック単位に記憶される。１つのブロックに記憶される第２商品マスタ情報１３１は６４Ｋバイトで構成され、１つのブロックに記憶される売上記録１３６は６４Ｋバイトで構成される。
【００３８】
図５は、プログラム格納ＲＯＭ１４に記憶される情報の構成を示す図である。プログラム格納ＲＯＭ１４には、第１アプリケーションプログラム１４１、第２アプリケーションプログラム１４２、商品マスタ情報更新処理プログラム１４３、フラッシュＲＯＭブロック構成テーブル１４４、および第ｎアプリケーションプログラム１４５が、この順序で記憶されている。第１アプリケーションプログラム１４１、第２アプリケーションプログラム１４２および第ｎアプリケーションプログラム１４５は、アプリケーションプログラムである。
【００３９】
商品マスタ情報更新処理プログラム１４３は、商品マスタ情報３０の更新を行うプログラムであり、後述する商品名変更処理および精算処理を行う。フラッシュＲＯＭブロック構成テーブル１４４は、フラッシュＲＯＭ１３に形成される１６個のブロックのそれぞれの開始アドレスおよび終了アドレスを示すテーブルである。商品マスタ情報更新処理プログラム１４３およびフラッシュＲＯＭブロック構成テーブル１４４は、商品マスタ更新処理プログラムを構成する。
【００４０】
図６は、フラッシュＲＯＭブロック構成テーブル１４４の構成を示す図である。たとえば、第１ブロックの開始アドレスは、「０ｘ０００００」であり、終了アドレスは、「０ｘ０ＦＦＦＦ」である。第２ブロックの開始アドレスは、「０ｘ１００００」であり、終了アドレスは、「０ｘ１ＦＦＦＦ」である。第３ブロックの開始アドレスは、「０ｘ２００００」であり、終了アドレスは、「０ｘ２ＦＦＦＦ」である。第４ブロックの開始アドレスは、「０ｘ３００００」であり、終了アドレスは、「０ｘ３ＦＦＦＦ」である。第１６ブロックの開始アドレスは、「０ｘＦ００００」であり、終了アドレスは、「０ｘＦＦＦＦＦ」である。ここに、「０ｘ」は、Ｃ言語の記述様式であり、１６進数の数値であることを示す。
【００４１】
図７は、商品マスタ情報メモリ構成テーブル１２５の構成を示す図である。商品マスタ情報３０に含まれる各項目の情報がどの記憶媒体のどこに何バイト単位で記憶されているかを示すテーブルである。
【００４２】
メモリタイプは、各項目の情報が記憶されている記憶媒体を示す情報である。「ＲＡＭ」は、記憶媒体がＲＡＭ１２であることを示し、「ＦｌａｓｈＲＯＭ」は、記憶媒体がフラッシュＲＯＭ１３であることを示す。メモリサイズ（バイト数）は、各項目の情報の長さをバイト数で表す情報である。開始アドレス／ブロックは、メモリタイプが「ＲＡＭ」の場合、各項目の情報が記憶されている先頭のアドレスを示し、メモリタイプが「ＦｌａｓｈＲＯＭ」の場合、各項目の情報が記憶されている先頭のブロック番号を示す。終了アドレス／ブロックは、メモリタイプが「ＲＡＭ」の場合、各項目の情報が記憶されている最後のアドレスを示し、メモリタイプが「ＦｌａｓｈＲＯＭ」の場合、各項目の情報が記憶されている最後のブロック番号を示す。
【００４３】
図７には、６つの項目の情報、具体的には、単価情報１２３、当日売上情報１２４、商品名情報１３２、各種設定情報１３３、週間売上情報１３４および月間売上情報１３５が示されている。各項目の情報についての「メモリタイプ」、「メモリサイズ（バイト数）」、「開始アドレス／ブロック」および「終了アドレス／ブロックは、単価情報１２３については、「ＲＡＭ」、「３」、「０ｘ０８０００」および「０ｘ０８５ＤＢ」である。当日売上情報１２４については、「ＲＡＭ」、「８」、「０ｘ０８５ＤＣ」および「０ｘ０９５７Ｂ」である。商品名情報１３２については、「ＦｌａｓｈＲＯＭ」、「１６」、「１」および「２」である。各種設定情報１３３については、「ＦｌａｓｈＲＯＭ」、「２」、「１」および「２」である。週間売上情報１３４については、「ＦｌａｓｈＲＯＭ」、「８」、「３」および「３」である。月間売上情報１３５については、「ＦｌａｓｈＲＯＭ」、「８」、「４」および「４」である。
【００４４】
図８は、フラッシュＲＯＭ書込みポインタテーブル１２６の構成を示す図である。フラッシュＲＯＭ書込みポインタテーブル１２６は、各ブロックの書込みポインタの値を記憶するテーブルである。書込みポインタは、ブロック内の未使用領域の先頭のアドレスを示すポインタである。図８には、第１ブロックの書込みポインタとして、「０ｘ００８０」が示され、第２ブロックの書込みポインタとして、「０ｘ００００」が示され、第３ブロックの書込みポインタとして、「０ｘ００３８」が示され、第４ブロックの書込みポインタとして、「０ｘ００３８」が示され、第１６ブロックの書込みポインタとして、「０ｘ００００」が示されている。
【００４５】
図９は、商品マスタインデックス情報１２２の構成を示す図である。商品マスタインデックス情報１２２は、レコードポインタ、および第２商品マスタ情報１３１が記憶されるメモリアドレスを含む。レコードポインタは、ＲＡＭ１２に記憶されている第１商品マスタ情報のレコードのうち、各商品コードのレコードが何番目のレコードであるかを示すポインタである。
【００４６】
第２商品マスタ情報が記憶されるメモリアドレスは、フラッシュＲＯＭ１３に記憶される商品名情報１３２、各種設定情報１３３、週間売上情報１３４および月間売上情報１３５のアドレスを、商品コードごとに示す。図９に示した商品マスタインデックス情報１２２は、商品コードの昇順に配列されているが、降順であってもよい。
【００４７】
各商品コードに対応付けられているレコードポインタ、ならびに商品名情報１３２、各種設定情報１３３、週間売上情報１３４および月間売上情報１３５のアドレスは、商品コード「００００１」については、「０ｘ０００１」、「０ｘ０００００」、「０ｘ０００１０」、「０ｘ２００００」、および「０ｘ３００００」である。商品コード「００００２」については、「０ｘ０００２」、「０ｘ０００１２」、「０ｘ０００２２」、「０ｘ２０００８」、および「０ｘ３０００８」である。商品コード「００００３」については、「０ｘ０００３」、「０ｘ０００２４」、「０ｘ０００３４」、「０ｘ２００１０」、および「０ｘ３００１０」である。商品コード「０００１１」については、「０ｘ０００４」、「０ｘ０００３６」、「０ｘ０００４６」、「０ｘ２００１８」、および「０ｘ３００１８」である。商品コード「０００１２」については、「０ｘ０００５」、「０ｘ０００４８」、「０ｘ０００５８」、「０ｘ２００２０」、および「０ｘ３００２０」である。商品コード「００１０１」については、「０ｘ０００６」、「０ｘ０００５Ａ」、「０ｘ０００６Ａ」、「０ｘ２００２８」、および「０ｘ３００２８」である。商品コード「００１０２」については、「０ｘ０００７」、「０ｘ０００６Ｃ」、「０ｘ０００７Ｃ」、「０ｘ２００３０」、および「０ｘ３００３０」である。
【００４８】
図１０は、レコードポインタが示すレコードに記憶される情報を示す図である。１つのレコードは、単価情報１２３および当日売上情報１２４を含む。１つの商品コードに対応付けられる当日売上情報１２４は、同じ商品コードに対応付けられる単価情報１２３と同じ順序でＲＡＭ１２に記憶される。
【００４９】
ＲＡＭ１２に記憶される各レコードには、単価情報１２３として、単価４０１が記憶され、当日売上情報１２４として、当日売上金額４０２が記憶されている。図１０には、各レコードポインタが示すレコードの「単価」および「当日売上金額」として、レコードポインタ「０ｘ０００１」については、「１５０」および「６６０００」が示されている。レコードポインタ「０ｘ０００２」については、「１５０」および「７５０００」が示されている。レコードポインタ「０ｘ０００３」については、「１５０」および「６０００」が示されている。レコードポインタ「０ｘ０００４」については、「１００」および「８０００」が示されている。レコードポインタ「０ｘ０００５」については、「２５０」および「８７５０」が示されている。レコードポインタ「０ｘ０００６」については、「１０００」および「１２０００」が示されている。レコードポインタ「０ｘ０００７」については、「１０００」および「５０００」が示されている。いずれも単位は円である。
【００５０】
図１１は、フラッシュＲＯＭ１３に記憶される第２商品マスタ情報１３１の構成を示す図である。図１１には、左端部に、フラッシュＲＯＭ１３のアドレス、中央部に、左端部に記憶されるアドレスに記憶される情報、そして、右端部に、その情報の説明が記載されている。
【００５１】
たとえば、アドレス「０ｘ０００００」には、中央部に「ウーロン茶」が示され、右端部に「商品名情報（１６文字）」が示されている。これは、フラッシュＲＯＭ１３のアドレス「０ｘ０００００」から、「ウーロン茶」という情報が記憶されており、その情報は、商品名情報１３２であり、１６文字からなることを示している。また、アドレス「０ｘ０００１０」には、中央部に「０ｘ００  ０ｘ０１」が示され、右端部に「各種設定情報  内税、第１グループ」が示されている。これは、フラッシュＲＯＭ１３のアドレス「０ｘ０００１０」から、「０ｘ００  ０ｘ０１」という情報が記憶されており、その情報は、税種別およびグループの各種設定情報１３３であることを示している。税種別「０ｘ００」が内税であることを示し、税種別「０ｘ０２」が非課税であることを示す。グループ「０ｘ０１」が第１グループであることを示し、グループ「０ｘ０２」が第２グループであることを示し、グループ「０ｘ０３」が第３グループであることを示す。
【００５２】
また、たとえば、アドレス「０ｘ２００００」には、中央部に「３３００００」が示され、右端部に「週間売上情報」が示されている。これは、これは、フラッシュＲＯＭ１３のアドレス「０ｘ２００００」から、「３３００００」という情報が記憶されており、その情報は、週間売上金額を表す週間売上情報１３４であることを示している。アドレス「０ｘ３００００」には、中央部に「３３００００」が示され、右端部に「月間売上情報」が示されている。これは、これは、フラッシュＲＯＭ１３のアドレス「０ｘ３００００」から、「３３００００」という情報が記憶されており、その情報は、月間売上金額を表す月間売上情報１３５であることを示している。
【００５３】
未使用のアドレスには、「０ｘＦＦ」が記憶される。すなわち、未使用のアドレスには、１６進数の「ＦＦ」が記憶されている。図８に示したフラッシュＲＯＭ書込みポインタテーブル１２６には、第１ブロックの書込みポインタとして「０ｘ０００８０」が記載され、第１ブロックの未使用領域がアドレス「０ｘ０００８０」であることがわかる。第３ブロックの書込みポインタとして「０ｘ２００３８」が記載され、第３ブロックの未使用領域がアドレス「０ｘ２００３８」であることがわかる。また、第４ブロックの書込みポインタとして「０ｘ３００３８」が記載され、第４ブロックの未使用領域がアドレス「０ｘ３００３８」であることがわかる。
【００５４】
図１２は、商品名変更に伴う商品マスタインデックス情報１２２の変更前後のデータを示す図である。図１２〜図１４では、商品コード「００００３」の商品名「緑茶Ｂ」を、「緑茶Ｂ＿５００ｍｌ」に変更する場合を例にして説明する。図１２（ａ）は、変更前の商品マスタインデックス情報１２２であり、図１２（ｂ）は、変更後の商品マスタインデックス情報１２２ａである。
【００５５】
図１２（ａ）に示した商品マスタインデックス情報１２２では、商品コード「００００３」の商品名情報のアドレスは、「０ｘ０００２４」であり、図１２（ｂ）に示した商品マスタインデックス情報１２２ａでは、商品コード「００００３」の商品名情報のアドレスは、「０ｘ０００８０」である。すなわち、変更後の新たな商品名「緑茶Ｂ＿５００ｍｌ」を表す商品名情報１３２は、第１ブロックの未使用領域であるアドレス「０ｘ０００８０」からの領域に記憶されたことを示している。変更前の商品名「緑茶Ｂ」を表す商品名情報１３２は、消去されずに、第１ブロックのアドレス「０ｘ０００２４」からの領域に記憶されているが、図１２（ｂ）に示した商品マスタインデックス情報１２２ａでは、商品コード「００００３」の商品名情報１３２のアドレスが変更されているので、変更前の商品名情報１３２を用いることはなく、変更後の商品名情報１３２を用いることができる。
【００５６】
図１３は、商品名変更に伴うフラッシュＲＯＭ書込みポインタテーブル１２６の変更前後のデータを示す図である。図１３（ａ）は、変更前のフラッシュＲＯＭ書込みポインタテーブル１２６であり、図１３（ｂ）は、変更後のフラッシュＲＯＭ書込みポインタテーブル１２６ａである。
【００５７】
商品名情報１３２は、図７に示した商品マスタ情報メモリ構成テーブル１２５を参照すると、「１６」バイトであることがわかる。商品コード「００００３」の商品名「緑茶Ｂ」を、「緑茶Ｂ＿５００ｍｌ」に変更し、商品コード「００００３」の商品名情報１３２が、第１ブロックの未使用領域であるアドレス「０ｘ０００８０」からの領域に記憶されたことに伴い、第１ブロックの書込みポインタが、「０ｘ００８０」に１６バイトを加算した「０ｘ００９０」に変更される。図１３（ａ）に示した変更前のフラッシュＲＯＭ書込みポインタテーブル１２６では、第１ブロックの書込みポインタが「０ｘ００８０」であるが、図１３（ｂ）に示した変更後のフラッシュＲＯＭ書込みポインタテーブル１２６ａでは、第１ブロックの書込みポインタが「０ｘ００９０」に変更されている。
【００５８】
図１４は、商品名変更に伴う第２商品マスタ情報１３１の一部の変更前後のデータを示す図である。図１４の左側に、変更前の第２商品マスタ情報１３１の一部を示し、右側に、変更後の第２商品マスタ情報１３１ａの一部を示す。変更前の第２商品マスタ情報１３１では、フラッシュＲＯＭ１３の第１ブロックのアドレス「０ｘ０００８０」以降が未使用であるが、変更後の第２商品マスタ情報１３１ａでは、フラッシュＲＯＭ１３の第１ブロックのアドレス「０ｘ０００８０」から、商品名「緑茶Ｂ＿５００ｍｌ」を表す１６バイトの商品名情報１３２が記憶されている。第１ブロックの書込みポインタは、「０ｘ０００８０」から「０ｘ０００９０」に更新される。アドレス「０ｘ０００２４」には、変更前の商品名「緑茶Ｂ」を表す商品名情報１３２が消去されずに記憶されている。
【００５９】
図１５は、精算処理に伴う商品マスタインデックス情報１２２の変更前後のデータを示す図である。精算処理は、たとえば１日の終わりに実行される。具体的には、１日の終わりに、売上週計レポートを発行し、「当日売上金額」を「週間売上金額」および「月間売上金額」にそれぞれ加算し、翌日に備えて「当日売上金額」を初期化する。図１５（ａ）は、変更前の商品マスタインデックス情報１２２であり、図１５（ｂ）は、変更後の商品マスタインデックス情報１２２ｂである。
【００６０】
図１５（ａ）に示した変更前の商品マスタインデックス情報１２２は、精算処理が実行される前の週間売上情報のアドレスおよび月間売上情報のアドレスを示している。図１５（ａ）に示した週間売上情報のアドレスおよび月間売上情報のアドレスは、図１１に示した第２商品マスタ情報１３１の週間売上情報１３４および月間売上情報１３５が記憶されているフラッシュＲＯＭ１３のアドレスである。
【００６１】
図１５（ｂ）に示した週間売上情報のアドレスおよび月間売上情報のアドレスは、精算処理後の週間売上情報１３４および月間売上情報１３５が記憶されているフラッシュＲＯＭ１３のアドレスである。精算処理後の週間売上情報１３４は、フラッシュＲＯＭ１３の第２ブロックの未使用領域に記憶され、精算処理後の月間売上情報１３５は、フラッシュＲＯＭ１３の第３ブロックの未使用領域に記憶されている。
【００６２】
具体的には、精算処理前の週間売上情報１３４および月間売上情報１３５は、それぞれ、商品コード「００００１」については、アドレス「０ｘ２００００」および「０ｘ３００００」に記憶されている。商品コード「００００２」については、アドレス「０ｘ２０００８」および「０ｘ３０００８」に記憶されている。商品コード「００００３」については、アドレス「０ｘ２００１０」および「０ｘ３００１０」に記憶されている。商品コード「０００１１」については、アドレス「０ｘ２００１８」および「０ｘ３００１８」に記憶されている。商品コード「０００１２」については、アドレス「０ｘ２００２０」および「０ｘ３００２０」に記憶されている。商品コード「００１０１」については、アドレス「０ｘ２００２８」および「０ｘ３００２８」に記憶されている。商品コード「００１０２」については、アドレス「０ｘ２００３０」および「０ｘ３００３０」に記憶されている。
【００６３】
そして、精算処理後の週間売上情報１３４および月間売上情報１３５は、それぞれ、商品コード「００００１」については、アドレス「０ｘ２００３８」および「０ｘ３００３８」に記憶されている。商品コード「００００２」については、アドレス「０ｘ２００４０」および「０ｘ３００４０」に記憶されている。商品コード「００００３」については、アドレス「０ｘ２００４８」および「０ｘ３００４８」に記憶されている。商品コード「０００１１」については、アドレス「０ｘ２００５０」および「０ｘ３００５０」に記憶されている。商品コード「０００１２」については、アドレス「０ｘ２００５８」および「０ｘ３００５８」に記憶されている。商品コード「００１０１」については、アドレス「０ｘ２００６０」および「０ｘ３００６０」に記憶されている。商品コード「００１０２」については、アドレス「０ｘ２００６８」および「０ｘ３００６８」に記憶されている。
【００６４】
図１６は、精算処理に伴う当日売上金額４０２の変更前後のデータを示す図である。図１６（ａ）は、変更前の当日売上金額４０２であり、図１６（ｂ）は、変更後の当日売上金額４０２ａである。すなわち、図１６（ａ）に示した変更前の当日売上金額４０２は、精算処理を行う前の当日売上金額であり、各レコードポインタが示すレコードに記憶されている。図１６（ｂ）に示した変更後の当日売上金額４０２ａは、精算処理を行なった後の当日売上金額であり、各レコードポインタが示すレコードに記憶されている。
【００６５】
図１６（ａ）には、各レコードポインタが示すレコードに記憶される当日売上金額４０２が示されている。レコードポインタ「０ｘ０００１」については「６６０００」である。レコードポインタ「０ｘ０００２」については「７５０００」である。レコードポインタ「０ｘ０００３」については「６０００」である。レコードポインタ「０ｘ０００４」については「８０００」である。レコードポインタ「０ｘ０００５」については「８７５０」である。レコードポインタ「０ｘ０００６」については「１２０００」である。レコードポインタ「０ｘ０００７」については「５０００」である。
【００６６】
図１６（ｂ）には、各レコードポインタが示すレコードに記憶される当日売上金額４０２ａが示されている。レコードポインタ「０ｘ０００１」〜「０ｘ０００７」のいずれにも「０」が記憶されている。すなわち、１日の精算処理が終了したので、翌日以降の処理に備えて、すべての当日売上金額４０２ａは、「０」に初期化されている。
【００６７】
図１７は、精算処理に伴うフラッシュＲＯＭ書込みポインタテーブル１２６の変更前後のデータを示す図である。図１７（ａ）は、変更前のフラッシュＲＯＭ書込みポインタテーブル１２６であり、図１７（ｂ）は、変更後のフラッシュＲＯＭ書込みポインタテーブル１２６ｂである。
【００６８】
週間売上情報１３４および月間売上情報１３５は、図７に示した商品マスタ情報メモリ構成テーブル１２５を参照すると、いずれも「８」バイトであることがわかる。精算処理後の週間売上情報１３４は、第３ブロックの未使用領域の先頭アドレス、つまり図１７（ａ）に示したフラッシュＲＯＭ書込みポインタテーブル１２６の第３ブロックの書込みポインタが示すアドレスから記憶される。精算処理後の月間売上情報１３５は、第４ブロックの未使用領域の先頭アドレス、つまり図１７（ａ）に示したフラッシュＲＯＭ書込みポインタテーブル１２６の第４ブロックの書込みポインタが示すアドレスから記憶される。
【００６９】
７つの商品コードについて精算処理を行ったので、精算処理後の第３ブロックの書込みポインタは、図１７（ａ）に示したフラッシュＲＯＭ書込みポインタテーブル１２６の第３ブロックの書込みポインタ「０ｘ００３８」に、５６バイトを加算して、図１７（ｂ）に示したフラッシュＲＯＭ書込みポインタテーブル１２６の第３ブロックの書込みポインタ「０ｘ００７０」となる。同様に、精算処理後の第４ブロックの書込みポインタは、図１７（ａ）に示したフラッシュＲＯＭ書込みポインタテーブル１２６の第４ブロックの書込みポインタ「０ｘ００３８」に、５６バイトを加算して、図１７（ｂ）に示したフラッシュＲＯＭ書込みポインタテーブル１２６の第４ブロックの書込みポインタ「０ｘ００７０」となる。
【００７０】
図１８は、精算処理に伴う第２商品マスタ情報１３１の他の一部の変更前後のデータを示す図である。図１８の左側に、変更前の第２商品マスタ情報１３１の他の一部を示し、右側に、変更後の第２商品マスタ情報１３１ｂの他の一部を示す。
【００７１】
変更前の第２商品マスタ情報１３１では、フラッシュＲＯＭ１３の第３ブロックのアドレス「０ｘ２００３８」以降が未使用であるが、変更後の第２商品マスタ情報１３１ｂでは、フラッシュＲＯＭ１３の第３ブロックのアドレス「０ｘ２００３８」から、７つの商品コード「００００１」〜「００００７」についての週間売上情報１３４が記憶されている。第３ブロックの書込みポインタは、「０ｘ２００３８」から「０ｘ２００７０」に更新される。
【００７２】
アドレス「０ｘ２００３８」には、商品コード「００００１」の週間売上金額「３９６０００」が週間売上情報１３４として記憶されている。アドレス「０ｘ２００４０」には、商品コード「００００２」の週間売上金額「４８７５００」が週間売上情報１３４として記憶されている。アドレス「０ｘ２００４８」には、商品コード「００００３」の週間売上金額「５２０００」が週間売上情報１３４として記憶されている。アドレス「０ｘ２００５０」には、商品コード「０００１１」の週間売上金額「５６０００」が週間売上情報１３４として記憶されている。アドレス「０ｘ２００５８」には、商品コード「０００１２」の週間売上金額「７８７５０」が週間売上情報１３４として記憶されている。アドレス「０ｘ２００６０」には、商品コード「００１０１」の週間売上金額「９２０００」が週間売上情報１３４として記憶されている。アドレス「０ｘ２００６８」には、商品コード「００１０２」の週間売上金額「２５０００」が週間売上情報１３４として記憶されている。
【００７３】
同様に、変更前の第２商品マスタ情報１３１では、フラッシュＲＯＭ１３の第４ブロックのアドレス「０ｘ３００３８」以降が未使用であるが、変更後の第２商品マスタ情報１３１ｂでは、フラッシュＲＯＭ１３の第４ブロックのアドレス「０ｘ３００３８」から、７つの商品コード「００００１」〜「００００７」についての月間売上情報１３５が記憶されている。第４ブロックの書込みポインタは、「０ｘ３００３８」から「０ｘ３００７０」に更新される。
【００７４】
アドレス「０ｘ３００３８」には、商品コード「００００１」の月間売上金額「１５６６０００」が月間売上情報１３５として記憶されている。アドレス「０ｘ３００４０」には、商品コード「００００２」の月間売上金額「２２７５０００」が月間売上情報１３５として記憶されている。アドレス「０ｘ３００４８」には、商品コード「００００３」の月間売上金額「１５６０００」が月間売上情報１３５として記憶されている。アドレス「０ｘ３００５０」には、商品コード「０００１１」の月間売上金額「１２８０００」が月間売上情報１３５として記憶されている。アドレス「０ｘ３００５８」には、商品コード「０００１２」の月間売上金額「２５８７５０」が月間売上情報１３５として記憶されている。アドレス「０ｘ３００６０」には、商品コード「００１０１」の月間売上金額「３９７０００」が月間売上情報１３５として記憶されている。アドレス「０ｘ３００６８」には、商品コード「００１０２」の月間売上金額「７７０００」が月間売上情報１３５として記憶されている。
【００７５】
図１９は、商品名変更処理の処理手順を示すフローチャートである。商品名変更処理は、すでに命名されている商品名を変更するための処理であり、たとえば利用者が、キーボード１８によって、メインメニューから商品名変更の機能を選択すると、ステップＡ１に進む。
【００７６】
ステップＡ１では、利用者が商品コードと商品名とをキーボード１８によって入力すると、キーボード１８は、操作されたキーが示す情報を制御部１１に送る。制御部１１は、キーボード１８から、入力された情報、つまり商品コードと商品名とを表す情報を受け取る。
【００７７】
ステップＡ２では、制御部１１は、書込む対象の項目を表す対象項目変数（図では「［項目］」という）に「商品名」を代入し、書込む内容を表す書込み内容変数（図では「［書込み内容］」という）に、ステップＡ１で入力された商品名を代入する。ステップＡ３では、制御部１１は、入力された商品コードに対する商品マスタ情報（以下「商品マスタデータ」という）の書込み処理を行って、商品名変更処理を終了する。商品マスタデータは、第１商品マスタ情報１２１および第２商品マスタ情報１３１のことである。商品マスタデータの書込み処理については、図２２，２３で後述する。
【００７８】
図２０は、精算処理の処理手順を示すフローチャートである。精算処理は、販売した商品の清算を行うための処理であり、たとえば利用者が、キーボード１８によって、メインメニューから精算処理の機能を選択すると、ステップＢ１に進む。
【００７９】
ステップＢ１では、制御部１１は、インデックス変数「ｉｎｄｅｘＮｏ．」に「１」を代入する。インデックス変数「ｉｎｄｅｘＮｏ．」は、商品マスタインデックス情報１２２の商品コードのうち、どの商品コードであるかを示す変数である。具体的には、インデックス変数「ｉｎｄｅｘＮｏ．」は、図９に示した商品マスタインデックス情報１２２の商品コードのうち上から何番目であるかを示す。
【００８０】
ステップＢ２では、制御部１１は、商品マスタインデックス情報１２２（以下、「商品マスタインデックス」という）から、インデックス変数「ｉｎｄｅｘＮｏ．」に対するインデックスデータを取得する。インデックスデータは、図９に示した商品マスタインデックス情報１２２の情報である。制御部１１は、インデックス変数「ｉｎｄｅｘＮｏ．」が示す商品コードの１行の情報を、１つのレコードとして取得する。インデックス変数「ｉｎｄｅｘＮｏ．」が示す位置に商品コードがないときは、商品コードを「０」とする。
【００８１】
ステップＢ３では、制御部１１は、取得したレコードに記憶されている商品コードを、商品コード変数（図では、「（商品コード）」という）に代入する。ステップＢ４では、制御部１１は、商品コードが無いか否かを判定する。すなわち、レコードが終了したか否かを判定する。制御部１１は、商品コード変数が「０」であるとき、商品コードが無いと判定し、精算処理を終了する。商品コード変数が「０」でないとき、商品コードがあると判定し、ステップＢ５に進む。
【００８２】
ステップＢ５では、制御部１１は、読出す対象項目変数に「当日売上情報」を代入する。ステップＢ６では、制御部１１は、商品コード変数が示す商品コードに対する商品マスタデータの読出し処理を実行する。商品マスタデータの読出し処理については、図２１で後述する。ステップＢ６では、制御部１１は、読出したデータを当日売上金額変数（図では、「（当日売上金額）」という）」に代入する。
【００８３】
ステップＢ８では、制御部１１は、読出す対象項目変数に「週間売上情報」を代入する。ステップＢ９では、制御部１１は、商品コード変数が示す商品コードに対する商品マスタデータの読出し処理を実行する。ステップＢ１０では、制御部１１は、読出したデータを週間売上金額変数（図では、「（週間売上金額）」という）」に代入する。ステップＢ１１では、制御部１１は、週間売上金額変数が示す週間売上金額に、当日売上金額変数が示す当日売上金額を加算した値を、週間売上金額変数に代入して、新たな週間売上金額変数とする。
【００８４】
ステップＢ１２では、制御部１１は、読出す対象項目変数に「月間売上情報」を代入する。ステップＢ１３では、制御部１１は、商品コード変数が示す商品コードに対する商品マスタデータの読出し処理を実行する。ステップＢ１４では、制御部１１は、読出したデータを月間売上金額変数（図では、「（月間売上金額）」という）」に代入する。ステップＢ１５では、制御部１１は、月間売上金額変数が示す月間売上金額に、当日売上金額変数が示す当日売上金額を加算した値を、月間売上金額変数に代入して、新たな月間売上金額変数とする。
【００８５】
ステップＢ１６では、制御部１１は、書込む対象項目変数に「週間売上情報」を代入し、書込み内容変数に、週間売上金額変数の値を代入する。ステップＢ１７では、制御部１１は、商品コード変数が示す商品コードに対する商品マスタデータの書込み処理を実行する。ステップＢ１８では、制御部１１は、書込む対象項目変数に「月間売上情報」を代入し、書込み内容変数に、月間売上金額変数の値を代入する。ステップＢ１９では、制御部１１は、商品コード変数が示す商品コードに対する商品マスタデータの書込み処理を実行する。ステップＢ２０では、制御部１１は、書込む対象項目変数に「当日売上情報」を代入し、書込み内容変数に、「０」の値を代入する。ステップＢ２１では、制御部１１は、商品コード変数が示す商品コードに対する商品マスタデータの書込み処理を実行する。ステップＢ２２では、制御部１１は、インデックス変数「ｉｎｄｅｘＮｏ．」に「１」を加算して、新たなインデックス変数「ｉｎｄｅｘＮｏ．」として、ステップＢ２に戻る。
【００８６】
図２１は、商品マスタデータ読出処理の処理手順を示すフローチャートである。商品マスタデータ読出処理は、対象項目変数が示す項目について、商品コード変数が示す商品コードに対する商品マスタデータを読出す処理である。図２０に示したステップＢ６，Ｂ９，Ｂ１３が実行されたとき、ステップＣ１に移る。
【００８７】
ステップＣ１では、制御部１１は、商品マスタインデックスから商品コード変数が示す商品コードに対するインデックスデータを取得する。ステップＣ２では、制御部１１は、商品マスタ情報メモリ構成テーブル１２５から、指定された対象項目変数が示す項目のメモリサイズを取得する。ステップＣ３では、制御部１１は、商品マスタ情報メモリ構成テーブル１２５から、指定された対象項目変数が示す項目のメモリタイプを取得する。
【００８８】
ステップＣ４では、制御部１１は、メモリタイプがＦｌａｓｈＲＯＭであるか否かを判定する。制御部１１は、メモリタイプがＦｌａｓｈＲＯＭであるとき、ステップＣ５に進み、メモリタイプがＦｌａｓｈＲＯＭでないとき、つまりメモリタイプがＲＡＭのとき、ステップＣ７に進む。ステップＣ５では、制御部１１は、インデックスデータから、指定された対象項目変数が示す項目のメモリアドレスを取得する。ステップＣ６では、制御部１１は、取得したメモリアドレスから、メモリサイズ分のデータを取得し、取得したデータを上位アプリケーション（図では「上位アプリ」という）、つまり図２０に示した精算処理に渡し、商品マスタデータ読出処理を終了する。
【００８９】
ステップＣ７では、制御部１１は、商品マスタ情報メモリ構成テーブル１２５から、指定された対象項目変数が示す項目の開始アドレスを取得する。ステップＣ８では、制御部１１は、インデックスデータからレコードポインタを取得する。ステップＣ９では、制御部１１は、ステップＣ７で取得した開始アドレス、ステップＣ８で取得したレコードポインタ、およびステップＣ２で取得したメモリサイズから、対象データを記憶しているメモリアドレスを算出する。対象データは、対象項目変数が示す項目の情報である。ステップＣ１０では、制御部１１は、算出したメモリアドレスからメモリサイズ分のデータを取得し、取得したデータを上位アプリケーション、つまり図２０に示した精算処理に渡し、商品マスタデータ読出処理を終了する。
【００９０】
図２２，２３は、商品マスタデータ書込処理の処理手順を示すフローチャートである。商品マスタデータ書込処理は、対象項目変数が示す項目について、書込み内容変数が示す書込む内容を、商品コード変数が示す商品コードに対する商品マスタデータに書込む処理である。図１９に示したステップＢ３、または図２０に示したステップＢ１７，Ｂ１９，Ｂ２１が実行されたとき、ステップＤ１に移る。
【００９１】
ステップＤ１〜Ｄ７での処理は、図２１に示したステップＣ１〜Ｃ４，Ｃ７〜Ｃ９と同じ処理であり、重複を避けるために説明は省略する。ステップＤ８では、制御部１１は、算出したメモリアドレスからメモリサイズ分の領域に、指定された書込み内容変数が示す書込む内容を書き込んで記録し、商品マスタデータ書込処理を終了する。
【００９２】
ステップＤ１１では、制御部１１は、商品マスタ情報メモリ構成テーブル１２５から、指定された対象項目変数が示す項目の開始ブロックの番号および終了ブロックの番号を取得する。ステップＤ１２では、制御部１１は、ブロックの番号を表すブロック番号変数（図では「（ブロック番号）」という）に、ステップＤ１１で取得した開始ブロックの番号を代入する。
【００９３】
ステップＤ１３では、制御部１１は、フラッシュＲＯＭ書込みポインタテーブル１２６から、ブロック番号変数が示すブロック番号に対応する書込みポインタを取得する。ステップＤ１４では、制御部１１は、書込みポインタの値が「０ｘＦＦＦＦ」であるか否かを判定する。制御部１１は、書込みポインタの値が「０ｘＦＦＦＦ」であるとき、ステップＤ２１に進み、書込みポインタの値が「０ｘＦＦＦＦ」でないとき、ステップＤ１５に進む。
【００９４】
ステップＤ１５では、制御部１１は、フラッシュＲＯＭブロック構成テーブル１４４からブロック番号変数が示すブロック番号に対応する開始アドレスを取得する。ステップＤ１６では、制御部１１は、ステップＤ１５で取得した開始アドレスに、ステップＤ１３で取得した書込みポインタの値を加算したアドレスを、書込みアドレスを表す書込みアドレス変数（図では「（書込みアドレス）」という）に代入する。ステップＤ１７では、制御部１１は、算出した書込みアドレス、つまり書込みアドレス変数が示す書込みアドレスから、ステップＤ２で取得したメモリサイズ分の領域に、指定された書込み内容変数が示す書込む内容を書き込んで記録する。
【００９５】
ステップＤ１８では、制御部１１は、商品マスタインデックスの商品コード変数が示す商品コードに対する項目のうち、対象項目変数が示す項目のメモリアドレスに、書込みアドレス変数が示す書込みアドレスを書込んで記録する。ステップＤ１９では、制御部１１は、ステップＤ１３で取得した書込みポインタが示す値に、ステップＤ２で取得したメモリサイズを加算した値を、書込みポインタ変数に代入する。ステップＤ２０では、制御部１１は、フラッシュＲＯＭ書込みポインタテーブル１２６のブロック番号のうちブロック番号変数が示すブロック番号の書込みポインタに、書込みポインタ変数が示す書込みポインタを書込んで記録し、商品マスタデータ書込処理を終了する。
【００９６】
ステップＤ２１では、制御部１１は、ブロック番号変数が示すブロック番号に「１」を加算して、「１」加算したブロック番号を新たなブロック番号としてブロック番号変数に代入する。ステップＤ２２では、制御部１１は、ブロック番号変数が示すブロック番号が終了ブロックであるか否かを判定する。制御部１１は、ブロック番号変数が示すブロック番号が終了ブロックであるとき、ステップＤ２３に進み、ブロック番号変数が示すブロック番号が終了ブロックでないとき、ステップＤ１３に戻る。終了ブロックは、たとえば第１６ブロックである。
【００９７】
ステップＤ２３では、制御部１１は、ガーベージ処理を行って、ステップＤ１１に戻る。ガーベージ処理は、フラッシュＲＯＭに記憶されるブロックを整理する処理である。具体的には、ガーベージ処理は、情報を更新した際に消去されずに記憶されている未使用の情報を消去する処理であり、従来技術を用いて行われる。
【００９８】
図２４は、従来技術による商品名変更での商品マスタ情報の書換えを説明するための図である。従来技術では、図２に示した商品マスタ情報３０をフラッシュＲＯＭ１３に記憶している。図２４（ａ）は、商品コードごとのレコードポインタを示す商品マスタインデックス情報９１を示す。図２４（ｂ）は、商品コード「００００３」の商品名「緑茶Ｂ」を、商品名「緑茶Ｂ＿５００ｍｌ」に更新したフラッシュＲＯＭ１３に記憶されている商品マスタ情報９２を示す。
【００９９】
従来技術では、商品コード「００００３」の商品名のアドレスに記憶される商品名「緑茶Ｂ」が消去された後、同じアドレスに商品名「緑茶Ｂ＿５００ｍｌ」が書込まれる。すなわち、商品名の更新が行われる度に消去が発生する。これに対して、本発明では、図１４に示すように、変更後の商品名「緑茶Ｂ＿５００ｍｌ」は未使用の領域に書き込まれるので、変更前の商品名「緑茶Ｂ」は消去されることはなく記憶されたままである。
【０１００】
図２５は、従来技術による精算処理での変更前後の商品マスタ情報を示す図である。従来技術では、図２に示した商品マスタ情報３０をフラッシュＲＯＭ１３に記憶している。図２５（ａ）は、変更前にフラッシュＲＯＭ１３に記憶されている商品マスタ情報９３を示す。図２５（ｂ）は、変更後にフラッシュＲＯＭ１３に記憶されている商品マスタ情報９４を示す。
【０１０１】
従来技術では、精算処理が行われると、フラッシュＲＯＭに記憶されるすべての商品コードについての当日売上金額が「０」とされ、フラッシュＲＯＭに記憶されるすべての商品コードについての週間売上金額および月間売上金額に、当日売上金額が加算されて更新される。この場合、フラッシュＲＯＭに記憶される変更前のすべての商品コードについての当日売上金額、週間売上金額および月間売上金額は一旦消去された後、更新される。すなわち、精算処理が行われる度に消去が発生する。これに対して、本発明では、図１６に示すようにＲＡＭ１２に記憶される当日売上金額を更新し、また、図１８に示すように、精算処理後の週間売上金額および月間売上金額をフラッシュＲＯＭ１３の未使用の領域に記憶する。したがって、変更前の週間売上金額および月間売上金額を消去することなく記憶したままとすることができる。
【０１０２】
このように、本発明では、フラッシュＲＯＭ１３に記憶される変更前の情報を消去することなく記憶したままとし、消去することなく記憶したままとした情報は、すべてのブロックに書込みが行われた後に行われるガーベージ処理で消去されるので、フラッシュＲＯＭ１３の消去頻度を低減することができ、フラッシュＲＯＭ１３の寿命を延ばすことができる。
【０１０３】
このように、ＲＡＭ１２は、書換え回数に制限がない。フラッシュＲＯＭ１３は、書換え回数に制限がある。そして、制御部１１は、商品に関する複数の項目についての情報のうち、書換え頻度が予め定める基準頻度以上である第１の項目の情報、たとえば単価情報１２３および当日売上情報１２４をＲＡＭ１２に記憶させ、書換え頻度が予め定める基準頻度未満である第２の項目の情報、たとえば商品名情報１３２、各種設定情報１３３、週間売上情報１３４および月間売上情報１３５をフラッシュＲＯＭ１３に記憶させる。したがって、ＲＡＭ１２、たとえば高価なＳＲＡＭの使用量を減らすことができ、コスト削減を図ることができる。また、書換え頻度の低い情報を書換え回数に制限のあるフラッシュＲＯＭ１３に記憶するので、フラッシュＲＯＭ１３の使用可能期間を延ばすことができる。
【０１０４】
さらに、ＲＡＭ１２には、各商品を識別するための商品コード３０１が記憶されている。そして、制御部１１は、第１の項目の情報を、商品コード３０１に対応付けてＲＡＭ１２に記憶させ、第２の項目の情報を、商品コード３０１に対応付けてフラッシュＲＯＭ１３に記憶させる。したがって、複数の項目の情報を商品コード３０１ごとに管理することができる。
【０１０５】
さらに、制御部１１は、第２の項目の情報が記憶されるフラッシュＲＯＭ１３のアドレスを特定するインデックスを、商品コード３０１と対応付けてＲＡＭ１２に記憶させる。したがって、ＲＡＭ１２に記憶されるインデックスによって、フラッシュＲＯＭ１３に記憶される第２の項目の情報を特定することができる。
【０１０６】
さらに、制御部１１は、フラッシュＲＯＭ１３に記憶される第２の項目の情報を更新するとき、変更前の第２の項目の情報を消去することなく、変更後の第２の項目の情報をフラッシュＲＯＭ１３の領域のうち未書込みの領域に書込み、ＲＡＭ１２に記憶されるインデックスを、変更後の第２の項目の情報を書込んだアドレスを特定するインデックスに書換える。したがって、第２の項目の情報を更新しても、フラッシュＲＯＭ１３の消去を行う必要がなく、フラッシュＲＯＭ１３の使用可能期間をより延ばすことができる。
【０１０７】
さらに、商品コード３０１は、自然数によって表される。そして、制御部１１は、第１の項目の情報を商品コード３０１に対応付けて商品コード３０１の昇順または降順にＲＡＭ１２に記憶させ、第２の項目の情報を商品コード３０１に対応付けて商品コード３０１の昇順または降順にフラッシュＲＯＭ１３に記憶させる。したがって、商品コード３０１による検索を容易に行うことができる。
【符号の説明】
【０１０８】
１  ＥＣＲ
１１  制御部
１２  ＲＡＭ
１３  フラッシュＲＯＭ
１４  プログラム格納ＲＯＭ
１５  表示部
１６  プリンタ
１７  時計
１８  キーボード
１９  通信部
２０  ＳＤカードインタフェース部
２１  バーコードスキャナ
２２  ドロア
１１１  データ送受信
１１２  各種データ作成
１２１  第１商品マスタ情報
１２２  商品マスタインデックス情報
１２３  単価情報
１２４  当日売上情報
１２５  表示／印字用データ
１２６  レシート計算用データ
１２７  商品マスタ情報メモリ構成テーブル
１２８  フラッシュＲＯＭ書込みポインタテーブル
１３１  第２商品マスタ情報
１３２  商品名情報
１３３  各種設定情報
１３４  週間売上情報
１３５  月間売上情報
１３６  売上記録
【図１】
0005715878.tif 000002
【図２】
0005715878.tif 000003
【図３】
0005715878.tif 000004
【図４】
0005715878.tif 000005
【図５】
0005715878.tif 000006
【図６】
0005715878.tif 000007
【図７】
0005715878.tif 000008
【図８】
0005715878.tif 000009
【図９】
0005715878.tif 000010
【図１０】
0005715878.tif 000011
【図１１】
0005715878.tif 000012
【図１２】
0005715878.tif 000013
【図１３】
0005715878.tif 000014
【図１４】
0005715878.tif 000015
【図１５】
0005715878.tif 000016
【図１６】
0005715878.tif 000017
【図１７】
0005715878.tif 000018
【図１８】
0005715878.tif 000019
【図１９】
0005715878.tif 000020
【図２０】
0005715878.tif 000021
【図２１】
0005715878.tif 000022
【図２２】
0005715878.tif 000023
【図２３】
0005715878.tif 000024
【図２４】
0005715878.tif 000025
【図２５】
0005715878.tif 000026