JP2010287213A - ファイル変換装置、ファイル変換方法およびファイル変換プログラム - Google Patents
ファイル変換装置、ファイル変換方法およびファイル変換プログラム Download PDFInfo
- Publication number
- JP2010287213A JP2010287213A JP2010031408A JP2010031408A JP2010287213A JP 2010287213 A JP2010287213 A JP 2010287213A JP 2010031408 A JP2010031408 A JP 2010031408A JP 2010031408 A JP2010031408 A JP 2010031408A JP 2010287213 A JP2010287213 A JP 2010287213A
- Authority
- JP
- Japan
- Prior art keywords
- file
- syntax tree
- index
- line
- jcl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
【課題】JCLファイルから効率的にかつ保守性の高いジョブネットワークを作成する。
【解決手段】一の言語で記述されたファイルを他の言語で解釈可能なファイルに変換するファイル変換装置において、入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理するファイル読取手段と、前記ファイル読取手段が管理するファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する構文木作成手段と、最適化ルールに従って前記構文木の木構造をフロー図として最適化する構文木最適化手段と、前記構文木最適化手段が最適化したフロー図の制御子を識別子として、前記入力されたファイルを分割するファイル分割手段とを有する。
【選択図】図1
【解決手段】一の言語で記述されたファイルを他の言語で解釈可能なファイルに変換するファイル変換装置において、入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理するファイル読取手段と、前記ファイル読取手段が管理するファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する構文木作成手段と、最適化ルールに従って前記構文木の木構造をフロー図として最適化する構文木最適化手段と、前記構文木最適化手段が最適化したフロー図の制御子を識別子として、前記入力されたファイルを分割するファイル分割手段とを有する。
【選択図】図1
Description
本発明は、コンピュータシステムのメインフレームからオープンシステムへの移行に関し、特にメインフレーム用のJCLで記述されたジョブをオープンシステム用のジョブネットワークに変換する技術に関する。
近年、多くの企業は、業務に使用するコンピュータシステムの保守および運用に必要な費用であるTCO(Total Cost of Ownership)を削減するため、それまでのメインフレームから、UNIX(登録商標)やウィンドウズ(登録商標)などの汎用OSを使用したオープンシステムへの移行を活発に行っている。その際、それまでメインフレーム上で運用されていた、ジョブ制御言語(Job Control Language、以後JCLという)で記述されたジョブを、オープンシステム用のジョブネットワーク(フロー図および分割済JCLファイル)に変換し、そこからスクリプトファイルに変換することが必要となる。
図22は、ジョブネットワークの例を示す説明図である。図22(a)〜(d)は、いずれも同一の順序関係を表すフロー図である。一般的なジョブ管理ツールでは、特に記述上の制約を設けず、ユーザに自由な記述を行わせる方式が多い。しかしながら、この方式だと、同一の順序関係を表現するフロー図であっても、作業者の手癖などによって図22(b)〜(d)に示したように異なるフロー図となる場合が多い。このように、同じ順序関係を表すものでも異なる様々な形状のフロー図が混在することは、ジョブ移行時のテストや、移行後の保守性などにおける非効率の原因となる。
図22(a)に示すフロー図では、このような問題の解決のため、始点と終点をあらかじめ固定して、フロー図の線の引かれ方を汎用ジョブ管理ソフトウェアの側で制限している。このようにすれば、誰がフロー図を作成しても同じような形式のフロー図になり、保守性の高い平易なジョブネットワーク・フローを作成できる。メインフレームからオープンシステムへ業務システムを移行する際には、このようなジョブ管理ソフトを利用して、JCLファイルをジョブネットワーク(フロー図および分割済JCLファイル)に変換し、そこからスクリプトファイルに変換する。
これに関連した技術として、次のような特許文献がある。特許文献1には、プログラムを構文解析して構文木を生成し、データ利用状況にデータ名ごとの宣言・代入などを関連づけるという技術が記載されている。特許文献2には、プログラムを構文解析して分岐を含まない一連のステートメントからなるブロックを抽出し、分岐・合流の部分と合わせて階層的表現とするという技術が記載されている。特許文献3には、JCLで記述されたプログラムを、行単位でソートしてから他形式プログラムに変換するという技術が記載されている。
しかしながら、JCLには「¥SUBJOB…¥ENDSUBJOB」文のような並列実行命令や、「¥WHEN…JUMP」文(if…goto文)のような順序制御命令が存在する。作成者の感性によっては、これらが多用されている場合がある。図23は、このような並列実行命令や順序制御命令が多用されたJCLファイルの例を示す説明図である。
図23に示したように、JCLファイルに並列実行命令もしくは順序制御命令が多用されていると、行番号から正確な順序関係を把握することが困難となるので、自動変換ツールなどを利用して機械的にフロー図に変換することは困難であるか、もしくは可能であっても保守作業性の低い複雑なジョブネットワークが作成されてしまうことになる。
このため、このようなJCLファイルからジョブネットワークへの変換は、主に人手によって行われていた。これには多大な労力を要し、また出来上がったジョブネットワークの品質は作業者のスキルに依存することとなり、さらにヒューマン・エラーによる品質低下と、そのリカバリ作業に伴うコストの増大も発生しやすくなる。
JCLファイルが並列実行命令もしくは順序制御命令を含んでいなければ、このJCLファイルからジョブネットワークへの変換は容易に行うことができる。従って、JCLファイルからこれらの並列実行命令および順序制御命令を検出してフロー図を作成し、並列実行命令もしくは順序制御命令を含まないようにJCLファイルを分割することができれば、上記の問題は解決できる。しかしながら、上記の特許文献1〜3には、そのようにJCLファイルを分割する技術は記載されていないので、この問題は解決できない。
本発明の目的は、JCLファイルからジョブネットワークへの変換を効率的に実施して、保守作業性の高い平易なジョブネットワークを作成することを可能とするファイル変換装置、ファイル変換方法およびファイル変換プログラムを提供することにある。
上記目的を達成するため、本発明に係るファイル変換装置は、一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換装置において、入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理するファイル読取手段と、前記ファイル読取手段が管理するファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する構文木作成手段と、最適化ルールに従って前記構文木の木構造をフロー図として最適化する構文木最適化手段と、前記構文木最適化手段が最適化したフロー図の制御子を識別子として、前記入力されたファイルを分割するファイル分割手段とを有することを特徴とする。
上記目的を達成するため、本発明に係るファイル変換方法は、一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換方法において、入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理し、前記管理されているファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換し、最適化ルールに従って前記構文木をフロー図として最適化し、前記フロー図の制御子を識別子として、前記入力されたファイルを分割することを特徴とする。
上記目的を達成するため、本発明に係るファイル変換プログラムは、一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換装置を構成するコンピュータに、入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理する機能と、前記管理されているファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する機能と、最適化ルールに従って前記構文木の木構造をフロー図として最適化する機能と、前記フロー図の制御子を識別子として、前記入力されたファイルを分割する機能とを実行させることを特徴とする。
本発明は、上述したように並列実行命令および順序制御命令を含まないようにJCLファイルを分割してからジョブネットワーク形式のファイル構造へ変換するように構成したので、この変換を効率的に実施することができる。これによって、保守作業性の高い平易なジョブネットワーク形式のファイル構造を作成することができる。
以下、本発明の実施形態を図に基づいて詳細に説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るファイル変換装置であるジョブネットワーク・フロー変換装置10は、入力された第1のファイル(JCLファイル21)を第2のファイル(スクリプトファイル24)に変換するファイル変換装置である。この装置は図1に示す様に、第1のファイルを入力するファイル入力部(JCLファイル入力部31)と、入力された第1のファイルからフロー図を作成し、このフロー図に応じた単位で第1のファイルを分割して分割済ファイルを生成するジョブネットワーク作成部32と、フロー図および分割済ファイルから第2のファイルを生成する実処理行変換部33とを備える。
ジョブネットワーク作成部32は図3に示す様に、第1のファイルから構文木102を作成する構文木作成手段42と、作成された構文木102を最適化する構文木最適化手段43と、この最適化された構文木からフロー図22を作成し、フロー図に基づいて分割済ファイル(分割済JCLファイル23)を生成するファイル分割手段(JCLファイル分割手段44)とを備える。ここで構文木最適化手段43は、構文木の終点から構文木の並列実行命令もしくは順序制御命令に係る分岐点を検索し、分岐点で分岐されているノードが結合可能か否かを判断して、結合可能であれば該ノードを結合することによって、構文木の最適化を行う。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るファイル変換装置であるジョブネットワーク・フロー変換装置10は、入力された第1のファイル(JCLファイル21)を第2のファイル(スクリプトファイル24)に変換するファイル変換装置である。この装置は図1に示す様に、第1のファイルを入力するファイル入力部(JCLファイル入力部31)と、入力された第1のファイルからフロー図を作成し、このフロー図に応じた単位で第1のファイルを分割して分割済ファイルを生成するジョブネットワーク作成部32と、フロー図および分割済ファイルから第2のファイルを生成する実処理行変換部33とを備える。
ジョブネットワーク作成部32は図3に示す様に、第1のファイルから構文木102を作成する構文木作成手段42と、作成された構文木102を最適化する構文木最適化手段43と、この最適化された構文木からフロー図22を作成し、フロー図に基づいて分割済ファイル(分割済JCLファイル23)を生成するファイル分割手段(JCLファイル分割手段44)とを備える。ここで構文木最適化手段43は、構文木の終点から構文木の並列実行命令もしくは順序制御命令に係る分岐点を検索し、分岐点で分岐されているノードが結合可能か否かを判断して、結合可能であれば該ノードを結合することによって、構文木の最適化を行う。
なお、前記ファイル入力部(JCLファイル入力部31),前記ジョブネットワーク作成部32,実処理行変換部33は、CPU11にジョブネットワーク・フロー変換プログラム30を実行させることによりソフトウェア上に構築するものである。また、前記ジョブネットワーク作成部32が備えている、構文木作成手段42,構文木最適化手段43及びファイル分割手段(JCLファイル分割手段44)も同様に、CPU11にジョブネットワーク・フロー変換プログラム30を実行させることによりソフトウェア上に構築するものである。また、前記ジョブネットワーク・フロー変換プログラム30は記録媒体に記録されて商取引の対象となる。
ここで、第1のファイルはJCL(Job Control Language)によって記述されたJCLファイル21であり、第2のファイルがコマンドインタプリタ言語で記述されたスクリプトファイル24である。
ジョブネットワーク作成部32は、第1のファイルを読み取ってこれにインデックスを付加するファイル読取手段41を有する。そして、構文木作成手段42は、インデックスを付加された第1のファイル101を先頭から走査して構文木を作成する。
以上の構成を備えることにより、ジョブネットワーク・フロー変換装置10は並列実行命令および順序制御命令を含まないようにJCLファイルを分割してから、これをジョブネットワーク形式のファイル構造へ変換することができる。
以下、これをより詳細に説明する。
以下、これをより詳細に説明する。
図1は、本実施形態に係るファイル変換装置を含めたジョブネットワーク・フロー変換装置10を示す構成図である。ジョブネットワーク・フロー変換装置10は、一般的なコンピュータ装置であり、コンピュータプログラムを実行する主体であるCPU(Central Processing Unit)11と、CPU11が実行するコンピュータプログラムおよびそれらのプログラムが処理する後述の各種ファイルが記憶されているHDD(Hard Disk Drive)12と、CPU11がHDD12から読み込んだプログラムが一時的に記憶されるRAM(Random Access Memory)13とを備える。
CPU11は、ジョブネットワーク・フロー変換プログラム30をコンピュータプログラムとして実行する。前記ジョブネットワーク・フロー変換プログラム30は、HDD12に記憶されたJCLファイル21を読み出して、これをフロー図22および汎用OSが解釈可能なコマンドインタプリタ言語で記述されたスクリプトファイル24に変換してHDD12に出力する処理を前記CPU11に実行させるプログラムである。
図2(a)は図1に示したコンピュータ資源との対応を表し、図2(b)はこれらの各部による作業および作業中の各ファイルの流れをより観念的に示した図である。
本実施形態に係るファイル変換装置は、ジョブネットワーク・フロー変換装置10のうち、ジョブネットワーク作成部32と実処理行変換部33とを含む構成のものであり、特にジョブネットワーク作成部32が重要な構成として構築してある。本実施形態に係るファイル変換装置に含まれるジョブネットワーク作成部32と実処理行変換部33との具体的な構成については後述する。
CPU11にジョブネットワーク・フロー変換プログラム30を実行させることにより、ソフトウェア上に、JCLファイル入力部31と、ジョブネットワーク作成部32と、実処理行変換部33と、ジョブネットワーク出力部34とを構築する。
JCLファイル入力部31は、HDD12からJCLファイル21を読み出し、そのJCLファイル21をジョブネットワーク作成部32に入力する。ジョブネットワーク作成部32は、JCLファイル入力部31から受け取ったJCLファイル21のJCL記述を解析して、その解析に基づいてフロー図22を作成し、このフロー図22に応じた単位でJCLファイル21を分割して分割済JCLファイル23を生成する。
実処理行変換部33は、ジョブネットワーク作成部32が生成した分割ファイル23に記述されている実処理記述をコマンドインタプリタ言語の記述内容に変換して、前記分割ファイル23をスクリプトファイル24に変換するものである。前記分割ファイル23がJCLファイルである場合、実処理行変換部33は、ジョブネットワーク作成部32が生成した分割済JCLファイル23にJCL言語で記述された実処理記述を、コマンドインタプリタ言語で記述されたスクリプトファイル24に変換する。
ジョブネットワーク出力部34は、ここまでで生成されたファイル構造(ジョブネットワーク形式のフロー図22およびスクリプトファイル24)をHDD12に出力して記憶させる。なお、前記フロー図22には、スクリプトファイル24が添付されており、前記フロー図22には、START部品、END部品、単位ジョブ部品、並列分岐部品、コンティニュー部品、ジョブ待合部品などのような各部品が含まれている。
ジョブネットワーク出力部34は、ここまでで生成されたファイル構造(ジョブネットワーク形式のフロー図22およびスクリプトファイル24)をHDD12に出力して記憶させる。なお、前記フロー図22には、スクリプトファイル24が添付されており、前記フロー図22には、START部品、END部品、単位ジョブ部品、並列分岐部品、コンティニュー部品、ジョブ待合部品などのような各部品が含まれている。
図3は、本実施形態に係るファイル変換装置の主要部を構成する図2に示すジョブネットワーク作成部32を具体的に示す構成図である。本実施形態に係るファイル変換装置の主要部を構成する図2に示すジョブネットワーク作成部32は図3に示す様に、ファイル読取手段41と、構文木作成手段42と、構文木最適化手段43と、ファイル分割手段44とを有している。
なお、前記ジョブネットワーク作成部32が備えている、JCLファイル読取手段41,構文木作成手段42,構文木最適化手段43及びJCLファイル分割手段44は、CPU11がジョブネットワーク・フロー変換プログラム30を実行することによりソフトウェア上に構築される。
なお、前記ジョブネットワーク作成部32が備えている、JCLファイル読取手段41,構文木作成手段42,構文木最適化手段43及びJCLファイル分割手段44は、CPU11がジョブネットワーク・フロー変換プログラム30を実行することによりソフトウェア上に構築される。
ファイル読取手段41は、入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックス101aを付して前記記述内容を管理するものである。具体的に説明する。
図5に示す様に、ファイル21は、その記述内容がジョブ制御言語(JCL)によって記述されたものであり、ファイル読取手段41は、以下に示す入力したファイルの記述内容を行単位で読取処理を行う。
前記JCL命令行には、次のものが含まれている。
¥JOB ;これはJCL記述の開始を意味する。
¥ENDJOB ;これはJCL記述の終了を意味する。
¥SUBJOB ;これは並列実行処理の記述の開始を意味する。
¥ENDSUBJOB ;これは並列実行処理の記述の終了を意味する。
¥WAITSUB ;これは指定された¥SUBJOBの終了待ち合わせを意味する。
¥WHEN__JUMP ;これは指定された条件のとき、指定された行へジャンプ(JUMP)することを意味する。
¥WHEN__BACK ;これは指定された条件のとき、指定された行へ戻る(BACK)ことを意味する。
図5に示す様に、ファイル21は、その記述内容がジョブ制御言語(JCL)によって記述されたものであり、ファイル読取手段41は、以下に示す入力したファイルの記述内容を行単位で読取処理を行う。
前記JCL命令行には、次のものが含まれている。
¥JOB ;これはJCL記述の開始を意味する。
¥ENDJOB ;これはJCL記述の終了を意味する。
¥SUBJOB ;これは並列実行処理の記述の開始を意味する。
¥ENDSUBJOB ;これは並列実行処理の記述の終了を意味する。
¥WAITSUB ;これは指定された¥SUBJOBの終了待ち合わせを意味する。
¥WHEN__JUMP ;これは指定された条件のとき、指定された行へジャンプ(JUMP)することを意味する。
¥WHEN__BACK ;これは指定された条件のとき、指定された行へ戻る(BACK)ことを意味する。
ファイル読取手段41は図5に示す様に、入力したJCLファイル21の記述内容を1行ずつ読込み、その読み込んだ記述内容に行毎にインデックス101aを付して前記記述内容をインデックス付きファイル101aとして管理する。ファイル読取手段41は、インデックス101aを付した記述内容を管理する際、インデックス101aを行単位で読み込んだ記述内容に付したJCLファイル101をRAM13に記憶させて管理する。
図5の例では、ファイル読取手段41は、入力したJCLファイル21から行単位で読み込んだ第1行目の記述内容である「ST001:¥JOB」にインデックス101aである「001」を付し、第2行目の記述内容である「実処理1」にインデックス101aである「002」を付し、同様に第3行目の記述内容である「¥WHEN__JUMP」から最後の行の記述内容である「ST009:¥ENDJOB」にそれぞれ対応するインデックス101aである「003」〜「018」をそれぞれ付して、JCLファイル21の記述内容をインデックス付きファイル101として管理している。図5に示すJCLファイル101は、ファイル読取手段41が行単位で読み取った記述内容にインデックス101aを付して記述内容を管理する際のファイルの記述内容を示している。
図7は、ファイル読取手段41が処理した図5に示すインデックス付きファイル101のRAM13上でのデータ構造を示すものである。インデックス付きファイル101は図7に示す様に、インデックス101aの「001」〜「018」と、行単位で読み込まれた記述内容である文字列データ101bとがそれぞれ対応した状態でRAM13上に記憶されている。また、図7に示す様に、RAM13上では、記述内容の文字列データ101bにそれぞれ付されたインデックス101aである「001」〜「018」は線形に連繋して記憶されている。
図5の例では、ファイル読取手段41は、入力したJCLファイル21から行単位で読み込んだ第1行目の記述内容である「ST001:¥JOB」にインデックス101aである「001」を付し、第2行目の記述内容である「実処理1」にインデックス101aである「002」を付し、同様に第3行目の記述内容である「¥WHEN__JUMP」から最後の行の記述内容である「ST009:¥ENDJOB」にそれぞれ対応するインデックス101aである「003」〜「018」をそれぞれ付して、JCLファイル21の記述内容をインデックス付きファイル101として管理している。図5に示すJCLファイル101は、ファイル読取手段41が行単位で読み取った記述内容にインデックス101aを付して記述内容を管理する際のファイルの記述内容を示している。
図7は、ファイル読取手段41が処理した図5に示すインデックス付きファイル101のRAM13上でのデータ構造を示すものである。インデックス付きファイル101は図7に示す様に、インデックス101aの「001」〜「018」と、行単位で読み込まれた記述内容である文字列データ101bとがそれぞれ対応した状態でRAM13上に記憶されている。また、図7に示す様に、RAM13上では、記述内容の文字列データ101bにそれぞれ付されたインデックス101aである「001」〜「018」は線形に連繋して記憶されている。
前記構文木作成手段42は図9に示す様に、前記ファイル読取手段41が管理するファイル101のインデックス101aを線形に走査することにより、前記ファイルの各行の記述内容(文字列データ101b)を木構造の構文木102に変換するものである。ここに、前記構文木作成手段42がファイル101のインデックス101aを線形に走査するとは、例えば図7に示すファイル101のインデックス101aの「001」を走査開始のインデックスとして順番に最後のインデックス101aの「0018」まで順番に走査することを意味している。
前記構文木作成手段42は、¥SUBJOBが並列実行処理記述の開始を意味しているため、¥SUBJOBに対応させて「parallel」と表記し、¥WHEN_JUMP(或いはBACK)が指定された条件のときに指定された行へジャンプ(或いは戻る)を意味しているため、¥WHEN_JUMP(或いはBACK)に対応させて「if」と表記し、¥WAITSUBが指定された¥SUBJOBの終了待ちあわせを意味しているため、¥WAITSUBに対応させて「wait」と表記するためのルールを採用することにより、インデックス付きファイル101の記述内容を構文木102に変換している。
以上の様に、前記構文木作成手段42は、前記ファイル読取手段41が管理するファイル101のインデックス101aを線形に走査することにより、前記ファイルの各行の記述内容のうち、上述したJCL命令行の記述内容及び順序制御命令の記述内容を前記ルールに基づいて表記し、それらの表記に関連させてファイル101の記述内容を木構造の構文木102に変換している。
図9に示す例では、前記構文木作成手段41は、インデックス101aの「001」で示される記述内容「ST001:¥JOB」を前記表記ルールに基づいて「ROOT」として表記し、インデックス101aの「002」で示される記述内容「実処理1」を「ROOT」に対して木構造として表記している。同様に、前記構文木作成手段41は、ファイル101のインデックス101aである「003」〜「018」を線形に走査することにより、そのインデクス101aが付された記述内容(文字列データ101b)を木構造の構文木102に変換する。
図9に示す前記構文木作成手段42が変換した構文木102において、「ROOT」,「if」,「parallel」及び「if」などは、インデックス101aの「001」,「003」,「005」,「008」,「010」,「012」,「018」で示される記述内容(文字列データ101b)を構文木102に変換したものである。また、図9に示したインデックス101aである「002」,「004」,「007」,「009」,「011」,「013」及び「014」〜「017」は、ファイル101の「実処理1」〜「実処理10」で示される記述内容(文字列データ101b)を構文木102に変換したものである。
以上の様に、前記構文木作成手段42は、前記ファイル読取手段41が管理するファイル101のインデックス101aを線形に走査することにより、前記ファイルの各行の記述内容(文字列データ101b)を木構造の構文木102に変換し、図10に示す様な木構造の構文木102を得るものである。
前記構文木作成手段42は、¥SUBJOBが並列実行処理記述の開始を意味しているため、¥SUBJOBに対応させて「parallel」と表記し、¥WHEN_JUMP(或いはBACK)が指定された条件のときに指定された行へジャンプ(或いは戻る)を意味しているため、¥WHEN_JUMP(或いはBACK)に対応させて「if」と表記し、¥WAITSUBが指定された¥SUBJOBの終了待ちあわせを意味しているため、¥WAITSUBに対応させて「wait」と表記するためのルールを採用することにより、インデックス付きファイル101の記述内容を構文木102に変換している。
以上の様に、前記構文木作成手段42は、前記ファイル読取手段41が管理するファイル101のインデックス101aを線形に走査することにより、前記ファイルの各行の記述内容のうち、上述したJCL命令行の記述内容及び順序制御命令の記述内容を前記ルールに基づいて表記し、それらの表記に関連させてファイル101の記述内容を木構造の構文木102に変換している。
図9に示す例では、前記構文木作成手段41は、インデックス101aの「001」で示される記述内容「ST001:¥JOB」を前記表記ルールに基づいて「ROOT」として表記し、インデックス101aの「002」で示される記述内容「実処理1」を「ROOT」に対して木構造として表記している。同様に、前記構文木作成手段41は、ファイル101のインデックス101aである「003」〜「018」を線形に走査することにより、そのインデクス101aが付された記述内容(文字列データ101b)を木構造の構文木102に変換する。
図9に示す前記構文木作成手段42が変換した構文木102において、「ROOT」,「if」,「parallel」及び「if」などは、インデックス101aの「001」,「003」,「005」,「008」,「010」,「012」,「018」で示される記述内容(文字列データ101b)を構文木102に変換したものである。また、図9に示したインデックス101aである「002」,「004」,「007」,「009」,「011」,「013」及び「014」〜「017」は、ファイル101の「実処理1」〜「実処理10」で示される記述内容(文字列データ101b)を構文木102に変換したものである。
以上の様に、前記構文木作成手段42は、前記ファイル読取手段41が管理するファイル101のインデックス101aを線形に走査することにより、前記ファイルの各行の記述内容(文字列データ101b)を木構造の構文木102に変換し、図10に示す様な木構造の構文木102を得るものである。
図6は、インデックス付きファイル101と、前記構文木作成手段42が処理した図9に示す構文木102のRAM13上でのデータ構造との関係を示すものである。前記構文木102は図9に示す様に、命令行を前記ルールに従って表記したインデックスである「ROOT」,「if」,「parallel」,「if」と、文字列データ101bに対応するインデックス101aである「002」,「007」などとにより木構造の形式で構築されている。
前記構文木作成手段42が作成した構文木102は図10に示す様に階層構造の形式をとる木構造をなしている。すなわち、図10に示す構文木102の木構造について説明する。図10に示す様に、インデックスの「ROOT」を最上位層として、これに連なるインデックス「002」が左子要素(left)102a2として次の階層に位置し、インデックス「002」にインデックス「if」が左子要素(left)102a2として次の階層で連なり、インデックス「if」に対して、左子要素(left)102a2としてのインデックス「004」及び右子要素(right)102a3としてのインデックス「014」が次の階層でそれぞれ連なっており、インデックス「004」にインデックス「parallel」が左子要素(left)102a2として次の階層で連なり、インデックス「parallel」に対して、左子要素(left)102a2としてのインデックス「009」及び右子要素(right)102a3としてのインデックス「004」が次の階層でそれぞれ連なっている。これらに続くインデックス「if」〜インデックス「END」に至るまで左子要素(left)或いは右子要素(right)として順次階層構造として構築される。
以上の様に、図10に示す構文木102は、インデックス「ROOT」〜インデックス「END」に至る左子要素(left)102a2或いは右子要素(right)102a3として階層構造の形式を採る木構造として構築される。
以上の様に、図10に示す構文木102は、インデックス「ROOT」〜インデックス「END」に至る左子要素(left)102a2或いは右子要素(right)102a3として階層構造の形式を採る木構造として構築される。
前記構文木作成手段42が木構造の構文木102をRAM13上に記録する際には、図8に示す様な構文木102を構成する複数のデータ列102aとして記録される。
すなわち、前記構文木102の各層のデータ列102aは図6に示す様に、インデックス101aを付したファイル101のデータ構造のうち、前記インデックス102a1を先頭に配置し、それに引き続けて、左子要素(left)102a2或いは右子要素(right)102a3、さらに続けてインデクス101aが付された文字データ列101bの行番号(line)102a4を配列したデータ構造として構築される。これらのデータ列102aを言語で表記すると、符号102bで示す様になる。なお、前記インデックス101a1には、図6に示すインデックス101aと、図10に示す「ROOT」,「if」,「parallel」,「wait」,「goto」及び「END」などのインデックスとが含まれている。
図6に示す各層のデータ列102aは図8に示す様に、インデックス101a1である「ROOT」の階層のデータ列102aからインデックス101a1である「END」の階層のデータ列102aに至る各層のデータ列102aが図10に示す木構造の関係を保ってRAM13上に前記構文木作成手段42により記録される。また、図8に示す様に、データ列102aのline102a4と各行の記述内容である文字列データ101bがそれぞれ対応させてRAM13上に前記構文木作成手段42により記録される。
すなわち、前記構文木102の各層のデータ列102aは図6に示す様に、インデックス101aを付したファイル101のデータ構造のうち、前記インデックス102a1を先頭に配置し、それに引き続けて、左子要素(left)102a2或いは右子要素(right)102a3、さらに続けてインデクス101aが付された文字データ列101bの行番号(line)102a4を配列したデータ構造として構築される。これらのデータ列102aを言語で表記すると、符号102bで示す様になる。なお、前記インデックス101a1には、図6に示すインデックス101aと、図10に示す「ROOT」,「if」,「parallel」,「wait」,「goto」及び「END」などのインデックスとが含まれている。
図6に示す各層のデータ列102aは図8に示す様に、インデックス101a1である「ROOT」の階層のデータ列102aからインデックス101a1である「END」の階層のデータ列102aに至る各層のデータ列102aが図10に示す木構造の関係を保ってRAM13上に前記構文木作成手段42により記録される。また、図8に示す様に、データ列102aのline102a4と各行の記述内容である文字列データ101bがそれぞれ対応させてRAM13上に前記構文木作成手段42により記録される。
前記構文木最適化手段43は、JCLの順序規則及び対象とするジョブ管理ツールのフロー特性に基づいて、次の様な最適化ルールを設定している。
ルール1:葉からROOTへ向かう順序で最適化を行う。
ルール2:同じ親のifのノードに属する枝上のgoto(nnn)とノードnnnとは結合処理を行う事ができる。但し、対象ノードがロックされていない場合とする。なお、(nnn),nnnは、インデックス101aである「002」,「004」,「007」,「009」,「011」,「013」,「014」〜「018」を意味している。以下、同様である。
ルール3:同じ親のparallelのノードに属する枝上のwait(nnn)とノードnnnとは結合処理を行うことができる。但し、対象ノードがロックされていない場合とする。
ルール4:parallelのノードに属する枝の葉には、ENDのノードを補完できる。
ルール5:goto(nnn)は、ノードnnn〜ENDのノードの枝に変換することができる。
ルール1:葉からROOTへ向かう順序で最適化を行う。
ルール2:同じ親のifのノードに属する枝上のgoto(nnn)とノードnnnとは結合処理を行う事ができる。但し、対象ノードがロックされていない場合とする。なお、(nnn),nnnは、インデックス101aである「002」,「004」,「007」,「009」,「011」,「013」,「014」〜「018」を意味している。以下、同様である。
ルール3:同じ親のparallelのノードに属する枝上のwait(nnn)とノードnnnとは結合処理を行うことができる。但し、対象ノードがロックされていない場合とする。
ルール4:parallelのノードに属する枝の葉には、ENDのノードを補完できる。
ルール5:goto(nnn)は、ノードnnn〜ENDのノードの枝に変換することができる。
そして、前記構文木最適化手段43は、前記構文木作成手段42から入力された木構造の構文木102を上述した最適化ルールに基づいてフロー図として最適化するものである。前記構文木最適化手段43が構文木102を上述した最適化ルールに基づいて最適化する過程を、図10に示す構文木102を例にとって、図13〜図18に基づいて説明する。なお、図13〜図18においてノード***と表記する***は、図10に示す構文木102中に含まれるインデックス101a1の「001」〜「018」に対応するものである。また、図13〜図18において、「ROOT」,「if」,「goto」,「parallel」,「wait」及び「END」は、図10に示す構文木102中に含まれるインデックス101a1の「ROOT」,「if」,「goto」,「parallel」,「wait」及び「END」に対応している。
前記構文木最適化手段43は、図10に示す構文木102の木構造の内で「END」を検索し、図13に示す様に、前記検索した「END」を最適化開始の起点であるENDノード351として、図10に示す構文木102の木構造の検索をROOTに向かう方向で開始し、前記構文木最適化手段43は図13に示す様に、先ずifノード352を検出する。
前記構文木最適化手段43は図14に示す様に、if352を検出した際に前記ルールを参照することにより、ルール2が適用可能であることを認識して、goto(016)とノード016との結合処理を行う。また、前記構文木最適化手段43は図14に示す様に、goto(016)とノード016との間の全ての経路のノード015〜011をロックする。図14において、前記構文木最適化手段43がロックした前記ノード016〜011を符号353で示している。
前記構文木最適化手段43は図14に示す様に、if352を検出した際に前記ルールを参照することにより、ルール2が適用可能であることを認識して、goto(016)とノード016との結合処理を行う。また、前記構文木最適化手段43は図14に示す様に、goto(016)とノード016との間の全ての経路のノード015〜011をロックする。図14において、前記構文木最適化手段43がロックした前記ノード016〜011を符号353で示している。
前記構文木最適化手段43は図15に示す様に、図14に示す処理を完了した際に、検索を開始し、図10に示す構文木102からparallelを検出する。図15では、前記構文木最適化手段43がparallel(007)354を検出した状態を示している。
前記構文木最適化手段43は図15に示す様に、parallel(007)354を検出した際に前記ルールを参照することにより、ルール3が適用可能であることを認識して、ノード007とwaitノード007とを結合する処理を行う。この場合、waitノード007は図14に示す様にロック状態353であるため、前記構文木最適化手段43はノード007とwaitノード007との結合処理を中止する。
前記構文木最適化手段43は図15に示す様に、parallel(007)354を検出した際に前記ルールを参照することにより、ルール3が適用可能であることを認識して、ノード007とwaitノード007とを結合する処理を行う。この場合、waitノード007は図14に示す様にロック状態353であるため、前記構文木最適化手段43はノード007とwaitノード007との結合処理を中止する。
前記構文木最適化手段43は図16に示す様に、図15での前記結合処理を中止した後に再び検索を開始して、次のifを検出する。前記構文木最適化手段43は図16に示す様に、if355を検出した際に、前記ルールを参照することにより、ルール2が適用可能であることを認識して、ノード014とgoto(014)との結合を試行する。この場合、ノード014は図14に示す様にロック状態353であるため、前記構文木最適化手段43はノード007とgoto(014)との結合処理を中止する。
前記構文木最適化手段43は図17に示す様に、図16での前記結合処理を中止した後に、前記ルールを参照することにより、ルール4が適用可能であることを認識して、parallel354の子の葉であるノード007にENDを補完する。さらに、前記構文木最適化手段43は図17に示す様に、前記ルールを参照することにより、ルール5が適用可能であることを認識して、goto(014)をノード014〜END351の階層構造357に変換する。
前記構文木最適化手段43は図18に示す様に、図17での処理が完了した際に、図17で補完した葉のENDを検索開始の起点であるEND351に結合する処理を行い、図10に示す構文木102を図19に示すフロー図22として最適化することにより、最適化処理を終了させる。
図19に示す様に、図10に示す構文木102は、対象とするジョブ管理ツールのフローとなっており、且つ最大限簡略化されたフロー図となっている。図19から明らかなように、フロー図には、制御子であるSTART,if,parallel,waitが含まれている。また、図19に示すフロー図22は、始点であるSTART(ROOT)と終点であるENDとが固定されたネットワーク形式のフロー図として構築される。また、図19において、「002」〜「017」は、図10に示す構文木102に含まれる「002」〜「017」に対応するものである。また、図19において、「ROOT」,「if」,「goto」,「parallel」,「wait」及び「END」は、図10に示す構文木102中に含まれる「ROOT」,「if」,「goto」,「parallel」,「wait」及び「END」に対応している。
図19に示す様に、図10に示す構文木102は、対象とするジョブ管理ツールのフローとなっており、且つ最大限簡略化されたフロー図となっている。図19から明らかなように、フロー図には、制御子であるSTART,if,parallel,waitが含まれている。また、図19に示すフロー図22は、始点であるSTART(ROOT)と終点であるENDとが固定されたネットワーク形式のフロー図として構築される。また、図19において、「002」〜「017」は、図10に示す構文木102に含まれる「002」〜「017」に対応するものである。また、図19において、「ROOT」,「if」,「goto」,「parallel」,「wait」及び「END」は、図10に示す構文木102中に含まれる「ROOT」,「if」,「goto」,「parallel」,「wait」及び「END」に対応している。
前記ファイル分割手段44は図20に示す様に、前記構文木最適化手段43から図19に示すフロー図22を受け取ると、そのフロー図22の制御子(START/if/parallel/wait)を識別子として、入力されたJCLファイル101の分割処理を実施し、前記分割処理したファイル23と、その分割ファイル23を考慮したフロー図22aを出力するものである。図20を用いて具体的に説明する。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「START」と制御子「if」とを検出すると、それらの制御子間に存在するインデックス「002」を認識し、その認識の下に、JCLファイル101のインデックス101aの「002」が付された行の記述内容「実処理1」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、インデックス101aである「002」が付された行の文字列データ101bを含むJOB1の分割ファイル23となる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「START」と制御子「if」とを検出すると、それらの制御子間に存在するインデックス「002」を認識し、その認識の下に、JCLファイル101のインデックス101aの「002」が付された行の記述内容「実処理1」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、インデックス101aである「002」が付された行の文字列データ101bを含むJOB1の分割ファイル23となる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「if」と制御子「parallel」とを検出すると、それらの制御子間に存在するインデックス「004」を認識し、その認識の下に、JCLファイル101のインデックス101aの「004」が付された行の記述内容「実処理2」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、インデックス101aである「004」が付された行の文字列データ101bを含むJOB2の分割ファイル23となる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「parallel」と制御子「if」とを検出すると、それらの制御子間に存在するインデックス「009」を認識し、その認識の下に、JCLファイル101のインデックス101aの「009」が付された行の記述内容「実処理4」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、インデックス101aである「009」が付された行の文字列データ101bを含むJOB3の分割ファイル23となる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「if」と制御子「wait(007)」とを検出すると、それらの制御子間に存在するインデックス「011」を認識し、その認識の下に、JCLファイル101のインデックス101aの「011」が付された行の記述内容「実処理5」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、インデックス101aである「011」が付された行の文字列データ101bを含むJOB4の分割ファイル23となる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「wait(007)」と制御子「ifを起点としたネットワークの分岐点P1」とを検出すると、それらの制御子間に存在するインデックス「013,014,015」を認識し、その認識の下に、JCLファイル101のインデックス101aの「013,014,015」が付された行の記述内容「実処理6,7,8」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、JCLファイル101のインデックス101aの「013,014,015」が付された行のJOB5の分割ファイル23となる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「ネットワークの分岐点P1」と制御子「END」とを検出すると、それらの制御子間に存在するインデックス「016,017」を認識し、その認識の下に、JCLファイル101のインデックス101aの「016,017」が付された行の記述内容「実処理9,10」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、JCLファイル101のインデックス101aの「016,017」が付された行の文字列データ101bを含むJOB6の分割ファイル23となる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「END」を起点として制御子「parallel」を検出し、次に、インデックス101aの「009,011,007,013,014,015,016,017」からなるネットワークと平行なネットワークを検出し、ネットワークを検出すると、制御子「parallel」と制御子「END」との間に存在するインデックス「007」を認識し、その認識の下に、JCLファイル101のインデックス101aの「007」が付された行の記述内容「実処理3」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、JCLファイル101のインデックス101aの「007」が付された行の文字列データ101bを含むJOB7の分割ファイル23となる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「END」を起点として制御子「parallel」よりも制御子「START」側の制御子「if」を検出し、次に、インデックス101aの「004,009,011,007,013,014,015,016,017」からなるネットワークと平行なネットワークを検出し、ネットワークを検出すると、制御子「if」と制御子「END」との間に存在するインデックス「014,015,016,017」を認識し、その認識の下に、JCLファイル101のインデックス101aの「014,015,016,017」が付された行の記述内容「実処理7,8,9,10」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。この分割されたファイルが、JCLファイル101のインデックス101aの「014,015,016,017」が付された行の文字列データ101bを含むJOB8の分割ファイル23となる。
以上のように、前記ファイル分割手段44は図20及び図21に示す様に、前記構文木最適化手段43から図19に示すフロー図22を受け取ると、そのフロー図22の制御子(START/if/parallel/wait)を識別子として、入力されたJCLファイル101の分割処理を実施し、前記分割処理した複数の分割ファイル23に加えて、その分割ファイル23を考慮したブロー図22aを出力するものである。図21に示す様に、前記分割ファイル23を考慮したフロー図22aとは、図19に示す様にネットワーク中に「if」,「wait JOB7」などのインデックス101a1を表記するとともに、ネットワーク中に分割したJOBファイルであるJOB1〜8を表記したフロー図22aを意味している。JOB1〜8は、上述した分割ファイル23に対応するものである。
図4は、本実施形態に係るファイル変換装置の主要部を構成する図2に示すジョブネットワーク作成部32を補完する実処理行変換部33の具体的構成を示す構成図である。本実施形態における実処理行変換部33は、前記ジョブネットワーク作成部32のファイル分割手段44が出力する分割ファイルをスクリプトファイルに変換するものであって、具体的は、JCLファイル入力手段51と、スクリプトファイル生成手段52と、スクリプトファイル出力手段53とを有している。
前記JCLファイル入力手段51は、前記ファイル分割手段44が分割したファイル23に受け取って、これらをスクリプトファイル生成手段52に出力するものである。
前記スクリプトファイル生成手段52は、変換辞書54を用いて、JCLファイル23をスクリプトファイル24に変換するものである。前記変換辞書54には、JCLファイル23に記述されている実処理記述を汎用のオペレーションシステムが解読可能なスクリプトファイルに変換するために、ジョブ制御言語(JCL)と汎用のオペレーションシステムが解読可能なコマンドインタプリタ言語とを対応させて記憶している。したがって、前記スクリプトファイル生成手段52は、前記変換辞書54を用いて、前記ファイル23に記述されている実処理記述をコマンドインタプリタ言語に変換し、前記分割ファイル23をスクリプトファイル24に変換するものである。
前記スクリプトファイル出力手段53は、前記スクリプトファイル生成手段52から受け取ったスクリプトファイル24をHDD12に記憶させるものである。
次に、本実施形態に係るファイル変換装置を含むジョブネットワーク・フロー変換装置10を用いて、一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換する方法について説明する。
先ず、JCLファイル入力部31がHDD12からJCLファイル21を読み込み、そのJCLファイル21をジョブネットワーク作成部32のファイル読取手段41に出力する、ファイル読取手段41は図5に示す様に、入力したJCLファイル21の記述内容を1行ずつ読込み、その読み込んだ記述内容に行毎にインデックス101aを付して前記記述内容をインデックス付きファイル101aとして管理する。図5の例では、ファイル読取手段41は、入力したJCLファイル21から行単位で読み込んだ第1行目の記述内容である「ST001:¥JOB」にインデックス101aである「001」を付し、第2行目の記述内容である「実処理1」にインデックス101aである「002」を付し、同様に第3行目の記述内容である「¥WHEN__JUMP」から最後の行の記述内容である「ST009:¥ENDJOB」にそれぞれ対応するインデックス101aである「003」〜「018」をそれぞれ付して、JCLファイル21の記述内容をインデックス付きファイル101として管理する。
構文木作成手段41は図11に示す様に、前記ファイル読取手段41が管理しているインデックス付ファイル101を受け取ると、このファイル101を木構造の構文木102に変換する処理を開始する。具体的に説明する。
構文木作成手段41は図9に示すように、ファイル101のインデックス101aを線形に走査することにより、インデックス101aの「001」を検索すると、構文木102の「ROOT」を作成し(図11のステップS201)、その「ROOT」を構文木102の起点とする。
次に、前記構文木作成手段41は、インデックス101aの走査を続けて(図11のステップ202)、インデックス101aの「002」が「ENDJOB」であるかを判定し(図11のステップ203)、NOである場合に、この「002」を左子要素として「ROOT」に連繋させる。さらに、前記構文木作成手段41は、インデックス101aの走査を続けて、インデックス101aの「003」を検出する。前記構文木作成手段41は、その検出したインデックス101aの「003」が「WHEN JUMP又はWHEN BACK」であるかを判定する(図11のステップ204)。
前記高BN記作成手段41は、前記インデックス101aの「003」が「WHEN JUMP又はWHEN BACK」であると判定した場合、子ノードとして「if」を「002」の下層に追加し(図11のステップ211a)、その「if」ノードにポインタを移動させ(図11のステップ211b)、「if」の下層に子ノードとしての「goto(nnn)」を追加する(図11のステップS211c)。この場合、ノードgoto(014)とノード「004」が追加される。これらの処理が終了した際に、前記構文木作成手段41は、処理を図11のステップS202に移行させる。
前記構文木作成手段41は、図11のステップS203,S204での処理を遂行し、さらに、新たな制御子「SUBJOB」が存在するかを判定する(図11のステップS205)。前記構文木作成手段41は、制御子「SUBJOB」が存在すると判定した場合、子ノードとして「parallel(nnn)」を追加し(図11のステップS212a)、これを「parallel(007)」として子ノード「009」,「007」を追加する(図11のステップS212B)。
前記構文木作成手段41は、処理を図11のステップS204に移行させ、制御子「WHEN JUMP又はWHEN BACK」が在るかを判定する。前記構文木作成手段41は、制御子「WHEN JUMP又はWHEN BACK」があると判定した場合、子ノードとして「if」を追加し(図11のステップS211a)、その「if」に追加した「011」に移動し(図11のステップS211b)、子ノードとしての「panellel(016)」を追加する(図11のステップS211c)。
前記構文木作成手段41は、処理を図11のステップS206に移行させ、制御子「ENDSUBJOB」が在るかを判定する。前記構文木作成手段41は、制御子「ENDSUBJOB」があると判定した場合、親ノードとして「parallel(007)」に戻り(図11のステップS213a)、次に処理を図11のステップS207に移行させる。そして、前記構文木作成手段41は、制御子「WAITSUB」があると判定した場合、子ノードとしての「wait(007)」を追加し(図11のステップS214a)、さらに「013」のノードを追加してそのノードに移動する(図11のステップS214b)。
前記構文木作成手段41は図11のステップS215a,S215bでの処理を繰り返すことにより、「014」,「015」,「016」,「017」のノードを追加する。
以上の様に、前記構文木作成手段41は、インデックス101aの「001」で示される記述内容「ST001:¥JOB」を前記表記ルールに基づいて「ROOT」として表記し、インデックス101aの「002」で示される記述内容「実処理1」を「ROOT」に対して木構造として表記する。同様に、前記構文木作成手段41は、ファイル101のインデックス101aである「003」〜「018」を線形に走査することにより、そのインデクス101aが付された記述内容(文字列データ101b)を木構造の構文木102に変換する。
前記構文木作成手段42が作成した構文木102は図10に示す様に階層構造の形式をとる木構造をなしている。すなわち、図10に示す構文木102の木構造について説明する。図10に示す様に、インデックスの「ROOT」を最上位層として、これに連なるインデックス「002」が左子要素(left)102a2として次の階層に位置し、インデックス「002」にインデックス「if」が左子要素(left)102a2として次の階層で連なり、インデックス「if」に対して、左子要素(left)102a2としてのインデックス「004」及び右子要素(right)102a3としてのインデックス「014」が次の階層でそれぞれ連なっており、インデックス「004」にインデックス「parallel」が左子要素(left)102a2として次の階層で連なり、インデックス「parallel」に対して、左子要素(left)102a2としてのインデックス「009」及び右子要素(right)102a3としてのインデックス「004」が次の階層でそれぞれ連なっている。これらに続くインデックス「if」〜インデックス「END」に至るまで左子要素(left)或いは右子要素(right)として順次階層構造として構築される。
前記構文木最適化手段43は、前記構文木作成手段42から入力された木構造の構文木102を上述した最適化ルールに基づいてフロー図として最適化する。以下に図12を用いて具体的に説明する。
前記構文木最適化手段43は、図10に示す構文木102の木構造の内で「END」を検索し(図12のステップS301)、図13に示す様に、前記検索した「END」を最適化開始の起点であるENDノード351として、図10に示す構文木102の木構造の検索をROOTに向かう方向で開始し、前記構文木最適化手段43は図13に示す様に、先ずifノード352を検出する(図12のステップS302,S303)。
前記構文木最適化手段43は、「if」ノードに対する子ノードの「goto(016)の飛び先ノード016が兄弟枝に存在するかを判定する(図12のステップS303a)。前記構文木最適化手段43は図14に示す様に、if352を検出した際に前記ルールを参照することにより、ルール2が適用可能であることを認識して、goto(016)とノード016との結合処理を行う(図12のステップS303b,S311a)。また、前記構文木最適化手段43は図14に示す様に、goto(016)とノード016との間の全ての経路のノード015〜011をロックする(図12のステップS311b)。
前記構文木最適化手段43は、「if」ノードに対する子ノードの「goto(016)の飛び先ノード016が兄弟枝に存在するかを判定する(図12のステップS303a)。前記構文木最適化手段43は図14に示す様に、if352を検出した際に前記ルールを参照することにより、ルール2が適用可能であることを認識して、goto(016)とノード016との結合処理を行う(図12のステップS303b,S311a)。また、前記構文木最適化手段43は図14に示す様に、goto(016)とノード016との間の全ての経路のノード015〜011をロックする(図12のステップS311b)。
前記構文木最適化手段43は図15に示す様に、図14に示す処理を完了した際に、検索を開始し、図10に示す構文木102からparallelを検出する(図12のステップS304)。前記構文木最適化手段43は図15に示す様に、parallel(007)354を検出した際に前記ルールを参照することにより、ルール3が適用可能であることを認識して、ノード007とwaitノード007とを結合する処理を行う(図12のステップS304a,S304b,S312a)。この場合、waitノード007は図14に示す様にロック状態353であるため、前記構文木最適化手段43はノード007とwaitノード007との結合処理を中止する(図12のステップS312b)。
前記構文木最適化手段43は図16に示す様に、図15での前記結合処理を中止した後に再び検索を開始して、次のifを検出する(図12のステップS303)。前記構文木最適化手段43は図16に示す様に、if355を検出した際に、前記ルールを参照することにより、ルール2が適用可能であることを認識して、ノード014とgoto(014)との結合を試行する(図12のステップS303a,S303b,S311a)。この場合、ノード014は図14に示す様にロック状態353であるため、前記構文木最適化手段43はノード007とgoto(014)との結合処理を中止する(図12のステップS311b)。
前記構文木最適化手段43は図17に示す様に、図16での前記結合処理を中止した後に、前記ルールを参照することにより、ルール4が適用可能であることを認識して、parallel354の子の葉であるノード007にENDを補完する(図12のステップS305,S306)。さらに、前記構文木最適化手段43は図17に示す様に、前記ルールを参照することにより、ルール5が適用可能であることを認識して、goto(014)をノード014〜END351の階層構造357に変換する。
前記構文木最適化手段43は図18に示す様に、図17での処理が完了した際に、図17で補完した葉のENDを検索開始の起点であるEND351に結合する処理を行い(図12のステップS307)、図10に示す構文木102を図19に示すフロー図22として最適化することにより、最適化処理を終了させる。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「START」と制御子「if」とを検出すると、それらの制御子間に存在するインデックス「002」を認識し、その認識の下に、JCLファイル101のインデックス101aの「002」が付された行の記述内容「実処理1」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「if」と制御子「parallel」とを検出すると、それらの制御子間に存在するインデックス「004」を認識し、その認識の下に、JCLファイル101のインデックス101aの「004」が付された行の記述内容「実処理2」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「parallel」と制御子「if」とを検出すると、それらの制御子間に存在するインデックス「009」を認識し、その認識の下に、JCLファイル101のインデックス101aの「009」が付された行の記述内容「実処理4」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「if」と制御子「wait(007)」とを検出すると、それらの制御子間に存在するインデックス「011」を認識し、その認識の下に、JCLファイル101のインデックス101aの「011」が付された行の記述内容「実処理5」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「wait(007)」と制御子「ifを起点としたネットワークの分岐点P1」とを検出すると、それらの制御子間に存在するインデックス「013,014,015」を認識し、その認識の下に、JCLファイル101のインデックス101aの「013,014,015」が付された行の記述内容「実処理6,7,8」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「ネットワークの分岐点P1」と制御子「END」とを検出すると、それらの制御子間に存在するインデックス「016,017」を認識し、その認識の下に、JCLファイル101のインデックス101aの「016,017」が付された行の記述内容「実処理9,10」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「END」を起点として制御子「parallel」を検出し、次に、インデックス101aの「009,011,007,013,014,015,016,017」からなるネットワークと平行なネットワークを検出し、ネットワークを検出すると、制御子「parallel」と制御子「END」との間に存在するインデックス「007」を認識し、その認識の下に、JCLファイル101のインデックス101aの「007」が付された行の記述内容「実処理3」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。
前記ファイル分割手段44は図20に示す様に、フロー図22の制御子「END」を起点として制御子「parallel」よりも制御子「START」側の制御子「if」を検出し、次に、インデックス101aの「004,009,011,007,013,014,015,016,017」からなるネットワークと平行なネットワークを検出し、ネットワークを検出すると、制御子「if」と制御子「END」との間に存在するインデックス「014,015,016,017」を認識し、その認識の下に、JCLファイル101のインデックス101aの「014,015,016,017」が付された行の記述内容「実処理7,8,9,10」を1つのファイルとして、JCLファイル101から個別のファイルとして分割する。
前記JCLファイル入力手段51は、前記ファイル分割手段44が分割したファイル23に受け取って、これらをスクリプトファイル生成手段52に出力する。前記スクリプトファイル生成手段52は、変換辞書54を用いて、前記JCLファイル入力手段51から受け取ったJCLファイル23をスクリプトファイル24に変換する。前記スクリプトファイル出力手段53は、前記スクリプトファイル生成手段52から受け取ったスクリプトファイル24をHDD12に記憶させる。
本実施形態によれば、並列実行命令および順序制御命令を含まないようにJCLファイルを分割してからジョブネットワーク形式のファイル構造へ変換するように構成したので、この変換を効率的に実施することができる。これによって、保守作業性の高い平易なジョブネットワーク形式のファイル構造を作成することができる。
さらに、前記ファイル分割手段が分割したファイルに記述されている実処理記述の言語をコマンドインタプリタ言語に変換する実処理行変換部を有しているため、フロー図から分離した分割ファイルを汎用のOSが解釈可能なスクリプトファイルを容易に構築することができる。
さらに、前記ファイル分割手段は、分割したファイルに加えて、前記構文木の木構造を最適化したフロー図を出力するものであるから、実処理行変換部は容易に分割済JCLファイルをスクリプトファイルに変換することができる。従って、これまでは主に人手によって行われていたJCLファイルからジョブネットワークへの変換を、有効に自動化することができ、コンピュータシステムのメインフレームからオープンシステムへの移行にかかるコストや時間などを大きく削減することができる。
また、前記構文木最適化手段は、始点と終点とが固定されたネットワーク形式のフロー図として前記構文木を最適化するため、生成されたジョブネットワークは、保守作業性の高い平易なフローになっているので、移行後のジョブ監視やジョブの修正作業などが極めて容易になる。このため、移行後の保守性が大きく高まる。特に、一般的なジョブ管理ツールでのジョブ運用の保守作業性を高めることができる。
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
本発明によれば、前述のようにJCLファイルからジョブネットワークへの変換を効率的に実施することができるので、コンピュータシステムのメインフレームからオープンシステムへの移行において極めて有用である。
10 ジョブネットワーク・フロー変換装置
11 CPU
12 HDD
13 RAM
21 JCLファイル
22 フロー図
23 分割済JCLファイル
24 スクリプトファイル
30 ジョブネットワーク・フロー変換プログラム
31 JCLファイル入力部
32 ジョブネットワーク作成部
33 実処理行変換部
34 ジョブネットワーク出力部
41 JCLファイル読取手段
42 構文木作成手段
43 構文木最適化手段
44 JCLファイル分割手段
51 JCLファイル入力手段
52 スクリプトファイル生成手段
53 スクリプトファイル出力手段
54 変換辞書
101 インデックス付きJCLファイル
102 構文木
11 CPU
12 HDD
13 RAM
21 JCLファイル
22 フロー図
23 分割済JCLファイル
24 スクリプトファイル
30 ジョブネットワーク・フロー変換プログラム
31 JCLファイル入力部
32 ジョブネットワーク作成部
33 実処理行変換部
34 ジョブネットワーク出力部
41 JCLファイル読取手段
42 構文木作成手段
43 構文木最適化手段
44 JCLファイル分割手段
51 JCLファイル入力手段
52 スクリプトファイル生成手段
53 スクリプトファイル出力手段
54 変換辞書
101 インデックス付きJCLファイル
102 構文木
Claims (10)
- 一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換装置において、
入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理するファイル読取手段と、
前記ファイル読取手段が管理するファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する構文木作成手段と、
最適化ルールに従って前記構文木の木構造をフロー図として最適化する構文木最適化手段と、
前記構文木最適化手段が最適化したフロー図の制御子を識別子として、前記入力されたファイルを分割するファイル分割手段とを有することを特徴とするファイル変換装置。 - さらに、前記ファイル分割手段が分割したファイルに記述されている実処理記述の言語をコマンドインタプリタ言語に変換する実処理行変換部を有する請求項1に記載のファイル変換装置。
- さらに、前記ファイル分割手段は、分割したファイルに加えて、前記構文木の木構造を最適化したフロー図を出力するものである請求項1に記載のファイル変換装置。
- 前記構文木最適化手段は、始点と終点とが固定されたネットワーク形式のフロー図として前記構文木を最適化するものである請求項1に記載のファイル変換装置。
- 一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換方法において、
入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理し、
前記管理されているファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換し、
最適化ルールに従って前記構文木の木構造をフロー図として最適化し、
前記フロー図の制御子を識別子として、前記入力されたファイルを分割することを特徴とするファイル変換方法。 - さらに、前記分割したファイルに記述されている実処理記述の言語をコマンドインタプリタ言語に変換する請求項5に記載のファイル変換方法。
- さらに、前記分割したファイルに加えて、前記構文木こ木構造を最適化したフロー図を出力する請求項5に記載のファイル変換方法。
- 始点と終点とが固定されたネットワーク形式のフロー図として前記構文木を最適化する請求項5に記載のファイル変換方法。
- 一の言語で記述されたファイル形式を他の言語で解釈可能なファイル形式に変換するファイル変換装置を構成するコンピュータに、
入力したファイルの記述内容を1行ずつ読み込み、その読み込んだ記述内容に行毎にインデックスを付して前記記述内容を管理する機能と、
前記管理されているファイルのインデックスを線形に走査することにより、前記インデックスに基づいて前記記述内容を木構造の構文木に変換する機能と、
最適化ルールに従って前記構文木の木構造をフロー図として最適化する機能と、
前記フロー図の制御子を識別子として、前記入力されたファイルを分割する機能とを実行させることを特徴とするファイル変換プログラム。 - さらに、前記分割したファイルに記述されている実処理記述の言語をコマンドインタプリタ言語に変換する機能と前記コンピュータに実行させる請求項9に記載のファイル変換プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010031408A JP2010287213A (ja) | 2009-05-11 | 2010-02-16 | ファイル変換装置、ファイル変換方法およびファイル変換プログラム |
US12/773,359 US8640111B2 (en) | 2009-05-11 | 2010-05-04 | File conversion device, file conversion method, and file conversion program |
CN201010173014.5A CN101887410B (zh) | 2009-05-11 | 2010-05-11 | 文件转换装置、文件转换方法以及文件转换程序 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009114854 | 2009-05-11 | ||
JP2010031408A JP2010287213A (ja) | 2009-05-11 | 2010-02-16 | ファイル変換装置、ファイル変換方法およびファイル変換プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010287213A true JP2010287213A (ja) | 2010-12-24 |
Family
ID=43063138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010031408A Withdrawn JP2010287213A (ja) | 2009-05-11 | 2010-02-16 | ファイル変換装置、ファイル変換方法およびファイル変換プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8640111B2 (ja) |
JP (1) | JP2010287213A (ja) |
CN (1) | CN101887410B (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8789058B2 (en) * | 2011-03-25 | 2014-07-22 | Oracle International Corporation | System and method for supporting batch job management in a distributed transaction system |
US8949258B2 (en) * | 2011-03-28 | 2015-02-03 | Microsoft Corporation | Techniques to manage file conversions |
CN102207884A (zh) * | 2011-06-02 | 2011-10-05 | 深圳市茁壮网络股份有限公司 | 一种文件编译方法及装置 |
US9483324B2 (en) * | 2012-06-26 | 2016-11-01 | Nec Corporation | Program conversion device and method, process switching method, method of determining execution scheme and program storage medium therefor, processor system, and parallel execution scheme |
IN2014MU00435A (ja) | 2014-02-06 | 2015-09-25 | Tata Consultancy Services Ltd | |
KR20160078032A (ko) * | 2014-12-24 | 2016-07-04 | 삼성전자주식회사 | 전자 설계 자동화를 위한 장치 및 방법 |
US9836305B1 (en) | 2015-03-18 | 2017-12-05 | Misys Global Limited | Systems and methods for task parallelization |
KR101762283B1 (ko) * | 2016-05-19 | 2017-07-31 | 주식회사 티맥스 소프트 | 인코딩이 다른 환경에서 jcl을 재사용하기 위한 소트 스크립트 변환 방법 및 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램 |
US10534640B2 (en) * | 2017-03-24 | 2020-01-14 | Oracle International Corporation | System and method for providing a native job control language execution engine in a rehosting platform |
CN108664314B (zh) * | 2017-03-29 | 2023-10-13 | 香港城市大学 | 大数据处理流程模块化管理方法及装置 |
CN112181435B (zh) * | 2020-09-24 | 2024-02-23 | 中国建设银行股份有限公司 | 一种跨平台的作业转换方法、装置、电子设备和存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07248915A (ja) | 1994-03-09 | 1995-09-26 | Fujitsu Ltd | プログラム解析装置 |
JPH0816378A (ja) | 1994-06-30 | 1996-01-19 | Fujitsu Ltd | プログラム・リバース解析方法および装置 |
US5768564A (en) * | 1994-10-07 | 1998-06-16 | Tandem Computers Incorporated | Method and apparatus for translating source code from one high-level computer language to another |
JP3251203B2 (ja) | 1997-06-27 | 2002-01-28 | エヌイーシーシステムテクノロジー株式会社 | Jclプログラム変換装置、jclプログラム変換方法、および、記録媒体 |
US6651241B1 (en) * | 1999-09-29 | 2003-11-18 | Lucent Technologies Inc. | Scriptor and interpreter |
US8843909B2 (en) * | 2001-05-11 | 2014-09-23 | Ca, Inc. | Method and apparatus for transforming legacy software applications into modern object-oriented distributed systems |
JP4377704B2 (ja) * | 2003-01-24 | 2009-12-02 | 株式会社東芝 | フローデータ生成方法およびフローデータ生成装置 |
US7287217B2 (en) * | 2004-01-13 | 2007-10-23 | International Business Machines Corporation | Method and apparatus for processing markup language information |
US20050251812A1 (en) * | 2004-04-27 | 2005-11-10 | Convertabase, Inc. | Data conversion system, method, and apparatus |
US20090138491A1 (en) * | 2007-11-28 | 2009-05-28 | Sandeep Chowdhury | Composite Tree Data Type |
-
2010
- 2010-02-16 JP JP2010031408A patent/JP2010287213A/ja not_active Withdrawn
- 2010-05-04 US US12/773,359 patent/US8640111B2/en not_active Expired - Fee Related
- 2010-05-11 CN CN201010173014.5A patent/CN101887410B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101887410B (zh) | 2014-07-02 |
US8640111B2 (en) | 2014-01-28 |
US20100287540A1 (en) | 2010-11-11 |
CN101887410A (zh) | 2010-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010287213A (ja) | ファイル変換装置、ファイル変換方法およびファイル変換プログラム | |
US7752192B2 (en) | Method and system for indexing and serializing data | |
KR102186050B1 (ko) | 소스 코드 번역 | |
JP5995409B2 (ja) | コンピュータ解析のためにテキスト文書を表現するためのグラフィカル・モデル | |
JP4141556B2 (ja) | 構造化文書管理方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
JP2624753B2 (ja) | 上位仕様書作成方法 | |
KR101255060B1 (ko) | 맵리듀스 기반 분산 병렬 개체 추출 시스템 및 방법 | |
JPWO2004025463A1 (ja) | 要件定義方法、ソフトウェアの開発方法、及び、要件単語の変更方法並びに新規規定方法 | |
JP5178852B2 (ja) | 情報処理装置およびプログラム | |
US20190220441A1 (en) | Method, device and computer program product for data migration | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
US20140298291A1 (en) | Change method, apparatus, and recording medium | |
JP6305671B1 (ja) | テンプレート生成装置、テンプレート生成プログラム及びテンプレート生成方法 | |
JP2019159602A (ja) | 生成プログラム、生成装置、および、生成方法 | |
KR20150060174A (ko) | 비즈니스 프로세스 자동화를 위한 자동 소스 생성 방법 | |
Zhou et al. | Searching XML data by SLCA on a MapReduce cluster | |
Zhan et al. | An approach to formalizing the semantics of UML statecharts | |
Rensink et al. | Neighbourhood abstraction in GROOVE | |
JP2014211729A (ja) | 計算機、プログラム及びデータ生成方法 | |
Zinn et al. | X-CSR: Dataflow optimization for distributed XML process pipelines | |
Cheney | Provenance, XML and the scientific web | |
JP4013632B2 (ja) | Xmlフォーマットデータ重複排除方法及び装置及びプログラム及びコンピュータ読み取り可能な記録媒体 | |
CN102681830A (zh) | 一种比较程序文本的方法和设备 | |
JP4698943B2 (ja) | プログラム生産方法、プログラム生産装置、プログラム自動変換方法、およびプログラム | |
Gueffaz et al. | RDF2NμSMV: Mapping Semantic Graphs to NμSMV Model Checker |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130507 |