(57)【要約】【課題】ジョブの推定持続時間に乗数を与えて計算された閾値をジョブの持続時間が超えたときに、実行時間が長いジョブを検出する作業負荷スケジューラを提供すること。【解決手段】オペレータが、持続時間が短いジョブの上位レベルと持続時間が長いジョブの下位レベルからなる、乗数の２つの極限値を入力する。次いで、アルゴリズムによって、どのジョブに対しても適切な乗数を計算し、推定持続時間が短い場合は上位レベルに一層の重み付けをするが、乗数は次第にレベルを変動させ、推定持続時間が長い場合は下位レベルにより重要性が与えられる。
2004538561.tif 000002
【特許請求の範囲】
【請求項１】
処理の実行を制御するスケジューリング方法であって、
処理の期待持続時間を推定するステップと、
前記期待持続時間に乗数を与えて閾値を決定するステップと、
前記処理を実行するステップと、
前記処理の実際の持続時間が前記閾値を超えたときに異常状態を検出するステップとを含み、
前記期待持続時間の減少関数として前記乗数を決定するステップを特徴とする方法。
【請求項２】
前記乗数を決定するステップが、前記乗数を少なくともある範囲の値で前記期待持続時間の一次関数として計算することを含む、請求項１に記載の方法。
【請求項３】
前記乗数を計算するステップが、
前記乗数の第１のレベルを設定すること、
前記第２のレベルが前記第１のレベルより低くなるように、前記乗数の第２のレベルを設定すること、
前記期待持続時間のブレーク限度を設定すること、
ゼロに等しい前記期待持続時間に対する前記第１のレベルと前記ブレーク限度に等しい前記期待持続時間に対する前記第２のレベルとの間で前記乗数を一次補間することを含む、請求項２に記載の方法。
【請求項４】
前記乗数を計算するステップが、前記ブレーク限度より大きい前記期待持続時間の任意の値に対して前記第２のレベルに前記乗数を設定することをさらに含む、請求項３に記載の方法。
【請求項５】
前記乗数を決定するステップが、前記期待持続時間の双曲線関数として前記乗数を計算することを含む、請求項１に記載の方法。
【請求項６】
前記乗数を計算するステップが、
第１のパラメータを設定すること、
第２のパラメータを設定すること、
第３のパラメータを設定すること、
前記期待持続時間と前記第３のパラメータとの積と、前記第２のパラメータとの合計で前記第１のパラメータを割ることによって前記乗数を計算することを含む、請求項５に記載の方法。
【請求項７】
前記第３のパラメータが、予め設定された１に等しい定数である、請求項６に記載の方法。
【請求項８】
請求項１ないし７のいずれかに記載の方法を実施するよう適合されたプログラム・コード手段を含み、コンピュータ上で実行されるコンピュータ・プログラム。
【請求項９】
請求項８に記載のプログラムが格納されるコンピュータ可読媒体を備えるプログラム製品。
【請求項１０】
処理の実行を制御するスケジューリング・システム（１００）であって、処理の期待持続時間を推定する手段（２３５）と、前記期待持続時間に乗数を与えて閾値を決定する手段（２５０）と、前記処理を実行する手段（２２５）と、前記処理の実際の持続時間が前記閾値を超えたときに異常状態を検出する手段（２５５）とを含み、前記乗数を前記期待持続時間の減少関数として決定する手段（２３５、２４０）をさらに含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理の実行を制御するスケジューリング方法およびシステムに関する。
【背景技術】
【０００２】
スケジューリング方法は、たとえばバッチ処理における一連のジョブを管理するいくつかのアプリケーションにおいて一般に使用される。通常、スケジューリングにはプランの構築が含まれ、このプランは、ジョブの実行を依頼し制御するのに使用される、指定された順序で構成されるジョブの流れからなる。プランの構築には、各ジョブの期待持続時間の予測が必要である。たとえば、推定持続時間は、以前実行されたジョブの完了したインスタンスの測定持続時間の平均に設定される。
【０００３】
ジョブが推定持続時間よりはるかに長く実行されると、ジョブの実行を制御する作業負荷スケジューラが、対応する異常状態を検出する。この状況では、オペレータに警告を行うことが望ましい。オペレータは、たとえば実行時間が長いジョブをキャンセルして介入を行う必要があるかどうか決定する。あるいは、スケジューラは、（限界であると分類された場合）追加のシステム資源をジョブに与えるために作業負荷マネージャを呼び出す。
【０００４】
一般的な手法は、推定持続時間に乗算する因子を指定することである。その結果得られる数によって、ジョブの現時点での持続時間に対する閾値が与えられる。現時点での持続時間が閾値を超えると、ジョブは実行時間が長いとみなされてそれに対応する動作が行われる。
【０００５】
当分野において公知の解決方法の欠点は、検出機構が不十分でありほとんど価値がないことである。その結果、作業負荷スケジューラは、不正に動作することがある。
【０００６】
具体的には、閾値が低すぎる場合、本当の異常状態が起こっていない場合でも、間違った警告が起こり、またはシステム資源が見境なく使用される。反対に、閾値が高すぎる場合、実行時間が長いジョブは、非常に長い時間が経過した後でないと検出されない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、上述の欠点を軽減する技術を提供することである。
【課題を解決するための手段】
【０００８】
本発明によれば、処理の実行を制御するスケジューリング方法が提供され、この方法は、処理の期待持続時間を推定するステップと、期待持続時間に乗数を掛けて閾値を決定するステップと、処理を実行するステップと、処理の実際の持続時間が閾値を超えたときに異常状態を検出するステップとを含み、乗数は期待持続時間の減少関数として決定される。
【０００９】
また、本発明によれば、こうした方法を実施するコンピュータ・プログラム、こうしたプログラムを格納するプログラム製品、および対応するシステムが提供される。
【００１０】
本発明による解決方法のさらなる特徴および利点は、本発明を限定するものではない、添付の図面を参照して以下で説明する本発明の好ましい実施形態によって明らかになるであろう。
【発明を実施するための最良の形態】
【００１１】
図１を具体的に参照すると、データ処理システム１００、たとえばメインフレームを示してある。システム１００はいくつかのユニットを含み、そのユニットはシステム・バス（ＳＹＳ＿ＢＵＳ）１０５に並列に接続される。具体的には、複数のマイクロプロセッサ（μＰ）１１０が、システム１００の動作を制御する。マイクロプロセッサ１１０は、一般に交互配置モジュールを有するＤＲＡＭで形成される共用ワーキング・メモリ１１５にアクセスする。読出し専用メモリ（ＲＯＭ）１２０は、システム１００を起動する基本プログラムを格納する。
【００１２】
様々な周辺ユニットが、ローカル・バス（ＬＯＣ＿ＢＵＳ）１２５の周囲にクラスタ化される。より詳細には、大容量記憶装置がハード・ディスク１３０から構成され、システム１００は、たとえばキーボードおよびＣＤ−ＲＯＭ１４０用ドライバから構成される入力ユニット（ＩＮ）１３５と、たとえばモニタおよびプリンタから構成される出力ユニット（ＯＵＴ）１４５とをさらに含む。ブリッジ・ユニット（ＢＲＩＤＧＥ）１５０は、システム・バス１０５をローカル・バス１２５とインターフェースさせる。
【００１３】
各マイクロプロセッサ１１０およびブリッジ・ユニット１５０は、情報を伝送するためにシステム・バス１０５へのアクセスを要求する主エージェントとして動作することができる。システム・バス１０５への相互排他を伴うアクセスの認可は、アービタ（ＡＲＢ）１５５によって管理される。
【００１４】
システムが異なる構造を有する（たとえば単一バスを有する）場合、ミニコンピュータまたはワークステーションのネットワークから構成される場合、異なるユニット（たとえば磁気テープ用ドライバ）を含む場合なども、同様に考慮される。
【００１５】
ここで図２を検討すると、動作中のシステムのワーキング・メモリ１１５の部分的な内容を示してある。情報（プログラムおよびデータ）は通常、ハード・ディスク上に格納され、プログラムがオペレーティング・システムおよび他のアプリケーション・プログラム（図示せず）と共に実行されているときにワーキング・メモリに（少なくとも部分的に）ロードされる。プログラムは、最初にＣＤ−ＲＯＭからハード・ディスク上にインストールされる。
【００１６】
ワーキング・メモリ１１５は、オペレータとの情報交換に使用される入出力インターフェース（Ｉ／Ｏ）２０５を含む。入出力インターフェース２０５は、バッチ・コントローラ（ＢＡＴＣＨ）２１０と通信する。バッチ・コントローラ２１０は、（通常、夜間またはシステムがアイドル状態であれば常に）一連の非対話式ジョブの実行を管理する。バッチ処理は、長時間にわたってシステムまたは周辺装置を必要とする動作には特に有益である。
【００１７】
バッチ・コントローラ２１０は、企業のプロダクション作業負荷の記述を格納するデータベース２１５にアクセスする。作業負荷データベース２１５は、システム上で実行すべきバッチの各ジョブごとの（それぞれの識別子コードを介してアクセスされる）記録を含む。記録は、ジョブの動作を記述するフィールド（ＪＯＢ）、実行の予定時間（時間、日付、週、月）、および他のジョブとのあらゆる依存関係によって構成される。実際、システムが時分割技術によって複数のジョブを並列に実行することができても、いくつかのジョブは順序の制約を示すことが多い。たとえば、あるジョブによって使用されるべき資源（ファイルなど）が別のジョブによってアクセスされている場合、そのジョブの実行は、他方のジョブの実行が完了するまでは開始しないことが必要である。記録は、ジョブの推定持続時間を示すフィールド（ＥＤ）をさらに含む。
【００１８】
実行すべきジョブの記述およびその推定持続時間はバッチ・コントローラ２１０に提供され、次いでプラン・ビルダ（ＢＵＩＬＤＥＲ）２２０に伝送される。ビルダ２２０は、指定された期間に所定の順序でジョブの実行の流れを制御するスケジューリング・プランを作成する。プランは、（たとえばシステム負荷を調整し、またはピーク性能を最適化する）予め設定されたスケジューリング戦略によって構築される。プランは、バッチ・コントローラ２１０を介して、プラン実行装置（ＥＸＥＣ）２２５に供給される。プラン実行装置２２５は、プロダクション環境（ＲＵＮ）２３０内でバッチを実行依頼し、それに応じてジョブの実行を制御する。
【００１９】
バッチ・コントローラ２１０は、構成リポジトリ（ＣＯＮＦＩＧ）２３５へのパラメータ入力をさらに管理する。リポジトリ２３５に格納された構成パラメータは、論理ユニット（ＬＯＧＩＣ）２４０に供給される。論理ユニット２４０はさらに、バッチ・コントローラ２１０から現在の各ジョブの推定持続時間ＥＤを受け取る。論理ユニット２４０は、以下で説明するように、現在のジョブに対する乗数（ＭＦ）を計算する。乗数ＭＦおよび推定持続時間ＥＤは、乗算ブロック２５０に入力される。乗算ブロック２５０は、現在のジョブに対応する閾値（ＴＨ）を計算し、この値は比較ブロック（ＣＯＭＰ）２５５に供給される。比較ブロック２５５はさらに、ジョブの現時点での持続時間（ＣＤ）を受け取る。現時点での持続時間ＣＤは、プラン実行装置２２５によって、（システム・クロックによって提供される）現在の時間からジョブの実際の開始時間を減算して測定される。比較ブロック２５５は、予想より長く実行されているジョブから生じるどの異常状態も検出し、それに応じてプラン実行装置２２５に通知を行う。異常状態はさらに、バッチ・コントローラ２１０および入出力インターフェース２０５を介してオペレータに報告される。
【００２０】
ジョブがその実行を（すべての動作が完了した、異常状態に応答してオペレータによってキャンセルされた、またはエラーが起きたために）終了すると、フィードバック情報がプラン実行装置２２５からバッチ・コントローラ２１０に、次いで入出力インターフェース２０５に返される。フィードバック情報は、ジョブの実際の開始時間、ジョブの実際の終了時間、動作の結果を指定する戻りコードなどを含む。プラン実行装置２２５はまた、実際の終了時間から実際の開始時間を減算することによって、ジョブの実際の持続時間（ＡＤ）を測定する。
【００２１】
実際の持続時間ＡＤは、推定モジュール（ＥＳＴ）２３５に供給され、推定モジュール２３５は、実際の持続時間ＡＤを使用して、ジョブが今後どれだけ長く実行されるべきか予測する。各実行の実際の持続時間ＡＤに重み付けをしてジョブの持続時間の継続的に変化する平均をとるアルゴリズムが適用される。具体的には、ジョブの実行回数に従って減少する値を有する因子を実際の持続時間ＡＤに乗算し、その結果を用いて現時点での推定持続時間を見直す。見直された推定持続時間ＥＤはバッチ・コントローラ２１０に提供され、次いで作業負荷データベース２１５の対応する記録に格納される。
【００２２】
（上で説明した様々なモジュールからなる）スケジューリング・プログラム全体およびデータが異なるやり方で構成される場合、たとえば作業負荷データベースおよび構成リポジトリが単一のインベントリから構成される場合または等価なメモリ構造で置き換えられる場合、異なる機能が提供される場合、推定持続時間が異なる方法（たとえばジョブの完了した各インスタンスの実際の持続時間を累算してその実際の実行平均を計算する）で予想される場合も、同様に考慮される。
【００２３】
ここで図３を参照すると、（システム上で実行中の）スケジューリング・プログラムは、ブロック３０３で始まる方法３００を実施する。次いで、方法はブロック３０６に移り、ここで一連の可能な選択肢を有するメニューがシステムのモニタに表示される。この方法は、選択された選択肢に対応する動作を実行する。具体的には、構成パラメータを編集する機能をオペレータが選択した場合、ブロック３０９〜３３３が実行され、これに対して、ジョブを依頼する機能をオペレータが選択した場合、ブロック３３６〜３６６が実行される。それ以外に、オペレータが終了選択肢を選択した場合、方法は最終ブロック３６７で終わる。
【００２４】
ここでブロック３０９（編集機能）を検討すると、方法は、どのようにして乗数ＭＦが定義されるかを検査する。乗数ＭＦが推定持続時間ＥＤの一次関数として計算される場合、方法はブロック３１２に移る。オペレータは、持続時間が短いジョブに関連づけられた乗数の上位レベルＵＬを入力する。ブロック３１５に進むと、オペレータは、持続時間が長いジョブに関連づけられた乗数の下位レベルＬＬ（ただしＬＬ＜ＵＬ）を入力する。方法は、ブロック３１８に進み、ここでオペレータは乗数に対するブレーク限度（break limit）ＢＬを入力する。ブレーク限度ＢＬは、乗数がどれだけ速く上位レベルＵＬと下位レベルＬＬの間で変動するか定義し、さらに、乗数を安定させるためのキャップ（cap）としても使用される。方法は次いで、ブロック３０６に戻って新しいコマンドを待つ。
【００２５】
ブロック３０９を再度参照すると、乗数ＭＦが推定持続時間ＥＤの双曲線関数として計算される場合、方法は試験ブロック３２１に移る。オペレータが（双曲線の凹みを更新するための）基準係数Ａの定義を望む場合、方法はブロック３２４に移り、ここでオペレータは基準係数Ａを入力する。定義を望まない場合、基準係数はブロック３２７で定数値１に設定される。いずれの場合も、オペレータはブロック３３０でパラメータＢを入力し、さらにブロック３３３でパラメータＣを入力する。パラメータＢとＣの間の比率により、持続時間が短いジョブに対する乗数の上位レベルが定義される。次いで、方法はブロック３０６に戻る。
【００２６】
ここでブロック３３６（実行依頼機能）を参照すると、現在のジョブの推定持続時間ＥＤが論理ユニットに提供される。論理ユニットは、ブロック３３９で乗数ＭＦがどのようにして定義されるか検査する。乗数ＭＦが推定持続時間ＥＤの一次関数として計算される場合、方法は試験ブロック３４２に移る。推定持続時間ＥＤがブレーク限度ＢＬより大きい場合、ブロック３４８で乗数ＭＦは下位レベルＬＬに設定される（ＭＦ＝ＬＬ）。逆の場合、乗数ＭＦは、期待持続時間ＥＤ＝０に対する上位レベルＵＬと期待持続時間ＥＤ＝ＢＬに対する下位レベルＬＬとの間の一次補間として以下の式で計算される。
【００２７】
【数１】
2004538561.tif 000003
【００２８】
いずれの場合も、方法は次いで、（以下で説明する）ブロック３５１に進む。
【００２９】
たとえば、オペレータが上位レベルＵＬに対して値３（すなわち、非常に持続時間が短いジョブは、推定持続時間より３倍長く実行されたとき遅延したことになる）を、下位レベルＬＬに対して値０．１（すなわち、非常に持続時間が長いジョブは、推定持続時間を１０％超えて実行されたとき遅延したことになる）を選択すると決定したとする。さらに、乗数ＭＦは、２４時間（ＢＬ＝１４４０分）を超えるどの推定持続時間に対しても０．１で安定するべきである。この場合、１分のジョブは、２．９９７９８６分実行された場合遅延したとみなされる（すなわち、アルゴリズムは上位レベルＵＬに多くの重み付けをする）。２４時間のジョブは、１５８４分（１４４０＋１０％）実行された場合遅延したとみなされる。いくつかの中間例によって、乗数ＭＦが推定持続時間ＥＤとともにどのようにして変化するか説明される。
【００３０】
【表１】
2004538561.tif 000004
【００３１】
乗数ＭＦが推定持続時間ＥＤとともにどのように変化するか図示する対応する曲線を、図４に実線で示す。
【００３２】
別の例では、オペレータは、ブレーク限度ＢＬ＝２４０分（４時間）と設定する。この場合、乗数ＭＦは次第に減少し、次いで４時間以上で定数０．１で安定する。
【００３３】
【表２】
2004538561.tif 000005
【００３４】
対応する曲線を、図４に破線で示す。
【００３５】
再度ブロック３３９を参照すると、乗数ＭＦが推定持続時間ＥＤの双曲線関数として計算される場合、方法はブロック３５４に移り、ここで乗数ＭＦは以下の公式によって定義される。
【００３６】
【数２】
2004538561.tif 000006
【００３７】
方法は次いで、ブロック３５１に進む。
【００３８】
たとえば、Ａ＝１、Ｂ＝５００およびＣ＝１００を用いると、１２時間の期間に渡って以下の値が得られる。
【００３９】
【表３】
2004538561.tif 000007
【００４０】
乗数ＭＦが推定持続時間ＥＤとともにどのように変化するかを図示する対応する曲線を、図５に示す。
【００４１】
ここでブロック３５１を検討すると、閾値ＴＨは、推定持続時間ＥＤを因子ＭＦで乗算して、すなわちＴＨ＝ＭＦ・ＥＤで計算される。ジョブは、ブロック３５７で依頼され、方法は次いで、ブロック３６０でジョブの実行が終了したか検証する。終了した場合、方法はブロック３０６に戻って新しいコマンドを待つ。終了していない場合、試験ブロック３６３に入る。ジョブの現時点での持続時間ＣＤが閾値ＴＨを超えている場合、ブロック３６６で異常状態が検出され、それに応じてオペレータに通知が行われる。方法は次いで、ブロック３０６に戻る。閾値を超えていない場合、方法はブロック３６０に戻って上記の動作を繰り返す。
【００４２】
たとえばエラー・ルーチン、動作レベルで乗数を上書きする例外処理機能、ジョブを追跡する監視機能などを有する等価な方法をプログラムが実行する場合も、同様に考慮される。あるいは、こうした方法は、分散コンピュータ・ネットワークにおけるシステム資源の制御や、異なるアプリケーションにおける他のどのような処理にも使用される。
【００４３】
より全般的には、本発明は、処理の実行を制御するスケジューリング方法を提供する。この方法は処理の期待持続時間を推定し、次いで期待持続時間に乗数を与えることによって閾値が決定される。処理が実行されて処理の実際の持続時間が閾値を超えると異常状態が検出される。本発明の方法では、乗数は期待持続時間の減少関数として決定される。
【００４４】
この考案した解決方法により、実行時間が長いどのジョブも非常に正確に検出される。これにより、作業負荷スケジューラの動作が改善される。その結果、作業負荷スケジューラが発するどの警告も、予想されたよりもはるかに長く実行されているジョブによる本当の異常状態を常に示す。システム資源を、推定持続時間より実際に長く実行されている限界のジョブに対して作業負荷マネージャが適正に使用することもできる。
【００４５】
実際、本発明の発明者は、持続時間がかなり異なるジョブから各バッチが構成される通常のシナリオでは、予め設定された乗数値が許容されないことに気づいた。
【００４６】
たとえば、ある程度の時間が経過した後で持続時間が長いジョブの異常状態を検出するためには、小さい乗数が望ましい。ただし、この場合持続時間が短いジョブの（仮定される）異常状態は、ジョブがわずか数秒間オーバーランした（より短いジョブに比較的多く影響を与える軽微な摂動によって引き起こされることが非常に多い）後で検出する可能性がある。
【００４７】
一方、大きい乗数により、持続時間が短いジョブに受け入れられる閾値が得られる。残念ながら、この場合持続時間が長いジョブの異常状態は何時間も経過した後でないと検出されない。
【００４８】
それとは反対に、本発明の解決方法では、実行時間が長いジョブを検出する方法を使用し、この方法は、持続時間が短いジョブの固有の非持久性を考慮しながら、持続時間が長いジョブのどの異常状態も長い時間が経過する前に検出することを可能にする。
【００４９】
上述した本発明の好ましい実施形態により、さらに利点が提供される。たとえば、乗数は、（少なくとも一定の範囲の値で）期待持続時間の一次関数として非常に簡単なやり方で計算される。
【００５０】
好ましくは、この関数は、下位レベルＬＬ、上位レベルＵＬおよびブレーク限度ＢＬによって定義される。乗数ＭＦに対して望む最高値および最低値を符号化するオペレータにとってパラメータは非常に重要なので、このアルゴリズムは有用である。このようにして、アルゴリズムは、どのジョブに対しても適切な乗数ＭＦを計算し、推定持続時間ＥＤが小さいときには上位レベルＵＬにさらに重み付けをするが、乗数は次第にレベルを変動させ、推定持続時間ＥＤが長くなると下位レベルＬＬにより重要性が与えられる。
【００５１】
さらに、乗数ＭＦは、ブレーク限度ＢＬ以上になると、下位レベルＬＬによって定義された定数で安定する。こうすることにより、乗数ＭＦは上位レベルＵＬから下位レベルＬＬに次第に減少するとともに、持続時間が非常に長いジョブに許容されるレベルに維持されることが可能になる。
【００５２】
あるいは、乗数ＭＦは、推定持続時間ＥＤの双曲線関数として計算される。このようにして、（係数がオペレータにとってあまり重要ではなく、どれが最適の値であるか理解することがより難しい場合でも）乗数ＭＦの曲線は所望の形に操作することができる。
【００５３】
好ましくは、双曲線の曲率はさらに、オペレータによって定義することができ、そうすることによって本解決方法をさらに柔軟にすることができる。
【００５４】
閾値が違うやり方で定義される場合、異なるパラメータが考察される場合なども同様に考慮される。あるいは、一次関数においてブレーク限度を使用せず、乗数が別の関数、たとえば対数関数、指数関数、より一般的には推定持続時間のどのような減少関数などでも計算される。さらに、本発明による解決方法により、この解決方法自体が、予め設定されたテーブルでも、上述の論理を提供する他のどの方法でも乗数を決定するよう実装されるようになる。
【００５５】
有利には、本発明による解決方法は、ＣＤ−ＲＯＭ上で提供されるコンピュータ・プログラム（ソフトウェア）で実装される。
【００５６】
あるいは、こうしたプログラムは、フロッピー（Ｒ）・ディスクまたはテープで提供され、ハード・ディスクに予め搭載され、または他のどのコンピュータ可読媒体にも格納され、ネットワーク（通常はインターネット）を介してシステムに送られ、同報通信され、より一般的にはコンピュータのワーキング・メモリに直接搭載可能な他のどのような形でも提供される。さらに、本発明による方法により、この方法自体が、たとえば半導体材料のチップに集積されたハードウェア構造でも実行されるようになる。
【図面の簡単な説明】
【００５７】
【図１】本発明のスケジューリング方法を使用することができるデータ処理システムを示す基本ブロック図である。
【図２】本システムのワーキング・メモリの部分的な内容を示す図である。
【図３】本システムで実装されるスケジューリング方法を示すフロー図である。
【図４】関数の乗数／推定持続時間の異なる曲線を示す図である。
【図５】関数の乗数／推定持続時間の異なる曲線を示す図である。
【図１】
2004538561.tif 000008
【図２】
2004538561.tif 000009
【図３】
2004538561.tif 000010
【図４】
2004538561.tif 000011
【図５】
2004538561.tif 000012
【国際公開パンフレット】
2004538561.tif 000013
2004538561.tif 000014
2004538561.tif 000015
2004538561.tif 000016
2004538561.tif 000017
2004538561.tif 000018
2004538561.tif 000019
2004538561.tif 000020
2004538561.tif 000021
2004538561.tif 000022
2004538561.tif 000023
2004538561.tif 000024
2004538561.tif 000025
2004538561.tif 000026
2004538561.tif 000027
2004538561.tif 000028
2004538561.tif 000029
2004538561.tif 000030
2004538561.tif 000031
2004538561.tif 000032
2004538561.tif 000033
2004538561.tif 000034
2004538561.tif 000035
【国際公開パンフレット（コレクトバージョン）】
2004538561.tif 000036
2004538561.tif 000037
【国際調査報告】
2004538561.tif 000038
2004538561.tif 000039
2004538561.tif 000040