(57)【要約】【課題】異なるプログラム言語で実装されたシステムを跨ぐ排他制御を可能とする複合システム及びその複合システムの排他制御プログラムを提供する。【解決手段】本発明のシステムの排他制御プログラムは、異なるプログラム言語により構築された第１及び第２システムの何れか一方の排他処理状態に対応する排他スレッドの管理を行うと共に、第１又は第２システムから排他処理依頼を受けると、排他スレッドを検索し、排他スレッドが無いときは排他制御依頼を許可する応答を返すようにしている。これにより、異なるプログラム言語で構築された複数のシステムを含む複合システム及びクライアント-サーバシステムにおいて、異なるプログラム言語で構築された複数のシステムを跨いだ排他制御が可能となる。【選択図】図３
2017016312.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
異なるプログラム言語により構築された第１及び第２システムの何れかの一方の排他処理状態に対応する排他スレッドの管理を行わせ、
前記第１又は第２システムからの排他制御依頼に応答して、前記排他スレッドを検索させ、
前記排他スレッドが無いときは前記排他制御依頼を許可する応答を返させる、
ことを特徴とする排他制御プログラム。
【請求項２】
前記排他スレッドの管理は、
前記第１及び第２のシステムの何れか一方の排他処理開始と同時に前記排他スレッドを作成し、前記排他処理の継続中は前記排他スレッド有りの状態を持続し、前記排他処理の完了の後に前記排他スレッドを削除することを特徴とする請求項１に記載の排他制御プログラム。
【請求項３】
前記第１又は第２システムからの排他制御依頼に応答して、前記排他スレッドを検索し、前記排他スレッドが有るときは前記排他制御依頼に対する応答を返さず、前記排他スレッドが削除されるのを待って、前記排他制御依頼を許可する応答を返すことを特徴とする請求項１に記載の排他制御プログラム。
【請求項４】
前記第１システムを構築するプログラム言語である第１の言語は、Ｃ言語であり、前記第２システムを構築するプログラム言語である第２の言語は、JavaScript言語であり、前記第１及び第２の言語からアクセス可能な第３の言語は、Java言語であることを特徴とする請求項１〜３の何れか１項に記載の排他制御プログラム。
【請求項５】
第１のプログラム言語により構築された第１システムと、
前記第１のプログラム言語とは異なる第２のプログラム言語により構築された第２システムと、
前記第１及び第２システムからアクセス可能な第３の言語により作成された排他制御ブログラムと、を有し、
前記排他制御プログラムは、前記第１及び第２システムの何れか一方の排他処理状態に対応する排他スレッドの管理を行うと共に、前記第１又は第２システムから排他制御依頼を受けると、前記排他スレッドを検索し、前記排他スレッドが無いときは前記排他制御依頼を許可する応答を返すことを特徴とする複合システム。
【請求項６】
第１のプログラム言語により構築された第１システムを記憶する第１の保存領域と、書込み可能なメモリ領域を有するクライアント端末と、
前記第１のプログラム言語とは異なる第２のプログラム言語により構築された第２システムと、前記第１及び第２システムからアクセス可能な第３の言語により作成された、前記第１及び第２システムの何れか一方の排他処理状態に対応する排他スレッドの管理を行うと共に、前記第１又は第２システムから排他処理依頼を受けると、前記排他スレッドを検索し、排他スレッドが無いときは前記排他制御依頼を許可する応答を返す排他制御プログラムとを記憶する第２の保存領域を有するサーバと、
前記クライアント端末と前記サーバとを相互に通信可能に接続するネットワークと、を備え、
前記クライアント端末の起動時に、前記第２の保存領域に記憶されている前記第２システムと、前記排他制御ブログラムと、を前記メモリ領域にダウンロードすることを特徴とするクライアント-サーバシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複合システムの排他制御プログラム、複合システム及びクライアント-サーバシステムに関する。
【背景技術】
【０００２】
金融情報システム、特に勘定系営業店システムは、図１に示されているように、１９８０年代は事務処理用に開発されたCOBOL(コボル：Common Business Oriented Language)等の言語を用いたメインフレームを中心としたシステム開発、１９９０年代のC言語等を用いたオンラインのシステム開発、２０００年代はオブジェクト指向のプログラム言語のJava（ジャバ）言語を用いたオンラインのシステム開発、２０１０年代にはオブジェクト指向のスクリプト言語のJavaScript（登録商標）等の言語によるWebシステム開発と、時代ごとに注目されたプログラム言語を用いて数十年にわたり継続して開発されている。
【０００３】
この様にして過去開発された勘定系営業店システムは、業務を継続運用する目的から過去のシステムは継続運用されることが常であり、新たな開発は過去のソフトウェアに追加する形で開発されてきている。その結果、勘定系営業店システムは、システム全体を俯瞰すると、図２に示されているように、機能や役割毎に継ぎ接ぎで作られた形となっている。図２において、Java言語で構築されたシステムＢは、C言語で構築されたシステムＡ、JavaScript言語で構築されたシステムＣ及び統括システムと連携し得るが、C言語で構築されたシステムＡとJavaScript言語で構築されたシステムＣ及び統括システムとは、言語間の制約から直接連携できず、Java言語で構築されたシステムＢを介して連携するようになっている。又、C言語で構築されたシステムＡからはメモリ３０の共通領域３１に任意にアクセス可能であるが、Java言語で構築されたシステムＢからのメモリ３０へのアクセスは、JavaVM（Java Virtual Machine）制御内３２のみに制限され、JavaScript言語で構築されたシステムからのメモリ３０へのアクセスは、ブラウザ制御内３３のみに制限されている。このように、プログラム言語によってアクセス可能なメモリ領域に制限を設けているのは、メモリ領域に記憶された情報が意図せず書き換わるのを防ぐためである。
【０００４】
このような勘定系営業店システムのプログラムの実行において、各システムを個別に正常動作させつつシステム全体も正常動作させるため、各システム間の動作順序、待ち合わせ等を制御する必要がある。そのため、複数のプロセスが利用できる共有資源に対し、複数のプロセスからの同時アクセスにより競合が発生する場合に、あるプロセスに資源を独占的に利用させている間は、他のプロセスが利用できないようにすることで整合性を保つ排他制御が必要になる。
【０００５】
排他制御に関する先行技術文献として、例えば、下記特許文献１及び２があり、特許文献１には、プロセス内に、通信プロトコル毎に送信スレッド(thread)と受信スレッドを設け、更に、戻り値を有するメッセージを登録しておく戻り値記述子テーブルを設けておくことにより、メッセージの戻り値が送信時と異なる通信プロトコルで送信されてきた時も、適切にメッセージ通信が行えるようにする情報処理装置が提案されている。
【０００６】
又、特許文献２には、制御プロセスが、ディーラ端末から値洗処理要求が送られてくると、同時に実行可能な計算プロセスの数を決定し、その決定した数だけ計算プロセスを立ち上げる。そして、その立ち上げた各計算プロセスに、値洗処理要求に対応した複数のポートフォリオについて値洗処理を並列して実行させる。値洗処理の結果は、ディーラ端末のディスプレイ装置に表示される金融情報処理システムが提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−１５１７３９号公報
【特許文献２】特開平１１−２５９５５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、従来の排他制御技術における排他制御範囲は、複合システムを構成する異なるプログラム言語で構築された各システム内の限られたものであった。
【０００９】
そこで、本発明は、複数の異なるプログラム言語で構築されたシステムを跨ぐ複合システムの排他制御プログラム、この排他制御プログラムを備えた複合システム、及びクライアント−サーバシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の第１側面の排他制御プログラムは、コンピュータに、異なるプログラム言語により構築された第１及び第２システムの何れか一方の排他処理状態に対応する排他スレッドの管理を行わせ、前記第１又は第２システムからの排他制御依頼に応答して、前記排他スレッドを検索させ、前記排他スレッドが無いときは前記排他制御依頼を許可する応答を返させる、ことを特徴とする。
【００１１】
第２側面の複合システムは、第１のプログラム言語により構築された第１システムと、前記第１のプログラム言語とは異なる第２のプログラム言語により構築された第２システムと、前記第１及び第２システムからアクセス可能な第３の言語により作成された排他制御プログラムと、を有し、前記排他制御プログラムは、前記第１及び第２システムの何れか一方の排他処理状態に対応する排他スレッドの管理を行うと共に、前記第１又は第２システムから排他制御依頼を受けると、前記排他スレッドを検索し、前記排他スレッドが無いときは前記排他制御依頼を許可する応答を返すことを特徴とする。
【００１２】
第３側面のクライアント-サーバシステムは、第１のプログラム言語により構築された第１システムを記憶する第１の保存領域と、書込み可能なメモリ領域を有するクライアント端末と、前記第１のプログラム言語とは異なる第２のプログラム言語により構築された第２システムと、前記第１及び第２システムからアクセス可能な第３の言語により作成された、前記第１及び第２システムの何れか一方の排他処理状態に対応する排他スレッドの管理を行うと共に、前記第１又は第２システムから排他処理依頼を受けると、前記排他スレッドを検索し、排他スレッドが無いときは前記排他制御依頼を許可する応答を返す排他制御プログラムとを記憶する第２の保存領域を有するサーバと、前記クライアント端末と前記サーバとを相互に通信可能に接続するネットワークと、を備え、前記クライアント端末の起動時に、前記第２の保存領域に記憶されている前記第２システムと、前記排他制御ブログラムと、を前記メモリ領域にダウンロードすることを特徴とする。
【発明の効果】
【００１３】
本発明の排他制御プログラムによれば、異なるプログラム言語で構築された複数のシステムを含む複合システム及びクライアント-サーバシステムにおいて、異なるプログラム言語で構築された複数のシステムを跨いだ排他制御が可能となる。
【図面の簡単な説明】
【００１４】
【図１】金融情報システム及びプログラム言語の歴史の概略を説明する図である。
【図２】勘定系営業店システム全体を俯瞰する図である。
【図３】本発明の実施形態の複合システムの機能の概略を示す機能ブロック図である。
【図４】１つの言語で構築されたシステムの排他制御を説明する図である。
【図５】複数の異なる言語で構築されたシステムでの排他制御を説明する図である。
【図６】現行技術のフラグ制御の実行順序を説明する図である。
【図７Ａ】現行技術のフラグ制御による課題を説明する図（その１）である。
【図７Ｂ】現行技術のフラグ制御による課題を説明する図（その２）である。
【図８Ａ】本発明の実施形態の排他制御プログラムの処理のシーケンス例を示す図（その１）である。
【図８Ｂ】本発明の実施形態の排他制御プログラムの処理のシーケンス例を示す図（その２）である。
【図９Ａ】本発明の実施形態の排他制御プログラムの処理を示すフローチャート（その１）である。
【図９Ｂ】本発明の実施形態の排他制御プログラムの処理を示すフローチャート（その２）である。
【図９Ｃ】本発明の実施形態の排他制御プログラムの処理を示すフローチャート（その３）である。
【図１０】本発明の実施形態のクライアント-サーバシステムのシステム構成例を示す図である。
【図１１】本発明の排他制御範囲と従来の排他制御範囲を比較して説明する図である。
【発明を実施するための形態】
【００１５】
以下に本発明の実施形態について図面を参照しながら詳細に説明する。
【００１６】
（複合システムの構成）
図３は、本発明の実施形態の複合システムの機能の概略を示す機能ブロック図である。
【００１７】
本発明の複合システムは、例えば、C言語で構築された第１システム１０と、JavaScript言語で構築された第２システム４０と、第１システム１０と第２システム４０との排他制御を実行するJava言語で構築された排他制御プログラム７０と、を有している。ここで、第１システム１０、第２システム４０、及び排他制御プログラム７０は、例えば、図示しないクライアント端末のコンピュータ上で実行されるプログラムである。
【００１８】
図３において、第１システム１０、排他制御プログラム７０、及び第２システム４０からメモリ３０の共通領域３１、JavaVM制御内３２、及びブラウザ制御内３３にアクセス可能である。
【００１９】
第１システム１０は、排他制御依頼手段１１と、処理実行手段１２とを有している。排他制御依頼手段１１は、排他制御プログラム７０に対してメモリ３０内の共通領域３１内の作業領域、例えば、ＩＤ１を指定して排他制御の開始を依頼し、排他制御プログラム７０からの排他制御応答を受けると、処理実行手段１２に第１システム１０の作業領域ＩＤ１での処理を開始させる。処理実行手段１２は、第１システム１０の作業領域ＩＤ１での処理を実行すると共に、第１システム１０の作業領域ＩＤ１での処理が完了すると、排他制御依頼手段１１を介して排他制御プログラム７０に対して排他制御完了を依頼し、排他制御プログラム７０からの排他制御完了応答を受信すると、第１システム１０の処理を終了する。例えば、図示しない１台のオーバーヘッドリーダ（ＯＨＲ）を図示しないクライアント端末に接続して、クライアント端末のコンピュータ上で実行される第１システム１０と第２システム４０とが共用している場合、ＯＨＲの使用許可がどのシステムに与えれているかを作業領域ＩＤ１に記憶しておき、第１システム１０でＯＨＲの使用を開始したい場合には、排他制御プログラム７０に対してＩＤ１を指定して排他制御の開始を依頼する。
【００２０】
第２システム４０は、排他制御依頼手段４１と、処理実行手段４２とを有している。排他制御依頼手段４１は、排他制御プログラム７０に対してメモリ３０内の共通領域３１内の作業領域、例えば、ＩＤ１を指定して排他制御の開始を依頼し、排他制御プログラム７０からの排他制御応答を受信すると、処理実行手段４２に第２システム４０の作業領域ＩＤ１での処理を開始させる。処理実行手段４２は、第２システム４０の作業領域ＩＤ１での処理を実行すると共に、第２システム４０の作業領域ＩＤ１での処理が完了すると、排他制御依頼手段４１を介して排他制御プログラム７０に対して排他制御完了を依頼し、排他制御プログラム７０からの排他制御完了応答を受けると、第２システム４０の処理を終了する。
【００２１】
排他制御プログラム７０は、第１システム１０又は第２システム４０からのメモリ３０内の作業領域を指定した排他制御の開始及び完了の依頼を受付ける排他制御受付手段７１と、メモリ３０内の作業領域を指定した排他制御の開始／完了の依頼を受けると作業領域に対応したＩＤ番号の排他スレッドの有無を検索するスレッド検索手段７２と、検索した時点で作業領域に対応したＩＤ番号の排他スレッドが無い場合に直ちにその作業領域に対応したＩＤ番号の排他スレッドを作成すると共に、作業領域に対応したＩＤ番号の排他制御の完了依頼を受けるとそのＩＤ番号の排他スレッドを削除するスレッド作成・削除手段７３と、スレッド検索手段７２の検索結果が作業領域に対応したＩＤ番号の排他スレッド有の場合に、その排他スレッドが削除されるのを監視するスレッド終了監視手段７４と、作業領域に対応したＩＤ番号の排他制御を依頼した依頼元の第１システム１０又は第２システム４０に対する排他制御依頼の許可／排他制御完了応答を返す依頼応答手段７５と、を有している。
【００２２】
排他制御受付手段７１は、第１システム１０からのメモリ３０内の作業領域のＩＤ番号を指定した排他制御の開始の依頼を受け付けると共に、第２システム４０からのメモリ３０内の作業領域のＩＤ番号を指定した排他制御の開始の依頼を受け付ける。排他制御受付手段７１は、受け付けた排他制御の開始の依頼で指定されている作業領域のＩＤ番号をスレッド検索手段７２に通知する。
【００２３】
排他制御受付手段７１は、メモリ３０内の作業領域のＩＤ番号を指定した排他制御の実行処理を完了したいシステム、例えば、第１システム１０から作業領域のＩＤ番号を指定した排他制御の完了の依頼を受け付けると、受け付けたＩＤ番号をスレッド検索手段７２へ出力する。
【００２４】
スレッド検索手段７２は、排他制御受付手段７１が受け付けた作業領域のＩＤ番号に対応した排他スレッドが排他スレッド領域８０に存在するか否かを検索する。
【００２５】
排他制御の開始の依頼において、作業領域のＩＤ番号に対応した排他スレッドが無い場合、スレッド検索手段７２は、スレッド作成・削除手段７３に作業領域のＩＤ番号に対応した排他スレッドの作成を指示すると共に、依頼応答手段７５を介して排他制御の開始の依頼を受け付けたシステムに排他制御応答を返送する。一方、作業領域のＩＤ番号に対応した排他スレッドが有る場合は、排他制御の開始の依頼を受け付けたシステムをスレッド終了監視手段７４へ出力する。
【００２６】
排他制御の完了の依頼の場合は、スレッド検索手段７２は、作業領域のＩＤ番号に対応した排他スレッドが排他スレッド領域８０に存在するのを確認し、スレッド作成・削除手段７３に作業領域のＩＤ番号に対応した排他スレッドの削除を指示する。
【００２７】
スレッド作成・削除手段７３は、スレッド検索手段７２からの指示に従って、排他スレッド領域８０に、作業領域に対応したＩＤ番号の任意数の排他スレッドを１つのみ作成又は削除する。
【００２８】
スレッド終了監視手段７４は、作業領域のＩＤ番号に対応する排他スレッドが排他スレッド領域８０から削除されるのを監視し、排他スレッド領域８０から作業領域のＩＤ番号に対応する排他スレッドが削除されたのを検知すると、スレッド作成・削除手段７３に作業領域のＩＤ番号に対応した排他スレッドの作成を指示すると共に、依頼応答手段７５を介して排他制御の開始の依頼を待っているシステムに排他制御依頼の許可の応答を返送する。
【００２９】
尚、両システムからの排他制御の開始の依頼における作業領域のＩＤ番号が異なる場合は、排他制御受付手段７１は、両システムからの排他制御の開始の依頼を受付ける。スレッド検索手段７２は、両システムからの受付けた排他制御の開始の依頼の作業領域のＩＤ番号に対応する排他スレッドの有無を検索する。
【００３０】
図３には、Java言語で構築された排他制御プログラム７０が、異なるC言語で構築された第１システム１０とJavaScript言語で構築された第２システム４０とを跨いだ排他制御が可能な複合システムの機能ブロック図を示したが、更に、図示しないJava言語で構築された第３システムを追加しても、異なる３つの言語を跨いだ排他制御が可能である。
【００３１】
（実施形態の動作）
本発明の実施形態の排他制御の動作について、（Ｉ）１つの言語で構築されたシステムと、（II）複数の異なる言語で構築されたシステムと、(III)現行技術のフラグ制御と、(IV)本発明の排他制御と、(Ｖ)本発明の排他制御と現行技術のフラグ制御の比較と、に分けて説明する。
【００３２】
（Ｉ）１つの言語で構築されたシステム
図４は、１つのプログラム言語で構築されたシステムの排他制御を説明する図であり、
１つのプログラム言語（C言語）で構築されたシステム１０（Ａ１）とシステム２０（Ａ２）とメモリ３０とからなるシステムが示されている。
【００３３】
システム１０（Ａ１）で処理が開始されると、ステップＳ１１へ進み、システム１０（Ａ１）内で閉じた特定の処理が実行され、ステップＳ１２へ進む。ステップＳ１２において、システム１０（Ａ１）からメモリ３０に、メモリ３０内の共通領域３１での他システムの処理中の有無を問い合わせ、他システムの実行中の処理が無い旨の返信を受けて、共通領域３１での他システムの処理が無いと判断し、ステップＳ１３へ進む。ステップＳ１３において、共通領域３１を更新し、メモリ３０の共通領域３１でＡ１の処理を開始し、ステップＳ１４へ進み、ステップＳ１４において、共通領域３１でのＡ１処理が実行される。
【００３４】
一方、システム２０（Ａ２）で処理が開始されてステップＳ２１へ進むと、システム２０（Ａ２）内で閉じたある処理が実行され、ステップＳ２２へ進む。ステップＳ２２において、システム２０（Ａ２）からメモリ３０内の共通領域３１での他システムの実行中の処理の有無を問い合わせ、他システムの実行中の処理が有る旨の返信を受けて、共通領域３１で他システムの処理中と判断し、ステップＳ２３へ進む。ステップＳ２３において、共通領域３１で他システムの処理中のため、システム２０（Ａ２）は、処理を実行せず、待機する。図４に示されたシステムでは、システム１０（Ａ１）がメモリ３０の共通領域３１で処理中のときは、システム２０（Ａ２）は待機する。逆に、システム２０（Ａ２）がメモリ３０の共通領域３１で処理中のときは、システム１０（Ａ１）は待機する。このように、１つのプログラム言語で構築されたシステム１０（Ａ１）とシステム２０（Ａ２）とは、お互いの処理が競合しないように、メモリ３０の共通領域３１をタイムシェアリングして排他処理を実行する。
【００３５】
（II）複数の異なる言語で構築されたシステム
図５は、複数の異なる言語で構築されたシステムでの排他制御を説明する図である。
【００３６】
図５を見ると、C言語で構築されたシステム１０（Ａ１）とJavaScript言語で構築されたシステム４０（Ｃ１）とメモリ３０とからなる複合システムが示されている。
【００３７】
システム１０（Ａ１）で処理が開始され、ステップＳ１１へ進むと、システム１０（Ａ１）内で閉じたある処理が実行され、ステップＳ１２へ進む。ステップＳ１２において、システム１０（Ａ１）からメモリ３０に、メモリ３０内の共通領域３１での他システムの実行中の処理の有無を問い合わせ、他システムの実行中の処理が無い旨の返信を受けて、共通領域３１での他システムの処理が無いと判断し、ステップＳ１３へ進む。ステップＳ１３において、共通領域３１を更新し、メモリ３０の共通領域３１でＡ１の処理を開始する。
【００３８】
一方、システム４０（Ｃ１）で処理が開始されてステップＳ４１へ進むと、システム４０（Ｃ１）内で閉じたある処理が実行され、ステップＳ４２へ進む。
【００３９】
ここで、図２を見ると、C言語で構築されたシステムからは、共通領域３１のどの領域へもアクセスできる。Java言語で構築されたシステムからは、JavaVM（Java Virtual Machine）制御内３２に対してのみアクセスできる。JavaScript言語で構築されたシステムからは、ブラウザ制御内３３に対してのみアクセスできる。このように、プログラム言語によってアクセス可能なメモリ領域にアクセス制限を設けているのは、メモリ領域に記憶された情報が意図せず書き換わるのを防ぐためである。
【００４０】
再び、図５を見ると、C言語で構築されたシステム１０（Ａ１）からは、共通領域３１のどの領域へもアクセスできる。これに対し、システム４０（Ｃ１）は、JavaScript言語で構築されたシステムであるため、ブラウザ制御内３３に対してはアクセスできるが、ブラウザ制御内３３以外の共通領域３１にはアクセスできない。そのため、ステップＳ４２において、システム４０（Ｃ１）からメモリ３０内の共通領域３１での他システムの実行中の処理の有無の問い合わせを行うことはできない。その結果、共通領域３１を使用した排他制御を行うことができない。
【００４１】
(III)現行技術のフラグ制御
図５に示されたような複数の異なる言語で構築されたシステム、例えば、勘定系営業店システムに対し、現行技術のフラグ制御により排他制御を実行する試みがある。
【００４２】
図６は、現行技術のフラグ制御の実行順序を説明する図である。
図６に示された複合システムは、JavaScript言語で構築されたシステム４０（Ｃ１）と、Java言語で構築されたシステム６０（Ｂ１）との、異なるプログラム言語で構築された２つのシステムを有している。JavaScript言語で構築されたシステム４０（Ｃ１）からアクセス可能なブラウザ制御内３３には、システム４０（Ｃ１）の条件判定処理が実行された際に、その結果をデータとして保存しておく領域である変数領域Ｆ４０が設けられている。又、Java言語で構築されたシステム６０（Ｂ１）からアクセス可能なJavaVM制御内３２には、システム６０（Ｂ１）の変数領域Ｆ６０が設けられている。
【００４３】
図６において、ブラウザ制御内３３（変数領域Ｆ４０）とJavaVM制御内３２（変数領域Ｆ６０）は、実際には図２に描かれているようにメモリ３０内に含まれているが、動作を説明する便宜上分離して描かれている。ブラウザ制御内３３とJavaVM制御内３２とは、図２に示されているように、メモリ３０の共通領域３１に含まれている。
【００４４】
このシステム中のシステム４０（Ｃ１）及びシステム６０（Ｂ１）で処理が開始されると、それぞれステップＳ４１及びステップＳ６１へ進む。
【００４５】
ステップＳ４１において、システム４０（Ｃ１）は、システム４０（Ｃ１）内で閉じたある処理が実行し、ステップＳ４２へ進む。ステップＳ６１において、システム６０（Ｂ１）は、システム６０（Ｂ１）内で閉じたある処理が実行し、ステップＳ６２へ進む。
【００４６】
ステップＳ４２において、システム４０（Ｃ１）からシステム６０（Ｂ１）に、他システムの実行中の処理の有無を問い合わせると、ステップＳ６２において、システム６０（Ｂ１）は、JavaVM制御内３２内のフラグＦ６０を参照し、ステップＳ６３へ進む。ステップＳ６３へ進むと、システム６０（Ｂ１）は、システム４０（Ｃ１）に、処理中では無い旨のフラグ応答を返信し、ステップＳ４２に戻る。ステップＳ４２は、受信したフラグ応答から他システムの実行中の処理が無いと判断し、ステップＳ４３へ進む。
【００４７】
ステップＳ４３において、システム４０（Ｃ１）からシステム６０（Ｂ１）へ、実行中の処理が無いため、これから処理を開始する旨を連絡し、ステップＳ６４に進む。ステップＳ６４において、システム６０（Ｂ１）は、JavaVM制御内３２のフラグＦ６０にアクセスし、フラグＦ６０をＢ１処理中に書き換えて、ステップＳ６５に進む。ステップＳ６５において、システム６０（Ｂ１）は、システム４０（Ｃ１）に、Ｂ１処理中のフラグ応答を返信し、ステップＳ６６へ進むと共に、ステップＳ４３に戻る。
【００４８】
ステップＳ４３において、受信したフラグ応答からＢ１処理中であると判断し、ステップＳ４４へ進み、システム４０（Ｃ１）は、システム４０（Ｃ１）内で閉じた処理を実行する。
【００４９】
ステップＳ６６において、システム６０（Ｂ１）は、システム６０（Ｂ１）は、JavaVM制御内３２のフラグＦ６０を参照し、フラグＦ６０がＢ１処理中であるのを確認し、ステップＳ６７へ進む。ステップＳ６７において、アクセス可能なJavaVM制御内３２がＢ１処理中であるので、システム６０（Ｂ１）は待機する。
【００５０】
図６中の破線で囲まれたプロセスＰ１（ステップＳ４２〜Ｓ４４、及びステップＳ６２〜Ｓ６７）の処理では、システム４０（Ｃ１）からのシステム６０（Ｂ１）への他システムの処理中の有無の問い合わせに伴うフラグ参照（ステップＳ６２）と、システム６０（Ｂ１）の自身のフラグ参照（ステップＳ６６）とのタイミングがずれているので、排他制御が可能である。
【００５１】
次に、現行技術のフラグ制御による課題について説明する。
図７Ａ及び図７Ｂは、現行技術のフラグ制御による課題を説明する図である。
【００５２】
図７Ａ及び図７Ｂに示されたシステムは、C言語で構築されたシステム１０（Ａ１）と、Java言語で構築されたシステム６０（Ｂ１）と、JavaScript言語で構築されたシステム４０（Ｃ１）と、の異なる言語から構築された３つのシステムを有している。図７Ａ及び図７Ｂにおいて、共通領域３１、JavaVM制御内３２及びブラウザ制御内３３は、実際には、図２に描かれているようにメモリ３０内に含まれているが、動作を説明する便宜上分離して描かれている。
【００５３】
C言語で構築されたシステム１０（Ａ１）からアクセス可能な共通領域３１には、システム１０（Ａ１）の条件判定処理が実行された際に、その結果をデータとして保存しておく領域である処理状態を示す変数領域Ｆ１０が設けられている。又、Java言語で構築されたシステム６０（Ｂ１）からアクセス可能なJavaVM制御内３２には、システム６０（Ｂ１）の条件判定処理が実行された際に、その結果をデータとして保存しておく領域である処理状態を示す変数領域Ｆ６０が設けられている。更に、JavaScript言語で構築されたシステム４０（Ｃ１）からアクセス可能なブラウザ制御内３３には、システム４０（Ｃ１）の条件判定処理が実行された際に、その結果をデータとして保存しておく領域である処理状態を示す変数領域Ｆ４０が設けられている。
【００５４】
図７Ａ中のステップＳ１２において、システム１０（Ａ１）は、ステップＳ６２のフラグ参照及びステップＳ６３のフラグ応答の受信により、他システムの処理中有無を問い合わせて判断する。ステップＳ１２において、他システムの実行中の処理が無いと判断すると、図７Ｂ中のステップＳ１３に進む。
【００５５】
ステップＳ１２の処理からステップＳ１３の処理に移行する隙間時間に、ステップＳ４３において、システム４０（Ｃ１）からシステム６０（Ｂ１）に対して、他システムの実行中の処理の有無の問い合わせが行われる場合がある。
【００５６】
この場合には、図７Ｂ中のステップＳ６６で、システム６０（Ｂ１）のフラグＦ６０の更新が実行される前であるため、ステップ６４でのフラグＦ６０の参照結果は、実行中の処理無しであり、ステップＳ６５では、システム６０（Ｂ１）は、システム４０（Ｃ１）に対して実行中の処理無しのフラグ応答を返信し、ステップＳ４３に戻る。ステップＳ４３において、システム４０（Ｃ１）は、実行中の処理無しのフラグ応答を受信し、他システムの実行中の処理が無いと判断すると、図７Ｂ中のステップＳ４４に進む。
【００５７】
ステップ１３において、システム１０（Ａ１）からシステム６０（Ｂ１）へ処理中なしのためこれから処理を開始する旨を連絡し、ステップＳ６６に進む。ステップＳ６６において、システム６０（Ｂ１）は、JavaVM制御内３２のフラグＦ６０にアクセスし、フラグＦ６０をＡ１処理中に書き換えて、ステップＳ６７に進む。ステップＳ６７において、システム６０（Ｂ１）は、システム１０（Ａ１）に、Ａ１処理中のフラグ応答を返信し、ステップＳ６８へ進むと共に、ステップＳ１３に戻る。
【００５８】
ステップＳ１３において、受信したフラグ応答からＡ１処理中であると判断し、ステップＳ１４へ進み、システム１０（Ａ１）は、共通領域３１内に設けられたフラグ１０をＡ１処理中にフラグ更新すると共に、システム１０（Ａ１）内で閉じた処理を実行する。
【００５９】
ステップＳ４４において、システム４０（Ｃ１）からシステム６０（Ｂ１）へ処理中なしのためこれからＣ１処理を開始する旨を連絡し、ステップＳ６８に進む。ステップＳ６８において、システム６０（Ｂ１）は、JavaVM制御内３２のフラグＦ６０にアクセスし、フラグＦ６０をＡ１処理中からＣ１処理中に書き換えて、ステップＳ６９に進む。ステップＳ６９において、システム６０（Ｂ１）は、システム４０（Ｃ１）に、Ｃ１処理中のフラグ応答を返信し、ステップＳ４４に戻る。
【００６０】
ステップＳ４４において、受信したフラグ応答からＣ１処理中であると判断し、ステップＳ４５へ進み、システム４０（Ｃ１）は、ブラウザ制御内３３に設けられたフラグＦ４０をＣ１処理中にフラグ更新すると共に、システム４０（Ｃ１）内で閉じた処理を実行する。図７Ｂの破線で囲まれたステップＳ４４，Ｓ４５，Ｓ６８及びＳ６９の処理は、本来、動作すべきでない処理である。
【００６１】
しかし、現行技術のフラグ制御では、システム１０（Ａ１）が、ステップＳ１２で処理中無しのフラグ応答を受信してからステップＳ１３の処理を開始する間に、他のシステムからのアクセスが可能なすき間時間が存在し、このすき間時間に、ステップＳ４３において、システム４０（Ｃ１）からシステム６０（Ｂ１）に対してフラグＦ６０参照の問い合せを受けると、システム６０（Ｂ１）はシステム４０（Ｃ１）に対して、処理中無しのフラグ応答を返信してしまう。そのため、本来、動作すべきでない図７Ｂの破線で囲まれたステップＳ４４，Ｓ４５，Ｓ６８及びＳ６９の処理が実行されてしまう。
【００６２】
フラグ制御は、実行順序の制御であり、各システムが同一のメモリ領域にアクセスし、後続処理のメモリへのアクセスをロックする様な排他制御ではないため、フラグの問い合わせ処理が同時に発生する等の要因で処理が衝突すると、後続処理で取得するフラグの状態が正常な状態で取得されないことから制御が機能しなくなり、結果としてシステムとしては本来動作すべきでない時に処理が実行されてしまう。
【００６３】
このような現行技術のフラグ制御による課題を解決する本発明の排他スレッドを用いた排他制御の動作について、説明する。
【００６４】
(IV)本発明の排他制御
図８Ａ及び図８Ｂは、本発明の実施形態の排他制御プログラムの処理のシーケンス例を示す図である。
【００６５】
本発明の実施形態の排他制御プログラム図８Ａにおいて、C言語で構築されたシステム１０（Ａ１）と、JavaScript言語で構築されたシステム４０（Ｃ１）と、Java言語で構築された排他制御プログラム７０と、を含んでいる。図８Ａ及び図８Ｂにおいて、共通領域３１、JavaVM制御内３２及びブラウザ制御内３３は、実際には、図２に描かれているようにメモリ３０内に含まれているが、動作を説明する便宜上分離して描かれている。
【００６６】
システム１０（Ａ１）で処理が開始されると、ステップＳ１１へ進み、システム１０（Ａ１）内で閉じたある処理が実行され、ステップＳ１２へ進む。
【００６７】
ステップＳ１２において、排他制御依頼の処理が行われる。具体的には、システム１０（Ａ１）から排他制御プログラム７０に対して引数ＩＤｎを元に排他制御の開始の依頼をし、ステップＳ７１へ進む。ここで、引数ＩＤｎは、メモリ３０の共通領域３１中のマッピングされたアクセス領域１〜ｎの番号を示している。以降、引数ＩＤｎ＝ＩＤ１として説明する。
【００６８】
ステップＳ７１において、排他制御プログラム７０は、引数ＩＤ１に基づいて、排他スレッド領域８０内のアクセス領域１のスレッドの有無を検索する。排他スレッド領域８０内のアクセス領域１には、スレッドが無いので、ステップＳ７２へ進む。ステップＳ７２において、排他制御プログラム７０は、排他スレッド領域８０内のアクセス領域１にスレッドＴ１を作成し、ステップＳ７３へ進む。ステップＳ７３において、排他制御プログラム７０は、復帰値：完了ＩＤ１の排他制御応答をシステム１０（Ａ１）に返信し、ステップＳ１２へ戻る。ステップＳ１２において、システム１０（Ａ１）は、アクセス領域１へのアクセス許可を得たことを知り、ステップＳ１３へ進む。
【００６９】
ステップＳ１３において、システム１０（Ａ１）は、スレッドＴ１に対応するアクセス領域１における処理を実行し、処理が終了すると、図８Ｂ中のステップＳ１４へ進む。
【００７０】
ステップＳ１４において、排他制御完了依頼の処理が行われる。具体的には、システム１０（Ａ１）から排他制御プログラム７０に対して引数完了ＩＤ１を元に排他制御の完了の依頼をし、ステップＳ７４へ進む。ステップＳ７４において、排他制御プログラム７０は、引数：完了ＩＤ１に基づいて、排他スレッド領域８０内のアクセス領域１のスレッドの有無を検索する。アクセス領域１に対応する排他スレッド領域８０内には、スレッドＴ１が有るので、ステップＳ７５に進み、ステップＳ７５において、排他制御プログラム７０は、スレッドＴ１を削除して終了し、ステップＳ７６へ進む。ステップＳ７６において、排他制御プログラム７０は、排他制御完了応答をシステム１０（Ａ１）へ返し、ステップＳ１４に戻る。ステップＳ１４において、システム１０（Ａ１）は、排他制御が完了したことを知り、処理を終了する。
【００７１】
一方、システム４０（Ｃ１）で処理が開始されると、ステップＳ４１へ進むと、システム４０（Ｃ１）内で閉じたある処理が実行され、ステップＳ４２へ進む。
【００７２】
ステップＳ４２において、排他制御依頼の処理が行われる。具体的には、システム４０（Ｃ１）から排他制御プログラム７０に対して引数ＩＤ１を元に排他制御の開始の依頼をし、ステップＳ７７へ進む。ステップＳ７７において、排他制御プログラム７０は、引数ＩＤ１に基づいて、排他スレッド領域８０内のアクセス領域１のスレッドの有無を検索する。排他スレッド領域８０内のアクセス領域１には、スレッドが無いので、ステップＳ７８へ進む。
【００７３】
ステップＳ７８において、排他制御プログラム７０は、排他スレッド領域８０内のアクセス領域１にスレッドを作成しようと試みるが、ステップＳ７２において既にスレッドＴ１が作成されているために、スレッドの作成に失敗し、ステップＳ７９へ進む。ステップＳ７９に進むと、排他制御プログラム７０は、スレッド終了を待つ終了監視処理を継続し、ステップＳ７５の処理によりスレッドが終了すると、ステップＳ８０へ進む。ステップＳ８０において、排他制御プログラム７０は、排他スレッド領域８０内のアクセス領域１へのスレッドＴ１の作成に成功し、ステップＳ８１へ進む。ステップＳ８１において、排他制御プログラム７０は、復帰値：完了ＩＤ１の排他制御応答をシステム４０（Ｃ１）に返信し、ステップＳ４２へ戻る。ステップＳ４２において、システム４０（Ｃ１）は、アクセス領域１へのアクセス許可を認識すると、ステップＳ４３へ進む。
【００７４】
ステップＳ４３において、システム４０（Ｃ１）は、スレッドＴ１に対応するアクセス領域１における処理を実行し、処理が終了すると、ステップＳ４４へ進む。
【００７５】
ステップＳ４４において、排他制御完了依頼の処理が行われる。具体的には、システム４０（Ｃ１）から排他制御プログラム７０に対して引数完了ＩＤ１を元に排他制御の完了の依頼をし、ステップＳ８２へ進む。ステップＳ８２において、排他制御プログラム７０は、引数：完了ＩＤ１に基づいて、排他スレッド領域８０内のアクセス領域１のスレッドの有無を検索する。アクセス領域１に対応する排他スレッド領域８０内には、スレッドＴ１が有るので、ステップＳ８３に進み、ステップＳ８３において、排他制御プログラム７０は、スレッドＴ１を削除して終了し、ステップＳ８４へ進む。ステップＳ８４において、排他制御プログラム７０は、排他制御完了応答をシステム４０（Ｃ１）へ返し、ステップＳ４４に戻る。ステップＳ４４において、システム４０（Ｃ１）は、排他制御が完了したことを知り、処理を終了する。
【００７６】
図９Ａ〜図９Ｃは、本発明の実施形態の排他制御プログラムの処理を示すフローチャートである。
【００７７】
図９Ａに示された本発明の実施形態の排他制御プログラムの全体の処理が開始されると、ステップＳ１０１に進み、排他制御プログラム７０が、排他制御実行の処理を行い、ステップＳ１０２へ進む。
【００７８】
ステップＳ１０２において、排他制御プログラム７０は、排他制御の終了依頼が有るか否かを判定し、終了依頼有と判定しなければ(No)、ステップＳ１０１の排他制御実行の処理を行い続け、ステップＳ１０２において、終了依頼有と判定されると(Yes)、ステップＳ１０３に進み、排他制御プログラム７０は、排他制御終了の処理を行い、排他制御プログラム７０の処理を終了する。
【００７９】
図９Ｂは、図９Ａの排他制御の処理の詳細を示すフローチャートである。図９ＢのステップＳ２０１、Ｓ２０２、Ｓ２１１及びＳ２１２の処理が図９Ａ中のステップＳ１０１の排他制御の実行処理に対応し、更に、図９ＢのステップＳ２２１〜Ｓ２２３の処理が図９Ａ中のステップＳ１０３の排他制御の終了処理に対応している。
【００８０】
図９Ａ中のステップＳ１０１の排他制御の実行処理が開始されると、図９Ｂ中のステップＳ２０１へ進み、呼出元からの排他制御依頼を受けると、排他制御プログラム７０は、排他制御を行うことを希望するアクセス領域を示す排他ＩＤ、排他制御完了を希望するアクセス領域を指す完了ＩＤに基づいて、排他スレッドを作成し、ステップＳ２０２へ進む。ステップＳ２０２において、呼出元へ完了ＩＤの応答を返信し、排他制御依頼の処理を終了する。
【００８１】
排他制御完了依頼を受けると、ステップＳ２１１へ進み、排他制御プログラム７０は、完了ＩＤに対応する排他スレッドを終了し、ステップＳ２１２へ進む。ステップＳ２１２に進むと、排他制御プログラム７０は、呼出元へ排他制御完了の応答を返信し、排他制御完了依頼の処理を終了する。
【００８２】
更に、図９Ａ中のステップＳ１０２で、終了依頼有(Yes)と判定されると、図９Ｂ中のステップＳ２２１へ進み、排他制御プログラム７０は、全ての排他スレッドを一覧取得し、ステップＳ２２２へ進む。ステップＳ２２２において、排他制御プログラム７０は、排他スレッドの一覧の中に排他スレッドが有るか否かを判定し、有りの場合は(Yes)、ステップＳ２２３へ進む。ステップＳ２２３において、スレッド有りの排他スレッドを終了し、ステップＳ２２２へ戻る。ステップＳ２２２における判定が排他スレッド無しとなると(No)、図９Ａ中のステップＳ１０３の排他制御終了の処理を終了し、排他制御の処理を終了する。
【００８３】
図９Ｃは、図９Ｂと並行して行われる排他スレッドの処理を示すフローチャートである。排他スレッドの処理が開始されると、ステップＳ３０１へ進み、制御プログラム７０は、排他スレッド領域８０に、スレッドを作成し、ステップＳ３０２へ進み、作成したスレッドを起動し、ステップＳ３０３へ進む。
【００８４】
ステップＳ３０３に進むと、排他制御プログラム７０は、同一ＩＤスレッドが有るか否かを判定し、有る場合は(Yes)、ステップＳ３０４に進んで、待ち合わせ処理を実行し、ステップＳ３０３へ戻る。ステップＳ３０３での判定において、同一ＩＤスレッドが無いと判断された場合(No)、ステップＳ３０５へ進む。
【００８５】
ステップＳ３０５において、排他制御プログラム７０は、排他ＩＤを元に完了ＩＤを生成し、ステップＳ３０６へ進む。ステップＳ３０６に進むと、排他制御プログラム７０は、完了ＩＤを呼出元へ応答し、ステップＳ３１１へ進む。ステップＳ３１１において、シンクロナイズドブロックによる排他制御が行われ、スレッドが終了すると、ステップＳ３１２へ進む。ステップＳ３１１におけるシンクロナイズドブロックによる排他制御とは、同一のアクセス領域で処理するスレッドを１つに限定することができるので、２つのスレッドがほぼ同時に実行された場合、先にアクセス領域内に入ったスレッドがアクセス領域内から抜けない限り、後から入ろうとするスレッドが待たされる排他制御である。
【００８６】
ステップＳ３１２において、排他制御プログラム７０は、完了ＩＤを付加した排他制御応答を呼出元へ返す。
【００８７】
更に、図９Ａ中のステップＳ１０３で、終了依頼有(Yes)と判定されると、図９Ｃ中のステップＳ３２１へ進み、排他制御プログラム７０は、完了ＩＤが一致するか否かを判定し、一致すれば(Yes)、ステップＳ３２２へ進む。ステップＳ３２２に進むと、排他制御プログラム７０は、復帰値正常の応答を呼出元へ返信し、処理を終了する。ステップＳ３２１における判定で完了ＩＤが一致しなければ(No)、ステップＳ３２３へ進み、排他制御プログラム７０は、復帰値異常の応答を呼出元へ返信し、処理を継続する。
【００８８】
(Ｖ)本発明の排他制御と現行技術のフラグ制御の比較
図７Ａ、図７Ｂ及び図８Ａを参照しつつ、本発明の排他制御では、現行技術のフラグ制御で問題となる処理状況の問い合わせ処理の衝突がなぜ解消できるかについて説明する。
【００８９】
図７Ａ中の破線で囲まれたプロセスＰ２には、C言語で構築されたシステムＡ１からJava言語で構築されたシステムＢ１への処理状況の問い合わせ（ステップＳ１２、Ｓ６２、Ｓ６３）と、JavaScript言語で構築されたシステムＣ１からJava言語で構築されたシステムＢ１への処理状況の問い合わせ（ステップＳ４３、Ｓ６４、Ｓ６５）と、の衝突が表されている。
【００９０】
現行技術のフラグ制御では、図７Ａ中のプロセスＰ２のような処理状況の問い合わせの衝突が発生すると、システム６０（Ｂ１）はシステム１０（Ａ１）に対して処理中無しのフラグ応答を返信（ステップＳ６３）しているがシステム１０（Ａ１）によるフラグ更新（ステップＳ６６）の前であるため、システム６０（Ｂ１）はシステム４０（Ｃ１）に対して、処理中無しのフラグ応答を返信（ステップＳ６５）してしまう。
【００９１】
そのため、本来、動作してはいけない図７Ｂの破線で囲まれたプロセスＰ３（ステップＳ４４，Ｓ４５，Ｓ６８及びＳ６９）の処理が実行されてしまう。
【００９２】
現行技術のフラグ制御は、実行順序の制御であり、各システムが同一のメモリ領域にアクセスし、後続処理のメモリへのアクセスをロックする様な排他制御ではないため、フラグの問い合わせ処理が同時に発生する等の要因で処理が衝突すると、後続処理で取得するフラグの状態が正しく取得されないことから排他制御が機能しなくなり、結果としてシステムとしては本来動作すべきでない時に処理が実行されてしまう。
【００９３】
これに対し、本発明の排他制御では、図８Ａ中の破線で囲まれたプロセスＰ４（ステップＳ１２、Ｓ７１、Ｓ４２、Ｓ７７）の排他制御依頼の処理の衝突が発生するが、図８Ａ中の破線で囲まれたプロセスＰ５（ステップＳ７２、Ｓ７３、Ｓ７８、Ｓ７９）の処理が行われる。プロセスＰ５の処理では、プロセスＰ４で排他制御依頼の処理の衝突が発生しても、一つのＩＤ１に対応するスレッドは１つのみ作成され、１つのスレッドが作成されると他の排他制御依頼に対してはスレッドは作成されず、作成されたスレッドが終了するのを待ち合わせる終了監視を行う（ステップＳ７９）。そのため、本発明の排他制御によれば、現行技術における処理状況の問い合わせ処理の衝突時に排他処理できない課題を解消することができる。
【００９４】
（実施形態のクライアント-サーバシステム）
図１０は、本発明の実施形態のクライアント-サーバシステムのシステム構成例を示す図である。
【００９５】
本発明の実施形態のクライアント-サーバシステムは、図１０に示されているように、クライアント端末（以下、「クライアント」という。）１００とサーバ２００とがネットワーク３００により相互に通信可能に接続されている。
【００９６】
クライアント１００は、メモリ領域１１０とハードディスク等の第１の保存領域１２０と、を有している。メモリ領域１１０には、例えば、本発明の排他制御プログラム１１１と、C言語で構築された第１システムであるＣシステム１１２と、プログラム言語Javaで構築された第２システムであるJavaシステム１１３と、プログラム言語JavaScriptで構築された第３システムであるJavaScriptシステム１１４と、が格納されている。又、第１の保存領域１２０には、例えば、C言語で構築された第１システムとしてのＣシステム１２１が保存されている。
【００９７】
サーバ２００は、ハードディスク等の第２の保存領域２２０を有しており、第２の保存領域２２０には、本発明の排他制御プログラム２２１と、プログラム言語Javaで構築された第２システムとしてのJavaシステム２２２と、プログラム言語JavaScriptで構築された第３システムとしてのJavaScriptシステム２２３と、が保存されている。
【００９８】
クライアント１００の起動時に、サーバ２００の有する第２の保存領域２２０に記憶されている排他制御ブログラム２２１と、第２システムのJavaシステム２２２と、第３システムのJavaScriptシステム２２３と、をクライアント１００が有する第１のメモリ領域１１０にダウンロードするように構成される。
【００９９】
（実施形態の効果）
図１１（ａ），（ｂ）は、本発明の排他制御範囲と従来の排他制御範囲を比較して説明する図である。
【０１００】
従来の排他制御範囲は、図１１（ａ）に示されたように、異なるプログラム言語で構築されたシステムＡ１、システムＢ１、システムＣ１の各範囲内に限られており、異なるプログラム言語で構築されたシステムＡ１、システムＢ１、システムＣ１の間を跨ぐ排他制御はできなかった。
【０１０１】
これに対し、本発明の排他制御プログラムは、システムＡ１、システムＢ１、システムＣ１を構築している異なるプログラム言語からアクセス可能なプログラム言語で構築され、最先の排他制御依頼に対しての排他スレッドを作成し、２番目以降の排他制御依頼に対しては、シンクロナイズドブロックによる排他制御を行う。そのため、本発明の排他制御範囲は、図１１（ｂ）に示されたように、異なるプログラム言語で構築されたシステムＡ１、システムＢ１、システムＣ１の間を跨ぐ排他制御が可能になる。
【０１０２】
（産業利用可能性）
本明細書では、背景技術及び発明が解決しようとする課題において、金融情報システムとプログラム言語の歴史等について述べたが、本発明の複合システム、複合システムの排他制御プログラム、及びクライアント−サーバシステムは、金融情報システムに限定されない。業務を継続運用する目的から過去のシステムを継続運用することが常に求められ、新たな開発は過去のソフトウェアに追加する形で開発されてきているシステム、例えば、鉄道運行システム等の情報システムにも適用可能である。
【０１０３】
以上、本発明の実施形態について説明したが、本発明は、以上に述べた実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の構成又は実施形態が可能である。
【符号の説明】
【０１０４】
１０                          第１システム（Ａ１）
１１，４１                    排他制御依頼手段
１２，４２                    処理実行手段
２０                          第２システム（Ａ２）
３０，１１０                  メモリ領域
３１                          共通領域
３２                          JavaVM制御内
３３                          ブラウザ制御内
４０                          第２システム（Ｃ１）
６０                          第３システム（Ｂ１）
Ｆ１０，Ｆ４０，Ｆ６０        フラグ
７０，１１１，２２１          排他制御プログラム
７１                          排他制御受付手段
７２                          スレット検索手段
７３                          スレッド作成・削除手段
７４                          スレッド終了監視手段
７５                          依頼応答返信手段
８０                          排他スレッド領域
Ｔ１，Ｔ２，・・・，Ｔｎ      排他スレッド
１００                        クライアント
１１２，１２１                Ｃシステム
１１３，２２２                Javaシステム
１１４，２２３                JavaScriptシステム
１２０，２２０                保存領域
２００                        サーバ
３００                        ネットワーク
【図１】
2017016312.tif 000003
【図２】
2017016312.tif 000004
【図３】
2017016312.tif 000005
【図７Ａ】
2017016312.tif 000006
【図９Ａ】
2017016312.tif 000007
【図９Ｂ】
2017016312.tif 000008
【図９Ｃ】
2017016312.tif 000009
【図４】
2017016312.tif 000010
【図５】
2017016312.tif 000011
【図６】
2017016312.tif 000012
【図７Ｂ】
2017016312.tif 000013
【図８Ａ】
2017016312.tif 000014
【図８Ｂ】
2017016312.tif 000015
【図１０】
2017016312.tif 000016
【図１１】
2017016312.tif 000017