(57)【要約】【課題】ＪＣＬファイルから効率的にかつ保守性の高いジョブネットワークを作成する。【解決手段】一の言語で記述されたファイルを他の言語で解釈可能なファイルに変換するファイル変換装置において、入力したファイルの記述内容を１行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理するファイル読取手段と、前記ファイル読取手段が管理するファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する構文木作成手段と、最適化ルールに従って前記構文木の木構造をフロー図として最適化する構文木最適化手段と、前記構文木最適化手段が最適化したフロー図の制御子を識別子として、前記入力されたファイルを分割するファイル分割手段とを有する。【選択図】図１
2010287213.tif 000002
【特許請求の範囲】
【請求項１】
一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換装置において、
入力したファイルの記述内容を１行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理するファイル読取手段と、
前記ファイル読取手段が管理するファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する構文木作成手段と、
最適化ルールに従って前記構文木の木構造をフロー図として最適化する構文木最適化手段と、
前記構文木最適化手段が最適化したフロー図の制御子を識別子として、前記入力されたファイルを分割するファイル分割手段とを有することを特徴とするファイル変換装置。
【請求項２】
さらに、前記ファイル分割手段が分割したファイルに記述されている実処理記述の言語をコマンドインタプリタ言語に変換する実処理行変換部を有する請求項１に記載のファイル変換装置。
【請求項３】
さらに、前記ファイル分割手段は、分割したファイルに加えて、前記構文木の木構造を最適化したフロー図を出力するものである請求項１に記載のファイル変換装置。
【請求項４】
前記構文木最適化手段は、始点と終点とが固定されたネットワーク形式のフロー図として前記構文木を最適化するものである請求項１に記載のファイル変換装置。
【請求項５】
一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換方法において、
入力したファイルの記述内容を１行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理し、
前記管理されているファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換し、
最適化ルールに従って前記構文木の木構造をフロー図として最適化し、
前記フロー図の制御子を識別子として、前記入力されたファイルを分割することを特徴とするファイル変換方法。
【請求項６】
さらに、前記分割したファイルに記述されている実処理記述の言語をコマンドインタプリタ言語に変換する請求項５に記載のファイル変換方法。
【請求項７】
さらに、前記分割したファイルに加えて、前記構文木こ木構造を最適化したフロー図を出力する請求項５に記載のファイル変換方法。
【請求項８】
始点と終点とが固定されたネットワーク形式のフロー図として前記構文木を最適化する請求項５に記載のファイル変換方法。
【請求項９】
一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換装置を構成するコンピュータに、
入力したファイルの記述内容を１行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理する機能と、
前記管理されているファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する機能と、
最適化ルールに従って前記構文木の木構造をフロー図として最適化する機能と、
前記フロー図の制御子を識別子として、前記入力されたファイルを分割する機能とを実行させることを特徴とするファイル変換プログラム。
【請求項１０】
さらに、前記分割したファイルに記述されている実処理記述の言語をコマンドインタプリタ言語に変換する機能と前記コンピュータに実行させる請求項９に記載のファイル変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのメインフレームからオープンシステムへの移行に関し、特にメインフレーム用のＪＣＬで記述されたジョブをオープンシステム用のジョブネットワークに変換する技術に関する。
【背景技術】
【０００２】
近年、多くの企業は、業務に使用するコンピュータシステムの保守および運用に必要な費用であるＴＣＯ（Total Cost of Ownership）を削減するため、それまでのメインフレームから、ＵＮＩＸ（登録商標）やウィンドウズ（登録商標）などの汎用ＯＳを使用したオープンシステムへの移行を活発に行っている。その際、それまでメインフレーム上で運用されていた、ジョブ制御言語（Job Control Language、以後ＪＣＬという）で記述されたジョブを、オープンシステム用のジョブネットワーク（フロー図および分割済ＪＣＬファイル）に変換し、そこからスクリプトファイルに変換することが必要となる。
【０００３】
図２２は、ジョブネットワークの例を示す説明図である。図２２（ａ）〜（ｄ）は、いずれも同一の順序関係を表すフロー図である。一般的なジョブ管理ツールでは、特に記述上の制約を設けず、ユーザに自由な記述を行わせる方式が多い。しかしながら、この方式だと、同一の順序関係を表現するフロー図であっても、作業者の手癖などによって図２２（ｂ）〜（ｄ）に示したように異なるフロー図となる場合が多い。このように、同じ順序関係を表すものでも異なる様々な形状のフロー図が混在することは、ジョブ移行時のテストや、移行後の保守性などにおける非効率の原因となる。
【０００４】
図２２（ａ）に示すフロー図では、このような問題の解決のため、始点と終点をあらかじめ固定して、フロー図の線の引かれ方を汎用ジョブ管理ソフトウェアの側で制限している。このようにすれば、誰がフロー図を作成しても同じような形式のフロー図になり、保守性の高い平易なジョブネットワーク・フローを作成できる。メインフレームからオープンシステムへ業務システムを移行する際には、このようなジョブ管理ソフトを利用して、ＪＣＬファイルをジョブネットワーク（フロー図および分割済ＪＣＬファイル）に変換し、そこからスクリプトファイルに変換する。
【０００５】
これに関連した技術として、次のような特許文献がある。特許文献１には、プログラムを構文解析して構文木を生成し、データ利用状況にデータ名ごとの宣言・代入などを関連づけるという技術が記載されている。特許文献２には、プログラムを構文解析して分岐を含まない一連のステートメントからなるブロックを抽出し、分岐・合流の部分と合わせて階層的表現とするという技術が記載されている。特許文献３には、ＪＣＬで記述されたプログラムを、行単位でソートしてから他形式プログラムに変換するという技術が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０７−２４８９１５号公報
【特許文献２】特開平０８−０１６３７８号公報
【特許文献３】特開平１１−０２４９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＪＣＬには「￥ＳＵＢＪＯＢ…￥ＥＮＤＳＵＢＪＯＢ」文のような並列実行命令や、「￥ＷＨＥＮ…ＪＵＭＰ」文（ｉｆ…ｇｏｔｏ文）のような順序制御命令が存在する。作成者の感性によっては、これらが多用されている場合がある。図２３は、このような並列実行命令や順序制御命令が多用されたＪＣＬファイルの例を示す説明図である。
【０００８】
図２３に示したように、ＪＣＬファイルに並列実行命令もしくは順序制御命令が多用されていると、行番号から正確な順序関係を把握することが困難となるので、自動変換ツールなどを利用して機械的にフロー図に変換することは困難であるか、もしくは可能であっても保守作業性の低い複雑なジョブネットワークが作成されてしまうことになる。
【０００９】
このため、このようなＪＣＬファイルからジョブネットワークへの変換は、主に人手によって行われていた。これには多大な労力を要し、また出来上がったジョブネットワークの品質は作業者のスキルに依存することとなり、さらにヒューマン・エラーによる品質低下と、そのリカバリ作業に伴うコストの増大も発生しやすくなる。
【００１０】
ＪＣＬファイルが並列実行命令もしくは順序制御命令を含んでいなければ、このＪＣＬファイルからジョブネットワークへの変換は容易に行うことができる。従って、ＪＣＬファイルからこれらの並列実行命令および順序制御命令を検出してフロー図を作成し、並列実行命令もしくは順序制御命令を含まないようにＪＣＬファイルを分割することができれば、上記の問題は解決できる。しかしながら、上記の特許文献１〜３には、そのようにＪＣＬファイルを分割する技術は記載されていないので、この問題は解決できない。
【００１１】
本発明の目的は、ＪＣＬファイルからジョブネットワークへの変換を効率的に実施して、保守作業性の高い平易なジョブネットワークを作成することを可能とするファイル変換装置、ファイル変換方法およびファイル変換プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明に係るファイル変換装置は、一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換装置において、入力したファイルの記述内容を１行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理するファイル読取手段と、前記ファイル読取手段が管理するファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する構文木作成手段と、最適化ルールに従って前記構文木の木構造をフロー図として最適化する構文木最適化手段と、前記構文木最適化手段が最適化したフロー図の制御子を識別子として、前記入力されたファイルを分割するファイル分割手段とを有することを特徴とする。
【００１３】
上記目的を達成するため、本発明に係るファイル変換方法は、一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換方法において、入力したファイルの記述内容を１行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理し、前記管理されているファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換し、最適化ルールに従って前記構文木をフロー図として最適化し、前記フロー図の制御子を識別子として、前記入力されたファイルを分割することを特徴とする。
【００１４】
上記目的を達成するため、本発明に係るファイル変換プログラムは、一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換装置を構成するコンピュータに、入力したファイルの記述内容を１行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理する機能と、前記管理されているファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する機能と、最適化ルールに従って前記構文木の木構造をフロー図として最適化する機能と、前記フロー図の制御子を識別子として、前記入力されたファイルを分割する機能とを実行させることを特徴とする。
【発明の効果】
【００１５】
本発明は、上述したように並列実行命令および順序制御命令を含まないようにＪＣＬファイルを分割してからジョブネットワーク形式のファイル構造へ変換するように構成したので、この変換を効率的に実施することができる。これによって、保守作業性の高い平易なジョブネットワーク形式のファイル構造を作成することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係るジョブネットワーク・フロー変換装置の構成を示す説明図である。
【図２】図１で示したジョブネットワーク・フロー変換プログラムの処理の流れを示す説明図である。図２（ａ）は図１に示したコンピュータ資源との対応を表し、図２（ｂ）はこれらの各部による作業および作業中の各ファイルの流れをより観念的に示す。
【図３】図２で示したジョブネットワーク作成部の処理内容をさらに詳しく示す説明図である。
【図４】図２で示した実処理行変換部の処理内容をさらに詳しく示す説明図である。
【図５】ＪＣＬファイル読取手段の構成及び動作を説明する図である。
【図６】構文木が木構造であることを示すデータ構造図である。
【図７】ＲＡＭに記録されるインデックス付のＪＣＬファイルを示すデータ構造図である。
【図８】構文木が木構造であることを示すデータ構造図である。
【図９】図３に示した構文木作成手段が、図５に示したインデックス付きＪＣＬを構文木に変換する処理を示す説明図である。
【図１０】図９に示した構文木作成手段の処理によって生成された構文木を示す説明図である。
【図１１】図３に示した構文木作成手段の処理内容を示すフローチャートである。
【図１２】図３に示した構文木最適化手段の処理内容を示すフローチャートである。
【図１３】図３で示した構文木最適化手段が、図９に示した構文木に対して行う処理の一例で、構文木最適化手段がｉｆノードにポインタを移動した状態を示す説明図である。
【図１４】図３で示した構文木最適化手段が、図９に示した構文木に対して行う処理の一例で、構文木最適化手段がｇｏｔｏ（０１６）とノード０１６を結合し、ｉｆノードとノード０１６との間の全てのノードをロックした状態を示す説明図である。
【図１５】図３で示した構文木最適化手段が、図９に示した構文木に対して行う処理の一例で、構文木最適化手段がｐａｒａｌｌｅｌノードにポインタを移動した状態を示す説明図である。
【図１６】図３で示した構文木最適化手段が、図９に示した構文木に対して行う処理の一例で、構文木最適化手段がｉｆノードにポインタを移動した状態を示す説明図である。
【図１７】図３で示した構文木最適化手段が、図９に示した構文木に対して行う処理の一例で、構文木最適化手段がｇｏｔｏ（０１４）をノード０１４〜ＥＮＤという処理を行う形に変換した状態を示す説明図である。
【図１８】図３で示した構文木最適化手段が、図９に示した構文木に対して行う処理の一例で、構文木最適化手段４３が全ての葉ＥＮＤを結合した状態を示す説明図である。
【図１９】構文木最適化手段が最適化済み構文木から出力したフロー図を示す説明図である。
【図２０】図１９に示したフロー図を制御子で分割した状態を示す説明図である。
【図２１】ＪＣＬファイル分割手段がフロー図を変換して生成した、分割済ＪＣＬファイルの単位にジョブをまとめた最適化フロー図を示す説明図である。
【図２２】ジョブネットワークの例を示す説明図である。
【図２３】並列実行命令や順序制御命令が多用されたＪＣＬファイルの例を示す説明図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態を図に基づいて詳細に説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るファイル変換装置であるジョブネットワーク・フロー変換装置１０は、入力された第１のファイル（ＪＣＬファイル２１）を第２のファイル（スクリプトファイル２４）に変換するファイル変換装置である。この装置は図１に示す様に、第１のファイルを入力するファイル入力部（ＪＣＬファイル入力部３１）と、入力された第１のファイルからフロー図を作成し、このフロー図に応じた単位で第１のファイルを分割して分割済ファイルを生成するジョブネットワーク作成部３２と、フロー図および分割済ファイルから第２のファイルを生成する実処理行変換部３３とを備える。
ジョブネットワーク作成部３２は図３に示す様に、第１のファイルから構文木１０２を作成する構文木作成手段４２と、作成された構文木１０２を最適化する構文木最適化手段４３と、この最適化された構文木からフロー図２２を作成し、フロー図に基づいて分割済ファイル（分割済ＪＣＬファイル２３）を生成するファイル分割手段（ＪＣＬファイル分割手段４４）とを備える。ここで構文木最適化手段４３は、構文木の終点から構文木の並列実行命令もしくは順序制御命令に係る分岐点を検索し、分岐点で分岐されているノードが結合可能か否かを判断して、結合可能であれば該ノードを結合することによって、構文木の最適化を行う。
【００１８】
なお、前記ファイル入力部（ＪＣＬファイル入力部３１），前記ジョブネットワーク作成部３２，実処理行変換部３３は、ＣＰＵ１１にジョブネットワーク・フロー変換プログラム３０を実行させることによりソフトウェア上に構築するものである。また、前記ジョブネットワーク作成部３２が備えている、構文木作成手段４２，構文木最適化手段４３及びファイル分割手段（ＪＣＬファイル分割手段４４）も同様に、ＣＰＵ１１にジョブネットワーク・フロー変換プログラム３０を実行させることによりソフトウェア上に構築するものである。また、前記ジョブネットワーク・フロー変換プログラム３０は記録媒体に記録されて商取引の対象となる。
【００１９】
ここで、第１のファイルはＪＣＬ（Job Control Language）によって記述されたＪＣＬファイル２１であり、第２のファイルがコマンドインタプリタ言語で記述されたスクリプトファイル２４である。
【００２０】
ジョブネットワーク作成部３２は、第１のファイルを読み取ってこれにインデックスを付加するファイル読取手段４１を有する。そして、構文木作成手段４２は、インデックスを付加された第１のファイル１０１を先頭から走査して構文木を作成する。
【００２１】
以上の構成を備えることにより、ジョブネットワーク・フロー変換装置１０は並列実行命令および順序制御命令を含まないようにＪＣＬファイルを分割してから、これをジョブネットワーク形式のファイル構造へ変換することができる。
以下、これをより詳細に説明する。
【００２２】
図１は、本実施形態に係るファイル変換装置を含めたジョブネットワーク・フロー変換装置１０を示す構成図である。ジョブネットワーク・フロー変換装置１０は、一般的なコンピュータ装置であり、コンピュータプログラムを実行する主体であるＣＰＵ（Central Processing Unit）１１と、ＣＰＵ１１が実行するコンピュータプログラムおよびそれらのプログラムが処理する後述の各種ファイルが記憶されているＨＤＤ（Hard Disk Drive）１２と、ＣＰＵ１１がＨＤＤ１２から読み込んだプログラムが一時的に記憶されるＲＡＭ（Random Access Memory）１３とを備える。
【００２３】
ＣＰＵ１１は、ジョブネットワーク・フロー変換プログラム３０をコンピュータプログラムとして実行する。前記ジョブネットワーク・フロー変換プログラム３０は、ＨＤＤ１２に記憶されたＪＣＬファイル２１を読み出して、これをフロー図２２および汎用ＯＳが解釈可能なコマンドインタプリタ言語で記述されたスクリプトファイル２４に変換してＨＤＤ１２に出力する処理を前記ＣＰＵ１１に実行させるプログラムである。
【００２４】
図２（ａ）は図１に示したコンピュータ資源との対応を表し、図２（ｂ）はこれらの各部による作業および作業中の各ファイルの流れをより観念的に示した図である。
【００２５】
本実施形態に係るファイル変換装置は、ジョブネットワーク・フロー変換装置１０のうち、ジョブネットワーク作成部３２と実処理行変換部３３とを含む構成のものであり、特にジョブネットワーク作成部３２が重要な構成として構築してある。本実施形態に係るファイル変換装置に含まれるジョブネットワーク作成部３２と実処理行変換部３３との具体的な構成については後述する。
【００２６】
ＣＰＵ１１にジョブネットワーク・フロー変換プログラム３０を実行させることにより、ソフトウェア上に、ＪＣＬファイル入力部３１と、ジョブネットワーク作成部３２と、実処理行変換部３３と、ジョブネットワーク出力部３４とを構築する。
【００２７】
ＪＣＬファイル入力部３１は、ＨＤＤ１２からＪＣＬファイル２１を読み出し、そのＪＣＬファイル２１をジョブネットワーク作成部３２に入力する。ジョブネットワーク作成部３２は、ＪＣＬファイル入力部３１から受け取ったＪＣＬファイル２１のＪＣＬ記述を解析して、その解析に基づいてフロー図２２を作成し、このフロー図２２に応じた単位でＪＣＬファイル２１を分割して分割済ＪＣＬファイル２３を生成する。
【００２８】
実処理行変換部３３は、ジョブネットワーク作成部３２が生成した分割ファイル２３に記述されている実処理記述をコマンドインタプリタ言語の記述内容に変換して、前記分割ファイル２３をスクリプトファイル２４に変換するものである。前記分割ファイル２３がＪＣＬファイルである場合、実処理行変換部３３は、ジョブネットワーク作成部３２が生成した分割済ＪＣＬファイル２３にＪＣＬ言語で記述された実処理記述を、コマンドインタプリタ言語で記述されたスクリプトファイル２４に変換する。
ジョブネットワーク出力部３４は、ここまでで生成されたファイル構造（ジョブネットワーク形式のフロー図２２およびスクリプトファイル２４）をＨＤＤ１２に出力して記憶させる。なお、前記フロー図２２には、スクリプトファイル２４が添付されており、前記フロー図２２には、ＳＴＡＲＴ部品、ＥＮＤ部品、単位ジョブ部品、並列分岐部品、コンティニュー部品、ジョブ待合部品などのような各部品が含まれている。
【００２９】
図３は、本実施形態に係るファイル変換装置の主要部を構成する図２に示すジョブネットワーク作成部３２を具体的に示す構成図である。本実施形態に係るファイル変換装置の主要部を構成する図２に示すジョブネットワーク作成部３２は図３に示す様に、ファイル読取手段４１と、構文木作成手段４２と、構文木最適化手段４３と、ファイル分割手段４４とを有している。
なお、前記ジョブネットワーク作成部３２が備えている、ＪＣＬファイル読取手段４１，構文木作成手段４２，構文木最適化手段４３及びＪＣＬファイル分割手段４４は、ＣＰＵ１１がジョブネットワーク・フロー変換プログラム３０を実行することによりソフトウェア上に構築される。
【００３０】
ファイル読取手段４１は、入力したファイルの記述内容を１行ずつ読み込み、その読み込んだ記述内容に行毎にインデックス１０１ａを付して前記記述内容を管理するものである。具体的に説明する。
図５に示す様に、ファイル２１は、その記述内容がジョブ制御言語（ＪＣＬ）によって記述されたものであり、ファイル読取手段４１は、以下に示す入力したファイルの記述内容を行単位で読取処理を行う。
前記ＪＣＬ命令行には、次のものが含まれている。
￥ＪＯＢ  ；これはＪＣＬ記述の開始を意味する。
￥ＥＮＤＪＯＢ  ；これはＪＣＬ記述の終了を意味する。
￥ＳＵＢＪＯＢ  ；これは並列実行処理の記述の開始を意味する。
￥ＥＮＤＳＵＢＪＯＢ  ；これは並列実行処理の記述の終了を意味する。
￥ＷＡＩＴＳＵＢ  ；これは指定された￥ＳＵＢＪＯＢの終了待ち合わせを意味する。
￥ＷＨＥＮ＿＿ＪＵＭＰ  ；これは指定された条件のとき、指定された行へジャンプ（ＪＵＭＰ）することを意味する。
￥ＷＨＥＮ＿＿ＢＡＣＫ  ；これは指定された条件のとき、指定された行へ戻る（ＢＡＣＫ）ことを意味する。
【００３１】
ファイル読取手段４１は図５に示す様に、入力したＪＣＬファイル２１の記述内容を１行ずつ読込み、その読み込んだ記述内容に行毎にインデックス１０１ａを付して前記記述内容をインデックス付きファイル１０１ａとして管理する。ファイル読取手段４１は、インデックス１０１ａを付した記述内容を管理する際、インデックス１０１ａを行単位で読み込んだ記述内容に付したＪＣＬファイル１０１をＲＡＭ１３に記憶させて管理する。
図５の例では、ファイル読取手段４１は、入力したＪＣＬファイル２１から行単位で読み込んだ第１行目の記述内容である「ＳＴ００１：￥ＪＯＢ」にインデックス１０１ａである「００１」を付し、第２行目の記述内容である「実処理１」にインデックス１０１ａである「００２」を付し、同様に第３行目の記述内容である「￥ＷＨＥＮ＿＿ＪＵＭＰ」から最後の行の記述内容である「ＳＴ００９：￥ＥＮＤＪＯＢ」にそれぞれ対応するインデックス１０１ａである「００３」〜「０１８」をそれぞれ付して、ＪＣＬファイル２１の記述内容をインデックス付きファイル１０１として管理している。図５に示すＪＣＬファイル１０１は、ファイル読取手段４１が行単位で読み取った記述内容にインデックス１０１ａを付して記述内容を管理する際のファイルの記述内容を示している。
図７は、ファイル読取手段４１が処理した図５に示すインデックス付きファイル１０１のＲＡＭ１３上でのデータ構造を示すものである。インデックス付きファイル１０１は図７に示す様に、インデックス１０１ａの「００１」〜「０１８」と、行単位で読み込まれた記述内容である文字列データ１０１ｂとがそれぞれ対応した状態でＲＡＭ１３上に記憶されている。また、図７に示す様に、ＲＡＭ１３上では、記述内容の文字列データ１０１ｂにそれぞれ付されたインデックス１０１ａである「００１」〜「０１８」は線形に連繋して記憶されている。
【００３２】
前記構文木作成手段４２は図９に示す様に、前記ファイル読取手段４１が管理するファイル１０１のインデックス１０１ａを線形に走査することにより、前記ファイルの各行の記述内容（文字列データ１０１ｂ）を木構造の構文木１０２に変換するものである。ここに、前記構文木作成手段４２がファイル１０１のインデックス１０１ａを線形に走査するとは、例えば図７に示すファイル１０１のインデックス１０１ａの「００１」を走査開始のインデックスとして順番に最後のインデックス１０１ａの「００１８」まで順番に走査することを意味している。
前記構文木作成手段４２は、￥ＳＵＢＪＯＢが並列実行処理記述の開始を意味しているため、￥ＳＵＢＪＯＢに対応させて「ｐａｒａｌｌｅｌ」と表記し、￥ＷＨＥＮ＿ＪＵＭＰ（或いはＢＡＣＫ）が指定された条件のときに指定された行へジャンプ（或いは戻る）を意味しているため、￥ＷＨＥＮ＿ＪＵＭＰ（或いはＢＡＣＫ）に対応させて「ｉｆ」と表記し、￥ＷＡＩＴＳＵＢが指定された￥ＳＵＢＪＯＢの終了待ちあわせを意味しているため、￥ＷＡＩＴＳＵＢに対応させて「ｗａｉｔ」と表記するためのルールを採用することにより、インデックス付きファイル１０１の記述内容を構文木１０２に変換している。
以上の様に、前記構文木作成手段４２は、前記ファイル読取手段４１が管理するファイル１０１のインデックス１０１ａを線形に走査することにより、前記ファイルの各行の記述内容のうち、上述したＪＣＬ命令行の記述内容及び順序制御命令の記述内容を前記ルールに基づいて表記し、それらの表記に関連させてファイル１０１の記述内容を木構造の構文木１０２に変換している。
図９に示す例では、前記構文木作成手段４１は、インデックス１０１ａの「００１」で示される記述内容「ＳＴ００１：￥ＪＯＢ」を前記表記ルールに基づいて「ＲＯＯＴ」として表記し、インデックス１０１ａの「００２」で示される記述内容「実処理１」を「ＲＯＯＴ」に対して木構造として表記している。同様に、前記構文木作成手段４１は、ファイル１０１のインデックス１０１ａである「００３」〜「０１８」を線形に走査することにより、そのインデクス１０１ａが付された記述内容（文字列データ１０１ｂ）を木構造の構文木１０２に変換する。
図９に示す前記構文木作成手段４２が変換した構文木１０２において、「ＲＯＯＴ」，「ｉｆ」，「ｐａｒａｌｌｅｌ」及び「ｉｆ」などは、インデックス１０１ａの「００１」，「００３」，「００５」，「００８」，「０１０」，「０１２」，「０１８」で示される記述内容（文字列データ１０１ｂ）を構文木１０２に変換したものである。また、図９に示したインデックス１０１ａである「００２」，「００４」，「００７」，「００９」，「０１１」，「０１３」及び「０１４」〜「０１７」は、ファイル１０１の「実処理１」〜「実処理１０」で示される記述内容（文字列データ１０１ｂ）を構文木１０２に変換したものである。
以上の様に、前記構文木作成手段４２は、前記ファイル読取手段４１が管理するファイル１０１のインデックス１０１ａを線形に走査することにより、前記ファイルの各行の記述内容（文字列データ１０１ｂ）を木構造の構文木１０２に変換し、図１０に示す様な木構造の構文木１０２を得るものである。
【００３３】
図６は、インデックス付きファイル１０１と、前記構文木作成手段４２が処理した図９に示す構文木１０２のＲＡＭ１３上でのデータ構造との関係を示すものである。前記構文木１０２は図９に示す様に、命令行を前記ルールに従って表記したインデックスである「ＲＯＯＴ」，「ｉｆ」，「ｐａｒａｌｌｅｌ」，「ｉｆ」と、文字列データ１０１ｂに対応するインデックス１０１ａである「００２」，「００７」などとにより木構造の形式で構築されている。
【００３４】
前記構文木作成手段４２が作成した構文木１０２は図１０に示す様に階層構造の形式をとる木構造をなしている。すなわち、図１０に示す構文木１０２の木構造について説明する。図１０に示す様に、インデックスの「ＲＯＯＴ」を最上位層として、これに連なるインデックス「００２」が左子要素（ｌｅｆｔ）１０２ａ２として次の階層に位置し、インデックス「００２」にインデックス「ｉｆ」が左子要素（ｌｅｆｔ）１０２ａ２として次の階層で連なり、インデックス「ｉｆ」に対して、左子要素（ｌｅｆｔ）１０２ａ２としてのインデックス「００４」及び右子要素（ｒｉｇｈｔ）１０２ａ３としてのインデックス「０１４」が次の階層でそれぞれ連なっており、インデックス「００４」にインデックス「ｐａｒａｌｌｅｌ」が左子要素（ｌｅｆｔ）１０２ａ２として次の階層で連なり、インデックス「ｐａｒａｌｌｅｌ」に対して、左子要素（ｌｅｆｔ）１０２ａ２としてのインデックス「００９」及び右子要素（ｒｉｇｈｔ）１０２ａ３としてのインデックス「００４」が次の階層でそれぞれ連なっている。これらに続くインデックス「ｉｆ」〜インデックス「ＥＮＤ」に至るまで左子要素（ｌｅｆｔ）或いは右子要素（ｒｉｇｈｔ）として順次階層構造として構築される。
以上の様に、図１０に示す構文木１０２は、インデックス「ＲＯＯＴ」〜インデックス「ＥＮＤ」に至る左子要素（ｌｅｆｔ）１０２ａ２或いは右子要素（ｒｉｇｈｔ）１０２ａ３として階層構造の形式を採る木構造として構築される。
【００３５】
前記構文木作成手段４２が木構造の構文木１０２をＲＡＭ１３上に記録する際には、図８に示す様な構文木１０２を構成する複数のデータ列１０２ａとして記録される。
すなわち、前記構文木１０２の各層のデータ列１０２ａは図６に示す様に、インデックス１０１ａを付したファイル１０１のデータ構造のうち、前記インデックス１０２ａ１を先頭に配置し、それに引き続けて、左子要素（ｌｅｆｔ）１０２ａ２或いは右子要素（ｒｉｇｈｔ）１０２ａ３、さらに続けてインデクス１０１ａが付された文字データ列１０１ｂの行番号（ｌｉｎｅ）１０２ａ４を配列したデータ構造として構築される。これらのデータ列１０２ａを言語で表記すると、符号１０２ｂで示す様になる。なお、前記インデックス１０１ａ１には、図６に示すインデックス１０１ａと、図１０に示す「ＲＯＯＴ」，「ｉｆ」，「ｐａｒａｌｌｅｌ」，「ｗａｉｔ」，「ｇｏｔｏ」及び「ＥＮＤ」などのインデックスとが含まれている。
図６に示す各層のデータ列１０２ａは図８に示す様に、インデックス１０１ａ１である「ＲＯＯＴ」の階層のデータ列１０２ａからインデックス１０１ａ１である「ＥＮＤ」の階層のデータ列１０２ａに至る各層のデータ列１０２ａが図１０に示す木構造の関係を保ってＲＡＭ１３上に前記構文木作成手段４２により記録される。また、図８に示す様に、データ列１０２ａのｌｉｎｅ１０２ａ４と各行の記述内容である文字列データ１０１ｂがそれぞれ対応させてＲＡＭ１３上に前記構文木作成手段４２により記録される。
【００３６】
前記構文木最適化手段４３は、ＪＣＬの順序規則及び対象とするジョブ管理ツールのフロー特性に基づいて、次の様な最適化ルールを設定している。
ルール１：葉からＲＯＯＴへ向かう順序で最適化を行う。
ルール２：同じ親のｉｆのノードに属する枝上のｇｏｔｏ（ｎｎｎ）とノードｎｎｎとは結合処理を行う事ができる。但し、対象ノードがロックされていない場合とする。なお、（ｎｎｎ），ｎｎｎは、インデックス１０１ａである「００２」，「００４」，「００７」，「００９」，「０１１」，「０１３」，「０１４」〜「０１８」を意味している。以下、同様である。
ルール３：同じ親のｐａｒａｌｌｅｌのノードに属する枝上のｗａｉｔ（ｎｎｎ）とノードｎｎｎとは結合処理を行うことができる。但し、対象ノードがロックされていない場合とする。
ルール４：ｐａｒａｌｌｅｌのノードに属する枝の葉には、ＥＮＤのノードを補完できる。
ルール５：ｇｏｔｏ（ｎｎｎ）は、ノードｎｎｎ〜ＥＮＤのノードの枝に変換することができる。
【００３７】
そして、前記構文木最適化手段４３は、前記構文木作成手段４２から入力された木構造の構文木１０２を上述した最適化ルールに基づいてフロー図として最適化するものである。前記構文木最適化手段４３が構文木１０２を上述した最適化ルールに基づいて最適化する過程を、図１０に示す構文木１０２を例にとって、図１３〜図１８に基づいて説明する。なお、図１３〜図１８においてノード＊＊＊と表記する＊＊＊は、図１０に示す構文木１０２中に含まれるインデックス１０１ａ１の「００１」〜「０１８」に対応するものである。また、図１３〜図１８において、「ＲＯＯＴ」，「ｉｆ」，「ｇｏｔｏ」，「ｐａｒａｌｌｅｌ」，「ｗａｉｔ」及び「ＥＮＤ」は、図１０に示す構文木１０２中に含まれるインデックス１０１ａ１の「ＲＯＯＴ」，「ｉｆ」，「ｇｏｔｏ」，「ｐａｒａｌｌｅｌ」，「ｗａｉｔ」及び「ＥＮＤ」に対応している。
【００３８】
前記構文木最適化手段４３は、図１０に示す構文木１０２の木構造の内で「ＥＮＤ」を検索し、図１３に示す様に、前記検索した「ＥＮＤ」を最適化開始の起点であるＥＮＤノード３５１として、図１０に示す構文木１０２の木構造の検索をＲＯＯＴに向かう方向で開始し、前記構文木最適化手段４３は図１３に示す様に、先ずｉｆノード３５２を検出する。
前記構文木最適化手段４３は図１４に示す様に、ｉｆ３５２を検出した際に前記ルールを参照することにより、ルール２が適用可能であることを認識して、ｇｏｔｏ（０１６）とノード０１６との結合処理を行う。また、前記構文木最適化手段４３は図１４に示す様に、ｇｏｔｏ（０１６）とノード０１６との間の全ての経路のノード０１５〜０１１をロックする。図１４において、前記構文木最適化手段４３がロックした前記ノード０１６〜０１１を符号３５３で示している。
【００３９】
前記構文木最適化手段４３は図１５に示す様に、図１４に示す処理を完了した際に、検索を開始し、図１０に示す構文木１０２からｐａｒａｌｌｅｌを検出する。図１５では、前記構文木最適化手段４３がｐａｒａｌｌｅｌ（００７）３５４を検出した状態を示している。
前記構文木最適化手段４３は図１５に示す様に、ｐａｒａｌｌｅｌ（００７）３５４を検出した際に前記ルールを参照することにより、ルール３が適用可能であることを認識して、ノード００７とｗａｉｔノード００７とを結合する処理を行う。この場合、ｗａｉｔノード００７は図１４に示す様にロック状態３５３であるため、前記構文木最適化手段４３はノード００７とｗａｉｔノード００７との結合処理を中止する。
【００４０】
前記構文木最適化手段４３は図１６に示す様に、図１５での前記結合処理を中止した後に再び検索を開始して、次のｉｆを検出する。前記構文木最適化手段４３は図１６に示す様に、ｉｆ３５５を検出した際に、前記ルールを参照することにより、ルール２が適用可能であることを認識して、ノード０１４とｇｏｔｏ（０１４）との結合を試行する。この場合、ノード０１４は図１４に示す様にロック状態３５３であるため、前記構文木最適化手段４３はノード００７とｇｏｔｏ（０１４）との結合処理を中止する。
【００４１】
前記構文木最適化手段４３は図１７に示す様に、図１６での前記結合処理を中止した後に、前記ルールを参照することにより、ルール４が適用可能であることを認識して、ｐａｒａｌｌｅｌ３５４の子の葉であるノード００７にＥＮＤを補完する。さらに、前記構文木最適化手段４３は図１７に示す様に、前記ルールを参照することにより、ルール５が適用可能であることを認識して、ｇｏｔｏ（０１４）をノード０１４〜ＥＮＤ３５１の階層構造３５７に変換する。
【００４２】
前記構文木最適化手段４３は図１８に示す様に、図１７での処理が完了した際に、図１７で補完した葉のＥＮＤを検索開始の起点であるＥＮＤ３５１に結合する処理を行い、図１０に示す構文木１０２を図１９に示すフロー図２２として最適化することにより、最適化処理を終了させる。
図１９に示す様に、図１０に示す構文木１０２は、対象とするジョブ管理ツールのフローとなっており、且つ最大限簡略化されたフロー図となっている。図１９から明らかなように、フロー図には、制御子であるＳＴＡＲＴ，ｉｆ，ｐａｒａｌｌｅｌ，ｗａｉｔが含まれている。また、図１９に示すフロー図２２は、始点であるＳＴＡＲＴ（ＲＯＯＴ）と終点であるＥＮＤとが固定されたネットワーク形式のフロー図として構築される。また、図１９において、「００２」〜「０１７」は、図１０に示す構文木１０２に含まれる「００２」〜「０１７」に対応するものである。また、図１９において、「ＲＯＯＴ」，「ｉｆ」，「ｇｏｔｏ」，「ｐａｒａｌｌｅｌ」，「ｗａｉｔ」及び「ＥＮＤ」は、図１０に示す構文木１０２中に含まれる「ＲＯＯＴ」，「ｉｆ」，「ｇｏｔｏ」，「ｐａｒａｌｌｅｌ」，「ｗａｉｔ」及び「ＥＮＤ」に対応している。
【００４３】
前記ファイル分割手段４４は図２０に示す様に、前記構文木最適化手段４３から図１９に示すフロー図２２を受け取ると、そのフロー図２２の制御子（ＳＴＡＲＴ／ｉｆ／ｐａｒａｌｌｅｌ／ｗａｉｔ）を識別子として、入力されたＪＣＬファイル１０１の分割処理を実施し、前記分割処理したファイル２３と、その分割ファイル２３を考慮したフロー図２２ａを出力するものである。図２０を用いて具体的に説明する。
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ＳＴＡＲＴ」と制御子「ｉｆ」とを検出すると、それらの制御子間に存在するインデックス「００２」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「００２」が付された行の記述内容「実処理１」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。この分割されたファイルが、インデックス１０１ａである「００２」が付された行の文字列データ１０１ｂを含むＪＯＢ１の分割ファイル２３となる。
【００４４】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ｉｆ」と制御子「ｐａｒａｌｌｅｌ」とを検出すると、それらの制御子間に存在するインデックス「００４」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「００４」が付された行の記述内容「実処理２」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。この分割されたファイルが、インデックス１０１ａである「００４」が付された行の文字列データ１０１ｂを含むＪＯＢ２の分割ファイル２３となる。
【００４５】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ｐａｒａｌｌｅｌ」と制御子「ｉｆ」とを検出すると、それらの制御子間に存在するインデックス「００９」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「００９」が付された行の記述内容「実処理４」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。この分割されたファイルが、インデックス１０１ａである「００９」が付された行の文字列データ１０１ｂを含むＪＯＢ３の分割ファイル２３となる。
【００４６】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ｉｆ」と制御子「ｗａｉｔ（００７）」とを検出すると、それらの制御子間に存在するインデックス「０１１」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「０１１」が付された行の記述内容「実処理５」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。この分割されたファイルが、インデックス１０１ａである「０１１」が付された行の文字列データ１０１ｂを含むＪＯＢ４の分割ファイル２３となる。
【００４７】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ｗａｉｔ（００７）」と制御子「ｉｆを起点としたネットワークの分岐点Ｐ１」とを検出すると、それらの制御子間に存在するインデックス「０１３，０１４，０１５」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「０１３，０１４，０１５」が付された行の記述内容「実処理６，７，８」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。この分割されたファイルが、ＪＣＬファイル１０１のインデックス１０１ａの「０１３，０１４，０１５」が付された行のＪＯＢ５の分割ファイル２３となる。
【００４８】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ネットワークの分岐点Ｐ１」と制御子「ＥＮＤ」とを検出すると、それらの制御子間に存在するインデックス「０１６，０１７」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「０１６，０１７」が付された行の記述内容「実処理９，１０」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。この分割されたファイルが、ＪＣＬファイル１０１のインデックス１０１ａの「０１６，０１７」が付された行の文字列データ１０１ｂを含むＪＯＢ６の分割ファイル２３となる。
【００４９】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ＥＮＤ」を起点として制御子「ｐａｒａｌｌｅｌ」を検出し、次に、インデックス１０１ａの「００９，０１１，００７，０１３，０１４，０１５，０１６，０１７」からなるネットワークと平行なネットワークを検出し、ネットワークを検出すると、制御子「ｐａｒａｌｌｅｌ」と制御子「ＥＮＤ」との間に存在するインデックス「００７」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「００７」が付された行の記述内容「実処理３」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。この分割されたファイルが、ＪＣＬファイル１０１のインデックス１０１ａの「００７」が付された行の文字列データ１０１ｂを含むＪＯＢ７の分割ファイル２３となる。
【００５０】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ＥＮＤ」を起点として制御子「ｐａｒａｌｌｅｌ」よりも制御子「ＳＴＡＲＴ」側の制御子「ｉｆ」を検出し、次に、インデックス１０１ａの「００４，００９，０１１，００７，０１３，０１４，０１５，０１６，０１７」からなるネットワークと平行なネットワークを検出し、ネットワークを検出すると、制御子「ｉｆ」と制御子「ＥＮＤ」との間に存在するインデックス「０１４，０１５，０１６，０１７」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「０１４，０１５，０１６，０１７」が付された行の記述内容「実処理７，８，９，１０」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。この分割されたファイルが、ＪＣＬファイル１０１のインデックス１０１ａの「０１４，０１５，０１６，０１７」が付された行の文字列データ１０１ｂを含むＪＯＢ８の分割ファイル２３となる。
【００５１】
以上のように、前記ファイル分割手段４４は図２０及び図２１に示す様に、前記構文木最適化手段４３から図１９に示すフロー図２２を受け取ると、そのフロー図２２の制御子（ＳＴＡＲＴ／ｉｆ／ｐａｒａｌｌｅｌ／ｗａｉｔ）を識別子として、入力されたＪＣＬファイル１０１の分割処理を実施し、前記分割処理した複数の分割ファイル２３に加えて、その分割ファイル２３を考慮したブロー図２２ａを出力するものである。図２１に示す様に、前記分割ファイル２３を考慮したフロー図２２ａとは、図１９に示す様にネットワーク中に「ｉｆ」，「ｗａｉｔ  ＪＯＢ７」などのインデックス１０１ａ１を表記するとともに、ネットワーク中に分割したＪＯＢファイルであるＪＯＢ１〜８を表記したフロー図２２ａを意味している。ＪＯＢ１〜８は、上述した分割ファイル２３に対応するものである。
【００５２】
図４は、本実施形態に係るファイル変換装置の主要部を構成する図２に示すジョブネットワーク作成部３２を補完する実処理行変換部３３の具体的構成を示す構成図である。本実施形態における実処理行変換部３３は、前記ジョブネットワーク作成部３２のファイル分割手段４４が出力する分割ファイルをスクリプトファイルに変換するものであって、具体的は、ＪＣＬファイル入力手段５１と、スクリプトファイル生成手段５２と、スクリプトファイル出力手段５３とを有している。
【００５３】
前記ＪＣＬファイル入力手段５１は、前記ファイル分割手段４４が分割したファイル２３に受け取って、これらをスクリプトファイル生成手段５２に出力するものである。
【００５４】
前記スクリプトファイル生成手段５２は、変換辞書５４を用いて、ＪＣＬファイル２３をスクリプトファイル２４に変換するものである。前記変換辞書５４には、ＪＣＬファイル２３に記述されている実処理記述を汎用のオペレーションシステムが解読可能なスクリプトファイルに変換するために、ジョブ制御言語（ＪＣＬ）と汎用のオペレーションシステムが解読可能なコマンドインタプリタ言語とを対応させて記憶している。したがって、前記スクリプトファイル生成手段５２は、前記変換辞書５４を用いて、前記ファイル２３に記述されている実処理記述をコマンドインタプリタ言語に変換し、前記分割ファイル２３をスクリプトファイル２４に変換するものである。
【００５５】
前記スクリプトファイル出力手段５３は、前記スクリプトファイル生成手段５２から受け取ったスクリプトファイル２４をＨＤＤ１２に記憶させるものである。
【００５６】
次に、本実施形態に係るファイル変換装置を含むジョブネットワーク・フロー変換装置１０を用いて、一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換する方法について説明する。
【００５７】
先ず、ＪＣＬファイル入力部３１がＨＤＤ１２からＪＣＬファイル２１を読み込み、そのＪＣＬファイル２１をジョブネットワーク作成部３２のファイル読取手段４１に出力する、ファイル読取手段４１は図５に示す様に、入力したＪＣＬファイル２１の記述内容を１行ずつ読込み、その読み込んだ記述内容に行毎にインデックス１０１ａを付して前記記述内容をインデックス付きファイル１０１ａとして管理する。図５の例では、ファイル読取手段４１は、入力したＪＣＬファイル２１から行単位で読み込んだ第１行目の記述内容である「ＳＴ００１：￥ＪＯＢ」にインデックス１０１ａである「００１」を付し、第２行目の記述内容である「実処理１」にインデックス１０１ａである「００２」を付し、同様に第３行目の記述内容である「￥ＷＨＥＮ＿＿ＪＵＭＰ」から最後の行の記述内容である「ＳＴ００９：￥ＥＮＤＪＯＢ」にそれぞれ対応するインデックス１０１ａである「００３」〜「０１８」をそれぞれ付して、ＪＣＬファイル２１の記述内容をインデックス付きファイル１０１として管理する。
【００５８】
構文木作成手段４１は図１１に示す様に、前記ファイル読取手段４１が管理しているインデックス付ファイル１０１を受け取ると、このファイル１０１を木構造の構文木１０２に変換する処理を開始する。具体的に説明する。
【００５９】
構文木作成手段４１は図９に示すように、ファイル１０１のインデックス１０１ａを線形に走査することにより、インデックス１０１ａの「００１」を検索すると、構文木１０２の「ＲＯＯＴ」を作成し（図１１のステップＳ２０１）、その「ＲＯＯＴ」を構文木１０２の起点とする。
【００６０】
次に、前記構文木作成手段４１は、インデックス１０１ａの走査を続けて（図１１のステップ２０２）、インデックス１０１ａの「００２」が「ＥＮＤＪＯＢ」であるかを判定し（図１１のステップ２０３）、ＮＯである場合に、この「００２」を左子要素として「ＲＯＯＴ」に連繋させる。さらに、前記構文木作成手段４１は、インデックス１０１ａの走査を続けて、インデックス１０１ａの「００３」を検出する。前記構文木作成手段４１は、その検出したインデックス１０１ａの「００３」が「ＷＨＥＮ  ＪＵＭＰ又はＷＨＥＮ  ＢＡＣＫ」であるかを判定する（図１１のステップ２０４）。
【００６１】
前記高ＢＮ記作成手段４１は、前記インデックス１０１ａの「００３」が「ＷＨＥＮ  ＪＵＭＰ又はＷＨＥＮ  ＢＡＣＫ」であると判定した場合、子ノードとして「ｉｆ」を「００２」の下層に追加し（図１１のステップ２１１ａ）、その「ｉｆ」ノードにポインタを移動させ（図１１のステップ２１１ｂ）、「ｉｆ」の下層に子ノードとしての「ｇｏｔｏ（ｎｎｎ）」を追加する（図１１のステップＳ２１１ｃ）。この場合、ノードｇｏｔｏ（０１４）とノード「００４」が追加される。これらの処理が終了した際に、前記構文木作成手段４１は、処理を図１１のステップＳ２０２に移行させる。
【００６２】
前記構文木作成手段４１は、図１１のステップＳ２０３，Ｓ２０４での処理を遂行し、さらに、新たな制御子「ＳＵＢＪＯＢ」が存在するかを判定する（図１１のステップＳ２０５）。前記構文木作成手段４１は、制御子「ＳＵＢＪＯＢ」が存在すると判定した場合、子ノードとして「ｐａｒａｌｌｅｌ（ｎｎｎ）」を追加し（図１１のステップＳ２１２ａ）、これを「ｐａｒａｌｌｅｌ（００７）」として子ノード「００９」，「００７」を追加する（図１１のステップＳ２１２Ｂ）。
【００６３】
前記構文木作成手段４１は、処理を図１１のステップＳ２０４に移行させ、制御子「ＷＨＥＮ  ＪＵＭＰ又はＷＨＥＮ  ＢＡＣＫ」が在るかを判定する。前記構文木作成手段４１は、制御子「ＷＨＥＮ  ＪＵＭＰ又はＷＨＥＮ  ＢＡＣＫ」があると判定した場合、子ノードとして「ｉｆ」を追加し（図１１のステップＳ２１１ａ）、その「ｉｆ」に追加した「０１１」に移動し（図１１のステップＳ２１１ｂ）、子ノードとしての「ｐａｎｅｌｌｅｌ（０１６）」を追加する（図１１のステップＳ２１１ｃ）。
【００６４】
前記構文木作成手段４１は、処理を図１１のステップＳ２０６に移行させ、制御子「ＥＮＤＳＵＢＪＯＢ」が在るかを判定する。前記構文木作成手段４１は、制御子「ＥＮＤＳＵＢＪＯＢ」があると判定した場合、親ノードとして「ｐａｒａｌｌｅｌ（００７）」に戻り（図１１のステップＳ２１３ａ）、次に処理を図１１のステップＳ２０７に移行させる。そして、前記構文木作成手段４１は、制御子「ＷＡＩＴＳＵＢ」があると判定した場合、子ノードとしての「ｗａｉｔ（００７）」を追加し（図１１のステップＳ２１４ａ）、さらに「０１３」のノードを追加してそのノードに移動する（図１１のステップＳ２１４ｂ）。
【００６５】
前記構文木作成手段４１は図１１のステップＳ２１５ａ，Ｓ２１５ｂでの処理を繰り返すことにより、「０１４」，「０１５」，「０１６」，「０１７」のノードを追加する。
【００６６】
以上の様に、前記構文木作成手段４１は、インデックス１０１ａの「００１」で示される記述内容「ＳＴ００１：￥ＪＯＢ」を前記表記ルールに基づいて「ＲＯＯＴ」として表記し、インデックス１０１ａの「００２」で示される記述内容「実処理１」を「ＲＯＯＴ」に対して木構造として表記する。同様に、前記構文木作成手段４１は、ファイル１０１のインデックス１０１ａである「００３」〜「０１８」を線形に走査することにより、そのインデクス１０１ａが付された記述内容（文字列データ１０１ｂ）を木構造の構文木１０２に変換する。
【００６７】
前記構文木作成手段４２が作成した構文木１０２は図１０に示す様に階層構造の形式をとる木構造をなしている。すなわち、図１０に示す構文木１０２の木構造について説明する。図１０に示す様に、インデックスの「ＲＯＯＴ」を最上位層として、これに連なるインデックス「００２」が左子要素（ｌｅｆｔ）１０２ａ２として次の階層に位置し、インデックス「００２」にインデックス「ｉｆ」が左子要素（ｌｅｆｔ）１０２ａ２として次の階層で連なり、インデックス「ｉｆ」に対して、左子要素（ｌｅｆｔ）１０２ａ２としてのインデックス「００４」及び右子要素（ｒｉｇｈｔ）１０２ａ３としてのインデックス「０１４」が次の階層でそれぞれ連なっており、インデックス「００４」にインデックス「ｐａｒａｌｌｅｌ」が左子要素（ｌｅｆｔ）１０２ａ２として次の階層で連なり、インデックス「ｐａｒａｌｌｅｌ」に対して、左子要素（ｌｅｆｔ）１０２ａ２としてのインデックス「００９」及び右子要素（ｒｉｇｈｔ）１０２ａ３としてのインデックス「００４」が次の階層でそれぞれ連なっている。これらに続くインデックス「ｉｆ」〜インデックス「ＥＮＤ」に至るまで左子要素（ｌｅｆｔ）或いは右子要素（ｒｉｇｈｔ）として順次階層構造として構築される。
【００６８】
前記構文木最適化手段４３は、前記構文木作成手段４２から入力された木構造の構文木１０２を上述した最適化ルールに基づいてフロー図として最適化する。以下に図１２を用いて具体的に説明する。
【００６９】
前記構文木最適化手段４３は、図１０に示す構文木１０２の木構造の内で「ＥＮＤ」を検索し（図１２のステップＳ３０１）、図１３に示す様に、前記検索した「ＥＮＤ」を最適化開始の起点であるＥＮＤノード３５１として、図１０に示す構文木１０２の木構造の検索をＲＯＯＴに向かう方向で開始し、前記構文木最適化手段４３は図１３に示す様に、先ずｉｆノード３５２を検出する（図１２のステップＳ３０２，Ｓ３０３）。
前記構文木最適化手段４３は、「ｉｆ」ノードに対する子ノードの「ｇｏｔｏ（０１６）の飛び先ノード０１６が兄弟枝に存在するかを判定する（図１２のステップＳ３０３ａ）。前記構文木最適化手段４３は図１４に示す様に、ｉｆ３５２を検出した際に前記ルールを参照することにより、ルール２が適用可能であることを認識して、ｇｏｔｏ（０１６）とノード０１６との結合処理を行う（図１２のステップＳ３０３ｂ，Ｓ３１１ａ）。また、前記構文木最適化手段４３は図１４に示す様に、ｇｏｔｏ（０１６）とノード０１６との間の全ての経路のノード０１５〜０１１をロックする（図１２のステップＳ３１１ｂ）。
【００７０】
前記構文木最適化手段４３は図１５に示す様に、図１４に示す処理を完了した際に、検索を開始し、図１０に示す構文木１０２からｐａｒａｌｌｅｌを検出する（図１２のステップＳ３０４）。前記構文木最適化手段４３は図１５に示す様に、ｐａｒａｌｌｅｌ（００７）３５４を検出した際に前記ルールを参照することにより、ルール３が適用可能であることを認識して、ノード００７とｗａｉｔノード００７とを結合する処理を行う（図１２のステップＳ３０４ａ，Ｓ３０４ｂ，Ｓ３１２ａ）。この場合、ｗａｉｔノード００７は図１４に示す様にロック状態３５３であるため、前記構文木最適化手段４３はノード００７とｗａｉｔノード００７との結合処理を中止する（図１２のステップＳ３１２ｂ）。
【００７１】
前記構文木最適化手段４３は図１６に示す様に、図１５での前記結合処理を中止した後に再び検索を開始して、次のｉｆを検出する（図１２のステップＳ３０３）。前記構文木最適化手段４３は図１６に示す様に、ｉｆ３５５を検出した際に、前記ルールを参照することにより、ルール２が適用可能であることを認識して、ノード０１４とｇｏｔｏ（０１４）との結合を試行する（図１２のステップＳ３０３ａ，Ｓ３０３ｂ，Ｓ３１１ａ）。この場合、ノード０１４は図１４に示す様にロック状態３５３であるため、前記構文木最適化手段４３はノード００７とｇｏｔｏ（０１４）との結合処理を中止する（図１２のステップＳ３１１ｂ）。
【００７２】
前記構文木最適化手段４３は図１７に示す様に、図１６での前記結合処理を中止した後に、前記ルールを参照することにより、ルール４が適用可能であることを認識して、ｐａｒａｌｌｅｌ３５４の子の葉であるノード００７にＥＮＤを補完する（図１２のステップＳ３０５，Ｓ３０６）。さらに、前記構文木最適化手段４３は図１７に示す様に、前記ルールを参照することにより、ルール５が適用可能であることを認識して、ｇｏｔｏ（０１４）をノード０１４〜ＥＮＤ３５１の階層構造３５７に変換する。
【００７３】
前記構文木最適化手段４３は図１８に示す様に、図１７での処理が完了した際に、図１７で補完した葉のＥＮＤを検索開始の起点であるＥＮＤ３５１に結合する処理を行い（図１２のステップＳ３０７）、図１０に示す構文木１０２を図１９に示すフロー図２２として最適化することにより、最適化処理を終了させる。
【００７４】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ＳＴＡＲＴ」と制御子「ｉｆ」とを検出すると、それらの制御子間に存在するインデックス「００２」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「００２」が付された行の記述内容「実処理１」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。
【００７５】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ｉｆ」と制御子「ｐａｒａｌｌｅｌ」とを検出すると、それらの制御子間に存在するインデックス「００４」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「００４」が付された行の記述内容「実処理２」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。
【００７６】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ｐａｒａｌｌｅｌ」と制御子「ｉｆ」とを検出すると、それらの制御子間に存在するインデックス「００９」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「００９」が付された行の記述内容「実処理４」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。
【００７７】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ｉｆ」と制御子「ｗａｉｔ（００７）」とを検出すると、それらの制御子間に存在するインデックス「０１１」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「０１１」が付された行の記述内容「実処理５」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。
【００７８】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ｗａｉｔ（００７）」と制御子「ｉｆを起点としたネットワークの分岐点Ｐ１」とを検出すると、それらの制御子間に存在するインデックス「０１３，０１４，０１５」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「０１３，０１４，０１５」が付された行の記述内容「実処理６，７，８」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。
【００７９】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ネットワークの分岐点Ｐ１」と制御子「ＥＮＤ」とを検出すると、それらの制御子間に存在するインデックス「０１６，０１７」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「０１６，０１７」が付された行の記述内容「実処理９，１０」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。
【００８０】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ＥＮＤ」を起点として制御子「ｐａｒａｌｌｅｌ」を検出し、次に、インデックス１０１ａの「００９，０１１，００７，０１３，０１４，０１５，０１６，０１７」からなるネットワークと平行なネットワークを検出し、ネットワークを検出すると、制御子「ｐａｒａｌｌｅｌ」と制御子「ＥＮＤ」との間に存在するインデックス「００７」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「００７」が付された行の記述内容「実処理３」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。
【００８１】
前記ファイル分割手段４４は図２０に示す様に、フロー図２２の制御子「ＥＮＤ」を起点として制御子「ｐａｒａｌｌｅｌ」よりも制御子「ＳＴＡＲＴ」側の制御子「ｉｆ」を検出し、次に、インデックス１０１ａの「００４，００９，０１１，００７，０１３，０１４，０１５，０１６，０１７」からなるネットワークと平行なネットワークを検出し、ネットワークを検出すると、制御子「ｉｆ」と制御子「ＥＮＤ」との間に存在するインデックス「０１４，０１５，０１６，０１７」を認識し、その認識の下に、ＪＣＬファイル１０１のインデックス１０１ａの「０１４，０１５，０１６，０１７」が付された行の記述内容「実処理７，８，９，１０」を１つのファイルとして、ＪＣＬファイル１０１から個別のファイルとして分割する。
【００８２】
前記ＪＣＬファイル入力手段５１は、前記ファイル分割手段４４が分割したファイル２３に受け取って、これらをスクリプトファイル生成手段５２に出力する。前記スクリプトファイル生成手段５２は、変換辞書５４を用いて、前記ＪＣＬファイル入力手段５１から受け取ったＪＣＬファイル２３をスクリプトファイル２４に変換する。前記スクリプトファイル出力手段５３は、前記スクリプトファイル生成手段５２から受け取ったスクリプトファイル２４をＨＤＤ１２に記憶させる。
【００８３】
本実施形態によれば、並列実行命令および順序制御命令を含まないようにＪＣＬファイルを分割してからジョブネットワーク形式のファイル構造へ変換するように構成したので、この変換を効率的に実施することができる。これによって、保守作業性の高い平易なジョブネットワーク形式のファイル構造を作成することができる。
【００８４】
さらに、前記ファイル分割手段が分割したファイルに記述されている実処理記述の言語をコマンドインタプリタ言語に変換する実処理行変換部を有しているため、フロー図から分離した分割ファイルを汎用のＯＳが解釈可能なスクリプトファイルを容易に構築することができる。
【００８５】
さらに、前記ファイル分割手段は、分割したファイルに加えて、前記構文木の木構造を最適化したフロー図を出力するものであるから、実処理行変換部は容易に分割済ＪＣＬファイルをスクリプトファイルに変換することができる。従って、これまでは主に人手によって行われていたＪＣＬファイルからジョブネットワークへの変換を、有効に自動化することができ、コンピュータシステムのメインフレームからオープンシステムへの移行にかかるコストや時間などを大きく削減することができる。
【００８６】
また、前記構文木最適化手段は、始点と終点とが固定されたネットワーク形式のフロー図として前記構文木を最適化するため、生成されたジョブネットワークは、保守作業性の高い平易なフローになっているので、移行後のジョブ監視やジョブの修正作業などが極めて容易になる。このため、移行後の保守性が大きく高まる。特に、一般的なジョブ管理ツールでのジョブ運用の保守作業性を高めることができる。
【００８７】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【産業上の利用可能性】
【００８８】
本発明によれば、前述のようにＪＣＬファイルからジョブネットワークへの変換を効率的に実施することができるので、コンピュータシステムのメインフレームからオープンシステムへの移行において極めて有用である。
【符号の説明】
【００８９】
１０  ジョブネットワーク・フロー変換装置
１１  ＣＰＵ
１２  ＨＤＤ
１３  ＲＡＭ
２１  ＪＣＬファイル
２２  フロー図
２３  分割済ＪＣＬファイル
２４  スクリプトファイル
３０  ジョブネットワーク・フロー変換プログラム
３１  ＪＣＬファイル入力部
３２  ジョブネットワーク作成部
３３  実処理行変換部
３４  ジョブネットワーク出力部
４１  ＪＣＬファイル読取手段
４２  構文木作成手段
４３  構文木最適化手段
４４  ＪＣＬファイル分割手段
５１  ＪＣＬファイル入力手段
５２  スクリプトファイル生成手段
５３  スクリプトファイル出力手段
５４  変換辞書
１０１  インデックス付きＪＣＬファイル
１０２  構文木
【図１】
2010287213.tif 000003
【図２】
2010287213.tif 000004
【図３】
2010287213.tif 000005
【図４】
2010287213.tif 000006
【図５】
2010287213.tif 000007
【図６】
2010287213.tif 000008
【図７】
2010287213.tif 000009
【図８】
2010287213.tif 000010
【図９】
2010287213.tif 000011
【図１０】
2010287213.tif 000012
【図１１】
2010287213.tif 000013
【図１２】
2010287213.tif 000014
【図１３】
2010287213.tif 000015
【図１４】
2010287213.tif 000016
【図１５】
2010287213.tif 000017
【図１６】
2010287213.tif 000018
【図１７】
2010287213.tif 000019
【図１８】
2010287213.tif 000020
【図１９】
2010287213.tif 000021
【図２０】
2010287213.tif 000022
【図２１】
2010287213.tif 000023
【図２２】
2010287213.tif 000024
【図２３】
2010287213.tif 000025