(57)【要約】【課題】オンライン処理とバッチ処理から構成されるシステムにおいて、実行ユーザ数の増減による排他制御方法と排他制御によるエラー通知方法を提供する。【解決手段】オンライン処理１３とバッチ処理３３を排他的に実行する必要があるとき、各処理の前後で排他制御処理２０をそれぞれ実行し、排他制御テーブル２１の該当するレコードに対し排他制御フラグとユーザ数を更新する。すでにオンライン処理中の時に別端末１１からオンライン処理１３を実行する場合は、排他制御テーブル２１の実行ユーザ数を増減させることでオンライン処理中ステータスを管理する。また、バッチ処理３３が排他制御により起動できない場合は、一定時間待機した後システムエラーを通知する。【選択図】図１
2007179304.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末から実行可能なオンライン処理部とバッチ処理部において排他制御を行う方法において、
排他制御テーブルを備えたシステム上で特定プログラムに対し、実行モードの指定とともに起動要求がなされると、前記排他制御テーブルの当該プログラムに対応するレコードを参照して当該プログラムの実行可否を判定するステップと、
当該プログラムが実行可能な場合には前記実行モードに関する情報を前記レコード上に記録し、前記レコード上にあるユーザ数を示す項目に１を加算するステップと、
当該プログラムを起動するステップと、
前記起動したプログラムの処理が終了すると、前記レコード上のユーザ数を示す項目から１を減算し、必要に応じ前記レコード上の実行モードに関する情報を更新するステップと
を有することを特徴とする排他制御方法。
【請求項２】
前記実行モードは、オンライン処理又はバッチ処理であることと、前記プログラム処理終了時に前記ユーザ数の減算結果がゼロとなる場合に、プログラムが実行されていないことを示す初期値を設定する方法であることを特徴とする、請求項１に記載の排他制御方法。
【請求項３】
前記プログラムの実行可否を判定する方法は、前記排他制御テーブル上の当該プログラムに対応するレコード上の実行モード情報が、前記初期値である場合、または、前記起動要求時に指定された実行モードと等しい場合に実行許可を与える方法であることを特徴とする請求項２に記載の排他制御方法。
【請求項４】
前記実行可否判定で実行不可となった時は、規定の時間、前記実行可否判定を繰り返すことと、規定の時間が経過しても実行可能にならなかった場合は排他制御エラーの通知を行うことを特徴とする、請求項１乃至請求項３の何れかに記載の排他制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のオンライン処理とバッチ処理機能を有するシステムにおける排他制御方法に関する。
【背景技術】
【０００２】
業務処理などにおいてサーバ装置や端末から実行される情報処理システムでは、一度に大量の処理を行い複数のファイルやデータを扱うバッチ処理と、処理を行うユーザが端末を用いて必要なデータへアクセスし、データの参照、更新を行うオンライン処理により、情報処理システムを構成している。
【０００３】
このようなシステム構成の場合、バッチ処理とオンライン処理において共有して扱うデータやファイルが存在することがある。オンライン処理は対象システムの使用ユーザが必要なデータへそれぞれアクセスし、参照、更新を行うため、バッチ処理と共有して扱うデータがある場合でも、オンライン処理可能な時間帯を日中とし、夜間はオンライン処理を停止することで、その間にバッチ処理を実行し、共有データを同時に扱うことのないようシステムを運用することが多い。
【０００４】
しかし、システム機能や処理内容の業務要件、さらには後続処理等の要件により、オンライン処理中であってもバッチ処理が必要となるシステムがある。その場合、バッチ処理起動中に、オンライン処理にてバッチ処理に必要なデータが更新されてしまった場合、バッチ処理開始時と終了時とでデータの内容が書き換えられてしまうため、データの一貫性が保てず、出力された結果が不正となってしまう。従って、バッチ処理中にはオンライン処理を停止させる必要がある。
【０００５】
このような要件がある場合、特開平５−８１１９７号公報に示されるように、バッチ処理であることを管理するフラグを用いることで、それぞれの処理を排他的に実行し、かつ、バッチ処理を優先的に起動させる方法が知られている。オンライン処理を停止させずにバッチ処理を自動的に起動させ、さらにオンライン処理ユーザへはバッチ処理実行中であることを通知させることで、バッチ処理で使用するデータの更新を防ぐことができる。
【０００６】
また、特開２００１−１４２７４号公報に示されるように、バッチ処理起動要求が発生している場合には、該当バッチ処理に対応付けられているオンライン処理を実行しているユーザに対し、バッチ処理起動要求があることを示すことで、オンライン処理の終了を促し、バッチ処理を速やかに実行することができる。
【０００７】
【特許文献１】特開平５−８１１９７号公報
【特許文献２】特開２００１−１４２７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述のように、従来の方法によりバッチ処理とオンライン処理との排他制御を行うことは可能であるが、バッチ処理が優先的に実行された場合、オンライン処理ユーザがバッチ処理に必要なデータを直前に更新していた際など、更新処理が終了する前にバッチ処理が起動してしまい、バッチ処理の正しい結果が得られなくなってしまうことが考えられる。例えば、バッチ処理起動直前に5件のデータ修正が必要となり、オンライン処理ユーザが修正を行っていた場合、3件目の修正途中というような更新処理の途中でバッチ処理が起動してしまうことが考えられる。必要な修正が反映されないままバッチ処理が起動したため、このような場合、正しい処理結果が得られなくなってしまう。
【０００９】
上記問題を解決するためには、オンライン処理中であることもフラグとして管理しなければならない。そして、オンライン処理中のフラグであった場合は、バッチ処理を起動させないようにする必要がある。しかし、オンライン処理は通常複数ユーザが実行するため、オンライン処理中のフラグを解除する場合は、他の排他制御対象のオンライン処理が実行されていないかどうかを確認する必要がある。そのため、各端末の実行処理プログラムを管理するテーブルなどにより他プログラムの処理状況を検索し、その結果を判定した上でオンライン処理中フラグを解除しなければならない。また、オンライン処理を実行する場合は、排他的に実行する必要のあるオンライン処理とバッチ処理とを関連付けているテーブルを検索しなければならない。そのため各オンライン処理端末からテーブルへアクセスする処理が実行されるため、オンライン処理ユーザの数によっては、レスポンス悪化につながる恐れがある。
【００１０】
また、対象のオンライン処理を実行しているユーザに対し、バッチ処理要求があることを画面に通知しても、即座にオンライン処理を終了できない場合もある。例えば、オンライン処理を実行後、長時間端末の前を離れていたり、実行しているオンライン処理が何らかの原因により終了できず継続して実行中であったりする場合などは、バッチ処理要求があってもオンライン処理を終了することができない。このような場合、起動させたいバッチ処理に時間的制約があり、一定時間以内に終了する必要があるときなどは、システムからのエラー通知が発生しないため、システム管理者等の対応が遅れ、他システムへの影響が発生する恐れがある。
【００１１】
本発明は、上述のような従来の課題に対し、バッチ処理の時間的制約があった場合であっても、一定時間内においてはオンライン処理が終了するまでバッチ処理起動を待機することにより、オンライン処理が強制的に終了されることがないようにする。また、オンライン処理のレスポンスに影響しないよう必要な処理のみ排他制御処理を実行する。さらに、一定時間内にバッチ処理が起動できない場合にはシステムエラーを通知する排他制御方法を提供することを目的とするものである。
【課題を解決するための手段】
【００１２】
本発明は、複数の端末から実行可能なオンライン処理と、バッチ処理から構成される情報処理システムにおいて、特定の処理に対し排他的に実行する必要がある場合、排他制御フラグと該当処理の実行ユーザ数を同時に管理することにより、排他制御を行うことを特徴とするものである。また、バッチ処理を実行しようとした場合に、オンライン処理中のため一定時間内に処理が起動できない時には、排他制御エラーを通知することを特徴とするものである。
【００１３】
排他制御が必要となる特定の処理に対し、排他制御フラグとしてオンライン処理中かバッチ処理中かを表すフラグ、そして、その処理を実行しているユーザ数を一つのテーブルで管理する。実行するユーザ数は、対象処理を起動した場合や終了した場合に常に更新されるため、オンライン処理中のフラグを解除する場合でも、他の端末の実行プログラムを調査することなく、ユーザ数の数値により容易に排他の解除を行うことができる。
【００１４】
また、一定時間内に処理を終了させる必要のあるバッチ処理であっても、排他を取得する回数と取得できない場合の待機時間の組合せにより、一定時間内に終了しない時にはシステムエラーを通知することで、システム管理者へ対応が必要なことを明示し、即座に対応することで、関連する他システムへの影響を抑えることができる。
【発明の効果】
【００１５】
以上の説明により、本発明によれば、オンライン処理とバッチ処理の排他制御を、排他制御フラグと実行ユーザ数とにより常に管理することで、排他状態を容易に管理することができる。また、バッチ処理要求がある場合、オンライン処理ユーザが処理実行中であってもその処理が終了するまで一定時間以内ならばバッチ処理起動を待機させることができる。従って、バッチ処理実行直前のオンライン処理も可能となる。
【００１６】
また、バッチ処理が一定時間内に終了しない場合はシステム的にエラーを検出することができるため、システム管理者が速やかに対応することができ、他システムへの影響を抑えることができる。
【００１７】
なお、排他制御テーブルの実行処理フラグは排他制御の要件に合わせて複数の名称やフラグを設定可能である。例えば、オンライン処理とバッチ処理とファイル受信処理を排他的に実行する場合は、上述のような設定例の他に、ファイル受信処理中を表す別のフラグ（例えば「３」など）を使用する。この際、排他取得処理でエラーとなった場合であっても、排他取得処理は排他制御テーブルの実行処理フラグの値で排他取得の可否を判断するため、この時に取得した実行処理フラグの値により、現在実行中の処理に合わせて排他エラーメッセージを生成することができる。例えば、オンライン処理ユーザが処理を実行しようとした場合に、排他制御テーブルの値が「２」（バッチ処理中）であれば、バッチ処理実行中である旨のメッセージを出力する。同様に、排他制御テーブルの値が「３」（ファイル受信処理中）であれば、ファイル受信処理中である旨のメッセージを出力する。従って、オンライン処理ユーザは、対象機能の中でどの処理が実行されているためにオンライン処理が実行できないのか、を即座に知ることができる。
【００１８】
このように、複数の処理で排他制御を行う場合であっても本発明によれば、汎用的に排他制御を行うことができる。
【発明を実施するための最良の形態】
【００１９】
以下、最良の実施形態を添付の図面を参照し説明する。
【００２０】
図１は、本発明の実施形態を含むシステムの一例を示す構成図である。図中、１はサーバ装置、１１、３１は端末、１０はオンライン処理部、３０はバッチ処理部、２０は排他制御プログラム、２１は排他制御テーブルである。オンライン処理部１０は複数の端末から実行することが可能である。また、バッチ処理部３０はバッチ処理実行状態を監視する端末３１などから実行することが可能である。ここで、端末１１と３１は同様のものであってもよい。尚、サーバ装置１は、オンライン処理、排他制御、バッチ処理等のプログラムを実行するＣＰＵと、上記プログラム、排他制御テーブル２１を格納する記憶部等を備えている。
【００２１】
排他制御処理２０は、オンライン処理部１０とバッチ処理部３０から実行される。排他制御処理２０が排他制御テーブル２１へアクセスすることで、排他制御状態を管理し、オンライン処理とバッチ処理を排他的に実行することができる。
【００２２】
オンライン処理部１０は端末１１から実行要求を受取ると、排他制御開始処理１２を実行し、排他制御処理２０を行う。オンライン処理１３が終了した場合には、排他制御終了処理１４を実行し、排他制御処理２０を行う。バッチ処理部３０も、オンライン処理部１０と同様、バッチ処理３３を実行する前に、排他制御開始処理３２を実行し、バッチ処理３３終了後に排他制御終了処理３４を実行する。
【００２３】
図２は、排他制御テーブル２１の一例を説明する図である。対象機能２６とは、排他制御を行う業務機能名称等をキーとして登録する。例えば、Ａという機能に対し排他制御を行いたい場合は、あらかじめ対象機能として「Ａ」を登録しておく。また、同一システム内でさらに排他制御を行いたい機能Ｂが存在する場合、排他制御テーブル２１に、対象機能「Ｂ」として別レコードを登録しておく。排他制御処理２０は、オンライン処理部１０やバッチ処理部３０の各排他処理で指定された対象機能をキーとし、排他制御テーブル２１の該当するレコードへアクセスする。
【００２４】
実行処理フラグ２７には、現在実行している処理名やそれを表すフラグがセットされる。即ち、オンライン処理実行中であれば、それを表す名称（例えば「オンライン」という文字列）やフラグがセットされ、バッチ処理実行中であればそれを示す名称（例えば「バッチ」という文字列）やフラグが登録される。なお、どちらも実行されていない場合は、初期値がセットされているものとする。なお、ここでは一例として、オンライン処理実行中には「１」、バッチ処理実行中には「２」、初期値として「０」というフラグで表されるものとする。
【００２５】
ユーザ数２８とは、実行処理フラグにセットされている処理を実行しているユーザの数を表す。例えば対象機能「Ａ」、実行処理フラグが「１」、ユーザ数が「３」であった場合、Ａという機能のプログラムに対し、排他制御対象のオンライン処理を実行しているユーザが３人いることを表している。
【００２６】
図３は、排他制御処理２０の構成を説明する図である。排他制御処理２０は、排他取得処理２２と排他解除処理２３および排他リセット処理２４から構成され、それぞれ排他制御テーブル２１へアクセスする。これらの処理が排他制御テーブルへ更新を行う場合は、データの整合性を保つため、排他的に行う。
【００２７】
この排他取得処理２２は、オンライン処理部１０の排他制御開始処理１２と、バッチ処理部３０の排他制御開始処理３２により実行される。また、同様に排他解除処理２３はオンライン処理部１０の排他制御終了処理１４と、バッチ処理部３０の排他終了処理３４により実行される。なお、排他リセット処理２４は、排他制御テーブル２１の値が不正な場合に使用するため、システム管理者が端末３１等から個別で実行するのがよい。
【００２８】
次に、排他取得処理２２と排他解除処理２３、排他リセット処理２４の処理フローについて説明する。
【００２９】
図４は、排他取得処理２２の処理フローを説明する図である。まず、処理４１により実行時に指定されたパラメータとして対象機能、実行処理フラグを取得する。次に処理４２により、排他制御テーブル２１から処理４１で取得した対象機能に該当するレコードの実行処理フラグ、ユーザ数を取得する。そして、処理４３において、処理４２により取得した実行処理フラグが初期値「０」かどうか、また、処理４１により取得した実行処理フラグと等しいかどうか、を判定する。処理４３の条件に一致する場合は、排他制御テーブル２１の該当するレコードに対し、更新処理を行う。この場合、実行処理フラグとして処理４１で取得した実行処理フラグ、ユーザ数として処理４２で取得したユーザ数＋１の値で更新し、正常終了したことを呼出元へ出力し、処理を終了する。また、処理４３の条件に一致しない場合は、排他制御エラーを呼出元へ出力し、処理を終了する。
【００３０】
図５は、排他解除処理２３の処理フローを説明する図である。まず、処理５１により実行時に指定されたパラメータとして対象機能を取得する。次に、処理５２により、排他制御テーブル２１から処理５１で取得した対象機能に該当するレコードのユーザ数を取得する。次に、処理５２で取得したユーザ数が１であるかを処理５３で判定する。ユーザ数が１であった場合は排他制御テーブル２１の該当レコードに対し、実行処理フラグを初期値「０」、ユーザ数を０として更新する。また、処理５２でのユーザ数が１以上である場合は、排他制御テーブル２１の該当レコードに対し、ユーザ数を処理５２で取得したユーザ数−１の値で更新し、処理を終了する。
【００３１】
図６は、排他リセット処理２４の処理フローを説明する図である。処理６１により実行時に指定されたパラメータとして対象機能を取得する。次に、処理６２により、処理６１で取得した対象機能に該当する排他制御テーブル２１のレコードに対し、実行処理フラグとユーザ名をそれぞれ初期値として更新する。排他制御テーブル２１の値が不正な状態のため、オンライン処理もバッチ処理も起動できない場合、この排他リセット処理２４をシステム管理者等が実行することで、排他制御テーブル２１を初期状態に戻すことができる。
【００３２】
次に、オンライン処理時の排他制御処理フローとバッチ処理時の排他制御処理フローをそれぞれ説明する。ここでは、排他制御を行う対象機能の一例として、「Ａ」という機能を用いて説明する。
【００３３】
図７は、オンライン処理時の排他制御フローを説明する図である。端末１１などから該当するオンライン処理要求を受けると、排他制御開始処理１２を実行する。この際、排他制御開始処理のパラメータとして、対象機能「Ａ」と実行処理フラグ「１」（オンライン処理）を設定する。そして、処理７１において排他制御開始処理１２が正常に終了したかどうかを判定する。排他制御開始処理１２は、図４の処理フローにより、排他制御テーブルの実行処理フラグが「０」またはパラメータから取得した実行処理フラグと同じであれば正常終了となることから、この場合は実行処理フラグが「０」（初期値）、または「１」（オンライン処理）である場合に正常終了することとなる。
【００３４】
排他制御開始処理１２が正常終了であればオンライン処理１３を実行する。オンライン処理終了後には、排他制御終了処理１４を実行する。この際にも排他制御終了処理１４のパラメータとして排他制御開始処理１２で設定した対象機能と同一の値「Ａ」を設定し、排他制御終了処理１４を実行する。
【００３５】
また、排他制御開始処理１２が正常に終了しない場合、つまり、排他制御テーブルの実行処理フラグが「０」でなく、かつ、排他制御開始処理で設定したパラメータの実行処理フラグ「１」（オンライン処理）と異なる、即ち、排他制御テーブルの実行処理フラグが「２」（バッチ処理）であった場合は、処理７２により排他制御エラーメッセージを端末１１へ出力することにより、オンライン処理を実行しようとしたユーザへバッチ処理が実行中であることを通知することができる。
【００３６】
具体的に、複数のユーザがオンライン処理を実行する場合の排他制御テーブルの状態を説明する。図８のように対象機能「Ａ」に対し、実行処理フラグ「０」（初期値）、ユーザ数「０」の場合、つまり、オンライン処理もバッチ処理も行われていない場合に、オンライン処理ユーザが対象機能「Ａ」のオンライン処理を実行すると、図９のように実行処理フラグ「１」（オンライン処理）、ユーザ数「１」となり、オンライン処理実行中のユーザ数が１人という状態に更新される。さらに、別のオンライン処理ユーザが対象機能Ａのオンライン処理を実行した場合、図１０のようにユーザ数が１増加して「２」という状態に更新されることで、オンライン処理ユーザが２人いることを表す。
【００３７】
排他制御テーブルが図９、または図１０の場合に、バッチ処理を実行しようとすると、実行処理フラグが「１」（オンライン処理）となっていることから、排他制御開始処理でエラーとなるため実行することができない。
【００３８】
また、オンライン処理ユーザが処理を終了すると、排他制御終了処理が実行されることによりユーザ数が１減少する。つまり、排他制御テーブルが図１０の場合、オンライン処理が終了すると、図９の状態となり、さらに別のユーザがオンライン処理を終了すると、排他制御テーブルは図８の状態となり、初期状態に戻る。
【００３９】
図１１は、バッチ処理時の排他制御フローを説明する図である。端末３１などから該当するバッチ処理要求を受けると、排他制御開始処理３２を実行する。この際、排他制御開始処理のパラメータとして、対象機能「Ａ」と実行処理フラグ「２」（バッチ処理）を設定する。そして、処理１１１において排他制御開始処理３２が正常に終了したかどうかを判定する。排他制御開始処理３２は、オンライン処理時に実行する処理と同一であり、図４の処理フローより、この場合は実行処理フラグが「０」（初期値）、または「２」（バッチ処理）である場合に正常終了することとなる。
【００４０】
排他制御開始処理３２が正常終了であればバッチ処理３３を実行する。バッチ処理終了後には、排他制御終了処理３４を実行する。オンライン処理時と同様、排他制御終了処理３４で設定するパラメータの対象機能は、排他制御開始処理３２のパラメータと同一の対象機能「Ａ」を設定する。
【００４１】
排他制御開始処理３２が正常に終了しない場合、つまり、排他制御テーブルの実行処理フラグが「１」（オンライン処理）であった場合、処理１１４により規定時間待機し、排他制御開始処理を繰返し実行することでオンライン処理が終了するのを待ち、バッチ処理を実行する。対象バッチ処理の後続処理等の時間的制約により待機時間に限度がある場合は、排他制御開始処理を実行する回数をカウントし、その回数が上限値に達したかどうかを処理１１２で判定することで、排他制御エラーを検出し、バッチ処理が起動できないことを端末３１等へ表示する。例えば、排他制御開始処理の実行可能回数の上限値として６０回、処理１１４で待機する時間を１分と設定することにより、バッチ処理を起動してから１時間以内に処理が開始できない場合は、端末３１に対し、排他制御エラーによりバッチ処理が起動できないことを通知する。従って、システム管理者がエラーにいち早く気づくことにより、規定時間内にエラー内容を確認し対応することで、該当バッチ処理を起動することができる。
【００４２】
具体的に対象機能「Ａ」に対し、バッチ処理を実行する場合の排他制御テーブルの状態を説明する。図８のように対象機能Ａに対し、排他制御テーブルが初期状態であった場合、対象機能「Ａ」のバッチ処理を実行すると、図１２のように実行処理フラグ「２」（バッチ処理）、ユーザ数「１」となり、バッチ処理実行中のユーザ数が「１」という状態に更新される。しかし、排他制御テーブルが図９、または図１０のようにオンライン処理中であった場合にバッチ処理を実行しようとすると、排他制御テーブルの実行処理フラグが「１」（オンライン処理）となっていること、さらにユーザ数が存在していることにより、排他制御開始処理でエラーとなりバッチ処理を実行することができない。従って、バッチ処理が起動できる条件は、図８のように対象機能の実行処理フラグが「０」（初期値）、実行ユーザ数が「０」の場合のみとなる。
【００４３】
バッチ処理が終了すると、排他制御終了処理が実行されることによりユーザ数が１減少する。つまり、排他制御テーブルが図１２の場合、排他制御テーブルは図８の状態となり、初期状態に戻る。
【００４４】
なお、オンライン処理やバッチ処理の予期せぬエラーやサーバ機器等のシステム障害等により、排他制御終了処理が正常に実行されず、排他制御テーブルの値が不正な状態となることも考えられる。そのような場合には、排他リセット処理をシステム管理者が実行することで、排他制御テーブルを初期状態に更新し、再び排他制御が可能な状態にすることができる。
【００４５】
以上の排他制御処理により、オンライン処理中であってもオンライン処理ユーザ数を常に管理することで、オンライン処理を強制的に終了させることなくバッチ処理を起動することができる。また、バッチ処理終了時間が限られている処理であっても、規定時間待機する処理と、排他制御開始処理の実行回数の組合せにより、規定時間内に実行できない場合にエラーとすることで、バッチ処理終了時間を早めることができる。
【産業上の利用可能性】
【００４６】
本発明は、複数の端末から実行可能なオンライン処理と、バッチ処理を実装するシステム装置において、オンライン処理とバッチ処理を排他的に実行する必要がある場合に利用することができる。
【図面の簡単な説明】
【００４７】
【図１】本実施形態を含むシステムの一例を示す構成図である。
【図２】排他制御テーブルの一例を説明する図である。
【図３】図１で示す排他制御処理２０の構成を説明する図である。
【図４】図３で示す排他取得処理２２の処理フローを説明する図である。
【図５】図３で示す排他解除処理２３の処理フローを説明する図である。
【図６】図３で示す排他リセット処理２４の処理フローを説明する図である。
【図７】図１で示すオンライン処理時の排他制御開始処理１２の処理フローを説明する図である。
【図８】排他制御テーブルが初期状態であることを説明する図である。
【図９】オンライン処理実行中のユーザが１人であることを説明する図である。
【図１０】オンライン処理実行中のユーザが２人であることを説明する図である。
【図１１】図１で示すバッチ処理時の排他制御開始処理３２の処理フローを説明する図である。
【図１２】バッチ処理実行中のユーザが１人であることを説明する図である。
【符号の説明】
【００４８】
１    サーバ装置
１０  オンライン処理部
１１  端末
１２  排他制御開始処理
１３  オンライン処理
１４  排他制御終了処理
２０  排他制御処理部
２１  排他制御テーブル
２２  排他取得処理
２３  排他解除処理
２４  排他リセット処理
３１  端末
３２  排他制御開始処理
３３  バッチ処理
３４  排他制御終了処理
【図１】
2007179304.tif 000003
【図２】
2007179304.tif 000004
【図３】
2007179304.tif 000005
【図４】
2007179304.tif 000006
【図５】
2007179304.tif 000007
【図６】
2007179304.tif 000008
【図７】
2007179304.tif 000009
【図８】
2007179304.tif 000010
【図９】
2007179304.tif 000011
【図１０】
2007179304.tif 000012
【図１１】
2007179304.tif 000013
【図１２】
2007179304.tif 000014