"JCLJobControlLanguageファイルを入力するJCLファイル入力手段と、前記JCLファイルのJCL記述は、JCL実処理行とJCL命令行を含み、前記JCL命令行に基づいて、ジョブの制御フローを示すフローリンクを自動生成するジョブネットワーク生成手段と、前記フローリンクを、ジョブの実行順序の流れ図であるジョブネットワークフローのジョブネットワーク定義に変換出力するジョブネットワーク出力手段とを備え、前記ジョブネットワーク生成手段は、前記JCL記述を走査し、JCL実処理行と、JCL命令行とに振り分けるJCL解析手段と、フローリンク作成手段を備え、前記フローリンク作成手段は、前記JCL命令行を受け取って、前記JCL命令行の中で、並列実行処理命令行と、並列実行処理終了命令行とを受け取り、その間の行を枝として管理する枝管理手段と、前記JCL命令行の中で、前記並列実行処理命令行及び前記並列実行処理終了命令行以外のJCL命令行を受け取り、前記枝以外の行を幹として管理する幹管理手段を備え、前記幹管理手段は、一つの前記幹に、一つの前記幹として管理されるJCL命令行の実行位置を示す単位ジョブ部品幹部品を対応させ、前記幹部品を作成中の前記フローリンクに追加し、前記枝管理手段は、一つの前記枝に、並列部品と枝部品の組を対応させ、前記並列部品と前記枝部品を、作成中の前記フローリンクに追加し、ここで、前記並列部品は、前記枝として管理されるJCL実処理行の処理の開始位置を示し、前記枝部品は、前記枝として管理されるJCL実処理行の実行位置を示すジョブネットワーク自動生成方式。前記フローリンク作成手段は、前記JCL命令行の中で、並列実行処理同期命令行を受け取り、前記枝の収束を、並列実行処理同期命令行の引数として記載されている枝を検索することにより、収束すべき枝を管理する待合管理手段を更に備え、前記待合管理手段は、並列実行処理同期命令行を受け取ると、作成中のフローリンクにおいて、並列実行処理同期命令行に対応する枝部品に、前記枝部品に対応するJCL実処理行の実行終了の待ち合わせを表す待合部品を結合し、フローリンクを更新する請求項1記載のジョブネットワーク自動生成方式。前記ジョブネットワーク生成手段は、フローリンクの前記並列部品に対応する前記待合部品のインデクスを参照して、前記並列部品同士の処理の前後関係をソートし、前記枝部品と前記待合部品との結合によって生じる並列分岐パスの交差を解消するフローリンク最適化手段を更に有する請求項2記載のジョブネットワーク自動生成方式。前記ジョブネットワーク生成手段は、前記JCL実処理行を複数のスクリプトファイルに分割して格納するスクリプトファイル分割手段を更に備える請求項3記載のジョブネットワーク自動生成方式。前記フローリンク作成手段は、前記幹と前記単位ジョブ部品、又は前記枝と前記枝部品を対応させると共に、その単位ジョブ部品又は枝部品に関連付けられたスクリプトファイルをオープンし、前記スクリプトファイル分割手段は、前記単位ジョブ部品又は前記枝部品に対応するJCL実処理行を、前記フローリンク作成手段によってオープンされたスクリプトファイルに格納する請求項4記載のジョブネットワーク自動生成方式。前記フローリンク作成手段は、前記スクリプトファイルをオープンしている状態のときに、前記スクリプトファイル分割手段が、前記スクリプトファイルに対応するJCL実処理行の格納を終了したときは、前記スクリプトファイルをクローズし、別の前記単位ジョブ部品又は前記枝部品がある場合には、前記単位ジョブ部品又は前記枝部品に関連付けられたスクリプトファイルをオープンする請求項5記載のジョブネットワーク自動生成方式。請求項1~6いずれか1項に記載のジョブネットワーク自動生成方式が具備するJCLファイル入力手段と、ジョブネットワーク生成手段と、ジョブネットワーク出力手段としてコンピュータを機能させるためのプログラム。本発明の課題は、メインフレームで使用されるJCL言語で記述されたJCLファイルを、平易な形状のジョブネットワークフローに変換するためのジョブネットワーク自動生成方式を提供することである。本発明の一つ目のアスペクトによるジョブネットワーク自動生成方式は、JCLファイル入力部と、ジョブネットワーク生成部と、ジョブネットワーク出力部とを具備する。JCLファイル入力部は、JCLファイルを入力する。ジョブネットワーク生成部は、JCLファイルのJCL記述に基づいて、フローリンクを自動生成する。ジョブネットワーク出力部は、フローリンクを、ジョブネットワークフローに変換出力する。本発明の二つ目のアスペクトによるプログラムは、コンピュータを、JCLファイル入力手段と、ジョブネットワーク生成手段と、ジョブネットワーク出力手段ととして機能させる。JCLファイル入力手段は、JCLファイルを入力する。ジョブネットワーク生成手段は、JCLファイルのJCL記述に基づいて、フローリンクを自動生成する。ジョブネットワーク出力手段は、フローリンクを、ジョブネットワークフローに変換出力する。本発明によれば、メインフレームで使用されるJCL言語で記述されたJCLファイルを、平易な形状のジョブネットワークフローに変換するためのジョブネットワーク自動生成方式を提供することができる。本発明を実施するための最良の形態の一つについて、図面を参照して詳細に説明する。図2に、一つの実施の形態におけるジョブネットワーク自動生成方式の全体構成を示す。図2において、ジョブネットワーク自動生成方式10は、JCLファイル入力部11と、JCL→中間ファイル変換部12と、ジョブネットワーク生成部13と、ジョブネットワーク出力部14とを有している。JCLファイル入力部11は、記憶装置A1から変換対象となるJCLファイルを読み出す。JCL→中間ファイル変換部12は、JCLファイルを解析し、JCLファイルを汎用UNIX登録商標OSが解釈可能なシェル言語で記述された中間ファイルに変換する。ジョブネットワーク生成部13は、中間ファイルのJCL記述を解析して、フローリンクを作成し、更に、当該中間ファイルをジョブスクリプトに分割する。ジョブネットワーク出力部14は、作成されたフローリンクとスクリプトとを、ジョブネットワーク定義ファイルに変換出力する。図2のジョブネットワーク自動生成方式10は、記憶装置A1からJCLファイル群を入力し、記憶装置B1へジョブネットワーク定義群を出力する。図3に、JCL→中間ファイル変換部12の構成図を示す。図3において、JCL→中間ファイル変換部12は、中間ファイル生成部32と、中間ファイル出力部34と、変換辞書36とを有している。中間ファイル生成部32は、JCLファイル入力部11によって記憶装置A1から取り出されたJCLファイルを、中間ファイルに変換する。中間ファイル出力部34は、生成された中間ファイルを出力する。変換辞書36は、予め準備されたものであり、中間ファイル生成部32は、この変換辞書36を参照しながら、変換処理を行っていく。変換辞書36には、JCLからシェルスクリプトへの対応表が格納されている。図4に、ジョブネットワーク生成部13の構成図を示す。図4において、ジョブネットワーク生成部13は、JCL解析部41と、スクリプトファイル分割部42と、フローリンク作成部43と、フローリンク診断部44と、フローリンク最適化部45とを有している。JCL解析部41は、中間ファイルのJCL記述を走査し、分析する。スクリプトファイル分割部42は、JCL解析部41からJCL記述の実処理行を受け取り、記憶装置B1のスクリプトファイルに格納する。フローリンク作成部43は、JCL解析部41からJCL記述のJCL命令行を受け取り、その種類に従って、主記憶MEM1のフローリンクに、フロー部品を追加していく。フローリンク診断部44は、フローリンク作成部43が作成したフローリンクが正しい構造になっているかどうかを診断する。フローリンク最適化部45は、フローリンクの構造を調整し、フローリンクを最適化する。図5は、スクリプトファイル分割部42の機能説明図である。図5において、JCL解析部41は、入力されたJCL記述を線形に走査し、走査行が、JCL命令行制御行であるか、それ以外の実処理行であるかを判別する。JCL命令行であると判別した場合、JCL解析部41は、そのJCL命令行をフローリンク作成部43へ渡す。一方、実処理行であると判別した場合、JCL解析部41は、その実処理行をスクリプトファイル分割部42へ渡す。スクリプトファイル分割部42は、JCL命令行以外の実処理が記述されている実処理行を、記憶装置B1に作成した複数個のスクリプトファイルに分割格納する。各スクリプトファイルは、JCL命令行の出現によっていずれかの幹若しくは枝に関連付けられるスクリプトファイルとして、フローリンク作成部43によって、オープンOPENされ、そして、クローズCLOSEされる。図6は、フローリンク作成部43の機能説明図である。図示するように、フローリンク作成部43は、幹管理部52と、枝管理部54と、待合管理部56とを有し、主記憶MEM1を使用してフローリンクを作成する。フローリンク作成部43は、JCL解析部41から、JCL命令行を受け取り、受け取ったJCL命令行を、幹管理部52、枝管理部54、待合管理部56に振り分ける。フローリンク作成部43は、JCL記述の制御の流れを、以下のように解釈する。1.SUBJOB命令とENDSUBJOB命令の間の行は枝と認識する。2.1.以外のJCL命令行、JOB命令やENDJOB命令など、全ての行を幹と認識する。3.WAITSUB命令は、SUBJOBによる枝処理の待合点収束点と考える。4.JCLは基本となる幹処理から0個以上の枝処理が派生し、それらが待合によって収束する処理であると考える。フローリンク作成部43は、以下の部品を用いて、フローリンクを作成する。スタートSTART部品エンドEND部品単位ジョブ部品並列分岐部品イベント送信部品イベント受信部品図7~図12を用いて、フローリンク作成部43によるフローリンク作成方法について説明する。まず、フローリンク作成部43は、主記憶MEM1に展開されるフローリンクに、スタート部品を格納する。次に、JCL解析部41が、JCL命令行のJOBDailySTEPJOB1をフローリンク作成部43へ送ると、幹管理部52がフローを更新し、単位ジョブ部品の幹1を追加する。続いて、JCL解析部41が、JCL命令行のSUBJOBSUB1STEPJOB2をフローリンク作成部43へ送ると、枝管理部54がフローを更新し、並列分岐部品の並列1,枝1を追加する。それから、JCL解析部41が、JCL命令行のJOB3STEPJOB3をフローリンク作成部43へ送ると、幹管理部54は、現状の単位ジョブ部品の幹1を保持すると共に、待合点に関連付ける新しい単位ジョブ部品として、幹2を生成する。図7は、フローリンク作成部43がJCL命令行のSUBJOBSUB2STEPJOB4を受け取ったときの動作説明図である。図7において、枝管理部54は、SUBJOBSUB2を受け取ると、フローを更新するため、並列分岐部品の並列2,枝2を新規に追加しようとする。図示するように、枝管理部54は、枝を管理しており、並列分岐部品の並列2,枝2を、並列分岐部品の並列1,枝1に並列に配置し、フローを更新する。すなわち、枝管理部54は、枝となるSUBJOB命令とENDSUBJOB命令までの処理内容を並列実行させるために、リンクフローに並列実行を表す並列分岐部品を追加する。このとき、その分岐パスに次の枝を新規作成し、更にその収束を管理する。また、枝nにスクリプトファイルを関連付け、SUBJOBからENDSUBJOBまでの全ての行を、この枝nに関連付けて格納する。幹部分は、幹管理部52が管理する。幹管理部52は、SUBJOB命令若しくはWAITSUB命令が発生するまで、全ての実処理行を同一のスクリプトファイルに記録するように、スクリプトファイルをオープンし、また、クローズする。このとき、スクリプトファイル分割部42は、それらの全ての実処理行を、その幹に関連付けられた同一のスクリプトファイルに記録する。図8は、フローリンク作成部43がJCL命令行のWAITSUBを受け取ったときの動作説明図である。幹管理部52は、WAITSUBを受け取る前の段階で、既に、待合点に関連付ける幹2を生成している。図示するように、フローリンク作成部43がWAITSUBを受け取ると、待合管理部56が、最新の幹2の後に待合部品フォーカスFOCUS部品ともいう。の待合1を追加する。また、幹管理部52は、幹1に関連付けられるスクリプトファイルをクローズし、幹2に関連付けられるスクリプトファイルをオープンする。図9~図11は、枝の収束方法について説明する図である。待合部品の待合1が追加されると、フローリンク作成部43は、フローリンクの枝を収束する。図9に示すように、枝管理部54は、待合管理部56に依頼して、WAITSUB行の引数として記載されている収束すべき枝を検索してもらう。そして、まず、枝1と待合1とを結合する。また、幹管理部52は、並列2の後ろに、幹2を結合する。その結果、フローリンクは、図10に示すように更新される。続いて、枝管理部54は、枝2の収束を試みる。待合管理部56は、新規に待合部品の待合2を生成し、待合1の後ろに、この待合2を結合する。枝管理部54は、枝2と待合2とを結合する。このようにして、WAITSUBの読み込みに関する処理が終了する。JCL解析部41が更に走査を進めると、フローリンク作成部43は、更に単位ジョブ部品の幹3と、エンド部品とを結合する。その結果、フローリンクは、図11に示すように更新される。JCL記述の走査が完了すると、フローリンク診断部44が、枝管理部54を用いて、枝部品の診断を行う。未収束の枝が存在すれば、その旨を警告する。次に、フローリンク最適化45が、枝最適化部58を用い、ジョブ管理ソフトウェアのフロー方式に合わせて、フローリンクを最適化する。枝最適化部58は、図11に示すように、並列分岐部品のソートを行い、枝の交差を解消する。図12は、ジョブネットワーク生成部13の入出力関係を説明する図である。図示するように、ジョブネットワーク生成部13は、中間ファイルのJCL記述を入力し、フローリンクと、スクリプトファイル群とを出力する。図13は、JCL→中間ファイル変換部12の処理を説明する流れ図である。図13において、JCL→中間ファイル変換部12は、JCLファイルをオープンしステップ21-1、JCL記述を一行ずつ読み込むステップ21-2。中間ファイル生成部32は、変換処理をJCLファイルのEOFEndOfFileまで繰り返すステップ21-3。JCLファイルのEOFに達していない間ステップ21-3:イエス、中間ファイル生成部32は、変換辞書36を検索しステップ21-4、読み込んだ行が、変換対象行として、変換辞書36に載っているか否かを調べるステップ21-5。変換対象行であれば、変換を行い、変換辞書36の検索結果を中間ファイルに出力するステップ21-8。変換対象行で無ければ、読み込んだ行をそのまま出力するステップ21-7。JCLファイルのEOFに到達したらステップ21-3:ノー、中間ファイルをクローズするステップ21-6。中間ファイル出力部34は、作成された中間ファイルを変換結果として、ジョブネットワーク生成部13へ送信する。この変換処理によって、JCLファイルはシェル言語で記述された中間ファイルに変換される。更に、以後の変換処理に必要なJCL制御命令行は、コメント行としてそのまま残す。図14~図17は、ジョブネットワーク生成部13によるフローリンクの作成方法を説明する流れ図である。本実施の形態におけるジョブネットワーク生成部13は、以下のJCL命令行を対象として、フローリンクを生成する。JOBJCL記述の開始ENDJOBJCL記述の終了SUBJOB並列実行処理記述の開始ENDSUBJOB並列実行処理記述の終了WAITSUB指定されたSUBJOBの終了待ち合わせRUN指定されたJCLファイルを起動図14に示すようにジョブネットワーク生成部13において、JCL解析部41は、JCL→中間ファイル変換部12から受け取った中間ファイルをオープンするとステップ22-1、中間ファイルを一行ずつ読み込むステップ22-2。JCL解析部41は、中間ファイルの読み込みをEOFまで繰り返すステップ22-3。中間ファイルのEOFに到達したらステップ22-3:ノー、中間ファイルの解析を終了し、若しくは、エラーを出力する。中間ファイルのEOFに到達するまではステップ22-3:イエス、読み込んだ行が、実処理行かJCL命令行であるかを判別するステップ22-4。実処理行であればステップ22-4:ノー、次の行を読み込む。JCL命令行であればステップ22-4:イエス、ジョブネットワークフローをオープンしステップ22-5、図15の詳細解析処理に移行する。図15の詳細解析処理において、フローリンク作成部43は、まず、初期化処理として、ベースBASEパスにスタート部品を追加し、その次に単位ジョブ部品を追加し、フローリンクの作成を開始する。更に、記憶装置B1に、その単位ジョブ部品に関連付けられたスクリプトファイルを新規作成し、オープンするステップ23-1。スクリプトファイル分割部42は、対象行がJCL命令行以外であれば、その行をオープンされているスクリプトファイルに格納する。JCL解析部41は、中間ファイルを一行ずつ読み込みステップ23-2、この読み込みをEOFまで繰り返すステップ23-3。フローリンク作成部43は、もし、読み込んだ対象行がSUBJOB行であればステップ23-4、ベースパスの単位ジョブ部品をクローズしステップ23-9、並列分岐部品をベースパスに追加するステップ23-10。更に、並列分岐パスに単位ジョブ部品を新規作成するステップ23-11。スクリプトファイル分割部42は、ENDSUBJOBまでの全ての行を、この単位ジョブ部品に関連付けられたスクリプトファイルに格納する。その後、並列分岐パス処理へ移行するステップ23-12。フローリンク作成部43は、もし、読み込んだ対象行がWAITSUB行であり、かつ、JOBNAMEの引数が無ければステップ23-5、ベースパスの単位ジョブ部品をクローズするステップ23-13。次に、ベースパスにフォーカスFOCUS:待合部品を追加し、WAITSUB行の引数として記載されている収束すべき分岐を検索して、全ての並列分岐部品をこのフォーカス部品で収束させるステップ23-14。続いて、ベースパスに次の単位ジョブ部品を新規作成し、オープンするステップ23-15。フローリンク作成部43は、もし、読み込んだ対象行がWAITSUB行であり、かつ、その引数がJOBNAMEであればステップ23-6、ベースパスの単位ジョブ部品をクローズするステップ23-16。次に、ベースパスにフォーカス部品を追加し、WAITSUB行の引数として記載されているJOBNAMEのパスを検索して、それらの並列分岐部品をこのフォーカス部品で収束させるステップ23-17。続いて、ベースパスに次の単位ジョブ部品を新規作成し、オープンするステップ23-18。フローリンク作成部43は、もし、読み込んだ対象行がENDJOB行であればステップ23-7、フローリンクの作成を終了し、ジョブネットワークフローをクローズするステップ23-19。フローリンク作成部43は、もし、読み込んだ対象行がRUN行であり、そのパラメータ値がHOLD=Nであればステップ23-8、RUN処理に移行するステップ23-20。パラメータ値のHOLD=Nは、引数となるJOBNAMEがN回有効化ACTIVATEされるのを待ってから、JOBNAMEを実行するRUNことを意味している。フローリンク作成部43は、もし、読み込んだ対象行がSUBJOB行でもなく、WAITSUB行でもなく、ENDJOB行でもなく、かつ、そのパラメータ値がHOLD=NであるRUN行でも無い場合には、読み込んだ行は、識別子行ではないと判断するステップ23-21。スクリプトファイル分割部42は、この行をオープンされている単位ジョブ部品に関連付けられたスクリプトファイルに追加するステップ23-22。図16は、並列分岐パス処理を説明する流れ図である。図16の並列分岐パス処理において、フローリンク作成部43は、まず、並列分岐パスに単位ジョブ部品をオープンするステップ24-1。次に、JCL解析部41は、中間ファイルを一行ずつ読み込みステップ24-2、この読み込みをEOFまで繰り返すステップ24-3。フローリンク作成部43は、読み込んだ対象行が、RUNHOLD=ON又はACTIVATEのいずれかであるか否かを判定するステップ24-4。いずれかであれば、RUN処理へ進むステップ24-5。どちらでも無ければ、ENDSUBJOBであるか否かを判定するステップ24-6。ENDSUBJOBであれば、その単位ジョブ部品をクローズしステップ24-7、当該並列分岐パスをクローズしてステップ24-8、並列分岐パス処理を終了する。ENDSUBJOBでも無ければ、その行は実処理行であるとしてステップ24-9、単位ジョブ部品に関連付けられたスクリプトファイルに当該行を追記するステップ24-10。図17は、RUN処理を説明する流れ図である。図17において、RUNHOLD=ONである場合、単位ジョブ部品をクローズしステップ25-1、イベント受信部品をN個作成するステップ25-2。続いて、フローリンクにサブジョブネットワークJOBNAMEを作成しステップ25-3、次の単位ジョブをオープンするステップ25-4。一方、RUNHOLD=ONでは無い場合、単位ジョブ部品をクローズしステップ25-5、イベント送信部品を作成するステップ25-6。続いて、次の単位ジョブ部品をオープンするステップ25-7。JCL記述の走査が完了すると、待合管理部56が、ブランチBRANCH部品の走査を行い、未収束のブランチ部品が存在すれば、その旨を警告する。次に、フローリンク最適化部45がフォーカス部品のインデクスindexに従って、ブランチ部品のソートを行う。図18は、ジョブネットワーク出力部14の出力処理を説明する流れ図である。ジョブネットワーク出力部14は、図18の流れ図に従い、フローリンクなどを、ジョブ管理ソフトウェアの種別に応じたジョブネットワーク定義に変換する。図18において、まず、ジョブネットワーク出力部14は、フローリンクのリンク構造が正常であるか否かを判定するステップ26-1。正常で無ければ、エラーを出力する。正常であれば、ジョブネットワークとして描画できる構造、又は、ファイル出力できる構造であるか否かを判定するステップ26-2。そのような構造であれば、リンク構造をそのままジョブネットワークフローとして描画し、又は、ファイル出力するステップ26-3。そのような構造では無い場合には、修復可能であるか否かを判定しステップ26-4、修復可能であれば、リンク構造を修正するステップ26-5。以上説明したように、本実施の形態によれば、次のような効果が得られる。第1の効果は、メインフレーム→オープンシステムのジョブ環境移行のコストが大幅に削減されることである。その理由は、本実施の形態によりJCL→ジョブネットワーク自動変換が可能になることによって、手作業によって行われていたジョブ移行の工数やリスクが極小となるためである。第2の効果は、ジョブ環境移行後の保守性が大きく高まることである。その理由は、本実施の形態により自動生成されるジョブネットワークフローは、保守性の高い平易なフローになっており、移行後のジョブ監視やジョブの修正作業などが、JCLファイルの場合に比べて極めて容易になるためである。第3の効果は、一般的なジョブ管理ソフトウェアでのジョブ運用の保守性を高めることができることである。その理由は、本実施の形態によるアルゴリズムであって、複雑なフローを平易な形状のフローに変換するアルゴリズムを、一般的なジョブ管理ソフトウェアのフロー最適化に応用することによって、保守性の高いフローへ変換することが可能となるからである。"