(57)【特許請求の範囲】
【請求項１】
プログラムのソースコードで定義しているグローバル変数を抽出するグローバル変数抽出部と、
前記グローバル変数を変数名に応じて検索できるようにデータベース化して、共有メモリに格納するメモリ管理部と、
前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成する翻訳部と、
前記翻訳部により生成された実行ファイルを実行し、同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するコード実行部と
を備える、工学的分析用プログラム間の同期化された連係システム。
【請求項２】
前記グローバル変数抽出部は、
前記グローバル変数をパーシング（ｐａｒｓｉｎｇ）して、各グローバル変数に対するデスクリプション、単位、所属系統、変数形態、次数、オフセット値、及び変数名のうち、何れか一つ以上を含む情報を特定構造体形式で生成し、生成された情報を前記メモリ管理部に伝達することを特徴とする、請求項１に記載の工学的分析用プログラム間の同期化された連係システム。
【請求項３】
前記共有メモリのヘッダは、
前記グローバル変数と一対一に対応する構造体の客体が前記共有メモリ上において占める格納空間の大きさを表す整数情報、前記共有メモリ上においてグローバル変数の現在値が占める格納空間の大きさを表す整数情報と、
前記コード実行部で実行させる実行ファイルの格納空間の大きさを表す整数情報を含んでいることを特徴とする、請求項１に記載の工学的分析用プログラム間の同期化された連係システム。
【請求項４】
前記共有メモリのヘッダは、
前記グローバル変数と一対一に対応する構造体の客体をデータベース化して管理するための変数と、
前記グローバル変数と一対一に対応する構造体の客体の格納空間の開始番地を格納した変数と、
前記グローバル変数の現在値格納空間の開始番地を格納した変数と、
前記実行ファイルの格納空間の開始番地を格納した変数と
をさらに含むことを特徴とする、請求項３に記載の工学的分析用プログラム間の同期化された連係システム。
【請求項５】
前記共有メモリは、
前記グローバル変数と一対一に対応する構造体の客体を格納するための格納空間と、
前記グローバル変数の現在値を格納するための格納空間と、
前記実行ファイルに対する情報を格納するための格納空間と
を備えることを特徴とする、請求項３に記載の工学的分析用プログラム間の同期化された連係システム。
【請求項６】
前記メモリ管理部は、
前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、及び照会するための管理構造体を定義し、
前記管理構造体は、
登録された総グローバル変数個数を表す変数、データ検索のためにグローバル変数全体の重点になるノードを指し示す変数、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、照会、及び検索するための関数を含むことを特徴とする、請求項３に記載の工学的分析用プログラム間の同期化された連係システム。
【請求項７】
前記翻訳部は、
前記オリジナルソースコードの時間進行区間反復文を同期化個体を待たせるロジックに変更して、前記コード実行部が発生させる時間同期化信号がオン（ＯＮ）になる時点に時間進行されるように前記実行ファイルを生成することを特徴とする、請求項１に記載の工学的分析用プログラム間の同期化された連係システム。
【請求項８】
前記翻訳部は、
前記実行ファイルに対する情報を前記共有メモリ上の実行情報構造体に格納し、
前記実行情報構造体は、
実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体格納空間と、
実行ファイルが実行された状態が格納される格納空間と
を備えることを特徴とする、請求項１に記載の工学的分析用プログラム間の同期化された連係システム。
【請求項９】
前記コード実行部は、
前記実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体の格納空間、及び実行ファイルが実行された状態が格納される格納空間に登録された客体の内容を把握して、実行ファイルの同期化実行に利用することを特徴とする、請求項８に記載の工学的分析用プログラム間の同期化された連係システム。
【請求項１０】
プログラムのソースコードで定義しているグローバル変数を抽出するステップと、
前記グローバル変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップと、
前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップと、
前記生成された実行ファイルを実行し同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するステップと
を含む、工学的分析用プログラム間の同期化された連係方法。
【請求項１１】
前記プログラムのソースコードで定義しているグローバル変数を抽出するステップは、
前記グローバル変数をパーシング（ｐａｒｓｉｎｇ）して各グローバル変数に対するデスクリプション、単位、所属系統、変数形態、次数、オフセット値、及び変数名のうちの何れか一つ以上を含む情報を特定構造体形式で生成するステップを含むことを特徴とする、請求項１０に記載の工学的分析用プログラム間の同期化された連係方法。
【請求項１２】
前記グローバル変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップは、
前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、及び照会するための管理構造体を定義するステップを含むことを特徴とする、請求項１０に記載の工学的分析用プログラム間の同期化された連係方法。
【請求項１３】
前記管理構造体は、
登録された総グローバル変数個数を表す変数、データ検索のためにグローバル変数全体の重点になるノードを指し示す変数、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、照会、及び検索するための関数を含むことを特徴とする、請求項１２に記載の工学的分析用プログラム間の同期化された連係方法。
【請求項１４】
前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップは、
前記実行ファイルに対する情報を前記共有メモリ上の実行情報構造体に格納するステップを含むことを特徴とする、請求項１０に記載の工学的分析用プログラム間の同期化された連係方法。
【請求項１５】
前記実行情報構造体は、
実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体格納空間、及び実行ファイルが実行された状態が格納される格納空間を含むことを特徴とする、請求項１４に記載の工学的分析用プログラム間の同期化された連係方法。
【請求項１６】
複数のプログラムを統合して複合的分析用途として使用する場合、各プログラムが使用するすべての内部変数の格納空間をデータベース化された共有メモリに再割り当てして定義された共有メモリを前記物理的メモリに格納し、
前記物理的メモリの内容を共有メモリに復元して、各実行ファイルの状態を格納された時点と同じ状態に復元するステップをさらに含むことを特徴とする、請求項１０に記載の工学的分析用プログラム間の同期化された連係方法。
【請求項１７】
工学的分析用プログラムに対するグラフィックプログラムとの連係時、前記データベース化された共有メモリの方式で内部グローバル変数の格納空間を再割り当てして連係変数の現在値抽出及び更新をするステップをさらに含むことを特徴とする、請求項１６に記載の工学的分析用プログラム間の同期化された連係方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法論及びシステムに関する。さらに詳細には、複数の工学的分析用プログラムを統合して複合的分析用途として使用しようとする場合に、各プログラムが使用するすべての内部変数の格納空間をデータベース化された共有メモリの空間に再び割り当てることで、プログラム間連係変数の入出力及び各プログラムの現在状態を格納し、完全に復元でき、時間同期化された統合実行を可能にする方法に関する。
【背景技術】
【０００２】
従来では、プラントシステム設計／安全分析などに使用される安全解析コードなど単独目的のために開発された既存コードを併合して統合された全体システムの挙動を分析する用途として使用するために統合がなされなければならない時には、既存コードのソースコードを合わせて一つの大型コードに併合したり、ＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）方式あるいはＬＩＢ（Ｓｔａｔｉｃ  Ｌｉｂｒａｒｙ）方式で関数を呼び出す形態で複数のコード間の連係変数の値を交換して結合する方法を取ってきた。このような方式は、プログラム間の連係変数の形態及び種類を事前に予め定義して、関数因子に値を伝達するので、統合しようとするプログラムの数量が増加するほどプログラム間の連係変数が増加するようになり、したがって、伝達される関数の種類及び呼び出し回数が幾何級数的に増加するようになり、また連係変数が変更されることによって、ソースコードの変更が必須なので、必ずソースを変更してコンパイルする過程を経なければならない等、統合開発期間がかなり長くなる。
【０００３】
また、各プログラムがバージョン・アップ（Ｖｅｒｓｉｏｎ−ｕｐ）される場合、これを反映するためには、このような統合過程をさらに経なければならないという難しさも存在する。また、統合コードの実行時に特定状況を再演するためには、物理的メモリに再開始（Ｒｅｓｔａｒｔ）のために選別された変数だけを記録するコードでプログラムソースを手動で変更しなければ特定状況を格納することができないため、予め決まった時点の他には、プログラム状態の格納／復元が基本的に不可能であり、分析のためのグラフィック連係のためにも、連係変数を外部に伝達するためには、プログラムソースを必ず変更しなければならない等の多くの問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上述の問題点を解決するために提案されたものであって、統合しようとする工学的分析用プログラムが使用するすべての内部変数の格納空間をデータベース化された共有メモリとして使用することによって、連係変数の変更によるプログラムソースの修正無しでいかなる連係変数も入出力できるようにし、定義された共有メモリをハードディスクのような物理的メモリに格納し、物理的メモリの内容を共有メモリに復元することだけでも各実行ファイルの現在状態を格納された時点と同じ状態に完壁に復元できるようにし、各実行ファイルが時間的に同期化され、かつ独立した実行を保障する工学的分析用プログラム間の同期化された連係方法及びそのシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明に係る工学的分析用プログラム間の同期化された連係システムは、プログラムのソースコードで定義しているグローバル変数を抽出するグローバル変数抽出部と、前記グローバル変数を変数名に応じて検索できるようにデータベース化して、共有メモリに格納するメモリ管理部と、前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成する翻訳部と、前記翻訳部により生成された実行ファイルを実行し、同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するコード実行部とを備える。
【０００６】
特に、前記グローバル変数抽出部は、前記グローバル変数をパーシング（ｐａｒｓｉｎｇ）して、各グローバル変数に対するデスクリプション、単位、所属系統、変数形態、次数、オフセット値、及び変数名のうち、何れか一つ以上を含む情報を特定構造体形式で生成し、生成された情報を前記メモリ管理部に伝達することを特徴とする。
【０００７】
また、メモリ管理部では、グローバル変数抽出部から伝達されたグローバル変数を共有メモリ上の格納空間を再び割り当てるために、体系化されたメモリ管理ロジックを有した共有メモリから構成して、グローバル変数に対する情報を構造体形式で挿入、削除、及び検索する機能などグローバル変数に対する共有メモリ上のデータベース管理を行うことを特徴とする。
【０００８】
また、前記共有メモリのヘッダは、前記グローバル変数と一対一に対応する構造体の客体が前記共有メモリ上において占める格納空間の大きさを表す整数情報、前記共有メモリ上においてグローバル変数の現在値が占める格納空間の大きさを表す整数情報と、前記コード実行部で実行させる実行ファイルの格納空間の大きさを表す整数情報を含んでいることを特徴とする。
【０００９】
また、前記共有メモリのヘッダは、前記グローバル変数と一対一に対応する構造体の客体をデータベース化して管理するための変数と、前記グローバル変数と一対一に対応する構造体の客体の格納空間の開始番地を格納した変数と、前記グローバル変数の現在値格納空間の開始番地を格納した変数と、前記実行ファイルの格納空間の開始番地を格納した変数とをさらに含むことを特徴とする。
【００１０】
また、前記共有メモリは、前記グローバル変数と一対一に対応する構造体の客体を格納するための格納空間と、前記グローバル変数の現在値を格納するための格納空間と、前記実行ファイルに対する情報を格納するための格納空間とを備えることを特徴とする。
【００１１】
また、前記メモリ管理部は、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、及び照会するための管理構造体を定義し、前記管理構造体は、登録された総グローバル変数個数を表す変数、データ検索のためにグローバル変数全体の重点になるノードを指し示す変数、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、照会、及び検索するための関数を含むことを特徴とする。
【００１２】
また、前記翻訳部は、前記オリジナルソースコードの時間進行区間反復文を同期化個体を待たせるロジックに変更して、前記コード実行部が発生させる時間同期化信号がオン（ＯＮ）になる時点に時間進行されるように前記実行ファイルを生成することを特徴とする。
【００１３】
前記翻訳部は、前記実行ファイルに対する情報を前記共有メモリ上の実行情報構造体に格納し、前記実行情報構造体は、実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体格納空間と、実行ファイルが実行された状態が格納される格納空間とを備えることを特徴とする。
【００１４】
また、前記コード実行部は、前記実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体の格納空間、及び実行ファイルが実行された状態が格納される格納空間に登録された客体の内容を把握して、実行ファイルの同期化実行に利用することを特徴とする。
【００１５】
一方、 本発明に係る工学的分析用プログラム間の同期化された連係方法、プログラムのソースコードで定義しているグローバル変数を抽出するステップと、前記グローバル変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップと、前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップと、前記生成された実行ファイルを実行し同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するステップとを含む。
【００１６】
特に、前記プログラムのソースコードで定義しているグローバル変数を抽出するステップは、前記グローバル変数をパーシング（ｐａｒｓｉｎｇ）して各グローバル変数に対するデスクリプション、単位、所属系統、変数形態、次数、オフセット値、及び変数名のうちの何れか一つ以上を含む情報を特定構造体形式で生成するステップを含むことを特徴とする。
【００１７】
また、前記グローバル変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップは、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、及び照会するための管理構造体を定義するステップを含むことを特徴とする。
【００１８】
また、前記管理構造体は、登録された総グローバル変数個数を表す変数、データ検索のためにグローバル変数全体の重点になるノードを指し示す変数、前記グローバル変数と一対一に対応する構造体の客体を挿入、削除、照会、及び検索するための関数を含むことを特徴とする。
【００１９】
また、前記ソースコードのグローバル変数宣言領域を除去した後、前記共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップは、前記実行ファイルに対する情報を前記共有メモリ上の実行情報構造体に格納するステップを含むことを特徴とする。
【００２０】
また、前記実行情報構造体は、実行ファイル名が格納される格納空間、同期化信号を受ける同期化個体格納空間、及び実行ファイルが実行された状態が格納される格納空間を含むことを特徴とする。
【００２１】
また、複数のプログラムを統合して複合的分析用途として使用する場合、各プログラムが使用するすべての内部変数の格納空間をデータベース化された共有メモリに再割り当てして定義された共有メモリを前記物理的メモリに格納し、前記物理的メモリの内容を共有メモリに復元して、各実行ファイルの状態を格納された時点と同じ状態に復元するステップをさらに含むことを特徴とする。
【００２２】
また、工学的分析用プログラムに対するグラフィックプログラムとの連係時、前記データベース化された共有メモリの方式で内部グローバル変数の格納空間を再割り当てして連係変数の現在値抽出及び更新をするステップをさらに含むことを特徴とする。
【発明の効果】
【００２３】
本発明によれば、次のような効果を期待することができる。
【００２４】
複数の工学的分析用プログラムを統合するために、従来のソースコードを直接統合して大型ソースコードに作るか、又はＤＬＬ方式あるいはＬＩＢ方式の関数因子交換形式で開発する時の大いなる統合期間と連係変数の変化による数多くのコード変更期間が必要であった。しかしながら、本発明では、体系化された共有メモリを使用してすべてのグローバル変数のすべての情報を共有することによって、多量の連係伝達関数の生成及び連係関数呼び出し回数増加に伴う非効率性の増大、及び連係変数のための数多くのソースコードの変更などの多くの短所を克服することができるから、統合開発期間を大きく短縮させることができるという効果がある。
【００２５】
また、以前方式の直接ソースコード統合では、プログラムの実行途中の状態を格納するためには、ソースコード上において特定時点を物理的メモリに記録するソースコードを作成しなければならず、予め決まった時点以外には、プログラム状態の格納及び復元が基本的に不可能であった。しかしながら、本発明によれば、定義された共有メモリをハードディスクのような物理的メモリに格納し、物理的メモリの内容を共有メモリに復元することだけでも、各実行ファイルの現在状態を格納された時点と同じ状態に完壁に復元できるから、プログラムを介した工学的分析が必要なとき、いつでもプログラムの状態を格納することができ、同期化統合システムを利用してシステム分析作業時に大きな利点を提供できる。
【００２６】
また、以前方式の直接ソースコード統合では、数多くの試行錯誤を経た後に、完成された統合プログラムであっても、各々のプログラムがバージョン・アップ（Ｖｅｒｉｏｎ−ｕｐ）される場合には、これを反映するために、長い統合過程を再び繰り返さなければならなかった。しかしながら、本発明によれば、各実行ファイルが独立した実行をしながらも時間同期化が可能になるから、各プログラムを独立的に維持補修及びバージョン・アップされたコードに統合できるようにする基本的な方法を提供できる。
【００２７】
また、従来のソースコード統合による方式は、グラフィック連係プログラムの開発時に、ディスプレイ（Ｄｉｓｐｌａｙ）を望む連係変数をプログラムソース次元で連係変数をいちいち指定して、直接関数のような連係方式で、内部変数値を外部に公開しなければならなかった。しかしながら、本発明によれば、標準化された連係変数の挿入、削除、照会、及び検索機能の関数を提供することによって、グラフィックディスプレイプログラムなどのようなその他の目的の連係プログラムの開発時にも、かなり便利な機能を提供できる。
【図面の簡単な説明】
【００２８】
【図１】本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係システムを説明するための図である。
【図２】本発明に係るデータベース化された共有メモリの構造を説明するための図である。
【図３】本発明において使用される構造体を説明するための図である。
【図４】本発明において使用される構造体を説明するための図である。
【図５】本発明において使用される構造体を説明するための図である。
【図６】本発明において使用される構造体を説明するための図である。
【図７】本発明において使用される構造体を説明するための図である。
【図８】本発明に係る連係システムの翻訳部でのオリジナルソースコードの変更例を説明するための図である。
【図９】本発明に係る連係システムの翻訳部でのオリジナルソースコードの変更例を説明するための図である。
【図１０】本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００２９】
添付された図面を参照して、本発明を詳細に説明すれば、以下のとおりである。ここで、繰り返される説明、本発明の要旨を不明にするおそれがある公知機能、及び構成についての詳細な説明は省略する。本発明の実施の形態は、当業者に本発明をさらに完全に説明するために提供されるものである。したがって、図面での要素の形状及びサイズなどは、さらに明確な説明を強調するために誇張された。
【実施例】
【００３０】
以下、本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法及びシステムを詳細に説明する。
【００３１】
図１は、本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係システムを説明するための図である。
図１に示すように、本発明に係る工学的分析用プログラム間の同期化された連係システムは、プログラムの構成ソースコードが使用するグローバル変数を各種情報と共に抽出するグローバル変数抽出部１００、抽出されたグローバル変数を変数名（Ｋｅｙ値）に応じる検索が可能なようにデータベース化して、共有メモリに論理的に格納するメモリ管理部２００、プログラムソースコードのグローバル変数宣言領域部分を除去し、その代わりにメモリ管理部２００から提供する共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更（７）して実行ファイルを生成する翻訳部３００、翻訳部３００により生成された実行ファイル８を実行し、同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するコード実行部４００を備える。
【００３２】
図１ないし図７に示すように、グローバル変数抽出部１００は、単一プログラムを構成するソースコード６で定義しているすべてのグローバル変数（あるいは、Ｓｔａｔｉｃ変数、ｎｅｗ／ｍａｌｌｏｃなどＨｅａｐ変数）をパーシング（ｐａｒｓｉｎｇ）して、グローバル変数に対するデスクリプション（Ｄｅｓｃｒｉｐｔｉｏｎ）３５、単位（Ｕｎｉｔｓ）３６、所属系統（Ｓｙｓｔｅｍ）３７、変数形態（Ｔｙｐｅ）３８、次数（Ｄｉｍｓ）３９、変数現在値を格納するメモリ番地に対するオフセット値（ｎＯｆｆｓｅｔ）４０、変数名（Ｎａｍｅ）４１等、複数の情報をＶＡＲ＿ＩＮＦＯ構造体３４の形式にして、これをメモリ管理部２００に伝達する役割を果たす。
【００３３】
メモリ管理部２００は、グローバル変数抽出部１００から受けたグローバル変数を共有メモリ５上の格納空間に再び割り当てるために、図２のように体系化されたメモリ管理ロジックを有した構造で共有メモリ５を構成して、グローバル変数に対する情報をＶＡＲ＿ＩＮＦＯ構造体３４の形式で挿入する。そして、メモリ管理部２００は、削除及び検索機能２９を行う関数も提供して、グローバル変数に対する共有メモリ５上でのデータベース管理を行う役割を果たす。
【００３４】
このために、共有メモリ５は、図２のようなメモリ構造を有し、共有メモリ５のヘッダは、ＳＨＡＲＥＤ＿ＭＥＭＯＲＹ＿ＨＥＡＤＥＲ構造体１５から始まる。
さらに詳細には、ＳＨＡＲＥＤ＿ＭＥＭＯＲＹ＿ＨＥＡＤＥＲ構造体１５の、最初の４バイト空間１６には、グローバル変数と一対一に対応する構造体であるＡＮＯＤＥの客体３０が共有メモリ５上での格納空間２３の大きさを表す整数情報（ここでは、ｎＶａｒｓＳｉｚｅ値に該当）が格納される。そして、次の４バイト空間１７には、共有メモリ５上でのグローバル変数の現在値格納空間２４が占める大きさを表す整数情報（ここでは、ｎＶａｌｕｅｓＳｉｚｅ値に該当）が格納される。そして、次の４バイト空間１８には、後述するコード実行部４００で実行させる実行ファイル８の情報格納空間２５の大きさを表す整数情報（ここでは、ｎＥｘｅｓＳｉｚｅ値に該当）格納される。
【００３５】
また、ＳＨＡＲＥＤ＿ＭＥＭＯＲＹ＿ＨＥＡＤＥＲ構造体１５には、ＡＮＯＤＥ構造体３０の客体をデータベース化して管理（照会／挿入／削除）するためのＤａｔａＢａｓｅＭａｎａｇｅｒ構造体２６であるＶａｒｓメンバー変数１９、ＡＮＯＤＥ客体３０の格納空間２３（大きさ：ｎＶａｒｓＳｉｚｅバイト）の開始番地２０−１を格納したｐＶａｒｓポインタメンバー変数２１、グローバル変数の現在値格納空間２４（大きさ：ｎＶａｌｕｅｓＳｉｚｅバイト）の開始番地２１−１を格納したｐＶａｌｕｅｓポインタメンバー変数２１、実行ファイルの情報格納空間２５（大きさ：ｎＥｘｅｓＳｉｚｅバイト）の開始番地２２−１を格納したｐＥｘｅｓポインタメンバー変数２２が構成要素として格納される。
そして、共有メモリ５は、上述のＡＮＯＤＥ客体３０の格納空間２３を備える。
【００３６】
また、共有メモリ５は、内部グローバル変数の現在値格納空間２４及び実行ファイル（実行させる分析用コードの個数分だけ存在）に対した情報格納空間２５を備える。
【００３７】
工学的分析用プログラムのソースコード６のグローバル変数がグローバル変数抽出部１００により抽出されると、そのグローバル変数に対する情報がＶＡＲ＿ＩＮＦＯ構造体３４のフィールドに満たされる。ＶＡＲ＿ＩＮＦＯ構造体３４は、次のようなフィールドから構成される。
【００３８】
−Ｄｅｓｃｒｉｐｔｉｏｎ：変数に対するＤｅｓｃｒｉｐｔｉｏｎ文字列格納空間３５
−Ｕｎｉｔｓ：変数に対する単位格納空間３６
−Ｓｙｓｔｅｍ：変数が属した代表システム名の格納空間３７
−Ｔｙｐｅ：変数の（ｃｈａｒ／ｂｏｏｌ／ｓｈｏｒｔ／ｉｎｔ／ｒｅａｌ／ｄｏｕｂｌｅ等）型情報格納空間３８
−Ｄｉｍｓ：変数の次数情報格納空間３９
−ｎＯｆｆｓｅｔ：グローバル変数現在値を格納するための空間の開始アドレス１０１から該当変数の値納空間までのオフセット格納空間４０
−Ｎａｍｅ：変数名文字列格納空間４１
【００３９】
ＡＮＯＤＥ構造体３０は、ＶＡＲ＿ＩＮＦＯ構造体３４と二つのＡＮＯＤＥポインタ変数３０がメンバー変数として存在し、ＡＮＯＤＥポインタメンバー変数３１、３２は、データベースの以前（ｐｒｅｖｉｏｕｓ）及び次の（ｎｅｘｔ）Ｎｏｄｅポインタに該当する概念である。１個のグローバル変数は、１個の対応するＡＮＯＤＥ客体３０を有するようになる。
【００４０】
また、本発明では、ＡＮＯＤＥ構造体３０を論理的でかつ簡潔に挿入、削除、及び照会するために、ＤａｔａＢａｓｅＭａｎａｇｅｒ構造体２６を定義する。ここで、ＤａｔａＢａｓｅＭａｎａｇｅｒ構造体２６は、請求の範囲に記載された管理構造体に該当する。
【００４１】
ＤａｔａＢａｓｅＭａｎａｇｅｒ構造体２６は、登録された総グローバル変数個数（すなわち、登録されたＡＮＯＤＥ客体の個数）であるＣｏｕｎｔメンバー変数２７、データ検索のためにグローバル変数全体の重点になるノードを指し示すＡＮＯＤＥ構造体ポインタであるａｎｃｅｓｔｏｒメンバー変数２８、ＡＮＯＤＥ構造体３０を挿入、削除、照会、及び検索するためのＩｎｓｅｒｔ／Ｄｅｌｅｔｅ／Ｔｒａｖｅｒｓｅ／Ｓｅａｒｃｈメンバー関数２９から構成される。
１個のグローバル変数が抽出されて、１個のＡＮＯＤＥ構造体３０情報が取得されると、ＳＨＡＲＥＤ＿ＭＥＭＯＲＹ＿ＨＥＡＤＥＲ構造体１５のＤａｔａＢａｓｅＭａｎａｇｅｒ構造体２６型のＶａｒｓメンバー変数１９のＩｎｓｅｒｔ２９関数により、ＡＮＯＤＥ客体格納空間２３の一領域にＡＮＯＤＥ客体３０が挿入される。
【００４２】
このとき、ＡＮＯＤＥ客体格納空間２３の大きさであるｎＶａｒｓＳｉｚｅは、＋ｓｉｚｅｏｆ（ＡＮＯＤＥ）分だけ増加し、ｐＶａｌｕｅｓ番地アドレス値２１、１０１もやはり＋ｓｉｚｅｏｆ（ＡＮＯＤＥ）分だけ増加し、ｐＶａｌｕｅｓ格納空間２４の大きさであるｎＶａｌｕｅｓＳｉｚｅもやはり＋ｓｉｚｅｏｆ（グローバル変数のデータＴｙｐｅ）分だけ増加し、実行ファイル情報が格納される空間２５であるｐＥｘｅｓポインタ値２２、１０２もやはり順延されて増加する。
【００４３】
また、後述する翻訳部３００により生成される実行ファイル８に対する情報は、ＥＸＥ＿ＩＮＦＯ構造体４２に格納されるが、メンバー変数は、次のとおりである。ここで、ＥＸＥ＿ＩＮＦＯ構造体４２は、請求範囲に記載された「実行情報構造体」に該当する。
【００４４】
「ＥｘｅＮａｍｅ」は、経路を含んだ実行ファイル名が格納される格納空間４３であり、「ｈＳｔａｒｔメンバー変数」は、同期化信号を受ける同期化個体格納空間４４であり、「Ｓｔａｔｕｓメンバー変数」は、実行ファイルが実行された状態が格納される格納空間４５である。
【００４５】
ＥＸＥ＿ＩＮＦＯ客体の格納空間２５は、共有メモリ５の終わり部分（すなわち、ｎＶａｌｕｅｓＳｉｚｅバイト後）に位置するようになるが、この空間２５に登録されたＥＸＥ＿ＩＮＦＯ客体は、コード実行部４００による同期化実行に利用される。
【００４６】
上述の論理構造を有した共有メモリ５は、全体大きさに該当するｓｉｚｅｏｆ（ＳＨＡＲＥＤ＿ＭＥＭＯＲＹ＿ＨＥＡＤＥＲ）＋ｎＶａｒｓＳｉｚｅ＋ｎＶａｌｕｅｓＳｉｚｅ＋ｎＥｘｅＳｉｚｅバイトのみを把握していると、すべてのグローバル変数情報及び現在状態値を検索及び照会できるだけでなく、共有メモリ５の全体バイトをハードディスクのような物理的メモリ１２に格納だけしておいても、後に特定時点の状態に完壁に復帰できることを意味するので、後述するコード実行部４００でこれを利用して、現在状態を格納及び復元できる。
【００４７】
翻訳部３００は、各プログラムソースコード６からグローバル変数（あるいはＣ言語の場合にｎｅｗ／ｍａｌｌｏｃなどＨｅａｐ変数）の宣言領域４６を除去し、その代わりにメモリ管理副２００から提供する共有メモリ格納空間が割り当てられるようにオリジナルソースを構文解析して、ソース自体を変更４７（Ｔｒａｎｓｌａｔｉｏｎ）する。
【００４８】
また、翻訳部３００は、プログラムの時間進行１０（Ａｄｖａｎｃｅｍｅｎｔ）区間反復文４８を同期化個体を待たせるロジック４９に変更して、コード実行部４００が発生させる時間同期化信号がオンになる時点１１においてのみ時間進行１０されるように変更し、変更されたソースをコンパイル（ｃｏｍｐｉｌｉｎｇ）して実行ファイルを生成（ｌｉｎｋｉｎｇ）する。
【００４９】
コード実行部４００は、共有メモリ５上の実行ファイル情報格納空間２５から実行ファイル８の情報を検索して、同期化実行をするようにする。
すなわち、コード実行部４００は、共有メモリ５のｐＥｘｅｓポインタメンバー変数２２の格納値である実行ファイル情報格納空間２５開始番地から共有メモリ終端までの空間（大きさ：ｎＥｘｅｓＳｉｚｅバイト）に記録されたＥＸＥ＿ＩＮＦＯ４５客体の内容を把握して、実行ファイル８の経路及びファイル名を抽出して実行ファイル８を実行させる。このとき、実行ファイル８は、ＷａｉｔＦｏｒＳｉｎｇｌｅＯｂｊｅｃｔのような同期化待機関数４９により待機（Ｗａｉｔｉｎｇ）状態で同期化信号を待機するようになる。
【００５０】
コード実行部４００から発生する同期化信号を受けることによって、各実行ファイル８は、同期化時間進行１０になる。このとき、各実行ファイル８は、決まったΔｔ（Ｔｉｍｅ  Ａｄｖａｎｃｅｍｅｎｔ）分だけ進行（１１−１）されてからは、また再び同期化待機関数により待機状態に進入するようになる。実行ファイル８に対した情報を含んでいるＥＸＥ＿ＩＮＦＯ構造体４２のＳｔａｔｕｓメンバー変数４５は、該当実行ファイル８が１回のＴｉｍｅ  Ａｄｖａｎｃｅｍｅｎｔ作業を終えたかどうかの状態を表すが、コード実行部４００ですべてのＥＸＥ＿ＩＮＦＯ４２客体のＳｔａｔｕｓメンバー変数情報を周期的に把握して、すべての実行ファイル８が１回時間進行（Ｔｉｍｅ  Ａｄｖａｎｃｅｍｅｎｔ）が終了した時点にて、同期化個体の信号をＯＮ１１に変更することによって、実行ファイル８が次のＴｉｍｅ  Ａｄｖａｎｃｅｍｅｎｔを進行できるようにする。かかる論理で各実行ファイル８が時間同期化をなしながら実行されうることである。
【００５１】
また、コード実行部４００では、前述した共有メモリ５の全体大きさに該当するｓｉｚｅｏｆ（ＳＨＡＲＥＤ＿ＭＥＭＯＲＹ＿ＨＥＡＤＥＲ）＋ｎＶａｒｓＳｉｚｅ＋ｎＶａｌｕｅｓＳｉｚｅ＋ｎＥｘｅｓＳｉｚｅバイトをハードディスクのような物理的メモリ（Ｐｈｙｓｉｃａｌ  Ｍｅｍｏｒｙ）１２に記録することによって、記録する当時のすべての実行ファイルの状態を全て格納することができる。それだけでなく、物理的メモリ１２の内容を共有メモリ５に復元することだけでも、各実行ファイル８の現在状態を格納された時点と同じ状態に完壁に復元できる。
【００５２】
前述したような本発明によれば、複数の工学的分析用プログラム６を統合するために、従来のソースコードを直接統合して大型ソースコードに作るか、又はＤＬＬ方式あるいはＬＩＢ方式の関数因子交換形式で開発する時の大いなる統合期間と連係変数の変化による数多くのコード変更期間が必要であった。
【００５３】
しかしながら、本発明では、体系化された共有メモリを使用してすべてのグローバル変数のすべての情報を共有することによって、多い量の連係伝達関数の生成及び連係関数呼び出し回数増加に応じる非効率性の増大、そして連係変数のための数多くのソースコードの変更などの多くの短所が克服できるから、統合開発期間を大きく短縮させることができるという効果がある。
【００５４】
また、以前方式の直接ソースコード統合では、プログラムの実行途中の状態を格納するためには、ソースコード上において特定時点を物理的メモリに記録するソースコードを作成しなければならず、予め決まった時点以外には、プログラム状態の格納及び復元することが基本的に不可能であった。しかしながら、本発明によれば、定義された共有メモリ５をハードディスクのような物理的メモリ１２に格納し、物理的メモリ１２の内容を共有メモリ５に復元することだけでも、各実行ファイル８の現在状態を格納された時点と同じ状態に完壁に復元できるから、プログラムを介した工学的分析必要時にいつでもプログラムの状態を格納することができ、同期化統合システムを利用して、システム分析作業時に大きな利点を提供できる。
【００５５】
また、以前方式の直接ソースコード統合では、数多くの試行錯誤を経た後に完成された統合プログラムであっても、各々のプログラムがバージョン・アップ（Ｖｅｒｉｏｎ−ｕｐ）される場合には、これを反映するために、長い統合過程を再び反復しなければならなかった。しかしながら、本発明によれば、各実行ファイルが独立した実行をしながらも時間同期化が可能になるから、各プログラムを独立的に維持補修及びバージョン・アップされたコードに統合できるようにする基本的な方法を提供できる。
【００５６】
また、従来のソースコード統合による方式は、グラフィック連係プログラムの開発時に、ディスプレイ（Ｄｉｓｐｌａｙ）を望む連係変数をプログラムソース次元で連係変数をいちいち指定して、直接関数のような連係方式で、内部変数値を外部に公開しなければならなかった。しかしながら、本発明によれば、標準化された連係変数の挿入、削除、照会、及び検索機能の関数を提供することによって、グラフィックディスプレイプログラムなどのようなその他の目的の連係プログラムの開発時にも、かなり便利な機能を提供できる。
【００５７】
図１０は、本発明に係るデータベース化された共有メモリを利用した工学的分析用プログラム間の同期化された連係方法を説明するためのフローチャートである。
本発明に係る工学的プログラム間の同期化された連係方法は、プログラムのソースコードで定義しているグロバール変数を抽出するステップと、そのグロバール変数を変数名に応じて検索できるようにデータベース化して共有メモリに格納するステップと、そのソースコードのグロバール変数宣言領域を除去した後、その共有メモリ上に格納空間が割り当てられるようにオリジナルソースコードを変更して、各々のプログラムに対する実行ファイルを生成するステップと、その生成された実行ファイルを実行し同期化された時間間隔で時間進行させ、各プログラムの状態を決定する共有メモリ格納空間を物理的メモリに格納及び復元するステップとを含む。
【００５８】
図１０に示すように、まず、グロバール変数抽出部が単一のプログラムを構成するソースコードで定義しているすべてのグロバール変数（あるいはＳｔａｔｉｃ変数、ｎｅｗ／ｍａｌｌｏｃなどＨｅａｐ変数）をパーシングして、変数に対する各種の情報をＶＡＲ＿ＩＮＦＯ構造体３４の形式に作って、これをメモリ管理部に伝達する（Ｓ１００）。
【００５９】
次に、メモリ管理部がグロバール変数抽出部から受けたグロバール変数を変数名（Ｋｅｙ値）に応じる検索が容易なようにデータベース化して、共有メモリに論理的に格納する（Ｓ１１０）。
【００６０】
そして、翻訳部は、各プログラムソースコードからグローバル変数（あるいはＣ言語の場合にｎｅｗ／ｍａｌｌｏｃなどＨｅａｐ変数）の宣言領域を除去し、その代わりにメモリ管理副から提供する共有メモリ格納空間が割り当てられるようにオリジナルソースを構文解析して、ソース自体を変更する（Ｓ１２０）。また、翻訳部は、プログラムの時間進行区間反復文を同期化個体を待たせるロジックに変更して、コード実行部が発生させる時間同期化信号がオンになる時点においてのみ時間進行されるように変更し、変更されたソースをコンパイルして実行ファイルを生成する（Ｓ１３０）。
【００６１】
次に、コード実行部は、共有メモリ上の実行ファイル情報格納空間から実行ファイルの情報を検索して、同期化実行をするようにする（Ｓ１４０）。これにより、コード実行部から発生する同期化信号を受けることによって、各実行ファイル８は、同期化時間進行になる（Ｓ１５０）。
【００６２】
最後に、コード実行部は、上述の共有メモリの全体大きさに該当するバイトをハードディスクのような物理的メモリに記録することによって、記録する当時のすべての実行ファイルの状態を全て格納することができ、物理的メモリの内容を共有メモリに復元することだけでも、各実行ファイルの現在状態を格納された時点と同じ状態に完壁に復元できる（Ｓ１６０）。
【００６３】
以上、図面と明細書において最適の実施形態が開示された。ここで、特定の用語が使用されたが、これは但し本発明を説明するための目的で使用されたものであり、意味限定や請求の範囲に記載された本発明の範囲を制限するために使用されたものではない。したがって、本技術分野の通常の知識を有した者であれば、これから多様な変形及び均等な他の実施形態が可能であるという点を理解するはずである。したがって、本発明の真の技術的保護範囲は、添付された特許請求の範囲の技術的思想により定められねばならない。
【図１】
0005465358.tif 000002
【図２】
0005465358.tif 000003
【図３】
0005465358.tif 000004
【図４】
0005465358.tif 000005
【図５】
0005465358.tif 000006
【図６】
0005465358.tif 000007
【図７】
0005465358.tif 000008
【図８】
0005465358.tif 000009
【図９】
0005465358.tif 000010
【図１０】
0005465358.tif 000011