(57)【要約】本発明は、１つのステーションのローカルプロセスと別のステーションのリモートプロセスとの間の非同期通信によって、オブジェクト指向言語でのリモートメソッドコールを管理する方法に関し、そのようなコールは、プロセスの１つからのリクエストと、その後に続く他のプロセスからのリプライとから成る。この方法は、ａ）ローカルプロセスからリモートプロセスに空のオブジェクトを送信する前にこの空のオブジェクトの送信をリクエスト又はリプライパラメータとして検出し（７１０）、前記空のオブジェクトの内容を計算し、その内容の提供がエキスパートプロセスのために要求されることと、ｂ）リモートプロセスに対して空のオブジェクトの内容を利用可能にするために前記空のオブジェクトを処理する（７１２）ことと、ｃ）適切な処理の条件の下で前記リクエスト又は前記リプライの送信を実行することと、を備える。【選択図】図７
2007517279.tif 000002
【特許請求の範囲】
【請求項１】
１つのステーションのローカルプロセスと他のステーションのリモートプロセスとの間の非同期通信によってオブジェクト指向言語でのリモートプロシージャのコール管理の方法であって、そのようなコールは、プロセス（Ｐ１；Ｐ２）の一方のリクエスト（ＲＰＣ）及び、その後に続く他方のプロセス（Ｐ２；Ｐ１）のレスポンス（Ｒ−Ａ）から成り、当該方法は、
ａ  空のオブジェクトをローカルプロセスからリモートプロセスへ送る前にリクエスト又はレスポンスのパラメータとして空のオブジェクトの送信を検出し（２１０，７１０）、この空のオブジェクトの内容を計算することおよびその内容を利用可能にすることが認識プロセスに要求されることと、
ｂ  リモートプロセスに対して空のオブジェクトの内容を利用可能にする目的で（２１２，７１２）空のオブジェクトを処理することと、
ｃ  処理の適切な条件の後に続けて前記リクエスト又はレスポンスを送信する（１０８）ことと、
を備えることを特徴とする方法。
【請求項２】
前記方法は、
ａ  空のオブジェクトがローカルプロセスによって使用されなければならないというイベントを検出し（７０２）、ローカルプロセスによる空のオブジェクトの使用を実行するのを一時停止する（７０４）ことと、
ｂ−ｂ１  空のオブジェクトの内容を計算し且つ利用可能にすることができる認識プロセスの識別子を備える空のオブジェクトを抽出する（７０６）ことと、
ｂ２  空のオブジェクトの識別子及びローカルプロセスの識別子を備える第１のデータを有する第１のメッセージを認識プロセスに送信し、空のオブジェクトの内容及び識別子を備える第２のデータを有する第２のメッセージのローカルプロセスへの送信を要求する(７０８)ことと、
ｃ  ローカルプロセスによって第２のメッセージが受信されるのを待ち、一旦第２のメッセージが受信されると、空のオブジェクトを更新しその使用の実行を継続することと、
を備えることを特徴とする請求項１に記載の方法。
【請求項３】
ステージｂ２は、更に、
ｂ２−１  認識プロセスによって第１のメッセージが受信されると、空のオブジェクトの識別子が、空のオブジェクトの識別子に関連するデータとこれらのオブジェクトの内容との組を備える第２のテーブルにあるか否かを確認する（７１６）ことと、
ｂ２−２−ｉ  もし存在する場合、ローカルプロセスに第２のメッセージを送信する（７１８）ことと、
ｂ２−２−ｉｉ  もし存在しない場合、空のオブジェクトの識別子に関連するデータとプロセスの識別子との組を備える第１のテーブルに第１のデータを追加する（７１７）ことと、
を備えることを特徴とする請求項２に記載の方法。
【請求項４】
ステージｂ２−２−ｉｉは、更に、一旦空のオブジェクトの内容が利用できるようになると（７２０）、
第２のテーブルに第２のデータを追加する（７２２）ことと、
第１のテーブルにおける識別子が空のオブジェクトの識別子と関連するプロセスに、第２のメッセージを送信する（７２４）ことと、
を備えることを特徴とする請求項３に記載の方法。
【請求項５】
ステージｂは、更に、ローカルプロセスが、認識プロセスによって送られるメッセージの受信を待ち（２１２）、前記メッセージは空のオブジェクトの内容及び識別子を備え、そのメッセージを受信すると、更新された空のオブジェクトでステージｃに続くことを備えることを特徴とする請求項１に記載の方法。
【請求項６】
ステージｂは、更に、ローカルプロセスが、リモートプロセスの識別子に関連する空のオブジェクトの識別子を、空のオブジェクトの識別子に関連するデータとプロセスの識別子との組を備えるテーブルに追加し（７１２−２）、ステージｃに続くことを備えることを特徴とする請求項１に記載の方法。
【請求項７】
一旦送信が実行されると、ステージｃは、
ｃ１  ローカルプロセスにおいて利用可能になるために空のオブジェクトの内容を待つ（４１２）ことと、
ｃ２  一旦前記内容が利用可能になると、空のオブジェクトの内容及び識別子を、前記テーブルにおける識別子が空のオブジェクトの識別子と関連するプロセスに送信する（４１４）ことと、
を備えることを請求項６に記載の方法。
【請求項８】
ローカルプロセスにおいて、ステージｂは、更に、
ｂ１  空のオブジェクトの内容を計算して利用可能にできる認識プロセスの識別子を、識別子を備える空のオブジェクトから抽出することと、
ｂ２  リモートプロセスの識別子と関連する空のオブジェクトの識別子を備える第１のデータを有する第１のメッセージを認識プロセスに送信し、空のオブジェクトの内容と関連するその識別子を備える第２のデータを有する第２のメッセージをリモートプロセスに認識プロセスが送信することを前記第１のメッセージが要求することと、
を備えることを特徴とする請求項１に記載の方法。
【請求項９】
ステージｃは、また、第１のメッセージを受信すると認識プロセスが、
ｃ１  空のオブジェクトの識別子に関連するデータとプロセスの識別子との組を備えるテーブルに第１のデータを追加する（７１２−３）こと備えることを特徴とする請求項８に記載の方法。
【請求項１０】
ステージｃは、更に、送信を完了したのを受けてローカルプロセスが、
ｃ１  空のオブジェクトの内容がローカルプロセスにおいて利用可能になるのを待つ（６１２）ことと、
ｄ２  一旦前記内容が利用可能になると、テーブルにおける識別子が空のオブジェクトの識別子と関連するプロセスに、前記内容と関連する空のオブジェクトの識別子を送信する（６１４）ことと、
を備えることを特徴とする請求項８又は９に記載の方法。
【請求項１１】
オブジェクト指向言語で一つ又はそれ以上のローカルプロセス（Ｐ１）を実行できる環境（ＳＴ１−２、ＳＴ１−４、ＳＴ１−６）と、
非同期通信によって、ローカルプロセス（Ｐ１）と別のステーションのリモートプロセス（Ｐ２）との間でリモートプロシージャコール（ＲＰＣ）を処理できるプロトコルモジュール（ＳＴ１−６）であって、そのようなコール（ＲＰＣ）が、プロセス（Ｐ１；Ｐ２）の一方のリクエスト（Ａ）と、その後に続く他方のプロセス（Ｐ２；Ｐ１）のレスポンス（Ｒ−Ａ）とから成るプロトコルモジュールとを備えたコンピュータステーションであって、
前記コンピュータステーションは、空のオブジェクションが、ローカルプロセス（Ｐ１）によってリモートプロセス（Ｐ２）に送信されるべきリクエスト又はレスポンスのパレメータとして発生しているというイベントを検出すると、この空のオブジェクトの内容の計算とその内容の利用可能性とが認識プロセスに要求され、
リモートプロセスに対して空のオブジェクトの内容を利用可能にする目的で前記空のオブジェクトを処理することができるとともに、
処理の適切な条件の下に続けて前記リクエストまたはレスポンスを送信することができるモニタ（ＳＴ１−１２）を備えることを特徴とするコンピュータステーション。
【請求項１２】
空のオブジェクトがローカルプロセスによって使用されなければならないというイベントの検出を受けて、モニタ（ＳＴ１−１２）は、更に、
空のオブジェクトの内容を計算し利用可能にできる認識プロセスの識別子を、識別子を備える空のオブジェクトから抽出でき、
空のオブジェクトの識別子とローカルプロセスの識別子とを備える第１のデータを有する第１のメッセージを認識プロセスに送信し、空のオブジェクトの内容及び識別子を備える第２のデータを有する第２のメッセージをローカルプロセスに送信するよう要求でき、
ローカルプロセスによる第２のメッセージの受信を待つことができ、そのような受信は処理の適切な条件である、
ことを特徴とする請求項１１に記載のコンピュータステーション。
【請求項１３】
認識プロセスのコンピュータステーションのモニタ（ＳＴ１−１２）は、
空のオブジェクトの識別子に関連するデータとプロセスの識別子との組を備える第１のテーブル、及び空のオブジェクトの識別子に関連するデータとこれらのオブジェクトの内容との組を備える第２のテーブルと共に動作でき、
第２のメッセージを、
第１のメッセージの空のオブジェクトの識別子が第２のテーブルにあることを確認した後にローカルプロセスと、
第１のテーブルに第１のデータを追加した後に第１のテーブル内の識別子が、空のオブジェクトの識別子に関連付けられるとともに、空のオブジェクトの内容を計算した後に第２のテーブルに第２のデータを追加したプロセスと、
に送信することができることを特徴とする請求項１２に記載のコンピュータステーション。
【請求項１４】
前記モニタ（ＳＴ１−１２）は、認識プロセスによって送信されるメッセージの受信を待つことができ、前記メッセージが空のオブジェクトの内容及び識別子を備え、そのような受信は処理の適切な条件であることを特徴とする請求項１１に記載のコンピュータステーション。
【請求項１５】
前記モニタ（ＳＴ１−１２）は、リモートプロセスの識別子に関連する空のオブジェクトの識別子を、空のオブジェクトの識別子に関連するデータとプロセスの識別子との組を備えるテーブルに追加することができ、この追加は処理の適切な条件であることを特徴とする請求項１１に記載のコンピュータステーション。
【請求項１６】
一旦空のオブジェクトの内容がローカルプロセスにおいて利用可能になると、前記モニタ（ＳＴ１−１２）は、空のオブジェクトの内容及び識別子を、テーブル内の識別子が空のオブジェクトの識別子と関連するプロセスに送信できることを特徴とする請求項１５に記載のコンピュータステーション。
【請求項１７】
前記モニタ（ＳＴ１−１２）は、
空のオブジェクトの内容を計算し利用可能にできる認識プロセスの識別子を備える空のオブジェクトを抽出でき、
リモートプロセスの識別子と関連する空のオブジェクトの識別子を備える第１のデータを有する第１のメッセージを、認識プロセスに送信することができ、この第１のメッセージは、空のオブジェクトの内容及び識別子を備える第２のデータを有する第２のメッセージを、リモートプロセスに送信するよう要求し、その第１のメッセージの送信は、処理の適切な条件である、
ことを特徴とする請求項１１に記載のコンピュータステーション。
【請求項１８】
前記認識プロセスのコンピュータステーションの前記モニタ（ＳＴ１−１２）は、第１のメッセージを受信すると、
空のオブジェクトの識別子に関連するデータとプロセスの識別子との組を備えるテーブルに第１のデータを追加することができる、
ことを特徴とする請求項１７に記載のコンピュータステーション。
【請求項１９】
リクエスト又はレスポンスの送信を実行した後で一旦空のオブジェクトの内容がローカルプロセスにおいて利用可能になった場合に、前記ローカルプロセスのコンピュータステーションの前記モニタは、テーブル内の識別子が空のオブジェクトの識別子と関連するプロセスに、空のオブジェクトの内容と関連する空のオブジェクトの識別子を送信できる（６１４）ことを特徴とする請求項１７又は１８に記載のコンピュータステーション。
【請求項２０】
請求項１１〜１９のいずれか一項に記載のコンピュータステーションのネットワークであって、
各コンピュータステーションは、ローカルプロセス、プロトコルモジュール、及びモニタを備え、各ローカルプロセスは、他のステーションの他のプロセスに対してローカルでリモートであり、又は計算のために空のオブジェクトの内容を知ることができるようにしたネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ローカルプロセスとリモートプロセスとの間のリモートプロシージャコール（ＲＰＣ）による通信分野に関する。
【背景技術】
【０００２】
これらのＲＰＣ型通信はオブジェクト指向言語でオブジェクトを使用することができる。ＲＰＣ型通信の分野において、呼び出し側として知られているプロセスが、呼び出された（コールされた）プロセスにリクエストを送信し、呼び出し側プロセスは、呼び出されたプロセスによるリクエストの結果を受信するまでリクエストの実行を阻止する。
【０００３】
本発明の範囲内において、プロセス間で確立される通信は、非同期ＲＰＣ型通信であり、即ち、ソースプロセスは、（コールメッセージとして知られている）リクエストを送信（又は提出）した後、プロセスの実行に進む。従って、リクエストの場合、ターゲットプロセスは、まず現在のタスクの実行を完了し、その後にソースプロセスを実行するのと並行してリモートプロシージャを実行し、リモートプロシージャの実行の最後にレスポンスのパラメータを利用可能にする。ソースプロセスはこのようにしてレスポンスのパラメータを取得することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、この型の非同期ＲＰＣ通信は、プロセス間におけるこれらの結果の通信管理に備えておらず、動作の実行又はメッセージの送信がこれらの結果を必要とする時に阻止に至るかもしれない。
【０００５】
本発明の目的は、この事態を改善することである。
【課題を解決するための手段】
【０００６】
本発明は、１つのステーションのローカルプロセスと他のステーションのリモートプロセスとの間の非同期通信によってオブジェクト指向言語でのリモートプロシージャのコール管理の方法であって、そのようなコールは、プロセスの一方のリクエスト及び、その後に続く他方のプロセスのレスポンスから成り、当該方法は、
ａ  空のオブジェクトをローカルプロセスからリモートプロセスへ送る前にリクエスト又はレスポンスのパラメータとして空のオブジェクトの送信を検出し、この空のオブジェクトの内容を計算することおよびその内容を利用可能にすることが認識プロセスに要求されることと、
ｂ  リモートプロセスに対して空のオブジェクトの内容を利用可能にする目的で空のオブジェクトを処理することと、
ｃ  処理の適切な条件の後に続けて前記リクエスト又はレスポンスを送信することと、を備える。
【０００７】
また、本発明はコンピュータステーションに関し、そのコンピュータステーションは、
オブジェクト指向言語で一つ又はそれ以上のローカルプロセスを実行できる環境と、
非同期通信によって、ローカルプロセスと別のステーションのリモートプロセスとの間でリモートプロシージャコールを処理できるプロトコルモジュールであって、そのようなコールが、プロセスの一方のリクエストと、その後に続く他方のプロセスのレスポンスとから成るプロトコルモジュールと、を備える。
【０００８】
本発明の１つの特徴によれば、コンピュータステーションは、
空のオブジェクションが、ローカルプロセスによってリモートプロセスに送信されるべきリクエスト又はレスポンスのパレメータとして発生しているというイベントを検出すると、この空のオブジェクトの内容の計算とその内容の利用可能性とが認識プロセスに要求され、
リモートプロセスに対して空のオブジェクトの内容を利用可能にする目的で前記空のオブジェクトを処理することができるとともに、
処理の適切な条件の下に続けて前記リクエストまたはレスポンスを送信することができるモニタを備える。
【０００９】
本発明に従うコンピュータデバイスは、別々及び／又は組合せて採用可能であり以下の詳細な記述において説明される多くの付加的な特徴を備えることができる。
【００１０】
本発明の更なる特徴及び利点は、以下の詳細な記述の検討から及び添付図面から明らかになるだろう。
【発明を実施するための最良の形態】
【００１１】
図面は、本質的に、一定の特徴の要素を含む。従って、図面は記述の理解を助けるだけでなく、必要に応じて本発明の定義付けにも寄与できる。
【００１２】
図１は相互通信しているステーションのネットワークを示す。「コンピュータステーション」とは、データを交換することができる任意のＩＴ要素を意味すると理解される。従って、この要素は、携帯電話または携帯用コンピュータのような可動式通信端末、または、反対にＰＣ型コンピュータのような固定式通信端末でもよい。ステーションＳＴ１、ＳＴ２、ＳＴ０の各々は、ユーザーシステムＳＴ１−２、ＳＴ２−２、ＳＴ０−２、非共用メモリＳＴ１−４、ＳＴ２−４、ＳＴ０−４、オブジェクト指向言語で動作するプロセスＰ１、Ｐ２、Ｐ０、及びＲＰＣ型（リモートプロシージャコール用の）非同期リモートプロシージャコールによる通信の通信プロトコルモジュールＳＴ１−６、ＳＴ２−６、ＳＴ０−６を備え、そのモジュールはオブジェクト指向言語でのオブジェクトで動作することができる。このプロトコルモジュールは、非同期通信によって、ローカルプロセスと他のステーションのリモートプロセスとの間のＲＰＣリモートプロシージャコールを処理することができる。プロトコルモジュールは、リモートプロシージャコールのための方法又は機能を有するオブジェクトのライブラリを備える。「プロセス」という用語は、プロシージャコールを備えることができる命令のプラグラム又は動作のプログラムを一例として示す。ユーザーシステムＳＴ１−２、非共用メモリＳＴ１−４、及び通信プロトコルモジュールＳＴ１−６によって形成される環境は、オブジェクト指向言語でＰ１のようなローカルプロセスを実行することを可能にする。
【００１３】
各ステーションは、物理的または仮想的でもよいリンクによって、例えばケーブル、光ファイバー、または電波によって、その他のステーションに接続される。より具体的には、一例として、各ステーションは、リンク１０―ＳＴ１、１０―ＳＴ２、１０−ＳＴ０によってネットワーク１０に接続され、ステーションは相互接続されてもよい。
【００１４】
図２に示すように、非同期ＲＰＣ型プロトコルモジュールは、クライアントとして知られるプロセスＰ１が、ステーションＳＴ２に遠隔して位置するサーバとして知られるプロセスＰ２のプロシージャを呼び出すことを可能にする。また、このコールＡはリクエストとして知られており、パラメータＰａを備える。オブジェクト指向言語では、リクエストは、プロシージャコールを表すとともに、プロシージャとコールのパラメータとを備えるオブジェクトである。このプロシージャのコールがローカルプロシージャのコールに似るために、クライアントプロセスＰ１は、呼び出されるべきリモートプロシージャと同じ名前のローカルプロシージャを有するオブジェクトを備える。ステーションＳＴ１のこのローカルプロシージャは、プロトコルモジュールのオブジェクトライブラリ、例えばＪａｖａ（登録商標）型ライブラリにおいて、あるプロシージャを呼び出す。これらはネットワーク接続、パラメータＰａの通過、及びＲＥＳレスポンスとしても知られる結果の返信を処理する。非同期ＲＰＣ型コールの下では、クライアントプロセスＰ１は、ステーションＳＴ２において、コールパラメータを備えたリクエストを提出し、その後、その実行を続行する。ステーションＳＴ２の側では、サーバプロセスＰ２は、コールパラメータを備えたステーションＳＴ２のローカルプロシージャを呼び出しレスポンスＲ−Ａ、即ちステーションＳＴ１の結果を返信する前に、現在のタスクの実行を終える。
【００１５】
従って、クライアントプロセスＰ１は、ローカルプロシージャを呼び出すのではなく、ステーションＳＴ２でリクエストを提出するだけであり、その後、その実行を続行する。同じ方法で、サーバプロセスＰ２は、リクエストを提出する時点での実行を続行し、その後、クライアントプロセスＰ１にレスポンスを送信することによってリクエストに応答する。
【００１６】
言うまでもなく、ネットワークの任意のプロセスが、リモートプロシージャコールによって通信を確立するために、非同期ＲＰＣ型のプロトコルモジュールのライブラリを使用する。一般に、任意のプロセスは、クライアント及びサーバの両方、即ち、リクエストを送信するもの及びリクエストを受信するものであり得る。従って、１つのプロセスは、リクエスト又はレスポンスを送信するときソース又はローカルプロセスを言及し、または、リクエスト又はレスポンスを受信するときターゲット又はリモートプロセスを言及する。
【００１７】
プロセス同士間で確立された通信は非同期型であり、即ち、ソースプロセスはリクエスト（コールメッセージ）を送信（又は提出）した後に、プロセスを実行する。従って、リクエストの場合、ターゲットプロセスは、まず現在のタスクを完了し、その後にソースプロセスの実行と並行してリモートプロシージャを実行し、リモートプロシージャの実行の完了を受けてレスポンスのパラメータを利用可能にする。ソースプロセスはこのようにしてレスポンスのパラメータを取得することができる。
【００１８】
オブジェクト指向言語でオブジェクトを使用する非同期ＲＰＣ型通信の範囲内において、プロセスがリクエストを送信した時、レスポンスが遅れ、そのことがプロセスの実行を阻止する場合がある。プロセスは、リクエストのレスポンスを待つことができず、かつ、まだ決定していないレスポンスの表示を使用できない。一般に、オブジェクトは識別子によって識別され、空であってもよいし又はある内容（パラメータの値、プロシージャ）を有してもよい構造を備える。従って、まだ決定していないレスポンスの表示は、空又は部分的に空として示されるオブジェクトの識別子であってもよい。そのオブジェクトは、空又は部分的に空であることを示すフラッグに接続されている。オブジェクトは、完全に空、即ち内容が未知であるオブジェクトであってもよいし、又は部分的に空、即ち内容が部分的にのみ知られているオブジェクトであってもよい。この空のオブジェクトの識別子は、内容、又は少なくともその一部分が所定のリクエストに対するレスポンスであるオブジェクトと指名される。
【００１９】
ローカルプロセスによってリモートプロセスに送信されるリクエスト又はレスポンスは、１つ又はそれ以上の空のオブジェクトの識別子を備えるパラメータを有してもよい。より具体的には、クライアントプロセスによってサーバプロセスに送信されるリクエストは、１つ又はそれ以上の空のオブジェクトの識別子を備えるパラメータを有してもよい。同様に、サーバプロセスによってクライアントプロセスに送信されるレスポンスは、１つ又はそれ以上の空のオブジェクトの識別子を備えるパラメータを有してもよい。これらの場合、一旦空のオブジェクトの識別子が利用可能になれば、リモートプロセスがこれらの空のオブジェクトの内容を取得することができることが重要である。
【００２０】
場合によっては、例えば、空のオブジェクトの識別子がプロセスによって使用される時、空のオブジェクトの内容を知ることは不可欠である。空のオブジェクトの識別子の「使用」は、このオブジェクトの内容を決定する必要がある演算を意味する。演算は、厳格なものとして知られ、非限定的な例では、オブジェクトの識別子が数字を表すオブジェクトを指名する場合には足し算、引き算、割り算、又は掛け算であってもよい。演算を使用する場合、演算を実行するためにプロセスが空のオブジェクトの内容を取得することができることが必要である。
【００２１】
空のオブジェクトの内容を、それを必要とするプロセスに送信するための管理メカニズムは必要と思われる。
【００２２】
図３−１は図１のステーションのネットワークを示す。図１と一致する参照記号は同一の要素を示す。
【００２３】
ここで記述されるプロセスＰ１とプロセスＰ０との間の非同期ＲＰＣ通信は破線の矢印によって示される。
【００２４】
非同期ＲＰＣ型コールＲＰＣ０−ａが行われる時、ソースプロセスＰ１は、リクエストＲＰＣ０−ａへのレスポンスを表す空のオブジェクトの識別子ＩＤ−０１を生成し、後述する図４に示すようにリクエストを直列化し、空のオブジェクトの識別子ＩＤ−０１を備えるコールパラメータを有するリクエストＲＰＣ０−ａをステーションＳＴ０で提出し、その後にその実行を続行する。ステーションＳＴ０では、リクエストを受信して非直列化し、その後にターゲットプロセスＰ０によって処理されるべきリクエストのファイル内で延期する。このようにして、特にリクエストＲＰＣ０−ａの発生を受けて、この空のオブジェクトの内容を計算することおよびそれを利用可能にすることが、認識プロセスとも呼ばれるターゲットプロセスに要求される。空のオブジェクトの内容をターゲットプロセスＰ０が取得した時、空のオブジェクトの内容ＣＯＮＴ−０１及び識別子ＩＤ−０１を備える結果の組ＣＲＥＳが利用できるようになる。ターゲットプロセスＰ０は計算によって空のオブジェクトの内容ＣＯＮＴ−０１を取得し、認識プロセスと呼ばれる。
【００２５】
また、プロセスＰ０は、レスポンスＲ０によってプロセスＰ１に結果を送り返すために、空のオブジェクトの識別子に関連するプロセスＰ１の識別子を格納することもできる。
【００２６】
内容ＣＯＮＴ−０１それ自体は、内容が別のプロセスによって計算される別の空のオブジェクトの識別子を含んでもよい。
【００２７】
一旦空のオブジェクトがプロセスＰ１において生成されると、このオブジェクトの識別子は、プロセスＰ１によって使用可能であるし、又は、図３−１に示されるようなターゲットプロセスＰ２へのリクエストＲＰＣ１−ａにパラメータとして渡されることも可能である。
【００２８】
プロセスＰ１によって空のオブジェクトの内容が知られると、この内容を空のオブジェクトの構造に統合することによって空のオブジェクトを更新する。
【００２９】
図３−２は、プロセスＰ１に関して演算することができるモジュールをより詳細に示す。
【００３０】
ステーションは以下のプロセスからなる：
プロセスＰ１に接触するとともに、ローカルプロセスＰ１によって他のリモートプロセスＰ２に送信されるべきリクエスト又はレスポンスのパラメータとして空のオブジェクトの識別子が発生しているというイベントを検出可能である検出器、例えばシリアライザＳＴ１−２０と、
空のオブジェクトの識別子から及びこの空のオブジェクトの決定した内容から、この内容を空のオブジェクトの構造に統合し、空のオブジェクトを更新することができる更新モジュールＳＴ１−１６と、
検出器ＳＴ１−２０及びローカルプロセスＰ１にリンクされるとともに、検出器による検出に応答して、リモートプロセスに対して空のオブジェクトの内容を利用可能にする目的で空のオブジェクトを処理する際に送信を妨害することができ且つ処理の適切な条件に下づいてリクエスト又はレスポンスの送信を続けることができるモニタＳＴ１−１２と、
を備える。
【００３１】
以下で更に検討される空のオブジェクトの処理は、
内容を待つこと、この待ち時間の間にイベントの実行を中断すること、内容の受信に対応する処理の適切な条件、又は一旦受信された内容の統合によって空のオブジェクトを更新すること、又は、
空のオブジェクトを識別するデータと空のオブジェクトの内容が導かれなければならないプロセスとを格納すること、空のオブジェクトの内容が識別されないままイベントの実行をその時に続行すること、又は、
イベントの実行を続行する事実、
のいずれかを備える。
【００３２】
プロセスＰ１が空のオブジェクトの識別子を使用する場合、この空のオブジェクトへのアクセスはオブジェクト言語の意味によって阻止されるので、この使用の検出は自動的に実現される。このような使用を検出した後に受信される処理を以下で更に検討する。
【００３３】
モニタは、プロセスがソースプロセス又は識別プロセスであるかに従って実行される介入プロセスとして知られるプロセスの集合を備えており、意図されるプロセスは空のオブジェクトの内容を計算するものである。モニタは、必要に迫られて待機するように知られたプロセス、リクエスト／結果の送信に関連されるように知られたプロセス、及び自動継続として知られたプロセスを備える。最後のプロセスは、他のプロセスと並行且つ独立して実行されることができる。この自動継続のプロセスは、決定した空のオブジェクトの内容を、それを必要としそうな全てのプロセスに転送する目的を持っている。
【００３４】
モニタは、更に、空のオブジェクトの識別子及びあるプロセスの識別子を示す再送信内容テーブルＴＣＲとして知られる少なくとも一つのテーブルと共に動作する。このテーブルは、識別されるプロセスに空のオブジェクトの内容を送信するために使用される。このようなテーブルは、以下で更に検討されるような本発明の実施形態に従って、認識プロセスにおいて使用され、又は空のオブジェクトの識別子、例えばソースプロセスを送信した全てのプロセスにおいて使用される。
【００３５】
例えば、図３−１のリクエストＲＰＣ０−ａの場合、プロセスＰ０は、再送信内容テーブルＴＣＰ０に、空のオブジェクトの識別子ＩＤ−０１と空のオブジェクトの内容が送信されなければならないソースプロセスの識別子ＩＤ−Ｐ１とを備える組を追加する。
【００３６】
様々な構成要素の機能を、以下の図４〜図１２のフローチャートの記述において詳細に示す。その記述は図３−１と並行してなされる。
【００３７】
図４〜図９の実施形態に対して、一つの実施形態は、プロセスＰ１がリクエストＲＰＣ０−ａを認識プロセスＰ０に送信して空のオブジェクトの識別子ＩＤ−０１を備えるリクエストＲＰＣ１−ａをプロセスＰ２に送信しようとする場合には、又はプロセスＰ１がネットワークの他のプロセスによって生成された空のオブジェクトの識別子ＩＤ−０１を受信した場合には、図３−１の状況である。
【００３８】
図４は、送信される前のリクエスト又はレスポンスの直列化を示す。ステージ７０２で、送信されるべきリクエスト又はレスポンスのパラメータからの第１のオブジェクトが直列化される。リクエスト又はレスポンスをコピーした後にそれを送信することを可能にする直列化メカニズムは、特に空のオブジェクトの検出を備える。例えば、図５又は図７に従って、メッセージの送信に関連するプロセスのコール（呼び出し）により、この空のオブジェクトの管理がこの検出に追加される。もしステージ７０４においてリクエスト又はレスポンスのパラメータが他のオブジェクトを備えるならば、これらのオブジェクトもまたリクエスト又はレスポンスが送信される前に図５又は図７のプロセスの再帰コールによって直列化される。
【００３９】
図５及び図６は本発明に従う、モニタの第１の実施形態を示す。本実施形態は、リクエスト又はレスポンスのパラメータを介してソースプロセスによって空のオブジェクトを送信する際に適用される。このモードは「送信の試みを待つ」と呼ばれる。
【００４０】
図４に従うリクエスト又はレスポンスの直列化を受けて、図５は、第１の実施形態に従うメッセージ（リクエスト又はレスポンス）の送信に関連するプロセスを提案する。一例として、このメッセージは、空のオブジェクトの識別子ＩＤ−０１をパラメータとして有しプロセスＰ１によってプロセスＰ２に送信される図３−１のメッセージＲＰＣ１−ａである。このメッセージにおいて、第１のオブジェクトはステージ２０６へ通過する構造を有する。もし、ステージ２０８で、オブジェクトの構造が周知の内容を備えているならば、図４のステージ７０４における直列化メカニズムは継続する。もし、オブジェクトの構造が完全に周知の内容を有していないならば、例えば、ＲＰＣ１−ａの場合のようにオブジェクトが空であることを示すフラグをオブジェクトが含むならば、オブジェクトはステージ２１０で空のオブジェクトとして検出される。従って、ステージ２１４でソースプロセスＰ１において空のオブジェクトが更新されない間は、ステージ２１２でリクエスト又はレスポンスの送信が一時中止される。プロセスは図４のステージ７０４に戻り、リクエスト又はレスポンスの他のオブジェクトを直列化する。一旦リクエスト又はレスポンスの全てのオブジェクトが直列化されると、メッセージの送信、例えば、プロセスＰ１のメッセージＲＰＣ１−ａのプロセスＰ２への送信が実行される。
【００４１】
本実施形態において、プロセスＰ１のモニタは、意図されるプロセスによって送信されるメッセージの受信を待つことができ、そのメッセージは空のオブジェクトの内容及び識別子を備え、前記受信は適切な処理の条件である。
【００４２】
図６は、本発明の第１の実施形態に従う自動継続プロセスを示す。図３−１において、自動継続プロセスは、空のオブジェクトの識別子ＩＤ−０１の内容を発見するために、リクエストＲＰＣ０−ａを認識プロセスＰ０に送信したソースプロセスＰ１の位置にある。認識プロセスＰ０がリクエストを処理する時、ＩＤ−０１によって識別される空のオブジェクトの内容が利用できるかどうかを確認する。ステージ２２０で空のオブジェクトの内容が利用できるとすぐに、認識プロセスＰ０のテーブルＴＣＲ０の中で、空のオブジェクトの識別子ＩＤ−０１に関連するソースプロセスの識別子を捜索する。このようにして、空のオブジェクトの内容及び識別子がソースプロセスＰ１に送信される。空のオブジェクトの内容がテーブルに記載されたプロセスに送信されるに従って、徐々にこのテーブルＴＣＲ０のデータは次第に削除される。
【００４３】
一旦この結果がプロセスＰ１によって受信されると、プロセスＰ１の更新モジュールは、図４及び図５の方法によって示されるように、リクエストＲＰＣ１−ａのプロセスＰ２への送信に進む前に、オブジェクトの構造に内容を統合することによって空のオブジェクトを更新する。
【００４４】
リクエスト又はレスポンスの各オブジェクトについて、図７は、メッセージ（リクエスト又はレスポンス）の送信に関連する方法の第２及び第３の実現を提案する。第２の実現は、「空のオブジェクトを送信するプロセスによる結果の送信」と称し、第３の実現は「空のオブジェクトを送信するプロセスによる再送信の命令を伴う通過」と称する。一つは、空のオブジェクトの識別子ＩＤ−０１を備えプロセスＰ１からプロセスＰ２に送信されるメッセージＲＰＣ１−ａの状況にある。メッセージのオブジェクトの構造は、プロセスＰ１のシリアライザによってステージ７０６まで通過する。もしステージ７０８でオブジェクトの構造が周知の内容を有するならば、図７のステージ７０４の直列化メカニズムは継続する。もしオブジェクトの構造が周知の内容を有さないならば又は部分的に周知な内容を有するならば、例えば、オブジェクトが空であることを示すフラグをオブジェクトが備えるならば、ステージ７１０においてオブジェクトは空のオブジェクトとして検出される。この時、これはリクエスト又はレスポンスを送信する場合において送信の妨害と呼ばれる。次にステージ７１２で空のオブジェクトはモニタＳＴ１−１２によって処理される。この処理は、本方法の実現に従って以下の複数のオプションを備える：
ステージ７１２−２において、空のオブジェクトの識別子とこのオブジェクトの内容が送信されなければならない行き先プロセスの識別子、例えばＩＤ−Ｐ２―とを、再送信内容テーブルＴＣＲとして、例えばプロセスＰ１にリンクされたTRC１として知られるローカルテーブル又はリストに格納、又は、
ステージ７１２−３において、空のオブジェクトの識別子、例えばＩＤ−０１から始めて、空のオブジェクトの内容を計算できるとともに、プロセスＰ０の認識プロセス、例えばＴＣＲ０のテーブルＴＣＲに、空のオブジェクトの識別子と、このオブジェクトの内容が送信されなければならない行き先プロセスの識別子とを追加することができる認識プロセス、例えば（認識と呼ばれる）Ｐ０の識別子の抽出である。この追加は、メッセージをソースプロセスから認識プロセスに、例えばプロセスＰ１からプロセスＰ０に送信した後に行われ、行き先プロセスに例えばＰ２にオブジェクトの内容を送信するように認識プロセスに要求する。
【００４５】
ステージ７１２−２の場合、ソースプロセスＰ１の再送信内容テーブルＴＣＲは、少なくとも一つの空のオブジェクトの内容が再送信されなければならないターゲットプロセスの識別子ＩＤ−Ｐに関連する空のオブジェクトの識別子ＩＤ−ＯＢＪ−ＶＩＤの組を含む。モニタＳＴ１−１２はその組（ＩＤ−Ｐ２、ＩＤ−０１）をソースプロセスＰ１のテーブルＴＣＲ１に追加する。この追加は処理の適切な条件に対応し、ターゲットプロセスＰ２へのリクエストＲＰＣ１の送信を起動する。
【００４６】
ステージ７１２−３の場合、空のオブジェクトの識別子ＩＤ−０１から認識プロセスＰ０の識別子が抽出される。認識プロセスＰ０の再送信内容テーブルＴＣＲ０に組（ＩＤ−０１、ＩＤ−Ｐ２）が追加される。このために、ソースプロセスＰ１は、空のオブジェクトの識別子及び内容を備える結果をターゲットプロセスＰ２に送信するよう要求する認識プロセスＰ０にメッセージを送信する。所定の空のオブジェクトのための認識プロセスの識別子を抽出し再送信を要求するメッセージを送信する処理、又はテーブルＴＣＲ０に組（ＩＤ−０１、ＩＤ−Ｐ２）を追加する処理の適切な条件の下で、ソースプロセスＰ１はターゲットプロセスＰ２にリクエストＲＰＣ１を送信する。
【００４７】
認識プロセスＰ０の識別子を抽出した瞬間に、もしターゲットプロセスＰ２が抽出方法を有さないならば、ソースプロセスＰ１はターゲットプロセスＰ２に認識プロセスＰ０の識別子を通知することができる。従って、もしプロセスＰ２によって空のオブジェクトの識別子がリクエストのパラメータとして使用されるならば、プロセスＰ２は、空のオブジェクトの内容を次のターゲットプロセスに直接送信するよう認識プロセスに要求することができる。
【００４８】
図８は、図７のステージ７１２−２の処理を実現するメッセージの送信に関連する方法にリンクされる自動継続の方法の第２の実施形態を示す。
【００４９】
この方法は、各プロセスＰｘに対して実行され、ここでｘは、認識プロセスＰ０、及び空のオブジェクトＩＤ−０１を送信した任意のプロセス、即ちプロセスＰ１、Ｐ２を指定できる整数である。
【００５０】
ステージ４１２において、プロセスＰｘのモニタは、空のオブジェクトの識別子及び内容（ＩＤ−０１、ＣＯＮＴ−０１）を含む結果が利用可能になるのを待つ段階にある。一旦プロセスＰｘにおいてこの結果が利用可能になると、プロセスＰｘの更新モジュールは、内容をオブジェクトの構造に統合することによってオブジェクトを更新し、この更新されたオブジェクトをメッセージ（例えば、図３−１におけるプロセスＰ１とプロセスＰ２との間のメッセージＲ１）によって全てのターゲットプロセス、即ち、ステージ４１４においてテーブルＴＣＲｘにおける識別子ＩＤ−Ｐが空のオブジェクトの識別子ＩＤ−０１と関連する全てのプロセスに送信する。従って、ステージ４１６において、全てのターゲットプロセスで結果が利用できるようになる。
【００５１】
対話方式では、空のオブジェクトを再送信したターゲットプロセスはステージ４１２での結果、即ち更新された空のオブジェクトを待つ。これらのターゲットプロセスはこの結果を受信するとすぐに、ステージ４１４を実行することによってソースプロセスになる、即ち、ターゲットプロセスは、識別子ＩＤ−Ｐが空のオブジェクトの識別子ＩＤ−０１と関連するテーブルＴＣＲの全てのターゲットプロセスに、更新された空のオブジェクトをメッセージによって送信する。空のオブジェクトを再送信した全てのプロセスが更新されたオブジェクトを受信するまで、この対話は実行される。
【００５２】
このプロセスは、まず認識プロセスによって実行され、その後、対話方式で、空のオブジェクトを再送信して更新されたオブジェクトを受信する任意のプロセスによって実行される。
【００５３】
従って、この実施形態は、空のオブジェクトの内容がソースプロセスにおいて利用可能になりソースプロセスによって空のオブジェクトの更新が実行されるとすぐに、ソースプロセスによってターゲットプロセスに空のオブジェクトの内容を再送信することを可能にする。この再送信は、対話式で同期ＲＰＣ型通信によって実行されることができる。
【００５４】
図９は、図７のステージ７１２−３の処理を実現するメッセージの送信に関連する方法にリンクされる自動継続の方法の第３の実施形態を示す。
【００５５】
図９では、ステージ６１２において、認識プロセスＰ０のモニタは、利用可能にされるリクエストＲＰＣ０−ａの結果を待つ段階にある。この結果は空のオブジェクトの識別子及び内容（ＩＤ−０１、ＣＯＮＴ−０１）を備える。一旦この結果が認識プロセスＰ０において利用可能になると、そのプロセスの更新モジュールは、内容をオブジェクトの構造に統合することによって空のオブジェクトを更新し、モニタはこの更新されたオブジェクトをメッセージＲ２によって全てのターゲットプロセスに、即ち、ステージ６１４においてテーブルＴＲＣ０における識別子ＩＤ−Ｐが空のオブジェクトの識別子ＩＤ−０１と関連する全てのプロセスに送信する。従って、ステージ６１６において、更新されたオブジェクトが全てのターゲットプロセスで局所的に利用できるようになる。
【００５６】
本発明の実施形態では、ローカルプロセスのコンピュータステーションのモニタは、リクエスト又はレスポンスの送信を実行した後、および一旦ローカルプロセスにおいて空のオブジェクトの内容が利用可能になると、その内容に関連する空のオブジェクトの識別子を、テーブルにおける識別子が空のオブジェクトの識別子に関連するプロセスに送信することができる。
【００５７】
図１０、図１１、及び図１２は、一例として、プロセスＰ１による空のオブジェクトの使用の検出に適用される本発明の第４の実施形態を図示する。本実施形態では、メッセージ（リクエスト又はレスポンス）の送信に関連する方法は特定の処理を要求せず、検出された空のオブジェクトの存在又は不在の下で送信が実行される。
【００５８】
図１０は、本発明の第４の実施形態に従う、必要に迫られて待つ方法を図示する。ステージ７０２において、ＩＤ−０１によって識別された空のオブジェクトのプロセスＰ１による使用が検出される。ステージ７０４において、プロセスＰ１の実行が一時停止される。ステージ７０６において、プロセスＰ１のモニタは、空のオブジェクトの内容を計算し利用可能にすることができる認識プロセスＩＤ−Ｐ０の識別子を、空のオブジェクトの識別子ＩＤ−０１から抽出する。ステージ７０８において、プロセスＰ１のモニタは、空のオブジェクトの識別子ＩＤ−０１及びプロセスＰ１の識別子ＩＤ−Ｐ１を有する第１のメッセージＴｒａｎｓｍｉｔ（ＩＤ−０１、ＩＤ−Ｐ１）を、認識プロセスＰ０に送信する。このメッセージは、一旦空のオブジェクトの内容が利用可能になると、空のオブジェクトの識別子及び内容を有する第２のメッセージ（ＩＤ−０１、ＣＯＮＴ―０１）をプロセスＰ０によってプロセスＰ１に送信するよう要求する。ステージ７１０においてプロセスＰ１のモニタは、空のオブジェクトがプロセスＰ１の更新モジュールによって更新されるまで待つ。ステージ７１２において、識別されるオブジェクトの使用を実行するために、この空のオブジェクトの更新は、モニタが検出する処理の適切な条件に対応する。
【００５９】
図１１は、認識プロセスＰ０によってステージ７０８の第１のメッセージの受信の方法を図示する。ステージ７１６において、プロセスＰ０のモニタは、受信される第１のメッセージにおける識別されたオブジェクトＩＤ−０１の内容ＣＯＮＴ−０１が、図１２に示されるような認識プロセスＰ０によって保持される内容計算テーブルＴＣＣに存在するか否かを確認する。もし存在するならば、モニタは、空のオブジェクトの内容及びその識別子をテーブルＴＣＣから回収し、ステージ７１８において空のオブジェクトの識別子及び内容を備える第２のメッセージ（ＩＤ−０１、ＣＯＮＴ―０１）を、このオブジェクトを使用するプロセスＰ１に送信する。
【００６０】
もし存在しないならば、ステージ７１７において、プロセスＰ０のモニタは、第１のメッセージを備えるパラメータに戻された組（ＩＤ−Ｐ１、ＩＤ−０１）を、再送信内容テーブルＴＣＲ０に追加する。
【００６１】
図１２は、本発明の第４の実施形態に従う自動継続の方法を示す。従って、ステージ７２０において、認識プロセスＰ０のモニタは、利用可能になるべき空のオブジェクトの識別子及び内容を備える結果（ＩＤ−０１、ＣＯＮＴ−０１）を待っている。一旦この結果が利用可能になると、その結果は、ステージ７２２において認識プロセスＰ０のテーブルＴＣＣに追加され、その後、識別子が空のオブジェクトの識別子に関連するＰ０のテーブルＴＣＲ０の全てのプロセスに送信される。言い換えれば、プロセスＰ０は一回で空のオブジェクトの内容を計算し、その後、認識プロセスＰ０によってメモリに保持されるテーブルＴＣＣ及びＴＣＲ０によって、結果を待つ全てのプロセスに空のオブジェクトの識別子及び内容の組を送信する。
従って、認識プロセスのコンピュータステーションのモニタは、空のオブジェクトの識別子に関連するデータ及びプロセスの識別子の組を備える第１のテーブルＴＣＲ０と、空のオブジェクトの識別子に関連するデータ及びこれらのオブジェクトの内容の組を備える第２のテーブルＴＣＣと共に動作できる。また、認識プロセスのコンピュータステーションのモニタは、一旦空のオブジェクトの識別子及びその計算された内容を第２のテーブルに追加すると、空のオブジェクトの識別子及び内容を備えるメッセージを、
空のオブジェクトの識別子が第２のテーブルにあることを確認した後にローカルプロセスに送信可能であり、及び、
第１のテーブルにおける識別子が、プロセスＰ１のメッセージを受けて第１のテーブルに追加された識別子であって、空のオブジェクトの識別子に関連するプロセスに送信可能である。
【００６２】
テーブルＴＣＣ及びＴＣＲを使用する本発明のモニタの本実施形態では、空のオブジェクトを使用するために識別されるこの空のオブジェクトと同じ内容を待つプロセスの全体的な管理が可能になる。
【００６３】
データのテーブルについて言及しているが、「テーブル」という用語は相互に関連したデータのリストを指すこともあり、「リスト」という用語はデータのテーブルを指すこともある。
【００６４】
従って、これらの実施形態は、空のオブジェクトに関連する内容が認識プロセスによって計算されるとすぐに、この空のオブジェクトの識別子を有する全プロセスにこの内容を再送信することを可能にする。
【００６５】
本発明の第１、第２、及び第３の実施形態における介入プロセスは、空のオブジェクトの識別子がステーションにおけるプロセスＰによって使用される時に空のオブジェクトの内容の自動更新のコヒーレンスを保証するプロセス、即ち、実行されている現在のタスクを一時中断し、空のオブジェクトの内容が知られた時にそのタスクだけを再開する、必要に迫られて待つプロセスによって伴なわれる。
【００６６】
各コンピュータステーションは、ローカルプロセス、プロトコルモジュール、及びモニタを備え、各ローカルプロセスは、別のステーションの別のプロセスに関連するローカルでリモートなものであり、又は空のオブジェクトの内容を計算するために認識するものであってもよい。各コンピュータステーションは一つ又はそれ以上のローカルプロセスを備えてもよく、各プロセスはプロトコルモジュール及びモニタを有する。
【００６７】
本発明は上述された実施形態に制限されないが、他の実施形態に及んでいる。故に、望ましい性能に従って、開発された方法が代替的に又は組合わせて使用可能である。
【図面の簡単な説明】
【００６８】
【図１】非同期リモートプロシージャコール（ＲＰＣ）によって通信するステーションのネットワークを示す。
【図２】非同期リモートプロシージャコール（ＲＰＣ）を使用して図１の２つのステーション間の通信を示す。
【図３−１】本発明に従う、結果の返還と共に非同期リモートプロシージャコール（ＲＰＣ）を使用するステーションのネットワークを示す。
【図３−２】本発明に従うステーションの構成要素を詳細に示す。
【図４】非同期ＲＰＣ通信のためのリクエスト又は結果を送信する方法を示すフローチャートである。
【図５】送信に関連し且つ図４のステージ７０２で呼び出される方法の第１の実施形態を詳細に示すフローチャートである。
【図６】図５の方法の第１の実施形態に関連する結果の自動継続の方法の第１の実施形態を詳細に示すフローチャートである。
【図７】送信に関連し且つ図４のステージ７０２で呼び出される方法の第２及び第３の実施形態を詳細に示すフローチャートである。
【図８】図７の方法の第２の実施形態に関連する結果の自動継続の方法の第２の実施形態を詳細に示すフローチャートである。
【図９】図７の方法の第３の実施形態に関連する結果の自動継続の方法の第３の実施形態を詳細に示すフローチャートである。
【図１０】本発明に従う、結果の必要に迫られて待つ方法を詳細に示すフローチャートである。
【図１１】図１０のステージ７０８からのメッセージを送信した後にメッセージを受信する方法を示す。
【図１２】図１０及び図１１の方法に関連する結果の自動継続の方法の第４の実施形態を詳細に示すフローチャートである。
【図１】
2007517279.tif 000003
【図２】
2007517279.tif 000004
【図３−１】
2007517279.tif 000005
【図３−２】
2007517279.tif 000006
【図４】
2007517279.tif 000007
【図５】
2007517279.tif 000008
【図６】
2007517279.tif 000009
【図７】
2007517279.tif 000010
【図８】
2007517279.tif 000011
【図９】
2007517279.tif 000012
【図１０】
2007517279.tif 000013
【図１１】
2007517279.tif 000014
【図１２】
2007517279.tif 000015
【国際調査報告】
2007517279.tif 000016
2007517279.tif 000017
2007517279.tif 000018
2007517279.tif 000019
2007517279.tif 000020
2007517279.tif 000021