(57)【要約】【課題】多様な利用形態に応じた料金計算プログラムを、メモリ容量の小さなハンディターミナルで利用可能にする。【解決手段】第１の契約種別コード、第１の契約種別コードに応じた料金を計算するための関数、及び、契約種別コードと関数との対応関係の有効期間を示す有効開始日及び有効終了日を有する料金定義テーブル、顧客ID、地域コード、第２の契約種別コード、及び、検針予定日を有する顧客管理テーブル、並びに、顧客ID、第２の契約種別コード、及び、検針予定日を有する特定顧客管理テーブルを有し、顧客管理テーブルの地域コードと検針予定日が、指定された地域と期間との条件を満たす顧客IDに関して、顧客管理テーブルから特定顧客管理テーブルを作成し、特定顧客管理テーブルに含まれる第２の契約種別コードを判定条件として、第２の契約種別コードに一致する第１の契約種別コードに応じた関数を、判定条件を満足したときの呼び出し先の関数として含む料金計算プログラムを生成する。【選択図】図１
2011008670.tif 000002
【特許請求の範囲】
【請求項１】
第１の契約種別コード、前記第１の契約種別コードに応じた料金を計算するための関数の名称である関数名、及び、前記契約種別コードと前記関数名との対応関係の有効期間を示す有効開始日及び有効終了日を有する料金定義テーブル、
顧客ID、地域コード、第２の契約種別コード、及び、検針予定日を有する顧客管理テーブル、
前記顧客ID、前記第２の契約種別コード、及び、前記検針予定日を有し、前記顧客管理テーブルを基に生成される特定顧客管理テーブル、並びに、
前記顧客管理テーブルの前記地域コードと前記検針予定日が、指定された地域と期間との条件を満たす前記顧客IDに関して、前記顧客管理テーブルから前記特定顧客管理テーブルを作成し、
前記特定顧客管理テーブルに含まれる前記第２の契約種別コードを判定条件として、前記第２の契約種別コードに一致する前記第１の契約種別コードに応じた前記関数名の関数を、前記判定条件を満足したときの呼び出し先の関数として含む料金計算プログラムを生成する生成処理部を設けることを特徴とする料金計算プログラムの生成システム。
【請求項２】
前記生成処理部は、前記第１の契約種別コードが前記第２の契約種別コードに一致し、前記有効期間が前記特定顧客管理テーブルの前記検針予定日を含む、前記料金定義テーブルの前記関数名の一覧である関数一覧表を作成することを特徴とする請求項１記載の料金計算プログラムの生成システム。
【請求項３】
前記特定顧客管理テーブル、前記関数一覧表に含まれる関数、及び生成された前記料金計算プログラムをハンディターミナルにダウンロードするダウンロード処理部をさらに設けることを特徴とする請求項２記載の料金計算プログラムの生成システム。
【請求項４】
サーバによる料金計算プログラムの生成方法であって、前記サーバは、
第１の契約種別コード、前記第１の契約種別コードに応じた料金を計算するための関数の名称である関数名、及び、前記契約種別コードと前記関数名との対応関係の有効期間を示す有効開始日及び有効終了日を有する料金定義テーブル、顧客ID、地域コード、第２の契約種別コード、及び、検針予定日を有する顧客管理テーブル、並びに、前記顧客ID、前記第２の契約種別コード、及び前記検針予定日を有し、前記顧客管理テーブルを基に生成される特定顧客管理テーブルを有し、
前記顧客管理テーブルの前記地域コードと前記検針予定日が、指定された地域と期間との条件を満たす前記顧客IDに関して、前記顧客管理テーブルから前記特定顧客管理テーブルを作成し、
前記特定顧客管理テーブルに含まれる前記第２の契約種別コードを判定条件として、前記第２の契約種別コードに一致する前記第１の契約種別コードに応じた前記関数名の関数を、前記判定条件を満足したときの呼び出し先の関数として含む料金計算プログラムを生成することを特徴とする料金計算プログラムの生成方法。
【請求項５】
前記サーバは、前記第１の契約種別コードが前記第２の契約種別コードに一致し、前記有効期間が前記特定顧客管理テーブルの前記検針予定日を含む、前記料金定義テーブルの前記関数名の一覧である関数一覧表を作成することを特徴とする請求項４記載の料金計算プログラムの生成方法。
【請求項６】
前記サーバは、前記特定顧客管理テーブル、前記関数一覧表に含まれる関数、及び生成された前記料金計算プログラムを、該サーバに接続するハンディターミナルにダウンロードすることを特徴とする請求項５記載の料金計算プログラムの生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検針用のハンディターミナルで実行する料金計算プログラムの生成システム及びその方法に関する。
【背景技術】
【０００２】
電力料金などは、検針結果の基づいて使用料金を計算する。検針結果と使用料金とを利用者に直ちに通知するために料金計算プログラムを実行するハンディターミナルが用いられる。
【０００３】
利用者の異動情報を考慮し、検針結果に基づいた、ハンディターミナル上での料金計算結果とホストコンピュータ上での料金計算の結果とを照合する技術が特許文献１に開示されている。料金単価を引数として、指示順序に従って関数を実行することにより料金計算するコンピュータシステムが特許文献２に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２８４７９０号公報
【特許文献２】特開２００５−２４１３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
昨今、特許文献２に示されるように多様な料金体系の下で、各利用者の電気料金が計算される。多様性に対応するためには、料金計算プログラムが大規模化し、検針結果と使用料金とを利用者に直ちに通知できるハンディターミナルの使用が困難になっている。
【０００６】
このような状況において、特許文献１は、多様な料金体系の下でハンディターミナルを使用することは考慮されていない。
【０００７】
特許文献２は、多様な利用形態に応じた大規模な料金計算プログラムの開発の容易性に着眼したもので、小さなメモリ容量のハンディターミナルの利用は考慮されていない。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、開示される料金計算プログラムの生成システム及びその生成方法は、次のような構成を有する。第１の契約種別コード、第１の契約種別コードに応じた料金を計算するための関数の名称である関数名、及び、契約種別コードと関数名との対応関係の有効期間を示す有効開始日及び有効終了日を有する料金定義テーブル、顧客ID、地域コード、第２の契約種別コード、及び、検針予定日を有する顧客管理テーブル、顧客ID、第２の契約種別コード、及び、検針予定日を有し、顧客管理テーブルを基に生成される特定顧客管理テーブル、並びに、顧客管理テーブルの地域コードと検針予定日が、指定された地域と期間との条件を満たす顧客IDに関して、顧客管理テーブルから特定顧客管理テーブルを作成し、特定顧客管理テーブルに含まれる第２の契約種別コードを判定条件として、第２の契約種別コードに一致する第１の契約種別コードに応じた関数名の関数を、判定条件を満足したときの呼び出し先の関数として含む料金計算プログラムを生成する処理部を有する。
【０００９】
開示される料金計算プログラムの生成システム及びその生成方法の望ましい他の態様は、第１の契約種別コードが第２の契約種別コードに一致し、有効期間が特定顧客管理テーブルの検針予定日を含む、料金定義テーブルの関数名の一覧である関数一覧表を作成する。
【００１０】
開示される料金計算プログラムの生成システム及びその生成方法の望ましいさらに他の態様は、特定顧客管理テーブル、関数一覧表に含まれる関数、及び生成された料金計算プログラムをハンディターミナルにダウンロードするダウンロード処理部をさらに設ける。
【発明の効果】
【００１１】
本発明によれば、多様な利用形態に応じた料金計算プログラムの、メモリ容量の小さなハンディターミナルでの利用を可能にできる。
【図面の簡単な説明】
【００１２】
【図１】電力料金計算プログラムの生成システムの構成図である
【図２】生成システムのハードウェア構成図である。
【図３】料金定義テーブルの構成例である。
【図４】関数関係表の構成例である。
【図５】顧客管理テーブルの構成例である。
【図６】特定顧客管理テーブルの構成例である。
【図７】生成処理部の処理フローチャートである。
【図８Ａ】関数一覧表の例である。
【図８Ｂ】関数一覧表の例である。
【図９】料金計算オブジェクトプログラムの例である。
【図１０】ダウンロード処理部の処理フローチャートである。
【発明を実施するための形態】
【００１３】
図１は、本実施形態の電力料金計算プログラムの生成システムの構成図である。図示する生成システムは、サーバ１０とハンディターミナル３０とが通信回線４０で接続されている構成を示すが、必要に応じて通信回線４０により接続される。接続が必要な場合は、後述するダウンロード時である。
【００１４】
サーバ１０には、多様な電力料金サービス体系の下での個々のサービスにおける電力料金の計算方法などを定義する料金定義テーブル１１、電力料金計算の対象である顧客を管理するための顧客管理テーブル１２、多様な電力料金サービス体系の電力料金を計算するために用いる複数の関数(関数プログラム)を有する関数群１３、及び、関数群１３に含まれる個々の関数の関係を呼び出す関数と呼び出される関数との関係で示す関数関係表１４が予め用意され、必要に応じて追加、更新される。
【００１５】
新しい電力料金サービスの提供に伴い、料金定義テーブル１１に新たな定義が追加され、新たな定義に対応して電力料金を計算するための関数が開発され、開発された関数は関数群１３に追加される。関数群１３への新たな関数の追加に伴って生じる、関数間の新たな関係が関数関係表１４に追加される。また、顧客の増減や契約条件の変更などに伴い、顧客管理テーブル１２が更新される。
【００１６】
サーバ１０には、ハンディターミナル３０上で実行する料金計算プログラムを生成する生成処理部１５、及び、生成した料金計算プログラムをハンディターミナル３０へダウンロードするダウンロード処理部１６を含む。図示する関数一覧表１７、料金計算オブジェクトプログラム１８は、生成処理部１５の実行に伴い生成される。また、図示する料金計算実行プログラム１９及び特定顧客管理テーブル２０は、生成処理部１５の実行に伴い生成され、ダウンロード処理部１６によってハンディターミナル３０へダウンロードされる。さらに、ハンディターミナル３０へは、関数群１３の中から関数が選択的にダウンロードされる。
【００１７】
ハンディターミナル３０は、サーバ１０からダウンロードされた、料金計算実行プログラム３１、特定顧客管理テーブル３２、および、関数群３３を有する。
【００１８】
図２は、生成システムのハードウェア構成図である。サーバ１０は、ＣＰＵ２１、メモリ２２、および通信装置２３を有し、ＨＤＤ(ハードディスクドライブ)２４及び入出力装置２５を接続し、これらはバスによって接続されている。なお、ＨＤＤ２４や入出力装置２５との接続のためのインターフェイスなどの図示を省略する。ＣＰＵ２１は、生成処理部１５及びダウンロード処理部１６を実行する。メモリ２２は、図１で説明した各テーブル、各表、関数群１３、生成処理部１５及びダウンロード処理部１６、並びにこれらの処理の実行に伴い生成されるプログラムやテーブルなどを格納する。実行中の生成処理部１５及びダウンロード処理部１６を除いた、他のプログラムやテーブルをＨＤＤ２４に格納しても良い。
【００１９】
通信装置２３は、ハンディターミナル３０と通信回線４０を介して通信するために用いられ、具体的には、ハンディターミナル３０へ料金計算実行プログラム１９や特定顧客管理テーブル２０をダウンロードするために用いられる。入出力装置２５は、生成処理部１５及びダウンロード処理部１６の実行、前述のテーブルの更新や関数の追加の処理の実行に必要なユーザインタフェースを構成する、ディスプレイやキーボードなどである。
【００２０】
ハンディターミナル３０は、ＣＰＵ３４、メモリ３５、通信装置２６、外部記憶インターフェイス３７、および入出力装置３８を有する。ＣＰＵ３４は、安価なハンディターミナル３０とするために、一般にサーバ１０のＣＰＵ２１よりも低い性能で、料金計算実行プログラム３１を実行する。メモリ３５は、安価で、小型、軽量のハンディターミナル３０とするために、サーバ１０のメモリ２６の容量に比べて小容量で、料金実行プログラム３１、特定顧客管理テーブル３２、及び関数群を格納する。通信装置３６は、前述したサーバ１０との通信のために用いる。
【００２１】
外部記憶インターフェイス３７は、メモリ２６の容量が不足したときに用いる、ＵＳＢメモリなどの外部記憶装置とのインターフェイスである。外部記憶装置には、料金計算実行プログラム３１の応答性（実行性能）の観点から使用頻度の少ない関数を格納し、特定顧客管理テーブル３２などは外部記憶装置の紛失のリスクの観点から格納しない方が良い。入出力装置３８は、検針員とのユーザインタフェイスであり、小型のディスプレイ、キーボード、及び、検針結果を印刷するプリンタである。キーボードは、小型、軽量のハンディターミナル３０とするために、電源のＯＮ／ＯＦＦボタン、リセットボタン、１０キー、及び幾つかのファンクションキー程度を有する。
【００２２】
図３は、料金定義テーブル１１の構成例である。料金定義テーブル１１は、契約種別コード１１０、料金種別コード１１１、関数名１１２、有効開始日１１３、有効終了日１１４、パラメータ１１５，１１６などの欄を有する。契約種別コード１１０は、通常使用契約や夜間割引契約など、及び契約電力（実際には契約電流）などの組み合わせの契約種別を表す。料金種別コードは、同じ契約種別であっても、基本料金と従量料金とが異なったり、定額料金であったりするので、それらの料金種別を表す。なお、料金種別も契約の一部として、前述の契約種別に料金種別も組み合わせた契約種別としても良い。
【００２３】
関数名１１２は、契約種別コード１１０及び料金種別コード１１１に応じた電力料金を計算するための関数（関数プログラム）の名称である。有効開始日１１３及び有効終了日１１４による期間は、契約種別コード１１０及び料金種別コード１１１に応じた関数の有効期間を表す。換言すると、契約種別コード１１０及び料金種別コード１１１と関数との対応関係の有効期間を表している。
【００２４】
図３に示す例では、契約種別コード１１０がC01、料金種別コード１１がR01のレコード（テーブルの行）が３レコードある。本日を2009.6.20とすると、１レコード目は関数F01にパラメータP11及びP21を用いて2008.1.1〜2009.5.31の期間に有効であったことを示している。２レコード目は、契約種別コード１１０と料金種別コード１１１は変わらず、料金計算する関数もF01で変わらないが、関数F01で用いるパラメータ１１６をP22とするように料金計算方法が改定されたことを示す。この２レコード目も、2009.12.31までの料金計算方法であり、2010.1.1からは契約種別コード１１０及び料金種別コード１１１が同じであっても、料金計算する関数がF02、そのパラメータ１１５，１１６がP12、P21であるように、料金計算方法が改定されることを示す。
【００２５】
このような料金改定が予定された場合、新たに使用する関数F02が既存の関数群１３の中になければ、有効開始日１１３前に開発されて関数群１３に追加される。パラメータ１１５、１１６はすでに説明したように関数名１１２の関数のパラメータ(引数)である。パラメータの数は、開発された関数によって決定される。
【００２６】
図４は、関数関係表１４の構成例である。関数群１３に含まれる関数には、契約種別コード１１０及び料金種別コード１１１に対応した関数だけでなく、幾つかの関数に共通する処理を関数としたものもある（いわゆる、サブルーチン）。共通の処理の関数は、いずれかの関数から呼び出され、さらに他の関数を呼び出すこともある。関数関係表１４は、関数群１３に含まれる個々の関数の関係を、呼び出す関数(縦軸)と呼び出される関数(横軸)との関係で示す。図４に示す例では、関数F01は関数F06を呼び出し、関数F02は関数F01及びF06を呼び出すことを表している。
【００２７】
図５は、顧客管理テーブル１２の構成例である。顧客管理テーブル１２は、顧客ID１２０、地域コード１２１、契約種別コード１２２、料金種別コード１２３、前回検針日１２４、前回検針値１２５、検針予定日１２６、氏名１２７、住所１２８などの、顧客の属性を示す欄を有する。顧客IDは、同姓同名などによる混同を避けるために、個々の顧客を識別する識別子である。地域コードは、顧客の居所又は電力需要地の地域を表すコードである。地域コードは、上位桁が広域、中位桁が広域に含まれる中域、下位桁が中域に含まれる狭域を表すように体系化され、検針員の単位日数当たりの検針巡回地域（狭域）毎に１コードが対応付けらる。たとえば、単位日数として１日で巡回検針する地域に１コードを割当てても良いし、単位日数を２日や３日にしても良い。なお、以下では地域コードをD01、D02、D03、・・・のように表す。契約種別コード１２２と料金種別コード１２３は、図３の料金定義テ−ブル１１で説明したものと同じである。
【００２８】
前回検針日１２４及び前回検針値１２５は、顧客の積算電力計の値を前回検針した日付及びその値である。検針予定日１２６は、次に検針する予定日である。氏名１２７は、検針結果の通知表の宛先として印刷する氏名であり、事業所名、建物名の場合もある。住所１２８などの顧客の属性情報の多くは電気料金計算以外の目的で使用されるので、説明を省略する。
【００２９】
図６は、特定顧客管理テーブル２０の構成例である。特定顧客管理テーブル２０は、後述する生成処理部１５の実行に伴い、顧客管理テーブル１２から選択した顧客に関して生成されるテーブルである。特定顧客管理テーブル２０は、処理フラグ２００、顧客ID２０１、契約種別コード２０２、料金種別コード２０３、前回検針日２０４、前回検針値２０５、検針予定日２０６、検針値２０７、料金２０８、氏名２０９などの欄を有する。
処理フラグ２００は、積算電力計の値を検針し、検針結果の通知表を発行したことをONで表し、未だの時にはスペース(OFF)である。顧客ID２０１、契約種別コード２０２、料金種別コード２０３、前回検針日２０４、前回検針値２０５、検針予定日２０６、及び、氏名２０９は、顧客管理テーブル１２の項目名が同じ項目と同様である。
【００３０】
検針値２０７及び料金２０８は、検針及び電力料金の結果を格納する欄に該当する。サーバ１０上にある特定顧客管理テーブル２０には検針結果を格納することはないが、ハンディターミナル３０に特定顧客管理テーブル３２としてダウンロードする際に、そのままの形（デッドコピー）でダウンロードできるようにするために、予め検針結果を格納する欄を設けておく。処理フラグ２００を予め設けておくのも同様の理由である。なお、検針予定日２０６の欄は、ハンディターミナル３０上では電力料金計算プログラムの実行に伴って、実際の検針日に書き換えられる。
【００３１】
図７は、生成処理部１５の処理フローチャートである。入出力装置２５から地域コードと期間を入力する(ステップ１５０)。地域コードは、検針員がハンディターミナル３０を使用し、巡回検針する地域を示すコードである。期間は、たとえば本日2009.6.20から2009.6.30迄のように日付を用いて入力する。地域コードは、検針員やハンディターミナル３０と巡回地域とが対応付けられている場合は、検針員やハンディターミナル３０を特定する情報を入力するようにしても良い。また、これらの入力情報はハンディターミナル３０から通信回線４０を介して入力するようにしても良い。
【００３２】
顧客管理テーブル１２から、地域コード１２１が入力した地域コードと一致し、検針予定日１２６が入力した期間内にある顧客IDのレコードを検索する（ステップ１５１）。入力された地域コードがD01であり、期間は2009.6.20〜2009.6.30とする。顧客管理テーブル１２に示す例から、地域コードと期間との条件を満たすレコードの顧客IDは、U01、U03、U04、・・・である。これらのレコードを基に特定顧客管理テーブル２０を作成する(ステップ１５２)。特定顧客管理テーブル２０は、図６を用いて説明したように、顧客管理テーブル１２の欄の内容をコピーする欄と空欄として新たに設ける欄とにより作成する。図６は、顧客IDがU01、U03、U04、・・・を例とした特定顧客管理テーブル２０を表している。特定顧客管理テーブル２０は、ハンディターミナル３０の入出力装置３８の画面に次に検針すべき顧客を表示できるように、検針員の巡回経路順にレコードをソートしておくことが望ましい。
【００３３】
特定顧客管理テーブル２０の契約種別コード２０２及び料金種別コード２０３とに一致する契約種別コード１１０及び料金種別コード１１１を持ち、期間を満足するレコードを料金定義テーブル１１から検索する(ステップ１５３)。期間を満足するとは、特定顧客管理テーブル２０の検針予定日２０６が、料金定義テーブル１１の有効開始日１１４と有効終了日１１５とで示される期間内にあることである。
【００３４】
図６の特定顧客管理テーブル２０と図３の料金定義テーブル１１との例を説明する。特定顧客管理テーブル２０の顧客IDがU01の、契約種別コード２０２はC01、料金種別コード２０３はR01、検針予定日２０６は6/29（2009.6.29）である。料金定義テーブル１１に契約種別コード１１０がC01、料金種別コード２０３がR01は３レコードあるが、検針予定日２０６の6/29を満足するレコードは、有効開始日１１４が2009.6.1、有効終了日１１５が2009.12.31のレコード（図３の項目名の行を除いて、２行目）である。同様に、特定顧客管理テーブル２０の顧客IDがU03に関して料金定義テーブル１１の７行目のレコード、顧客IDがU0４に関して料金定義テーブル１１の６行目のレコードが検索される。
【００３５】
料金定義テーブル１１の検索結果に基づき、関数関係表１４を参照し、関数一覧表１７を作成する(ステップ１５４)。図８Ａは、関数一覧表１７の例である。関数一覧表１７は、関数名１７０、相対アドレス１７１、及びサイズ１７２の各欄を有する。関数名１７０は、すでに説明した料金計算するための関数の名称である。相対アドレス１７１は、関数の実体（プログラム）の先頭アドレスを、関数一覧表１７に含まれる関数全体の記憶領域（後述するハンディターミナル３０の関数群３３の記憶領域）の相対位置で表している。ここでは分かり易くするために、関数一覧表１７に含まれる関数全体を連続した１つの記憶領域に格納し、相対アドレスはその記憶領域の先頭アドレスからの相対位置を表す。サイズ１７２は関数の容量であり、図示等を省略するが、関数を開発したときに、その関数のメタ情報として、サイズが関数名などと共にメモリ２２に格納されているので、そのサイズ（値）を用いる。
【００３６】
図３の料金定義テーブル１１から、２、６及び７行目のレコードが検索されたとして、作成される関数一覧表１７を説明する。検索されたレコードの関数名１１２は、F01、F04およびF05である。この関数名F01、F04およびF05を、関数一覧表１７の関数名１７０の欄に順に格納する。図８Ａに示すように、関数F01を記憶領域の先頭に格納することを前提として、その相対アドレス１７１を０とする。サイズ１７２は、メタ情報からのS01である。２番目に格納する関数F04は、相対アドレス１７１がX04である。X04は関数F01のサイズS01に等しい。同様にして、３番目に格納する関数F05は、相対アドレス１７１がX05である。X05は関数F01と関数F04のサイズの和S01＋S04に等しい。実際に関数を、ハンディターミナル３０の関数群３３の記憶領域に格納する場合、各関数の先頭アドレスは偶数アドレスでないとならないなどの制約がある場合もあるので、相対アドレス１７１の値はダミーの値であっても良い。
【００３７】
次にF01、F04およびF05のいずれかの関数が呼び出している関数を関数関係表１４から取得する。図４の関数関係表１４の例では、関数F06及びF07が取得される。関数F01とF04とが関数F06を呼び出すが、呼び出される関数F06を重複して取得しないようにする。取得した関数F06及びF07を関数一覧表１７の関数名１７０に追加し、それらの相対アドレス１７１としてX06、X07、及びサイズ１７２としてS06、S07を格納する。さらに、関数関係表１４を参照して、関数F06及びF07のいずれかの関数が呼び出している関数があれば、その関数を関数一覧表１７に追加する。関数関係表１４を参照して、この処理を呼び出す関数がない状態になるまで繰り返す。
【００３８】
図７の説明に戻る。特定顧客管理テーブル２０、料金定義テーブル１１、関数一覧表１７を参照して、料金計算オブジェクトプログラム１８を生成する(ステップ１５５)。料金計算オブジェクトプログラム１８を生成する説明の前に、料金計算オブジェクトプログラム１８を説明する。生成される料金計算オブジェクトプログラム１８は、ハンディターミナル３０で実行する、メインプログラムとしての料金計算プログラムのオブジェクトコードである。オブジェクトコードで示すと分かりにくいので、図９に料金計算オブジェクトプログラム１８の例をPADで示す。
【００３９】
図９に示す料金計算オブジェクトプログラム１８の処理を簡単に説明する。特定顧客管理テーブル２０の処理フラグ２００がOFFの顧客名を選択入力する（ステップ１８０）。ハンディターミナル３０の入出力装置３８は、簡易なキーボードなどの入力部であるので、画面に顧客名を表示し、選択するようにする。前述のように検針員の巡回経路順に特定顧客管理テーブル２０（ハンディターミナル３０上では、特定顧客管理テーブル３２）をソートしてあれば、次に検針すべき顧客名を表示することにより、検針員は確認ボタンを押すなどにより、顧客名を選択することができる。
【００４０】
選択した顧客名に一致する、特定顧客管理テーブル２０の氏名２０９のレコードの契約種別コード２０２及び料金種別コード２０３を判定する（ステップ１８１）。契約種別コード２０２及び料金種別コード２０３の判定結果が、C01,R01ならば、パラメータをP11,P22として関数F01を呼ぶ(ステップ１８２)。同様にして、C02,R03ならば、パラメータをP14,P24として関数F04を呼び(ステップ１８３)、C03,R01ならば、パラメータをP15,P25として関数F05を呼ぶ(ステップ１８４)。契約種別コード２０２及び料金種別コード２０３の組が、料金定義テーブル１１に無いならば、エラー処理する（ステップ１８５）。
【００４１】
エラー処理を実行したか否かを判定し(ステップ１８６)、実行していなければ（エラーで無ければ）、検針結果をプリントする（ステップ１８７）。処理を実行した顧客に関して、特定顧客管理テーブル２０の処理フラグ２００をONにして(ステップ１８８)、処理を終了する。
【００４２】
料金計算オブジェクトプログラム１８を生成する説明に戻る。料金計算オブジェクトプログラム１８を逐次的に生成する論理を生成処理部１５に組み込んでも良いが、雛形を用いると簡単であるので、その方法を説明する。料金計算オブジェクトプログラム１８の雛形には、図９に示したステップ１８０〜ステップ１８８のすべてを含むが、ステップ１８１の判定文の判定条件として、エラー処理への分岐を除き、いくつかのダミー条件を設け、これらのダミー条件に対応してダミーの関数呼び出し文（CALL文）を設けておく。ダミーの関数呼び出し文の関数名やパラメータもダミーである。
【００４３】
このような雛形を用いるとき、料金計算オブジェクトプログラム１８を生成する処理の主要部は、（１）判定文の判定条件の決定と、（２）関数呼び出し文の設定である。
【００４４】
判定文の判定条件の決定について説明する。特定顧客管理テーブル２０の契約種別コード２０２と料金種別コード２０３との組み合わせを列挙し、列挙した組み合わせの各々を判定文の判定条件とする。図６の特定顧客管理テーブル２０に例示してある部分に関しては、その組み合わせは（C01,R01）、（C03,R01）及び（C02,R03）である。これらの組み合わせでダミーの判定条件を置き換える。ダミーの判定条件の数よりもこれらの組み合わせの数が多い場合は、判定条件として追加する。特定顧客管理テーブル２０にある契約種別コード２０２と料金種別コード２０３との全ての組を判定条件としても良いが、異なる顧客に関して、同じ契約種別コード２０２と料金種別コード２０３との組み合わせの場合があるので、重複を避けて組み合わせを列挙する。重複があると、論理としては問題ないが、プログラムが冗長になる。冗長なプログラムを、メモリ３５の容量が少ないハンディターミナル３０に格納し、実行することは望ましくない。
【００４５】
判定条件を決定したならば、各々の関数呼び出し文を設定する。判定条件として決定した、料金定義テーブル１１の契約種別コード１１０と料金種別コード１１１との組み合わせに対応する関数名１１２、パラメータ１１５、１１６を雛形の中に設定する。関数名１１２には、関数一覧表１８を参照して、対応する相対アドレス１７１を格納する。この処理を決定した全ての判定条件に関して実行する。以上により、料金計算オブジェクトプログラム１８が生成される。
【００４６】
図１０は、ダウンロード処理部１６の処理フローチャートである。ダウンロード処理部１６は、通信回線４０を介して接続したハンディターミナル３０からのトリガーにより実行を開始する。特定顧客管理テーブル２０をダウンロードし、ハンディターミナル３０上の特定顧客管理テーブル３２とする(ステップ１６０)。ダウンロード時に、特定顧客管理テーブル２０の内容を変更しないので、特定顧客管理テーブル３２の内容は図６の特定顧客管理テーブル２０と同じである。
【００４７】
関数一覧表１７を参照して、関数群１３に格納されている関数を選択して、ハンディターミナル３０上の関数群３３としてダウンロードする（ステップ１６１）。関数一覧表１７には、後述するハンディターミナル３０上の料金計算実行プログラム３１が用いる関数以外の関数を含まないので、関数群３３は関数群１３の部分集合である。選択した各々の関数をダウンロードする毎に(又は最後に一括して)、ダウンロードした関数の先頭アドレス（呼び出し文の分岐アドレスとなるメモリ３５の絶対アドレス）の通知をハンディターミナル３０から受け、関数一覧表１７の相対アドレス１７１を、図８Ｂに示すように、絶対アドレス１７３に書き換える。
【００４８】
関数一覧表１７の関数の絶対アドレス１７３を参照して、料金計算オブジェクトプログラム１８を料金計算実行プログラム１９に変換して、ハンディターミナル３０へダウンロードして、料金計算実行プログラム３１とする(ステップ１６２)。料金計算オブジェクトプログラム１８の関数呼び出し文には相対アドレス１７１が設定されているので、図８Ｂに示した絶対アドレス１７３に書き換えることにより、料金計算実行プログラム１９を生成する。
【００４９】
ハンディターミナル３０の電源オンやリセットボタン操作により、ダウンロードされた料金計算実行プログラム３１を実行できるように設定しておく（または、リセット処理後に実行するアドレスが決定されているならば、そのアドレスが料金計算実行プログラム３１の先頭番地となるように、ダウンロードする）ことにより、検針員によるハンディターミナル３０の使用が容易になる。
【００５０】
本実施形態によれば、多様な利用形態に応じた料金計算プログラムを、メモリ容量の小さなハンディターミナルで利用可能になる。
【符号の説明】
【００５１】
１０：サーバ、１１：料金定義テーブル、１２：顧客管理テーブル、１３：関数群、１４：関数関係表、１５：生成処理部、１６：ダウンロード処理部、１７：関数一覧表、１８：料金計算オブジェクトプログラム、１９：料金計算実行プログラム、２０：特定顧客管理テーブル、２１：ＣＰＵ、２２：メモリ、２３：通信装置、２４：ＨＤＤ、２５：入出力装置、３０：ハンディターミナル、３１：料金計算実行プログラム、３２：特定顧客管理テーブル、３３：関数群、３４：ＣＰＵ、３５：メモリ、３６：通信装置、３７：外部記憶インタフェイス、３８：入出力装置。
【図１】
2011008670.tif 000003
【図２】
2011008670.tif 000004
【図３】
2011008670.tif 000005
【図４】
2011008670.tif 000006
【図５】
2011008670.tif 000007
【図６】
2011008670.tif 000008
【図７】
2011008670.tif 000009
【図８Ａ】
2011008670.tif 000010
【図８Ｂ】
2011008670.tif 000011
【図９】
2011008670.tif 000012
【図１０】
2011008670.tif 000013