(57)【特許請求の範囲】
【請求項１】
時系列的に連続する時系列レコードより構成される時系列ファイルを格納するファイル記憶手段と、
該ファイル記憶手段に格納されている各時系列ファイルのデータ構造に応じて設定されるパラメータを記憶するパラメータ記憶手段と、
前記時系列ファイルの更新時に、前記パラメータ記憶手段に記憶されたパラメータのなかから更新対象の時系列ファイルに対応するパラメータを読み出して、該パラメータを解釈するパラメータ解釈手段と、
該パラメータ解釈手段によるパラメータ解釈結果に基づいて前記更新対象の時系列ファイル内の累計処理対象となる時系列レコードに対して時系列的に累計処理を実行する累計処理手段と、
を有することを特徴とするファイル更新装置。
【請求項２】
前記パラメータは、前記累計処理対象となる時系列レコードのグループを示す累計グループのフィールドと、前記時系列的に累計処理を実行する対象となる累計フィールドと、該累計フィールドへの累計処理において累計値を算出する為の被演算子として用いられる累計対象のフィールドとが、前記時系列ファイルのデータ構造に応じて指定されるものであることを特徴とする請求項１記載のファイル更新装置。
【請求項３】
前記累計処理手段は、前記パラメータ解釈手段によるパラメータ解釈結果に基づいて、前記累計グループのフィールドにより指定されるグループの各時系列レコードの前記累計フィールドの値を、前記累計対象のフィールドの被演算子を用いて算出する累計値によって更新することにより、前記累計処理を実行することを特徴とする請求項２記載のファイル更新装置。
【請求項４】
時系列的に連続する時系列レコードより構成される時系列ファイルを格納するファイル記憶手段と、
該ファイル記憶手段に格納される前記時系列ファイルの時系列レコードが時系列的に不連続となる場合に該不連続を解消する追加レコードを生成する為のパラメータを記憶するパラメータ記憶手段と、
該パラメータ記憶手段に記憶されている前記パラメータに基づいて、前記時系列的に不連続となる時系列レコードを時系列的に連続にする為の追加レコードを生成して前記時系列ファイルに追加するレコード追加処理手段と、
を有することを特徴とするファイル更新装置。
【請求項５】
前記レコード追加処理手段は、前記時系列ファイル内に新規レコードを追加挿入した際に該新規レコードと該新規レコードの前のレコード又は後のレコードとが時系列的に不連続となった場合に、前記レコード追加処理を実行することを特徴とする請求項４記載のファイル更新装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、時系列に累計されるレコードを累計更新するファイル更新装置に関する
【０００２】
【従来の技術】
従来より、例えばデータベースに格納されているマスタファイルを、新たに発生する変動ファイル（または、変動レコード）の内容に基づいて更新するファイル更新処理がある。
【０００３】
図８は、このような従来のファイル更新処理を示す図である。
同図において、変動レコード７０は、例えば各社員の個人端末装置に格納されている個人別の売上ファイル（変動ファイル）の１レコードであり、“得意先cd”、“年月度ym”、“売上金額”の各データ項目（フィールド）から構成されている。
【０００４】
集計ファイル８０は、例えばデータベースに格納されているマスタファイルであり、各得意先別に月毎の全売上金額を“月度売上金額”のフィールドに集計している。また、得意先別に、各月までに発生する売掛金額を“月初売掛金額”のフィールドに累計している。例えば、図８に示す集計ファイル８０においては、９４年４月までに発生する売掛金額（月初売掛金額）は、その前月（３月）の月初売掛金額（10,000）に、同じく前月（３月）の月度売上金額（15,000）を加算した値（25,000）になる。よって、図８の集計ファイル８０におけるプライマリキーが「“0002”, “94/04 ”」のレコードの“月初売掛金額”は、（25,000）となっている。９４年５月の月初売掛金額についても同様に、その前月（４月）の月初売掛金額と月度売上金額との合計値となっている。
【０００５】
このように、集計ファイル８０は、同一グループ内（得意先cdが同一）のレコードに対して、“年月度ym”の昇順に各レコードの月初売掛金額を累計しているファイルであり、一種の時系列ファイルとなっている。また、この時系列ファイル内において、時系列順に格納されるレコードを時系列レコードと呼ぶことにする。
【０００６】
この時系列ファイルである集計ファイル８０を、変動レコード７０により更新する処理は、従来は以下に述べる方法により行われていた。
すなわち、まず集計処理対象のレコードを特定するためのプライマリキーとして、“得意先cd”及び“年月度ym”を用い、変動レコード７０のプライマリキーと一致するレコードを、集計ファイル８０から読み出す。図８では、プライマリキー（「“得意先cd”, “年月度ym”」）が「“0002”, “94/03 ”」のレコードを集計ファイル８０から読み出して、このレコードの月度売上金額（15,000）に変動レコード７０の売上金額（15,000）を加算する集計処理が行われる。この集計処理によって、図８に示すように更新後の集計ファイル８１の集計対象レコードの月度売上金額は、“30,000”に更新される。
【０００７】
このように、プライマリキーにより集計対象のレコードを検索して集計処理を行うアプリケーション・ソフトウェアは、従来はユーザの注文に応じて作成されるカスタム・ソフトとして提供されていた。また、集計ファイル８０は時系列ファイルであるので、更に、上記した月初売掛金額を累計していく処理も必要となる。この処理も、従来では、上記カスタム・ソフトによりユーザに提供されていた。すなわち、従来は、上記のような時系列に累計するための累計処理システムは、プログラマがユーザの注文に応じて制御ロジックを作成するアプリケーション・ソフトウェアにより構築されていた。
【０００８】
更にまた、上記時系列ファイルの更新処理を行う際、図９に示すような“歯抜け”が生じる場合があった。
図９は、従来のファイル更新処理において発生する、時系列ファイルである集計ファイル８２の“歯抜け”状態を示す図である。
【０００９】
同図に示すように、変動レコード９０のプライマリキー「“0002”, “94/07 ”」と一致するレコードが、集計ファイル８２内に存在しない場合には、変動レコード９０から集計ファイル８２の新規レコード８３を生成し、これを集計ファイル８２に挿入することになる。このとき、同図に示すように、新規レコードとその前のレコードとが時系列的に不連続となる場合は（年月度ymが“94/05 ”と“94/07 ”とでは、時系列的に不連続）、“歯抜け”のレコード（プライマリキーが「“0002”, “94/06 ”」のレコード）が生じてしまうことになる。このような“歯抜け”のレコードが生じた場合、従来では、時系列に累計される他のレコードの累計値に影響を与えることなく“歯抜け”を埋めるレコードを自動生成するための手法が明確でないため、事実上対応することができなかった。或いは、対応が困難であった。
【００１０】
【発明が解決しようとする課題】
従来では、上述したように時系列レコードに対する累計処理を行う市販のアプリケーション・ソフトウェアがない為、ユーザは仕様を提出する等して、上記累計処理を行うアプリケーション・ソフトウェアを特別に注文して、プログラマに作成してもらっていた。この為、プログラマの熟練度やセンス、又は実現仕様などにより、制御ロジックが様々であり、新規設計、保守、機能強化等を行う際、多大な労力と費用が費やされるという問題が発生していた。
【００１１】
また、図９に示すような“歯抜け”状態が生じた場合には、事実上対応できないという問題があった。
本発明の課題は、時系列ファイルの累計更新処理に対して、ユーザ自身が時系列ファイルに対する累計処理を容易に行えるようにすることである。また、“歯抜け”レコードに対するレコードの追加も、ユーザ自身で容易に行えるようにすることである。
【００１２】
【課題を解決するための手段】
本発明による第一のファイル更新装置は、以下の手段を備える。
ファイル記憶手段は、時系列的に連続する時系列レコードより構成される時系列ファイルを格納する。
【００１３】
パラメータ記憶手段は、上記ファイル記憶手段に格納されている各時系列ファイルのデータ構造に応じて設定されるパラメータを記憶する。
パラメータ解釈手段は、上記時系列ファイルの更新時に、上記パラメータ記憶手段に記憶されたパラメータのなかから更新対象の時系列ファイルに対応するパラメータを読み出して、該パラメータを解釈する。
【００１４】
累計処理手段は、上記パラメータ解釈手段によるパラメータ解釈結果に基づいて、上記更新対象の時系列ファイル内の累計処理対象となる時系列レコードに対して時系列的に累計処理を実行する。
【００１５】
上記パラメータは、例えば、上記累計処理対象となる時系列レコードのグループを示す累計グループのフィールドと、上記時系列的に累計処理を実行する対象となる累計フィールドと、累計フィールドへの累計処理において累計値を算出する為の被演算子として用いられる累計対象のフィールドとが、上記時系列ファイルのデータ構造に応じて指定されるものである。
【００１６】
また、上記累計処理手段は、例えば、上記パラメータ解釈手段によるパラメータ解釈結果に基づいて、累計グループのフィールドにより指定されるグループの各時系列レコードの累計フィールドの値を、累計対象のフィールドの被演算子を用いて算出する累計値によって更新することにより、上記累計処理を実行する。
【００１７】
上記構成の第一のファイル更新装置では、予め各時系列ファイルのデータ構造に応じて各種パラメータを設定して、パラメータ記憶手段に記憶しておく。
上記時系列ファイルの更新時に、パラメータ解釈手段が、更新対象の時系列ファイルに対応するパラメータをパラメータ記憶手段より読み出して、このパラメータを解釈する。そして、このパラメータの解釈結果に基づいて、累計処理手段が、時系列ファイル内の累計処理対象となる時系列レコードに対して、時系列的に累計処理を実行することができる。
【００１８】
このように、第一のファイル更新装置では、簡単なパラメータを設定することで、更新対象の時系列ファイルに対する累計更新処理が行えるので、誰でも簡単に時系列ファイルの累計更新処理が行える。また、各時系列ファイルのデータ構造が異なる場合でも、各データ構造に応じた各パラメータを設定することで対応できるので、プログラマが逐一制御プログラムを作成する必要はなくなる。更に新規設計を行う場合にも、新たなパラメータを追加設定することで対応できる。
【００１９】
本発明による第二のファイル更新装置は、以下の手段を備える。
ファイル記憶手段は、時系列的に連続する時系列レコードより構成される時系列ファイルを格納する。
【００２０】
パラメータ記憶手段は、上記ファイル記憶手段に格納される時系列ファイルの時系列レコードが時系列的に不連続となる場合に該不連続を解消する追加レコードを生成する為のパラメータを記憶する。
【００２１】
レコード追加手段は、上記パラメータ記憶手段に記憶されているパラメータに基づいて、上記時系列的に不連続となる時系列レコードを時系列的に連続にする為の追加レコードを生成して、時系列ファイルに追加する。
【００２２】
上記レコード追加処理手段は、例えば、上記時系列ファイル内に新規レコードを追加挿入した際に該新規レコードと該新規レコードの前のレコード又は後のレコードとが時系列的に不連続となった場合に、上記レコード追加処理を実行する。
【００２３】
上記構成の第二のファイル更新装置では、時系列ファイルの時系列レコードが時系列的に非連続となる場合にも、予め追加レコードを生成する為のパラメータをパラメータ記憶手段に記憶しておくことで、このパラメータに基づいて、上記時系列的に不連続となった時系列ファイルのレコードを時系列的に連続にする為の追加レコードを自動生成して追加することができる。
【００２４】
【発明の実施の形態】
以下、本発明の一実施例について、図面を参照しながら詳述する。
図１は、本発明の一実施例であるファイル更新装置１０のシステム構成を示すブロック図である。
【００２５】
同図において、ＣＰＵ１１は、ファイル更新装置１０全体を制御する中央処理装置である。
パラメータ解釈部１２は、ＣＰＵ１１よりパラメータのロード指示を受けると、対応するパラメータをパラメータファイル１４からパラメータメモリ１３上にロードする。そして、ロード後、パラメータの解釈を行い、その解釈結果をＣＰＵ１１に通知する。パラメータファイル１４は、更新対象となる各ファイルのデータ構造に応じて予め作成された各パラメータを、格納しておくファイルである。パラメータメモリ１３は、ファイル更新時に、更新対象のファイルに対応するパラメータファイル１４内のパラメータを、一時的に記憶するメモリである。
【００２６】
ＣＰＵ１１は、上記パラメータ解釈部１２より受け取るパラメータの解釈結果に基づいて、I/O 制御部１５を制御して集計ファイル１６より集計更新対象となる集計ファイルを読み出す。また、特に図示してはいないが、I/O 制御部１５には、例えば外部の端末装置が接続されており、この端末装置に格納されているファイルが集計元のファイル（変動ファイル）として読み出される。
【００２７】
また、ＣＰＵ１１は、パラメータの解釈結果に基づいて、集計処理部１７、累計処理部１８及び追加処理部１９に対して、それぞれ上記読み出した集計ファイルの集計処理、累計処理及び追加処理を指示する。
【００２８】
集計メモリ２０は、集計処理部１７及び累計処理部１８の処理結果である集計値及び累計値を一時記憶しておくためのメモリである。
上記したパラメータの解釈結果に基づく集計ファイルの集計、累計、追加処理については、以下に先ず図２、図３に示すパラメータの一例、集計ファイルの一例を説明し、続いて、図６、図７に示すフローチャートにより処理動作を詳細に説明することにする。
【００２９】
図２は、パラメータファイル１４に格納されているパラメータ３０のデータ形式（データ構造）の一例を示す図である。
図２は、オペレータ等がパラメータ３０を設定するための入力画面を示している。入力画面の左側は、パラメータ３０の各項目名を表示する表示領域３０１となっており、右側は、オペレータ等がパラメータ３０の各項目に対して、ファイル名、フィールド名等を入力するための入力領域３０２となっている。
【００３０】
パラメータ３０は、出力ファイル３１、累計グループ３２、累計フィールド３３、累計対象３４及びレコード追加３５の５項目から成っている。これらの各項目名は、入力画面の初期画面の表示領域３０１に表示される。オペレータは、表示された各項目に対して、対象ファイル名、及びこの対象ファイルのフィールド名等を、入力画面の右側に示す入力領域３０２に入力していくことで、パラメータ３０の設定を行うことができる。
【００３１】
出力ファイル３１は、累計更新対象となる時系列ファイル名（対象ファイル名）を指定するパラメータ項目であり、図２には、オペレータ等が、対象ファイル名として「集計ファイル」を入力した例を示している。
【００３２】
累計グループ３２は、累計処理の対象となる時系列レコードの範囲を指定するパラメータ項目であり、上記指定した対象ファイル内の累計対象となる時系列レコードのグループ（同一累計グループ）を示すフィールド名を指定するものである。
【００３３】
累計フィールド３３は、累計更新を行う対象となるフィールド名を指定するパラメータ項目である。
累計対象３４は、累計フィールド３３に累計更新を行う際の累計値を算出する式中で被演算子として用いられるフィールド名を指定するパラメータ項目である。
【００３４】
レコード追加３５は、“歯抜け”状態となっている上記指定した対象ファイルに対してレコードを追加する場合の、レコード追加の条件となるフィールド名を指定するパラメータ項目である。
【００３５】
また、情報表示画面３６は、オペレータ等が出力ファイル３１の項目に対して対象ファイル名を入力すると、この対象ファイルのデータ構造を示す情報を表示する画面であり、オペレータ等の入力作業を補助するための情報を表示するものである。
【００３６】
図３は、上記出力ファイル３１として指定される集計ファイルの一例を示す図である。同図に示す集計ファイル４０の１レコードは、「得意先cd」、「年月度ym」、「月初売掛金額」、「月度売上金額」等の各フィールドからなる。図２には、出力ファイル３１として「集計ファイル」を指定した場合の情報表示画面３６の表示状態が示されている。すなわち、対象フィールドとして「得意先CD」、「年月度」等が表示され、出力項目として「得意先cd」、「年月度ym」等が表示されている。
【００３７】
そして、オペレータは、情報表示画面３６に表示された内容を参照して、入力画面内の入力領域３０２に各パラメータ項目に対応するフィールド名を入力していく。図２に示す例では、累計グループ３２として「得意先cd」を、累計フィールド３３として「月初売掛金額」を、累計対象３４として「月度売上金額」を、レコード追加３５として「年月度ym」を、それぞれ入力している。
【００３８】
このように、オペレータは、対象ファイルのデータ構造を意識する必要はなく、データ構造を知らなくても、情報表示画面３６に表示されるフィールド名等の情報を参照しながら簡単にパラメータを設定することができる。
【００３９】
尚、累計フィールド３３と累計対象３４は対で指示するものであり、また複数記述することもできる。累計対象３４に対するパラメータには、通常、データ項目名（フィールド名）を入力するが、式（演算子による式、関数等）を記述しても良い。
【００４０】
上記のようにして図２の入力画面から入力・設定されたパラメータ３０は、図１のパラメータファイル１４に格納される。パラメータ３０は、累計更新処理対象となる各ファイルのデータ構造に応じて複数種類設定されるものであって良い。そして、累計更新処理時に、ＣＰＵ１１の指示により、パラメータ解釈部１２が対応するパラメータをパラメータメモリ１３上に読み出して、このパラメータを解釈して、その解釈結果をＣＰＵ１１に通知することで、パラメータに基づく集計ファイルの累計更新処理が実行される。
【００４１】
このとき、パラメータ解釈部１２が図２に示すパラメータ３０を解釈・実行した場合、図３に示すように「累計グループ」として“得意先cd”のフィールドが指定される。また「累計フィールド」として“月初売掛金額”のフィールドが指定される。更に「累計対象」として“月度売上金額”のフィールドが指定される。ここで、“得意先cd”の値が同一であるレコード（例えば“0002”）は、同一の累計グループであるものとされる。累計更新処理は、同一累計グループ内の時系列レコード群に対して行われる。
【００４２】
図４は、図３の集計ファイル４０の累計更新処理を示す図である。
図４（ａ）は、変動レコード５０によって上記集計ファイル４０を集計更新する処理を示す。まず、“得意先cd”と“年月度ym”をプライマリキーとして、集計対象となるレコードを検索し、読み出す。同図では、変動レコード５０のプライマリキー「“0002”，“94/03 ”」と一致するプライマリキーを有するレコード（集計対象レコード）を、集計対象ファイル４０から読み出す。
【００４３】
次に、変動レコード５０の「売上金額」を、集計対象レコードの「累計対象」に集計する。このとき、パラメータ３０により、「累計対象」として「月度売上金額」のフィールドが指定されているので、集計ファイル４０内のプライマリキーが「“0002”，“94/03 ”」であるレコードの月度売上金額（15,000）と変動レコード５０の売上金額（15,000）とを加算して集計する。集計結果は、上記プライマリキーが「“0002”，“94/03 ”」であるレコードの「月度売上金額」のフィールドにリライト（再書込み）されて、図４（ａ）に示すように“30,000”となる。この結果、図３の集計ファイル４０は、図４（ａ）に示す集計ファイル４１に更新される。
【００４４】
続いて、この集計結果に応じて、図４（ｂ）に示すように、図４（ａ）の集計ファイル４１における集計対象レコードの次以降の時系列レコードの累計フィールドに対し、同一累計グループの範囲内で時系列に順次累計していく処理を行う。
【００４５】
すなわち、まず、上記集計対象レコードの次のレコード（プライマリキーが「“0002”, “94/04 ”」のレコード）を指定し、このレコードの累計フィールドを累計更新する処理を行う。このとき、パラメータ３０により、「累計フィールド」として「月初売掛金額」のフィールドが指定されているので、次レコード（プライマリキーが「“0002”, “94/04 ”」のレコード）の月初売掛金額のフィールドの累計更新を行うことになる。
【００４６】
この累計更新処理は、例えば、現在指定されているレコード（ここでは上記次レコードが指定されているので、プライマリキーが「“0002”, “94/04 ”」のレコード）の前のレコード（ここでは、プライマリキーが「“0002”, “94/03”」のレコード）の累計フィールド（10,000）と累計対象（30,000）とを加算する式を用いて更新値を算出して、上記現在指定されているレコード（次レコード）の累計フィールド（月初売掛金額）にリライトするものである。あるいは、変動レコード５０の「売上金額」を、現在指定されているレコードの累計フィールドに、直接累計するようにしても良い。この結果、上記次レコード（プライマリキーが「“0002”, “94/04 ”」のレコード）の累計フィールド（月初売掛金額）の更新値は、図４（ｂ）に示すように“40,000”となる。
【００４７】
この累計更新処理は、集計対象レコードと同一の累計グループ（得意先cdが同一）のレコードに対し、“年月度ym”の昇順に順次行っていく。つまり、現在指定されているレコード（プライマリキーが「“0002”, “94/04 ”」のレコード）の次のレコード（プライマリキーが「“0002”, “94/05 ”」のレコード）を指定して、指定されたレコードの累計フィールドに対して累計更新処理を行う。レコードの指定は、同一累計グループ内のレコードに対し、上記集計対象レコードから“年月度ym”の昇順に順次行っていく。そして、指定した次のレコードが、同一累計グループのレコードではない場合（同図では、プライマリキーが「“0003”, “94/01 ”」のレコードが指定されたとき）、変動レコード５０による集計ファイル４０の累計更新処理を終了する。この結果、図４（ａ）の集計ファイル４１は、図４（ｂ）に示す集計ファイル４２に更新される。
【００４８】
変動ファイルに変動レコードが複数ある場合は、続いて、次の変動レコードを読み出す。この次の変動レコードが、例えば、図５（ａ）の変動レコード６０であった場合、“歯抜け”のレコードを埋める為のレコード追加処理を行うことになる。
【００４９】
図５は、図４（ｂ）の集計ファイル４２の更新時に“歯抜け”レコードが生じた場合のレコード追加処理を説明する図である。
図５（ａ）において、変動レコード６０とプライマリキーが一致するレコードを検索すると、集計ファイル４２には一致するレコードが存在しないので、変動レコード６０を基にして新規レコードを生成し、この新規レコードを集計ファイル４２に挿入することになる。
【００５０】
すなわち、変動レコード６０の“得意先cd”と“年月度ym”をプライマリキーとし、更に、その“売上金額”を月度売上金額とし、月初売掛金額を“０”に設定した新規レコード４５を生成し、集計ファイル４２に挿入する。
【００５１】
このとき、挿入した新規レコード４５の年月度ym“94/07 ”と、その前のレコード４４の年月度ym“94/05 ”とが時系列的に不連続なものとなっている。この為、“歯抜け”のレコードが生じることになる。この様な場合、“歯抜け”のレコードを補充するための追加レコード４６を生成・追加する処理を行う。
【００５２】
この追加レコード４６は、図５（ｂ）の更新後の集計ファイル４３に示すように、累計グループ（得意先cd）は、新規レコード４５と同一の累計グループであるので、“0002”となる。また、パラメータ３０で設定したレコード追加のためのパラメータ項目である“年月度ym”は、上記前のレコード４４の年月度ym“94/05”に“１”を加算して生成することで、“95/06 ”となる。
【００５３】
更に、累計対象（月度売上金額）には“０”を設定する。そして、累計フィールド（月初売掛金額）には、上記前のレコード４４の累計フィールド（72,000）と累計対象（3,000 ）とを加算した値（75,000）を設定する。
【００５４】
このようにして、図５（ｂ）に示すように追加レコード４６を生成して、これを図５（ａ）の集計ファイル４２に自動追加することで、集計ファイル４２の“歯抜け”を補充することができ、追加レコード４６と同一の累計グループ内の時系列レコード群を、時系列的に連続するレコード群にすることができる。
【００５５】
そして、最後に、新規レコード４５の累計フィールド（月初売掛金額）を累計更新して処理を終了する。
尚、図５の場合では、“歯抜け”レコードは１つであるが、複数存在する場合には、上記追加レコードを生成追加後、更に時系列的に次のレコードとなる追加レコードを、順次、生成していく。また、図５の場合には、挿入した新規レコード４５の前に“歯抜け”が生じていたが、挿入した新規レコードの後に“歯抜け”が生じる場合もある。この場合は、新規レコードの“年月度ym”に“１”の倍数を加算した値が“年月度ym”となる追加レコードを、必要数だけ生成する。
【００５６】
次に、図６及び図７のフローチャートを参照して、ＣＰＵ１１の制御によりファイル更新装置１０が実行する累計更新処理の動作を説明する。
図６及び図７は、上記累計更新処理を説明するフローチャート（その１）、（その２）である。
【００５７】
図６及び図７のフローチャートに示す処理は、例えばＣＰＵ１１が、不図示のメモリに格納されているプログラムを実行することによって行われる。以下の説明では、図２のパラメータ３０をロードして上記プログラムを実行するものとして説明する。
【００５８】
まず、図６において、ＣＰＵ１１は、パラメータ解釈部１２に対し、パラメータロードの指示を出す（ステップＳ１）。これより、パラメータ解釈部１２は、パラメータメモリ１３上にパラメータ３０をロードし、そのパラメータ３０の解釈結果をＣＰＵ１１に通知する。
【００５９】
次に、ＣＰＵ１１は、その通知された解釈結果に基づき、I/O 制御部１５に対し、当該入力ファイル及び当該出力ファイルの読み出しを指示し、それらの入力ファイルと出力ファイルをオープンする（ステップＳ２）。このとき、ロードされたパラメータ３０により「出力ファイル」として指定されている「集計ファイル」をオープンする。また、オープンする入力ファイルは、例えば図４、５に示す変動レコード５０、６０より構成される変動ファイルである。尚、入力ファイル名は、オペレータにより適時指定されるものであっても良い。
【００６０】
続いて、入力ファイルより最初の１レコード（以下、入力レコードという）をリードする（ステップＳ３）。この時、リードする入力レコードが無い場合（ステップＳ４、ＮＯ）は、累計更新処理を終了する。入力レコードがある場合は（ステップＳ４、ＹＥＳ）、得意先cdと年月度ymとをプライマリキーとして、出力ファイル（集計ファイル）のレコードの中で、同一のプライマリキーであるレコード（集計対象レコード）を検索する（ステップＳ５）。
【００６１】
入力レコードと同一のプライマリキーの集計対象レコードが無い場合は（ステップＳ６、ＮＯ）、図７に示すレコード追加処理に移る。レコード追加処理は、図１の追加処理部１９がＣＰＵ１１からの指示に応じて実行するものであり、この処理についての詳細な説明は、後述する。
【００６２】
同一のプライマリキーの集計対象レコードがある場合は（ステップＳ６、ＹＥＳ）、入力レコードの売上金額を集計対象レコードの「累計対象」に集計する処理を行う（ステップＳ７）。このとき、パラメータ３０により、「累計対象」として「月度売上金額」が設定されているので、集計対象レコードの「月度売上金額」のフィールドに売上金額を集計する処理を行うことになる。尚、この集計処理は、図１の集計処理部１７がＣＰＵ１１からの指示に応じて行うものである。集計値は、集計メモリ２０に一時格納されて、累計更新処理に用いられる。
【００６３】
次に、現在指定されているレコード（このときは集計対象レコード）の次のレコードを指定し（ステップＳ８）、次レコードが集計対象レコードと同一の「累計グループ」であるか否かを判定する（ステップＳ９）。このとき、パラメータ３０より、「累計グループ」として「得意先cd」が設定されているので、集計対象レコードの「得意先cd」のフィールドの値と次レコードの「得意先cd」のフィールドの値とが一致するか否かを判定することになる。
【００６４】
一致しない場合は（ステップＳ９、ＮＯ）、次レコードは同一の累計グループではなく累計更新の対象ではないので、当該入力レコードに対する累計更新処理を終了し、ステップＳ３に戻る。そして、入力ファイルより、次の入力レコードをリードして、リードする入力レコードがなくなるまで、上記と同様の処理を繰り返す。
【００６５】
一致する場合は（ステップＳ９、ＹＥＳ）、次レコードの累計フィールドの更新処理を実行する（ステップＳ１０）。この更新処理は、現在指定されているレコード（この場合はステップＳ８で指定された次レコード）の累計フィールドに対して、現在指定されているレコードの前のレコード（この場合は集計対象レコード）における累計フィールドの値と累計対象の値（集計メモリ２０に保持されている値）とを加算した値を更新値とする処理である。このとき、パラメータ３０より、「累計フィールド」として「月初売掛金額」が設定され、「累計対象」として「月度売上金額」が設定されているので、上記更新処理は、次レコードの「月初売掛金額」の値を更新する処理となる。この更新処理の更新値は、集計対象レコードの「月初売掛金額」の値と集計メモリ２０に保持されている「月度売上金額」の値とを加算した値となる。
【００６６】
上記次レコードの累計フィールドに対する累計更新処理が終了すると、ステップＳ８に戻り、現在指定されているレコード（この場合は次レコード）の次のレコードを指定し、この指定したレコードが同一累計グループに属さないものと判別するまで（ステップＳ９、ＮＯ）、上記ステップＳ８〜ステップＳ１０の処理を繰り返す。
【００６７】
上述したように、本発明の一実施例のファイル更新装置では、時系列レコードに対する累計処理において、各種時系列ファイルのデータ構造に応じたパラメータを設定することにより、従来のように各種ファイルのデータ構造に応じてプログラマが逐一制御プログラムを作成する必要はなくなる。
【００６８】
よって、新規設計を行う場合にも、新たなパラメータを追加設定することで対応でき、誰でも簡単に時系列ファイルの累計更新処理が行える。また、画面に表示されるデータ項目の中から選択してパラメータ３０を設定できるので、データ構造に関する知識がない初心者であっても簡単にパラメータ３０の設定が行える。
【００６９】
次に、図７を参照して、上記図６のステップＳ６において同一のプライマリキーがないと判定された場合のレコード追加処理について説明する。
同図において、まず、上記入力レコードに基づいて、累計フィールドの値が“０”である新規レコードを生成する（ステップＳ１１）。この新規レコードは、出力ファイル（集計ファイル）中の時系列レコード（論理的にプライマリキーの昇順に並んだレコード）の中で、そのプライマリキーが該当する時系列位置に挿入する（ステップＳ１２）。例えば、図５（ａ）に示すような入力レコード６０に基づいて、新規レコード４５を生成し、この新規レコード４５を集計ファイル４２の中の時系列的に該当する位置に挿入する。
【００７０】
次に、挿入した新規レコード４５のプライマリキーを基に、この新規レコード４５に対し時系列的に前となるレコードを読み出す（ステップＳ１３）。そして、この前レコードが、新規レコードと同一の累計グループであるか否かを判定する（ステップＳ１４）。すなわち、「得意先cd」が一致するか否かを判定する。そして、同一の累計グループではない場合（ステップＳ１４、ＮＯ）には、ステップＳ８の処理に移る。
【００７１】
一方、上記前レコードが同一の累計グループである場合は（ステップＳ１４、ＹＥＳ）、続いて、新規レコードのプライマリキーと前レコードのプライマリキーとが時系列的に不連続であるか否かを判定する（ステップＳ１５）。
【００７２】
不連続ではない場合は（ステップＳ１５、ＮＯ）、新規レコードの累計フィールドの値（ステップＳ１１で“０”にしてある）を更新する（ステップＳ２２）。この更新処理は、前レコードにおける累計フィールド（月初売掛金額）の値と累計対象（月度売上金額）の値とを加算した値を、新規レコードの累計フィールド（月初売掛金額）の更新値とする処理である。この更新処理後、ステップＳ８の処理に移る。
【００７３】
不連続である場合は（ステップＳ１５、ＹＥＳ）、図５（ａ）に示すような“歯抜け”が存在することになる。すなわち、図５（ａ）に示すように、新規レコード４５のプライマリキーが「“0002”, “94/07 ”」であり、その前レコード４４のプライマリキーが「“0002”, “94/05 ”」である場合は、集計ファイル４２において“歯抜け”が存在することになる。
【００７４】
この場合、まず最初に、“歯抜け”レコード数を意味する変数ｎを“１”とする（ステップＳ１６）。次に、“歯抜け”を埋めるために新たに追加する追加レコードのプライマリキーを生成する（ステップＳ１７）。ここで、図２のパラメータで「レコード追加」の項目に対して設定された“年月度ym”が、追加レコード生成に用いられる。すなわち、前レコード４４の“年月度ym”の値をキー値として、このキー値に変数ｎ（初期値は“１”）を加算することで、追加レコードのプライマリキーを生成する。図５に示す例では、前レコード４４のキー値“94/05 ”に“１”を加算して“94/06 ”とし、更に累計グループは新規レコードと同一とすることで、追加レコードのプライマリキー「“0002”, “94/06 ”」を生成する。
【００７５】
そして、この追加レコードのプライマリキーと新規レコードのプライマリキーとが一致するか否かを判定する（ステップＳ１８）。この判定は、“歯抜け”レコードが複数存在する場合も想定した処理であり、一致するものと判定された（ステップＳ１８、ＹＥＳ）時点で、“歯抜け”レコードが存在しなくなったものと判別して、新規レコードの累計フィールドの更新を行い（ステップＳ２２）、その後ステップＳ８の処理に移る。
【００７６】
一致しないものと判定された場合は（ステップＳ１８、ＮＯ）、上記ステップＳ１７で生成したプライマリキーの追加レコードを生成する（ステップＳ１９）。このとき生成する追加レコードの累計対象、累計フィールドは、共に“０”に設定しておく。次に、生成した追加レコードの累計フィールドの更新を行う（ステップＳ２０）。この更新処理は、前レコードにおける累計フィールド（月初売掛金額）の値と累計対象（月度売上金額）の値とを加算した値を、追加レコードの累計フィールド（月初売掛金額）の更新値とする処理である。
【００７７】
以上述べたステップＳ１６〜ステップＳ２０の処理によって、図５（ｂ）に示す例では、プライマリキーが「“0002”, “94/06 ”」、累計フィールド（月初売掛金額）の値が“75,000”、累計対象（月度売上金額）の値が“０”の追加レコード４６が自動追加される。これより、図５（ｂ）に示す例では、集計ファイル４３に“歯抜け”レコードが無くなることになる。
【００７８】
続いて、上記変数“ｎ”の値に“１”を加えて（ステップＳ２１）、ステップＳ１７に戻る。ステップＳ１７において、今度は、前レコードのキー値に“２”を加算してプライマリキーを生成する処理を行うことになる。すなわち、上記生成した追加レコードから昇順に次となるレコードのプライマリキーを生成する。そして、次のステップＳ１８において、生成したプライマリキーが新規レコードのプライマリキーと一致した場合は、新規レコードの累計フィールドの更新を行う（ステップＳ２２）。一致しない場合は、新規レコード挿入時に“歯抜け”レコードが２つ以上あった場合であり、全ての“歯抜け”レコードに対して追加レコードが生成されるまで、上記ステップＳ１７〜ステップＳ２１の処理を繰り返す。
【００７９】
上記したレコード追加処理を行うことで、時系列レコードが時系列順に格納されている時系列ファイル（例えば集計ファイル）内に、入力ファイル（変動ファイル）に基づく新規のレコードを挿入した際に、該新規レコードが時系列的に前のレコードと不連続となり、上記時系列ファイルに歯抜けが生じた場合であっても、時系列的に連続させるように追加レコードを自動生成して、該追加レコードを上記時系列ファイルに追加することで、上記時系列ファイルに格納されるレコードの時系列的な連続性を保つことができる。
【００８０】
尚、上記実施例では、変動ファイルのレコードにより集計ファイルを更新するものとしたが、これに限るものではない。例えば、マスタファイルのレコードにより集計ファイルを更新するものであっても良い。
【００８１】
また、上記実施例では、「レコード追加」の条件として“年月度ym”のフィールドを指定するようにしていたが、これに限るものではなく、複数のフィールドを指定できるものであっても良い。また、「レコード追加」の条件の指定は、数値フィールドであっても文字フィールドであっても良い。さらに、「レコード追加」の条件を指示する際、追加レコード生成時の生成条件を付加するようにしてもよく、この場合、外部から、その条件を指定できるようにしても良い。
【００８２】
更に、追加レコードとして“年月度ym”に順次“１”を加算するようにしていたが、これに限るものではなく、例えば偶数月のレコードが時系列的に連続するファイルでは順次“２”を加算するようにしても良く、プライマリキーの増分値は、ファイルの構成に応じて任意であっても良い。
【００８３】
【発明の効果】
以上詳細に説明したように、本発明によれば、簡単なパラメータを設定するだけで、各種時系列ファイルに対する累計更新処理が行える。
【００８４】
また、時系列ファイル内にいわゆる“歯抜け”レコードが生じた場合にも、その“歯抜け”を補充するレコードを自動的に生成して、時系列ファイルに追加できるので、時系列ファイル内においてレコードが時系列的に不連続となることを防止できる。このため、例えば時系列ファイルを印刷して管理帳表を作成する場合にも、その管理帳票を同一フォーマットで出力することができる。
【図面の簡単な説明】
【図１】一実施例のファイル更新装置の構成図である
【図２】パラメータファイルに格納されているパラメータの一例を示す図である。
【図３】パラメータで指定される集計ファイルの一例を示す図である。
【図４】図３の集計ファイルの累計更新処理を示す図である。
【図５】図４の更新後の集計ファイルに対するレコード追加処理を示す図である。
【図６】ファイル更新処理を説明するフローチャート（その１）である。
【図７】ファイル更新処理を説明するフローチャート（その２）である。
【図８】従来のファイル更新処理を示す図である。
【図９】従来のファイル更新処理における“歯抜け”を示す図である。
【符号の説明】
１０  ファイル更新装置
１１  ＣＰＵ
１２  パラメータ解釈部
１３  パラメータメモリ
１４  パラメータファイル
１５  I/O 制御部
１６  集計ファイルデータベース
１７  集計処理部
１８  累計処理部
１９  追加処理部
２０  集計メモリ
３０  パラメータ
３６  情報表示画面
４０  集計ファイル
４１  集計ファイル（集計後）
４２  集計ファイル（累計更新後）
４３  集計ファイル（レコード追加後）
４４  前レコード
４５  新規レコード
４６  追加レコード
５０  変動レコード
６０  変動レコード
７０  変動レコード
８０  集計ファイル
８１  集計ファイル（集計後）
８１  集計ファイル（集計後）
９０  変動レコード
３０１  パラメータ設定画面の表示領域
３０２  パラメータ設定画面の入力領域
【図１】
0003820615.tif 000002
【図２】
0003820615.tif 000003
【図３】
0003820615.tif 000004
【図４】
0003820615.tif 000005
【図５】
0003820615.tif 000006
【図６】
0003820615.tif 000007
【図７】
0003820615.tif 000008
【図８】
0003820615.tif 000009
【図９】
0003820615.tif 000010