(57)【要約】【課題】各アプリケーションプログラムの内部にＥＮＱ／ＤＥＱプログラムを組み込むことなく容易にシステムに排他制御機能を付加できる排他制御方法を提供する。【解決手段】複数のコンピュータに接続された外部記憶装置２３に記憶された共有データセット２４ａ、２４ｂ、…のデータを更新する際、各コンピュータに汎用的なＥＮＱ／ＤＥＱ制御を施す排他制御用共通プログラム３２をロードし、プログラム実行用ＪＣＬ３１ａ、３１ｂにより排他制御したいアプリケーションプログラム名及び排他制御したい共有データセット名を指定して上記排他制御用共通プログラム３２を実行させる。排他制御用共通プログラム３２は、プログラム実行用ＪＣＬ３１ａ、３１ｂにより指定されたアプリケーションプログラムによる共有データセットのデータ更新時に排他制御を行なう。【選択図】      図２
2008242667.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータが接続された外部記憶装置に記憶された共有データセットのデータ更新時に前記共有データセットを排他制御する排他制御方法において、
前記コンピュータに排他制御を施す排他制御用共通プログラムをロードし、前記コンピュータで処理させたい内容を記述した指令書により前記排他制御用共通プログラム名を指定すると共に排他制御したいアプリケーションプログラム名及び共有データセット名を指定し、前記排他制御用共通プログラムにより前記指定されたアプリケーションプログラムによる共有データセットのデータ更新に際して該共有データセットの排他制御を実行することを特徴とする排他制御方法。
【請求項２】
複数のコンピュータが接続された外部記憶装置に複数のアプリケーションプログラム及び共有データセットが記憶され、前記アプリケーションプログラムによる共有データセットのデータ更新時に該共有データセットを排他制御する排他制御プログラムにおいて、
前記コンピュータにロードされ、コンピュータで処理させたい内容が記述されると共に排他制御したいアプリケーションプログラム名及び共有データセット名を指定する指令書に従って稼働する前記各アプリケーションプログラムに共通使用される排他制御用共通プログラムを備え、
前記排他制御用共通プログラムは、前記指令書の記述内容を解読し、該指令書により指定された排他制御対象のアプリケーションプログラム名及び共有データセット名を得る解読ステップと、前記解読ステップにより解読されたデータセット名の共有データセットの排他要求を行なう排他要求ステップと、前記解読ステップにより解読されたプログラム名のアプリケーションプログラムを前記外部記憶装置から呼出し、前記共有データセットのデータ更新を行なうデータ更新ステップと、前記データ更新ステップによる共有データセットのデータ更新終了後、前記共有データセットの排他開放を行なう排他開放ステップとを具備することを特徴とする排他制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のアプリケーションプログラムにより外部記憶装置に記憶された共有データセットを更新する際に排他制御を行なう排他制御方法及び排他制御プログラムに関する。
【背景技術】
【０００２】
複数のアプリケーションプログラムにより外部記憶装置に記憶されたデータセットを共有するコンピュータシステムでは、データの整合性確保及びデータセットの破壊防止のために排他制御を行なっている。複数例えば２つのアプリケーションプログラムが共有データセットを同時にアクセスする場合、双方ともデータの「読込み」であれば何の問題も発生しない。また、一方のアプリケーションプログラムがデータ内容の「更新」で、他のアプリケーションプログラムがデータの「読込み」の場合、読込み側のデータ内容が、更新前なのか更新後なのかの区別がつかないものの、コンピュータ処理としては正常処理される。しかし、双方のアプリケーションプログラムがデータ内容の「更新」の場合には、相手の更新結果を無視して自分側で上書きしてしまい、データ内容が正しく処理されなくなる。また、双方のアプリケーションプログラムが同時にデータ内容を更新するため、前記データセットが破壊されることもある。このため複数のアプリケーションプログラムが同一データセットを同時に更新する可能性がある場合には、関係する全てのプログラムの中で、同時更新が行なわれないような排他制御を行なう必要がある。
【０００３】
上記排他制御を行なうため、従来では共有データセットのデータを更新する各アプリケーションプログラムの内部に排他制御プログラムを組み込んでいる。
【０００４】
ここで、排他制御には、物理排他制御によるもの（以下「物理排他制御方式」という。）と論理排他制御によるもの（以下「論理排他制御方式」という。）とがある。
【０００５】
このうち物理排他制御方式で排他制御される範囲は、磁気ディスク装置に代表される直接アクセス可能な補助記憶装置全体というような物理的単位である。
【０００６】
一方、論理排他制御方式で排他制御される範囲は、補助記憶装置上にデータを論理的な単位でまとめたデータセット単位である。
【０００７】
上記排他制御方式には複数の方法があるが、一般的には排他制御プログラム（以下「ＥＮＱ／ＤＥＱプログラム」という。）を全てのアプリケーションプログラムの内部に組み込む方法が採用されている（例えば、特許文献１参照。）。
【０００８】
上記ＥＮＱ／ＤＥＱプログラムは、共有データセットのデータを更新中のアプリケーションプログラムがある場合、後から当該データセットのデータの更新を要求してきたアプリケーションプログラムを待ち状態とし、先に更新中のアプリケーションプログラムの処理終了後に後から更新を要求してきたアプリケーションプログラムの待ち状態を解除するという機能を有する（例えば、特許文献２、特許文献３参照。）。
【０００９】
図５は、アプリケーションプログラムの内部にＥＮＱ／ＤＥＱプログラムを組み込む従来の排他制御方法を示したものである。なお、図５では、プログラム実行用ＪＣＬ１１ａによってアプリケーションプログラム１２を指定し、外部記憶装置１４に記憶されているデータセット名「ＸＸ」の共有データセット１５を更新する際、同時にプログラム実行用ＪＣＬ１１ｂによりアプリケーションプログラム１３を指定して上記データセット名「ＸＸ」の共有データセット１５を更新する場合について示している。
【００１０】
図５において、１１ａ、１１ｂは所定のアプリケーションプログラムを指定して実行させるためのジョブ制御言語（以下「ＪＣＬ」という。）によるプログラム実行用ＪＣＬ（指令書）であり、外部記憶装置（図示せず）に記憶される。上記プログラム実行用ＪＣＬ１１ａ、１１ｂは、それぞれ異なるコンピュータにロードされて使用される。
【００１１】
上記プログラム実行用ＪＣＬ１１ａは、「// EXEC PGM＝‘PROGAA’」によりプログラム名「ＡＡ」のアプリケーションプログラム１２を指定し、ＤＤ（データ定義）ステートメントの記述「//DD01 DD DISP＝SHR.DSN＝ZZ」によりデータセット名「ＺＺ」の共有データセット、「//DD02 DD DISP＝SHR.DSN＝XX」により排他制御を行なうデータセット名「ＸＸ」の共有データセットを指定する。
【００１２】
また、上記プログラム実行用ＪＣＬ１１ｂは、「// EXEC PGM＝‘PROGBB’」によりプログラム名「ＢＢ」のアプリケーションプログラム１３を指定し、ＤＤステートメントの記述「//DD01 DD DISP＝SHR.DSN＝YY」によりデータセット名「ＹＹ」の共有データセット、「//DD03 DD DISP＝SHR.DSN＝XX」により排他制御を行なうデータセット名「ＸＸ」の共有データセットを指定する。
【００１３】
上記プログラム実行用ＪＣＬ１１ａ、１１ｂにおいては、データセット名「ＸＸ」の共有データセット１５がアプリケーションプログラム１２、１３による同時アクセスの対象となっており、排他制御が行なわれる。
【００１４】
今、プログラム実行用ＪＣＬ１１ａが先にコンピュータにロードされ、その後、プログラム実行用ＪＣＬ１１ｂが他のコンピュータにロードされたものとする。最初にロードされたプログラム実行用ＪＣＬ１１ａによって、プログラム名「ＡＡ」のアプリケーションプログラム１２が指定される。
【００１５】
アプリケーションプログラム１２は、プログラム実行用ＪＣＬ１１ａにおける「DD02」のデータ定義に従い、外部記憶装置１４に記憶されているデータセット名「ＸＸ」の共有データセット１５のデータを更新する。この場合、アプリケーションプログラム１２には、ＥＮＱ／ＤＥＱプログラム１２ａが組み込まれており、外部記憶装置１４に記憶されているデータセット名「ＸＸ」の共有データセット１５の更新要求が受け付けられた場合、排他制御を行なって共有データセット１５を専有する。
【００１６】
上記アプリケーションプログラム１２がデータセット名「ＸＸ」の共有データセット１５の更新処理を行なっている間は、プログラム実行用ＪＣＬ１１ｂによってプログラム名「ＢＢ」のアプリケーションプログラム１３の実行が指示され、アプリケーションプログラム１３が「DD03」のデータ定義に従ってデータセット名「ＸＸ」の共有データセット１５の更新を要求しても、受け付けられずに待ち状態となる。
【００１７】
そして、上記アプリケーションプログラム１２が共有データセット１５に対する更新処理が終了すると、ＥＮＱ／ＤＥＱプログラム１２ａは「ＤＥＱ」命令によって排他制御を終了する。
【００１８】
上記ＥＮＱ／ＤＥＱプログラム１２ａによる排他制御が終了すると、上記待機状態にあるアプリケーションプログラム１３の待ち状態が解除され、アプリケーションプログラム１３はプログラム実行用ＪＣＬ１１ｂにおける「DD03」のデータ定義に従い、外部記憶装置１４に記憶されているデータセット名「ＸＸ」の共有データセット１５のデータを更新することができる。この場合、上記アプリケーションプログラム１３においても、アプリケーションプログラム１２と同様にＥＮＱ／ＤＥＱプログラム１３ａが組み込まれており、外部記憶装置１４に記憶されているデータセット名「ＸＸ」の共有データセット１５に対する排他制御を行なう。
【特許文献１】特公平０５−０４０９３５号公報
【特許文献２】特開平０２−１９４４４２号公報
【特許文献３】特公平０４−０２１８９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
上記のように従来では、アプリケーションプログラムに組み込んだＥＮＱ／ＤＥＱプログラムによって共有データセットに対する排他制御を行ない、共有データセットのデータの整合性を確保すると共にデータセットの破壊を防止している。
【００２０】
しかしながら、上記従来の排他制御方法では、次のような問題がある。
【００２１】
（１）アプリケーションプログラム制作時に他の既存のアプリケーションプログラムと競合が発生するか否かを調査しなければならない。
【００２２】
（２）アプリケーションプログラムに排他制御機能を付加する場合には、全てのアプリケーションプログラムの内部にＥＮＱ／ＤＥＱプログラムを組み込まなければならない。
【００２３】
（３）ＥＮＱ／ＤＥＱプログラムを有するアプリケーションプログラムのＥＮＱ／ＤＥＱルールを台帳で管理しなければならない。
【００２４】
（４）新規アプリケーションプログラムが他の既存のアプリケーションプログラムと競合するかどうかを調査し、競合する場合には、既存のアプリケーションプログラムのＥＮＱ／ＤＥＱルールに合致した排他制御プログラムを新規アプリケーションプログラムに追加して組み込まなければならない。
【００２５】
本発明は上記の課題を解決するためになされたもので、各アプリケーションプログラムの内部にＥＮＱ／ＤＥＱプログラムを組み込むことなく容易にシステムに排他制御機能を付加することができ、アプリケーションプログラム制作時に他の既存のアプリケーションプログラムと競合が発生するか否かを調査する必要がなく、且つ管理が容易な排他制御方法及び排他制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
第１の発明は、複数のコンピュータが接続された外部記憶装置に記憶された共有データセットのデータ更新時に前記共有データセットを排他制御する排他制御方法において、
前記コンピュータに排他制御を施す排他制御用共通プログラムをロードし、前記コンピュータで処理させたい内容を記述した指令書により前記排他制御用共通プログラム名を指定すると共に排他制御したいアプリケーションプログラム名及び共有データセット名を指定し、前記排他制御用共通プログラムにより前記指定されたアプリケーションプログラムによる共有データセットのデータ更新に際して該共有データセットの排他制御を実行することを特徴とする。
【００２７】
第２の発明は、複数のコンピュータが接続された外部記憶装置に複数のアプリケーションプログラム及び共有データセットが記憶され、前記アプリケーションプログラムによる共有データセットのデータ更新時に該共有データセットを排他制御する排他制御プログラムにおいて、
前記コンピュータにロードされ、コンピュータで処理させたい内容が記述されると共に排他制御したいアプリケーションプログラム名及び共有データセット名を指定する指令書に従って稼働する前記各アプリケーションプログラムに共通使用される排他制御用共通プログラムを備え、
前記排他制御用共通プログラムは、前記指令書の記述内容を解読し、該指令書により指定された排他制御対象のアプリケーションプログラム名及び共有データセット名を得る解読ステップと、前記解読ステップにより解読されたデータセット名の共有データセットの排他要求を行なう排他要求ステップと、前記解読ステップにより解読されたプログラム名のアプリケーションプログラムを前記外部記憶装置から呼出し、前記共有データセットのデータ更新を行なうデータ更新ステップと、前記データ更新ステップによる共有データセットのデータ更新終了後、前記共有データセットの排他開放を行なう排他開放ステップとを具備することを特徴とする。
【発明の効果】
【００２８】
本発明によれば、汎用的な排他制御（ＥＮＱ／ＤＥＱ）機能を有する排他制御用共通プログラムを作成し、当該プログラムを使用してアプリケーションプログラムに排他制御機能を付加することにより、各アプリケーションプログラムの内部に排他制御プログラムを組み込むことなく容易にシステムに排他制御機能を付加することができる。また、排他制御用共通プログラムを実行させる指令書において、排他制御したいアプリケーションプログラム名及び排他制御したい共有データセット名を指定するだけで、共有データセットの排他制御を行なうことができる。
【００２９】
また、各アプリケーションプログラムには、排他制御プログラムを組み込む必要がないので、アプリケーションプログラム制作時に他の既存のアプリケーションプログラムと競合が発生するか否かを調査する必要がない。更に、排他制御に関わる部分を標準化できるので、アプリケーションプログラムの維持管理が容易になる。
【発明を実施するための最良の形態】
【００３０】
以下、図面を参照して本発明の一実施形態を説明する。  
図１は本発明の一実施形態に係る排他制御機能を備えたコンピュータシステムの概略構成を示すブロック図である。図１は、複数のコンピュータ例えば２台のコンピュータにより、外部記憶装置に記憶されたデータセットを共有する場合のシステムの構成例について示している。
【００３１】
図１において、２０はバスラインで、このバスライン２０には、複数の論理区画を含む第１のコンピュータ本体２１及び第２のコンピュータ本体２２が接続されると共に、例えば磁気ディスク装置等の外部記憶装置２３が接続される。上記第１のコンピュータ本体２１はＣＰＵ２１１及び内部メモリ２１２等を備え、第２のコンピュータ本体２２はＣＰＵ２２１及び内部メモリ２２２等を備えている。
【００３２】
上記外部記憶装置２３には、上記コンピュータ本体２１、２２が共有するデータセット名「ＷＷ」、「ＸＸ」、「ＹＹ」、「ＺＺ」等の共有データセット２４ａ、２４ｂ、２４ｃ、２４ｄ、…が記憶されていると共に、各コンピュータ本体２１、２２が独自に使用するデータ等、各種データが記憶されている。
【００３３】
また、上記バスライン２０には、外部記憶装置を用いて構成されるＪＣＬメモリ２５及びプログラムメモリ２６が接続される。更に上記バスライン２０には、上記コンピュータ本体２１、２２の処理データを表示する表示装置２７及び処理データを印刷するプリンタ２８等が接続される。上記表示装置２７はキーボード等のデータ入力部を備え、コンピュータ処理や処理結果を入手するための画面装置である。
【００３４】
上記ＪＣＬメモリ２５は、ＪＣＬ・ライブラリー２５１を備えており、このＪＣＬ・ライブラリー２５１に「JCL-01」、「JCL-02」、「JCL-03」、「JCL-04」、…等のプログラム実行用ＪＣＬ３１ａ、３１ｂ、３１ｃ、３１ｄ、…が記憶される。このプログラム実行用ＪＣＬ３１ａ、３１ｂ、３１ｃ、３１ｄ、…には、図２に詳細を示すようにＪＣＬにより、排他制御（ＥＮＱ／ＤＥＱ）用共通プログラムのプログラム名、使用するアプリケーションプログラム名、共有データセット名、プログラム・ライブラリー名、データセットの取扱い、等のコンピュータで処理させたい内容が記述される。上記プログラム実行用ＪＣＬ３１ａ、３１ｂ、３１ｃ、３１ｄ、…の単位は、１つの纏まった処理であり、その纏まりがジョブと呼ばれている。あるジョブを実行させたい場合には、上記表示装置２７から上記ＪＣＬメモリ２５に記憶されているプログラム実行用ＪＣＬ３１ａ、３１ｂ、３１ｃ、３１ｄ、…を第１のコンピュータ本体２１あるいは第２のコンピュータ本体２２に読み込むように指示する。
【００３５】
また、上記プログラムメモリ２６には、汎用的なＥＮＱ／ＤＥＱ制御を実行する排他制御用共通プログラム３２及びプログラム・ライブラリー２６１が記憶される。このプログラム・ライブラリー２６１には例えば「PGM-AA」、「PGM-BB」、「PGM-CC」、「PGM-DD」、…等のプログラム名を有する各種アプリケーションプログラム３４ａ、３４ｂ、３４ｃ、３４ｄ、…が記憶される。上記アプリケーションプログラム３４ａ、３４ｂ、３４ｃ、３４ｄ、…は、ある目的を持ってコンピュータ処理を行なわせるための手順書である。
【００３６】
なお、上記図１では、外部記憶装置２３、ＪＣＬメモリ２５及びプログラムメモリ２６を別個に設けた場合について示したが、別個に設ける必要はなく例えば１つの外部記憶装置内に構成しても良い。
【００３７】
次に、上記プログラム実行用ＪＣＬ３１ａ、３１ｂ、排他制御用共通プログラム３２及びアプリケーションプログラム３４ａ、３４ｂの構成例について図２を参照して説明する。なお、排他制御用共通プログラム３２のプログラム名を「GUAUTENQ」として説明する。また、図２は、プログラム実行用ＪＣＬ３１ａによりアプリケーションプログラム３４ａを指定して外部記憶装置２３に記憶されているデータセット名「ＸＸ」の共有データセット２４ｂを更新し、同時にプログラム実行用ＪＣＬ３１ｂによりアプリケーションプログラム３４ｂを指定してデータセット名「ＸＸ」の共有データセット２４ｂを更新する場合について示している。この場合、例えばＪＣＬメモリ２５に記憶されているプログラム実行用ＪＣＬ３１ａを第１のコンピュータ本体２１にロードし、プログラム実行用ＪＣＬ３１ｂを第２のコンピュータ本体２２にロードするように図１に示す表示装置２７から指示する。
【００３８】
上記プログラム実行用ＪＣＬ３１ａには、排他制御用共通プログラム３２を指定する「// EXEC PGM＝GUAUTENQ」、実行させたいアプリケーションプログラム名「ＡＡ」を指定する「// PARM＝‘PROGAA’」、排他制御を行なうデータセット名「ＸＸ」の共有データセットを指定する「//DDENQ DD DISP＝SHR.DSN＝XX」が記述されている。また、プログラム実行用ＪＣＬ３１ａにおける「//DD01 DD DISP＝SHR.DSN＝ZZ」及び「//DD02 DD DISP＝SHR.DSN＝XX」からなる（Ａ）の記述は、プログラムＡＡ（PROGAA）で必要とするＤＤステートメントである。
【００３９】
なお、上記プログラム実行用ＪＣＬ３１ａにおける個々の記述は、下記の内容を示している。
【００４０】
EXEC：使用するプログラム名を指定する。
【００４１】
DD：使用する入出力データを定義する。
【００４２】
DISP：入力したデータの状況を示す。
【００４３】
DSN：入出力データに付けられた名称を指定する。
【００４４】
SHR：既存データを共用で使用する。
【００４５】
また、プログラム実行用ＪＣＬ３１ｂには、排他制御用共通プログラム３２を指定する「// EXEC PGM＝GUAUTENQ」、アプリケーションプログラム名「ＢＢ」を指定する「// PARM＝‘PROGBB’」、排他制御を行なうデータセット名「ＸＸ」の共有データセットを指定する「//DDENQ DD DISP＝SHR.DSN＝XX」が記述されている。また、「//DD01 DD DISP＝SHR.DSN＝YY」及び「//DD03 DD DISP＝SHR.DSN＝XX」からなる（Ｂ）の記述は、プログラムＢＢ（PROGBB）で必要とするＤＤステートメントである。
【００４６】
上記プログラム実行用ＪＣＬ３１ａ、３１ｂによって実行が指示される排他制御用共通プログラム３２は、プログラム実行用ＪＣＬ３１ａ、３１ｂで指定された共有データセットに対する排他制御を行なう汎用的なＥＮＱ／ＤＥＱプログラム３３を備えている。
【００４７】
上記ＥＮＱ／ＤＥＱプログラム３３は、図２の例ではプログラム実行用ＪＣＬ３１ａ、３１ｂにより指定されたアプリケーションプログラム３４ａ、３４ｂにより外部記憶装置２３に記憶されているデータセット名「ＸＸ」の共有データセット２４ｂのデータを更新する際に排他制御を実行する。
【００４８】
すなわち、ＥＮＱ／ＤＥＱプログラム３３は、例えばプログラム実行用ＪＣＬ３１ａにより指定されたデータセット名「ＸＸ」の共有データセット２４ｂに対する処理を実行する際、前記共有データセット２４ｂの更新要求が許可されると、「ENQ‘XX’」によりデータセット名「ＸＸ」の共有データセット２４ｂに対する排他制御を開始する。このときプログラム名「ＡＡ」のアプリケーションプログラム３４ａを呼出してデータセット名「ＸＸ」の共有データセット２４ｂのデータ更新処理を実行する。アプリケーションプログラム３４ａは、「DD02」のＤＤステートメントを開き、その記述に従ってデータセット名「ＸＸ」の共有データセット２４ｂのデータ更新処理を繰り返して行ない、「EOF＝０」になると「DD02」のＤＤステートメントを閉じてデータ更新処理を終了し、排他制御用共通プログラム３２に戻る。
【００４９】
排他制御用共通プログラム３２は、上記アプリケーションプログラム３４ａによるデータセット名「ＸＸ」の共有データセット２４ｂのデータ更新処理を終了すると、ＥＮＱ／ＤＥＱプログラム３３の排他制御を終了する。
【００５０】
また、上記排他制御用共通プログラム３２は、プログラム実行用ＪＣＬ３１ｂにより指定されたプログラム名「ＢＢ」のアプリケーションプログラム３４ｂ及びデータセット名「ＸＸ」の共有データセット２４ｂに対する排他制御を実行する際においても、プログラム実行用ＪＣＬ３１ｂの指示に従って上記と同様の処理を実行する。
【００５１】
次に、上記コンピュータシステムにおける排他制御の全体の動作を上記図１、図２、及び図３、図４に示すフローチャートを参照して説明する。
【００５２】
上記コンピュータシステムにおいて、例えばプログラム実行用ＪＣＬ３１ａ及びプログラム実行用ＪＣＬ３１ｂのジョブを実行させる場合、ＪＣＬメモリ２５に記憶されているプログラム実行用ＪＣＬ３１ａを第１のコンピュータ本体２１に読込み、プログラム実行用ＪＣＬ３１ｂを第２のコンピュータ本体２２に読み込むように表示装置２７から指示する。これによりプログラム実行用ＪＣＬ３１ａが第１のコンピュータ本体２１にロードされ、プログラム実行用ＪＣＬ３１ｂが第２のコンピュータ本体２２にロードされる。
【００５３】
第１のコンピュータ本体２１は、プログラム実行用ＪＣＬ３１ａがロードされると、このプログラム実行用ＪＣＬ３１ａに記述されている「// EXEC PGM＝GUAUTENQ」によってプログラムメモリ２６から排他制御用共通プログラム３２を読出し、その内容に従って動作する。排他制御用共通プログラム３２は、プログラム実行用ＪＣＬ３１ａに記述されている内容を解読し、「// PARM＝‘PROGAA’」の記述によりプログラム名「ＡＡ」を自動的に入手すると共に、「//DDENQ DD DISP＝SHR.DSN＝XX」の記述により排他制御を行なうデータセット名「ＸＸ」を自動的に入手する（ステップＡ１）。
【００５４】
排他制御用共通プログラム３２は、データセット名「ＸＸ」の共有データセット２４ｂに対する排他制御を実行する際、前記共有データセット２４ｂに対する更新要求を出し、更新要求が許可されるとＥＮＱ／ＤＥＱプログラム３３による排他制御を開始する。
【００５５】
すなわち、ＥＮＱ／ＤＥＱプログラム３３は、先ず「ENQ‘XX’」の記述により外部記憶装置２３に記憶されているデータセット名「ＸＸ」の共有データセット２４ｂに対する排他要求を行ない（ステップＡ２）、次いで、プログラムメモリ２６のプログラム・ライブラリー２６１からプログラム名「ＡＡ」のアプリケーションプログラム３４ａを読出し（ステップＡ３）、図４に示すようにそのプログラム内容に従って処理を実行する。
【００５６】
アプリケーションプログラム３４ａは、図４に示すように上記「DD02」のＤＤステートメントを開き、その記述に従ってデータセット名「ＸＸ」の共有データセット２４ｂのデータ読み出し、データ書き込み等のデータ更新処理を行ない（ステップＢ１）、データの更新処理を行なう都度「EOF＝０」になったかどうか、つまり処理を終了したかどうかを判定する（ステップＢ２）。この判定の結果、「EOF＝０」でなければステップＢ１に戻ってデータセット名「ＸＸ」の共有データセット２４ｂの更新処理を繰り返して実行する。そして、上記ステップＢ２において「EOF＝０」、すなわち全てのデータファイルの更新処理が終了したと判定されると、「DD02」のＤＤステートメントを閉じてデータセット名「ＸＸ」の共有データセット２４ｂの更新処理を終了し、図３のＥＮＱ／ＤＥＱプログラム３３に戻る。
【００５７】
このときＥＮＱ／ＤＥＱプログラム３３は、データセット名「ＸＸ」の共有データセット２４ｂの排他開放を行ない（ステップＡ４）、排他制御を終了する。
【００５８】
一方、第２のコンピュータ本体２２は、プログラム実行用ＪＣＬ３１ｂがロードされると、このプログラム実行用ＪＣＬ３１ｂに記述されている「// EXEC PGM＝GUAUTENQ」によってプログラムメモリ２６から排他制御用共通プログラム３２を読出し、そのプログラム内容に従って動作する。排他制御用共通プログラム３２は、上記の場合と同様にプログラム実行用ＪＣＬ３１ｂに記述されている内容を解読し、「// PARM＝‘PROGBB’」の記述によりプログラム名「ＢＢ」のアプリケーションプログラム３４ｂ、「//DDENQ DD DISP＝SHR.DSN＝XX」の記述により排他制御を行なうデータセット名「ＸＸ」をそれぞれ自動的に入手し、ＥＮＱ／ＤＥＱプログラム３３により、データセット名「ＸＸ」の共有データセット２４ｂに対する排他制御を開始する。
【００５９】
上記排他制御用共通プログラム３２は、データセット名「ＸＸ」の共有データセット２４ｂに対する排他制御を実行する際、前記共有データセット２４ｂの更新要求を出すが、第１のコンピュータ本体２１により前記共有データセット２４ｂがデータ更新中で排他制御されている場合には更新要求が受け付けられずに待ち状態となる。この待ち状態において、第１のコンピュータ本体２１による前記共有データセット２４ｂの排他制御が終了すると、第２のコンピュータ本体２２による前記共有データセット２４ｂの更新要求が受け付けられる。
【００６０】
第２のコンピュータ本体２２は、前記共有データセット２４ｂの更新要求が受け付けられると、上記第１のコンピュータ本体２１の場合と同様に、排他制御用共通プログラム３２のＥＮＱ／ＤＥＱプログラム３３により排他制御を実行する。
【００６１】
すなわちＥＮＱ／ＤＥＱプログラム３３は、データセット名「ＸＸ」の共有データセット２４ｂに対する排他要求を行なった後、プログラムメモリ２６からプログラム名「ＢＢ」のアプリケーションプログラム３４ｂを読出して前記共有データセット２４ｂのデータ更新処理を実行し、更新処理を終了すると前記共有データセット２４ｂの排他開放を行なって排他制御を終了する。
【００６２】
上記のように汎用的なＥＮＱ／ＤＥＱ機能を有する排他制御用共通プログラム３２を作成し、当該プログラムを使用してアプリケーションプログラムに排他制御機能を付加することにより、各アプリケーションプログラムの内部にＥＮＱ／ＤＥＱプログラムを組み込むことなく容易に排他制御機能を付加することができる。また、排他制御用共通プログラム３２を実行させるプログラム実行用ＪＣＬ３１ａ、３１ｂ上に、排他制御したいアプリケーションプログラム名及び排他制御したい共有データセット名を指定するだけで、共有データセットの排他制御を行なうことができる。
【００６３】
また、各アプリケーションプログラムには、ＥＮＱ／ＤＥＱプログラムを組み込む必要がないので、アプリケーションプログラム制作時に他の既存のアプリケーションプログラムと競合が発生するか否かを調査する必要がない。更に、排他制御に関わる部分を標準化できるので、アプリケーションプログラムの維持管理が容易になる。
【００６４】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できるものである。
【図面の簡単な説明】
【００６５】
【図１】本発明の一実施形態に係るコンピュータシステムの構成例を示すブロック図である。
【図２】同実施形態におけるプログラム実行用ＪＣＬ、排他制御用共通プログラム、アプリケーションプログラム及びデータセットの構成例を示す図である。
【図３】同実施形態における排他制御動作を説明するためのフローチャートである。
【図４】同実施形態におけるアプリケーションプログラムのデータ更新動作を説明するためのフローチャートである。
【図５】従来の共有データセットに対する排他制御方法の説明図である。
【符号の説明】
【００６６】
１１ａ、１１ｂ…プログラム実行用ＪＣＬ、１２、１３…アプリケーションプログラム、１２ａ、１３ａ…ＥＮＱ／ＤＥＱプログラム、１４…外部記憶装置、１５…共有データセット、２１…第１のコンピュータ本体、２１１…第１のコンピュータ本体のＣＰＵ、２１２…第１のコンピュータ本体の内部メモリ、２２…第２のコンピュータ本体、２２１…第２のコンピュータ本体のＣＰＵ、２２２…第２のコンピュータ本体の内部メモリ、２３…外部記憶装置、２４ａ、２４ｂ、２４ｃ、２４ｄ、…、…共有データセット、２５…ＪＣＬメモリ、２５１…ＪＣＬ・ライブラリー、２６…プログラムメモリ、２６１…プログラム・ライブラリー、２７…表示装置、２８…プリンタ、３１ａ、３１ｂ、３１ｃ、３１ｄ、…、…プログラム実行用ＪＣＬ、３２…排他制御用共通プログラム、３３…ＥＮＱ／ＤＥＱプログラム、３４ａ、３４ｂ、３４ｃ、３４ｄ、…、…アプリケーションプログラム、Ａ１〜Ａ４…排他制御用共通プログラムによる排他制御の処理ステップ、Ｂ１、Ｂ２…アプリケーションプログラムによる共有データセットの更新処理ステップ。
【図１】
2008242667.tif 000003
【図２】
2008242667.tif 000004
【図３】
2008242667.tif 000005
【図４】
2008242667.tif 000006
【図５】
2008242667.tif 000007