(57)【要約】【課題】ソースコードを管理することなく常に複数のコンピュータで同じソースコードを実行することができるインタプリタ言語実行システムを提供することを目的とする。【解決手段】送信先となる他のコンピュータを記載した送信先ファイルと実行プログラムとを備えたメインコンピュータと、受信プログラムと実行プログラムとを備えた他のコンピュータとを備える。メインコンピュータは、実行プログラムにより、ソースコードを入力し解析してオブジェクトコードをメモリ上に出力し、送信先ファイルに格納されている送信先のコンピュータにオブジェクトコードを送信し、オブジェクトコードを実行する。他のコンピュータは、オブジェクトコードを受信してメモリ上に出力し、実行プログラムを起動する。実行プログラムでは、受信プログラムからの起動か否かを判定し、その場合はメモリ上に出力されているオブジェクトコードを実行する。【選択図】  図１
2011159064.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータのそれぞれで、インタプリタ言語で記述された同一のプログラムを、実行するインタプリタ言語実行システムであって、
送信先となる他のコンピュータを特定する情報を格納した送信先ファイルと実行プログラムとを備えた１台のメインコンピュータと、受信プログラムと実行プログラムとを備えた他のコンピュータとを備え、
前記メインコンピュータは、前記実行プログラムを実行することにより、
インタプリタ言語で記述されたプログラムのソースコードを入力する手段、
入力したソースコードを解析して、オブジェクトコードをメモリ上に出力する手段、
前記送信先ファイルに格納されている送信先のコンピュータに、前記オブジェクトコードを送信する手段、および、
前記メモリ上のオブジェクトコードを実行する手段
として、機能し、
前記他のコンピュータは、前記受信プログラムを実行することにより、
前記メインコンピュータから送信されたオブジェクトコードを受信してメモリ上に出力する手段、および、
前記実行プログラムを起動する手段
として機能するとともに、
前記実行プログラムを実行することにより、
前記受信プログラムからの起動か否かを判定する手段、
前記受信プログラムからの起動でない場合、指定されたプログラムのソースコードを入力し、解析してオブジェクトコードをメモリ上に出力し、該オブジェクトコードを実行する手段、および、
前記受信プログラムからの起動である場合、前記受信プログラムがメモリ上に出力したオブジェクトコードを実行する手段
として機能する
ことを特徴とするインタプリタ言語実行システム。
【請求項２】
請求項１に記載のインタプリタ言語実行システムにおいて、
前記送信先ファイルは、送信先となる他のコンピュータ毎に実行条件を保持するものであり、
前記メインコンピュータは、前記送信先ファイルに格納されている送信先のコンピュータ毎に、前記実行条件が満たされている場合にのみ前記オブジェクトコードを送信するものである
ことを特徴とするインタプリタ言語実行システム。
【請求項３】
請求項１または２に記載のインタプリタ言語実行システムにおいて、
前記実行プログラムは、指定したソースコードを、指定した実行先コンピュータで実行させる命令Ｚを含むものであり、
該命令Ｚを実行したコンピュータは、
該命令Ｚで指定されたソースコードが存在するコンピュータが実行元コンピュータであるか実行先コンピュータであるかを判定する手段、
前記ソースコードが存在するコンピュータが実行元コンピュータである場合は、指定されたソースコードを入力し、解析し、取得したオブジェクトコードを実行先コンピュータに送信する手段、および、
前記ソースコードが存在するコンピュータが実行先コンピュータである場合は、指定されたソースコードの起動を該実行先コンピュータに要求する手段
として機能するものであるインタプリタ言語実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インタプリタ言語のソースコードを複数のコンピュータで実行するインタプリタ言語実行システムに関するものである。
【背景技術】
【０００２】
インタプリタ言語実行プログラム用のソースコードを作成・更新し、そのソースコードを複数のコンピュータ上で実行したい場合、実行するソースコードが複数のコンピュータ間で同一となるように同期をとり、管理することが難しい。
【０００３】
例えば、図７のケースに示すように、コンピュータＡ上で作成・更新したソースコードをコンピュータＡ、コンピュータＢ、およびコンピュータＣで実行する場合、事前にコンピュータＡ上のソースコードをファイルのコピーやファイルの転送等でコンピュータＢ，Ｃに配布し同期をとる必要がある。このようなケースは、例えば、本店および各支店毎の毎日の売り上げを集計するために、各店毎のコンピュータで同一のプログラムを実行させたい場合に起こり得る。この場合、例えば本店からソースコードを各支店に配布する必要があるが、支店の数が数千店ある場合には、配布先が多くなり、より管理が困難となる。もし、配布漏れが発生すると、コンピュータＡ、コンピュータＢ、およびコンピュータＣで実行したソースコードが異なることとなる可能性が生じ、その場合、結果が不一致となることがあり問題である。
【０００４】
また、図８のケースも考えられる。本ケースでは、前提として、利用するインタプリタ言語が、別コンピュータ上でソースコードを実行させる命令(コマンド)を持つものであるとする。その命令を「命令Ｚ」と呼ぶ。コンピュータＡでソースコードＸを実行し、そのソースコードＸの中でコンピュータＢとコンピュータＣのソースコードＹを命令Ｚで実行させるとする。この場合、コンピュータＢとコンピュータＣで同じソースコードＹが実行されるように同期を取る必要がある。もし、同期が取れていない場合、コンピュータＢとコンピュータＣで実行したソースコードが異なることとなり、結果が不一致となる可能性が生じ問題である。
【０００５】
ソースコードの同期を取る方法として、以下の方法が考えられる。
・ファイルコピー、ファイル転送を手動で行う。
・何らかのプログラムを使用して自動で行う。
【０００６】
手動の場合は、複数のコンピュータに対して確実にコピー等を行う必要があり、管理するのが難しい。また、何らかの別プログラムを使用して配布するにしても、確実に配布するための設定等を行う必要があり、管理が難しい。また、手動と自動のどちらであっても、ソースコードを更新して配布する前に、コンピュータＢおよびコンピュータＣでソースコードが実行されると、コンピュータＡとコンピュータＢおよびコンピュータＣとでソースコードが不一致となることがあり、同期が取れていない状態となる。
【０００７】
このような複数コンピュータでインタプリタ言語のソースコードを実行する技術として、特許文献１に挙げるような先行技術文献がある。該文献では、ネットワークに接続された複数のコンピュータで、印刷に用いるページ記述言語の並列処理を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−１３４９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したように、インタプリタ言語の実行系をそれぞれ持つ複数のコンピュータで、同一のソースコードが実行されるように同期を取って管理するためには、予め何らかの同期を取る仕掛けが必要となったりして管理するのが難しい。また、特許文献１の技術は、複数のコンピュータでソースコードを並列処理するものであるが、同一のソースコードを実行させるためにはやはり人為的にそのように設定する必要がある。
【００１０】
本発明の目的は、ソースコードを管理することなく、常に複数のコンピュータで同じソースコードを実行することができるインタプリタ言語実行システムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明は、複数のコンピュータのそれぞれで、インタプリタ言語で記述された同一のプログラムを、実行するインタプリタ言語実行システムであって、送信先となる他のコンピュータを特定する情報を格納した送信先ファイルと実行プログラムとを備えた１台のメインコンピュータと、受信プログラムと実行プログラムとを備えた他のコンピュータとを備えることを特徴とする。メインコンピュータは、前記実行プログラムを実行することにより、インタプリタ言語で記述されたプログラムのソースコードを入力し、入力したソースコードを解析して、オブジェクトコードをメモリ上に出力し、前記送信先ファイルに格納されている送信先のコンピュータに、前記オブジェクトコードを送信し、前記メモリ上のオブジェクトコードを実行する。前記他のコンピュータは、前記受信プログラムを実行することにより、前記メインコンピュータから送信されたオブジェクトコードを受信してメモリ上に出力し、前記実行プログラムを起動する。また前記他のコンピュータは、前記実行プログラムを実行することにより、前記受信プログラムからの起動か否かを判定し、前記受信プログラムからの起動でない場合、指定されたプログラムのソースコードを入力し、解析してオブジェクトコードをメモリ上に出力し、該オブジェクトコードを実行し、前記受信プログラムからの起動である場合、前記受信プログラムがメモリ上に出力したオブジェクトコードを実行する。これにより、インタプリタ言語実行プログラムで実行するソースコードを複数のコンピュータで実行する場合に、予め複数のコンピュータ間でソースコードの同期を取る必要が無いインタプリタ言語実行システムが実現される。
【００１２】
また、前記送信先ファイルは、送信先となる他のコンピュータ毎に実行条件を保持するものであり、前記メインコンピュータは、前記送信先ファイルに格納されている送信先のコンピュータ毎に、前記実行条件が満たされている場合にのみ前記オブジェクトコードを送信するものであるようにするとよい。
【００１３】
さらに、前記実行プログラムは、指定したソースコードを、指定した実行先コンピュータで実行させる命令Ｚを含むものであり、該命令Ｚを実行したコンピュータは、該命令Ｚで指定されたソースコードが存在するコンピュータが実行元コンピュータであるか実行先コンピュータであるかを判定し、前記ソースコードが存在するコンピュータが実行元コンピュータである場合は、指定されたソースコードを入力し、解析し、取得したオブジェクトコードを実行先コンピュータに送信し、前記ソースコードが存在するコンピュータが実行先コンピュータである場合は、指定されたソースコードの起動を該実行先コンピュータに要求するものとしてもよい。
【発明の効果】
【００１４】
本発明によれば、インタプリタ言語実行プログラムで実行するソースコードを複数のコンピュータ間で管理することなく、ソースコードの同期が常に保たれるインタプリタ言語実行システムを提供できる。例えば、金融機関等の各拠点で同一のプログラムを実行する必要がある場合など、ソースコードの配布先が数千箇所ある場合でも、本発明によれば、その数千箇所にソースコードを配布することは不要であり、かつ管理する必要もなくなる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態例を示すシステム構成図である。
【図２】インタプリタ言語実行プログラムのフローチャートである。
【図３】送信先ファイルとソースコードの関係、および送信先ファイルのテーブル図である。
【図４】インタプリタ言語オブジェクトコード送信プログラムのフローチャートである。
【図５】インタプリタ言語オブジェクトコード受信プログラムとインタプリタ言語実行プログラムのフローチャートである。
【図６】命令Ｚの実行処理を示したフローチャートである。
【図７】従来のインタプリタ言語実行プログラムを実行するためのケース１のシステム構成図である。
【図８】従来のインタプリタ言語実行プログラムを実行するためのケース２のシステム構成図である。
【発明を実施するための形態】
【００１６】
以下、本発明を適用したインタプリタ言語実行システムの一実施の形態について説明する。
【００１７】
図１は、本発明に係るインタプリタ言語実行プログラムを実施するためのシステムの一実施例（以下「本実施例」と記載する）のブロック図である。
【００１８】
本システムは、メインコンピュータＡ（１０１）、コンピュータＢ（１１１）、およびコンピュータＣ（１２１）を備える。これらの各コンピュータＡ，Ｂ，Ｃはネットワーク（１３１）で結ばれている。メインコンピュータＡ（１０１）は、ソースコード（１０２）、ソースコードＸ（１０７）、ソースコードＹ（１０８）、インタプリタ言語実行プログラム（以降、「実行プログラム」と呼ぶ）（１０５）、インタプリタ言語オブジェクトコード送信プログラム（以降、「送信プログラム」と呼ぶ）（１０４）、および送信先ファイル（１０３）を備えている。コンピュータＢ（１１１）は、実行プログラム（１１３）およびインタプリタ言語オブジェクトコード受信プログラム（以降、「受信プログラム」と呼ぶ）（１１２）を備えている。コンピュータＣ（１２１）は、実行プログラム（１２３）および受信プログラム（１２２）を備えている。
【００１９】
図２は、図１に示したメインコンピュータ（１０１）での実行プログラム（１０５）の動作を示したものである。この処理は、例えばユーザが実行したいソースコードを特定して実行指示操作を行ったときに起動される。コンピュータ（１０１）での実行プログラム（１０５）は、最初にソースコード（２９１）を入力し（ステップ２０１）、そのソースコードを解析する（ステップ２０２）。解析した結果は、オブジェクトコードに変換して、メモリ（２９２）に出力する（ステップ２０３）。次に送信プログラム（１０４）を起動する（ステップ２０４）。その後、メモリ（２９２）上の当該オブジェクトコードを実行する（ステップ２０５）。
【００２０】
図３は、ソースコード（１０２）と送信先ファイル（１０３）との関係、および送信先ファイル（１０３）のテーブル図である。送信先ファイル（１０３）には、送信先（３０１）と実行条件（３０２）とを規定するエントリを保持する。複数のコンピュータで同一のソースコードを実行したい場合、実行プログラムの利用者等は、そのソースコードと共に、そのソースコードと１対１に対応する送信先ファイル（１０３）を作成する（３０３）。送信先ファイル（１０３）には、そのソースコードを実行させる他のコンピュータを、送信先（３０１）として登録する。この送信先（３０１）は、実行プログラムで出力したオブジェクトコードの送信先が特定できるＩＰアドレス等の情報である。また、実行条件（３０２）は、オブジェクトコードを実行する条件の情報である。この条件には、例えば、「毎日実行する」、「特定の日のみ実行する」、「特定の日は実行しない」、「特定の曜日に実行する」、「特定の曜日は実行しない」、「特定の期間は実行する」、「特定の期間は実行しない」等の条件を設定する。
【００２１】
図４は、送信プログラム（１０４）の動作を示したものである。
【００２２】
送信プログラム（１０４）は、実行プログラム（１０５）により図２のステップ２０４で起動される。送信プログラム（１０４）は、まず実行プログラム（１０５）によりメモリに出力されたオブジェクトコード（２９２）を入力する（ステップ４０１）。次に、そのオブジェクトコードを送信する送信先と実行条件を、送信先ファイル（１０３）から１エントリ入力する（ステップ４０２）。
【００２３】
入力後、実行条件を判定する（ステップ４０３）。例えば、実行条件が「毎日実行する」の場合は、実行条件を必ず満たすこととなるので、当該送信先のコンピュータにネットワーク（１３１）を利用して当該オブジェクトコードを送信する（ステップ４０４）。実行条件が「特定の曜日に実行する」の場合は、現在の曜日を取得して実行条件と比較し、同一の曜日の場合は当該送信先のコンピュータにネットワーク（１３１）を利用して当該オブジェクトコードを送信し、異なる曜日の場合はオブジェクトコードを送信しない（ステップ４０５）。このような動作を送信先ファイル（１０３）で保持しているエントリ数分、繰り返す（ステップ４０６）。
【００２４】
図５は、メインコンピュータ（１０１）に対して他のコンピュータとなるコンピュータ（１１１および１２１）での受信プログラム（１１２，１２２）と実行プログラム（１１３，１２３）の動作を示したものである。
【００２５】
受信プログラム（１１２，１２２）は、コンピュータ起動時に起動され、コンピュータが終了するまで動作している。受信プログラム（１１２，１２２）は、起動されると他のコンピュータからのオブジェクトコードの受信待ち状態となる（ステップ５０１）。オブジェクトコードを受信したら、受信したオブジェクトコードをメモリ（５９１）に格納する（ステップ５０２）。格納後、実行プログラム（１１３，１２３）を起動（５９２）する（ステップ５０３）。この場合、実行プログラム（１１３，１２３）には受信プログラム（１１２，１２２）から起動されたことを伝える。
【００２６】
起動された実行プログラム（１１３，１２３）では、受信プログラム（１１２，１２２）から起動されたか否かを判断し（ステップ５１１）、受信プログラム（１１２，１２２）以外から起動された場合（例えば、ユーザが実行したいソースコードを特定して実行指示操作を行った場合など）は、指定されたソースコードを入力し（ステップ５１２）、解析して（ステップ５１３）、オブジェクトコードを出力し（ステップ５１４）、実行する（ステップ５１５）。
【００２７】
受信プログラム（１１２，１２２）から起動された場合は、メモリに格納されているオブジェクトコードを入力（５９３）して（ステップ５１６）、実行する（ステップ５１５）。入力したオブジェクトコードはソースコードが存在するコンピュータで解析（図２のステップ２０２）した結果であるため、ソースコードが存在するコンピュータのソースコードが別のコンピュータで実行されたこととなる。従って、複数のコンピュータでソースコードの同期が取られることとなり、ソースコードの管理が不要となる。
【００２８】
図６は、従来技術の図８のようなケースにおける、本実施例の実行プログラムの命令Ｚの実行処理動作を示したものである。なお、命令Ｚのオペランドは、実行先コンピュータ名、ソースコード名、およびソースコードが存在するコンピュータ名とする（６９１）。例えば、コンピュータＡで、ソースコードＸ（１０７）を入力し、解析して、オブジェクトコードをメモリに出力し、その後、そのオブジェクトコードを実行したとする。そのオブジェクトコード中に命令Ｚがあった場合、最初に、命令Ｚの引数の実行するソースコードが存在するコンピュータ名を取得し、判定する（ステップ６０１）。
【００２９】
いま、命令Ｚの引数のソースコード名としてソースコードＹが指定されているとする。ソースコードＹ（１０８）が存在するコンピュータ名が実行先コンピュータである場合は（図１のソースコードＹ（１０８）がメインコンピュータＡ内に配置されるのではなく、実行先のコンピュータＢやＣに配置されるケースである）、その実行先コンピュータにそのソースコード名のソースコードの実行を要求する（ステップ６０２）。この要求を受けた実行先コンピュータでは、実行ソースコード名を元にソースコードを入力し解析して実行する。
【００３０】
ソースコードＹ（１０８）が存在するコンピュータ名が実行元コンピュータである場合は、実行するソースコードＹ（１０８）を入力し（ステップ６０３）、解析して（ステップ６０４）、オブジェクトコードをメモリに出力する（ステップ６０５）。出力後、メモリ上のオブジェクトコードを実行先コンピュータに送信する（ステップ６０６）。実行先コンピュータでは、図５に示した動作が受信プログラムと実行プログラムで行われ、ソースコードＹ（１０８）が実行される。実行先では、実行元のソースコードＹ（１０８）を実行することとなるので、実行先でソースコードＹ（１０８）の管理をする必要がなくなる。
【符号の説明】
【００３１】
１０１…メインコンピュータＡ、１０２…ソースコード、１０３…送信先ファイル、１０４…インタプリタ言語オブジェクトコード送信プログラム、１０５…インタプリタ言語実行プログラム、１０７…ソースコードＸ、１０８…ソースコードＹ、１１１…コンピュータＢ、１１２…インタプリタ言語オブジェクトコード受信プログラム、１１３…インタプリタ言語実行プログラム、１２１…コンピュータＣ、１２２…インタプリタ言語オブジェクトコード受信プログラム、１２３…インタプリタ言語実行プログラム、１３１…ネットワーク。
【図１】
2011159064.tif 000003
【図２】
2011159064.tif 000004
【図３】
2011159064.tif 000005
【図４】
2011159064.tif 000006
【図５】
2011159064.tif 000007
【図６】
2011159064.tif 000008
【図７】
2011159064.tif 000009
【図８】
2011159064.tif 000010