(57)【要約】【課題】メインフレームで使用されるＪＣＬ言語で記述されたＪＣＬファイルを、平易な形状のジョブネットワーク・フローに変換するためのジョブネットワーク自動生成方式を提供することである。【解決手段】ＪＣＬ（Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ）ファイル入力部と、ジョブネットワーク生成部と、ジョブネットワーク出力部とを具備するジョブネットワーク自動生成方式によって解決することができる。ＪＣＬファイル入力部は、ＪＣＬファイルを入力する。ジョブネットワーク生成部は、ＪＣＬファイルのＪＣＬ記述に基づいて、フローリンクを自動生成する。ジョブネットワーク出力部は、フローリンクを、ジョブネットワーク・フローに変換出力する。【選択図】図２
2011258248.tif 000002
【特許請求の範囲】
【請求項１】
ＪＣＬ（Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ）ファイルを入力するＪＣＬファイル入力手段と、
前記ＪＣＬファイルのＪＣＬ記述は、ＪＣＬ実処理行とＪＣＬ命令行を含み、
前記ＪＣＬ命令行に基づいて、ジョブの制御フローを示すフローリンクを自動生成するジョブネットワーク生成手段と、
前記フローリンクを、ジョブの実行順序の流れ図であるジョブネットワーク・フローのジョブネットワーク定義に変換出力するジョブネットワーク出力手段とを備え、
前記ジョブネットワーク生成手段は、
前記ＪＣＬ記述を走査し、ＪＣＬ実処理行と、ＪＣＬ命令行とに振り分けるＪＣＬ解析手段と、
フローリンク作成手段を備え、
前記フローリンク作成手段は、
前記ＪＣＬ命令行を受け取って、前記ＪＣＬ命令行の中で、並列実行処理命令行と、並列実行処理終了命令行とを受け取り、その間の行を枝として管理する枝管理手段と、
前記ＪＣＬ命令行の中で、前記並列実行処理命令行及び前記並列実行処理終了命令行以外のＪＣＬ命令行を受け取り、前記枝以外の行を幹として管理する幹管理手段を備え、
前記幹管理手段は、
一つの前記幹に、一つの前記幹として管理されるＪＣＬ命令行の実行位置を示す単位ジョブ部品（幹部品）を対応させ、前記幹部品を作成中の前記フローリンクに追加し、
前記枝管理手段は、
一つの前記枝に、並列部品と枝部品の組を対応させ、前記並列部品と前記枝部品を、作成中の前記フローリンクに追加し、ここで、前記並列部品は、前記枝として管理されるＪＣＬ実処理行の処理の開始位置を示し、前記枝部品は、前記枝として管理されるＪＣＬ実処理行の実行位置を示す
ジョブネットワーク自動生成方式。
【請求項２】
前記フローリンク作成手段は、
前記ＪＣＬ命令行の中で、並列実行処理同期命令行を受け取り、前記枝の収束を、並列実行処理同期命令行の引数として記載されている枝を検索することにより、収束すべき枝を管理する待合管理手段を更に備え、
前記待合管理手段は、
並列実行処理同期命令行を受け取ると、作成中のフローリンクにおいて、並列実行処理同期命令行に対応する枝部品に、前記枝部品に対応するＪＣＬ実処理行の実行終了の待ち合わせを表す待合部品を結合し、フローリンクを更新する
請求項１記載のジョブネットワーク自動生成方式。
【請求項３】
前記ジョブネットワーク生成手段は、
フローリンクの前記並列部品に対応する前記待合部品のインデクスを参照して、前記並列部品同士の処理の前後関係をソートし、前記枝部品と前記待合部品との結合によって生じる並列分岐パスの交差を解消するフローリンク最適化手段を更に有する
請求項２記載のジョブネットワーク自動生成方式。
【請求項４】
前記ジョブネットワーク生成手段は、
前記ＪＣＬ実処理行を複数のスクリプトファイルに分割して格納するスクリプトファイル分割手段を更に備える
請求項３記載のジョブネットワーク自動生成方式。
【請求項５】
前記フローリンク作成手段は、
前記幹と前記単位ジョブ部品、又は前記枝と前記枝部品を対応させると共に、その単位ジョブ部品又は枝部品に関連付けられたスクリプトファイルをオープンし、
前記スクリプトファイル分割手段は、
前記単位ジョブ部品又は前記枝部品に対応するＪＣＬ実処理行を、前記フローリンク作成手段によってオープンされたスクリプトファイルに格納する
請求項４記載のジョブネットワーク自動生成方式。
【請求項６】
前記フローリンク作成手段は、
前記スクリプトファイルをオープンしている状態のときに、前記スクリプトファイル分割手段が、前記スクリプトファイルに対応するＪＣＬ実処理行の格納を終了したときは、前記スクリプトファイルをクローズし、
別の前記単位ジョブ部品又は前記枝部品がある場合には、前記単位ジョブ部品又は前記枝部品に関連付けられたスクリプトファイルをオープンする
請求項５記載のジョブネットワーク自動生成方式。
【請求項７】
請求項１〜６いずれか１項に記載のジョブネットワーク自動生成方式が具備するＪＣＬファイル入力手段と、ジョブネットワーク生成手段と、ジョブネットワーク出力手段としてコンピュータを機能させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブネットワーク自動生成方式及びプログラムに関する。
【背景技術】
【０００２】
近年、多くの企業システムにおいて、メインフレームからＵＮＩＸ（登録商標）サーバやＷｉｎｄｏｗｓ（登録商標）などの汎用ＯＳを使用したオープンシステムへのシステム更改が活発に行われている。しかし、そのようなシステム更改においては、これまでメインフレーム上で運用されていたジョブ資産の移行が大きな問題となる。一般的に、それらのジョブ資産はジョブ制御言語（ＪＣＬ：Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ）で記述されているが、オープンシステム上の汎用ジョブ管理ソフトウェアは、この言語を解釈できない。そのため、これらのＪＣＬ記述が表現しているジョブ制御情報を、汎用ジョブ管理ソフトウェアにおけるジョブネットワーク・フロー（流れ図）に移行することが行われる。
【０００３】
ここで、ジョブネットワーク・フローの形式には、各ジョブ管理ソフトウェアによって種々の形式が存在する。図１−１〜図１−４は全て、同一の順序関係を表したジョブネットワーク・フローである。一般的なジョブ管理ソフトウェアでは、特に記述上の制約を設けず、ユーザに自由な記述を行わせる方式が多い。しかし、制約を設けない方式の場合、同じ順序関係を表現するジョブネットワーク・フローを作成しても、作業者の感性によって、完成するジョブネットワーク・フローが、図１−２になるか図１−３になるかは定かではない。同じ順序関係で、異なる様々な形状のジョブネットワーク・フローが混在することは、ジョブ移行時のテストの効率性の点からも、移行後の保守性の点からも問題となる。
【０００４】
このような問題の解決のため、図１−１のように、始点と終点をあらかじめ固定し、ジョブネットワーク・フローの線の引かれ方をジョブ管理ソフトウェア側で制限することで、順序関係が与えられればほぼ一意のジョブネットワーク・フローを作成できる方式をとるジョブ管理ソフトウェアが存在する。このジョブ管理ソフトウェアは、誰がジョブネットワーク・フローを作成しても、同様の形式のフローになり、保守性の高い平易なジョブネットワーク・フローを作成できることを訴求している。
【０００５】
しかし、そのようなジョブ管理ソフトウェア上にＪＣＬファイルを移行するためには、ＪＣＬ記述を、その形式の平易なジョブネットワーク・フローに変換する必要がある。この変換に際しては、いくつかの問題点を指摘することができる。
【０００６】
第１の問題点は、変換作業をシステムエンジニアの人手によって行った場合、ＪＣＬファイルが大量に存在するユーザ環境では、人為的ミスによる品質低下と、それをリカバリするために実施されるテスト作業により、膨大なコストを消費することになる。そのため、移行作業を自動化する必要があることである。
【０００７】
第２の問題点は、次の通りである。ＪＣＬファイルは、コマンドインタプリタ的な文法の実処理記述の中に、並列実行や待ち合わせなどの制御命令を記述する特殊な制御形式である。そして、制御命令には、￥ＳＵＢＪＯＢ⇔￥ＥＮＤＳＵＢＪＯＢ（並列実行）のように任意の箇所に記述することが可能な制御命令と、￥ＷＡＩＴＳＵＢのように記述した箇所で明確に待ち合わせが行なわれる制御命令とが存在する。このようなＪＣＬファイルを、単純な自動変換ツールで変換した場合、図１−４のような線の交差が発生するような煩雑なジョブネットワーク・フローが生成されてしまうことが多々ある。この場合、作成されたジョブネットワーク・フローを前述のジョブ管理ソフトウェアに適用することができなくなるという問題点である。
【０００８】
関連技術としては、以下のような発明が知られる。特開２００１−１６６９２８号公報（特許文献１参照）には、ジョブネットを自動生成する自動生成装置の発明が記載されている。自動生成装置は、ジョブネットの設計情報（システムフロー、ジョブフロー、同一ジョブ、データ項目情報定義、レコード情報定義、ファイル情報定義、運用スケジュール）を入力する画面から、設計情報を一元管理するデータベースを作成する。登録された運用スケジュールより、ジョブネット構成ファイル生成機構を通じて、ジョブネット構成ファイルを生成する。この自動生成装置は、ジョブネットワーク・フローを入力とするものであり、ＪＣＬファイルを入力とするものではない。
【０００９】
特開２００１−２８２５４９号公報（特許文献２参照）には、プログラム変換装置の発明が記載されている。プログラム変換装置は、複数のプログラムカウンタと、複数のスレッド実行装置とを備える。複数のスレッド実行装置は、制御投機的モードでスレッドを実行すること、データ依存投機的モードでスレッドを実行することが可能とされる。制御投機的モードは、複数のプログラムカウンタに従って、複数のスレッドの命令を、同時に、フェッチ、解釈、実行し、スレッド生成時以降に、レジスタセットに及ぼした変更を、後に取り消し可能なモードである。データ依存投機的モードは、自スレッドがメモリ領域から値をロードした後に、自スレッドを生成した親スレッドが同一メモリ領域に値をストアした場合に、自スレッドの少なくとも当該ロード以降の処理結果を破棄し、それらの処理を再実行するモードである。
【００１０】
プログラム変換装置は、与えられた原始プログラムをマルチスレッドプロセッサ向けに変換する。マルチスレッドプロセッサは、命令セットとして、次のことを、単一又は高々数個の機械語命令の組合せで実行できる命令セットを有する。第一に、スレッド実行装置で実行中のスレッドが制御投機的モードの新たなスレッドを生成することである。第二に、指定された条件が成立していれば自スレッドを終了させると共に、自スレッドが生成した制御投機的モードのスレッドの制御投機的モードを解除することである。第三に、生成した制御投機的モードのスレッドを破棄することである。第四に、自スレッドが生成するスレッドが指定されたアドレスのメモリ領域からのロードを行う際に、その動作を一時停止させることをあらかじめ指示することである。第五に、指定されたメモリアドレスに対する前記ロード一時停止指示を解除することである。第六に、スレッド実行装置で実行中のスレッドがデータ依存投機的モードの新たなスレッドを生成することである。第七に、自スレッドが生成したデータ依存投機的モードのスレッドのデータ依存投機的モードを解除することである。
【００１１】
プログラム変換装置は、レジスタ割り当て試行部と、フォーク（ＦＯＲＫ）箇所決定部と、命令並べ換え部と、レジスタ割り当て部とを備える。レジスタ割り当て試行部は、並列化に先立ってレジスタ割り当てを試み、中間プログラム上の各変数、及び中間項のレジスタ割り当て状況を予測する。フォーク箇所決定部は、レジスタ割り当て試行部でのレジスタ割り当て試行結果に基づいて、中間プログラムにおける条件分岐部分をスレッド生成命令を用いた並列コードに変換するか否か決定し、及び、並列コードでの並列実行方式の決定を行う。命令並べ換え部は、フォーク箇所決定部での決定結果に基づいて、中間プログラム中の条件分岐部分を、スレッド生成命令を用いた並列コードに変換し、レジスタ割り当て試行結果を参照して、スレッド間のメモリを介したデータ依存関係を保証する命令を、スレッド生成命令の前後に挿入すると共に、スレッド生成が早い段階で行われるように、スレッド生成命令の前後の命令を並べ換える。レジスタ割り当て部は、並列化され並べ換えられた命令列に対して、物理レジスタが割り当てられるか否かに関して、レジスタ割り当ての試行時と同じ割り当て結果となるように確定的なレジスタ割り当てを行う。
【００１２】
このプログラム変換装置は、コンパイラ技術の一つであり、主眼は、プロセス間のデータ依存性の回避にあると考えられる。また、最適化されるのは並列処理の効率化である。
【００１３】
特開２００７−２５７３８４号公報（特許文献３参照）には、バッチ系のシステム設計図を自動的に生成するジョブネット図自動生成方式の発明が記載されている。ジョブネット図自動生成方式は、データベース部と、該データベース部から情報を検索し表示する情報抽出表示部とよりなる。データベース部は、バッチ系を構成するジョブ、プログラム及びファイルのＩＤを示すジョブ情報、プログラム情報及びファイル情報と、ジョブ及びファイルの分類を示すジョブ分類情報及びファイル分類情報と、上記各情報の関連付けを示す関連付け情報とを有する。情報抽出表示部は、抽出するステップと、生成するステップとよりなるプログラムを備える。抽出するステップは、ジョブの分類情報を指定して、該分類を有するジョブ情報をデータベース部から抽出する。生成するステップは、関連付け情報より抽出されたジョブ情報の前後関係を判断してジョブ情報の関連を示す図形を生成する。このジョブネット図自動生成方式では、順序関係情報を元に、どのようなポリシーで、ジョブネットワーク・フローを作成するのかが明確でない。そのため、ジョブ数が巨大で、順序関係が入り組んでいる場合には、作成されたフローが煩雑で、理解しにくいものとなり、実用に耐えないジョブネットワーク・フローとなる可能性が高いと考えられる。また、変換のたびに(フローが図示する論理的意味は同じだが、人が視覚する「絵」として)異なるジョブネットワーク・フローに変換されてしまう可能性を否定できない。
【００１４】
特開平８−１４７１５６号公報（特許文献４参照）には、プログラム移植システムの発明が記載されている。プログラム移植システムは、移植元のコンピュータシステムでジョブ制御言語を用いて自動実行されている一連のプログラムを、移植先のコンピュータシステム上で自動実行可能なようにプログラム移植する。プログラム移植システムは、ジョブ制御プログラム入力過程と、入力ファイル存在検索過程と、論理関係精査過程と、外部参照ファイル入力過程と、ログリスト出力過程と、変更プログラム出力過程とを備える。
【００１５】
ジョブ制御プログラム入力過程は、移植元のコンピュータシステム用のジョブ制御言語で記述されたジョブ制御プログラムを入力する。入力ファイル存在検索過程は、ジョブ制御プログラムのファイル指定文中で指定された入力ファイルに該当するファイルが移植先のコンピュータシステム内の記憶装置上に存在するか否かを検索する。論理関係精査過程は、ジョブ制御プログラムに記述されている論理関係を精査する。外部参照ファイル入力過程は、ジョブ制御プログラムに記述されている外部参照ファイルに該当するファイルを移植先のコンピュータシステム内の記憶装置から入力する。ログリスト出力過程は、プログラム入力過程、入力ファイル存在検索過程、論理関係精査過程及び外部参照ファイル入力過程でエラーが生じた場合にエラーの存在を示すログリストを出力する一方、エラーが生じなかった場合にエラーの不存在を示すログリストを出力する。変更プログラム出力過程は、プログラム入力過程、入力ファイル存在検索過程、論理関係精査過程及び外部参照ファイル入力過程でエラーが生じなかった場合に、ジョブ制御プログラムを移植先のコンピュータシステム用に変更して出力する。
【００１６】
このプログラム移植システムでは、フロー形状の簡易化を最適化すること、並びに、ジョブネットワーク・フローの可読性および可視化についての性能を向上することは見込めないと考えられる。さらに、ジョブ実行環境の管理工数・運用工数・保守工数の削減にもつながらないと考えられる。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００１−１６６９２８号公報
【特許文献２】特開２００１−２８２５４９号公報
【特許文献３】特開２００７−２５７３８４号公報
【特許文献４】特開平８−１４７１５６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
本発明の課題は、メインフレームで使用されるＪＣＬ言語で記述されたＪＣＬファイルを、平易な形状のジョブネットワーク・フローに変換するためのジョブネットワーク自動生成方式を提供することである。
【課題を解決するための手段】
【００１９】
本発明の一つ目のアスペクトによるジョブネットワーク自動生成方式は、ＪＣＬファイル入力部と、ジョブネットワーク生成部と、ジョブネットワーク出力部とを具備する。ＪＣＬファイル入力部は、ＪＣＬファイルを入力する。ジョブネットワーク生成部は、ＪＣＬファイルのＪＣＬ記述に基づいて、フローリンクを自動生成する。ジョブネットワーク出力部は、フローリンクを、ジョブネットワーク・フローに変換出力する。
【００２０】
本発明の二つ目のアスペクトによるプログラムは、コンピュータを、ＪＣＬファイル入力手段と、ジョブネットワーク生成手段と、ジョブネットワーク出力手段ととして機能させる。ＪＣＬファイル入力手段は、ＪＣＬファイルを入力する。ジョブネットワーク生成手段は、ＪＣＬファイルのＪＣＬ記述に基づいて、フローリンクを自動生成する。ジョブネットワーク出力手段は、フローリンクを、ジョブネットワーク・フローに変換出力する。
【発明の効果】
【００２１】
本発明によれば、メインフレームで使用されるＪＣＬ言語で記述されたＪＣＬファイルを、平易な形状のジョブネットワーク・フローに変換するためのジョブネットワーク自動生成方式を提供することができる。
【図面の簡単な説明】
【００２２】
【図１−１】図１−１は、同一の順序関係を表したジョブネットワーク・フローを示す第一の図である。
【図１−２】図１−２は、同一の順序関係を表したジョブネットワーク・フローを示す第二の図である。
【図１−３】図１−３は、同一の順序関係を表したジョブネットワーク・フローを示す第三の図である。
【図１−４】図１−４は、同一の順序関係を表したジョブネットワーク・フローを示す第四の図である。
【図２】図２は、ジョブネットワーク自動生成方式の全体構成を示す図である。
【図３】図３は、ＪＣＬ→中間ファイル変換部の構成図である。
【図４】図４は、ジョブネットワーク生成部の構成図である。
【図５】図５は、スクリプトファイル分割部の機能説明図である。
【図６】図６は、フローリンク作成部の機能説明図である。
【図７】図７は、フローリンク作成方法の第一の説明図である。
【図８】図８は、フローリンク作成方法の第二の説明図である。
【図９】図９は、フローリンク作成方法の第三の説明図である。
【図１０】図１０は、フローリンク作成方法の第四の説明図である。
【図１１】図１１は、フローリンク作成方法の第五の説明図である。
【図１２】図１２は、フローリンク作成方法の第六の説明図である。
【図１３】図１３は、ＪＣＬ→中間ファイル変換部による処理を説明する流れ図である。
【図１４】図１４は、フローリンク作成方法を説明する第一の流れ図である。
【図１５】図１５は、フローリンク作成方法を説明する第二の流れ図である。
【図１６】図１６は、フローリンク作成方法を説明する第三の流れ図である。
【図１７】図１７は、フローリンク作成方法を説明する第四の流れ図である。
【図１８】図１８は、ジョブネットワーク出力部の出力処理を説明する流れ図である。
【発明を実施するための形態】
【００２３】
本発明を実施するための最良の形態の一つについて、図面を参照して詳細に説明する。図２に、一つの実施の形態におけるジョブネットワーク自動生成方式の全体構成を示す。図２において、ジョブネットワーク自動生成方式１０は、ＪＣＬファイル入力部１１と、ＪＣＬ→中間ファイル変換部１２と、ジョブネットワーク生成部１３と、ジョブネットワーク出力部１４とを有している。ＪＣＬファイル入力部１１は、記憶装置Ａ１から変換対象となるＪＣＬファイルを読み出す。ＪＣＬ→中間ファイル変換部１２は、ＪＣＬファイルを解析し、ＪＣＬファイルを汎用ＵＮＩＸ（登録商標）ＯＳが解釈可能なシェル言語で記述された中間ファイルに変換する。ジョブネットワーク生成部１３は、中間ファイルのＪＣＬ記述を解析して、フローリンクを作成し、更に、当該中間ファイルをジョブ・スクリプトに分割する。ジョブネットワーク出力部１４は、作成されたフローリンクとスクリプトとを、ジョブネットワーク定義ファイルに変換出力する。図２のジョブネットワーク自動生成方式１０は、記憶装置Ａ１からＪＣＬファイル群を入力し、記憶装置Ｂ１へジョブネットワーク定義群を出力する。
【００２４】
図３に、ＪＣＬ→中間ファイル変換部１２の構成図を示す。図３において、ＪＣＬ→中間ファイル変換部１２は、中間ファイル生成部３２と、中間ファイル出力部３４と、変換辞書３６とを有している。中間ファイル生成部３２は、ＪＣＬファイル入力部１１によって記憶装置Ａ１から取り出されたＪＣＬファイルを、中間ファイルに変換する。中間ファイル出力部３４は、生成された中間ファイルを出力する。変換辞書３６は、予め準備されたものであり、中間ファイル生成部３２は、この変換辞書３６を参照しながら、変換処理を行っていく。変換辞書３６には、ＪＣＬからシェルスクリプトへの対応表が格納されている。
【００２５】
図４に、ジョブネットワーク生成部１３の構成図を示す。図４において、ジョブネットワーク生成部１３は、ＪＣＬ解析部４１と、スクリプトファイル分割部４２と、フローリンク作成部４３と、フローリンク診断部４４と、フローリンク最適化部４５とを有している。ＪＣＬ解析部４１は、中間ファイルのＪＣＬ記述を走査し、分析する。スクリプトファイル分割部４２は、ＪＣＬ解析部４１からＪＣＬ記述の実処理行を受け取り、記憶装置Ｂ１のスクリプトファイルに格納する。フローリンク作成部４３は、ＪＣＬ解析部４１からＪＣＬ記述のＪＣＬ命令行を受け取り、その種類に従って、主記憶ＭＥＭ１のフローリンクに、フロー部品を追加していく。フローリンク診断部４４は、フローリンク作成部４３が作成したフローリンクが正しい構造になっているかどうかを診断する。フローリンク最適化部４５は、フローリンクの構造を調整し、フローリンクを最適化する。
【００２６】
図５は、スクリプトファイル分割部４２の機能説明図である。図５において、ＪＣＬ解析部４１は、入力されたＪＣＬ記述を線形に走査し、走査行が、ＪＣＬ命令行（制御行）であるか、それ以外の実処理行であるかを判別する。ＪＣＬ命令行であると判別した場合、ＪＣＬ解析部４１は、そのＪＣＬ命令行をフローリンク作成部４３へ渡す。一方、実処理行であると判別した場合、ＪＣＬ解析部４１は、その実処理行をスクリプトファイル分割部４２へ渡す。
【００２７】
スクリプトファイル分割部４２は、ＪＣＬ命令行以外の実処理が記述されている実処理行を、記憶装置Ｂ１に作成した複数個のスクリプトファイルに分割格納する。各スクリプトファイルは、ＪＣＬ命令行の出現によっていずれかの幹若しくは枝に関連付けられるスクリプトファイルとして、フローリンク作成部４３によって、オープン（ＯＰＥＮ）され、そして、クローズ（ＣＬＯＳＥ）される。
【００２８】
図６は、フローリンク作成部４３の機能説明図である。図示するように、フローリンク作成部４３は、幹管理部５２と、枝管理部５４と、待合管理部５６とを有し、主記憶ＭＥＭ１を使用してフローリンクを作成する。フローリンク作成部４３は、ＪＣＬ解析部４１から、ＪＣＬ命令行を受け取り、受け取ったＪＣＬ命令行を、幹管理部５２、枝管理部５４、待合管理部５６に振り分ける。
【００２９】
フローリンク作成部４３は、ＪＣＬ記述の制御の流れを、以下のように解釈する。
１．￥ＳＵＢＪＯＢ命令と￥ＥＮＤＳＵＢＪＯＢ命令の間の行は「枝」と認識する。
２．１．以外のＪＣＬ命令行、￥ＪＯＢ命令や￥ＥＮＤＪＯＢ命令など、全ての行を「幹」と認識する。
３．￥ＷＡＩＴＳＵＢ命令は、￥ＳＵＢＪＯＢによる枝処理の待合点（収束点）と考える。
４．ＪＣＬは基本となる「幹」処理から０個以上の「枝」処理が派生し、それらが待合によって収束する処理であると考える。
【００３０】
フローリンク作成部４３は、以下の部品を用いて、フローリンクを作成する。
・スタート（ＳＴＡＲＴ）部品
・エンド（ＥＮＤ）部品
・単位ジョブ部品
・並列分岐部品
・イベント送信部品
・イベント受信部品
【００３１】
図７〜図１２を用いて、フローリンク作成部４３によるフローリンク作成方法について説明する。まず、フローリンク作成部４３は、主記憶ＭＥＭ１に展開されるフローリンクに、スタート部品を格納する。次に、ＪＣＬ解析部４１が、ＪＣＬ命令行の￥ＪＯＢ  Ｄａｉｌｙ（￥ＳＴＥＰ  ＪＯＢ１）をフローリンク作成部４３へ送ると、幹管理部５２がフローを更新し、単位ジョブ部品の幹１を追加する。続いて、ＪＣＬ解析部４１が、ＪＣＬ命令行の￥ＳＵＢＪＯＢ  ＳＵＢ１（￥ＳＴＥＰ  ＪＯＢ２）をフローリンク作成部４３へ送ると、枝管理部５４がフローを更新し、並列分岐部品の並列１，枝１を追加する。それから、ＪＣＬ解析部４１が、ＪＣＬ命令行の￥ＪＯＢ３（￥ＳＴＥＰ  ＪＯＢ３）をフローリンク作成部４３へ送ると、幹管理部５４は、現状の単位ジョブ部品の幹１を保持すると共に、待合点に関連付ける新しい単位ジョブ部品として、幹２を生成する。
【００３２】
図７は、フローリンク作成部４３がＪＣＬ命令行の￥ＳＵＢＪＯＢ  ＳＵＢ２（￥ＳＴＥＰ  ＪＯＢ４）を受け取ったときの動作説明図である。図７において、枝管理部５４は、￥ＳＵＢＪＯＢ  ＳＵＢ２を受け取ると、フローを更新するため、並列分岐部品の並列２，枝２を新規に追加しようとする。図示するように、枝管理部５４は、枝を管理しており、並列分岐部品の並列２，枝２を、並列分岐部品の並列１，枝１に並列に配置し、フローを更新する。すなわち、枝管理部５４は、枝となる￥ＳＵＢＪＯＢ命令と￥ＥＮＤＳＵＢＪＯＢ命令までの処理内容を並列実行させるために、リンクフローに並列実行を表す並列分岐部品を追加する。このとき、その分岐パスに次の枝を新規作成し、更にその収束を管理する。また、枝ｎにスクリプトファイルを関連付け、￥ＳＵＢＪＯＢから￥ＥＮＤＳＵＢＪＯＢまでの全ての行を、この枝ｎに関連付けて格納する。
【００３３】
幹部分は、幹管理部５２が管理する。幹管理部５２は、￥ＳＵＢＪＯＢ命令若しくは￥ＷＡＩＴＳＵＢ命令が発生するまで、全ての実処理行を同一のスクリプトファイルに記録するように、スクリプトファイルをオープンし、また、クローズする。このとき、スクリプトファイル分割部４２は、それらの全ての実処理行を、その幹に関連付けられた同一のスクリプトファイルに記録する。
【００３４】
図８は、フローリンク作成部４３がＪＣＬ命令行の￥ＷＡＩＴＳＵＢを受け取ったときの動作説明図である。幹管理部５２は、￥ＷＡＩＴＳＵＢを受け取る前の段階で、既に、待合点に関連付ける幹２を生成している。図示するように、フローリンク作成部４３が￥ＷＡＩＴＳＵＢを受け取ると、待合管理部５６が、最新の幹２の後に待合部品（フォーカス（ＦＯＣＵＳ）部品ともいう。）の待合１を追加する。また、幹管理部５２は、幹１に関連付けられるスクリプトファイルをクローズし、幹２に関連付けられるスクリプトファイルをオープンする。
【００３５】
図９〜図１１は、枝の収束方法について説明する図である。待合部品の待合１が追加されると、フローリンク作成部４３は、フローリンクの枝を収束する。図９に示すように、枝管理部５４は、待合管理部５６に依頼して、￥ＷＡＩＴＳＵＢ行の引数として記載されている収束すべき枝を検索してもらう。そして、まず、枝１と待合１とを結合する。また、幹管理部５２は、並列２の後ろに、幹２を結合する。その結果、フローリンクは、図１０に示すように更新される。
【００３６】
続いて、枝管理部５４は、枝２の収束を試みる。待合管理部５６は、新規に待合部品の待合２を生成し、待合１の後ろに、この待合２を結合する。枝管理部５４は、枝２と待合２とを結合する。このようにして、￥ＷＡＩＴＳＵＢの読み込みに関する処理が終了する。ＪＣＬ解析部４１が更に走査を進めると、フローリンク作成部４３は、更に単位ジョブ部品の幹３と、エンド部品とを結合する。その結果、フローリンクは、図１１に示すように更新される。
【００３７】
ＪＣＬ記述の走査が完了すると、フローリンク診断部４４が、枝管理部５４を用いて、枝部品の診断を行う。未収束の枝が存在すれば、その旨を警告する。次に、フローリンク最適化４５が、枝最適化部５８を用い、ジョブ管理ソフトウェアのフロー方式に合わせて、フローリンクを最適化する。枝最適化部５８は、図１１に示すように、並列分岐部品のソートを行い、枝の交差を解消する。図１２は、ジョブネットワーク生成部１３の入出力関係を説明する図である。図示するように、ジョブネットワーク生成部１３は、中間ファイルのＪＣＬ記述を入力し、フローリンクと、スクリプトファイル群とを出力する。
【００３８】
図１３は、ＪＣＬ→中間ファイル変換部１２の処理を説明する流れ図である。図１３において、ＪＣＬ→中間ファイル変換部１２は、ＪＣＬファイルをオープンし（ステップ２１−１）、ＪＣＬ記述を一行ずつ読み込む（ステップ２１−２）。中間ファイル生成部３２は、変換処理をＪＣＬファイルのＥＯＦ（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）まで繰り返す（ステップ２１−３）。ＪＣＬファイルのＥＯＦに達していない間（ステップ２１−３：イエス）、中間ファイル生成部３２は、変換辞書３６を検索し（ステップ２１−４）、読み込んだ行が、変換対象行として、変換辞書３６に載っているか否かを調べる（ステップ２１−５）。変換対象行であれば、変換を行い、変換辞書３６の検索結果を中間ファイルに出力する（ステップ２１−８）。変換対象行で無ければ、読み込んだ行をそのまま出力する（ステップ２１−７）。ＪＣＬファイルのＥＯＦに到達したら（ステップ２１−３：ノー）、中間ファイルをクローズする（ステップ２１−６）。中間ファイル出力部３４は、作成された中間ファイルを変換結果として、ジョブネットワーク生成部１３へ送信する。この変換処理によって、ＪＣＬファイルはシェル言語で記述された中間ファイルに変換される。更に、以後の変換処理に必要なＪＣＬ制御命令行は、コメント行としてそのまま残す。
【００３９】
図１４〜図１７は、ジョブネットワーク生成部１３によるフローリンクの作成方法を説明する流れ図である。本実施の形態におけるジョブネットワーク生成部１３は、以下のＪＣＬ命令行を対象として、フローリンクを生成する。
￥ＪＯＢ  ＪＣＬ記述の開始
￥ＥＮＤＪＯＢ  ＪＣＬ記述の終了
￥ＳＵＢＪＯＢ  並列実行処理記述の開始
￥ＥＮＤＳＵＢＪＯＢ  並列実行処理記述の終了
￥ＷＡＩＴＳＵＢ  指定された￥ＳＵＢＪＯＢの終了待ち合わせ
￥ＲＵＮ  指定されたＪＣＬファイルを起動
【００４０】
図１４に示すようにジョブネットワーク生成部１３において、ＪＣＬ解析部４１は、ＪＣＬ→中間ファイル変換部１２から受け取った中間ファイルをオープンすると（ステップ２２−１）、中間ファイルを一行ずつ読み込む（ステップ２２−２）。ＪＣＬ解析部４１は、中間ファイルの読み込みをＥＯＦまで繰り返す（ステップ２２−３）。中間ファイルのＥＯＦに到達したら（ステップ２２−３：ノー）、中間ファイルの解析を終了し、若しくは、エラーを出力する。
【００４１】
中間ファイルのＥＯＦに到達するまでは（ステップ２２−３：イエス）、読み込んだ行が、実処理行かＪＣＬ命令行であるかを判別する（ステップ２２−４）。実処理行であれば（ステップ２２−４：ノー）、次の行を読み込む。ＪＣＬ命令行であれば（ステップ２２−４：イエス）、ジョブネットワーク・フローをオープンし（ステップ２２−５）、図１５の詳細解析処理に移行する。
【００４２】
図１５の詳細解析処理において、フローリンク作成部４３は、まず、初期化処理として、ベース（ＢＡＳＥ）パスにスタート部品を追加し、その次に単位ジョブ部品を追加し、フローリンクの作成を開始する。更に、記憶装置Ｂ１に、その単位ジョブ部品に関連付けられたスクリプトファイルを新規作成し、オープンする（ステップ２３−１）。スクリプトファイル分割部４２は、対象行がＪＣＬ命令行以外であれば、その行をオープンされているスクリプトファイルに格納する。
【００４３】
ＪＣＬ解析部４１は、中間ファイルを一行ずつ読み込み（ステップ２３−２）、この読み込みをＥＯＦまで繰り返す（ステップ２３−３）。フローリンク作成部４３は、もし、読み込んだ対象行が￥ＳＵＢＪＯＢ行であれば（ステップ２３−４）、ベースパスの単位ジョブ部品をクローズし（ステップ２３−９）、並列分岐部品をベースパスに追加する（ステップ２３−１０）。更に、並列分岐パスに単位ジョブ部品を新規作成する（ステップ２３−１１）。スクリプトファイル分割部４２は、￥ＥＮＤＳＵＢＪＯＢまでの全ての行を、この単位ジョブ部品に関連付けられたスクリプトファイルに格納する。その後、並列分岐パス処理へ移行する（ステップ２３−１２）。
【００４４】
フローリンク作成部４３は、もし、読み込んだ対象行が￥ＷＡＩＴＳＵＢ行であり、かつ、ＪＯＢＮＡＭＥの引数が無ければ（ステップ２３−５）、ベースパスの単位ジョブ部品をクローズする（ステップ２３−１３）。次に、ベースパスにフォーカス（ＦＯＣＵＳ：待合）部品を追加し、￥ＷＡＩＴＳＵＢ行の引数として記載されている収束すべき分岐を検索して、全ての並列分岐部品をこのフォーカス部品で収束させる（ステップ２３−１４）。続いて、ベースパスに次の単位ジョブ部品を新規作成し、オープンする（ステップ２３−１５）。
【００４５】
フローリンク作成部４３は、もし、読み込んだ対象行が￥ＷＡＩＴＳＵＢ行であり、かつ、その引数がＪＯＢＮＡＭＥであれば（ステップ２３−６）、ベースパスの単位ジョブ部品をクローズする（ステップ２３−１６）。次に、ベースパスにフォーカス部品を追加し、￥ＷＡＩＴＳＵＢ行の引数として記載されているＪＯＢＮＡＭＥのパスを検索して、それらの並列分岐部品をこのフォーカス部品で収束させる（ステップ２３−１７）。続いて、ベースパスに次の単位ジョブ部品を新規作成し、オープンする（ステップ２３−１８）。
【００４６】
フローリンク作成部４３は、もし、読み込んだ対象行が￥ＥＮＤＪＯＢ行であれば（ステップ２３−７）、フローリンクの作成を終了し、ジョブネットワーク・フローをクローズする（ステップ２３−１９）。
【００４７】
フローリンク作成部４３は、もし、読み込んだ対象行が￥ＲＵＮ行であり、そのパラメータ値がＨＯＬＤ＝Ｎであれば（ステップ２３−８）、￥ＲＵＮ処理に移行する（ステップ２３−２０）。パラメータ値のＨＯＬＤ＝Ｎは、引数となるＪＯＢＮＡＭＥがＮ回有効化（￥ＡＣＴＩＶＡＴＥ）されるのを待ってから、ＪＯＢＮＡＭＥを実行する（￥ＲＵＮ）ことを意味している。
【００４８】
フローリンク作成部４３は、もし、読み込んだ対象行が￥ＳＵＢＪＯＢ行でもなく、￥ＷＡＩＴＳＵＢ行でもなく、￥ＥＮＤＪＯＢ行でもなく、かつ、そのパラメータ値がＨＯＬＤ＝Ｎである￥ＲＵＮ行でも無い場合には、読み込んだ行は、識別子行ではないと判断する（ステップ２３−２１）。スクリプトファイル分割部４２は、この行をオープンされている単位ジョブ部品に関連付けられたスクリプトファイルに追加する（ステップ２３−２２）。
【００４９】
図１６は、並列分岐パス処理を説明する流れ図である。図１６の並列分岐パス処理において、フローリンク作成部４３は、まず、並列分岐パスに単位ジョブ部品をオープンする（ステップ２４−１）。次に、ＪＣＬ解析部４１は、中間ファイルを一行ずつ読み込み（ステップ２４−２）、この読み込みをＥＯＦまで繰り返す（ステップ２４−３）。フローリンク作成部４３は、読み込んだ対象行が、”￥ＲＵＮ  ＨＯＬＤ＝ＯＮ”又は”￥ＡＣＴＩＶＡＴＥ”のいずれかであるか否かを判定する（ステップ２４−４）。いずれかであれば、￥ＲＵＮ処理へ進む（ステップ２４−５）。どちらでも無ければ、”￥ＥＮＤＳＵＢＪＯＢ”であるか否かを判定する（ステップ２４−６）。”￥ＥＮＤＳＵＢＪＯＢ”であれば、その単位ジョブ部品をクローズし（ステップ２４−７）、当該並列分岐パスをクローズして（ステップ２４−８）、並列分岐パス処理を終了する。”￥ＥＮＤＳＵＢＪＯＢ”でも無ければ、その行は実処理行であるとして（ステップ２４−９）、単位ジョブ部品に関連付けられたスクリプトファイルに当該行を追記する（ステップ２４−１０）。
【００５０】
図１７は、ＲＵＮ処理を説明する流れ図である。図１７において、”￥ＲＵＮ  ＨＯＬＤ＝ＯＮ”である場合、単位ジョブ部品をクローズし（ステップ２５−１）、イベント受信部品をＮ個作成する（ステップ２５−２）。続いて、フローリンクにサブジョブネットワーク”ＪＯＢＮＡＭＥ”を作成し（ステップ２５−３）、次の単位ジョブをオープンする（ステップ２５−４）。一方、”￥ＲＵＮ  ＨＯＬＤ＝ＯＮ”では無い場合、単位ジョブ部品をクローズし（ステップ２５−５）、イベント送信部品を作成する（ステップ２５−６）。続いて、次の単位ジョブ部品をオープンする（ステップ２５−７）。
【００５１】
ＪＣＬ記述の走査が完了すると、待合管理部５６が、ブランチ（ＢＲＡＮＣＨ）部品の走査を行い、未収束のブランチ部品が存在すれば、その旨を警告する。次に、フローリンク最適化部４５がフォーカス部品のインデクス（ｉｎｄｅｘ）に従って、ブランチ部品のソートを行う。
【００５２】
図１８は、ジョブネットワーク出力部１４の出力処理を説明する流れ図である。ジョブネットワーク出力部１４は、図１８の流れ図に従い、フローリンクなどを、ジョブ管理ソフトウェアの種別に応じたジョブネットワーク定義に変換する。図１８において、まず、ジョブネットワーク出力部１４は、フローリンクのリンク構造が正常であるか否かを判定する（ステップ２６−１）。正常で無ければ、エラーを出力する。正常であれば、ジョブネットワークとして描画できる構造、又は、ファイル出力できる構造であるか否かを判定する（ステップ２６−２）。そのような構造であれば、リンク構造をそのままジョブネットワーク・フローとして描画し、又は、ファイル出力する（ステップ２６−３）。そのような構造では無い場合には、修復可能であるか否かを判定し（ステップ２６−４）、修復可能であれば、リンク構造を修正する（ステップ２６−５）。
【００５３】
以上説明したように、本実施の形態によれば、次のような効果が得られる。第１の効果は、メインフレーム→オープンシステムのジョブ環境移行のコストが大幅に削減されることである。その理由は、本実施の形態によりＪＣＬ→ジョブネットワーク自動変換が可能になることによって、手作業によって行われていたジョブ移行の工数やリスクが極小となるためである。
【００５４】
第２の効果は、ジョブ環境移行後の保守性が大きく高まることである。その理由は、本実施の形態により自動生成されるジョブネットワーク・フローは、保守性の高い平易なフローになっており、移行後のジョブ監視やジョブの修正作業などが、ＪＣＬファイルの場合に比べて極めて容易になるためである。
【００５５】
第３の効果は、一般的なジョブ管理ソフトウェアでのジョブ運用の保守性を高めることができることである。その理由は、本実施の形態によるアルゴリズムであって、複雑なフローを平易な形状のフローに変換するアルゴリズムを、一般的なジョブ管理ソフトウェアのフロー最適化に応用することによって、保守性の高いフローへ変換することが可能となるからである。
【符号の説明】
【００５６】
１０  ジョブネットワーク自動生成方式
１１  ＪＣＬファイル入力部
１２  ＪＣＬ→中間ファイル変換部
１３  ジョブネットワーク生成部
１４  ジョブネットワーク出力部
３２  中間ファイル生成部
３４  中間ファイル出力部
３６  変換辞書
４１  ＪＣＬ解析部
４２  スクリプトファイル分割部
４３  フローリンク作成部
４４  フローリンク診断部
４５  フローリンク最適化部
５２  幹管理部
５４  枝管理部
５６  待合管理部
５８  枝最適化部
【図１−１】
2011258248.tif 000003
【図１−２】
2011258248.tif 000004
【図１−３】
2011258248.tif 000005
【図１−４】
2011258248.tif 000006
【図２】
2011258248.tif 000007
【図３】
2011258248.tif 000008
【図４】
2011258248.tif 000009
【図５】
2011258248.tif 000010
【図６】
2011258248.tif 000011
【図７】
2011258248.tif 000012
【図８】
2011258248.tif 000013
【図９】
2011258248.tif 000014
【図１０】
2011258248.tif 000015
【図１１】
2011258248.tif 000016
【図１２】
2011258248.tif 000017
【図１３】
2011258248.tif 000018
【図１４】
2011258248.tif 000019
【図１５】
2011258248.tif 000020
【図１６】
2011258248.tif 000021
【図１７】
2011258248.tif 000022
【図１８】
2011258248.tif 000023