(57)【要約】【課題】会計システムなどの論理演算システムを多様体として捉え、この多様体に対する複数の論理入力、例えば複数のレコードを、多様体上に形成された個々の局所座標系（例えば個々の会計帳簿）毎に集計し、各局所座標系の論理出力（例えば個々の会計帳簿における集計結果）をリアルタイムで生成可能とする。【解決手段】論理入力に基づいて論理演算を行って、論理出力構造を有する演算結果を出力する論理演算方法において、複数の点からなる多様体Ｒｓ上に階層化された局所座標系ＬＣｏ、ＬＣｏ１、ＬＣｏ２が、該局所座標系に含まれる点の値が、該論理出力構造に含まれる変数となるよう定義され、メモリ空間ＭＳにこの定義された局所座標系の点が写像されており、該論理演算方法は、該論理入力を入力するステップと、該論理入力に基づいて、該メモリ空間ＭＳ上で、該写像した局所座標系の各点の値を逐次更新するステップとを含む。【選択図】図３４
2011132436.tif 000002
【特許請求の範囲】
【請求項１】
論理入力に基づいて論理演算を行って、論理出力構造を有する演算結果を出力する論理演算方法であって、
複数の点からなる多様体上に局所座標系が、該局所座標系に含まれる点の値が、該論理出力構造に含まれる変数となるよう定義され、
メモリ空間にこの定義された局所座標系の点が写像されており、
該論理演算方法は、
該論理入力を入力するステップと、
該論理入力に基づいて、該メモリ空間上で、該写像した局所座標系の各点の値を逐次更新するステップと
を含む、論理演算方法。
【請求項２】
請求項１に記載の論理演算方法において、
前記演算結果は、階層化された複数の論理出力構造を有し、
前記局所座標系を定義するステップは、
前記多様体上に、該階層化された複数の論理出力構造に対応する、階層化された複数の局所座標系を定義するステップを含み、
前記局所座標系の点をメモリ空間に写像するステップは、
前記定義された複数の局所座標系の点を、前記メモリ空間の各局所座標系に対応するメモリ領域に写像するステップを含み、
前記局所座標系の各点の値を逐次更新するステップは、
該メモリ領域に写像した複数の局所座標系の各点の値を、該論理入力に基づいて逐次更新するステップを含む、論理演算方法。
【請求項３】
請求項１に記載の論理演算方法において、
前記局所座標系毎に、前記論理入力から前記局所座標系の各点の値を導出するための関数が定義されている、論理演算方法。
【請求項４】
請求項３に記載の論理演算方法において、
前記局所座標系の各点の値を逐次更新するステップは、前記関数を含む決定性チューリングマシンにより、該局所座標系の各点の現在の値を、前記論理入力に応じた値を該局所座標系の各点の現在の値に加算した値に置き換えるステップを含む、論理演算方法。
【請求項５】
請求項４に記載の論理演算方法において、
前記決定性チューリングマシンは、前記論理入力に含まれる検索情報に基づいて、前記メモリ空間上に写像された局所座標系の複数の点のうちの、値を更新すべき各点の位置を検索する、論理演算方法。
【請求項６】
請求項５に記載の論理演算方法において、
前記論理出力構造では、
前記局所座標系の各点が、１つのバイナリーサーチツリーのノードに割り当てられており、
前記決定性チューリングマシンは、該バイナリーサーチツリーを用いて、前記局所座標系の更新すべき各点の位置を検索する、論理演算方法。
【請求項７】
請求項４に記載の論理演算方法において、
前記関数は、前記論理入力に対する演算結果を、該論理入力に含まれる値と、前記論理出力構造における対応する変数の値とを加算して求める再帰差分方程式である、論理演算方法。
【請求項８】
請求項４記載の論理演算方法において、
前記チューリングマシンは、前記局所座標系毎に、各局所座標系に対応する状態遷移表あるいは状態遷移図により定義され、前記メモリ領域の任意の位置に対するデータの参照、更新、および追加を行う基本機能を有しており、
該状態遷移表あるいは状態遷移図は、該チューリングマシンの現状態、該チューリングマシンが現状態で処理を行うための条件、該チューリングマシンが現状態で行う処理の内容、該チューリングマシンの次状態を表す、論理演算方法。
【請求項９】
請求項８記載の論理演算方法において、
前記多様体を構成する複数の点は、会計システムにおける演算項目に対応し、
前記複数の局所座標系は、該会計システムを構成する種々の会計帳簿に対応し、
該局所座標系の各点の値を逐次更新するステップは、
該会計システムの種々の演算項目に関する情報を含む論理入力がレコードとして入力される度に、種々の会計帳簿毎に、対応する演算項目の集計結果を、該論理入力に対する論理出力として出力するステップを含む、論理演算方法。
【請求項１０】
請求項９記載の論理演算方法において、
前記種々の会計帳簿は、試算表、預金元帳、および固定資産台帳である、論理演算方法。
【請求項１１】
請求項８記載の論理演算方法において、
前記多様体を構成する複数の点は、統計システムにおける複数の演算項目に対応し、
前記複数の演算項目は、２以上の変数を含む論理入力が複数回入力されたときの、同一の変数に対する分散、および異なる２つの変数に対する共分散であり、
前記局所座標系の各点の値を逐次更新するステップは、
該論理入力が入力される度に、該同一の変数に対する分散、および該異なる２つの変数に対する共分散を逐次更新するステップを含む、論理演算方法。
【請求項１２】
論理入力に基づいて論理演算を行って、論理出力構造を有する演算結果を出力する論理演算システムであって、
複数の点からなる多様体上に局所座標系が、該局所座標系に含まれる点の値が、該論理出力構造に含まれる変数となるよう定義され、
メモリ空間にこの定義された局所座標系の点が写像されており、
該論理演算システムは、
該論理入力を入力する入力部と、
該論理入力に基づいて、該メモリ空間上で、該写像した局所座標系の各点の値を逐次更新する演算部と
を含む、論理演算システム。
【請求項１３】
論理入力に基づいて論理演算を行って、論理出力構造を有する演算結果を出力する論理演算処理を、コンピュータに実行させるための論理演算プログラムであって、
複数の点からなる多様体上に局所座標系が、該局所座標系に含まれる点の値が、該論理出力構造に含まれる変数となるよう定義され、
メモリ空間にこの定義された局所座標系の点が写像されており、
該論理演算処理は、
該論理入力を入力するステップと、
該論理入力に基づいて、該メモリ空間上で、該写像した局所座標系の各点の値を逐次更新するステップと
を含む、論理演算プログラム。
【請求項１４】
請求項１３に記載の論理演算プログラムを格納したコンピュータ読取可能な記録媒体。
【請求項１５】
プログラムを状態遷移図あるいは状態遷移表から自動生成するプログラム自動生成方法であって、
該状態遷移図あるいは状態遷移表が示す第１の情報から中間情報である第２〜第４の情報を作成するステップと、
該第２〜第４の情報に基づいて、該プログラムのソースコードを生成するステップとを含む、プログラム自動生成方法。
【請求項１６】
請求項１５に記載のプログラム自動生成方法において、
前記第１の情報は、コンピュータが、どの状態のときに、どの入力があると、どの処理を行って、どの状態に遷移するかを示す情報であり、
前記第２〜第４の情報を作成するステップは、
該第１の情報に含まれる現状態と処理条件とを示す情報に基づいて、該コンピュータが現状態でどれだけの条件を判定するかを示す情報を該第２の情報として作成するステップと、
該第１の情報に含まれる条件内容と次状態とを示す情報に基づいて、該コンピュータがどのような条件でどれだけの処理を行って次の状態に移るかを示す情報を該第３の情報として作成するステップと、
該第１の情報に含まれる条件の判断と処理の実行の順序を示す情報に基づいて、該コンピュータが判断する条件と該コンピュータが実行する処理とを順に示す情報として、該第４の情報を作成するステップとを含む、プログラム自動生成方法。
【請求項１７】
請求項１６に記載のプログラム自動生成方法において、
前記ソースコードを生成するステップは、
該第２及び３の情報に基づいて、前記コンピュータの各状態への遷移を示すソースコードを生成するステップと、
該第４の情報に基づいて、該コンピュータが実行する前記条件及び前記処理を示すソースコードを生成するステップとを含む、プログラム自動生成方法。
【請求項１８】
プログラムを状態遷移図あるいは状態遷移表から自動生成するプログラム自動生成装置であって、
該状態遷移図あるいは状態遷移表が示す第１の情報から中間情報である第２〜第４の情報を作成する中間情報作成部と、
該第２〜第４の情報に基づいて、該プログラムのソースコードを生成するソースコード作成部とを含む、プログラム自動生成装置。
【請求項１９】
プログラムを状態遷移図あるいは状態遷移表から自動生成するプログラム自動生成処理を、コンピュータにより行うためのプログラム自動生成プログラムであって、
該プログラム自動生成処理は、
該状態遷移図あるいは状態遷移表が示す第１の情報から中間情報である第２〜第４の情報を作成するステップと、
該第２〜第４の情報に基づいて、該プログラムのソースコードを生成するステップとを含む、プログラム自動生成プログラム。
【請求項２０】
請求項１９に記載のプログラム自動生成プログラムを格納したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理演算方法、論理演算システム、論理演算プログラムに関し、特に、会計システムなどの論理演算システムを多様体として捉え、この多様体に対する複数の論理入力（レコード）を、多様体上に階層的に形成された個々の局所座標系（個々の会計帳簿）毎に集計し、各局所座標系の論理出力（例えば個々の会計帳簿における集計結果）をリアルタイムで生成する論理演算方法、論理演算装置、論理演算プログラム、及び論理演算プログラムを格納した記録媒体に関するものである。【０００２】
このような本発明の本質は知識構造化プログラミングであり、多様体の中に階層化された局所座標系を定義すること（知識構造化）と、定義された局所座標系の値をチューリングマシンにより逐次更新すること（プログラミング）とを組み合わせたものである。【０００３】
さらには、本発明は、要求される論理演算システムをコンピュータ上に構築するためのプログラムを、この論理演算システムを定義する仕様書から得られる状態遷移図あるいは状態遷移表に基づいて自動生成するプログラム自動生成方法、プログラム自動生成装置、プログラム自動生成プログラム、及びプログラム自動生成プログラムを格納した記録媒体に関するものである。
【背景技術】
【０００４】
従来、複数のレコード（論理入力）を自動的に集計する方法としては、複数のレコードを一旦バッファに蓄積し、キー項目に従って複数のレコードをソートすることによって複数のレコードを集計する方法が知られている。【０００５】
しかし、このような方法によれば、集計すべきレコードの数が増大するにつれて、（１）大きなサイズのバッファを用意する必要がある、（２）複数のレコードをソートするのに長い時間がかかる、という問題点があった。【０００６】
特に、インターネットが普及した今日にあっては、全世界から何千万件ものレコードが集計センタのコンピュータに蓄積される事態が想定される。このような場合に、従来の方法を適用したのでは、その何千万件ものレコードを集計するのに膨大な時間がかかることになる。【０００７】
そこで、このような問題点を解決した集計方法として、特許文献１に開示のものがある。【０００８】
この特許文献１に開示の自動集計方法は、入力されたレコードの内容を示すノードを有する階層型ツリーをコンピュータ内で成長させるものである。つまり、この特許文献１に開示の方法は、複数のレコードの１つをコンピュータに入力する第１のステップと、該階層型ツリーの、入力されたレコードに含まれるキー項目に対応する位置において、入力されたレコードの内容を示す少なくとも１つのノードを追加する第２のステップと、入力されたレコードに含まれる数値に従って、階層型ツリーに追加された少なくとも１つのノードの値と階層型ツリーに追加された少なくとも１つのノードより上位の階層のノードの値とを更新する第３のステップとを含み、複数のレコードの最後のレコードに至るまで、第１〜第３のステップを繰り返すことにより、該階層型ツリーが有する情報に基づいて、キー項目ごとの集計結果を出力するものである。【０００９】
このように、複数のレコードを集計する方法において、入力されたレコードの内容が階層ツリーに追加されると同時にノードの値が更新され、キー項目ごとの集計結果が、特定の階層のノードの値として得られるようにすることで、レコードの入力と同時に、入力されたレコードが入力済みレコードに対してソートされることとなり、集計すべきレコードの数が膨大である場合でもそれらのレコードを瞬時に集計することを可能としている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００１−３４４５５８号公報（特許第３２３０６７７号明細書）
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記特許文献１に記載の集計システムは、予め設計されたプログラムによってコンピュータ内に構築されたものであり、このような集計システムを実現するプログラムの開発には、特にデバグ処理などに時間がかかるという問題がある。【００１２】
また、上記特許文献１に記載の集計システムでは、入力された複数のレコードの集計結果は、店舗、商品、及び注文個数を項目として含む１つの論理出力として得られるにすぎず、例えば、会計システムを多様体として捉えたときの局所座標系としての試算表、預金元帳、固定資産台帳などといった異なる論理出力構造（異なる帳簿）毎に集計することはできない。【００１３】
言い換えると、この特許文献１では、１つの集計システムが、複数のレコード（会計伝票）に対する論理出力として、例えば、預金元帳が得られるよう設計されている場合、この集計システムでは、預金元帳は、レコードの入力の度にリアルタイムで更新されることとなるが、入力されるレコード（会計伝票）により更新されるべき試算表や固定資産台帳といった他の帳簿は、別の集計システムで作成する必要がある。このため、入力された複数のレコードの集計データを、会計システムの種々の帳簿毎にリアルタイムで集計することはできないという問題がある。【００１４】
本発明は、上記のような問題点を解決するためになされたもので、会計システムなどの論理演算システムを多様体として捉え、この多様体に対する複数の論理入力、例えば複数のレコードを、多様体上に形成された個々の局所座標系（例えば個々の会計帳簿）毎に集計し、各局所座標系の論理出力（例えば個々の会計帳簿における集計結果）をリアルタイムで生成することができる論理演算方法、論理演算装置、論理演算プログラム、及び論理演算プログラムを格納した記録媒体を得ることを目的とする。【００１５】
また、本発明は、要求される論理演算システムをコンピュータ上に構築するプログラムを、この論理演算システムを定義する仕様書から得られる状態遷移図あるいは状態遷移表に基づいて自動生成するプログラム自動生成方法、プログラム自動生成装置、プログラム自動生成プログラム、及びプログラム自動生成プログラムを格納した記録媒体を得ることを目的とする。
【課題を解決するための手段】
【００１６】
本発明に係る論理演算方法は、論理入力に基づいて論理演算を行って、論理出力構造を有する演算結果を出力する論理演算方法であって、複数の点からなる多様体上に局所座標系が、該局所座標系に含まれる点の値が、該論理出力構造に含まれる変数となるよう定義され、メモリ空間にこの定義された局所座標系の点が写像されており、該論理演算方法は、該論理入力を入力するステップと、該論理入力に基づいて、該メモリ空間上で、該写像した局所座標系の各点の値を逐次更新するステップとを含むものであり、そのことにより上記目的が達成される。【００１７】
本発明は、上記論理演算方法において、前記演算結果は、階層化された複数の論理出力構造を有し、前記局所座標系を定義するステップは、前記多様体上に、該階層化された複数の論理出力構造に対応する、階層化された複数の局所座標系を定義するステップを含み、前記局所座標系の点をメモリ空間に写像するステップは、前記定義された複数の局所座標系の点を、前記メモリ空間の各局所座標系に対応するメモリ領域に写像するステップを含み、前記局所座標系の各点の値を逐次更新するステップは、該メモリ領域に写像した複数の局所座標系の各点の値を、該論理入力に基づいて逐次更新するステップを含むことが好ましい。【００１８】
本発明は、上記論理演算方法において、前記局所座標系毎に、前記論理入力から前記局所座標系の各点の値を導出するための関数が定義されていることが好ましい。【００１９】
本発明は、上記論理演算方法において、前記局所座標系の各点の値を逐次更新するステップは、前記関数を含む決定性チューリングマシンにより、該局所座標系の各点の現在の値を、前記論理入力に応じた値を該局所座標系の各点の現在の値に加算した値に置き換えるステップを含むことが好ましい。【００２０】
本発明は、上記論理演算方法において、前記決定性チューリングマシンは、前記論理入力に含まれる検索情報に基づいて、前記メモリ空間上に写像された局所座標系の複数の点のうちの、値を更新すべき各点の位置を検索することが好ましい。【００２１】
本発明は、上記論理演算方法において、前記論理出力構造では、前記局所座標系の各点が、１つのバイナリーサーチツリーのノードに割り当てられており、前記決定性チューリングマシンは、該バイナリーサーチツリーを用いて、前記局所座標系の更新すべき各点の位置を検索することが好ましい。【００２２】
本発明は、上記論理演算方法において、前記関数は、前記論理入力に対する演算結果を、該論理入力に含まれる値と、前記論理出力構造における対応する変数の値とを加算して求める再帰差分方程式であることが好ましい。【００２３】
本発明は、上記論理演算方法において、前記チューリングマシンは、前記局所座標系毎に、各局所座標系に対応する状態遷移表あるいは状態遷移図により定義され、前記メモリ領域の任意の位置に対するデータの参照、更新、および追加を行う基本機能を有しており、該状態遷移表あるいは状態遷移図は、該チューリングマシンの現状態、該チューリングマシンが現状態で処理を行うための条件、該チューリングマシンが現状態で行う処理の内容、該チューリングマシンの次状態を表すことが好ましい。【００２４】
本発明は、上記論理演算方法において、前記多様体を構成する複数の点は、会計システムにおける演算項目に対応し、前記複数の局所座標系は、該会計システムを構成する種々の会計帳簿に対応し、該局所座標系の各点の値を逐次更新するステップは、該会計システムの種々の演算項目に関する情報を含む論理入力がレコードとして入力される度に、種々の会計帳簿毎に、対応する演算項目の集計結果を、該論理入力に対する論理出力として出力するステップを含むことが好ましい。【００２５】
本発明は、上記論理演算方法において、前記種々の会計帳簿は、試算表、預金元帳、および固定資産台帳であることが好ましい。【００２６】
本発明は、上記論理演算方法において、前記多様体を構成する複数の点は、統計システムにおける複数の演算項目に対応し、前記複数の演算項目は、２以上の変数を含む論理入力が複数回入力されたときの、同一の変数に対する分散、および異なる２つの変数に対する共分散であり、前記局所座標系の各点の値を逐次更新するステップは、該論理入力が入力される度に、該同一の変数に対する分散、および該異なる２つの変数に対する共分散を逐次更新するステップを含むことが好ましい。【００２７】
本発明に係る論理演算システムは、論理入力に基づいて論理演算を行って、論理出力構造を有する演算結果を出力する論理演算システムであって、複数の点からなる多様体上に局所座標系が、該局所座標系に含まれる点の値が、該論理出力構造に含まれる変数となるよう定義され、メモリ空間にこの定義された局所座標系の点が写像されており、該論理演算システムは、該論理入力を入力する入力部と、該論理入力に基づいて、該メモリ空間上で、該写像した局所座標系の各点の値を逐次更新する演算部とを含み、そのことにより上記目的が達成される。【００２８】
本発明に係る論理演算プログラムは、論理入力に基づいて論理演算を行って、論理出力構造を有する演算結果を出力する論理演算処理を、コンピュータに実行させるための論理演算プログラムであって、複数の点からなる多様体上に局所座標系が、該局所座標系に含まれる点の値が、該論理出力構造に含まれる変数となるよう定義され、メモリ空間にこの定義された局所座標系の点が写像されており、該論理演算処理は、該論理入力を入力するステップと、該論理入力に基づいて、該メモリ空間上で、該写像した局所座標系の各点の値を逐次更新するステップとを含みそのことにより上記目的が達成される。【００２９】
本発明に係る記録媒体は、上述した本発明に係る論理演算プログラムを格納したコンピュータ読取可能な記録媒体であり、そのことにより上記目的が達成される。【００３０】
本発明に係るプログラム自動生成方法は、プログラムを状態遷移図あるいは状態遷移表から自動生成するプログラム自動生成方法であって、該状態遷移図あるいは状態遷移表が示す第１の情報から中間情報である第２〜第４の情報を作成するステップと、該第２〜第４の情報に基づいて、該プログラムのソースコードを生成するステップとを含み、そのことにより上記目的が達成される。【００３１】
本発明は、上記プログラム自動生成方法において、前記第１の情報は、コンピュータが、どの状態のときに、どの入力があると、どの処理を行って、どの状態に遷移するかを示す情報であり、前記第２〜第４の情報を作成するステップは、該第１の情報に含まれる現状態と処理条件とを示す情報に基づいて、該コンピュータが現状態でどれだけの条件を判定するかを示す情報を該第２の情報として作成するステップと、該第１の情報に含まれる条件内容と次状態とを示す情報に基づいて、該コンピュータがどのような条件でどれだけの処理を行って次の状態に移るかを示す情報を該第３の情報として作成するステップと、該第１の情報に含まれる条件の判断と処理の実行の順序を示す情報に基づいて、該コンピュータが判断する条件と該コンピュータが実行する処理とを順に示す情報として、該第４の情報を作成するステップとを含むことが好ましい。【００３２】
本発明は、上記プログラム自動生成方法において、前記ソースコードを生成するステップは、該第２及び３の情報に基づいて、前記コンピュータの各状態への遷移を示すソースコードを生成するステップと、該第４の情報に基づいて、該コンピュータが実行する前記条件及び前記処理を示すソースコードを生成するステップとを含むことが好ましい。【００３３】
本発明に係るプログラム自動生成装置は、プログラムを状態遷移図あるいは状態遷移表から自動生成するプログラム自動生成装置であって、該状態遷移図あるいは状態遷移表が示す第１の情報から中間情報である第２〜第４の情報を作成する中間情報作成部と、該第２〜第４の情報に基づいて、該プログラムのソースコードを生成するソースコード作成部とを含み、そのことにより上記目的が達成される。【００３４】
本発明に係るプログラム自動生成プログラムは、プログラムを状態遷移図あるいは状態遷移表から自動生成するプログラム自動生成処理を、コンピュータにより行うためのプログラム自動生成プログラムであって、該プログラム自動生成処理は、該状態遷移図あるいは状態遷移表が示す第１の情報から中間情報である第２〜第４の情報を作成するステップと、該第２〜第４の情報に基づいて、該プログラムのソースコードを生成するステップとを含み、そのことにより上記目的が達成される。【００３５】
本発明に係る記録媒体は、上述した本発明に係るプログラム自動生成プログラムを格納したコンピュータ読取可能な記録媒体であり、そのことにより上記目的が達成される。
【発明の効果】
【００３６】
以上のように、本発明によれば、会計システムなどの論理演算システムを多様体として捉え、この多様体に対する複数の論理入力、例えば複数のレコードを、多様体上に形成された個々の局所座標系（例えば個々の会計帳簿）毎に集計し、各局所座標系の論理出力（例えば個々の会計帳簿における集計結果）をリアルタイムで生成することができるという効果がある。【００３７】
また、本発明によれば、要求される論理演算システムをコンピュータ上に構築するプログラムを、この論理演算システムを定義する仕様書から得られる状態遷移図あるいは状態遷移表に基づいて自動生成することができるという効果がある。
【図面の簡単な説明】
【００３８】
【図１】図１は、本発明の実施の形態によるコンピュータシステム１を説明する図であり、その全体構成の一例を示す図であり、図（ａ）は、その全体構成の一例を示し、図（ｂ）は、ホストコンピュータ３の構成の一例を示す。
【図２】図２は、上記ホストコンピュータ３内に構築されているリアルタイム演算システムの構成を説明する図であり、一例として会計システムおよび売買システムを含むものを示している。
【図３Ａ】図３Ａは、上記会計システムの論理出力構造を示す図である。
【図３Ｂ】図３Ｂは、この会計システム１００の機能ブロックを概念的に示す図である。
【図３Ｃ】図３Ｃは、この会計システム１００の処理が高速万能チューリングマシンにより行われる様子を示す図である。
【図３Ｄ】図３Ｄは、上記会計システムの論理入力を示す図である。
【図３Ｅ】図３Ｅは、会計帳簿体系Ａｃｓを示す図である。
【図３Ｆ】図３Ｆは、勘定科目マスターを示す図である。
【図４】図４は、ＢＳＴの作成方法を処理順（図（ａ）〜図（ｆ））に説明する図である。
【図５】図５は、上記会計システムの論理出力が、論理入力である３件の伝票データの入力により更新される様子を説明する図であり、図５（ａ）は、上記会計システムに含まれる試算表、預金元帳、固定資産台帳の初期状態を示し、図５（ｂ）は、１件目の伝票処理後の解（論理出力の状態）を示している。
【図６】図６は、上記会計システムの論理出力が、論理入力である３件の伝票データの入力により更新される様子を説明する図であり、図６（ａ）は、２件目の伝票処理後の解（論理出力の状態）を示し、図６（ｂ）は、３件目の伝票処理後の解（論理出力の状態）を示している。
【図７】図７は、トランザクションの機能を説明する図であり、図７（ａ）はコンピュータの状態遷移表を示し、図７（ｂ）及び（ｃ）はそれぞれ、ローカル変数の定義及びグローバル変数の定義を示している。
【図８】図８は、カーネルの機能を説明する図であり、図８（ａ）は、コンピュータの状態遷移表を示し、図８（ｂ）は、ローカル変数の定義を示している。
【図９】図９は、会計システムに対する論理出力の更新機能を説明する図であり、図９（ａ）は、コンピュータの状態遷移表を示し、図９（ｂ）は、ローカル変数の定義を示し、図９（ｃ）はＫＤＢ５のアクセス定義２を示し、図９（ｄ）はＫＤＢ４のアクセス定義１を示している。
【図１０】図１０は、会計システムに対する試算表の論理出力の更新を説明する図であり、図１０（ａ）は、コンピュータの状態遷移表を示し、図１０（ｂ）は、ローカル変数の定義を示し、図１０（ｃ）は、試算表の構造ＳＴ１を示している。
【図１１】図１１は、試算表の構造定義を説明する図である。
【図１２】図１２は、試算表のアクセス定義を説明する図である。
【図１３】図１３は、試算表の基本変数を説明する図である。
【図１４】図１４は、会計システムに対する預金元帳の論理出力の更新を説明する図であり、図１４（ａ）は、コンピュータの状態遷移表を示し、図１４（ｂ）は、ローカル変数の定義ＬＶ５を示し、図１４（ｃ）は、預金元帳の構造ＳＴ２を示している。
【図１５】図１５は、ＫＤＢ２（預金元帳）のアクセス定義を説明する図であり、図１５（ａ）は、アクセス定義１（参照）を示し、図１５（ｂ）は、アクセス定義２（更新）を示している。
【図１６】図１６は、会計システムに対する固定資産台帳の論理出力の更新を説明する図であり、図１６（ａ）は、コンピュータの状態遷移表を示し、図１６（ｂ）は、ローカル変数の定義ＬＶ６を示し、図１６（ｃ）は、固定資産台帳の構造ＳＴ６を示し、図１６（ｄ）は、固定資産台帳のアクセス定義ＡＤ６を示している。
【図１７】図１７は、関数（ＴＲＡＮＳＡＣＴＩＯＮ）を表す状態遷移表（表１）Ｔｓ１から、この状態遷移表が示す動作を行うプログラムを生成するための表２〜表４を作成する方法を説明する図である。
【図１８】図１８は、図１７で説明する方法により得られるプログラムのソースコードを示す図である。
【図１９】図１９は、関数（ＫＥＲＮＥＬ）を表す状態遷移表（表１）Ｔｓ２（図（ａ））から、この状態遷移表が示す動作を行うプログラムを生成するための表２〜表４（図（ｂ）〜（ｄ））を作成する方法を説明する図である。
【図２０】図２０は、図１９で説明する方法により得られるプログラムのソースコードを示す図である。
【図２１】図２１は、関数（ＡＣＣ＿ＵＰＤＡＴＥ）を表す状態遷移表（表１）Ｔｓ３（図（ａ））から、この状態遷移表が示す動作を行うプログラムを生成するための表２〜表４（図（ｂ）〜（ｄ））を作成する方法を説明する図である。
【図２２】図２２は、図２１で説明する方法により得られるプログラムのソースコードを示す図である。
【図２３】図２３は、関数（ＴＲＩＡＬ＿ＵＰＤＡＴＥ）を表す状態遷移表（表１）Ｔｓ４から、この状態遷移表が示す動作を行うプログラムを生成するための表２〜表４を作成する方法を説明する図であり、状態遷移表（表１）Ｔｓ４を示している。
【図２４】図２４は、関数（ＴＲＩＡＬ＿ＵＰＤＡＴＥ）を表す状態遷移表（表１）Ｔｓ４から、この状態遷移表が示す動作を行うプログラムを生成するための表２〜表４を作成する方法を説明する図であり、該表２〜表４（図（ａ）〜図（ｃ））を示している。
【図２５】図２５は、図２３および図２４で説明する方法により得られるプログラムのソースコードの前半部分を示す図である。
【図２６】図２６は、図２３および図２４で説明する方法により得られるプログラムのソースコードの後半部分を示す図である。
【図２７】図２７は、関数（Ｙｏｋｉｎ）を表す状態遷移表（表１）Ｔｓ５（図（ａ））から、この状態遷移表が示す動作を行うプログラムを生成するための表２〜表４（図（ｂ）〜（ｄ））を作成する方法を説明する図である。
【図２８】図２８は、図２７で説明する方法により得られるプログラムのソースコードを示す図である。
【図２９】図２９は、関数（Ｋｏｔｅｉ）を表す状態遷移表（表１）Ｔｓ６（図（ａ））から、この状態遷移表が示す動作を行うプログラムを生成するための表２〜表４（図（ｂ）〜（ｄ））を作成する方法を説明する図である。
【図３０】図３０は、図２７で説明する方法により得られるプログラムのソースコードを示す図である。
【図３１】図３１は、各状態遷移表（表１）Ｔｓ１〜Ｔｓ６から、各状態遷移表に対応する表２〜４を生成するフローに相当する手順を示す図である。
【図３２】図３２は、各状態遷移表（表１）Ｔｓ１〜Ｔｓ６に対応する表２〜４から、各状態遷移表に対応するプログラムを生成するフローに相当する手順を示す図である。
【図３３】図３３は、本実施形態２のプログラム自動生成装置を構成する図である。
【図３４】図３４は、本発明の基本原理を説明する図であり、図３４（ａ）は、会計全体に対応する多様体Ｒｓを示し、図３４（ｂ）〜（ｄ）は、多様体上に定義された個々の局所座標系を示し、図３４（ｅ）は、局所座標系の点をメモリー空間に写像した状態を示している。
【図３５】図３５は、試算表に設定されている検索用リンク情報（バイナリーサーチツリー）を説明する図である。
【図３６】図３６は、本発明の実施形態３による論理演算システムを説明する図であり、この演算システムで行う分散共分散の逐次計算のモデルを説明する図である。
【図３７】図３７は、本実施形態３による論理演算システムの動作を説明する図であり、分散共分散の逐次計算の具体例を示している。
【図３８】図３８は、本実施形態１の変形例による分散協調マルチエージェントシステム（以下、単にマルチエージェントシステムという。）の全体構成を概略的に示すブロック図である。
【図３９】図３９は、本実施形態１の変形例によるマルチエージェントシステムにおける試算表（論理出力構造）の更新をベクトル空間の更新として説明する図である。
【図４０】図４０は、本実施形態１およびその変形例の適用例として、決算整理におけるナレッジ・サイクル・イネーブリングを説明する図である。
【図４１】図４１は、精算表から貸借対照表を作成するナレッジ・サイクル・イネーブリングを説明する図である。
【図４２】図４２は、精算表から損益計算書を作成するナレッジ・サイクル・イネーブリングを説明する図である。
【図４３】図４３は、ＢＳインスタンスＲＳｃ’を示す図である。
【図４４】図４４は、ＰＬインスタンスＲＳｃ’を示す図である。
【図４５】図４５は、本発明の実施形態１による論理演算システムにおける入力データ（１００万件の会計伝票）を処理したときの処理時間を説明する図であり、図４５（ａ）は処理内容、図４５（ｂ）は処理時間を示している。
【図４６】図４６は、定義概念（オントロジー）の説明図であり、アメリカ合衆国政府が定義した貸借対照表に用いるべき項目のテーブルＤＣ１を示している。
【図４７】図４７は、定義概念（オントロジー）の説明図であり、アメリカ合衆国政府が定義した損益計算表に用いるべき項目のテーブルＤＣ２を示している。
【発明を実施するための形態】
【００３９】
まず、本発明の基本原理について説明する。
【００４０】
本発明は、会計システムや売買システムなどの論理演算システムを、時々刻々と変化する値を有する点の集合からなる多様体として捉え、この多様体に、ユーザ要求に応じた集計結果である複数の論理出力構造を、局所座標系として階層的に定義し、局所座標系の各点をメモリ空間に写像し、該メモリ空間上で局所座標系の各点の値を更新するものである。ここで、局所座標系の各点の値の更新は、要求仕様に応じた関数が組み込まれたチューリングマシンを用いて行われる。
【００４１】
これにより、この多様体に対する複数の論理入力（レコード）を、多様体上に階層的に形成された個々の局所座標系（個々の会計帳簿など）毎に集計し、各局所座標系の論理出力（例えば個々の会計帳簿における集計結果）をリアルタイムで生成することが可能となる。
【００４２】
このような基本原理の本質は、問題を場の理論を用いて解決する点にあり、つまりは、演算対象となる事象（問題）を、この事象に影響を与える要因（論理入力）により変化する値（場）を有する点の集合として捕らえ、演算対象である問題を個々の点に分解し、分解した点の値（基本変数）と、論理入力に含まれる、この基本変数に影響を与える入力値とを一対一に対応させ、論理入力が入るだびに、基本変数を、これと入力値とを対応付ける既定の関数に従って更新するというものである。
【００４３】
なお、場（ｆｉｅｌｄ）とは、空間の各点毎に定義されていて、時々刻々と変化する量（基本変数）である。言い換えると、場とは、空間座標ｒと時間座標ｔとを引数に持つ関数をいい、場の理論とは、場を基本変数とする量子論をいう。
【００４４】
本発明では、上述したように基本変数と入力値とを対応付ける既定の関数は、以下の実施形態で詳述するように、決定性チューリングマシンの機能を定義するものであり、上記論理出力構造における基本変数は、この決定性チューリングマシンにより更新される。
【００４５】
なお、決定性チューリングマシンは、論理入力に含まれる、各論理入力値に割り当てられているキー（つまりアドレス）に基づいて、メモリ空間上に写像された点を見つけ、この点の値（基本変数）を、論理入力に含まれる入力値により更新する。
【００４６】
従って、本発明は、あらゆる演算処理に適用できるものであり、どのような複雑な演算処理でも、所望とする論理出力構造を有する演算結果に応じて、演算対象となる問題を点の集合（基本変数の集合）に分解し、この基本変数と、論理入力に含まれる入力値とを一対一に対応付け、現在の基本変数に現在の入力値を加えるという構成により、演算の解を求めることができる。
【００４７】
信号処理などの例を挙げると、時間軸上で振幅レベルが変化する信号（入力データ）は、フーリエ変換などにより周波数スペクトル（論理出力構造を有する演算結果）に変換されるが、本発明では、この時間軸上で変化する信号の差分を入力として、周波数スペクトルをリアルタイムで求めることも可能である。
【００４８】
つまり、信号解析という問題を、信号の基本周波数及び第２〜第ｎ高調波という複数の周波数成分（変化する値を有する点）に分解し、信号の入力振幅レベルという入力データと各周波数成分の値（基本変数）とを再帰差分方程式により対応付けることにより、信号のフーリエ変換などの処理も、入力信号の振幅レベルの変化（差分）を入力として、信号の時間分解能に応じた時間を最小の処理単位としてリアルタイムで行うことができる。
【００４９】
また、このような本発明の場の理論を用いた演算システムは、これを実行するプログラムが正しいことを証明する必要はないことも大きな特徴である。
【００５０】
つまり、このような場の理論を用いた演算が正しいことについては、論理出力構造における基本変数と、論理入力における論理入力値とは一対一の対応であるため、チューリングマシンにより行う演算が正しいことを証明すればよいが、チューリングマシンによる演算は、再帰差分方程式（ｙ（ｎ）＝ｙ（ｎ−１）＋ｕ（ｎ））で行われ、この演算が正しいことは、数学的帰納法により証明されることから、本発明の場の理論を用いた演算システムを実行するプログラムが正しいことを個別に証明する必要はない。
【００５１】
さらには、複数の論理出力構造（局所座標系）が階層的に定義される演算結果については、局所座標系毎に異なる関数を含む決定性チューリングマシンの動作を重ねあわせることで、所望とする演算結果を得ることができる。
【００５２】
図３４は、本発明の基本原理を説明する図であり、図３４（ａ）は、会計全体に対応する多様体Ｒｓを示し、図３４（ｂ）〜（ｄ）は、多様体上に定義された個々の局所座標系を示し、図３４（ｅ）は、局所座標系の点をメモリー空間に写像した状態を示している。
【００５３】
図３４に示す多様体Ｒｓは、時々刻々と変化する演算対象値（基本変数）を有する複数の点Ｐｒｓから構成されている。
【００５４】
このような多様体Ｒｓでは、ユーザ要求が、会計システムの所定の項目に着目した集計結果を求めるというものである場合は、多様体Ｒｓを、会計上の計算の対象となるすべての演算対象値を有する点からなるものとして捕らえ、多様体Ｒｓ上に、例えば、ユーザ要求に応じた種々の会計帳簿として、局所座標系ＬＣｏ、ＬＣｏ１、ＬＣｏ２が定義される。
【００５５】
この場合、多様体を構成する点Ｐｒｓには、預金の残高、売掛金の残高、設備に対する投資額といった、時々刻々と変化する値を含む項目が該当することとなる。
【００５６】
従って、このような会計に相当する多様体Ｒｓにおいて、例えば、縦軸に、預金、売掛金、商品、建物、設備、借方計、売上、借入金、資本金、及び貸方計を設定し、横軸に、前月残、借方、貸方、及び残高を定義すると、図３Ａに示す会計帳簿（試算表）Ｓａである論理出力構造が局所座標系ＬＣｏとして定義される。
【００５７】
また、多様体Ｒｓにおいて、例えば、縦軸に、預金の合計、預金の前月残を設定し、さらに日付として８／１０、８／２０、８／２５、８／３１を伝票番号とともに設定し、横軸に、前月残、借方、貸方、及び残高を定義すると、図３Ａに示す会計帳簿（預金元帳）Ｓｂである論理出力構造が局所座標系ＬＣｏ１として定義される。
【００５８】
さらに、多様体Ｒｓにおいて、例えば、縦軸に、建物及び設備を資産番号とともに設定し、また、建物及び設備の小計を設定し、横軸に、前月残、借方、貸方、及び期末残を定義すると、図３Ａに示す会計帳簿（固定資産台帳）Ｓｃである論理出力構造が局所座標系ＬＣ０２として定義される。
【００５９】
ここで、図３４（ｂ）〜図３４（ｄ）は、多様体Ｒｓ上に定義した局所座標系ＬＣｏ、ＬＣｏ１、ＬＣｏ２を示しており、このような局所座標系ＬＣｏ、ＬＣｏ１、ＬＣｏ２の点をメモリ空間Ｍｓに写像し、各点の有する値を、このメモリ空間Ｍｓの、各局所座標系を写像した各メモリ領域Ａｃｏ、Ａｃｏ１、Ａｃｏ２の対応するアドレスに格納するようにする。
【００６０】
また、このメモリ空間Ｍｓには、会計帳簿体系Ａｃｓ（図３Ｅ）及び勘定科目マスターＡｍ（図３Ｆ）も格納されている。
【００６１】
このようにメモリ空間Ｍｓに上記局所座標系の各点の値を格納することで、各局所座標系の各点の値をチューリングマシンＴｍにより再帰的枚挙に更新可能となる。
【００６２】
また、チューリングマシンは、基本的には、現状態とその状態で入力された論理入力の入力値とに基づいて、該入力値により示されたメモリ空間上の位置の点が有する値（基本変数）を更新するものであるが、このチューリングマシンとしては、各局所座標系に応じてその機能が定義されたものが用いられる。また、チューリングマシンの機能は状態遷移図あるいは状態遷移表により定義される。
ここで、論理入力には、点の値である入力値だけでなく、その入力値を用いて更新すべき、論理出力構造における点の位置を示す情報（キー情報）も含んでおり、チューリングマシンは、このキー情報に基づいて、論理出力構造における更新すべき点を検出し、該検出した点の値を、入力値に基づいて更新する。
【００６３】
なお、以下の実施形態では、本発明の論理演算システムとして、会計システム及び分散共分散演算システムについて具体的に説明するが、本発明の論理演算システムは、上述したように、これらに限定されるものではなく、本発明は、論理入力に基づいてテーブル形式の演算結果を算出するものであれば、どのような論理演算システムであっても適用可能である。
【００６４】
以下、本発明の実施形態について図面を参照しながら説明する。
【００６５】
（実施形態１）
図１は、本発明の実施形態１によるコンピュータシステム１を説明する図であり、図１（ａ）は、その全体構成の一例を示す図である。
〔コンピュータシステム１の全体構成の説明〕
この実施形態１のコンピュータシステム１は、複数の端末コンピュータ２と、ホストコンピュータ３と、複数の端末コンピュータ２とホストコンピュータ３とを接続するネットワーク４とを含む。
【００６６】
ネットワーク４は、任意のネットワークであり得る。ネットワーク４は、例えば、インターネットである。あるいは、ネットワーク４を介することなく、複数の端末コンピュータ２とホストコンピュータ３とがケーブルなどの電気配線を介して直接的に接続されていてもよい。
【００６７】
複数の端末コンピュータ２のそれぞれは、例えば、店舗に設置される。図１に示される例は、１台の端末コンピュータ２が店舗Ａ１に設置され、もう１台の端末コンピュータ２が店舗Ａ２に設置され、他の１台の端末コンピュータ２が店舗Ａ３に設置されている例である。もちろん、ネットワーク４を介してホストコンピュータ３に接続される端末コンピュータ２の数は３に限定されるわけではない。任意のＮ（Ｎは２以上の整数）個の端末コンピュータ２がネットワーク４を介してホストコンピュータ３に接続され得る。
【００６８】
ホストコンピュータ３は、例えば、集計センタに設置される。
【００６９】
ここで、各店舗に設置された端末コンピュータ２は、商品が売れたとき、会計伝票をレコードとして１つずつホストコンピュータ３に送信するよう構成されている。ホストコンピュータ３は、各店舗の端末からレコードとして送信された会計伝票を受け取り、ホストコンピュータ３内に構築されている会計システムの全会計帳簿を更新するよう構成されている。
〔ホストコンピュータ３の説明〕
図１（ｂ）は、ホストコンピュータ３の構成の一例を示す。
【００７０】
ホストコンピュータ３は、ＣＰＵ３１と、主記憶装置３２と、ハードディスク装置（ＨＤＤ）３３と、ネットワークインタフェース部３４と、ユーザ入力部３６と、データ出力部３７とを含む。これらの構成要素３１〜３４、３６、３７は、例えば、バス３５を介して互いに接続されている。ユーザ入力部３６はキーボードやマウスなどの入力デバイスであり、データ出力部３７は、表示部およびプリンタ部などを含んでいる。
【００７１】
ＨＤＤ３３には、ホストコンピュータ３にてクライアントの要求するリアルタイム演算システムを構築するためのプログラム（演算プログラム）が予め格納されている。なお、この演算プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの任意のタイプのコンピュータ読み取り可能な記録媒体に記録され得る。そのような記録媒体に記録された演算プログラムは、周辺装置（例えば、ディスクドライブ）を介してＨＤＤ３３にロードされ得る。演算プログラムの一部またはデータの一部は、必要に応じて主記憶装置３２に移される。ＣＰＵ３１は、主記憶装置３２に高速にアクセスすることが可能である。
【００７２】
ここで、ＣＰＵ３１が、ＨＤＤ３３に格納されている演算プログラムを実行することによって、ホストコンピュータ３は、クライアントが要求するリアルタイム演算システム１０として機能する。
〔リアルタイム演算システム１０の説明〕
図２は、このリアルタイム演算システムの構成を説明する図である。
【００７３】
このリアルタイム演算システム（以下、単に演算システムともいう。）１０は、知識構造化プログラミングを使用してリアルタイム処理を行うシステムであって、このリアルタイム処理を行う時の障害時対応も考慮したシステム構成を有している。
【００７４】
この演算システム１０は、入力データ（論理入力）（図３Ｄ参照）に対応した関数や障害時に必要な関数を呼び出すカーネル１１と、取引，残高，データなどの内容の整合性を監視し、内部統制機能を果たす監視エージェント１２と、会計，売買などの業務に関する集計処理を行い、データの１件毎に知識データベースに解を出し、停止する業務機能部１００ａと、業務毎の複数の論理出力を階層的に全体として表現・格納する知識データベース２０と、知識データベース更新状態での値を、障害復旧などに使用する状態ログＤＬとして一定時間毎に格納する状態ログ格納部１４と、業務機能部で種々の局所座標系を定義する際に参照するマスター情報を格納するマスタ情報格納部１３とを有している。
【００７５】
ここで、業務機能部１００ａは、会計システム１００、売買システム１０１などの異なる演算システムを含んでおり、カーネル１１により、入力データの識別ＩＤに応じた演算システムが関数として呼び出されるようになっている。呼び出されたシステムは、その論理出力構造としての局所座標系がメモリ空間上に写像され、知識データベース２０が形成される。カーネル１１は、上記関数の呼び出しに加えて、定期的な監視エージェントの呼出し、種々の業務に関する集計処理の実行の階層化、並列化、分散化、及び協調を実現するものである。また、知識データベース２０は、集計処理の結果（演算結果）を証明付きの知識として知識共有を行うのに用いられる。
【００７６】
なお、上記クライアントが要求する演算システムは、会計システムや売買システムに限定されるものではなく、在庫管理システムや生産管理システム、さらにはテストや実験結果の集計システムなど、複数の論理入力を集計する演算処理を行って、その集計結果を論理出力として生成するものであればどのようなものでもよい。
〔会計システム１００の説明〕
図３Ａは、本実施形態１の会計システム１００の論理出力構造Ａｓを示しており、この論理出力構造Ａｓは、クライアントの要求する会計システム１００に基づいて設計されたものであり、知識データベース２０内に構築されている。
【００７７】
ここで、会計システム１００の論理出力構造Ａｓは、主要帳簿としての試算表Ｓａ、補助帳簿としての預金元帳Ｓｂ及び固定資産台帳Ｓｃの３つの帳簿を含んでおり、一例として、２００８年８月３１日時点での経営状態を示している。
〔各帳簿（論理出力構造）の説明〕
試算表Ｓａは、科目（勘定科目）としてエリアＦａ０に割り当てられた、預金Ｐａ１，売掛金Ｐａ２，商品Ｐａ３、建物Ｐａ４、設備Ｐａ５、借方計Ｐａ６、売上Ｐａ７、借入金Ｐａ８、資本金Ｐａ９、貸方計Ｐａ１０を含んでおり、それぞれの科目別に、前月残、借方、貸方、残高を格納するエリアＦａ１〜Ｆａ４が設けられている。
【００７８】
また、この試算表Ｓａは、図３４を用いて説明した局所座標系ＬＣｏ（図３４（ｂ）参照）に相当するものであり、預金Ｐａ１，売掛金Ｐａ２，商品Ｐａ３、建物Ｐａ４、設備Ｐａ５、借方計Ｐａ６、売上Ｐａ７、借入金Ｐａ８、資本金Ｐａ９、貸方計Ｐａ１０は、この局所座標系ＬＣｏの縦軸Ｙｏに離散的に定義されたＹ座標であり、また、前月残Ｆｂ１、借方Ｆｂ２、貸方Ｆｂ３、残高Ｆｂ４は、この局所座標系ＬＣｏの横軸Ｘｏに離散的に定義されたＸ座標である（図３Ａ参照）。
【００７９】
預金元帳Ｓｂは、日付、伝票番号、前残、借方、貸方、残高のエリアＦｂ０〜Ｆｂ５が設けられており、各エリアには、合計Ｐｂ１、前月残Ｐｂ２に対応する金額に続いて、借方及び貸方に変化のあった日付Ｐｂ３〜Ｐｂ６である８／１０、８／２０、８／２５、８／３１における金額が格納されている。
【００８０】
また、この預金元帳Ｓｂは、図３４を用いて説明した局所座標系ＬＣｏ１（図３４（ｃ）参照）に相当するものであり、日付エリアＦｂ０に割り当てられた預金の合計Ｐｂ１、預金の前月残Ｐｂ２、さらに、日付Ｐｂ３〜Ｐｂ６として伝票番号Ｆｂ１とともに割り当てられた日付８／１０、８／２０、８／２５、８／３１は、この局所座標系ＬＣｏ１の縦軸Ｙｏ１に離散的に定義されたＹ座標であり、また、前月残Ｆｂ２、借方Ｆｂ３、貸方Ｆｂ４、及び残高Ｆｂ５は、この局所座標系ＬＣｏ１の横軸Ｘｏ１に離散的に定義されたＸ座標である（図３Ａ参照）。
【００８１】
固定資産台帳Ｓｃは、科目、資産番号、前期残、借方、貸方、期末残のエリアＦｃ０〜Ｆｃ５が設けられており、各エリアには、借方及び貸方に変化のあった、科目としての建物Ｐｃ１、Ｐｃ２及び設備Ｐｃ４の金額が、資産番号別に、建物及び設備の小計Ｐｃ３およびＰｃ５における金額とともに格納されている。
【００８２】
また、この固定資産台帳Ｓｃは、図３４を用いて説明した局所座標系ＬＣｏ２（図３４（ｄ）参照）に相当するものであり、建物（資産番号）Ｐｃ１，Ｐｃ２、設備（資産番号）Ｐｃ４、建物及び設備の小計Ｐｃ３、Ｐｃ５がこの局所座標系ＬＣｏ２の縦軸Ｙｏ２に離散的に定義されたＹ座標であり、前月残Ｆｃ２、借方Ｆｃ３、貸方Ｆｃ３、残高Ｆｃ４、期末残Ｆｃ５は、この局所座標系ＬＣｏ２の横軸Ｘｏ２に離散的に定義されたＸ座標である（図３Ａ参照）。
【００８３】
ここで、各帳簿の論理出力構造における各項目の各エリア、つまり局所座標系のＹ座標およびＸ座標で決まる点の値（金額）を格納する領域は、知識データベースの所定の記録領域（メモリ空間）Ｍｓに割り当てられている。
【００８４】
また、このメモリ空間Ｍｓには、上述したように、会計帳簿体系Ａｃｓ及び勘定科目マスターＡｍも格納されている。
【００８５】
ここで、会計帳簿体系Ａｃｓ（図３Ｅ）では、各会計帳簿Ｓａ、Ｓｂ、Ｓｃの階層関係が示されている。つまり、会計帳簿体系Ａｃｓは、会計システムＡｓの下層には試算表Ｓａが定義され、また、試算表Ｓａの下には預金元帳Ｓｂ及び固定資産台帳Ｓｃが定義されていることを、下層の会計帳簿に含まれる勘定科目のコードをキー値として示している。例えば、会計帳簿体系Ａｃｓにおける項目Ｎｏ．２には、論理出力（試算表）、キー値（１０００１）、対応する論理出力（預金元帳）と示されており、これは、勘定科目（預金）のコード（１０００１）により、試算表の下層には預金元帳が定義されていることを示している。
【００８６】
また、勘定科目マスターＡｍ（図３Ｆ）は、勘定科目名と勘定科目コードとの対応関係を示している。例えば、項目Ｎｏ．１の科目名（預金）には、勘定科目コード（１０００１）、貸借区分（１）、及び試算表表示順コード（１０１）が割り当てられている。
【００８７】
上記メモリ空間Ｍｓでは、図３Ａに示すテーブル形式で示す試算表Ｓａ、預金元帳Ｓｂ、固定資産台帳Ｓｃは、図６に示すようなツリー構造としてデータが管理されているが、さらに、各会計帳簿の項目間には、後述する検索用リンク情報（バイナリーサーチツリー）（図３５参照）が設定されている。
【００８８】
以下詳述すると、知識データベース内では、各帳簿は、会計全体を多様体としたときの、多様体上に形成された局所座標系として定義されており、具体的には、試算表Ｓａに対応するサイバーツリー構造ＢＴａには、図１１に示すように、局所座標系の座標キー（Ｙ軸上に割り当てられた項目を示すキー）と、場としての基本変数とが定義されている。ここで、基本変数を有する項目は、局所座標系におけるＸ軸上に前月残、借方、貸方、残高として割り当てられたものである。
【００８９】
つまり、本実施形態１の会計システム１００は、論理演算の対象となる複数の演算項目を含む論理入力（図３Ｄ）を受け、１以上の論理入力の演算項目に対する論理出力を、該複数の演算項目を分類する複数の項目グループのそれぞれ毎に演算する論理演算システムの一例であり、上記演算項目は上記勘定科目に対応し、各項目グループ（局所座標系）は試算表Ｓａ、預金台帳Ｓｂ、および固定資産台帳Ｓｃに対応している。
【００９０】
図３Ｂは、この会計システム１００の機能ブロックを概念的に示している。
【００９１】
この会計システム１００は、知識データベース（ＫＤＢ）２０を有しており、知識データベース２０には、各グループ（各会計帳簿）に対する論理出力を構造化した論理出力構造が構築されている。この論理出力構造は、すべての演算項目に対応する点からなる多様体上に、１以上の演算項目に対応する点からなる局所座標系を各グループ（各会計帳簿）に対応付けて定義して得られたものである。また、この会計システム１００では、該局所座標系を構成する点は、時々刻々と値が変化する１つの基本変数を有し、かつ論理出力としての基本変数と、この基本変数に変化を与える論理入力としての入力値との関係が演算関数として定義されている。
【００９２】
この会計システム１００は、１つの論理入力を受ける度に、各グループに対応する論理出力構造（各会計帳簿）における、該論理入力に含まれる演算項目に定義されている変数の更新値である論理出力を、該論理入力が示す該変数の値から、該変数に対応する演算関数に基づいて演算する演算部１２１と、演算された値を論理出力構造に格納する格納部１２２とを有している。
【００９３】
ここでは、上記知識データベース２０は、多様体上に定義された３つの局所座標系として、試算表Ｓａ、預金元帳Ｓｂ、および固定試算台帳Ｓｃの論理出力構造を有している。例えば、図３Ｃは、図３Ｂに示す演算部１２１および格納部１２２の機能を有する決定性チューリングマシン１２０を示しており、この決定性チューリングマシン１２０は、論理入力である会計伝票ファイルが入力されたとき、論理出力における各勘定科目に対応する変数の値を計算して、試算表Ｓａ、預金元帳Ｓｂ、固定資産台帳Ｓｃに対応する論理出力構造に、計算した値を格納するものである。
【００９４】
また、前記複数の演算項目（勘定科目）は、１つの局所座標系（試算表）を構成する点に対応する演算項目（預金Ｐａ１）が、他の局所座標系（預金元帳）を構成する複数の点に対応する複数の演算項目（前月残、８／１０、８／２０、８／２５、８／３０の勘定科目Ｐｂ２〜Ｐｂ６）に対応するよう、また１つの局所座標系（試算表）を構成する点に対応する演算項目（建物Ｐａ４）が、他の局所座標系（固定資産台帳）を構成する複数の点に対応する複数の演算項目（勘定科目の建物Ｐｃ１およびＰｃ２）に対応するよう階層的に分類されている。
【００９５】
また、上記各論理出力構造は、それぞれに対応するサイバーサーチツリー（図１１参照）ＢＴａに、各グループ（各会計帳簿）に含まれる演算項目（勘定科目）に対応するノードを追加して構築されている。
【００９６】
さらに、ここでは前記演算関数は、１つの演算項目に定義されている変数の更新値である論理出力が、該変数の更新前の値である現在の論理出力と、前記論理入力が示す、該１つの演算項目に対応する変数の値との和であることを示す再帰差分方程式である。
【００９７】
具体的には、この再帰差分方程式は、以下の式（１）により表される。
【００９８】
Ｙ（ｎ）＝Ｙ（ｎ−１）＋ｕ（ｎ）  ・・・（１）
ここで、Ｙ（ｎ）は更新された変数の値、Ｙ（ｎ−１）は更新前の変数の値、ｕ（ｎ）は論理入力に含まれる入力値（変数値）である。
【００９９】
例えば、局所座標系「試算表」における各点は、各勘定科目における４変数（前月残、借方、貸方、残高）のそれぞれに対応する。
【０１００】
上記（１）式を勘定項目の借方に適用すると、
最新の「借方」＝直前の「借方」  ＋  入力の「借方」
となる。
【０１０１】
勘定項目の他の変数である前月残,貸方,残高についても同じであり、借方計，貸方計についても上記の変数・式は同じで、集計の範囲が全借方科目，全貸方科目となる。
【０１０２】
さらに、前記複数の局所座標系の各々における、前記論理入力に対する論理出力の演算は、各局所座標系に対応する状態遷移表により定義されるチューリングマシンにより実行され、該チューリングマシンは、メモリ領域の任意の位置に対するデータの参照、更新、および追加を行う基本機能を有しており、該状態遷移表は、チューリングマシンの現状態、チューリングマシンが現状態で処理を行うための条件、チューリングマシンが現状態で行う処理の内容、チューリングマシンの次状態を表す。
【０１０３】
例えば、状態遷移表Ｔｓ４（図１０）により示される試算表の更新は、この状態遷移表により定義されるチューリングマシンにより行われる。
【０１０４】
つまり、状態遷移表で定義するアルゴリズムは、入力データの１件毎に知識データベース（論理出力構造）を構成する所要の局所座標系に解を出し停止するものであり、その具体的には後述する。
〔統合により共通書式とした会計伝票データ（論理入力）の説明〕
図３Ｄは、本実施形態１の会計システム１００の論理入力を示しており、この論理入力Ｌｉｎは、クライアントの要求する会計システム１００の論理出力構造に基づいて、振替伝票、出金伝票、振替伝票、売上伝票などの種々の伝票（物理入力）を統合したものである。
【０１０５】
具体的には、統合した会計伝票Ｌｉｎは、各種伝票（物理入力）から、論理出力を作成するのに必要な科目を取り出したものである。なお、このような物理入力としての各種伝票を、論理出力構造に適合した論理入力に変換する処理も、状態遷移表あるいは状態遷移図により定義されたチューリングマシンにより実行される処理である。
【０１０６】
図３Ｄに示す会計伝票データ（論理入力）Ｌｉｎは、項目（識別、伝票＃、日付、貸借、科目、金額、銀行、資産＃）を示すフォールドＬｄ１と、各項目に対応するＩＤ（ＩＤ，ＤＮＯ，ＤＡＴＥ，ＤＲＣＲ，ＡＣＣ，ＡＭＴ，ＢＡＮＫ，ＳＨＩＳＡＮ）を示すエリアＬｄ２と、各項目の属性（Ｘ、Ｘ、Ｘ、Ｘ、Ｘ、Ｎ、Ｘ、Ｘ）を示すエリアＬｄ３、各項目に対応するエリアに格納されるデータの桁数（４、４、８、１、５、６、４、４）を示すエリアＬｄ４と、各伝票データの上記各項目に対応する値を格納するエリアＬｄ５とを有している。
【０１０７】
例えば、図３Ｄに示す１件目〜３件目の伝票Ｄ１〜Ｄ３は、２００９年１０月３０日付けで発行された伝票である。具体的には、伝票Ｄ１は、伝票番号０００１を有し、２００００円を売上げ、売掛金２００００円が発生したことを示している。伝票Ｄ２は、伝票番号０００２を有し、売掛金２００００円が預金口座に振り込まれたことを示し、伝票Ｄ３は、伝票番号０００３を有し、預金口座の７０００円を設備投資に用いたことを示している。
【０１０８】
そして、図３Ｄに示す会計伝票データ（論理入力）Ｌｉｎは、これらの伝票データＤ１〜Ｄ３を統合して共通書式の会計伝票データとしたものであり、伝票Ｄ１〜Ｄ３のデータが、１つの伝票毎に、借方と貸方に分けてエリアＬｄ５に格納されている。
【０１０９】
ここで、このような論理入力が入力されたときに、チューリングマシンがメモリ空間上の、値（基本変数）を更新すべき点（アドレス）をどのように決定するかについて、図３５を用いて簡単に説明する。
【０１１０】
まず、準備段階工程として、起動時に、データベースなどにファイルデータとして格納されている勘定科目マスターＡｍ（図３Ｆ）がメモリ空間Ｍｓに読み込まれる。この際、メモリ空間Ｍｓに試算表Ｓａ、預金元帳Ｓｂ、及び固定資産台帳Ｓｃが形成されるととに、勘定科目マスターＡｍが形成される（図７のｒｔｎ＝ＡＣＣ＿ＬＯＡＤ参照）。試算表Ｓａについては、メモリ空間Ｍｓに、預金Ｐａ１〜貸方計Ｐａ１０までの１０行に相当する記憶領域が確保される。また、預金元帳Ｓｂについては合計Ｐｂ１の１行に相当する記憶領域が確保され、固定資産台帳Ｓｃについては、小計Ｐｃ３の１行に相当する記憶領域が確保される。また、勘定科目マスターＡｍ（図３Ｆ）については、預金から資本金までの第１行〜第８行に相当する情報がメモリ空間Ｍｓに記憶される。
【０１１１】
また、会計帳簿体系Ａｃｓ（図３Ｅ）については、図７に示す処理（ｒｔｎ＝ＡＣＣ＿ＬＯＡＤ）の次の処理（図７のｒｔｎ＝Ｌｉｎｋ＿ＬＯＡＤ）により、メモリ空間Ｍｓに第１行〜第４行に対応する情報が読み込まれる。
【０１１２】
ここで、試算表Ｓａの項目は図３Ａに示すとおりであるが、試算表Ｓａが作成される段階で、試算表Ｓａの項目を検索するためのリンク情報が図３５に示すように形成される。
【０１１３】
図３５は、試算表Ｓａを説明する図３Ａには示されていない検索用リンク情報（二分探索木テーブル）Ｓｔを示しており、図３Ａに示す試算表Ｓａには、実際は、この検索用リンク情報Ｓｔが付加されている。
【０１１４】
具体的には、図３５に示すテーブルＳｔの第１行目には、ルート情報に対する検索用リンク情報（Ｌｅｆｔ「２」、Ｒｉｇｈｔ「−１」）が格納されており、ルート情報は、図３Ｄに示す論理入力Ｌｉｎが入力されたときに、入力されたデータ（論理入力Ｌｉｎにおける入力値）が試算表のいずれの項目のデータであるかを判定するために、最初に比較する項目の番号を示している。
【０１１５】
図３５に示すテーブルの第２行目、及び第３行目には、図３Ａにおける借方計Ｐａ６に対する検索用リンク情報（Ｌｅｆｔ「５」、Ｒｉｇｈｔ「１０」）、及び貸方計Ｐａ１０に対する検索用リンク情報（Ｌｅｆｔ「１１」、Ｒｉｇｈｔ「−１」）が格納されている。
【０１１６】
さらに、図３５の第４行目〜第１１行目の情報は、図３Ａにおける預金Ｐａ１、売掛金Ｐａ２、商品Ｐａ３、建物Ｐａ４、設備Ｐａ５、売上Ｐａ７、借入金Ｐａ８、資本金Ｐａ９に対する検索用リンク情報が格納されている。また、第４行目〜第１１行目の情報には、勘定科目マスターＡｍにおける貸借区分と試算表表示順コードとを結合した結合コードが含まれている。
【０１１７】
例えば、第４行目の情報は、試算表Ｓａにおける預金Ｐａ１の値を検索する順序を示すものであり、貸借区分と試算表表示順コードとの結合コード「１１０１」とともに、検索用リンク情報（Ｌｅｆｔ「−１」、Ｒｉｇｈｔ「−１」）を示している。
【０１１８】
第５行目の情報は、試算表Ｓａにおける売掛金Ｐａ２の値を検索する順序を示すものであり、貸借区分と試算表表示順コードとの結合コード「１１０２」とともに、検索用リンク情報（Ｌｅｆｔ「４」、Ｒｉｇｈｔ「７」）を示している。
【０１１９】
ここで、第５行目の情報の検索用リンク情報（Ｌｅｆｔ「４」）は、入力データの勘定科目コードに対応する結合コード（貸借区分と試算表表示順コードとを結合したもの）が、第５行目の情報の結合コード「１１０２」より小さいときは、入力データの勘定科目コードに対応する結合コードを第４行目の情報の結合コードと比較すべきことを示している。また、第５行目の情報の検索用リンク情報（Ｒｉｇｈｔ「７」）は、入力データの勘定科目コードに対応する結合コード（貸借区分と試算表表示順コードとを結合したもの）が、第５行目の情報の結合コード「１１０２」より大きいときは、入力データの勘定科目コードに対応する結合コードを第７行目の情報の結合コードと比較すべきことを示している。
【０１２０】
具体的には、チューリングマシンは、実際にデータ（論理入力）Ｌｉｎ（図３Ｄ）の第１行目のデータ（売掛金：勘定項目コード（１０００２））が入力されると、作成された勘定科目マスターＡｍ（図３Ｆ）を参照して、勘定項目コード（１０００２）に対応する結合コード（１１０２）を検出し、この結合コード（１１０２）を、検索用リンク情報（二分探索木）Ｓｔの第１行目のルート情報に基づいて、第２行目の借方計に対応する分岐情報を参照し、データ（最大値）と比較する。この結果、この結合コード（１１０２）は結合コードの最大値よりは小さいので、左リンク（Ｌｅｆｔ「５」）に従って、入力データの連結コード（１１０２）を、検索用リンク情報（二分探索木）Ｓｔの第５行目の連結コード（１１０２）と大小比較を行う。この結果、入力データと検索用リンク情報とで結合コードが一致するので、この結合コードに対応する勘定項目（売掛金）の値を更新する。
【０１２１】
このとき、図１２に示すアクセス定義が用いられる。このアクセス定義Ｓｔ４ａのアクセス項目のキー項目（ＴＲＩＡＬ＿ＫＥＹ）に連結コード（１１０２）を入れると、数値項目として定義されている（前月残、借方、貸方、残高）に、入力データの値（０、２００００、０、２００００）が入力され、試算表Ｓａの勘定科目である売掛金の項目が更新される。
〔リアルタイムシステムの動作〕
次に本実施形態１の会計システムであるリアルタイム演算システムの動作について説明する。
【０１２２】
図５及び図６は、本実施形態１のリアルタイム演算システムの概略的の動作を、会計帳簿のデータ更新の動作とともに説明する。
【０１２３】
例えば、本実施形態１のリアルタイム演算システム１０に、端末２からインターネット４を介して伝票データが入力されると、カーネル１１は、この伝票データが会計システム１００に対するものであるのか、あるいは売買システム１０１に対するものであるのかを判定する。カーネル１１は、この伝票データが会計システムである場合は、会計システム１００を呼び出し、伝票データが会計システムである場合は、売買システム１０１を呼び出す。
【０１２４】
ここでは、伝票データが会計システムに対する会計伝票データであり、会計システム１００が呼び出された場合について詳述する。
【０１２５】
例えば、１件目の会計伝票は、２００９年１０月３０日に２００００円を売上げて売掛金２００００円が発生した取引の入金伝票であり、２件目の会計伝票は、２００９年１０月３０日に売掛金の１００００円を回収した取引の振替伝票であり、３件目の会計伝票は、２００９年１０月３０日に設備投資を７０００円で行った取引の出金伝票であるとする。
【０１２６】
この場合、各会計伝票は、共通形式の会計伝票データに統合されて、図３Ｄに示す論理入力に変換される。
【０１２７】
この論理入力Ｌｉｎでは、入金伝票Ｄ１はレコードＮｏ１及びＮｏ２に変換され、振替伝票Ｄ２はレコードＮｏ３及びＮｏ４に変換され、出金伝票Ｄ３はレコードＮｏ５及びＮｏ６に変換されている。
【０１２８】
このとき、試算表Ｓａ、預金元帳Ｓｂ、固定資産台帳ＳｃのバイナリーツリーＢＴａ、ＢＴｂ、ＢＴｃは、図５（ａ）に示すように初期状態となっているものとする。なお、実務では、前残などの金額があるが、ここでは説明の都合上すべての金額はゼロとしている。ただし、表示順コード、科目名、勘定項目コード、貸借区分などの事前準備の項目は勘定科目マスターＡｍ（図３Ｆ）を参照して設定済みである。
【０１２９】
例えば、試算表の論理出力構造を示すバイナリーツリーＢＴａの１行目の「１１０１（０／０／０／０／預金      ／１０００１）」において、最初の「１」は、貸借区分を示し、そのあとに続く「１０１」は試算表表示順コードであり、「（０／０／０／０預金      ／１０００１）」の最初の「０」は、預金の前月残の金額がゼロであることを示し、次の「０」は預金の借方の金額がゼロであることを示し、３番目の「０」は預金の貸方の金額がゼロであることを示し、最後の「０」は残高の金額がゼロであることを示している。さらに、最後の「／１０００１」は、預金を示す勘定科目コードを示している。
【０１３０】
なお、試算表の論理出力構造を示すバイナリーツリーＢＴａの２行目の項目以降も同様に、事前準備の項目が設定されている。
【０１３１】
また、預金元帳Ｓｂの論理出力構造を示すバイナリーツリーＢＴｂの１行目の記述は、１つのキーとして項目である合計行を示している。
【０１３２】
さらに、固定資産台帳Ｓｃの論理出力構造を示すバイナリーツリーＢＴｃの１行目の記述は、勘定科目２０００２（設備）の合計行を示している。
【０１３３】
〔１件目の伝票の処理（図５（ｂ）参照）〕
このような初期状態で、レコード＃１が入力されると、試算表Ｓａの売掛金の（前月残、借方、貸方、残高）は、（０，０，０，０）＋（０，２００００，０，２００００）＝（０，２００００，０，２００００）となる。このとき、借方計の（前月残、借方、貸方、残高）は、（０，０，０，０）＋（０，２００００，０，２００００）＝（０，２００００，０，２００００）となる。この場合、売掛金の初期値に加えられた値（０，２００００，０，２００００）は、状態ログ格納部に格納され、借方計の初期値に加えられた値（０，２００００，０，２００００）は、状態ログ格納部に格納される。これは、売掛金の初期値に加えられた値（０，２００００，０，２００００）から、借方計の初期値に加えられた値（０，２００００，０，２００００）は復元可能とするためである。
【０１３４】
次に、レコード＃２が入力されると、試算表Ｓａの売上の（前月残、借方、貸方、残高）は、（０，０，０，０）＋（０，０，２００００，２００００）＝（０，０，２００００，２００００）となる。このとき、貸方計の（前月残、借方、貸方、残高）は、（０，０，０，０）＋（０，０，２００００，２００００）＝（０，０，２００００，２００００）となる。この場合、売上の初期値に加えられた値（０，０，２００００，２００００）は、状態ログ格納部に格納され、貸方計の初期値に加えられた値（０，０，２００００，２００００）は、状態ログ格納部に格納される。これは、売上の初期値に加えられた値（０，０，２００００，２００００）から、貸方計の初期値に加えられた値（０，０，２００００，２００００）は復元可能とするためである。
【０１３５】
なお、１件目の伝票（入金伝票）（図３Ｄ参照）には、預金項目がないため、預金元帳は更新されず、また、建物あるいは設備の項目もないため、固定資産台帳も更新されない。
【０１３６】
〔２件目の伝票の処理（図６（ａ）参照）〕
１件目の伝票処理後、論理入力Ｌｉｎにおけるレコード＃３が入力されると、試算表Ｓａの預金の（前月残、借方、貸方、残高）は、（０，０，０，０）＋（０，１００００，０，１００００）＝（０，１００００，０，１００００）となる。また、レコード＃４が入力されると、試算表Ｓａの売掛金の（前月残、借方、貸方、残高）は、（０，２００００，０，２００００）＋（０，０，１００００，−１００００）＝（０，２００００，１００００，１００００）となる。
【０１３７】
このとき、借方計の（前月残、借方、貸方、残高）は、（０，２００００，０，２００００）＋（０，１００００，１００００，０）＝（０，３００００，１００００，２００００）となる。この場合、預金の初期値に加えられた値（０，１００００，０，１００００）、及び売掛金の前回の算出値に加えられた値（０，０，１００００，−１００００）は、状態ログ格納部に格納され、借方計の前回の算出値に加えられた値（０，２００００，０，２００００）は、１件目の伝票処理の場合と同様の理由で、状態ログ格納部に格納される。
【０１３８】
また、この場合は、預金元帳Ｓｂの入金明細として、（前残、入金、出金、残高）＝（０，１００００，０，１００００）が追加され、預金計（前残、入金、出金、残高）は、（０，０，０，０）から（０，１００００，０，１００００）に更新される。
【０１３９】
なお、２件目の伝票（出金伝票）（図３Ｄ参照）には、建物あるいは設備の項目がないため、固定資産台帳は更新されない。
【０１４０】
〔３件目の伝票の処理（図６（ｂ）参照）〕
２件目の伝票処理後、論理入力Ｌｉｎにおけるレコード＃５が入力されると、試算表Ｓａの設備の（前月残、借方、貸方、残高）は、（０，０，０，０）＋（０，７０００，０，７０００）＝（０，７０００，０，７０００）となる。また、レコード＃６が入力されると、試算表Ｓａの預金の（前月残、借方、貸方、残高）は、（０，１００００，０，１００００）＋（０，０，７０００，−７０００）＝（０，１００００，７０００，３０００）となる。
【０１４１】
このとき、借方計の（前月残、借方、貸方、残高）は、（０，３００００，１００００，２００００）＋（０，７０００，７０００，０）＝（０，３７０００，１７０００，２００００）となる。この場合、設備の初期値に加えられた値（０，７０００，０，７０００）、及び預金の前回の算出値に加えられた値（０，０，７０００，−７０００）は、状態ログ格納部に格納され、借方計の前回の算出値に加えられた値（０，７０００，７００，０）は、１件目及び２件目の伝票処理の場合と同様の理由で、状態ログ格納部に格納される。
【０１４２】
また、この場合は、預金元帳Ｓｂの出金明細として、（前残、入金、出金、残高）＝（１００００，０，７０００，３０００）が追加され、預金計（前残、入金、出金、残高）は、（０，１００００，０，１００００）から（０，１００００，７０００，３０００）に更新される。
【０１４３】
また、この場合は、固定資産台帳Ｓｃの明細として、（前残、入金、出金、残高）＝（０，７０００，０，７０００）が追加され、設備計（前残、入金、出金、残高）は、（０，０，０，０）から（０，７０００，０，７０００）に更新される。
【０１４４】
このようにして３件の伝票の処理が行われて、知識データベース２０には、論理入力である３件分の伝票データに対する論理出力が、試算表Ｓａ、預金元帳Ｓｂ、及び固定資産台帳Ｓｃ毎にリアルタイムで求められることとなる。
【０１４５】
このようにして、論理入力として伝票データが入力される度に、試算表に対応するバイナリーサーチツリーが更新されるとともに、預金元帳および固定資産台帳に対応するバイナリーサーチツリーが成長し、試算表、預金元帳、および固定資産台帳には、リアルタイムで取引の状態が反映されることとなる。
【０１４６】
以下、上述したバイナリーサーチツリーの作成方法、順次検索方法、およびランダム検索方法について、図４を用いて説明する。
図４に示すバイナリーサーチツリーでは、Ｎｏｄｅは、試算表に付加されている含まれるバイナリーサーチツリー（図３５）におけるデータに対応し、ＬＬｉｎｋ，ＲＬｉｎｋは、試算表に付加されているバイナリーサーチツリー（図３５）におけるＬｅｆｔ，Ｒｉｇｈｔに対応している。
つまり、試算表の定義の際に、以下に説明する方法で、図３５に示すバイナリーサーチツリーが形成されることとなる。
【０１４７】
まず、バイナリーサーチツリーの作成方法について説明する。
【０１４８】
１）テーブルにデータが１行もないときは、追加して終了する。（Ｎｏｄｅ値＝入力、ＬＬｉｎk＝−１，ＲＬｉｎｋ＝−１）。
【０１４９】
テーブルにデータのある時は、１行目より、以下の２）の確認処理を行う。
【０１５０】
２）テーブルのＮｏｄｅの値と追加データの値を比較する。
【０１５１】
テーブルのＮｏｄｅの値＞追加データの値のときは、ＬＬｉｎｋを確認のため、以下の３）の処理を行う。
【０１５２】
テーブルのＮｏｄｅの値＜追加データの値のときは、ＲＬｉｎｋを確認のため、以下の３）の処理を行う。
【０１５３】
テーブルのＮｏｄｅの値＝追加データの値のときは、追加作成はしないで処理を終了する。
【０１５４】
３）Ｌｉｎｋに値のあるとき（≠−１）はＬｉｎｋで指定したテーブル行について、２）の手続を行う。
【０１５５】
Ｌｉｎｋに値がないとき（＝−１）はデータをテーブルに追加（Ｎｏｄｅ値＝入力、ＬＬｉｎk＝−１，ＲＬｉｎｋ＝−１））して、Ｌｉｎｋ（ＬＬｉｎｋまたはＲＬｉｎｋ）
の値を−１より、追加したテーブルの行番号に置き換える。
【０１５６】
以下、図４を用いて事例を挙げて説明する。
【０１５７】
〔ＢＳＴの作成〕
５件のデータ『Ｂ、Ｄ、Ｃ、Ａ、Ｅ』でＢＳＴを作成する手順について説明する。なお、この５件のデータは、この順で入力される。また、これらのデータの大小関係は、”Ａ”＜”Ｂ”＜”Ｃ”＜”Ｄ”＜”Ｅ”とする。
【０１５８】
（１）最初はテーブルＢＳＴａ０に値がない（図４（ａ））。
【０１５９】
（２）最初のデータ『Ｂ』が入力されたときは、テーブルＢＳＴａ０に１行追加して、Ｎｏｄｅ＝Ｂ、ＬＬｉｎｋ＝−１、ＲＬｉｎｋ＝−１とする（図４（ｂ））。『−１』はリンク先なしを意味している。図４では、ＢＳＴ（バイナリーサーチツリー）ＢＳＴｒ１〜ＢＳＴｒ５をテーブルＢＳＴａ１〜ＢＳＴａ５とともに表示している。Ｎｏｄｅを○印で表し、ＬＬｉｎk、ＲＬｉｎｋは、Ｎｏｄｅの左側、または右側より伸びる線で表し、Ｌｉｎｋ先のＮｏｄeに対応づける。
【０１６０】
（３）２件目のデータ『Ｄ』が入力されたときは、データ『Ｄ』とテーブルＢＳＴａ２の１行目のＮｏｄｅ値『Ｂ』とを比較する。このとき、”Ｂ”＜”Ｄ”なので、テーブル１行目のＲＬｉｎｋを参照すると、『−１』でリンク先なしなので、データ『Ｄ』をテーブルに追加して１行目のテーブルのＲＬｉｎｋに追加した行番号『２』を設定する（図４（ｃ））。
【０１６１】
追加した２行目は、Ｎｏｄｅ＝”Ｄ”、ＬＬｉｎｋ＝−１、ＲＬｉｎｋ＝−１である。
【０１６２】
バイナリーサーチツリーＢＳＴｒ２では、Ｎｏｄｅ『Ｂ』の右からの線『リンク』をＮｏｄｅ『Ｄ』に繋げ、テーブルＢＳＴａ２と同じ内容を示す。
【０１６３】
（４）３件目のデータ『Ｃ』が入力されたときは、データ『Ｃ』とテーブルＢＳＴａ２の１行目のＮｏｄｅ値『Ｂ』とを比較する。このとき、”Ｂ”＜”Ｃ”なので、テーブル１行目のＲＬｉｎｋを参照すると、『２』がリンク先となっている。リンク先の２行目のＮｏｄｅ値『Ｄ』とデータ『Ｃ』とを比較する。このとき、”Ｃ”＜”Ｄ”なので、テーブル２行目のＬＬｉｎｋを参照すると、『−１』でリンク先なしなので、データ『Ｃ』をテーブルＢＳＴａ２に追加して２行目のテーブルのＬＬｉｎｋに追加した行番号『３』を設定する（図４（ｄ））。
【０１６４】
追加した３行目は、Ｎｏｄｅ＝”Ｃ”、ＬＬｉｎｋ＝−１、ＲＬｉｎｋ＝−１である。
【０１６５】
バイナリーサーチツリーＢＳＴｒ３では、Ｎｏｄｅ『Ｄ』の左からの線『リンク』をＮｏｄｅ『Ｃ』に繋げ、テーブルＢＳＴａ３と同じ内容を示す。
【０１６６】
（５）４件目のデータ『Ａ』が入力されたときは、データ『Ａ』とテーブルＢＳＴａ３の１行目のＮｏｄｅ値『Ｂ』とを比較する。このとき、”Ａ”＜”Ｂ”なので、テーブル１行目のＬＬｉｎｋを参照すると、『−１』でリンク先なしなので、データ『Ａ』をテーブルＢＳＴａ３に追加してテーブルＢＳＴａ３の１行目のＬＬｉｎｋに追加した行番号『４』を設定する（図４（ｅ））。
【０１６７】
バイナリーサーチツリーＢＳＴｒ４では、Ｎｏｄｅ『Ｂ』の左からの線『リンク』をＮｏｄｅ『Ａ』に繋げ、テーブルＢＳＴａ４と同じ内容を示す。
【０１６８】
（６）５件目のデータ『Ｅ』が入力されたときは、データ『Ｅ』とテーブルＢＳＴａ４の１行目のＮｏｄｅ値『Ｂ』とを比較する。このとき、”Ｂ”＜”Ｅ”なので、テーブル１行目のＲＬｉｎｋを参照すると、『２』がリンク先となっている。リンク先の２行目のＮｏｄｅ値『Ｄ』とデータ『Ｅ』とを比較する。このとき、”Ｄ”＜”Ｅ”なので、テーブル２行目のＲＬｉｎｋを参照すると、『−１』でリンク先なしなので、データ『Ｅ』をテーブルＢＳＴａ４に追加して２行目のテーブルのＬＬｉｎｋに追加した行番号『５』を設定する。
【０１６９】
追加した５行目は、Ｎｏｄｅ＝”Ｅ”、ＬＬｉｎｋ＝−１、ＲＬｉｎｋ＝−１である。
【０１７０】
バイナリーサーチツリーＢＳＴｒ５では、Ｎｏｄｅ『Ｄ』の右からの線『リンク』をＮｏｄｅ『Ｅ』に繋げ、テーブルＢＳＴａ５と同じ内容を示す。
【０１７１】
次に、ＢＳＴ（バイナリーサーチツリー）の順次検索について説明する。
【０１７２】
〔ＢＳＴの順次検索〕
ＢＳＴを順次で辿るときは次の順で処理する。
【０１７３】
１番目：ＬＬｉｎｋ
２番目：自Ｎｏｄｅ
３番目：ＲＬｉｎｋ
テーブルＢＳＴａ５またはバイナリーサーチツリーＢＳＴｒ５を上記の手順で辿る。
【０１７４】
１）テーブルの一行目より検索を始める。  
【０１７５】
２）１行目のＬＬｉｎｋは４なので、テーブル４行目に移る。  
【０１７６】
３）４行目はＬＬｉｎｋが−１であるので、自Ｎｏｄｅ『Ａ』を出力する。  
【０１７７】
４）４行目はＲＬｉｎｋが−１であるので、１行目に戻る。  
【０１７８】
５）１行目のＬＬｉｎｋは処理済みので、自Ｎｏｄｅ『Ｂ』を出力する。  
【０１７９】
６）１行目のＲＬｉｎｋが２なので、テーブル２行目に移る。  
【０１８０】
７）２行目のＬＬｉｎｋが３なので、テーブル３行目に移る。  
【０１８１】
８）３行目のＬＬｉｎｋが−１であるので、自Ｎｏｄｅ『Ｃ』を出力する。  
【０１８２】
９）３行目はＲＬｉｎｋが−１であるので、２行目に戻る。  
【０１８３】
１０）２行目のＬＬｉｎｋは処理済みので、自Ｎｏｄｅ『Ｄ』を出力する。  
【０１８４】
１１）２行目のＲＬｉｎｋが５なので、テーブル５行目に移る。  
【０１８５】
１２）２行目はＬＬｉｎｋが−１であるので、自Ｎｏｄｅ『Ｅ』を出力する。  
【０１８６】
１３）３行目はＲＬｉｎｋが−１であるので、全Ｎｏｄeの処理を終了する。
【０１８７】
〔ＢＳＴのランダム検索〕
次に、ＢＳＴ（バイナリーサーチツリー）のランダム検索について説明する。  
【０１８８】
ＢＳＴでキーを指定して、Ｎｏｄｅを検索する。  
【０１８９】
テーブルの作成のときと同じ要領でテーブルの１行目より検索すべき値と、Ｎｏｄe値を比較してＮｏｄｅを辿る。
【０１９０】
テーブルのＮｏｄｅの値＜追加データの値のときはＲＬｉｎｋを辿る。
【０１９１】
テーブルのＮｏｄｅの値＞追加データの値のときはＬＬｉｎｋを辿る。
【０１９２】
テーブルのＮｏｄｅの値＝追加データの値のときは一致Ｎｏｄｅに到達する。
【０１９３】
辿るべきＬＬｉｎｋ、ＲＬｉｎｋに値がない（−１）のときには、検索すべき値が存在しない。
【０１９４】
テーブルＢＳＴａ５またはバイナリーサーチツリーＢＳＴｒ５で値『Ｃ』を検索する場合は以下のとおりである。
【０１９５】
１）テーブル１行目  Ｎｏｄe『Ｂ』＜検索値『Ｃ』でＲＬｉｎｋ２を辿る。
【０１９６】
２）テーブル２行目  Ｎｏｄe『Ｄ』＞検索値『Ｃ』でＬＬｉｎｋ３を辿る。
【０１９７】
３）テーブル３行目  Ｎｏｄe『Ｃ』＝検索値『Ｃ』で一致Ｎｏｄｅに到達する。
〔コンピュータ３による伝票処理の説明〕
次に上記コンピュータによる伝票処理動作を、状態遷移表を用いて説明する。
（１）関数名：トランザクションの機能説明（状態遷移表Ｔｓ１）
ここでは、伝票データの読込みからカーネルの呼び出しまでの動作を説明する。
【０１９８】
図７は、トランザクションの機能を説明する図であり、図７（ａ）はコンピュータの状態遷移表Ｔｓ１を示し、図７（ｂ）及び（ｃ）はそれぞれ、ローカル変数の定義ＬＶ１及びグローバル変数の定義ＧＶを示している。
【０１９９】
なお、ローカル変数は、トランザクジョンの発生に応じてカーネルを呼び出すまでの動作を示す状態遷移表だけで使用する変数であり、グローバル変数の定義は、コンピュータによる伝票処理動作を示すすべての状態遷移表で共通に使用する変数である。
【０２００】
コンピュータは、取引（トランザクション）が発生し伝票の入力があると、インターネットなどの通信回線を介して受信したデータを読込み、カーネルを呼び出し、読込み完了後にコンピュータ内のカーネルが、データに応じた業務処理を呼び出す。
【０２０１】
つまり、図７（ａ）に示す状態遷移表Ｔｓ１では、状態「１」は初期状態で、条件は無条件「−」なので、コンピュータは、上記状態遷移表Ｔｓ１（関数）が呼ばれた時に、１〜３行目の処理を実行し、状態２に遷移する。なお、この状態遷移表Ｔｓ１は、カーネルの読み出しを行うチューリングマシン（プログラムに基づいたコンピュータによる演算機能）を定義するものである。
【０２０２】
１行目の処理では、「ＡＣＣ＿ＬＯＡＤ」（勘定科目マスターＡｍ（図３Ｆ）を読込む初期の準備）を実行する。２行目の処理では、「ＬＩＮＫ＿ＬＯＡＤ」（会計帳簿体系Ａｃｓ（図３Ｅ）を読込む初期の準備）を実行する。３行目の処理では、入力ファイルのＯＰＥＮ（読込の準備）を行う処理である。
【０２０３】
ここで、引数の「１」はファイル１であり、会計伝票データを示し、引数の「”Ｒ”」は、読込みモードで、ファイルをＯＰＥＮすることを示している。
【０２０４】
４行目の処理では、コンピュータの処理は、状態２にあり、条件は無条件「−」であるので、コンピュータは、処理「ｒｔｎ＝＄ＲＥＡＤ（１）」を実行し、状態３に遷移する。この処理「ｒｔｎ＝＄ＲＥＡＤ（１）」では入力ファイルの読込みを行う。
【０２０５】
５行目の処理では、コンピュータは状態３にある。このときの条件「ｒｔｎ＝３」は４行目の処理での入力ファイル読込みで入力データがＥＯＦの時に「３」が戻る。つまり、ＥＯＦの時に処理「ｒｔｎ＝＄ＣＬＯＳＥ（１）」で入力ファイルをＣＬＯＳＥして、状態９９９（この状態遷移表で表される処理の終了状態）に遷移する。
【０２０６】
６行目の処理では、状態の指定はなく、その状態は前行の状態３となる。また、条件「−」は条件指定なしであり、つまり、状態３で５行目の条件を満たさない時には、無条件で、コンピュータは、処理「ＫＥＲＮＥＬ」（入力データを判断し所定の処理を呼出す）を実行し、状態２に遷移する。
【０２０７】
コンピュータは、このような動作を、入力データ（入力される伝票データ）がなくなるまで行って、伝票データの読込みを行う。
（２）関数名：カーネルの機能説明（状態遷移表Ｔｓ２）
ここでは、カーネルが入力データの種類に応じた業務処理を呼び出す動作を、状態遷移表Ｔｓ２を用いて説明する。なお、ここでは説明していないが、障害時には障害対応処理を呼出す。
【０２０８】
図８は、カーネルの機能を説明する図であり、図８（ａ）は、コンピュータの状態遷移表Ｔｓ２を示し、図８（ｂ）は、ローカル変数の定義ＬＶ２を示している。なお、ローカル変数は、カーネルが入力データの種類に応じた業務処理を呼び出す動作を示す状態遷移表Ｔｓ２だけで使用する変数である。また、この状態遷移表Ｔｓ２は、業務処理の呼び出しを行うチューリングマシン（プログラムに基づいたコンピュータによる演算機能）を定義するものである。
【０２０９】
上記状態遷移表Ｔｓ１（図７（ａ））で示すように、上記のようにカーネルが呼び出されると、該カーネルにより、入力データの種類に応じた業務処理が呼び出される。
【０２１０】
つまり、状態遷移表Ｔｓ２の状態「１」は、初期状態を示しており、コンピュータは、図８（ａ）に示す状態遷移表Ｔｓ２が呼び出されたとき、１行目の処理を最初に実行する。
【０２１１】
１行目の処理では、条件「Ｆ１＿ＩＤ＝”ＡＣＣ”」は、入力項目「Ｆ１＿ＩＤ」（データ識別）が「”ＡＣＣ”」（会計）の時に、処理「ｒｔｎ＝ＡＣＣ＿ＵＰＤＡＴＥ」（会計伝票処理）を実行し、状態２に遷移する。
【０２１２】
また、２行目の処理では、状態の指定はなく、コンピュータは、前行の状態１となる。コンピュータは、条件「Ｆ１＿ＩＤ＝”ＳＡＬＥ”」に従って、入力項目「Ｆ１＿ＩＤ」（データ識別）が「”ＳＡＬＥ”」（売買）の時に、売買処理をして状態２に遷移する。ここでは、売買処理の詳細については省略している。
【０２１３】
また、３行目の処理では、状態の指定はなく、コンピュータは前行の処理と同じ状態１となる。条件は無条件「−」なので、コンピュータは、１〜２行目の条件を満たさなかった時に、処理「ｒｔｎ＝ＥＲＲ」（エラー処理）を実行し、状態９９９（終了状態）に遷移する。
【０２１４】
また、４行目の処理では、コンピュータは状態２であり、条件「ｒｔｎ＜０」に従って、１又は２行目の条件を満たさなかった時（エラー時）の戻値で、処理「ｒｔｎ＝ＥＲＲ」（傷害時のエラー処理呼出し）を実行し、状態９９９（終了状態）に遷移する。
【０２１５】
また、５行目の処理では、状態の指定はなく、コンピュータは、前行の処理と同じ状態２となる。また、条件「−」は条件指定なしであり、処理の定義はない。従って、コンピュータは、状態２で４行目の条件を満たさない時には、無条件で、状態９９９（終了状態）に遷移する。
（３）関数名：ＡＣＣ＿ＵＰＤＡＴＥの機能説明（状態遷移表Ｔｓ３）
ここでは、「論理出力間の対応」の定義に沿って、「試算表」から初めて、対応する論理出力を更新する動作を、状態遷移表Ｔｓ３を用いて説明する。
【０２１６】
図９は、会計システムに対する論理出力の更新機能を説明する図であり、図９（ａ）は、コンピュータの状態遷移表Ｔｓ３を示し、図９（ｂ）は、ローカル変数ＬＶ３の定義を示している。
【０２１７】
なお、ローカル変数ＬＶ３は、論理出力を更新する動作を示す状態遷移表Ｔｓ３だけで使用する変数である。また、この状態遷移表Ｔｓ３は、論理出力の更新を行うチューリングマシン（プログラムに基づいたコンピュータによる演算機能）を定義するものである。
【０２１８】
コンピュータは、カーネルにより会計システム１００（図２、図３Ａ）が読み出されると、図９（ａ）に示す状態遷移表Ｔｓ３に従って、試算表Ｓａ、預金元帳Ｓｂ、固定資産台帳Ｓｃ（図３Ａ参照）の順に論理出力の更新を行う。
【０２１９】
図９（ａ）に示すように、状態遷移表Ｔｓ３では、状態１は初期状態で、条件は無条件「−」なので、上記の状態遷移表Ｔｓ３が呼ばれた時に最初に、１〜３行目の処理を実行し、状態２に遷移する。
【０２２０】
１行目の「ｒｔｎ＝ＫＢ（５，２）」は、ＫＤＢ５のアクセス定義２を実行することを示しており、１行目の処理では、コンピュータは、会計伝票データの科目（Ｆ１＿ＡＣＣ）をキーに勘定科目の貸借，科目名，試算表表示順コードを、変数であるＤＲＣＲ，ＡＣＣＮＡＭＥ，ＯＲＤＥＲに取得する。（図９（ｃ））。
【０２２１】
２行目の「ＫＥＹ１＝”会計”」は変数ＫＥＹ１に「”会計”」を代入することを示しており、コンピュータは、変数ＫＥＹ１に「”会計”」を代入する。この”会計”は会計帳簿体系の最初のキーである。
【０２２２】
３行目の処理「ＫＥＹ２＝””」では、コンピュータは、変数ＫＥＹ２に「””」（データなし。ＮＵＬＬ）を代入し、状態２に遷移する。
【０２２３】
４〜５行目の処理では、コンピュータは状態２であり、条件は無条件「−」である。従って、コンピュータは、４〜５行目の処理を実行し、状態３に遷移する。
【０２２４】
４行目の処理「ｗＫＥＹ＝＄文字列トリム連結関数（ＫＥＹ１，ＫＥＹ２）」は、変数ＫＥＹ１と変数ＫＥＹ２を文字結合し、変数ｗＫＥＹに代入する処理である。
【０２２５】
５行目の処理「ｒｔｎ＝ＫＢ（４，１）」は、ＫＤＢ４のアクセス定義１（図９（ｄ））を実行するものであり、変数ｗＫｅｙをキーにして、「対応する論理出力」を変数ＫＥＹ１に取得するものである。
【０２２６】
６行目の処理では、コンピュータは状態３であり、条件「ｒｔｎ＞＝０」（５行目で指定データが存在する時）を満たせば、コンピュータは状態４に遷移する。
【０２２７】
状態遷移表Ｔｓ３の６行目では、処理は定義されていないので、コンピュータは、処理を行わずに状態４に遷移する。
【０２２８】
７行目では、コンピュータの状態の指定はなく、コンピュータは前行の状態３となる。
【０２２９】
また、条件「Ｆ１＿ＤＲＣＲ＝”２”」は、入力項目「Ｆ１＿ＤＲＣＲ＝」が「”２”」の時に、コンピュータが処理「ｒｔｎ＝ＫＢＬＯＧＥＮＤ（Ｆ１＿ＤＮＯ）」を実行し、状態９９９（終了状態）に遷移するというものである。
【０２３０】
ここで、関数ＫＢＬＯＧＥＮＤは状態ログに処理終了を出力する処理である。
【０２３１】
８行目では、コンピュータの状態の指定はなく、コンピュータの状態は、前行の状態３となる。また、条件「−」は条件指定なしで、処理の定義はない。
【０２３２】
つまり、状態３で６，７行目の条件を満たさない時には、コンピュータは、無条件で処理し、状態９９９（終了状態）に遷移する。
【０２３３】
９行目では、コンピュータは状態４である。また、条件「ＫＥＹ１＝”試算表”」（５行目で取得したデータが”試算表”の時）を満たせば、コンピュータは、処理「ｒｔｎ＝ＴＲＩＡＬ＿ＵＰＤ（ＫＥＹ２）」（試算表の更新処理）を実行し、状態２に遷移する。
【０２３４】
１０行目では、コンピュータの状態の指定はなく、コンピュータは前行の状態３となる。
【０２３５】
コンピュータは、条件「ＫＥＹ１＝”預金元帳”」（５行目で取得したデータが”預金元帳”の時）を満たせば、処理「ｒｔｎ＝Ｙｏｋｉｎ（ＫＥＹ２）」（預金元帳の更新処理）を実行し、状態２に遷移する。
【０２３６】
１１行目では、コンピュータの状態の指定はなく、コンピュータは、前行の状態３となる。
【０２３７】
コンピュータは、条件「ＫＥＹ１＝”固定資産台帳”」（５行目で取得したデータが”固定資産台帳”の時）を満たせば、処理「ｒｔｎ＝Ｋｏｔｅｉ（ＫＥＹ２）」（固定資産台帳の更新処理）を実行し、状態２に遷移する。
【０２３８】
１２行目では、コンピュータの状態の指定はなく、コンピュータは、前行の状態３となる。また、条件「−」は条件指定なしであり、処理の定義はない。
【０２３９】
つまり、コンピュータは、状態４で、９〜１１行目の条件を満たさない時には、無条件で処理し、状態９９９（終了状態）に遷移する。
（４）関数名：ＴＲＩＡＬ＿ＵＰＤＡＴＥ（状態遷移表Ｔｓ４）の説明
図１０は、会計システムに対する試算表の論理出力の更新を説明する図であり、図１０（ａ）は、コンピュータの状態遷移表を示し、図１０（ｂ）は、ローカル変数の定義を示し、図１０（ｃ）は、試算表の構造ＳＴ１を示している。図１３は、試算表の基本変数を説明する図である。
【０２４０】
なお、ローカル変数ＬＶ４は、論理出力を更新する動作を示す状態遷移表だけで使用する変数である。ここでは、局所座標系ＬＣｏ（図３４（ｂ）参照）により定義されている試算表を更新する動作を、状態遷移表Ｔｓ４を用いて説明する。また、この状態遷移表Ｔｓ４は、試算表の論理出力の更新を行うチューリングマシン（プログラムに基づいたコンピュータによる演算機能）を定義するものである。
【０２４１】
ここでは、試算表の局所座標系を更新する動作を、図１０（ａ）に示す状態遷移表Ｔｓ４、図１０（ｃ）に示す試算表の構造ＳＴ１定義、図１２に示すアクセス定義Ｓｔ４ａに従って説明する。
【０２４２】
以下、コンピュータが試算表の論理出力を更新する処理を説明する。
【０２４３】
この状態遷移表Ｔｓ４の１〜４行目の状態１は、初期状態で、上記の状態遷移表Ｔｓ４が呼ばれた時に、コンピュータが最初に実行する処理である。
【０２４４】
コンピュータは、条件「Ｆ１＿ＤＲＣＲ＝”１”」（会計伝票データの貸借Ｆ１＿ＤＲＣＲが”１”（借方））を満たせば、１〜２行目の処理を実行し、状態２に遷移する。
【０２４５】
１行目の処理「ＣＲ＝Ｆ１＿ＡＭＴ」は、変数ＣＲに会計伝票の金額Ｆ１＿ＡＭＴを代入する処理である。２行目の処理「ＤＲ＝０」は、変数ＤＲにゼロを代入する処理である。３〜４行目ではコンピュータの状態の指定はなく、コンピュータは前行の状態１となる。
例えば、会計伝票データが、図３Ｄに示すように、売掛金（２００００）、売上金（２０００）を示すデータＤ１である場合、コンピュータは、売掛金をキーとして、試算表の売掛金の借方（ＣＲ）を０から２００００に更新し、試算表の売掛金の貸方（ＤＲ）を０のままとする。
【０２４６】
コンピュータは、条件「Ｆ１＿ＤＲＣＲ＝”２”」（会計伝票データの貸借が”２”（貸方））を満たせば、３〜４行目の処理を実行し、状態２に遷移する。３行目の処理「ＣＲ＝０」は変数ＣＲにゼロを代入するものである。４行目の処理「ＤＲ＝Ｆ１＿ＡＭＴ」は、変数ＤＲに会計伝票の金額Ｆ１＿ＡＭＴを代入する処理である。
例えば、会計伝票データが、図３Ｄに示すように、売掛金（２００００）、売上金（２０００）を示すデータＤ１である場合、コンピュータは、売上げをキーとして、試算表の売上げの貸方（ＤＣＲ）を０のままとし、売上げの借方（ＣＲ）を０から２００００に更新する。
【０２４７】
この状態遷移表Ｔｓ４の５行目では、コンピュータは状態２にある。ここで、コンピュータは、条件「ＤＲＣＲ＝”１”」（勘定科目マスターの貸借が”１”）を満たせば、処理「ＺＡＮ＝ＣＲ−ＤＲ」を計算して、状態３に遷移する。
【０２４８】
この状態遷移表Ｔｓ４の６行目では状態の指定はなく、コンピュータは前行の状態２となる。コンピュータは、条件「ＤＲＣＲ＝”２”」（勘定科目マスターの貸借が”２”）を満たせば、処理「ＺＡＮ＝ＤＲ−ＣＲ」を計算して、状態３に遷移する。
【０２４９】
また、この状態遷移表Ｔｓ４の７行目では、コンピュータは状態３にある。コンピュータは、条件「ＤＲＣＲ＝”１”」（勘定科目マスターの貸借が”１”）を満たせば、処理「ＴＴＬＮＡＭＥ＝”借方計”」（変数ＴＴＬＮＡＭＥに値”借方計”を代入）を行い、状態３に遷移する。
【０２５０】
また、状態遷移表Ｔｓ４の８行目では、コンピュータの状態の指定はなく、コンピュータは、前行の状態２となる。コンピュータは、条件「ＤＲＣＲ  ＝  ”２”」（勘定科目マスターの貸借が”２”）を満たせば、処理「ＴＴＬＮＡＭＥ＝”貸方計”」を行い、状態３に遷移する。
【０２５１】
この状態遷移表Ｔｓ４の９〜１８行目では、コンピュータは状態４にあり、条件は無条件「−」なので、コンピュータは、９〜１８行目の処理を実行し、状態９９９（終了状態）に遷移する。
【０２５２】
具体的には、９行目の処理「ＺＥＮＺＡＮ＝０」は変数ＺＥＮＺＡＮにゼロを代入する処理である。１０行目の処理「ｗＮＡＭＥ＝ＴＴＬＮＡＭＥ」は、変数ｗＮＡＭＥに変数ＴＴＬＮＡＭＥの値を代入するものである。１１行目の処理「ｗＣＯＤＥ＝ＤＲＣＲ」は、変数ｗＣＯＤＥに変数ＤＲＣＲの値を代入するものである。１２行目の処理「ＴＲＩＡＬ＿ＫＥＹ＝＄文字列連結関数（ＤＲＣＲ，”＾＾＾”）」は、変数ＤＲＣＲと文字列”＾＾＾”を結合し、変数ＴＲＩＡＬ＿ＫＥＹに代入するものである。１３行目の処理「ｒｔｎ＝ＫＢ（１，１）」は、ＫＤＢ１のアクセス定義１を実行する（図１２）。
【０２５３】
１４行目の処理「ＴＲＩＡＬ＿ＫＥＹ＝＄文字列連結関数（ＤＲＣＲ，ＯＲＤＥＲ）」は、変数ＤＲＣＲと変数ＯＲＤＥＲの値を文字結合し、変数ＴＲＩＡＬ＿ＫＥＹに代入する処理である。１５行目の処理「ｗＮＡＭＥ＝ＡＣＣＮＡＭＥ」は、変数ｗＮＡＭＥに変数ＡＣＣＮＡＭＥの値を代入する処理である。１６行目の処理「ｗＣＯＤＥ＝Ｆ１＿ＡＣＣ」は、変数ｗＣＯＤＥに変数Ｆ１＿ＡＣＣの値を代入する処理である。１７行目の処理「ｒｔｎ＝ＫＢＬＯＧ（１，１，Ｆ１＿ＤＮＯ）」は、ＫＤＢ１のアクセス定義１を実行し、更新ログを出力する処理である（図１２）。
【０２５４】
１８行目の処理「ＫＥＹ２＝Ｆ１＿ＡＣＣ」は、変数ＫＥＹ２に変数Ｆ１＿ＡＣＣの値を代入する処理である。
（５）預金元帳の更新動作の説明（状態遷移表Ｔｓ５）
図１４は、会計システムに対する預金元帳の論理出力の更新を説明する図であり、図１４（ａ）は、コンピュータの状態遷移表を示し、図１４（ｂ）は、ローカル変数の定義ＬＶ５を示し、図１４（ｃ）は、預金元帳の構造ＳＴ２を示している。
【０２５５】
なお、ローカル変数ＬＶ５は、預金元帳を更新する動作を示す状態遷移表Ｔｓ５だけで使用する変数である。ここでは、局所座標系ＬＣｏ１（図３４（ｃ）参照）により定義されている預金元帳を更新する動作を、状態遷移表Ｔｓ５を用いて説明する。また、この状態遷移表Ｔｓ５は、預金元帳の更新を行うチューリングマシン（プログラムに基づいたコンピュータによる演算機能）を定義するものである。
【０２５６】
ここでは、預金元帳の局所座標系を更新する動作を、状態遷移表Ｔｓ５を用いて説明する。
【０２５７】
以下、コンピュータが預金元帳の論理出力を更新する処理を説明する。
【０２５８】
この状態遷移表Ｔｓ５の１〜２行目の状態１は初期状態で、上記の状態遷移表Ｔｓ５が呼ばれた時に、コンピュータが最初に実行する処理である。１〜２行目では、条件は無条件「−」なので、コンピュータは、１〜２行目の処理を実行し、状態２に遷移する。
【０２５９】
具体的には、１行目の処理「ＹＯＫＩＮ＿ＫＥＹ＝”＾＾＾＾＾＾＾＾＾＾＾＾”」は、変数ＹＯＫＩＮ＿ＫＥＹに文字列”＾＾＾＾＾＾＾＾＾＾＾＾”を代入する処理である。これは預金元帳の合計のキーである。
【０２６０】
２行目の処理「ｒｔｎ＝ＫＢ（２，１）」はＫＤＢ２のアクセス定義１を実行する処理である。（図１５（ａ））。
【０２６１】
この状態遷移表Ｔｓ５の３行目ではコンピュータは状態２にある。コンピュータは、条件「ｒｔｎ＜０」（預金元帳の合計がない時）を満たせば、処理「ｗＺＥＮＳＡＮ＝０」（変数ｗＺＥＮＳＡＮにゼロを代入）を行い、状態３に遷移する。
【０２６２】
この状態遷移表Ｔｓ５の４行目では、コンピュータの状態の指定はなく、コンピュータは前行の状態２となる。条件「−」は条件指定なしである。つまり、コンピュータは、状態２で３行目の条件を満たさない時には無条件で処理を行って状態３に遷移する。ここで、処理「ｗＺＥＮＳＡＮ＝ＺＡＮ」は、変数ｗＺＥＮＳＡＮに変数ＺＡＮ（２行目で取得した合計行の残高）の値を代入する処理である。
【０２６３】
この状態遷移表Ｔｓ５の５〜１２行目では、コンピュータは状態３にあり、条件は無条件「−」なので、コンピュータは、５〜１２行目の処理を実行し、状態９９９（終了状態）に遷移する。
【０２６４】
具体的には、５行目の処理「ＺＥＮＺＡＮ＝０」は、変数ＺＥＮＺＡＮにゼロを代入する処理である。６行目の処理「ＺＡＮ＝ＣＲ−ＤＲ」、ＣＲ−ＤＲの計算を行って、その結果を変数ＺＡＮに代入する処理である。
【０２６５】
７行目の処理「ｒｔｎ＝ＫＢ（２，２）」は、ＫＤＢ２のアクセス定義２を実行する処理である（図１５（ｂ））。
【０２６６】
８行目の処理「ＹＯＫＩＮ＿ＫＥＹ＝＄文字列連結関数（Ｆ１＿ＤＡＴＥ，Ｆ１＿ＤＮＯ）」は、変数Ｆ１＿ＤＡＴＥと変数Ｆ１＿ＤＮＯの値を結合し、変数ＹＯＫＩＮ＿ＫＥＹに代入する処理である。預金元帳のキーを日付＋伝票番号としている。
【０２６７】
９行目の処理「ＺＥＮＺＡＮ＝ｗＺＥＮＳＡＮ」は、変数ＺＥＮＺＡＮに変数ｗＺＥＮＳＡＮの値を代入する処理である。
【０２６８】
１０行目の処理「ＺＡＮ＝ＺＥＮＺＡＮ＋ＣＲ−ＤＲ」は、ＺＥＮＺＡＮ＋ＣＲ−ＤＲの計算を行って、その結果を変数ＺＡＮに代入する処理である。
【０２６９】
１１行目の処理「ｒｔｎ＝ＫＢＬＯＧ（２，２，Ｆ１＿ＤＮＯ）」は、ＫＤＢ２のアクセス定義２を実行し、更新ログを出力する処理である（図１５（ｂ））。
【０２７０】
１２行目の処理「ＫＥＹ２＝Ｆ１＿ＡＣＣ」は、変数ＫＥＹ２に変数Ｆ１＿ＡＣＣの値を代入する処理である。
（６）固定資産台帳の更新動作の説明（状態遷移表Ｔｓ６）
図１６は、会計システムに対する固定資産台帳の論理出力の更新を説明する図であり、図１６（ａ）は、コンピュータの状態遷移表Ｔｓ６を示し、図１６（ｂ）は、ローカル変数の定義ＬＶ６を示し、図１６（ｃ）は、固定資産台帳の構造ＳＴ６を示し、図１６（ｄ）は、固定資産台帳のアクセス定義ＡＤ６を示している。
【０２７１】
なお、ローカル変数ＬＶ４は、論理出力を更新する動作を示す状態遷移表Ｔｓ６だけで使用する変数である。ここでは、局所座標系ＬＣｏ１（図３４（ｄ）参照）により定義されている固定資産台帳を更新する動作を、状態遷移表Ｔｓ６を用いて説明する。また、この状態遷移表Ｔｓ６は、固定資産台帳の更新を行うチューリングマシン（プログラムに基づいたコンピュータによる演算機能）を定義するものである。
【０２７２】
以下、コンピュータが固定資産台帳の論理出力を更新する処理を説明する。
【０２７３】
この状態遷移表Ｔｓ６の１〜２行目の状態１は初期状態で、上記の状態遷移表Ｔｓ６が呼ばれた時に、コンピュータが最初に実行する処理である。
【０２７４】
コンピュータは、条件「Ｆ１＿ＤＲＣＲ＝”１”」（会計伝票データの貸借Ｆ１＿ＤＲＣＲが”１”（借方））を満たせば、１〜２行目の処理を実行し、状態２に遷移する。
【０２７５】
具体的には、１行目の処理「ＣＲ＝Ｆ１＿ＡＭＴ」は、変数ＣＲに会計伝票の金額Ｆ１＿ＡＭＴを代入する処理であり、２行目の処理「ＤＲ＝０」は、変数ＤＲにゼロを代入する処理である。
【０２７６】
この状態遷移表Ｔｓ６の３〜４行目には、コンピュータの状態の指定はなく、コンピュータは、前行の状態１となる。コンピュータは、条件「Ｆ１＿ＤＲＣＲ＝”２”」（会計伝票データの貸借が”２”（貸方））を満たせば、３〜４行目の処理を実行し、状態２に遷移する。
【０２７７】
具体的には、３行目の処理「ＣＲ＝０」は、変数ＣＲにゼロを代入する処理である。４行目の処理「ＤＲ＝Ｆ１＿ＡＭＴ」は、変数ＤＲに会計伝票の金額Ｆ１＿ＡＭＴを代入する処理である。
【０２７８】
この状態遷移表Ｔｓ６の５〜１２行目では、コンピュータの状態は状態２であり、条件は無条件「−」なので、コンピュータは５〜１２行目の処理を実行し、状態９９９（終了状態）に遷移する。
【０２７９】
この状態遷移表Ｔｓ６では、５行目の処理「ＺＥＮＺＡＮ＝０」は、変数ＺＥＮＺＡＮにゼロを代入する処理である。６行目の処理「ＺＡＮ＝ＣＲ−ＤＲ」は、ＣＲ−ＤＲの計算を行って、その結果を変数ＺＡＮに代入する処理である。
【０２８０】
７行目の処理「ＫＯＴＥＩ＿ＫＥＹ＝＄文字列連結関数（Ｆ１＿ＡＣＣ，”＾＾＾＾”）」は、変数Ｆ１＿ＡＣＣと文字列”＾＾＾＾”の値を結合し、変数ＫＯＴＥＩ＿ＫＥＹに代入する処理であり、これは、固定資産台帳の科目合計のキーを設定する処理である。８行目の処理「ｗＮＡＭＥ＝＄文字列トリム連結関数（ＡＣＣＮＡＭＥ，”計”）」は、変数ＡＣＣＮＡＭＥと文字列”計”の値を結合し、変数ｗＮＡＭＥに代入する処理である。
【０２８１】
これは、固定資産台帳の科目合計の説明用の表示を行う処理である。
【０２８２】
９行目の処理「ｒｔｎ＝ＫＢ（３．１）」は、ＫＤＢ３のアクセス定義１（更新）ＡＤ６を実行する処理である（図１６（ｄ））。
【０２８３】
１０行目の処理「ＫＯＴＥＩ＿ＫＥＹ＝＄文字列連結関数（Ｆ１＿ＡＣＣ，Ｆ１＿ＳＨＩＳＡＮ）」は、変数Ｆ１＿ＡＣＣと変数Ｆ１＿ＳＨＩＳＡＮの値を文字結合し、変数ＫＯＴＥＩ＿ＫＥＹに代入する処理である。これは、固定資産台帳のキー（科目＋資産番号）の設定処理である。
【０２８４】
１１行目の処理「ｗＮＡＭＥ＝ＡＣＣＮＡＭＥ」は、変数ｗＮＡＭＥに変数ＡＣＣＮＡＭＥの値を代入する処理である。１２行目の処理「ｒｔｎ＝ＫＢＬＯＧ（３，１，Ｆ１＿ＤＮＯ）」は、ＫＤＢ３のアクセス定義１（更新）ＡＤ６を実行し、状態ログを出力する処理である（図１６（ｄ））。
【０２８５】
（実施形態１の効果）
このように本実施形態１による論理演算システム１００では、会計システムなどの論理演算システムを多様体として捉え、この多様体に対する複数の論理入力、例えば複数のレコードを、多様体上に形成された個々の局所座標系（例えば個々の会計帳簿）毎に集計し、各局所座標系の論理出力（例えば個々の会計帳簿における集計結果）をリアルタイムで生成することができる。
【０２８６】
なお、上記実施形態１では、３つの会計帳簿を有する会計システムを例に挙げて本発明の論理演算システムを説明したが、本発明の論理演算システムは、上記実施形態１のものに限定されるものではない。
【０２８７】
例えば、市場データなどの時々刻々と変化する量の統計をとるリアルタイム統計システムや、工場などにおける部品管理、さらにはスーパーマーケットなどにおける在庫管理などを行うシステムも、本発明の論理演算システムにより実現することができる。
以下、上記実施形態１で説明した論理演算システム１００に、性能測定用仕様を適用して具体的な処理時間の測定を行って得られた結果について説明する。
図４５は、本発明の実施形態１による論理演算システムにおける入力データを処理したときの処理時間を説明する図であり、図４５（ａ）は処理内容、図４５（ｂ）は処理時間を示している。
ここで、入力データは、実施形態１で説明した会計伝票データに相当するものであるが、キー項目の桁数は１０桁（６桁、４桁）とし、集計項目（借方、貸方、残高など）は、２０項目として１項目を１０桁で表すものとし、さらに文字項目（実際の金額などを表示する項目）を１項目として５０桁で表すものとしている。
このような会計伝票データＤの１００万件分を入力ファイルとして準備している。
入力ファイルＦｉｎにおける会計伝票データＤは、キー項目、集計項目（文字）、文字項目が含まれている。ここで、キー項目（例えば、売掛金を示すコード）は１０桁で表されており、集計項目（文字）は、売掛金の金額を記号で示しており、１０桁×２０項目で表されており、さらに、文字項目は『売掛金』という項目の説明であり、５０桁×１項目で表されている。
このような会計伝票データがメモリＭ内に読み込まれてテーブルＭＴ１として格納される。
さらにこのように格納され会計伝票データの一件毎に、知識データベース２０ａとして構築されている論理出力構造（例えば、試算表）が更新される。
このとき、入力ファイルから、１００万件分の会計伝票データを、貸方計や借方計などの小計項目を含めずにメモリＭ内に読み込むのに要する時間は、２．６４秒であり、さらに、メモリＭ内に読み込んだ１００万件分の会計伝票データ（貸方計や借方計などの小計項目を含まない）に基づいて論理出力構造（例えば、試算表）２０ａを更新するのに要する時間が２．６５秒であった。
また、入力ファイルから、１００万件分の会計伝票データを、貸方計や借方計などの小計項目を含めてメモリＭ内に読み込むのに要する時間は、２．６４秒であり、さらに、メモリＭ内に読み込んだ１００万件分の会計伝票データ（貸方計や借方計などの小計項目を含む）に基づいて論理出力構造（例えば、試算表）２０ａを更新するのに要する時間が７．９７秒であった。
このとき用いたパーソナルコンピュータの性能は、ＣＰＵ（２．９３ＧＨｚｘ４）、メモリー（４ＧＢ）、キャッシュメモリ（８ＭＢ）であった。
さらに、上記実施形態１では、論理演算システムとして、入力データに応じてカーネルが業務機能部１００ａから会計システムや売買システムなどの演算システムを読み出し、入力データに対応した論理出力構造を知識データベースとして構築し、入力データが入力される度に、論理出力構造を更新するものを示したが、本発明の論理演算システムは、カーネルが親エージョンとして、複数の論理出力構造を分散かつ協調させて管理し、それぞれの論理出力構造を、それぞれに対応するエージェント（決定性チューリングマシン）により更新させるようにした分散協調マルチエージェントシステムでもよい。
（実施形態１の変形例）
以下、本発明の実施形態１の変形例として、このような分散協調マルチエージェントシステムについて説明する。
図３８は、本実施形態１の変形例による分散協調マルチエージェントシステム（以下、単にマルチエージェントシステムという。）の全体構成を概略的に示すブロック図である。
このマルチエージェントシステム１０００は、親エージョンとしてシステム全体を管理するカーネル１１００と、試算表としての論理出力構造１２３０に対応する試算表エージェント１２００と、取引先別状況表（勘定科目：預金）としての論理出力構造１３３０に対応する状況表エージェント１３００と、補助元帳（勘定科目：預金）としての論理出力構造１４３０に対応する補助元帳エージェント１４００とを有し、カーネル１１００が、複数の論理出力構造を分散かつ協調させて管理し、それぞれの論理出力構造を、それぞれに対応するエージェント（決定性チューリングマシン）１２００、１３００、１４００により更新あるいは復旧させるようにしたものである。
また、このマルチエージェントシステム１０００は、ネットワークの状況、端末２（図１（ａ）参照）が設置されている地域の気候、災害情報などを監視する監視エージェント１５００、伝票データの入力を行う伝票入力エージェント１６００、このシステム内で格納した状態ログを送信する状態ログ送信エージェント１８００、および外部のシステムで格納された状態ログを受信する状態ログ受信エージェント１９００を有している。
ここで、試算表エージェント１２００は、試算表１２３０を更新する試算表更新エージェント１２１０と、試算表１２３０を復旧する試算表復旧エージェント１２２０とを含む。上記試算表１２３０は、実施形態１で説明したようにメモリ空間上に定義されており、試算表更新エージェント１２１０は、伝票入力を受けるたびに、伝票入力に含まれるキー情報に基づいて該当する科目（例えば預金）の該当する項目（例えば借方、貸方など）の金額を更新し、試算表復旧エージェント１２２０は、試算表の全項目の金額を一定時間毎に状態ログ格納部１２４０に格納するものである。
また、状況表エージェント１３００は、取引先別状況表１３３０を更新する状況表更新エージェント１３１０と、取引先別状況表１３３０を復旧する状況表復旧エージェント１３２０とを含む。上記取引先別状況表１３３０は、実施形態１で説明したようにメモリ空間上に定義されており、状況表更新エージェント１３１０は、伝票入力を受けるたびに、伝票入力に含まれるキー情報に基づいて該当する取引先（例えば銀行Ａ）の該当する項目（例えば借方、貸方など）の金額を更新し、状況表復旧エージェント１３２０は、取引先別状況表１３３０の全項目の金額を一定時間毎に状態ログ格納部１３４０に格納するものである。
また、補助元帳エージェント１４００は、補助元帳１４３０を更新する補助元帳更新エージェント１４１０と、補助元帳１４３０を復旧する補助元帳復旧エージェント１４２０とを含む。上記補助元帳１４３０は、実施形態１で説明したようにメモリ空間上に定義されており、補助元帳更新エージェント１４１０は、伝票入力を受けるたびに、伝票入力に含まれるキー情報に基づいて該当する補助元帳１４３０の日付の該当する項目の金額を更新し、補助元帳復旧エージェント１４２０は、補助元帳１４３０の全項目の金額を一定時間毎に状態ログ格納部１４４０に格納するものである。
なお、ここでは、各エージェントは、１つのプロセッサ内にプログラムにより仮想的に実現された仮想プロセッサとしている。
このようなマルチエージェントシステム１０００では、各エージェント（決定性チューリングマシン）は、カーネル１１００の管理の下で分散（独立）して、かつ協調して動作し、例えば、試算表エージェント１２００は伝票入力を受ける度に試算表を更新するとともに、状態ログ格納部１２４０に一定周期で試算表の各項目の値を格納する。
従って、試算表エージェント１２００における試算表更新エージェント１２１０は、実施形態１の状態遷移表Ｔｓ４（図１０）で定義されたチューリングマシンと同等な機能を有しており、以下試算表の更新について説明する。
ただし、論理入力構造および論理出力構造はベクトル空間として捕らえることができ、ここでは、試算表の更新プロセス、つまり、入力データ一件毎に解が求められるプロセスを、ベクトル空間を更新する処理として説明する。
図３９は、試算表（論理出力構造）の更新をベクトル空間の更新として説明する図である。
預金（２０００円）、売掛金（２０００円）を示す会計伝票である入力データＤ１ａは、試算表の関連するキー項目を用いた入力ベクトル空間Ｄ１ｂに対応つけられる。
そして、再帰差分方程式（Ｙ（ｎ）＝Ｙ（ｎ−１）＋ｄ（ｎ））に従って、チューリングマシン１３１０が、入力ベクトル空間Ｄ１ｂに基づいて出力ベクトル空間Ｙ（０）をベクトル空間Ｙ（１）に更新する。
ここで、出力ベクトル空間Ｙ（０）は初期状態の試算表であり、出力ベクトル空間Ｙ（１）は、預金と（借方計）の位置の値を更新した状態の試算表であり、さらに、出力ベクトル空間Ｙ（２）は売掛金と（貸方計）の位置の値を更新した状態の試算表である。
ここで、２次元のベクトル空間内の位置ＹＡＢでの値ＹＡＢ（ｎ）を以下のとおり定義する。
Ｙ１１：預金の借方、Ｙ１３：預金の残高
Ｙ２２：売掛金の貸方、Ｙ２３：売掛金の残高
Ｙ３１：（借方計）の借方、Ｙ３２：（借方計）の貸方、Ｙ３３：（借方計）の残高
再帰差分方程式：Ｙ（ｎ）＝Ｙ（ｎ−１）＋ｄ（ｎ）  （ｄは伝票データ）
（初期状態）
初期状態のベクトル空間Ｙ（０）における上記各位置の値は以下のとおりである。
預金の借方Ｙ１１（０）＝１５０００、預金の残高Ｙ１３（０）＝１４３１０、売掛金の貸方Ｙ２２（０）＝１８７００、売掛金の残高Ｙ２３（０）＝７１８０、（借方計）の借方Ｙ３１（０）＝５９５７０、（借方計）の貸方Ｙ３２（０）＝３０２５０、（借方計）の残高Ｙ３３（０）＝５６１６０
（伝票データ１件目）
伝票データ１件目が入力されると、初期状態のベクトル空間における上記各位置の値は以下のとおり更新される。
Ｙ１１（１）＝Ｙ１１（０）＋ｄ１（１）＝１５０００＋２０００＝１７０００
Ｙ１３（１）＝Ｙ１３（０）＋ｄ３（１）＝１４３１０＋２０００＝１６３１０
Ｙ３１（１）＝Ｙ３１（０）＋ｄ１（１）＝５９５７０＋２０００＝６１５７０
Ｙ３３（１）＝Ｙ３３（０）＋ｄ３（１）＝５６１６０＋２０００＝５８１６０
（伝票データ２件目）
伝票データ２件目が入力されると、伝票データ１件目が入力されたときのベクトル空間Ｙ（１）における上記各位置の値は以下のとおり更新される。
Ｙ２２（２）＝Ｙ２２（１）＋ｄ２（２）＝１８７００＋２０００＝２０７００
Ｙ２３（２）＝Ｙ２３（１）＋ｄ３（２）＝７８１０＋（−２０００）＝５８１０
Ｙ３２（２）＝Ｙ３２（１）＋ｄ２（２）＝３０２５０＋２０００＝３２２５０
Ｙ３３（２）＝Ｙ３３（１）＋ｄ３（２）＝５８１６０＋（−２０００）＝５６１６０
このように伝票データ（ベクトル空間）により初期条件が定められたベクトル空間（論理出力構造）を、伝票データとしてのベクトル空間における点と論理出力構造としてのベクトル空間における点とを１対１に対応付けるアルゴリズム（１対１対応アルゴリズム）で更新すると、論理出力構造における解（各点の値）は、一意に定まり、知識となる。
この実施形態１の変形例では、エージェントをチューリングマシンとし、再帰的枚挙で入力データの１件毎に瞬時に解を出す。分散協調マルチエージェントはビジネスソリューションセンターとして運行可能である。
また、マルチエージェントによりマルチタスクが可能であり、さらに、カーネルによる障害管理を実現している。
各論理出力構造における値を状態ログに格納しておくことで、平常時と災害時のシームレスな運行が可能である。
さらに、このシステムでは、問題、つまり試算表、状況表、補助元帳の更新という問題を、再帰分割し、エージェントも再帰分割し、分散協調で、問題を解決している。線形システムにより分割された解は重ね合わせの原理で合成することができる。
また、知識データベースの共有でナレッジサイクルを実現している。
つまり、論理入力（伝票データ）により更新される論理出力構造は、別の論理出力構造の論理入力構造となり得るものであることから、上記実施形態１あるいはその変形例のように論理入力により論理出力構造を更新するシステムでは、得られた論理出力構造（知識）を再利用して新たな知識（別の論理出力構造）を創造することができ、これをナレッジ・サイクル・イネーブリングという。
以下、このようなナレッジ・サイクル・イネーブリングについて具体例を挙げて簡単に説明する。
図４０は、決算整理におけるナレッジ・サイクル・イネーブリングを説明する図である。
貸倒引当金繰入（１００）、貸倒引当金（１００）を含む入力データ（決算修正仕訳）Ｄ２ａは、論理入力構造Ｄ２ｂに変換される。
この論理入力構造Ｄ２ｂに基づいて、決算整理修正仕訳機能を有する決定性チューリングマシン２１００が残高試算表（論理出力構造）ＲＳａを知識データベースとして作成する。
作成された残高試算表ＲＳａは、精算表作成機能を有する決定性チューリングマシン２２００の論理入力構造となり、この論理入力構造から決定性チューリングマシン２２００により精算表（論理出力構造）ＲＳｂが作成される。
図４１は、精算表の貸借対照表部分から貸借対照表を作成するナレッジ・サイクル・イネーブリングを説明する図である。
上記精算表ＲＳｂの貸借対照表部分ＲＳｂａを論理入力構造として、貸借対照表作成機能を有する決定性チューリングマシン（ソリュージョンエージェント）２３００が、精算表ＲＳｂの貸借対照表部分ＲＳｂａに含まれる勘定科目のうち、貸借対照表に必要となる勘定科目を定義概念（オントロジー）ＤＣ１（図４６に拡大して示す）を参照して抽出して、勘定科目と金額とを対応付けた貸借対照表ＲＳｃを作成する。ここで、定義概念（オントロジー）ＤＣ１は、アメリカ合衆国政府が定義した貸借対照表に用いるべき項目である。
続いて、ＢＳインスタンス作成部２４００は、タクソノミー（現在用いられている会計報告書のモデル）ＴＸＬからラベル要素抽出により得られる形式（ＢＳラベルテーブル）ＢＳｔを参照して、上記貸借対照表ＲＳｃを英語に翻訳し、貸借対照表ＲＳｄを表現する電子帳票（ＸＢＲＬ：ＢＳ＿インスタンス）ＲＳｃ’を作成する。ここで、ＢＳインスタンス作成部２４００は、ソリュージョンエージェント２３００により作成された貸借対照表（論理出力構造）ＲＳｃを論理入力構造としてＢＳインスタンスＲＳｃ’を作成する機能を有する決定性チューリングマシンである。また、電子帳票（ＸＢＲＬ：ＢＳ＿インスタンス）ＲＳｃ’をＨＴＭＬ変換したものが貸借対照表ＲＳｄである。なお、図４３は、電子帳票（ＸＢＲＬ：ＢＳ＿インスタンス）ＲＳｃ’の全体を示している。
図４２は、精算表から損益計算書を作成するナレッジ・サイクル・イネーブリングを説明する図である。
上記精算表ＲＳｂの損益計算書部分ＲＳｂｂを論理入力構造として、損益計算書作成機能を有する決定性チューリングマシン（ソリュージョンエージェント）２５００が、精算表ＲＳｂの損益計算書部分ＲＳｂｂに含まれる勘定科目のうち、損益対象表に必要となる勘定科目を定義概念（オントロジー）ＤＣ２（図４７に拡大して示す）を参照して抽出して、勘定科目と金額とを対応付けた損益計算表ＲＳｅを作成する。ここで、定義概念（オントロジー）ＤＣ２は、アメリカ合衆国政府が定義した損益計算表に用いるべき項目である。
続いて、ＰＬインスタンス作成部２６００は、タクソノミー（現在用いられている会計報告書のモデル）ＴＸＬからラベル要素抽出により得られる形式（ＰＬラベルテーブル）ＰＬｔを参照して、上記損益計算書ＲＳｅを英語に翻訳し、損益計算書ＲＳｆを表現する電子帳票（ＰＬインスタンス）ＲＳｅ’を作成する。ここで、ＰＬインスタンス作成部２６００は、ソリュージョンエージェント２５００により作成された損益計算書（論理出力構造）ＲＳｅを論理入力構造としてＰＬインスタンスＲＳｅ’を作成する機能を有する決定性チューリングマシンである。また、電子帳票（ＰＬ＿インスタンス）ＲＳｅ’をＨＴＭＬ変換したものが損益計算書ＲＳｆである。なお、図４４は、電子帳票（ＰＬインスタンス）ＲＳｅ’の全体を示している。
〔ＤＳＰによる論理演算〕
また、上記のような論理演算入力から論理演算出力を求める処理は、あらゆる信号処理にも適用可能である。
近年の携帯電話などのモバイル機器では、マルチメディアデータが扱われるようになっており、音声データや映像データなどの膨大なデータを圧縮して多重化して送信しており、データの送受信にはデジタル信号の高速演算処理が必要となってきており、このような高速演算処理を行う能力を持つプロセッサはＤＳＰの他にはなく、ＤＳＰ（デジタル・シグナル・プロセッサ）の改良が進められている。
ＤＳＰの特徴は、高速乗算器を備え、メモリと高速演算器との間でのデータ転送を効率よく行うため、データバスとプログラムバスとを分離した構成（ハーバード型アーキテクチャー）を有している点であり、最近では、複数のデータバスと複数の演算器とを備えたものもある。
例えば、ＤＳＰでは、デジタル信号処理を高速演算器とメモリを用いて高速で行うことができ、従って、ＤＳＰの前段にＡＤ変換器を設け、その後段にＤＡ変換器を設けることで、映像信号、音声信号、センサ出力、記録媒体から読み出された信号、無線通信により受信された信号、電話回線から受信した信号などのあらゆるアナログ信号をリアルタイムで処理して、表示装置、スピーカ、モータへの入力信号に変換したり、発光素子からの光信号の出射、あるいはアンテナからの送信を行ったりするなどの、信号受信、信号処理、および信号出力を高速で行うことができる。
従って、本発明の基本概念は、メモリ空間上に演算結果として求められる論理出力構造（ベクトル空間）を定義し、入力データを論理入力構造（ベクトル空間）として捕らえて、ベクトル空間の各点の値に分解し、分解した値を、論理出力構造（ベクトル空間）の点の値に一対一に対応付けて瞬時に解を求めるものであることから、このような本発明の基本概念、つまりメモリと演算器との組み合わせで、論理入力構造における点の値から論理出力構造における値を更新する演算システムは、メモリと高速演算器との間のデータ転送を効率化したＤＳＰの設計思想と極めてマッチしたものである。
従って、本発明は、論理演算システムをＤＳＰ上に実装することで、現在行われている携帯電話でのデータ処理を飛躍的に高速化することが可能となり、携帯電話などのモバイル機器で膨大な演算を短時間で行うことができることとなる。
【０２８８】
（実施形態２）
次に本発明の実施形態２として、上記実施形態１のホストコンピュータ３にクライアントが要求するリアルタイム演算システムとして機能させるためのプログラムを自動生成するプログラム自動生成装置について説明する。
【０２８９】
まず、プログラム自動生成装置の構成について説明する。
【０２９０】
図３３は、本実施形態２のプログラム自動生成装置を構成する図である。
【０２９１】
このプログラム自動生成装置２００は、プログラムを状態遷移図あるいは状態遷移表から自動生成するプログラム自動生成装置であって、該状態遷移図あるいは状態遷移表が示す第１の情報から中間情報である第２〜第４の情報を作成する中間情報作成部２１０と、該第２〜第４の情報に基づいて、該プログラムのソースコードを生成するソースコード作成部２２０とを有している。
【０２９２】
ここで、前記第１の情報は、コンピュータが、どの状態のときに、どの入力があると、どの処理を行って、どの状態に遷移するかを示す情報である。中間情報作成部２１０は、該第１の情報に含まれる現状態と処理条件とを示す情報に基づいて、該コンピュータが現状態でどれだけの条件を判定するかを示す情報を該第２の情報として作成し、該第１の情報に含まれる条件内容と次状態とを示す情報に基づいて、該コンピュータがどのような条件でどれだけの処理を行って次の状態に移るかを示す情報を該第３の情報として作成し、該第１の情報に含まれる条件の判断と処理の実行の順序を示す情報に基づいて、該コンピュータが判断する条件と該コンピュータが実行する処理とを順に示す情報として、該第４の情報を作成する。
【０２９３】
また、前記ソースコード作成部２２０は、該第２及び３の情報に基づいて、前記コンピュータの各状態への遷移を示すソースコードを生成し、該第４の情報に基づいて、該コンピュータが実行する前記条件及び前記処理を示すソースコードを生成する。
【０２９４】
なお、このようなプログラム自動生成処理は、コンピュータにより行われるものであり、コンピュータは、プログラム自動生成プログラムが格納した記録媒体からプログラム自動生成プログラムを読み取って、上記プログラム自動生成処理を実行する。
【０２９５】
次にプログラム自動生成装置の動作について説明する。
Ａ．状態遷移表からプログラム生成のための表を生成する処理
まず、上記各状態遷移表Ｔｓ１〜Ｔｓ６が示す動作をコンピュータが行うためのプログラムを生成するための表２〜表４を作成する方法を説明する。
【０２９６】
図１７は、関数（ＴＲＡＮＳＡＣＴＩＯＮ）を表す状態遷移表（表１）Ｔｓ１から、この状態遷移表が示す動作を行うプログラムを生成するための表２〜表４を作成する方法を説明する図である。図１８は、この方法により得られるプログラムのソースファイルを示す図である。また、状態遷移表（表１）から上記表２〜４を生成するフローに相当する手順は図３１に示すとおりである。
【０２９７】
ここで、表２は、特定のマシン（コンピュータ）が、現状態でどれだけの条件を判定するかを示す表である。表３は、コンピュータが、どのような条件でどれだけの処理を行って次の状態に移るかを示す表である。表４は、コンピュータが判断する条件と、コンピュータが実行する処理とを、状態遷移表が示すコンピュータの処理手順の順に示す表である。
【０２９８】
具体的には、表２は、各状態遷移表を有限状態マシンとしたときにこのマシンを特定するマシン番号を示す欄「マシン」、現状態を示す欄「現状態」、現状態で判定する１以上の条件の最初のものと最後のものを示す欄「ｆｒｏｍ」、「ｔｏ」を含んでいる。この表２のＮｏの欄の行番号は、状態遷移表Ｔｓ１における現状態の値に対応している。ここで、有限状態マシンは、１つのチューリングマシンであり、プログラムに基づいたコンピュータによる演算機能である。
【０２９９】
表３は、条件の内容を示す欄「条件内容」、その条件の下で行う１以上の処理の最初のものと最後のものを示す欄「ｆｒｏｍ」、「ｔｏ」、および最後の処理を行った後に遷移する遷移先状態を示す欄「次状態」を含んでいる。この表３のＮｏの欄の行番号は、状態遷移表Ｔｓ１における条件の欄に現われる条件の順番に対応している。
【０３００】
表４は、条件および処理の内容を示す欄「内容」を含んでおり、この表４のＮｏの欄の行番号は、状態遷移表Ｔｓ１の条件の欄および処理の欄に現われる条件および処理の順番に対応している。
【０３０１】
次に、表１から上記表２〜表４を作成する方法について説明する。
【０３０２】
まず、状態遷移表Ｔｓ１では、マシンの現状態は１〜３の３つであるので、表２（図１７（ｂ））には、各現状態に対応したＮｏ１〜Ｎｏ３までの欄が順次設けられる。また、この状態遷移表Ｔｓ１では、条件は４つ含まれているので、表３（図１７（ｃ））には、各条件に対応したＮｏ１〜Ｎｏ４までの欄が順次設けられる。また、この状態遷移表Ｔｓ１では、６つの処理と、１つの条件（無条件を含まない）とがあるため、表４（図１７（ｄ））には、これらの個数をあわせた個数に対応したＮｏ１〜Ｎｏ７までの欄が順次設けられる。
〔状態遷移表Ｔｓ１の１行目の処理〕
（１．表１の１件目の入力）
表１の１件目（Ｎｏ１）の入力に対して、下記の１．１〜１．５の処理を順次行う。
【０３０３】
ここで、表１は、上記状態遷移表Ｔｓ１〜Ｔｓ６のいずれかであり、具体例としては、状態遷移表Ｔｓ１（図１７（ａ））を挙げて説明する。
【０３０４】
（１．１  入力／条件の判定）
ここで、入力／条件とは、入力した表１の行の項目の「条件」の値を言う。以下、この表現を用いる。
【０３０５】
ａ）入力／条件≠「−（無条件）」の場合、つまり、条件が「−」以外の場合は、入力／条件を表４に追加する。このとき、表４の行番号を◆条件行に設定する。この条件行の表現のように先頭に◆を付けたものは、変数を意味するものとし、ここでは「◆条件行」は変数を意味している。
【０３０６】
ｂ）上記以外の場合、◆条件行に−１を格納する。
【０３０７】
状態遷移表Ｔｓ１の場合、第１行目の条件は「−」であるので、◆条件行に「−１」を格納する。
【０３０８】
（１．２  入力／処理の判定）
この入力処理の判定は、入力／処理が空白であるか否かの判定を行い、判定結果を表４に格納する。
【０３０９】
ａ）入力／処理≠空白の場合は、入力／処理を表４に追加する。このとき表４の行番号「１」を◆処理行に格納する。この処理行の表現のように先頭に◆を付けたものは、変数を意味するものとし、ここでは「◆処理行」は変数を意味している。
【０３１０】
ｂ）上記以外の場合、変数としての◆処理行に−１を格納する。
【０３１１】
具体的には、状態遷移表（表１）Ｔｓ１の場合を考えると、この表１の１行目の入力／処理は「ｒｔｎ＝ＡＣＣ＿ＬＯＡＤ」であるため、表４の１行目の内容には、「ｒｔｎ＝ＡＣＣ＿ＬＯＡＤ」が格納される。表４の行番号「１」が◆処理行に格納される。
【０３１２】
（１．３  表３に対する値の追加）
次に、表４にて追加した行番号「１」を、この時点での◆表３（変数）の値とする。
【０３１３】
追加時の表３の項目は以下のとおりである。
【０３１４】
条件内容には、◆条件行（変数）の値「−１」が格納される。
【０３１５】
ＦＲＯＭには、◆処理行（変数）の値「１」が格納される。
【０３１６】
ＴＯには、◆処理行（変数）の値「１」が格納される。
【０３１７】
次状態には、入力／次状態（状態遷移表Ｔｓ１の１行目の次状態）「２」が格納される。
【０３１８】
（１．４  表２に対する行の追加）
追加した行番号「１」を、この時点での◆表２（変数）の値とする。
【０３１９】
追加時の表２の各項目は以下のとおりである。
【０３２０】
表２のマシンには「１」が格納され、表２の現状態には、状態遷移表Ｔｓ１の入力／現状態の値「１」が格納され、表２のＴＯには、この時点での◆表３（変数）の値「１」が格納され、表２のＦＲＯＭには、同様に、◆表３（変数）の値「１」が格納される。
【０３２１】
（１．５  表１の読込み）
ここでは、以下に示す表１の２行目の以降の処理を行う。
〔状態遷移表Ｔｓ１の２行目の処理〕
（２．  表１の２行目以降の処理）
（２．１  表１の読込み）
表１の読込みで、２行目以降の処理があるか否かを判定し、つまり、ＥＯＦ（終わり）であるか否かを判定し、ＥＯＦであれば、処理を終了する。
【０３２２】
状態遷移表Ｔｓ１の場合は、２行目以降も処理があるので、以下の判定処理が行われる。
【０３２３】
（２．２  入力／現状態≠空白の判定）
表１の入力／現状態≠空白の場合、上記の１．１／１．２／１．３／１．４／の処理を行い、後述の２．５の処理に行く。
【０３２４】
状態遷移表Ｔｓ１の場合は、入力／現状態＝空白であるので、以下の判定処理が行われる。
【０３２５】
（２．３  入力／現状態＝空白  ＡＮＤ  入力／条件≠空白の判定）
入力／現状態＝空白  ＡＮＤ  入力／条件≠空白の場合、上記の１．１／１．２／１．３／の処理を行う。
【０３２６】
◆表２（変数）の値が示す表２の行の項目「ＴＯ」に◆表３（変数）の値が格納される。
【０３２７】
その後、２．５の処理に行く。
【０３２８】
表１の２行目は、入力／現状態＝空白  ＡＮＤ  入力／条件＝空白であるので、以下の２．４の処理に移る。
【０３２９】
（２．４  入力／現状態＝空白  ＡＮＤ  入力／条件＝空白の判定）
入力／現状態＝空白  ＡＮＤ  入力／条件＝空白の場合、上記の１．２の処理を行う。
【０３３０】
なお、この条件は上記以外と同じ意であり、つまり２．１／２．２／２．３以外の場合は存在しない。
【０３３１】
表１の２行目は、この場合に該当する。
【０３３２】
このとき、上記１．２の処理では、表４に２行目の入力／処理（ｒｔｎ＝ＬＩＮＫ＿ＬＯＡＤ）が追加され、◆処理行（変数）の値は、行番号「２」にされる。
【０３３３】
なお、この場合、「◆処理行  ＝  −１」はあり得ない。つまり、条件・処理共に空白の行は存在しない。
【０３３４】
◆表３（変数）の値が示す表３の行の項目「ＴＯ」に◆処理行（変数）の値「２」が格納される。
【０３３５】
その後、２．５の処理を経て、２．の処理に移る。
〔状態遷移表Ｔｓ１の３行目の処理〕
（２．  表１の２行目以降の処理）
（２．１  表１の読込み）
表１の読込みで、３行目以降の処理があるか否かを判定し、つまり、ＥＯＦ（終わり）であるか否かを判定し、ＥＯＦであれば、処理を終了する。
【０３３６】
状態遷移表Ｔｓ１の場合は、３行目以降も処理があるので、以下の判定処理が行われる。
【０３３７】
（２．２  入力／現状態≠空白の判定）
入力／現状態≠空白の場合、上記の１．１／１．２／１．３／１．４／の処理を行い、後述の２．５の処理に行く。
【０３３８】
状態遷移表Ｔｓ１の場合は、３行目の入力／現状態＝空白であり、かつ入力／条件＝空白であるので、２．３の処理を経て、上記の１．２の処理に移る。
【０３３９】
このとき、上記１．２の処理では、表４に３行目の入力／処理（ｒｔｎ＝＄ＯＰＥＮ（１，”Ｒ”））が追加され、◆処理行（変数）の値は、行番号「３」にされる。
【０３４０】
その後、表３の行の項目「ＴＯ」に◆処理行（変数）の値「３」が格納される。
【０３４１】
その後、２．５の処理を経て、２．の処理に移る。
〔状態遷移表Ｔｓ１の４行目の処理〕
２．の処理では、状態遷移表Ｔｓ１の場合は、４行目以降も処理があるので、２．１の処理を経て、２．２の処理で、入力／現状態の空白の判定処理が行われる。
【０３４２】
この状態遷移表Ｔｓ１の４行目では、入力／現状態が空白でないので、上記の１．１／１．２／１．３／１．４／の処理を行う。
【０３４３】
まず、１．１の処理を行う。この行では、入力／条件は無条件であるので、１．１の処理では、◆条件行（変数）の値は「−１」となる。次に、１．２の処理では、４行目の入力／処理が空白でないので、表４に４行目の入力／処理（ｒｔｎ＝＄ＲＥＡＤ（１））が追加され、◆処理行（変数）の値は、行番号「４」にされる。
【０３４４】
続く１．３の処理では、表３に２行目を追加し、この２行目の条件内容に、この時点での◆条件行（変数）の値「−１」を格納する。◆表３（変数）に、追加した行番号「２」を格納する。
【０３４５】
表３の追加した２行目の項目「ＦＲＯＭ」と「ＴＯ」に、この時点での◆処理行（変数）の値「４」が格納される。
【０３４６】
さらに、この表３の追加した２行目の項目「次状態」には、状態遷移表Ｔｓ１の４行目の次状態「３」を格納する。
【０３４７】
次に、１．４の処理では、表２の２行目を追加する。
【０３４８】
追加した行番号「２」を、この時点での◆表２（変数）の値とする。
【０３４９】
表２の追加した２行目の各項目は以下のとおりである。
【０３５０】
表２の項目マシンには、「１」が格納され、表２の項目現状態には、入力／現状態の値「２」が格納され、表２の項目ＴＯには、この時点での◆表３（変数）の値「２」が格納され、表２の項目ＦＲＯＭには、同様に、◆表３（変数）の値「２」が格納される。
【０３５１】
（１．４  表２に対する行の追加）
追加した行番号「２」を、この時点での◆表２（変数）の値とする。
【０３５２】
追加時の表２の各項目は以下のとおりである。
【０３５３】
表２のマシンには「１」が格納され、表２の現状態には、状態遷移表Ｔｓ１の入力／現状態の値「２」が格納され、表２のＴＯには、この時点での◆表３（変数）の値「２」が格納され、表２のＦＲＯＭには、同様に、◆表３（変数）の値「２」が格納される。
【０３５４】
（１．５  表１の読込み）
表１の５行目を読み込む。
〔状態遷移表Ｔｓ１の５行目の処理〕
次に、表１の５行目を読み込んだ後、２．の処理（表１の５行目の処理）が行われる。
【０３５５】
状態遷移表Ｔｓ１の場合は、５行目以降も処理があるので、入力／現状態の空白の判定処理が行われる。
【０３５６】
この状態遷移表の５行目では、入力／現状態が空白でないので、上記の１．１／１．２／１．３／１．４／の処理を行う。
【０３５７】
まず、１．１の処理を行う。この行では、入力／条件は条件「ｒｔｎ＝３」であるので、表４にこの条件「ｒｔｎ＝３」を追加し、追加した行番号「５」を、◆条件行（変数）の値とする。
【０３５８】
１．２の処理では、状態遷移表Ｔｓ１の５行目の入力／処理は空白ではなく、処理「ｒｔｎ＝＄ＣＬＯＳＥ（１）」があるので、表４にこの入力／処理「ｒｔｎ＝＄ＣＬＯＳＥ（１）」が追加され、◆処理行（変数）の値は、追加した行番号「６」にされる。
【０３５９】
続く１．３の処理では、表３に３行目を追加し、この３行目の条件内容に、この時点での◆条件行（変数）の値「５」を格納する。また、◆表３（変数）に、追加した行番号「３」を格納する。
【０３６０】
表３の追加した３行目の項目「ＦＲＯＭ」と「ＴＯ」に、この時点での◆処理行（変数）の値「６」が格納される。
【０３６１】
さらに、この表３の追加した３行目の項目「次状態」には、状態遷移表Ｔｓ１の５行目の次状態「９９９」を格納する。
【０３６２】
次に、１．４の処理では、表２の３行目を追加する。
【０３６３】
追加した行番号「３」を、この時点での◆表２（変数）の値とする。
【０３６４】
表２の追加した３行目の各項目は以下のとおりである。
【０３６５】
表２の追加した３行目の項目マシンには、「１」が格納され、この３行目の表２の項目現状態には、入力／現状態の値「３」が格納され、表２の追加した３行目の項目ＴＯには、この時点での◆表３（変数）の値「３」が格納され、表２の項目ＦＲＯＭには、同様に、◆表３（変数）の値「３」が格納される。
【０３６６】
（１．５  表１の読込み）
表１の６行目を読み込む。
〔状態遷移表Ｔｓ１の６行目の処理〕
次に、表１の６行目を読み込んだ後、２．の処理（表１の６行目の処理）が行われる。
【０３６７】
状態遷移表Ｔｓ１の場合は、６行目も処理があるので、入力／現状態の空白の判定処理が行われる。
【０３６８】
この状態遷移表Ｔｓ１の６行目では、入力／現状態が空白であるので、２．２の処理は行わず、２．３の処理では、入力／条件は空白ではなく、「−（無条件）」であるので、上記の１．１／１．２／１．３／の処理を行う。
【０３６９】
まず、１．１の処理を行う。この行では、入力／条件は条件「−（無条件）」であるので、◆条件行（変数）の値を「−１」とする。
【０３７０】
１．２の処理では、状態遷移表Ｔｓ１の６行目の入力／処理は空白ではなく、処理「ｒｔｎ＝ＫＥＲＮＥＬ」があるので、表４にこの入力／処理「ｒｔｎ＝ＫＥＲＮＥＬ」が追加され、◆処理行（変数）の値は、追加した行番号「７」にされる。
【０３７１】
続く１．３の処理では、表３に４行目を追加し、この４行目の条件内容に、この時点での◆条件行（変数）の値「−１」を格納する。◆表３（変数）に、追加した行番号「４」を格納する。
【０３７２】
表３の追加した４行目の項目「ＦＲＯＭ」と「ＴＯ」に、この時点での◆処理行（変数）の値「７」が格納される。
【０３７３】
さらに、この表３の追加した４行目の項目「次状態」には、状態遷移表Ｔｓ１の７行目の次状態「２」を格納する。
【０３７４】
次に、◆表２（変数）の値「３」が示す表２の行の項目「ＴＯ」に、◆表３（変数）の値「４」が格納される。
【０３７５】
その後、２．５の処理に行く。
【０３７６】
（２．５  表１の読込み）
表１の７行目を読み込む。
【０３７７】
状態遷移表Ｔｓ１の場合は、７行目以降は含まれていないので、ＥＯＦであり、処理は終了する。
【０３７８】
上記の処理により、図１７（ａ）に示す状態遷移表（表１）Ｔｓ１から、図１７（ｂ）〜（ｄ）に示す、上記マシン・状態の表（表２）Ｔｓ１ａ、状態の表（表３）Ｔｓ１ｂ、条件と処理の表（表４）Ｔｓ１ｃが生成される。なお、図３１に示す手順は、上記表１から表２〜表４を作成する手順である。
【０３７９】
その他の状態遷移表Ｔｓ２〜Ｔｓ５についても上記と同様の１．処理（表１の１件目の入力）および２．処理（表１の２件目以降の処理）に従って、それぞれの状態遷移表（表１）から、これに対応するプログラムを作成するための表２〜表４が生成される。
【０３８０】
具体的には、図１９、図２１、図２３、図２７、図２９はそれぞれ、状態遷移表Ｔｓ２〜Ｔｓ６に対する表２〜表４を示している。
【０３８１】
図１９（ａ）に示すカーネルを実現する状態遷移表（表１）Ｔｓ２は、図３１に示す手順に従って、この状態遷移表Ｔｓ２からこれに対応するプログラム（図２０参照）を自動生成するのに用いる表２〜表４（図１９（ｂ）〜（ｄ））に変換される。
【０３８２】
図２１（ａ）に示す会計の論理出力の更新処理を実現する状態遷移表（表１）Ｔｓ３は、図３１に示す手順に従って、この状態遷移表Ｔｓ３からこれに対応するプログラム（図２２参照）を自動生成するのに用いる表２〜表４（図２１（ｂ）〜（ｄ））に変換される。
【０３８３】
図２３に示す試算表の更新処理を実現する状態遷移表（表１）Ｔｓ４は、図３１に示す手順に従って、この状態遷移表Ｔｓ４からこれに対応するプログラム（図２５および図２６参照）を自動生成するのに用いる表２〜表４（図２４（ａ）〜（ｃ））に変換される。
【０３８４】
図２７（ａ）に示す預金元帳の更新処理を実現する状態遷移表（表１）Ｔｓ５は、図３１に示す手順に従って、この状態遷移表Ｔｓ３からこれに対応するプログラム（図２８参照）を自動生成するのに用いる表２〜表４（図２７（ｂ）〜（ｄ））に変換される。
【０３８５】
図２９（ａ）に示す固定資産台帳の更新処理を実現する状態遷移表（表１）Ｔｓ６は、図３１に示す手順に従って、この状態遷移表Ｔｓ６からこれに対応するプログラム（図３０参照）を自動生成するのに用いる表２〜表４（図２９（ｂ）〜（ｄ））に変換される。Ｂ．プログラム自動生成用の表からプログラムを生成する処理
次に、各状態遷移表（表１）に対応する表２〜４からプログラムとしてのソースファイルを自動生成する処理について説明する。
【０３８６】
図３２は、このソースファイルを上記表２〜４から自動生成する手順を示している。
【０３８７】
以下、関数（ＴＲＡＮＳＡＣＴＩＯＮ）を表す状態遷移表（表１）Ｔｓ１に対応するマシン・状態の表（表２）Ｔｓ１ａ、状態の表（表３）Ｔｓ１ｂ、条件と処理（表４）Ｔｓ１ｃから、関数（ＴＲＡＮＳＡＣＴＩＯＮ）としての機能を実現するプログラムを生成する方法を、図３２の処理手順に従って、図１７（ａ）〜（ｄ）および図１８を参照して説明する。なお、図３２に示す手順は上記プログラムを生成するフローに相当するものである。
【０３８８】
１．表２の第１行目の行番号「１」を◆表２（変数）に格納する。
【０３８９】
続いて、以下の処理を行う。
【０３９０】
１−１．マシン１（対象となった状態遷移）の関数の先頭部分を示すＣソースを生成する。これにより、ソースコードの１行目の「ｄｏｕｂｌｅ  ＴＲＡＮＳＡＣＴＩＯＮ｛」が生成され、ソースコードの２行目の「ｄｏｕｂｌｅ  ＴＲＡＮＳＡＣＴＩＯＮ＿ｒｔｎ＝０；」が生成される。
【０３９１】
１−２．マシン１で使用するローカル変数を示すＣソースを生成する。これにより、ソースコードの３行目の「ｄｏｕｂｌｅ  ｒｔｎ＝０；」が生成される。
【０３９２】
１−３．状態１への遷移を示すＣソース「ｇｏｔｏ  ｓ００１；」（４行目のソースコード）を生成する。
【０３９３】
２．の処理に行く。
【０３９４】
２．状態のラベルを生成する。
【０３９５】
表２の行＝◆表２（つまり◆表２（変数）の値は「１」であるので、表２の１行目）の状態を表すラベルを出力する。これにより、ソースコードの５行目のラベル「ｓ００１：」が生成される。
【０３９６】
次に、表２の行＝◆表２（表２の１行目）の項目「ＦＲＯＭ」の値「１」を◆条件ＦＲＯＭ（変数）に格納する。
【０３９７】
表２の行＝◆表２（表２の１行目）の項目「ＴＯ」の値「１」を◆条件ＴＯ（変数）に格納する。
【０３９８】
次に、３．の処理に行く。
【０３９９】
３．表３に対応するＣソースを編集する。
【０４００】
３−１．まず、◆ＸＸ（変数）に◆条件ＦＲＯＭ（変数）の値を格納する。
【０４０１】
３−２．◆ＸＸ  ＞  ◆条件ＴＯの比較判定を行う。◆ＸＸ  ＞  ◆条件ＴＯを満たす場合、４．の処理に行く。ここでは、◆ＸＸの値「１」、◆条件ＴＯの値「１」であるので、◆ＸＸ  ＞  ◆条件ＴＯを満たしておらず、３−３．の処理に行く。
【０４０２】
３−３．表３の行＝◆ＸＸ（つまり◆ＸＸ（変数）の値は「１」であるので、表３の１行目）の項目「ＦＲＯＭ」の値「１」を◆処理ＦＲＯＭ（変数）に格納する。
【０４０３】
表３の行＝◆ＸＸ（表３の１行目）の項目「ＴＯ」の値「３」を◆処理ＴＯ（変数）に格納する。
【０４０４】
表３の行＝◆ＸＸ（表３の１行目）の項目「次状態」の値「２」を◆次状態（変数）に格納する。
【０４０５】
表３の行＝◆ＸＸ（表３の１行目）の項目「条件内容」の値「−１」を◆条件内容（変数）に格納する。
【０４０６】
３−４．◆条件内容（変数）＝−１の場合は３−５．の処理に行く。
【０４０７】
上記以外の場合は、表４の行＝◆条件内容の条件内容のＣソースを生成する。
【０４０８】
ここでは、◆条件内容（変数）の値は「−１」であるので、３−５．の処理を行う。
【０４０９】
３−５．◆処理ＦＲＯＭ（変数）＝−１の場合は、３−９．の処理を行い、◆処理ＦＲＯＭ（変数）≠−１の場合は、以下の処理を行う。
【０４１０】
現時点では、◆処理ＦＲＯＭ（変数）の値は、「１」であるので、以下の処理を行う。
【０４１１】
３−６．◆ＹＹ（変数）に◆処理ＦＲＯＭ（変数）の値を格納する。
【０４１２】
３−７．◆ＹＹ（変数）＞◆処理ＴＯ（変数）の場合は、３−９．の処理を行う。
【０４１３】
この時点では、◆ＹＹ（変数）の値は「１」であり、◆処理ＴＯ（変数）の値は、「３」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たさないので、３−８．の処理を行う。
【０４１４】
３−８．表４の行＝◆ＹＹ（つまり、この時点で◆ＹＹの値は「１」であるので、表４の１行目）の処理に相当するＣソースを出力する。
【０４１５】
これにより、ソースコードの６行目の「ｒｔｎ＝ＡＣＣ＿ＬＯＡＤ（）；」が生成される。
【０４１６】
その後、◆ＹＹ（変数）を◆ＹＹ（変数）＋１とする。これにより、◆ＹＹ（変数）の値は「２」になる。
【０４１７】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「２」であり、◆処理ＴＯ（変数）の値は、「３」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たさないので、３−８．の処理を行う。
【０４１８】
３−８．表４の行＝◆ＹＹ（変数）（◆ＹＹ（変数）の値は「２」であるので、表４の２行目）の処理に相当するＣソースを出力する。これにより、ソースコードの７行目の「ｒｔｎ＝ＬＩＮＫ＿ＬＯＡＤ（）；」が生成される。
【０４１９】
その後、◆ＹＹ（変数）を◆ＹＹ（変数）＋１とする。これにより、◆ＹＹ（変数）の値は「３」になる。
【０４２０】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「３」であり、◆処理ＴＯ（変数）の値は、「３」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たさないので、３−８．の処理を行う。
【０４２１】
３−８．表４の行＝◆ＹＹ（変数）（◆ＹＹ（変数）の値は「３」であるので、表４の３行目）の処理に相当するＣソースを出力する。これにより、ソースコードの８行目の「ｒｔｎ＝＄ＯＰＥＮ（＿Ｃ３，＿Ｃ４）；」が生成される。
【０４２２】
その後、◆ＹＹ（変数）を◆ＹＹ（変数）＋１とする。これにより、◆ＹＹ（変数）の値は「４」になる。
【０４２３】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「４」であり、◆処理ＴＯ（変数）の値は、「３」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たすので、３−９．の処理を行う。
【０４２４】
３−９．の処理では、◆次状態（変数）への遷移に相当するＣソースを生成する。つまり、この時点での◆次状態（変数）の値は「２」であるので、状態２への遷移を示すＣソース「ｇｏｔｏ  ｓ００２；」（９行目のソースコード）を生成する。
【０４２５】
その後、３−１０．の処理を行う。
【０４２６】
３−１０．の処理では、◆条件内容≠−１の場合は、条件（ＩＦ文）の終了を表す「｝」を出力するが、この時点では、◆条件内容の値は「−１」であるので、次の３−１１．の処理を行う。
【０４２７】
３−１１．の処理では、◆ＸＸ（変数）を◆ＸＸ（変数）＋１とする。これにより、◆ＸＸ（変数）の値は「２」になる。
【０４２８】
その後、３−２．の処理を行う。
【０４２９】
３−２．の処理では、◆ＸＸ  ＞  ◆条件ＴＯの比較判定を行う。◆ＸＸ  ＞  ◆条件ＴＯを満たす場合、４．の処理に行く。ここでは、◆ＸＸの値「２」＞◆条件ＴＯの値「１」であるので、◆ＸＸ  ＞  ◆条件ＴＯを満たしており、４．の処理を行う。
【０４３０】
４．の処理では、◆表２（変数）が示す表２の行が、最終行であれば５．の処理を行い、上記以外は、◆表２（変数）を、◆表２（変数）＋１として、２．の処理を行う。
【０４３１】
この場合、◆表２（変数）が示す表２の行は、最終行ではないので、２．の処理が行われる。
【０４３２】
２．の処理では、状態のラベルを生成する。
【０４３３】
つまり、この時点で、表２の行＝◆表２（つまり◆表２（変数）の値は「２」であるので、表２の２行目）の状態を表すラベルを出力する。これにより、ソースコードの１０行目のラベル「ｓ００２：」が生成される。
【０４３４】
次に、表２の行＝◆表２（表２の２行目）の項目「ＦＲＯＭ」の値「２」を◆条件ＦＲＯＭ（変数）に格納する。
【０４３５】
表２の行＝◆表２（表２の２行目）の項目「ＴＯ」の値「２」を◆条件ＴＯ（変数）に格納する。
【０４３６】
次に、３．の処理を行う。
【０４３７】
３．の処理では、表３に対応するＣソースを編集する。
【０４３８】
３−１．まず、◆ＸＸ（変数）に◆条件ＦＲＯＭ（変数）の値を格納する。
【０４３９】
３−２．◆ＸＸ  ＞  ◆条件ＴＯの比較判定を行う。◆ＸＸ  ＞  ◆条件ＴＯを満たす場合、４．の処理に行く。ここでは、◆ＸＸの値「２」＞◆条件ＴＯの値「２」であるので、◆ＸＸ  ＞  ◆条件ＴＯを満たしておらず、３−３．の処理に行く。
【０４４０】
３−３．の処理では、表３の行＝◆ＸＸ（つまり◆ＸＸ（変数）の値は「２」であるので、表３の２行目）の項目「ＦＲＯＭ」の値「４」を◆処理ＦＲＯＭ（変数）に格納する。
【０４４１】
表３の行＝◆ＸＸ（表３の２行目）の項目「ＴＯ」の値「４」を◆処理ＴＯ（変数）に格納する。
【０４４２】
表３の行＝◆ＸＸ（表３の２行目）の項目「次状態」の値「３」を◆次状態（変数）に格納する。
【０４４３】
表３の行＝◆ＸＸ（表３の２行目）の項目「条件内容」の値「−１」を◆条件内容（変数）に格納する。
【０４４４】
３−４．の処理を行う。ここでは、◆条件内容（変数）＝−１の場合は３−５．の処理に行く。上記以外の場合は、表４の行＝◆条件内容の条件内容のＣソースを生成する。
【０４４５】
ここでは、◆条件内容（変数）の値は「−１」であるので、３−５．の処理を行う。
【０４４６】
３−５．の処理では、処理ＦＲＯＭ＝−１の場合は３−９．の処理を行うが、この時点では、処理ＦＲＯＭの値は「４」であるので、３−６．の処理により、◆ＹＹ（変数）に◆処理ＦＲＯＭ（変数）の値「４」を格納する。
【０４４７】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「４」であり、◆処理ＴＯ（変数）の値は、「４」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たさないので、３−８．の処理を行う。
【０４４８】
３−８．の処理では、表４の行＝◆ＹＹ（変数）（◆ＹＹ（変数）の値は「４」であるので、表４の４行目）の処理に相当するＣソースを出力する。これにより、ソースコードの１１行目の「ｒｔｎ＝＄ＲＥＡＤ（＿Ｃ３）；」が生成される。
【０４４９】
その後、◆ＹＹ（変数）を◆ＹＹ（変数）＋１とする。これにより、◆ＹＹ（変数）の値は「５」になる。
【０４５０】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「５」であり、◆処理ＴＯ（変数）の値は、「４」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たすので、３−９．の処理を行う。
【０４５１】
３−９．の処理では、◆次状態（変数）への遷移に相当するｃソースを生成する。つまり、この時点での◆次状態（変数）の値は「３」であるので、状態３への遷移を示すＣソース「ｇｏｔｏ  ｓ００３；」（１２行目のソースコード）を生成する。
【０４５２】
３−１０．の処理では、◆条件内容≠−１の場合は、条件（ＩＦ文）の終了を表す「｝」を出力するが、この時点では、◆条件内容の値は「−１」であるので、次の３−１１．の処理を行う。
【０４５３】
３−１１．の処理では、◆ＸＸ（変数）を◆ＸＸ（変数）＋１とする。これにより、◆ＸＸ（変数）の値は「３」になる。
【０４５４】
その後、３−２．の処理を行う。
【０４５５】
３−２．の処理では、◆ＸＸ  ＞  ◆条件ＴＯの比較判定を行う。◆ＸＸ  ＞  ◆条件ＴＯを満たす場合、４．の処理に行く。ここでは、◆ＸＸの値「３」＞◆条件ＴＯの値「２」であるので、◆ＸＸ  ＞  ◆条件ＴＯを満たしており、４．の処理を行う。
【０４５６】
４．の処理では、◆表２（変数）が示す表２の行が、最終行であれば５．の処理を行い、上記以外は、◆表２（変数）を、◆表２（変数）＋１として、２．の処理を行う。
【０４５７】
この場合、◆表２（変数）が示す表２の行は、最終行ではないので、◆表２（変数）の値に「１」が加えられて◆表２の値は「３」となり、２．の処理が行われる。
【０４５８】
２．の処理では、状態のラベルを生成する。
【０４５９】
つまり、この時点で、表２の行＝◆表２（つまり◆表２（変数）の値は「３」であるので、表２の３行目）の状態を表すラベルを出力する。これにより、ソースコードの１３行目のラベル「ｓ００３：」が生成される。
【０４６０】
次に、表２の行＝◆表２（表２の３行目）の項目「ＦＲＯＭ」の値「３」を◆条件ＦＲＯＭ（変数）に格納する。
【０４６１】
表２の行＝◆表２（表２の３行目）の項目「ＴＯ」の値「４」を◆条件ＴＯ（変数）に格納する。
【０４６２】
次に、３．の処理を行う。
【０４６３】
３．の処理では、表３に対応するＣソースを編集する。
【０４６４】
３−１．まず、◆ＸＸ（変数）に◆条件ＦＲＯＭ（変数）の値を格納する。
【０４６５】
３−２．◆ＸＸ  ＞  ◆条件ＴＯの比較判定を行う。◆ＸＸ  ＞  ◆条件ＴＯを満たす場合、４．の処理に行く。ここでは、◆ＸＸの値「３」＞◆条件ＴＯの値「３」であるので、◆ＸＸ  ＞  ◆条件ＴＯを満たしておらず、３−３．の処理に行く。
【０４６６】
３−３．の処理では、表３の行＝◆ＸＸ（つまり◆ＸＸ（変数）の値は「３」であるので、表３の３行目）の項目「ＦＲＯＭ」の値「６」を◆処理ＦＲＯＭ（変数）に格納する。
【０４６７】
表３の行＝◆ＸＸ（表３の３行目）の項目「ＴＯ」の値「６」を◆処理ＴＯ（変数）に格納する。
【０４６８】
表３の行＝◆ＸＸ（表３の３行目）の項目「次状態」の値「９９９」を◆次状態（変数）に格納する。
【０４６９】
表３の行＝◆ＸＸ（表３の３行目）の項目「条件内容」の値「５」を◆条件内容（変数）に格納する。
【０４７０】
次に、３−４．の処理を行う。ここでは、◆条件内容（変数）＝−１の場合は３−５．の処理に行く。上記以外の場合は、表４の行＝◆条件内容の条件内容のＣソースを生成する。
【０４７１】
ここでは、◆条件内容（変数）の値は「５」であるので、表４の行＝◆条件内容、つまり表４の５行目の条件内容のＣソースを生成する。これにより、ソースコードの１４行目の「ｉｆ（ｒｔｎ＝＝＿Ｃ１）｛」が生成される。
【０４７２】
その後、３−５．の処理を行う。ここでは、処理ＦＲＯＭ＝−１の場合は３−９．の処理を行うが、この時点では、処理ＦＲＯＭの値は「６」であるので、３−６．の処理により、◆ＹＹ（変数）に◆処理ＦＲＯＭ（変数）の値「６」を格納する。
【０４７３】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「６」であり、◆処理ＴＯ（変数）の値は、「６」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たさないので、３−８．の処理を行う。
【０４７４】
３−８．の処理では、表４の行＝◆ＹＹ（変数）（◆ＹＹ（変数）の値は「６」であるので、表４の６行目）の処理に相当するＣソースを出力する。これにより、ソースコードの１５行目の「ｒｔｎ＝＄ＣＬＯＳＥ（＿Ｃ３）；」が生成される。
【０４７５】
その後、◆ＹＹ（変数）を◆ＹＹ（変数）＋１とする。これにより、◆ＹＹ（変数）の値は「７」になる。
【０４７６】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「７」であり、◆処理ＴＯ（変数）の値は、「６」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たすので、３−９．の処理を行う。
【０４７７】
３−９．の処理では、◆次状態（変数）への遷移に相当するｃソースを生成する。つまり、この時点での◆次状態（変数）の値は「９９９」であるので、状態９９９への遷移を示すＣソース「ｇｏｔｏ  ｓ９９９；」（１６行目のソースコード）を生成する。
【０４７８】
３−１０．の処理では、◆条件内容≠−１の場合は、条件（ＩＦ文）の終了を表す「｝」を出力する。つまり、この時点で、◆条件内容の値は「５」であるので、条件（ＩＦ文）の終了を表す「｝」（１７行目のソースコード）を生成する。
【０４７９】
続く３−１１．の処理では、◆ＸＸ（変数）を◆ＸＸ（変数）＋１とする。これにより、◆ＸＸ（変数）の値は「４」になる。
【０４８０】
その後、３−２．の処理を行う。
【０４８１】
３−２．の処理では、◆ＸＸ  ＞  ◆条件ＴＯの比較判定を行う。◆ＸＸ  ＞  ◆条件ＴＯを満たす場合、４．の処理に行く。
【０４８２】
ここでは、◆ＸＸの値「４」＞◆条件ＴＯの値「３」であるので、◆ＸＸ  ＞  ◆条件ＴＯを満たしており、４．の処理を行う。
【０４８３】
３−２．の処理では、◆ＸＸ  ＞  ◆条件ＴＯを満たしておらず、３−３．の処理に行く。
【０４８４】
３−３．の処理では、表３の行＝◆ＸＸ（つまり◆ＸＸ（変数）の値は「４」であるので、表３の４行目）の項目「ＦＲＯＭ」の値「７」を◆処理ＦＲＯＭ（変数）に格納する。
【０４８５】
表３の行＝◆ＸＸ（表３の４行目）の項目「ＴＯ」の値「７」を◆処理ＴＯ（変数）に格納する。
【０４８６】
表３の行＝◆ＸＸ（表３の４行目）の項目「次状態」の値「２」を◆次状態（変数）に格納する。
【０４８７】
表３の行＝◆ＸＸ（表３の４行目）の項目「条件内容」の値「−１」を◆条件内容（変数）に格納する。
【０４８８】
次に、３−４．の処理を行う。ここでは、◆条件内容（変数）＝−１の場合は３−５．の処理に行く。上記以外の場合は、表４の行＝◆条件内容の条件内容のＣソースを生成する。
【０４８９】
ここでは、◆条件内容（変数）の値は「−１」であるので、３−５．の処理を行う。
【０４９０】
３−５．の処理では、処理ＦＲＯＭ＝−１の場合は３−９．の処理を行うが、この時点では、処理ＦＲＯＭの値は「７」であるので、３−６．の処理により、◆ＹＹ（変数）に◆処理ＦＲＯＭ（変数）の値「７」を格納する。
【０４９１】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「７」であり、◆処理ＴＯ（変数）の値は、「７」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たさないので、３−８．の処理を行う。
【０４９２】
３−８．の処理では、表４の行＝◆ＹＹ（変数）（◆ＹＹ（変数）の値は「７」であるので、表４の７行目）の処理に相当するＣソースを出力する。これにより、ソースコードの１８行目の「ｒｔｎ＝ＫＥＲＮＥＬ（）；」が生成される。
【０４９３】
その後、◆ＹＹ（変数）を◆ＹＹ（変数）＋１とする。これにより、◆ＹＹ（変数）の値は「８」になる。
【０４９４】
その後、３−７．の処理を行う。この場合、◆ＹＹ（変数）の値は「８」であり、◆処理ＴＯ（変数）の値は、「７」であるので、◆ＹＹ（変数）＞◆処理ＴＯ（変数）を満たすので、３−９．の処理を行う。
【０４９５】
３−９．の処理では、◆次状態（変数）への遷移に相当するｃソースを生成する。つまり、この時点での◆次状態（変数）の値は「２」であるので、状態２への遷移を示すＣソース「ｇｏｔｏ  ｓ００２；」（１９行目のソースコード）を生成する。
【０４９６】
３−１０．の処理では、◆条件内容≠−１の場合は、条件（ＩＦ文）の終了を表す「｝」を出力する。つまり、この時点で、◆条件内容の値は「−１」であるので、３−１１．の処理を行う。
【０４９７】
続く３−１１．の処理では、◆ＸＸ（変数）を◆ＸＸ（変数）＋１とする。これにより、◆ＸＸ（変数）の値は「５」になる。
【０４９８】
３−２．の処理では、◆ＸＸ  ＞  ◆条件ＴＯの比較判定を行う。◆ＸＸ  ＞  ◆条件ＴＯを満たす場合、４．の処理に行く。ここでは、◆ＸＸの値「５」＞◆条件ＴＯの値「３」であるので、◆ＸＸ  ＞  ◆条件ＴＯを満たしており、４．の処理に行く。
【０４９９】
４．の処理では、◆表２の値は「３」であり、最終行を示しているので、５．の処理に行く。
【０５００】
５．の処理では、終了ラベル「ｓ９９９」（２０行目のソースコード）、終了処理「ｒｅｔｕｒｎ  関数戻値」（２１行目のソースコード）、関数の終わりを表す「｝」（２２行目のソースコード）が生成される。ここでは、終了処理「ｒｅｔｕｒｎ  関数戻値」は、「ｒｅｔｕｒｎ  ＴＲＡＮＳＡＣＴＩＯＮ＿ｒｔｎ」である。
【０５０１】
（実施形態２の効果）
このように本実施形態２では、要求される論理演算システムをコンピュータ上に構築するプログラムを、この論理演算システムを定義する仕様書から得られる状態遷移図あるいは状態遷移表に基づいて自動生成することができる効果がある。
【０５０２】
なお、本実施形態２では、実施形態１の会計システムを構築するためのプログラムを自動生成する場合について説明したが、本実施形態２のプログラム自動生成装置は、状態遷移表あるいは状態遷移図により表される演算処理であれば、どのような演算処理であっても、この演算処理を行うためのプログラムのソースコードを、状態遷移表あるいは状態遷移図から自動生成することが可能である。
【０５０３】
（実施形態３）
次に、本発明の実施形態３による論理演算システムとして、分散共分散の逐次計算のモデルについて説明する。
【０５０４】
従来から統計演算処理は、一般的にはデータを蓄積した後に、バッチ演算により一括して演算結果を求めているが、金融リスクの計算（最小二乗法）などに用いられる基本変数である分散・共分散は、時々刻々と変化する株価などに基づく株価変動の予測情報、例えば、複数の銘柄の株価の相関を示すものとなり、この相関により、関連する株価の予測情報をリアルタイムで取得することは非常に有利となる。
【０５０５】
そこで、この実施形態３では、２変数の相関を示す分散共分散を求める論理演算システムについて説明する。
【０５０６】
この論理演算システムは、２つの変数Ａ及びＢ（例えば、２つの銘柄の株価）の変化に基づいて、変数Ａの分散、変数Ａ及びＢの共分散、及び変数Ｂの分散を、変数Ａ及びＢの値を含む５つのデータが時々刻々と入力される度に算出する論理演算システムを例に挙げて説明する。
【０５０７】
図３６は、本発明の実施形態３による論理演算システムを説明する図であり、この論理演算システムで行う分散共分散の逐次計算のモデルを示している。
【０５０８】
この論理演算システム３００では、２変数の論理入力Ｓｉｎ３に基づく論理出力Ｓｏｕｔ３である分散共分散がユーザ要求に応じた集計結果である。また、この実施形態３では、分散共分散である集計結果は、時々刻々と変化する値を有する点の集合からなる多様体上で、１つの局所座標系として定義されている。この局所座標系では、Ｙ軸上及びＸ軸上にそれぞれ変数Ａ及びＢが定義され、Ｘ軸上の変数ＡとＹ軸上の変数Ａとで定義される点が変数Ａの分散としての値を有し、Ｘ軸上の変数ＢとＹ軸上の変数Ｂとで定義される点が変数Ｂの分散としての値を有し、Ｘ軸上の変数Ａあるいは変数ＢとＹ軸上の変数Ｂあるいは変数Ａとで定義される点が変数Ａ及びＢの共分散としての値を有している。
【０５０９】
ここで、局所座標系の各点はメモリ空間に写像され、該メモリ空間上で局所座標系の各点の値が更新される。また、局所座標系の各点の値（基本変数）の更新は、要求仕様に応じた関数が組み込まれた決定性チューリングマシンを用いて行われる。
【０５１０】
従って、この実施形態３の論理演算システム３００は、実施形態１のリアル会計システムとは、論理入力Ｓｉｎ３、論理出力構造Ｓｏｕｔ３、及び論理入力から論理出力を導出する関数が異なる以外は、同等の構成を有している。
【０５１１】
まず、論理入力Ｓｉｎ３について説明する。
【０５１２】
ここでは、論理入力Ｓｉｎ３は、変数Ａ及びＢとして、それぞれＮｏ．１〜Ｎｏ．５までの５件のデータを含んでいる。また、論理出力Ｓｏｕｔ３には、１〜５件目のデータが入力された時点での、変数Ａの分散、変数ＡとＢの共分散、変数Ｂの共分散の値を含んでいる。
【０５１３】
一般的なバッチ処理時の分散共分散の計算式は、以下の式（１）で表される。
【０５１４】
【数１】
2011132436.tif 000003
ここでｎはデータ件数である。変数μａは変数ＡｎのデータＡ１〜Ａｎの平均値であり、一括処理により求められる。変数μｂは変数ＢｎのデータＢ１〜Ｂｎの平均値であり、一括処理により求められる。
【０５１５】
一方、本実施形態の演算処理システム３００は、分散共分散を逐次計算で求めるものであり、この場合の逐次計算式は、以下の式（２）で表される。
【０５１６】
【数２】
2011132436.tif 000004
Ｖａｂは、変数ＡとＢの積和であり、例えば、Ｖａｂ（３）＝Ａ１Ｂ１＋Ａ２Ｂ２＋Ａ３Ｂ３ある。また、Ｔａは、変数Ａの和であり、Ｔａ（３）＝Ａ１＋Ａ２＋Ａ３である。さらに、Ｔｂは、変数Ｂの和であり、Ｔｂ（３）＝Ｂ１＋Ｂ２＋Ｂ３である。
【０５１７】
なお、上記式（１）から式（２）への変換は、以下の（式３）に示す計算により行われる。
【０５１８】
【数３】
2011132436.tif 000005
ここで、Ｓａｂ、Ｖａｂ、Ｔａ、Ｔｂは、すべて場の変数、つまり多様体を構成する点の時々刻々と変化する値である。
【０５１９】
また、Ｔａは変数Ａの総和であり、Ｔｂは変数Ｂの総和であるので、共に、今回までの総和は、前回までの総和に今回の値（入力値）を加算して求めることができる。
【０５２０】
同様にＶａｂは、変数Ａと変数Ｂの積の総和であるため、今回までの総和は、前回までの総和に今回の入力値（変数Ａと変数Ｂの積）を加算して求めることができる。
【０５２１】
つまり、これらの変数Ｖａｂ、Ｔａ、Ｔｂの値は、式（４）に示す再帰差分方程式で求めることができ、この結果、変数Ａ及びＢの分散Ｓａｂ（ａ＝ｂ）、さらに変数Ａと変数Ｂの共分散Ｓａｂ（ａ≠ｂ）も、この再帰差分方程式で求めることが可能となる。
【０５２２】
Ｙ（ｎ）＝Ｙ（ｎ−１）＋ｕ（ｎ）  ・・・式（４）
最小二乗法で用いる近似直線の係数α及びβは分散、共分散により求めることができる。
【０５２３】
Ｙ＝αＸ＋β
α＝Ｓｘｙ／Ｓｘｘ
β＝Ｙｍｅａｎ−（Ｓｘｙ／Ｓｘｘ）・Ｘｍｅａｎ
ここで、Ｓｘｙは変数Ｘ、Ｙの共分散であり、Ｓｘｘは変数Ｘの分散である。
【０５２４】
次に動作について説明する。
【０５２５】
図３７は、この実施形態３による論理演算システムの動作を説明する図である。
【０５２６】
１件目のデータ（変数Ａ＝１２、変数Ｂ＝３）が論理演算システム３００に入力されると、Ｔａ（１）＝１２、Ｔｂ（１）＝３、Ｖａａ（１）＝１４４（＝１２×１２）、Ｖａｂ（１）＝３６（＝１２×３）、Ｖｂｂ（１）＝９（＝３×３）が、上記式（４）により計算される。また、この演算結果を用いて、式２により、Ｓａａ（１）＝０、Ｓａｂ（１）＝０、Ｓｂｂ（１）＝０が求められる（図３７（ａ））。
【０５２７】
２件目のデータ（変数Ａ＝２０、変数Ｂ＝９）が論理演算システム３００に入力されると、Ｔａ（２）＝３２（＝１２＋２０）、Ｔｂ（２）＝９（＝３＋６）、Ｖａａ（２）＝５４４（＝１４４＋２０×２０）、Ｖａｂ（２）＝１５６（＝３６＋２０×６）、Ｖｂｂ（２）＝４５（＝９＋６×６）が、上記式（４）により計算される。また、この演算結果を用いて、式２により、Ｓａａ（２）＝１６、Ｓａｂ（２）＝６、Ｓｂｂ（２）＝２．２５が求められる（図３７（ｂ））。
【０５２８】
３件目のデータ（変数Ａ＝２４、変数Ｂ＝７）が論理演算システム３００に入力されると、Ｔａ（３）＝５６（＝３２＋２４）、Ｔｂ（３）＝１６（＝９＋７）、Ｖａａ（３）＝１１２０（＝５４４＋２４×２４）、Ｖａｂ（３）＝３２４（＝１５６＋２４×７）、Ｖｂｂ（３）＝９４（＝４５＋７×７）が、上記式（４）により計算される。また、この演算結果を用いて、式２により、Ｓａａ（３）＝２４．８、Ｓａｂ（３）＝８．４４、Ｓｂｂ（３）＝２．８９が求められる（図３７（ｃ））。
【０５２９】
４件目のデータ（変数Ａ＝２６、変数Ｂ＝１０）が論理演算システム３００に入力されると、Ｔａ（４）＝８２（＝５６＋２６）、Ｔｂ（４）＝２６（＝１６＋１０）、Ｖａａ（４）＝１７９６（＝１１２０＋２６×２６）、Ｖａｂ（４）＝５８４（＝３２４＋２６×１０）、Ｖｂｂ（４）＝１９４（＝９４＋１０×１０）が、上記式（４）により計算される。また、この演算結果を用いて、式２により、Ｓａａ（４）＝２８．７２、Ｓａｂ（４）＝１２．７５、Ｓｂｂ（４）＝６．２５が求められる（図３７（ｄ））。
【０５３０】
５件目のデータ（変数Ａ＝３３、変数Ｂ＝１４）が論理演算システム３００に入力されると、Ｔａ（５）＝１１５（＝８２＋３３）、Ｔｂ（５）＝４０（＝２６＋１４）、Ｖａａ（５）＝２８８５（＝１７９６＋３３×３３）、Ｖａｂ（５）＝１０４６（＝５８４＋３３×１４）、Ｖｂｂ（５）＝３９０（＝１９４＋１４×１４）が、上記式（４）により計算される。また、この演算結果を用いて、式２により、Ｓａａ（５）＝４８、Ｓａｂ（５）＝２５．２、Ｓｂｂ（５）＝１４が求められる（図３７（ｅ））。
【０５３１】
このように本実施形態３による論理演算システム３００では、２変数の論理入力Ｓｉｎ３に基づく論理出力Ｓｏｕｔ３である分散共分散を、時々刻々と変化する値を有する点の集合からなる多様体上で１つの局所座標系として定義し、局所座標系の各点をメモリ空間に写像し、メモリ空間上で局所座標系の各点の値を決定性チューリングマシンを用いて更新するので、２つの変数Ａ及びＢ（例えば、２つの銘柄の株価）の変化に基づいて、変数Ａの分散、変数Ａ及びＢの共分散、及び変数Ｂの分散を、論理入力Ｓｉｎ３としての変数Ａ及びＢの値が入力される度に算出することができる。
【０５３２】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【０５３３】
本発明は、論理演算方法、論理演算装置、論理演算プログラム、及びプログラム自動生成プログラムを格納した記録媒体の分野において、会計システムなどの論理演算システムを多様体として捉え、この多様体に対する複数の論理入力（レコード）を、多様体上に階層的に形成された個々の局所座標系（個々の会計帳簿）毎に集計し、各局所座標系の論理出力（例えば個々の会計帳簿における集計結果）をリアルタイムで生成することができるものである。【０５３４】
また、本発明は、プログラム自動生成方法、プログラム自動生成装置、プログラム自動生成プログラム、及びプログラム自動生成プログラムを格納した記録媒体の分野において、要求される論理演算システムをコンピュータ上に構築するためのプログラムを、この論理演算システムを定義する仕様書から得られる状態遷移図あるいは状態遷移表に基づいて自動生成することができるものである。
【符号の説明】
【０５３５】
１  コンピュータシステム
２  端末コンピュータ
３  ホストコンピュータ
４  ネットワーク
１０  リアルタイム演算システム（演算システム）
１１  カーネル
１２  監視エージェント
１３  マスタ情報格納部
１４  状態ログ格納部
２０  知識データベース
１００  会計システム
１００ａ  業務機能部
１０１  売買システム
２００  プログラム自動生成装置
２１０  中間情報作成部
２２０  ソースコード作成部
３００  論理演算システム
Ｓａ  試算表
Ｓｂ  預金元帳
Ｓｃ  固定資産台帳
【図１】
2011132436.tif 000006
【図２】
2011132436.tif 000007
【図３Ａ】
2011132436.tif 000008
【図３Ｂ】
2011132436.tif 000009
【図３Ｃ】
2011132436.tif 000010
【図３Ｄ】
2011132436.tif 000011
【図３Ｅ】
2011132436.tif 000012
【図３Ｆ】
2011132436.tif 000013
【図４】
2011132436.tif 000014
【図５】
2011132436.tif 000015
【図６】
2011132436.tif 000016
【図７】
2011132436.tif 000017
【図８】
2011132436.tif 000018
【図９】
2011132436.tif 000019
【図１０】
2011132436.tif 000020
【図１１】
2011132436.tif 000021
【図１２】
2011132436.tif 000022
【図１３】
2011132436.tif 000023
【図１４】
2011132436.tif 000024
【図１５】
2011132436.tif 000025
【図１６】
2011132436.tif 000026
【図１７】
2011132436.tif 000027
【図１８】
2011132436.tif 000028
【図１９】
2011132436.tif 000029
【図２０】
2011132436.tif 000030
【図２１】
2011132436.tif 000031
【図２２】
2011132436.tif 000032
【図２３】
2011132436.tif 000033
【図２４】
2011132436.tif 000034
【図２５】
2011132436.tif 000035
【図２６】
2011132436.tif 000036
【図２７】
2011132436.tif 000037
【図２８】
2011132436.tif 000038
【図２９】
2011132436.tif 000039
【図３０】
2011132436.tif 000040
【図３１】
2011132436.tif 000041
【図３２】
2011132436.tif 000042
【図３３】
2011132436.tif 000043
【図３４】
2011132436.tif 000044
【図３５】
2011132436.tif 000045
【図３６】
2011132436.tif 000046
【図３７】
2011132436.tif 000047
【図３９】
2011132436.tif 000048
【図４１】
2011132436.tif 000049
【図４２】
2011132436.tif 000050
【図４３】
2011132436.tif 000051
【図４４】
2011132436.tif 000052
【図４５】
2011132436.tif 000053
【図４６】
2011132436.tif 000054
【図４７】
2011132436.tif 000055
【図３８】
2011132436.tif 000056
【図４０】
2011132436.tif 000057
【国際調査報告】
2011132436.tif 000058
2011132436.tif 000059
2011132436.tif 000060
2011132436.tif 000061
2011132436.tif 000062
2011132436.tif 000063
2011132436.tif 000064