(57)【要約】【課題】データ処理プログラムの解析に基づき、グリッドコンピューティング環境におけるデータ処理プログラムの並列実行を実現するための並列化設計を支援する。【解決手段】  並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を受付けて、  前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成し、前記プログラム構文・依存性解析情報に基づき、ファイルアクセスロジック情報を生成し、前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定し、前記情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成し、前記ファイル分割制約情報と、前記多重度に基づいて、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する。【選択図】  図１
2014157384.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの並列化を実現するためのデータ分割配置方法の設計を支援するコンピュータシステムであって、
並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を、入力装置で受付けて記憶装置に登録する入力情報登録部と、
前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成するプログラム構文・依存性解析部と、
前記プログラム構文・依存性解析情報に基づき、前記並列化プログラムが行うファイル入出力処理の制御構造の情報と、前記並列化プログラムが行うファイル入出力処理に使用されるプログラム変数による、入出力ファイルへの依存性の情報から構成される、ファイルアクセスロジック情報を生成する、ファイルアクセスロジック生成部と、
前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定する、並列性判定部と、
前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記物理ファイル情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成する、ファイル分割制約生成部と、
前記ファイル分割制約情報と、前記多重度に基づいて、前記多重度での前記並列化対象プログラムの並列実行を実現するための、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する、ファイル分割方法指定情報生成部と、
を備える、
ことを特徴とする、プログラムの並列化のためのデータ分割配置方法の設計を支援するコンピュータシステム。
【請求項２】
前記コンピュータシステムであって、
並列化対象プログラムが複数の入力ファイルを扱うプログラムである場合に、前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記ファイル分割方法指定情報に基づいて、前記ファイル分割方法指定情報で指定された方法で生成する分割後ファイルを、並列実行ノードへ配置する際の制約の情報を生成する、ファイル配置制約生成部を備えることと、
前記ファイル分割方法指定情報生成部は、前記ファイル分割制約情報と、前記物理ファイル情報に加え、前記ファイル配置制約情報に基づいて、ファイル分割方法指定情報を生成することと、
前記ファイル配置制約情報と、前記ファイル分割方法指定情報に基づいて、分割後ファイルの配置方法を指定する情報を生成する、ファイル配置方法指定情報生成部を備えること、
を特徴とする、請求項１に記載のコンピュータシステム。
【請求項３】
前記コンピュータシステムであって、
並列化対象プログラムが、第一のプログラムと、第二のプログラムから構成され、第一のプログラムの出力が、第二のプログラムの入力である場合に、並列化範囲を第一のプログラムの開始から第二のプログラムまでと定義し、
前記ファイル分割制約生成部は、前記並列化範囲を並列化するためのファイル分割制約を生成することと、
前記ファイル配置制約生成部は、前記並列化範囲を並列化するためのファイル配置制約を生成することと、
前記ファイル分割方法指定情報生成部は、前記並列化範囲を並列化するためのファイル分割方法指定情報を生成することと、
前記ファイル配置方法指定情報生成部は、前記並列化範囲を並列化するためのファイル配置方法指定情報を生成すること、
を特徴とする、請求項２に記載のコンピュータシステム。
【請求項４】
コンピュータを、
プログラムの並列化を実現するためのデータ分割配置方法設計を支援するシステムとして動作させるプログラムであって、
前記プログラムは、
並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を、入力装置で受付けて記憶装置に登録する入力情報登録部と、
前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成するプログラム構文・依存性解析部と、
前記プログラム構文・依存性解析情報に基づき、前記並列化プログラムが行うファイル入出力処理の制御構造の情報と、前記並列化プログラムが行うファイル入出力処理に使用されるプログラム変数による、入出力ファイルへの依存性の情報から構成される、ファイルアクセスロジック情報を生成する、ファイルアクセスロジック生成部と、
前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定する、並列性判定部と、
前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記物理ファイル情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成する、ファイル分割制約生成部と、
前記ファイル分割制約情報と、前記多重度に基づいて、前記多重度での前記並列化対象プログラムの並列実行を実現するための、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する、ファイル分割方法指定情報生成部と、
を備える、
ことを特徴とする、プログラムの並列化のためのデータ分割配置方法の設計を支援するプログラム。
【請求項５】
前記プログラムであって、
並列化対象プログラムが複数の入力ファイルを扱うプログラムである場合に、前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記ファイル分割方法指定情報に基づいて、前記ファイル分割方法指定情報で指定された方法で生成する分割後ファイルを、並列実行ノードへ配置する際の制約の情報を生成する、ファイル配置制約生成部を備えることと、
前記ファイル分割方法指定情報生成部は、前記ファイル分割制約情報と、前記物理ファイル情報に加え、前記ファイル配置制約情報に基づいて、ファイル分割方法指定情報を生成することと、
前記ファイル配置制約情報と、前記ファイル分割方法指定情報に基づいて、分割後ファイルの配置方法を指定する情報を生成する、ファイル配置方法指定情報生成部を備えること、
を特徴とする、請求項４に記載のプログラム。
【請求項６】
前記プログラムであって、
並列化対象プログラムが、第一のプログラムと、第二のプログラムから構成され、第一のプログラムの出力が、第二のプログラムの入力である場合に、並列化範囲を第一のプログラムの開始から第二のプログラムまでと定義し、
前記ファイル分割制約生成部は、前記並列化範囲を並列化するためのファイル分割制約を生成することと、
前記ファイル配置制約生成部は、前記並列化範囲を並列化するためのファイル配置制約を生成することと、
前記ファイル分割方法指定情報生成部は、前記並列化範囲を並列化するためのファイル分割方法指定情報を生成することと、
前記ファイル配置方法指定情報生成部は、前記並列化範囲を並列化するためのファイル配置方法指定情報を生成すること、
を特徴とする、請求項５に記載のプログラム。
【請求項７】
プログラムの並列化を実現するためのデータ分割配置方法の設計を支援する方法であって、
並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を、入力装置で受付けて記憶装置に登録するステップと、
前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成するプログラム構文・依存性解析ステップと、
前記プログラム構文・依存性解析情報に基づき、前記並列化プログラムが行うファイル入出力処理の制御構造の情報と、前記並列化プログラムが行うファイル入出力処理に使用されるプログラム変数による、入出力ファイルへの依存性の情報から構成される、ファイルアクセスロジック情報を生成する、ファイルアクセスロジック生成ステップと、
前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定する、並列性判定ステップと、
前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記物理ファイル情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成する、ファイル分割制約生成ステップと、
前記ファイル分割制約情報と、前記多重度に基づいて、前記多重度での前記並列化対象プログラムの並列実行を実現するための、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する、ファイル分割方法指定情報生成ステップと、
から構成される、ことを特徴とする、プログラムの並列化のためのデータ分割配置方法の設計を支援する方法。
【請求項８】
前記設計支援方法であって、
並列化対象プログラムが複数の入力ファイルを扱うプログラムである場合に、前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記ファイル分割方法指定情報に基づいて、前記ファイル分割方法指定情報で指定された方法で生成する分割後ファイルを、並列実行ノードへ配置する際の制約の情報を生成する、ファイル配置制約生成ステップを備えることと、
前記ファイル分割方法指定情報生成ステップは、前記ファイル分割制約情報と、前記物理ファイル情報に加え、前記ファイル配置制約情報に基づいて、ファイル分割方法指定情報を生成することと、
前記ファイル配置制約情報と、前記ファイル分割方法指定情報に基づいて、分割後ファイルの配置方法を指定する情報を生成する、ファイル配置方法指定情報生成ステップを備えること、
を特徴とする、請求項７に記載の設計支援方法。
【請求項９】
前記設計支援方法であって、
並列化対象プログラムが、第一のプログラムと、第二のプログラムから構成され、第一のプログラムの出力が、第二のプログラムの入力である場合に、並列化範囲を第一のプログラムの開始から第二のプログラムまでと定義し、
前記ファイル分割制約生成ステップは、前記並列化範囲を並列化するためのファイル分割制約を生成することと、
前記ファイル配置制約生成ステップは、前記並列化範囲を並列化するためのファイル配置制約を生成することと、
前記ファイル分割方法指定情報生成ステップは、前記並列化範囲を並列化するためのファイル分割方法指定情報を生成することと、
前記ファイル配置方法指定情報生成ステップは、前記並列化範囲を並列化するためのファイル配置方法指定情報を生成すること、
を特徴とする、請求項８に記載の設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムを並列実行するための設計支援システム、設計支援プログラム、および設計支援方法に関する。
【背景技術】
【０００２】
情報技術の進展と社会環境の変化にともない、企業や官公庁などが取り扱うデータ量の増大が著しい。それに伴い、企業などでは、大量データを処理する基幹システムのデータ処理の長時間化が課題となっている。データ処理をより高速に行う方法として、例えば、データ処理をグリッドコンピューティング環境において並列実行する方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１０２７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば前記特許文献１には、グリッドコンピューティング環境を管理するための方法、システムおよびプログラムが記載されているが、既存のデータ処理プログラムをグリッドコンピューティング環境へ移行するための方法が考慮されていない。特に、データ処理プログラムの改造には多くのコストが必要となるため、データ処理プログラムを極力改造せずに、処理対象データのみを分割することで並列化を実現することが望ましいが、そのような並列化設計方法が考慮されていない。
【０００５】
そこで、本発明は、データ処理プログラムの解析に基づき、前記データ処理プログラムの並列化を実現するためのデータの分割配置方法を指定する情報を生成することで、グリッドコンピューティング環境における前記既存のデータ処理プログラムの並列実行を実現するための並列化設計を支援するシステム、プログラム、および方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、例えば以下に記載の構成を採用する。
【０００７】
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるとするならば、プログラムの並列化を実現するためのデータ分割配置方法の設計を支援するコンピュータシステムであって、並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を、入力装置で受付けて記憶装置に登録する入力情報登録部と、前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成するプログラム構文・依存性解析部と、前記プログラム構文・依存性解析情報に基づき、前記並列化プログラムが行うファイル入出力処理の制御構造の情報と、前記並列化プログラムが行うファイル入出力処理に使用されるプログラム変数による、入出力ファイルへの依存性の情報から構成される、ファイルアクセスロジック情報を生成する、ファイルアクセスロジック生成部と、前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定する、並列性判定部と、前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記物理ファイル情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成する、ファイル分割制約生成部と、前記ファイル分割制約情報と、前記多重度に基づいて、前記多重度での前記並列化対象プログラムの並列実行を実現するための、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する、ファイル分割方法指定情報生成部と、を備えることを特徴とする、プログラムの並列化のためのデータ分割配置方法の設計を支援するコンピュータシステム。
【発明の効果】
【０００８】
本発明によれば、既存のデータ処理プログラムを、グリッドコンピューティング環境に移行し並列実行させるための、データの分割配置方法の設計を効率的に行うことができる。
【０００９】
上記以外の課題、構成、および効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第一の実施形態の並列化設計支援システムの構成である。
【図２】本発明の第一の実施形態の並列化設計支援システムのデータ構成である。
【図３】本発明の第一の実施形態の全体処理フローである。
【図４】本発明の第一の実施形態の物理ファイルテーブルの例である。
【図５】本発明の第一の実施形態のプログラムＰ０１が行う処理例の概要である。
【図６】本発明の第一の実施形態のプログラムＰ０１を多重度２で並列化した結果である。
【図７】本発明の第一の実施形態の並列化対象プログラムの構成である。
【図８】本発明の第一の実施形態の並列化対象プログラムのデータ部の例である。
【図９】本発明の第一の実施形態の並列化対象プログラムのデータ部の内容の模式図である。
【図１０】本発明の第一の実施形態のファイルレコード識別テーブルの例である。
【図１１】本発明の第一の実施形態の命令文テーブルの例である。
【図１２】本発明の第一の実施形態の変数参照更新テーブルの例である。
【図１３】本発明の第一の実施形態の条件構文木の例である。
【図１４】本発明の第一の実施形態の制御依存性テーブルの例である。
【図１５】本発明の第一の実施形態の制御依存グラフの例である。
【図１６】本発明の第一の実施形態のデータ依存性テーブルの例である。
【図１７】本発明の第一の実施形態のファイルアクセスロジック生成ステップの処理フローである。
【図１８】本発明の第一の実施形態の終端依存性テーブルの例である。
【図１９】本発明の第一の実施形態のファイルアクセス制御構造テーブルの例である。
【図２０】本発明の第一の実施形態のファイルアクセス制御構造ステップの処理フローである。
【図２１】本発明の第一の実施形態の変数依存性テーブルの例である。
【図２２】本発明の第一の実施形態の変数依存性解析ステップの処理フローである。
【図２３】本発明の第一の実施形態のファイルアクセスロジックの出力例である。
【図２４】本発明の第一の実施形態の並列性判定ステップの処理フローである。
【図２５】本発明の第一の実施形態の論理ファイル分割制約生成ステップの処理フローである。
【図２６】本発明の第一の実施形態の論理ファイル分割制約テーブルの例である。
【図２７】本発明の第一の実施形態の論理ファイル分割制約生成ステップの処理フローである。
【図２８】本発明の第一の実施形態の物理ファイル分割制約生成の処理フローである。
【図２９】本発明の第一の実施形態の物理ファイル分割制約テーブルの例である。
【図３０】本発明の第一の実施形態の物理ファイル分割テンプレート生成ステップの処理フローである。
【図３１】本発明の第一の実施形態の物理ファイル分割テンプレートの例である。
【図３２】本発明の第二の実施形態の並列化設計支援システムの構成である。
【図３３】本発明の第二の実施形態の並列化設計支援システムのデータ構成である。
【図３４】本発明の第二の実施形態の全体処理フローである。
【図３５】本発明の第二の実施形態の物理ファイルテーブルの例である。
【図３６】本発明の第二の実施形態のプログラムＰ０２が行う処理例の概要である。
【図３７】本発明の第二の実施形態のプログラムＰ０２を多重度２で並列化した結果である。
【図３８】本発明の第二の実施形態の並列化対象プログラムのデータ部の例である。
【図３９】本発明の第二の実施形態の並列化対象プログラムのデータ部の内容の模式図である。
【図４０】本発明の第二の実施形態のファイルレコード識別テーブルの例である。
【図４１】本発明の第二の実施形態の命令文テーブルの例である。
【図４２】本発明の第二の実施形態の制御依存性テーブルの例である。
【図４３】本発明の第二の実施形態のファイルアクセス制御構造テーブルの例である。
【図４４】本発明の第二の実施形態の変数依存性テーブルの例である。
【図４５】本発明の第二の実施形態の論理ファイル分割配置制約生成ステップの処理フローである。
【図４６】本発明の第二の実施形態の論理ファイル分割制約テーブルの例である。
【図４７】本発明の第二の実施形態の論理ファイル配置制約テーブルの例である。
【図４８】本発明の第二の実施形態の論理ファイル配置制約生成ステップの処理フローである。
【図４９】本発明の第二の実施形態の論理ファイル分割配置制約の表現例である。
【図５０】本発明の第二の実施形態の物理ファイル分割配置制約生成ステップの処理フローである。
【図５１】本発明の第二の実施形態の物理ファイル分割制約テーブルの例である。
【図５２】本発明の第二の実施形態の物理ファイル配置制約テーブルの例である。
【図５３】本発明の第二の実施形態の物理ファイル分割配置制約の表現例である。
【図５４】本発明の第二の実施形態の物理ファイル分割配置テンプレート生成ステップの処理フローである。
【図５５】本発明の第二の実施形態の物理ファイル分割テンプレートの例である。
【図５６】本発明の第二の実施形態の物理ファイル分割テンプレート生成ステップの処理フローである。
【図５７】本発明の第二の実施形態の物理ファイル配置テンプレートの例である。
【図５８】本発明の第三の実施形態の並列化設計支援システムのデータ構成である。
【図５９】本発明の第三の実施形態の物理ファイルテーブルの例である。
【図６０】本発明の第三の実施形態の並列化の範囲である。
【図６１】本発明の第三の実施形態の並列化の範囲を多重度２で並列化した結果である。
【図６２】本発明の第三の実施形態の全体処理フローである。
【図６３】本発明の第三の実施形態の論理ファイル分割制約テーブルの例である。
【図６４】本発明の第三の実施形態の論理ファイル配置制約テーブルの例である。
【図６５】本発明の第三の実施形態の物理ファイル分割制約生成ステップの処理フローである。
【図６６】本発明の第三の実施形態の合成前物理ファイル分割制約テーブルの例である。
【図６７】本発明の第三の実施形態の合成前物理ファイル配置制約テーブルの例である。
【図６８】本発明の第三の実施形態の合成方法判定ステップの処理フローである。
【図６９】本発明の第三の実施形態の合成後物理ファイル分割制約テーブルの例である。
【図７０】本発明の第三の実施形態の合成後物理ファイル配置制約テーブルの例である。
【図７１】本発明の第三の実施形態の合成後物理ファイル分割配置制約の表現例である。
【図７２】本発明の第三の実施形態の合成後物理ファイル配置制約情報生成ステップの処理フローである。
【図７３】本発明の第三の実施形態の変数依存性解析結果である。
【図７４】本発明の第三の実施形態の物理ファイル分割テンプレートの例である。
【図７５】本発明の第三の実施形態の物理ファイル配置テンプレートの例である。
【発明を実施するための形態】
【実施例１】
【００１１】
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、本実施形態の並列化設計支援システム１００の構成図である。図１に示す並列化設計支援システム１００（以下、システム１００）は、プログラムを並列化するために必要な設計作業を効率化するコンピュータシステムである。前記システム１００は例えばサーバなどのコンピュータ装置であり、ハードディスクドライブなどの記憶装置１１０、RAMなどの揮発性記憶手段であるメモリ１２０、CPU１３０、通信ポート１４０らがBUSにより互いに接続されて構成されている。
【００１２】
前記システム１００は、前記CPU１３０が、ハードディスクドライブなどの前記記憶装置１１０に格納されたプログラム１５０を、RAMなどの揮発性のメモリ１２０に読み出して実行することで、各種機能を実現している。また、前記システム１００は、コンピュータ装置が一般に備えている各種キーボードやボタン類などの入力装置１６０、ディスプレイ、スピーカー、プリンタなどの出力装置１７０を必要に応じて備える。また前記システム１００は、他装置との間のデータ授受を担うNIC（Network Interface Card）など通信ポート１４０を有し、所定の管理者等が利用する端末などとネットワークを介して通信可能となっていてもよい。
【００１３】
前記システム１００は、他の情報処理装置からネットワークを介して送信される前記プログラム１５０を前記通信ポート１４０で受信し、これをメモリ１２０や記憶装置１１０に記憶するとしてもよい。また、入力情報２１０など前記プログラム１５０の処理において使用するデータを別の情報処理装置に格納しておき、前記システム１００が前記通信ポート１４０を通じて前記情報処理装置から受信して前記プログラム１５０の処理に利用することもできる。
【００１４】
以下に、前記システム１００が、プログラム１５０の構成要素として持つ機能部と、各機能部への入力または出力となる各種データの構成の説明を行う。各種データの構成は図２に示している。
【００１５】
前記システム１００は、プログラム１５０への入力情報２１０を、入力装置１６０で受付けて記憶装置１１０に登録する入力情報登録部１０１を備えている。入力情報２１０は、並列化対象プログラム２１１と、前記並列化対象プログラム２１１の入力または出力となる物理ファイルの情報２１２と、並列化後の同時実行数である多重度２１３から構成される。本実施例では並列化対象プログラム２１１は１本のプログラムであるが、複数であってもよい。
【００１６】
また前記システム１００は、前記登録された前記並列化対象プログラム２１１の構文解析と、依存性解析を行い、その結果をプログラム構文・依存性情報２２０に出力するプログラム構文・依存性解析部１０２を備えている。構文解析・依存性解析は、例えばコンパイラの実現において適用されている技術である。前記プログラム構文・依存性情報２２０は、前記並列化対象プログラム２１１がファイル入出力処理に用いる変数を識別するファイルレコード識別情報２２１と、前記並列化対象プログラム２１１を構成する命令文を識別する命令文情報２２２と、前記並列化対象プログラム２１１の命令文が行う変数の参照と変数の更新を識別する変数参照更新情報２２３と、前記並列化対象プログラム２１１に含まれる分岐命令文の分岐条件とループ命令文の繰り返し条件の構造である条件構文木２２４と、命令文の間の制御依存関係を格納する制御依存性情報２２５と、変数の間のデータ依存関係を格納するデータ依存性情報２２６から構成される。
【００１７】
また、前記システム１００は、前記プログラム構文・依存性情報２２０に基づいて、前記並列化対象プログラム２１１の、ファイル入出力に関する骨子を表す情報である、ファイルアクセスロジックの情報２３０を出力するファイルアクセスロジック生成部１０３を備える。前記ファイルアクセスロジック情報２３０は、ファイル入出力の実行の有無や実行回数や実行順序に影響する分岐命令文やループ命令文から構成するファイルアクセス制御構造情報２３１と、前記ファイルアクセス制御構造情報２３１の中で使用されている変数が持つ、入出力ファイルへの依存関係に関する、変数依存性情報２３２から構成される。
【００１８】
また、前記システム１００は、前記ファイルアクセスロジック情報２３０に基づいて、前記並列化対象プログラム２１１に対し、入力ファイルの分割による並列化の可否を判定する並列性判定部１０４を備える。入力ファイルの分割による並列化については後述する。
【００１９】
ここで、物理ファイルとは、例えばオペレーティングシステム上で、一つの単位として認識され、物理ファイル名を与えられている、データの塊を指す。論理ファイルとは、プログラムの中で、処理単位として論理的に扱われるデータの塊を指す。例えば、２つの異なるプログラムが、同一の物理ファイルを、異なる論理ファイルとして記述することが可能である。
【００２０】
また、前記システム１００は、前記プログラム構文・依存性情報２２０と、前記ファイルアクセスロジック情報２３０に基づいて、前記並列化対象プログラム２１１を並列化するためのファイル分割方法が満たすべき制約を、前記並列化対象プログラム２１１の入出力ファイルの、プログラム内の表現である論理ファイルに対して記述する、論理ファイル分割制約情報２４０を出力する論理ファイル分割制約生成部１０５を備える。
【００２１】
また、前記システム１００は、前記論理ファイル分割制約情報２４０と入力情報２１０に含まれる前記物理ファイル情報２１２に基づいて、物理ファイルの分割方法が満たすべき制約情報２５０を出力する、物理ファイル分割制約生成部１０６を備える。
【００２２】
また、前記システム１００は、前記物理ファイル分割制約情報２５０と入力情報２１０に含まれる前記多重度２１３に基づいて、前記物理ファイル分割制約を満たす、物理ファイル分割方法のテンプレート２６０を出力する、物理ファイル分割テンプレート生成部１０７を備える。
【００２３】
これまでに示した前記システム１００における各機能部１０１から１０７はハードウェアとして実現してもよいし、メモリやハードディスクドライブなどによって実現する記憶装置１１０に格納したプログラム１５０として実現するとしてもよい。この場合、CPU１３０など制御装置がプログラム実行に合わせて記憶装置１６０より該当プログラムを読み出して、これを実行することとなる。
【００２４】
以下、本実施形態における並列化設計支援方法の実施手順について、図３の全体処理フローに従い、図３から図３１を用いながら説明する。以下で説明する各種動作は、前記システム１００のCPU１３０がメモリ１２０に読み出して実行するプログラム１５０によって実現される。前記プログラム１５０は、以下に説明する各種の動作を行うためのプログラムコードから構成されている。
（１）入力情報登録（Ｓ３０１）
図３のステップＳ３０１は、入力情報登録ステップである。前記入力情報登録部１０１は、並列化対象プログラム２１１と、物理ファイル情報２１２と、多重度２１３を、入力装置１６０で受付けて記憶装置１１０に登録する。本実施例では、並列化対象プログラムはCOBOL（商標）プログラミング言語で記述されたプログラムであり、その識別子はP01であるとし、並列化対象プログラム２１１はプログラムP01のソースコード全体であるとする。プログラムP01の具体的な内容は後述する。前記物理ファイル情報２１２の例は図４に示し、後述する。前記多重度２１３は、２であるとする。
【００２５】
図４は、前記物理ファイル情報２１２を格納した物理ファイルテーブルの例４００である。行４１０は、プログラムP01が入力とする物理ファイルの名称は「受注明細FILE」であり、プログラムP01の内部では論理ファイルF11として識別されることを示す。行４２０は、プログラムP01が出力する物理ファイルの名称は「集計FILE」であり、プログラムP01の内部では論理ファイルF12として識別されることを示す。
【００２６】
図５は、プログラムP01が行う処理例の概要である。入力ファイル５１０（受注明細FILE）と出力ファイル５２０（集計FILE）は、それぞれ固定長のレコードの羅列である。受注明細FILE５１０の各レコードは明細ID５１１と商品コード５１２と数量５１３の３つの項目から構成される。各項目の長さ（バイト数）はファイルの定義の一部であり、レコード間で共通である。受注明細FILEの各レコードは、商品コードで特定される商品が、明細IDで特定される取引において受注された数量を格納している。
【００２７】
続いて図５の出力ファイル５２０について説明する。出力ファイル５２０の各レコードは商品コード５２１と数量５２２の、２つの項目から構成される。各項目の長さ（バイト数）はファイルの定義の一部であり、レコード間で共通である。集計FILEの各レコードは、商品コード５２１で特定される商品が受注された数量の合計が数量５２２であることを示している。
【００２８】
続いて図５のプログラムP01について説明する。プログラムP01は受注明細FILEを入力ファイルとし、集計FILEを出力ファイルとするプログラムである。本実施例では、プログラムP01が行う入力ファイルへのアクセス形態は、逐次読み込みとする。プログラムP01が行う出力ファイルへのアクセス形態は、逐次書き出しとする。プログラムP01は、受注明細FILE５１０の冒頭から順次そのレコードを読み込む。同一の商品コード５１２を持つレコードを全て読み込んだと判断した時点で、数量５１３の値を合計し、集計FILE５２０に、当該商品コードに対応する商品の合計受注数量を書き出す。
【００２９】
例えば、受注明細FILEの冒頭の３件のレコード５１４を読み込んだ時点で、商品コード１１１１１に関するレコードを全て読み込み済みと判定し、集計FILE５２０にレコード５２３を書き出す。次にレコード５１５を読み込み、商品コード２２２２２に関するレコードを全て読み込み済みと判定し、レコード５２４を書き出す。
【００３０】
図６は、前記の処理を行うプログラムP01をファイル分割によって多重度２で並列化した結果を示す。入力ファイル６１０を、物理ファイル分割配置プログラム６３０が、分割後ファイル６１１と分割後ファイル６２２に分割し、それぞれ並列実行サーバ６５０と並列実行サーバ６６０に配置する。
【００３１】
並列実行サーバ６５０は、プログラムP01と同じプログラム６７０を、分割後ファイル６１１を入力ファイルとして実行する。プログラム６７０は、出力ファイル６２１を出力する。並列実行サーバ６６０は、プログラムP01と同じプログラム６８０を、分割後ファイル６１２を入力ファイルとして実行する。プログラム６８０は、出力ファイル６２２を出力する。
【００３２】
物理ファイルマージプログラム６４０は、出力ファイル６２１と出力ファイル６２２を入力とし、それらをマージしたファイル６２０を出力する。ここで、入力ファイル６１０は受注明細FILE５１０と同一であり、プログラム６７０とプログラム６８０はプログラムP01と同一であり、出力ファイル６２０は集計FILE５２０と同一である。このような物理ファイル分割配置プログラム６３０と物理ファイルマージプログラム６４０を実現することで、プログラムP01を改変することなく、プログラムP01の並列実行を実現できる。
【００３３】
本実施例は、物理ファイル分割テンプレート情報２６０を出力することで、プログラムの作成者によって作成される物理ファイル分割配置プログラム６３０及び物理ファイルマージプログラム６４０の設計を支援する、前記並列化設計支援システム１００を説明する。
【００３４】
図７は、並列化対象プログラム２１１の構成である。COBOL言語の構文に従い、プログラムは、見出し部７０１と環境部７０２とデータ部７０３と手続き部７０４から構成される。見出し部７０２は、プログラム名などの定義を含む。環境部７０２には、入出力ファイルの定義と、入出力ファイルの編成の定義を含む。例えば、プログラムP01は、環境部７０２において、入力ファイルと出力ファイルを順編成ファイルであると宣言する。
【００３５】
データ部７０３と手続き部７０４は本実施例の内容に関わるので、それらの部分を以下に説明する。
【００３６】
図８は、前記並列化対象プログラム２１１のデータ部７０３の例８０１である。COBOL言語の構文に従って記載しているので、詳細な説明は省略する。データ部の例８０１の意味について以下で説明する。
【００３７】
図９は、データ部の例８０１の記載内容のうちファイルに関する部分の模式図である。論理ファイルF11（９３０）は、変数R11（９１０）と関連付いている。変数R11（９１０）は、サイズが８バイトである変数R11−MEISAI−ID（９１１）と、サイズが５バイトである変数R11−PCODE（９１２）と、サイズが３バイトである変数R11−QUANTITY（９１３）の３つの変数を部分項目として持つ。変数R11（９１０）のサイズは１６バイトである。
【００３８】
並列化対象プログラム２１１において「READ F11」という命令文を実行すると、論理ファイルF11の１件のレコードの内容が、変数R11（９１０）に格納される。変数R11の部分項目は、当該レコードを構成する項目に対応する。
【００３９】
同様に、論理ファイルF12（９４０）は、変数R12（９２０）と関連付いている。変数R12（９２０）は、サイズが５バイトである変数R12−PCODE（９２１）と、サイズが３バイトである変数R12−QUANTITY（９２２）の２つの変数を部分項目として持つ。変数R12（９２０）のサイズは８バイトである。
【００４０】
並列化対象プログラム２１１において「WRITE R12」という命令文を実行すると、変数R12（９２０）の内容が、１件の新たなレコードとして論理ファイルF12（９４０）に書き出される。変数R12の部分項目は、当該レコードを構成する項目に対応する。
【００４１】
並列化対象プログラム２１１がCOBOL言語で記述されている場合、上記の手段によって、ファイルと関連づいた変数のレイアウトを識別することで、当該並列化対象プログラム２１１の変数と、当該並列化対象プログラムが読み書きするレコード項目のレイアウトとの対応関係を識別する。並列化対象プログラムがCOBOL以外の言語で記述されている場合においても、プログラム内の変数と、ファイルレコード項目との対応関係を識別すれば、本実施例に記載の方法による並列化設計支援を行うことができる。
【００４２】
以上が、入力情報ステップＳ３０１の説明と、入力情報２１０の説明と、前記システム１００が実現する並列化設計支援の説明である。
（２）プログラム構造・依存性解析（Ｓ３０２）
次に、図３のステップＳ３０２のプログラム構文・依存性解析について説明する。
【００４３】
ステップS３０２は、プログラム構文・依存性解析ステップである。前記プログラム構文・依存性解析部１０２は、並列化対象プログラム２１１の構文解析と依存性解析を行い、プログラム構文・依存性情報２２０を出力する。前記プログラム構文・依存性解析部１０２が行う解析処理は、コンパイラ技術やプログラム解析技術の分野で既知のものであるので、その処理内容の説明は行わない。プログラム構文・依存性解析情報２２０を構成するテーブルを例を用いて説明する。
【００４４】
図１０は、前記ファイルレコード識別情報２２１を格納したファイルレコード識別テーブルの例１０００である。ファイルレコード識別テーブル１０００の行は、並列化対象プログラム２１１の変数のうち、データ部８０１において、ファイルと関連を定義されている変数に対応する。
【００４５】
前記ファイルレコード識別テーブル１０００のカラム１００１は変数識別子であり、当該行に対応する変数を特定する。本実施例では、変数識別子と変数名は同一であるものとする。カラム１００２は論理ファイル識別子であり、当該変数が関連する論理ファイルを特定する。本実施例では、論理ファイル識別子は論理ファイル名と同一であるものとする。カラム１００３は項目識別子であり、当該変数が関連する当該論理ファイルのレコードのうち、当該変数が対応している当該レコードの部分項目を、そのレコード内の位置によって特定する。
【００４６】
例えば行１０１０によると、変数R11は論理ファイルF11に関連しその項目識別子は［1−16］である。これは、変数R11は論理ファイルF11のレコード全体（１６バイト）に対応することを示す。
【００４７】
また、例えば行１０１１によると、変数R11−MEISAI−IDは論理ファイルF11に関連しその項目識別子は［1−8］である。これは変数R11−MEISAI−IDは論理ファイルF11のレコードの冒頭８バイトの内容に対応することを示す。
【００４８】
図１１は、前記命令文情報２２２を格納した命令文テーブルの例１１００である。命令文テーブル１１００の各行は、並列化対象プログラム２１１の手続き部を解析する際の解析単位に対応する。本実施例では、解析単位を命令文と呼称し、命令文識別子を付与して識別する。解析単位は、必ずしもCOBOL言語の構文における命令文と合致しなくともよく、例えばCOBOL言語における命令文の構成要素である句を解析単位とすることもありえる。
【００４９】
命令文テーブル１１００のカラム１１０１は命令文識別子である。本実施例では、手続き部内での通し番号としている。カラム１１０２は命令文内容である。
【００５０】
命令文テーブル１１００に登場する命令文を簡単に説明する。OPEN文は、論理ファイルをオープンする命令文である。MOVE文は、変数の値を更新する命令文である。
【００５１】
READ文は、入力ファイルから１件のレコードを読み込み、当該入力ファイルのレコードに関連付けられた変数にその内容を格納する命令文である。AT END句のスコープ内にある命令文は、読み込みの結果、当該入力ファイルの終端に到達した場合に実行される。
【００５２】
PERFORM文は、そのスコープ内の命令文のグループを繰り返し実行する命令文である。繰り返し処理は、UNTIL以下に記述された条件が真となった時点で終了する。ADD文は、第一オペランドの値を第二オペランドに加算する命令文である。WRITE文は、オペランドで指定する変数の内容を、当該変数が関連付けられている論理ファイルに、１件の新しいレコードとして書き出す命令文である。
【００５３】
END−で始まる命令文は、それに対応する命令文のスコープの終端を示す。本実施例では、命令文のスコープはカラム１１０２内におけるインデントでも示している。HIGH−VALUEは定数である。
【００５４】
図１２は、前記変数参照更新情報２２３を格納する変数参照更新テーブルの例１２００である。変数参照更新テーブル１２００の行は、命令文が行う変数の参照の作用または更新の作用を表現する。
【００５５】
前記変数参照更新テーブル１２００のカラム１２０１は命令文識別子であり、当該行が対応する命令文を特定する。カラム１２０２は変数識別子であり、当該行に対応する命令文のうちの、当該行に対応する変数を特定する。カラム１２０３は種別であり、更新または参照のいずれかを特定する。
【００５６】
例えば、行１２１０は、命令文識別子４のMOVE文は、変数FLG1を更新することを示す。また、行１２２０は、命令文識別子７のMOVE文は、変数R11−PCODEを参照することを示す。
【００５７】
以下、本実施例では、説明の読みやすさを考慮し、命令文または命令文識別子を「4 (MOVE)」などのように、命令文識別子と、命令文の種類を特定する語と一緒に記載するものとする。括弧部分はあくまでも説明のためであり、前記並列化支援プログラム１５０においては括弧部分は命令文識別子の一部ではない。
【００５８】
図１３は、前記条件構文木２２４の例として、命令文6(PERFORM)のUNTIL以下の条件の条件構文木１３１０と、命令文9(PERFORM)のUNTIL以下の条件の条件構文木１３２０を示す。構文木の定義と生成方法は既知であるので説明は省略する。
【００５９】
図１４は、前記制御依存性情報２２５を格納する制御依存性テーブルの例１４００である。制御依存性テーブル１４００の行は、命令文が他の命令文に対して持つ制御依存性を表現している。制御依存性テーブル１４００のカラム１４０１は依存元命令文識別子である。カラム１４０２は依存先命令文識別子である。
【００６０】
命令文Aが命令文Bに制御依存するとは、命令文Aの実行の有無が、命令文Bの実行結果に依存するという意味である。例えば、前記制御依存性テーブル１４００の行１４１０は命令文4(MOVE)が命令文3(READ)に制御依存することを示す。これは、命令文4(MOVE)は命令文3(READ)のAT ENDのスコープ内だからである。
【００６１】
また、行１４２０は、命令文7(MOVE)は命令文6(PERFORM)に制御依存することを示す。これは命令文7(MOVE)は命令文6(PERFORM)のスコープ内だからである。本実施例では、制御依存性は、分岐や繰り返しやAT ENDのスコープを示す情報によっても代替可能である。
【００６２】
図１５は、図１４に示した前記制御依存性テーブル１４００と同様の情報を、グラフ形式で表現した制御依存グラフの例１５００を示す。制御依存グラフ１５００のノードは前記制御依存性テーブル１４００に登場する命令文に対応する。ノード間の有向エッジは、依存元命令文から依存先命令文への制御依存に対応する。このように、前記制御依存性情報２２５は、制御依存グラフとして生成・格納してもよい。
【００６３】
図１６は、前記データ依存性情報２２６を格納するデータ依存性テーブルの例１６００である。データ依存性テーブル１６００の行は、命令文の中の変数の、データ依存先の命令文とその変数を示す。カラム１６０１は依存元命令文識別子である。カラム１６０２は依存元変数識別子である。カラム１６０３は依存先命令文識別子である。カラム１６０４は依存先変数識別子である。
【００６４】
変数Aが変数Bにデータ依存するとは、変数Aの値が変数Bの値の影響を受けるという意味である。例えば、データ依存性テーブル１６００の行１６１０は、命令文17(WRITE)における変数R12−PCODEの値は、命令文15(MOVE)における変数CUR−PCODEから代入を受けていることを示す。ここで、変数R12−PCODEは命令文17(WRITE)に明示されていないが、変数R12−PCODEは当該WRITE文のオペランドR11の部分項目であるので、命令文17(WRITE)が使用している変数の一部である。
【００６５】
以上が、ステップＳ３０２（プログラム構文・依存性解析）の説明である。
（３）ファイルアクセスロジック生成（Ｓ３０３）
次に、ステップＳ３０３のファイルアクセスロジック生成について説明する。
【００６６】
図３のステップＳ３０３は、ファイルアクセスロジック生成ステップである。前記ファイルアクセスロジック生成部１０３は、前記プログラム構文・依存性情報２２０を参照しながらファイルアクセスロジック生成処理を実行し、前記ファイルアクセスロジック情報２３０を出力する。
【００６７】
図１７は、前記ファイルアクセスロジック生成部１０３の処理フローを示す。Ｓ１７０１の終端依存性解析ステップでは、Ｓ１７０３の変数依存性解析ステップで使用する終端依存性情報１８００を生成する。Ｓ１７０２のファイルアクセス制御構造解析ステップでは、前記ファイルアクセス制御構造情報２３１を生成する。Ｓ１７０３は変数依存性解析ステップであり、前記変数依存性情報２３２を生成する。
（３−１）終端依存性解析（Ｓ１７０１）
図１７の終端依存性解析ステップＳ１７０１について説明する。本実施例では、変数が、入力ファイルの終端への到達時に更新されている場合、当該変数は当該入力ファイルへの終端依存性を持つと呼称する。また、当該変数を、終端依存変数と呼称する。
【００６８】
図１８に、終端依存性情報を格納する終端依存性テーブルの例１８００を示す。終端依存性テーブル１８００の各行は、終端依存性を持つ変数に対応する。
【００６９】
前記終端依存性テーブル１８００のカラム１８０１は、終端依存変数の変数識別子である。カラム１８０２は依存先の論理ファイル識別子である。前記終端依存性テーブル１８００の行１８１０は、変数FLG1が、論理ファイルF11に終端依存することを示す。
【００７０】
終端依存変数は以下の手順で特定する。まず、命令文テーブル１１００を参照し、AT END句を持つREAD文を特定する。次に、制御依存性テーブル１４００を参照し、当該READ文へ制御依存する命令文を特定する。次に、当該命令文が更新している変数を、変数参照更新テーブル１２００を参照して特定する。最後に、当該READ文の読み込み元の論理ファイルを、ファイルレコード識別テーブル１０００に基づいて特定する。これで、当該変数が、当該論理ファイルに終端依存することが識別できる。
（３−２）ファイルアクセス制御構造解析（Ｓ１７０２）
図１７のファイルアクセス制御構造解析ステップＳ１７０２について説明する。ファイルアクセス制御構造情報は、ファイル入出力命令（READ文またはWRITE文）の実行の有無や、実行回数や、実行順序に関する制御構造（分岐やループ）を並列化対象プログラム２１１から抜粋したものである。
【００７１】
図１９に、ステップＳ１７０２が出力する前記ファイルアクセス制御構造情報２３１を格納するファイルアクセス制御構造テーブルの例１９００を示す。ファイルアクセス制御構造テーブル１９００の各行は、並列化対象プログラム２１１のうち、ファイルアクセス制御構造を構成する命令文に対応する。
【００７２】
カラム１９０１は、ファイルアクセス制御構造を構成する命令文の識別子である。カラム１９０２は、命令文の内容である。ファイルアクセス制御構造テーブル１９００の各行の順序と、命令文内容１９０２のインデントは、各行の命令文内容１９０２間の関係を示す。例えば、行１９１０の命令文9(PERFORM)は、ファイルアクセス制御構造においても、命令文6(PERFORM)のスコープ内にある。
【００７３】
図２０に、ファイルアクセス制御構造の生成手順を示す。まず、命令文テーブル１１００に基づいてファイル入出力文Ｓを識別し、ファイルアクセス制御構造の一部を生成する起点とする。当該ファイル入出力文自体もファイルアクセス制御構造の一部として識別する（Ｓ２００１）。例えば、命令文11(READ)を起点とする。
【００７４】
次に、当該ファイル入出力文の実行に影響を与える全ての制御命令を特定する（Ｓ２００２）。これは例えば、制御依存グラフ１５００において、当該命令文のノードから到達可能な全てのノードを特定することで達成できる。例えば、命令文11(READ)からは命令文9(PERFORM)と命令文6(PERFORM)が到達可能である。これにより、命令文6(PERFORM)と、命令文9(PERFORM)と、命令文11(READ)が、ファイルアクセスロジック制御構造の構成要素として識別された。
【００７５】
ファイルアクセスロジック制御構造の生成は、Ｓ２００１とＳ２００２を、全てのファイル入出力文について繰り返すことで行われる（Ｓ２００３）。以上で、図１７のＳ１７０２の説明を終える。
（３−３）変数依存性解析（Ｓ１７０３）
図１７のＳ１７０３の変数依存性解析ステップについて説明する。ここでは、ファイルアクセスロジック制御構造の中に登場する変数が持つ、入力ファイルまたは出力ファイルへの依存性を解析する。
【００７６】
本実施例では、変数依存性は、入力依存と、間接依存と、終端依存と、出力依存の４種類を定義する。入力依存とは、当該変数は入力ファイルのレコードの特定の項目と関連づいていることを意味する。間接依存とは、当該変数が、入力依存変数から代入を受けていることを意味する。終端依存は既に説明した。出力依存とは、当該変数が出力ファイルのレコードと関連づいていることを意味する。
【００７７】
図２１は、変数依存性情報２３２を格納する変数依存性テーブルの例２１００である。変数依存性テーブル２１００の行は、ファイルアクセス制御構造を構成する命令文において使用されている変数に対応する。
【００７８】
変数依存性テーブル２１００のカラム２１０１は、依存元命令文識別子である。カラム２１０２は当該依存元命令文の中の依存元変数の識別子である。カラム２１０３は依存性種別である。カラム２１０４は依存先論理ファイルの識別子である。カラム２１０５は依存先論理ファイルのレコードの中の依存先項目の識別子である。
【００７９】
変数依存性テーブル２１００の行２１１０は、終端依存変数の例である。行２１２０は、間接依存変数の例である。行２１３０は、入力依存変数の例である。行２１４０は、出力依存変数の例である。依存性種別２００３が出力依存または終端依存の場合、項目識別子カラム２００５の値は「＊」である。
【００８０】
図２２は、図１７の変数依存性解析ステップＳ１７０３の処理フローである。変数依存性解析は、ファイルアクセスロジック制御構造内で使用されている全ての変数に対して実施する（Ｓ２２０１、Ｓ２２１１）。
【００８１】
当該変数の入力依存性と出力依存性は、ファイルレコード識別テーブル１０００を用いて判定する（Ｓ２２０２、Ｓ２２０４）。例えば、変数依存性テーブル２１００の行２１３０と２１４０は、ファイルレコード識別テーブル１０００の行１０１２と行１０１３からそれぞれ生成する。入力依存の場合は項目識別子も転記するが、出力依存の場合は不要であるので「＊」とする。
【００８２】
当該変数の終端依存性は、終端依存性テーブル１８００を用いて判定する（Ｓ２２０６）。例えば、変数依存性テーブル２１００の行２１１０は、終端依存性テーブル１８００の行１８１０から生成する。項目識別子は「＊」とする。
【００８３】
入力依存、出力依存、終端依存でない変数については、データ依存性テーブル１６００に基づいて、当該変数の値に影響を与える代入の連鎖をたどり、当該変数が入力依存変数から代入をうけているかどうかを判定する（Ｓ２２０８）。
【００８４】
例えば変数依存性テーブル２１００の行２１２０は命令文9(PERFORM)の変数CUR−PCODEが間接依存変数であることを示しているが、それは以下の手順で判明する。まず、データ依存性テーブル１６００の行１６２０によって、当該変数が命令文7(MOVE)における変数R11−PCODEの値の代入を受けていることがわかる。変数R11−PCODEは入力依存変数であることが既に判明しているので、そこから代入を受けているCUR−PCODEは間接依存変数であることが判明した。
【００８５】
以上でステップS３０３のファイルアクセスロジック生成処理の説明を終える。前記並列化設計支援システム１００は、ファイルアクセスロジック情報２３０を、ディスプレイやプリンタなどの出力装置１７０へ出力することができる。前記並列化設計支援システムの使用者は、出力されたファイルアクセスロジック情報を参照することで、並列化対象プログラム２１１の処理内容をより効率的に知ることができる。
【００８６】
図２３は、ファイルアクセスロジック情報２３０の出力例２３００を示す。これは、ファイルアクセス制御構造テーブル１９００の内容に基づき、ファイルアクセス制御構造内の変数を、変数依存性テーブル２１００に基づいて、ファイルへの依存性をより明確に示す文字列で置換して表示するものである。具体的には、入力依存変数は「Ｒ（論理ファイル識別子．項目識別子）」という形式の文字列に置換して表示する。また、間接依存変数は「Ｒ＊（論理ファイル識別子．項目識別子）」という形式の文字列で置換して表示する。また、出力依存変数は、依存先の論理ファイル識別子で置換して表示する。
【００８７】
また、出力例２３００では、終端依存変数を用いた原子式を、ファイルの終端への到達を判定する条件式であることを明示する形式である「ファイルエンド（論理ファイル名）」に変換して示す。
【００８８】
出力例２３００を参照することで、前記並列化設計支援システム１００の使用者は、各変数とファイルとの関連性をより効率的に知ることができる。また、ファイルアクセス制御構造は、並列化対象プログラム２１１そのものよりも小さなサイズであるので、前記並列化設計支援システム１００の使用者は、ファイル入出力に関する制御構造をより効率的に理解することができる。
【００８９】
以上が、ステップＳ３０３（ファイルアクセスロジック生成）の説明である。
（４）並列性判定（Ｓ３０４）
次に、ステップＳ３０４の並列性判定ステップについて説明する。
【００９０】
ステップＳ３０４は、並列性判定ステップである。図２４に、本ステップの処理手順を示す。並列性判定は、ファイルアクセスロジック情報２４０に基づいて行う。WRITE文をスコープに含むループ文の開始よりも以前に終了する、READ文をスコープに含むループ文の有無を判定し、もし結果がYESならば、並列化不可と判定する（Ｓ２４０１）。このようなプログラムに対しては、並列化設計支援システム１００は、ステップＳ３０５以降を実施しない。
【００９１】
具体的には、まず制御依存グラフ１５００において、WRITE文を起点としてエッジをたどっていき、その先にはもうPERFORM文がないというPERFORM文を特定する。例では、命令文17(WRITE)を起点とすると、命令文6(PERFORM)がそのようなPERFORM文に該当する。
【００９２】
命令文6(PERFORM)よりも以前に開始されるPERFORM文がもしあったとすると、それは制御依存グラフ１５００の中で、ノード6(PERFORM)とは異なる島に属するPERFORM文でなければならないが、そのようなPERFORM文は存在しない。よって、並列化可能と判定する。
【００９３】
Ｓ３０４の並列性判定処理で「並列化不可」と判定されるようなプログラムの例として、第一のループ処理において入力ファイルを終端まで読み込み、そのループの終了後、第二のループ処理において出力ファイルへの書き出しを行うようなプログラムがある。この場合、入力ファイルを分割してしまうと、出力が異なってしまう場合があるため、本実施例の並列化設計支援システム１００は、並列化不可と判定する。
【００９４】
上記のような構造を持つプログラムが行う処理の例としては、例えば入力ファイルの全レコードから読み込んだ値の中間値を計算し、それに基づいて順次出力を行う処理がある。
【００９５】
以上が、ステップＳ３０４（並列性判定）の説明である。
（５）論理ファイル分割制約生成（Ｓ３０５）
次に、ステップＳ３０５の論理ファイル分割制約生成ステップについて説明する。
【００９６】
ステップＳ３０５は、論理ファイル分割制約生成ステップである。図２５に、その手順を示す。論理ファイル分割制約生成処理は、論理ファイル分割制約情報２４０を生成するステップＳ２５０１のみで構成される。
【００９７】
図２６に、論理ファイル分割制約情報２４０を格納する論理ファイル分割制約テーブルの例２６００を示す。本テーブルの行は、並列化対象プログラム２１１の入力ファイルに対応する。本実施例の並列化対象プログラムであるプログラムP01の入力ファイルは１つであるので、行は１つしかない。
【００９８】
論理ファイル分割制約テーブル２６００のカラム２６０１は、並列化対象プログラムの識別子である。カラム２６０２は、入力ファイルを特定する論理ファイル識別子である。カラム２６０３は、当該論理ファイルの分割における制約キーとなる変数の識別子である。カラム２６０４は、前記変数の項目識別子である。
【００９９】
論理ファイル分割制約テーブル２６００の行２６１０によると、論理ファイルF11の制約キー変数はR11−PCODEである。これは、論理ファイルF11を分割する際には、F11のレコードの項目の一つであるR11−PCODEの値が同一であるレコードは、分割後も同じファイルに存在するように分割を行う必要があることを示す。
【０１００】
例えば、R11−PCODEは、物理ファイルにおいては商品コードに該当するレコード項目に対応するが、図６に示すように、商品コードが同一のレコードは、分割後も同一ファイルになくてはならない。もし商品コードが同一である明細1と明細2の間で分割が行われると、処理結果が並列化前と並列化後で異なってしまう。
【０１０１】
変数R11−PCODEが制約キーとなるのは、当該変数が入力依存変数であり、かつまた、ファイルアクセスロジック制御構造内のループ文の、繰り返し条件で使用されているためである。このように、論理ファイル分割制約生成ステップＳ３０５では、ファイルアクセスロジックにおけるループ文の繰り返し条件を解析することで、論理ファイル分割制約を生成する。
【０１０２】
図２７に、ステップＳ２５０１の論理ファイル分割制約生成の処理フローを示す。まず、ファイルアクセス制御構造テーブル１９００に基づき、ファイルアクセス制御構造内のループ文を処理対象として特定する（Ｓ２７０１）。例えば、行１９１０のPERFORM文を処理対象とする。
【０１０３】
次に、変数依存性テーブル２１００に基づき、前記ループ文の繰り返し条件式に含まれる入力依存変数を識別し（Ｓ２７０２）、制約キー変数としてその変数識別子と項目識別子を出力する（Ｓ２７０３）。行１９１０のPERFORM文を例に取ると、変数R11−PCODEが該当するので、Ｓ２７０２で識別した依存変数を、対応する論理ファイルに対する制約キー変数として出力する。
【０１０４】
上記の処理を、ファイルアクセス制御構造内の全てのループ文に対して行う（Ｓ２７０４）。もし、入力ファイルのうち、制約キー変数が識別できなかったものがあれば、論理ファイル分割制約テーブル２４００において、当該論理ファイルに対する制約キー変数が無いことを「＊」で明示する。
【０１０５】
以上が、ステップＳ３０５（論理ファイル分割制約生成）の説明である。
（６）物理ファイル分割制約生成（Ｓ３０６）
次に、ステップＳ３０６の物理ファイル分割制約生成ステップについて説明する。
【０１０６】
ステップＳ３０６は、物理ファイル分割制約生成ステップである。図２８に、その処理フローを示す。物理ファイル分割制約生成処理は、物理ファイル分割制約情報２６０を生成するステップＳ２８０１のみで構成される。
【０１０７】
図２９に、物理ファイル分割制約情報２５０を格納する物理ファイル分割制約テーブルの例２９００を示す。本テーブルの行は、並列化対象プログラム２１１の入力ファイル（物理ファイル）に対応する。本実施例の並列化対象プログラムであるプログラムP01の入力ファイルは１つであるので、行は１つしかない。
【０１０８】
論理ファイル分割制約テーブル２９００のカラム２９０１は、物理ファイル名である。カラム２４０２は、当該物理ファイルの分割における制約キーとなる項目の識別子である。
【０１０９】
物理ファイル分割制約テーブル２９００の行２９１０によると、物理ファイル受注明細FILEの制約キー項目識別子は［9−13］である。これは、受注明細FILEを分割する際には、レコードの９バイト目から始まる５バイト長の項目に着目し、連続するレコードの当該項目の値が一致する場合は、それらの連続するレコード群は、分割後も同じファイルに存在するように分割を行う必要があることを示す。
【０１１０】
物理ファイル分割制約テーブル２９００は、論理ファイル分割制約テーブル２６００の行を、変換することで生成する。具体的には、論理ファイル分割制約テーブルの行の、論理ファイル識別子から、当該論理ファイルに対応する物理ファイル名を識別し、カラム２９０１に格納する。論理ファイルと物理ファイルの対応関係は、物理ファイルテーブル４００に基づいて特定する。また、論理ファイル分割制約テーブルの行の、項目識別子カラム２６０４の内容を、当該物理ファイルの項目識別子カラム２９０２に転記する。
【０１１１】
以上が、ステップＳ３０６（物理ファイル分割制約生成）の説明である。
（７）物理ファイル分割テンプレート生成（Ｓ３０７）
次に、ステップＳ３０７のステップについて説明する。
【０１１２】
ステップＳ３０７は、物理ファイル分割テンプレート生成ステップである。図３０に、その処理フローを示す。分割後ファイル名生成ステップＳ３００１では、多重度２１３と、分割対象の物理ファイル名から、分割後のファイル名を生成する。例えば、本実施例においては、分割対象物理ファイルは受注明細FILEであり、多重度は２である。分割によって生成される２つの物理ファイルの名称はそれぞれ受注明細FILE001と受注明細FILE002とする。
【０１１３】
図３０のステップＳ３００２は、物理ファイル分割テンプレートを生成する。図３１に、物理ファイル分割テンプレート情報２６０を格納する、物理ファイル分割テンプレートテーブル３１００を示す。本テーブルの行は、分割後ファイルに対応する。
【０１１４】
物理ファイル分割テンプレートテーブル３１０１のカラム３１０１は分割元物理ファイル名である。カラム３１０２は境界項目識別子である。カラム３１０３は境界項目レンジ制約である。カラム３１０４は分割後ファイル名である。
【０１１５】
カラム３１０２の境界項目識別子は、物理ファイル分割制約テーブル２９００のカラム２９０２の制約キー項目識別子から転記する。本実施例においては、カラム３１０３の境界項目レンジ制約は使用しないため、値は「＊」である。
【０１１６】
前記並列化設計支援システム１００の使用者は、物理ファイル分割テンプレート３１００を参照することで、並列化対象プログラム２１１をファイル分割によって並列化する際の、入力ファイルの分割方法を効率的に設計することができる。
【０１１７】
例えば前記使用者は、物理ファイル分割テンプレート３１００に基づき、分割後ファイル名はそれぞれ受注明細FILE001と受注明細FILE002とすればよいことがわかる。また、受注明細FILE001は、レコード項目［9−13］の値が変化する箇所で分割元ファイルを分割して生成することができ、受注明細FILE002も、レコード項目［9−13］の値が変化する箇所で分割元ファイルを分割して生成することができることがわかる。
【０１１８】
図６の分割後ファイル６１１は、前記使用者が、物理ファイル分割テンプレート３１００に基づき、受注明細FILE001に、境界項目［9−13］の値が11111と22222であるレコードを含めるように、また受注明細FILE002に、境界項目［9−13］の値が33333と44444であるレコードを含めるように、受注明細FILEを分割した結果を示す。
【実施例２】
【０１１９】
以下に本発明の第二の実施形態について図面を用いて詳細に説明する。第二の実施例においては、複数の入力ファイルを持つプログラムの並列化設計支援を行うシステムを説明する。
【０１２０】
例えば並列化対象プログラムが２つの入力ファイルを扱う場合、第一の入力ファイルと第二の入力ファイルの分割は相互の整合性を考慮して行う必要がある。また、第一の入力ファイルの分割後ファイルの配置と、第二の入力ファイルの分割後の配置は、相互の整合性を考慮して行う必要がある。
【０１２１】
図３２は、本実施形態の並列化設計支援システム３２００の構成図である。第一の実施例における並列化設計支援システム１００との差異のみを説明する。前記並列化設計支援システム１００における論理ファイル分割制約生成部１０５に代わり、並列化設計支援システム３２００は、論理ファイル分割配置制約生成部３２０１を備える。また、論理ファイル分割制約情報２４０に代わり、並列化設計支援システム３２００は、論理ファイル分割配置制約情報３３１０を備える。
【０１２２】
また第一の実施例における前記並列化設計支援システム１００が備える物理ファイル分割制約生成部１０６に代わり、本実施例の並列化設計支援システム３２００は、物理ファイル分割配置制約生成部３２０２を備える。また、物理ファイル分割制約情報２５０に代わり、並列化設計支援システム３２００は、物理ファイル分割配置制約情報３３２０を備える。
【０１２３】
図３３は、前記並列化設計支援システム３２００が備える各種データの構成３３００である。第一の実施例における前記並列化設計支援システム１００のデータ構成２００との差異は以下のとおりである。論理ファイル分割配置制約情報３３１０は、論理ファイル分割制約情報２４０に加えて、論理ファイル配置制約情報３３１１を備える。また、物理ファイル分割配置制約情報３３２０は、物理ファイル分割制約情報２５０に加えて、物理ファイル配置制約情報３３２１を備える。
【０１２４】
以下、本実施形態の並列化設計支援方法の実施手順について、図３４の全体処理フローに従い、図３５から図５７を用いて説明する。ステップＳ３０１（入力情報登録）、ステップＳ３０２（プログラム構文・依存性解析）、ステップＳ３０３（ファイルアクセスロジック生成）、ステップＳ３０４（並列性判定）は、第一の実施例のものと同一であるので、説明は省略する。
（１）入力情報登録（Ｓ３０１）
本実施例における入力情報を説明する。並列化対象プログラム３３０１は、プログラムP02である。物理ファイル情報３３０２を格納するテーブルの例を図３５のテーブル３５００に示す。プログラムP02は、集計FILEと倉庫FILEという２つのファイルを入力とし、出庫指示FILEを出力ファイルとする。これらの物理ファイルは、プログラムP02において、それぞれ論理ファイルF21、F22、F23としてアクセスされる。
【０１２５】
ここで、集計FILEは、第一の実施例においてプログラムP01が出力するものと同一であるが、その点については第三の実施例で説明する。
【０１２６】
図３６に、プログラムP02が行う処理の概要を例を用いて示す。この例において、集計FILEの各レコードは、商品コードで特定される商品の受注数量を表す。倉庫FILEの各レコードは、倉庫コードで特定される倉庫が保管している商品の商品コードを表す。
【０１２７】
プログラムP02が行う業務処理は、出庫指示である。各倉庫に対し、出庫すべき商品とその数量を指示するために用いられるファイルである出庫指示FILEを出力する。出庫指示FILEの各レコードは、倉庫コードで特定される倉庫に対し、商品コードで特定される商品を出庫すべきであることと、その数量を示している。
【０１２８】
図３７は、前記の処理を行うプログラムP02をファイル分割によって多重度２で並列化した結果を示す。入力ファイル３７１０を、物理ファイル分割配置プログラム３７４０が、分割後ファイル３７１１と分割後ファイル３７１２に分割する。さらに、前記物理ファイル分割配置プログラム３７４０は、入力ファイル３７２０を、分割後ファイル３７２１と分割後ファイル３７２２に分割する。
【０１２９】
そして、前記物理ファイル分割配置プログラム３７４０は、分割後ファイル３７１１と分割後ファイル３７２１を、並列実行サーバ３７６０に配置する。さらに、前記物理ファイル分割配置プログラム３７４０は、分割後ファイル３７１２と分割後ファイル３７２２を、並列実行サーバ３７７０に配置する。
【０１３０】
並列実行サーバ３７６０はプログラムP02と同じプログラム３７８０を、分割後ファイル３７１１と分割後ファイル３７２１を入力ファイルとして実行する。プログラム３７８０は、出力ファイル３７３１を出力する。
【０１３１】
同様に、並列実行サーバ３７７０はプログラムP02と同じプログラム３７９０を、分割後ファイル３７１２と分割後ファイル３７２２を入力ファイルとして実行する。プログラム３７９０は、出力ファイル３７３２を出力する。
【０１３２】
物理ファイルマージプログラム３７５０は、出力ファイル３７３１と出力ファイル３７３２を入力とし、それらをマージしたファイル３７３０を出力する。
【０１３３】
入力ファイル３７１０は集計FILE３６１０と同一であり、入力ファイル３７２０は倉庫FILE３６２０と同一である。プログラム３７８０とプログラム３７９０は、プログラムP02と同一であり、出力ファイル３７３０は出庫指示FILE３６３０と同一である。
【０１３４】
このような物理ファイル分割配置プログラム３７４０と物理ファイルマージプログラム３７５０を実現することで、プログラムP02を改変することなく、プログラムP02の並列実行を実現できる。そのためにはプログラムP02の動作の知識に基づく設計行為が必要である。
【０１３５】
本実施例は、前記物理ファイル分割配置テンプレート情報３３３０を出力することで、物理ファイル分割配置プログラム３７４０の設計を支援する、並列化設計支援システム３２００を説明する。
【０１３６】
図３８は、並列化対象プログラム３３０１のデータ部３８０１である。図３９は、データ部３８０１の記載内容のうち、ファイルに関する部分を模式的に示す。  
（２）プログラム構文・依存性解析（Ｓ３０２）
以下に、ステップＳ３０２（プログラム構文・依存性解析）の実行結果として本実施例の前記並列化設計支援システム３２００が出力する情報の例を示す。
【０１３７】
図４０は、ファイルレコード識別情報３３０３に格納されたファイルレコード識別テーブルの例４０００である。  図４１は、命令情報３３０４に格納された命令文テーブルの例４１００である。図４２は、制御依存情報３３０５に格納された制御依存性テーブルの例４２００である。これらは本実施例の理解を助けるために示した。
（３）ファイルアクセスロジック生成（Ｓ３０３）
以下に、ステップＳ３０３（ファイルアクセスロジック生成）の実行結果として、本実施例の前記並列化設計支援システム３２００が出力する情報の例を示す。
【０１３８】
図４３は、ファイルアクセス制御構造情報３３０６に格納されたファイルアクセス制御構造テーブルの例４３００である。図４４は、変数依存性情報３３０７に格納された変数依存性テーブルの例４４００である。
（４）並列性判定（Ｓ３０４）
ステップＳ３０４（並列性判定）の本実施例における判定結果は「並列化可能」となる。
【０１３９】
以上が、本実施例における、入力情報登録ステップＳ３０１と、プログラム構文・依存性解析ステップＳ３０２と、ファイルアクセスロジック生成ステップＳ３０３と、並列性判定ステップＳ３０４の説明である。次に、ステップＳ３４０４の並列性判定ステップについて説明する。
（５）論理ファイル分割配置制約生成（Ｓ３４０５）
ステップＳ３４０５は、論理ファイル分割配置制約ステップである。図４５に処理フローを示す。Ｓ２５０１（論理ファイル分割制約生成）は実施例１におけるステップと同一である。図４６に、Ｓ２５０１の出力である論理ファイル分割制約情報２４０に格納された論理ファイル分割制約テーブル４６００を示す。論理ファイルF21とF22に対する制約キー変数は無く、これらの論理ファイルの分割は、レコードの境界であればどこでも可能であることを示す。
【０１４０】
図４５のＳ４５０２は、論理ファイル配置制約生成ステップである。図４７に、本ステップの出力である、論理ファイル配置制約情報３３１１を格納する論理ファイル配置制約テーブルの例４７００を示す。本テーブルの各行は、２つの入力ファイルの間に存在する配置制約を表現する。
【０１４１】
論理ファイル配置制約テーブル４７００のカラム４７０１は、プログラム識別子である。カラム４７０２とカラム４７０５は論理ファイル識別子である。当該行に対応する２つの論理ファイルを特定する。カラム４７０３は、カラム４７０２で識別される論理ファイルに対する制約キー変数の識別子である。カラム４７０６は、カラム４７０５で識別される論理ファイルに対する制約キー変数の識別子である。カラム４７０４は、２つの論理ファイルの制約キー変数の値を比較する条件である。各識別子の「１」、「２」は論理ファイルF21， F22にそれぞれ対応する。
【０１４２】
論理ファイル配置制約テーブル４７００の内容は行４７１０のみである。これは、論理ファイルF21と論理ファイルF22の分割後ファイルを配置する際には、それぞれの制約キー変数に対応するレコード項目の値が等しい部分を、同一の並列実行サーバに配置しなければならないことを示す。
【０１４３】
行４７１０の内容は、図３７においてそうであるように、集計FILE（論理ファイルF21に対応）の商品コード（制約キー変数R21−PCODEに対応）と、倉庫ファイル（論理ファイルF22に対応）の商品コード（制約キー変数R22−PCODEに対応）が一致する部分は、同一の並列実行サーバに配置しなければならないことを示す。
【０１４４】
論理ファイル配置制約を満たさない分割後ファイルの配置は、並列化前と並列化後の並列化対象プログラム３３０１の処理結果の不一致を引き起こす。例えば、図３７において、分割後ファイル３７１１の第二レコードが、分割後３７１２の冒頭に移動した場合、商品コード22222の商品の出庫指示が出力されない。
【０１４５】
図４８は、論理ファイル配置制約生成ステップＳ４５０２の処理フローである。まず、ファイルアクセス制御構造テーブル４３００に基づき、WRITE文を特定する（Ｓ４８０１）。次に、制御依存性テーブル４２００に基づき、当該WRITE文をスコープに含む分岐命令文を特定し、その分岐条件を識別する（Ｓ４８０２）。
【０１４６】
例えば、命令文15(WRITE)は、分岐命令文である11(IF)のスコープ内にある。当該IF文の分岐条件に含まれる原子式は「R21−PCODE=R22−PCODE」である。分岐条件は、プログラム構文・依存性解析ステップの出力である条件構文木に基づいて識別する。
【０１４７】
次に、分岐条件が、２つの論理ファイルに関連づいた２つの依存変数同士の比較であることを確認する（Ｓ４８０３）。例では、変数R21−PCODEは論理ファイルF21の入力依存変数であり、変数R22−PCODEは論理ファイルF22の入力依存変数である。変数の依存性は、変数依存性テーブル４４００に基づいて確認する。
【０１４８】
Ｓ４８０３の確認結果がYESの場合は、当該分岐条件を論理ファイル配置制約に変換する（S４８０４）。例では「R21−PCODE=R22−PCODE」を、論理ファイル配置制約テーブル４７００の行４７１０に変換する。Ｓ４８０３の確認結果がＮＯの場合は処理を終了する。
【０１４９】
上記のＳ４８０１からＳ４８０４を、Ｓ４８０５とＳ４８０６に記載の条件に従って繰り返し実行することで、論理ファイル配置制約の生成が完了する。
【０１５０】
以上が、Ｓ３４０５（論理ファイル分割配置制約生成）の説明である。本ステップで生成した論理ファイル分割配置制約情報３２１０を出力装置に出力する際の例を図４９に示す。
【０１５１】
図４９の出力例４９００では、論理ファイルと、当該論理ファイルに対する分割制約をノードで表現し、論理ファイル間の配置制約をエッジで表現する。ノード４９１０は論理ファイルF21に対応する。ノード４９２０は論理ファイルF22に対応する。エッジ４９３０は、論理ファイルF21と論理ファイルF22間の配置制約に対応する。
【０１５２】
図４９のような形式で、前記並列化設計支援システム３２００が、論理ファイル分割配置制約情報３２１０を出力することで、前記並列化設計支援システム３２００の使用者は、並列化対象プログラム３３０１を並列化する際の分割制約と配置制約をより効率的に理解することができる。
（６）物理ファイル分割配置制約生成（Ｓ３４０６）
次に、図３４のステップＳ３４０６（物理ファイル分割配置制約生成）を説明する。図５０に処理フローを示す。Ｓ５００１（物理ファイル分割制約生成）は実施例１におけるステップＳ２８０１と同一である。図５１に、Ｓ２８０１の出力である物理ファイル分割制約情報２５０に格納された物理ファイル分割制約テーブルの例５１００を示す。集計FILEと倉庫FILEに対する制約キー変数は無く、これらの物理ファイルの分割は、レコードの境界であればどこでも可能であることを示す。
【０１５３】
Ｓ５００２は物理ファイル配置制約生成ステップである。図５２に、本ステップの出力である、物理ファイル配置制約情報３３２１を格納する物理ファイル配置制約テーブルの例５２００を示す。本テーブルの各行は、２つの入力ファイルの間に存在する配置制約を表現する。
【０１５４】
物理ファイル配置制約テーブル５２００のカラム５２０１とカラム５２０４は物理ファイル名である。当該行に対応する２つの物理ファイルを特定する。カラム５２０２は、カラム５２０１で特定される物理ファイルに対する制約キー項目の識別子である。カラム５２０５は、カラム５２０４で識別される物理ファイルに対する制約キー項目の識別子である。カラム５２０３は、２つの物理ファイルの制約キー項目の値を比較する条件である。
【０１５５】
以上がＳ３４０６（物理ファイル分割配置制約生成）の説明である。本ステップで生成した論理ファイル分割配置制約情報３２２０を出力装置に出力する際の表現例を図５３に示す。
【０１５６】
図５３の表現例５３００では、物理ファイルと、当該物理ファイルに対する分割制約をノードで表現し、物理ファイル間の配置制約をエッジで表現する。ノード５３１０は集計FILEに対応する。ノード５３２０は倉庫FILEに対応する。エッジ５３３０は、それら二者間の配置制約に対応する。
【０１５７】
図５３のような形式で、前記並列化設計支援システム３２００が、物理ファイル分割配置制約情報３２２０を出力することで、前記並列化設計支援システム３２００の使用者は、並列化対象プログラム３３０１を並列化する際の分割制約と配置制約をより効率的に理解することができる。
【０１５８】
以上が、ステップＳ３４０６（物理ファイル分割配置制約生成）の説明である。
（７）物理ファイル分割配置テンプレート生成（Ｓ３４０７）
次に、ステップＳ３４０７の物理ファイル分割配置テンプレート生成ステップについて説明する。
【０１５９】
ステップＳ３４０７は、物理ファイル分割配置テンプレート生成ステップである。図５４に処理フローを示す。Ｓ３００１（分割後ファイル名生成）は、実施例１における当該ステップと同一である。本実施例では、入力情報の一部として登録されている多重度２に対して、集計FILEを集計FILE001と集計FILE002に、そして、倉庫FILEを倉庫FILE001と倉庫FILE002にそれぞれ分割するものとする。
【０１６０】
ステップＳ５４０２は、物理ファイル分割テンプレート生成である。本ステップの処理内容は、実施例１における同名のステップＳ３００２と異なる。本ステップの出力例を図５５に示す。
【０１６１】
図５５は、物理ファイル分割テンプレート情報２６１を格納する物理ファイル分割テンプレート５５００である。各カラムの定義は実施例１と同一である。
【０１６２】
図５５の物理ファイル分割テンプレート５５００は、集計FILEと倉庫FILEの分割方法を指示する情報を格納する。行の順序は、分割後FILEの生成順に対応する。行５５１０と行５５２０は、まず集計FILEを分割し集計FILE001と集計FILE002を生成するよう指示する情報である。その際は、集計FILEの項目［1−5］の値の変更点を境界にする（カラム５５０２）。
【０１６３】
次に行５５２０と行５５３０は、倉庫FILEを分割し倉庫FILE001と倉庫FILE002を生成するよう指示する情報である。その際は、倉庫FILEの分割は項目［9−13］を境界とし（カラム５５０２）、さらに、倉庫FILE001には、項目［9−13］の値のレンジが、集計FILE001の項目［1−5］の値のレンジを含むことが制約である（カラム５５０３の境界項目レンジ制約）。
【０１６４】
これは、図３７に示すように、もし集計FILE001の項目［9−13］（図３７では「商品コード」）の値のレンジが｛11111，22222｝であるならば、倉庫FILE001の項目［1−5］（図３７では「商品コード」）の値のレンジは｛11111，22222｝を含まなければならないことを示す。
【０１６５】
図５６に、ステップＳ５４０２（物理ファイル分割テンプレート生成）の処理フローを示す。まず最初に、複数ある入力ファイルのうち、最初の分割元ファイルを決定し、対応する分割後ファイルについての分割ルールを出力する（Ｓ５６０１）。最初の分割元ファイルは任意に決めても良いし、入力装置を介して前記並列化設計支援システム３２００の使用者から取得してもよい。
【０１６６】
分割ルールの出力は以下の手順で行う。まず、当該分割元ファイルに関する制約キー項目を、物理ファイル分割制約テーブル５１００と物理ファイル配置制約テーブル５２００から取得する。制約キー項目が一致する場合は、当該制約キー項目の識別子を、境界項目識別子（カラム５５０２）に出力する。片方の制約キー項目が「＊」である場合は、もう片方の制約キー項目の識別子をカラム５５０２の値として出力する。
【０１６７】
例では、集計FILEを最初に分割するよう決定したものとする。集計FILEの制約キー項目識別子は、分割制約からは「＊」であり、配置制約からは［1−5］である。よって、後者を出力する。これを、集計FILEの２つの分割後ファイルに対して行う。
【０１６８】
次に、未処理の分割元ファイルのうち、処理済みである前記分割元ファイルとの間に配置制約を持つファイルを特定し、次の処理対象分割元ファイルとする（Ｓ５６０２）。ここで、当該分割対象分割元ファイルから生成する分割後ファイルと、前記処理済み分割元ファイルから生成する分割後ファイルとの間の対応関係を確立する。
【０１６９】
例では、次の処理対象分割元ファイルは倉庫FILEである。倉庫FILE001を、集計FILE001に対応させる。また、倉庫FILE002を、集計FILE002に対応させる。
【０１７０】
Ｓ５６０３において、前記処理対象ファイルの分割ルールを出力する。前記処理対象ファイルの分割元ファイルは、前記処理済みファイルの分割元ファイルとの間に配置制約を持つ。当該配置制約から、前記処理対象分割元ファイルの制約キー項目識別子を取得する。
【０１７１】
次に、前記制約キー項目識別子が、前記処理対象分割元ファイルの分割制約における制約キー項目識別子と一致するか、後者が「＊」であることを確認する。この条件を満たす場合、境界項目レンジ制約（カラム５５０３）は、前記対応関係を持つ分割後ファイルの境界識別子である。
【０１７２】
例を用いて説明する。倉庫FILE001の分割元ファイルである倉庫FILEは、対応関係にある集計FILE001の分割元ファイルである集計FILEとの間に配置制約を持つ。物理ファイル配置制約テーブル４７００基づき、制約キー項目識別子［9−13］を取得する。集計FILEの分割制約は「＊」であることを確認し、［9−13］を境界項目識別子（行５５３０のカラム５５０２）とする。
【０１７３】
行５５３０の境界項目レンジ制約（カラム５５０３）は、倉庫FILE001に対応する処理済ファイルである集計FILE001の境界項目（行５５１０のカラム５５０２）である。これを「集計FILE001．［1−5］」として、境界項目レンジ制約とする（行５５３０のカラム５５０３）。
【０１７４】
ステップＳ５６０２とＳ５６０３を全ての入力ファイルに対して繰り返す（Ｓ５６０４）。以上が、ステップＳ５４０２（物理ファイル分割テンプレート生成）の処理フローの説明である。
【０１７５】
ステップ５４０３は、物理ファイル配置テンプレート生成である。本ステップの出力例を図５７に示す。
【０１７６】
図５７は、物理ファイル配置テンプレート情報３２３１の例５７００である。カラム５７０１は配置先のノード名（並列実行サーバ名である。カラム５７０２は、配置すべき分割後ファイル名である。
【０１７７】
行５７１０と行５７２０は、集計FILE001と倉庫FILE001を同一ノード（ノード１）に配置することを指示する情報である。同様に、行５７３０と行５７４０は、集計FILE002と倉庫FILE002を同一ノード（ノード２）に配置することを指示する情報である。
【０１７８】
物理ファイル配置テンプレート５７００の生成手順は以下のとおりである。物理ファイル分割テンプレート５５００の各行を確認し、境界項目レンジ制約（カラム５５０３）が「＊」以外である行を識別する。そのような行があった場合、当該行の分割後ファイル（カラム５５０４）と前記境界項目レンジ制約に登場する分割後ファイルを、同一ノードに配置するよう、物理ファイル配置テンプレートの行を出力する。
【０１７９】
例えば、物理ファイル分割テンプレート５５００において、行５５３０は上記の条件を満たす。これにより、集計FILE001と倉庫FILE001を同一ノードに配置すべきことがわかるので、物理ファイル配置テンプレート５７００の行５７１０と行５７２０を出力する。
【０１８０】
前記並列化設計支援システム３２００の説明は以上である。当該システム３２００の使用者は、物理ファイル分割テンプレート５５００と物理ファイル配置テンプレート５７００に基づき、並列化対象プログラム３３０１をファイル分割によって並列化する際の、入力ファイルの分割方法と配置方法を効率的に設計することができる。
【０１８１】
例えば前記使用者は、物理ファイル分割テンプレート５５００に基づき、集計FILEの分割後ファイルを集計FILE001と集計FILE002に、倉庫FILEの分割後ファイルを倉庫FILE001と倉庫FILE002とした場合の、分割時の留意点を効率的に知ることができる。すなわち、集計FILEを分割する際には、項目［1−5］の値が変化する箇所で分割を行うべきことがわかる。また、倉庫FILEを分割する際には、項目［9−13］の値の変化する箇所で分割を行うべきことがわかる。
【０１８２】
さらに、倉庫FILEを分割し倉庫FILE001と倉庫FILE002を生成する際には、倉庫FILE001の項目［9−13］のレンジが、集計FILE001の項目［1−5］のレンジを含むべきことがわかる。かつ、倉庫FILE002の項目［9−13］のレンジが、集計FILE002の項目［1−5］のレンジを含むべきことがわかる。
【０１８３】
さらに前記使用者は、物理ファイル配置テンプレート５７００を参照することで、前記分割後ファイル群を配置する際に守るべき条件を効率的に知ることができる。例えば、集計FILE001と倉庫FILE001は同じノードに配置すべきであり、集計FILE002と倉庫FILE002は同じノードに配置すべきであることがわかる。
【０１８４】
このように、本実施例の並列化設計支援システム３２００によれば、前記使用者は、図３７に示す並列化の実現のための設計行為を、効率的に行うことができる。
【実施例３】
【０１８５】
以下に本発明の第三の実施形態について図面を用いて詳細に説明する。第三の実施例においては、連続して実行される２つのプログラムを並列化の範囲として扱う、並列化設計支援システムを説明する。
【０１８６】
例えばプログラムAとプログラムBがあり、プログラムAの出力ファイルXがプログラムBの入力ファイルである場合を考える。プログラムAとプログラムBの両方が、ファイル分割による並列化が可能である場合、プログラムAの実行後に、ファイルXを出力する物理ファイルマージプログラムを実行し、その後、プログラムBの実行前に、ファイルXを分割する物理ファイル分割プログラムを実行すると、ファイル分割とマージのオーバーヘッドがかかる。
【０１８７】
そこで本実施例では、プログラムAとプログラムBの間で、ファイルのマージと再分割を行わない形態での並列化の設計を支援する、並列化設計支援システムを説明する。
【０１８８】
本実施形態の並列化設計支援システムのブロック図は、第二の実施形態におけるブロック図３２と同一であるので省略する。
【０１８９】
図５８は、本実施形態の並列化設計支援システムが備える、各種データの構成５８００を示す。第二の実施例における前記並列化設計支援システム３２００のデータ構成３３００との差異は以下である。物理ファイル分割配置制約情報５８１０は、合成前物理ファイル分割制約情報５８２０と、合成前物理ファイル配置制約情報５８３０と、合成後物理ファイル分割制約情報５８４０と、合成後物理ファイル配置制約５８５０から構成される。
【０１９０】
本実施形態における並列化支援システムの入力情報を説明する。並列化対象プログラム５８６１は、複数のプログラムを含む。本実施例では、第一の実施例で用いたプログラムP01と、第二の実施例で用いたプログラムP02を、並列化対象プログラム５８６１とする。
【０１９１】
図５９に、物理ファイル情報５８６２を格納する物理ファイルテーブルの例５９００を示す。図に示すように、本テーブルは、第一の実施例における同テーブル４００と、第二の実施例における同テーブル３５００の内容を含む。プログラムP01は受注明細FILEを入力とし（行５９１０）、集計FILEを出力とする（行５９２０）。プログラムP02は、集計FILEと倉庫FILEを入力とし（行５９３０と行５９４０）、出庫指示FILEを出力とする（行５９５０）。
【０１９２】
図６０に、本実施例における並列化の範囲を示す。並列化範囲６０１０は、プログラム６０２０（P01）とプログラム６０３０(P02)である。プログラム６０２０が出力しプログラム６０３０が入力とするファイル６０４０は、並列化範囲６０１０の中間ファイルである。並列化範囲６０１０の入力はファイル「受注明細FILE」６０５０とファイル「倉庫FILE」６０６０である。並列化範囲６０１０の出力はファイル６０７０である。
【０１９３】
図６１は、前記並列化範囲６０１０を、ファイル分割によって多重度２で並列化した結果を示す。物理ファイル分割配置プログラム６１７０は、入力ファイル６０５０を、分割後ファイル「受注明細FILE001」６１１１と分割後ファイル「受注明細FILE002」６１１２に分割し、それぞれ並列実行サーバ６１９１と並列実行サーバ６１９２に配置する。
【０１９４】
さらに、物理ファイル分割配置プログラム６１７０は、入力ファイル６０６０を、分割後ファイル「倉庫FILE001」６１２１と分割後ファイル「倉庫FILE002」６１２２に分割し、それぞれ並列実行サーバ６１９１と並列実行サーバ６１９２に配置する。
【０１９５】
並列実行サーバ６１９１は、プログラムP01と同じプログラム６１３１を、分割後ファイル６１１１と分割後ファイル６１２１を入力ファイルとして実行する。プログラム(P01)６１３１は、中間ファイル（集計FILE）６１４１を出力する。
【０１９６】
次に、並列実行サーバ６１９１は、プログラムP02と同じプログラム６１５１を、中間ファイル６１４１を入力ファイルとして実行する。プログラム６１５１は、出力ファイル「出庫指示FILE」６１６１を出力する。
【０１９７】
同様に、並列実行サーバ６１９２は、プログラムP01と同じプログラム６１３２を、分割後ファイル６１１２と分割後ファイル６１２２を入力ファイルとして実行する。プログラム６１３２は、中間ファイル（集計FILE）６１４２を出力する。
【０１９８】
次に、並列実行サーバ６１９２は、プログラムP02と同じプログラム６１５２を、中間ファイル６１４２を入力ファイルとして実行する。プログラム６１５２は、出力ファイル「出庫指示FILE」６１６２を出力する。
【０１９９】
物理ファイルマージプログラム６１８０は、出力ファイル６１６１と出力ファイル６１６２を入力とし、それらをマージしたファイル６０７０を出力する。
【０２００】
このような物理ファイル分割配置プログラム６１７０と、物理ファイルマージプログラム６１８０を実現することで、並列化範囲６０１０内のプログラムを改変することなく、並列化範囲６０１０の並列実行を実現できる。そのためには、並列化範囲６０１０内のプログラム６０２０とプログラム６０３０の動作の知識に基づく設計行為が必要である。
【０２０１】
本実施例は、前記物理ファイル分割配置テンプレート情報５８５０を出力することで、物理ファイル分割配置プログラム６１７０の設計を支援する、前記並列化設計支援システムを説明する。
【０２０２】
以下、本実施形態の並列化設計支援方法の実施手順について、図６２の処理フローに従い、図６３から図７４を用いて説明する。
（１）入力情報登録（Ｓ６２０１）
ステップＳ６２０１は、入力情報登録処理である。並列化対象プログラム５７６１が２つのプログラムから構成されること以外は、実施例１における入力情報登録処理Ｓ３０１と同じである。
（２）プログラム構文・依存性解析（Ｓ６２０２）
ステップＳ６２０２は、プログラム構文解析・依存性解析処理である。並列化対象プログラム５７６１を構成する各プログラムについて、実施例１におけるプログラム構文解析・依存性解析Ｓ３０２を実行する。
（３）ファイルアクセスロジック生成（Ｓ６２０３）
ステップＳ６２０３は、ファイルアクセスロジック生成処理である。並列化対象プログラム５７６１を構成する各プログラムについて、実施例１におけるファイルアクセスロジック生成処理Ｓ３０３を実行する。
（４）並列性判定（Ｓ６２０４）
ステップＳ６２０４は、並列性判定処理である。並列化対象プログラム５７６１を構成する各プログラムについて、実施例１における並列性判定処理Ｓ３０４を実行する。
（５）論理ファイル分割配置制約生成（Ｓ６２０５）
ステップＳ６２０５は、論理ファイル分割配置制約生成処理である。並列化対象プログラム５７６１を構成する各プログラムについて、実施例２における論理ファイル配置制約生成処理Ｓ３４０５を実行する。
【０２０３】
図６３に、論理ファイル分割制約情報５８６０を格納する、論理ファイル分割制約テーブルの例６３００を示す。行６３１０は、実施例１における同テーブル２６００の行２６１０と同一である。行６３２０と行６３３０は、実施例２における同テーブル４６００の行４６１０と行４６２０と同一である。
【０２０４】
図６４に、論理ファイル配置制約情報５８７０を格納する、論理ファイル配置制約テーブルの例６４００を示す。行６４１０は、実施例２における同テーブル４７００の行４７１０と同一である。
（６）物理ファイル分割配置制約生成（Ｓ６２０６）
ステップ６２０６は、物理ファイル分割配置制約生成処理である。本ステップの処理フローは、実施例２の同ステップＳ３４０５と異なる。
【０２０５】
図６５に、本実施例の物理ファイル分割配置制約生成ステップ６２０６の処理フローを示す。ステップＳ６５０１は、合成前物理ファイル分割制約生成ステップである。本ステップは、実施例２の物理ファイル分割制約生成ステップＳ２８０１を、並列化対象プログラム５７６１を構成する各プログラムについて実行する。
【０２０６】
図６６は、合成前物理ファイル分割制約生成ステップＳ６５０１の出力である、合成前物理ファイル分割制約情報５８２０に格納された合成前物理ファイル分割制約テーブルの例６６００である。行６６１０は実施例１における物理ファイル分割制約テーブル２９００の行２９１０と同一である。行６６２０と行６６３０は、実施例２における物理ファイル分割制約テーブル５１００の行５１１０と行５１２０とそれぞれ同一である。
【０２０７】
ステップＳ６５０２は、合成前物理ファイル配置制約生成ステップである。本ステップは、実施例２の物理ファイル配置制約生成ステップＳ５００２を、並列化対象プログラム５７６１を構成する各プログラムについて実行する。
【０２０８】
図６７は、合成前物理ファイル配置制約生成ステップS６５０２の出力である、合成前物理ファイル配置制約テーブルの例６７００である。行６７１０は、実施例２における物理ファイル配置制約テーブル４７００の行４７１０と同一である。
【０２０９】
ステップＳ６５０３は、合成方法判定ステップである。並列化対象プログラム５７６１を構成する各プログラムを別々に処理することで生成した、合成前物理ファイル分割制約情報５８２０と、合成前物理ファイル配置制約情報５８３０を合成し、並列化範囲５９１０に対する制約である、合成後物理ファイル分割制約情報５８４０と、合成後物理ファイル配置制約情報５８５０を生成する方法を判定する。
【０２１０】
図６８に、Ｓ６５０３の合成方法判定ステップの処理フローを示す。まず、中間ファイル５９４０に対する、合成前物理ファイル分割制約を識別する（Ｓ６８０１）。本実施例では、中間ファイル５９４０は集計FILEである。合成前物理ファイル分割制約テーブル６６００を参照し、当該ファイルに対する合成前物理ファイル分割制約「＊」を識別する。
【０２１１】
次に、前記合成前物理ファイル分割制約に基づいて、合成方法を判定する（Ｓ６８０２）。例では、当該制約は「＊」である。これは、プログラムP02の並列化においては、分割制約が無い（レコードの境界であれば、どこで分割してもよい）ことを示す。プログラムP01が出力する中間ファイル６０４１と中間ファイル６０４２が、集計FILEのどのような分割結果であっても問題ない。よって、合成可能と判定する。合成方法は、「配置制約の変換」と判定する。
【０２１２】
ステップＳ６５０４は、物理ファイル分割制約合成ステップである。本ステップの出力例を図６９に示す。
【０２１３】
図６９は、合成後物理ファイル分割制約情報５８４０を格納する合成後物理ファイル分割制約テーブル６９００である。本テーブルは、並列化範囲５９１０の入力ファイル５９５０と、入力ファイル５９６０に対する分割制約を、それぞれ行６９１０と行６９２０に示している。
【０２１４】
本ステップ（Ｓ６５０４）では、ステップ６５０３で判定した合成方法に従い、合成前物理ファイル分割制約情報５７２０から合成後物理ファイル分割制約情報５８４０を生成する。
【０２１５】
合成方法が「配置制約の変換」である場合の処理方法を例を用いて説明する。合成前物理ファイル分割制約テーブル６６００のうち、並列化範囲５９１０の入力ファイルに該当する行を、合成後物理ファイル分割制約テーブル６９００に転記する。例では、受注明細FILEと倉庫FILEに該当する行（行６６１０と行６６３０）を転記する。
【０２１６】
ステップ６５０５は、物理ファイル配置制約合成ステップである。本ステップの出力例を図７０に示す。
【０２１７】
図７０は、合成後物理ファイル配置制約情報５８５０を格納する合成後物理ファイル配置制約テーブル７０００である。本テーブルは、並列化範囲５９１０の入力ファイル５９５０と、入力ファイル５９６０に対する配置制約を、行７０１０に示している。
【０２１８】
本ステップ（Ｓ６５０５）では、ステップ６５０３で判定した合成方法に従い、合成前物理ファイル配置制約情報５８３０から、合成後物理ファイル配置制約情報５７５０を生成する。処理フローを図７２に示す。
【０２１９】
合成方法が「配置制約の変換」である場合の処理の概要を、図７１に示す。表現例７１１０は、合成前物理ファイル分割制約情報５８２０と合成前物理ファイル配置制約情報５８３０の表現例である。表現例７１２０は、合成後物理ファイル分割制約情報５８４０と合成後物理ファイル配置制約情報５８５０の表現例である。
【０２２０】
表現例７１２０は、３つの物理ファイルとその分割制約を、ノード７１１１と、ノード７１１２と、ノード７１１３で表現する。配置制約を、エッジ７１１４で表現する。
【０２２１】
表示例７１２０は、合成後物理ファイル配置制約情報７０００の出力例である。並列化範囲６０１０に対する２つの入力ファイルに対する分割制約をノード７１２１とノード７１２２で表現する。配置制約を、エッジ７１２４で表現する。ノード７１２２は、並列化範囲６０１０の中間ファイルを表現する。
【０２２２】
図７２に、合成方法が「配置制約の変換」である場合の、物理ファイル配置制約合成ステップ（Ｓ６５０５）の処理フローを示す。
【０２２３】
まず、配置制約のうち、中間ファイルの制約キー項目を用いている配置制約を識別する（Ｓ７２０１）。例では、テーブル６７００の行６７１０の配置制約が該当する。用いている中間ファイルと制約キー項目は、集計FILEの［1−5］である。
【０２２４】
次に、中間ファイルを出力するプログラムにおいて、WRITE文実行時に、前記制約キー項目の値を格納している出力依存変数を識別する（Ｓ７２０２）。例では、プログラムP01の変数R12−PCODEである。これは、プログラムP01に関するファイルレコード識別テーブル１０００に基づいて識別可能である。
【０２２５】
ステップＳ７２０３において、当該出力依存変数が間接依存する、入力論理ファイル項目を識別する。間接依存性の識別方法は、実施例１におけるステップＳ１７０３と同一である。例では、変数R12−PCODEは、論理ファイルF11の項目［9−13］に間接依存する。間接依存性の識別結果を、図２１と類似の構成を用いて、図７３に示す。
【０２２６】
ステップＳ７２０４では、前記入力論理ファイル項目を、物理ファイル項目に変換する。例では、「受注明細ファイル．［9−13］」に変換する。これは、プログラムP01における論理ファイルF11は、集計FILEに該当するからである。
【０２２７】
ステップＳ７２０１で識別した配置制約に戻り、当該制約における中間ファイルに対する制約キー項目を、ステップＳ７２０４において識別した物理ファイルの項目で置換する（Ｓ７２０５）。例では、図７０００の行７０１０がその結果に該当する。また、図７１の表現例では、合成前の配置制約エッジ７１１４を、合成後の配置制約エッジ７１２４のように書き換える操作に該当する。これらはともに、集計FILE．［1−5］を、受注明細FILE．［9−13］で置換した結果である。
【０２２８】
以上のステップＳ７２０１からステップＳ７２０５を、中間ファイルに関する物理ファイル配置制約Ｃを全てについて実行する。全てについて実行済みであれば、本処理を終了する（Ｓ７２０６）。
【０２２９】
上記の処理フローにより、合成後物理ファイル配置制約テーブル７０００を出力する。以上が、本実施例のステップＳ６５０５の説明である。
【０２３０】
ステップＳ６２０７は、物理ファイル分割配置テンプレート生成ステップである。本ステップは、実施例２における同ステップＳ３４０７と同一である。
【０２３１】
ステップ６２０７の出力結果の例を図７４と図７５に示す。図７４は、物理ファイル分割テンプレート情報５８８０に格納された物理ファイル分割テンプレートの例７４００である。図７５は、物理ファイル配置テンプレート情報５８９０に格納された物理ファイル配置テンプレートの例７５００である。
【０２３２】
本実施例の並列化設計支援システムの使用者は、前記物理ファイル分割配置テンプレート情報５７５０を参照することで、図６０に示す並列化を実現するための設計行為を効率的に行うことができる。
【符号の説明】
【０２３３】
１００：並列化設計支援システム
１１０：記憶装置
１２０：メモリ
１３０：ＣＰＵ
１４０：通信ポート
１５０：並列化設計支援プログラム
１６０：入力装置
１７０：出力装置
１０１：入力情報登録部
１０２：プログラム構文・依存性解析部
１０３：ファイルアクセスロジック生成部
１０４：並列性判定部
１０５：論理ファイル分割制約生成部
１０６：物理ファイル分割制約生成部
１０７：物理ファイル分割テンプレート生成部
２１０：入力情報
２２０：プログラム構文・依存性情報
２３０：ファイルアクセスロジック情報
２４０：論理ファイル分割制約情報
２５０：物理ファイル分割制約情報
２６０：物理ファイル分割テンプレート情報
【図１】
2014157384.tif 000003
【図２】
2014157384.tif 000004
【図３】
2014157384.tif 000005
【図４】
2014157384.tif 000006
【図５】
2014157384.tif 000007
【図６】
2014157384.tif 000008
【図７】
2014157384.tif 000009
【図８】
2014157384.tif 000010
【図９】
2014157384.tif 000011
【図１０】
2014157384.tif 000012
【図１１】
2014157384.tif 000013
【図１２】
2014157384.tif 000014
【図１３】
2014157384.tif 000015
【図１４】
2014157384.tif 000016
【図１５】
2014157384.tif 000017
【図１６】
2014157384.tif 000018
【図１７】
2014157384.tif 000019
【図１８】
2014157384.tif 000020
【図１９】
2014157384.tif 000021
【図２０】
2014157384.tif 000022
【図２１】
2014157384.tif 000023
【図２２】
2014157384.tif 000024
【図２３】
2014157384.tif 000025
【図２４】
2014157384.tif 000026
【図２５】
2014157384.tif 000027
【図２６】
2014157384.tif 000028
【図２７】
2014157384.tif 000029
【図２８】
2014157384.tif 000030
【図２９】
2014157384.tif 000031
【図３０】
2014157384.tif 000032
【図３１】
2014157384.tif 000033
【図３２】
2014157384.tif 000034
【図３３】
2014157384.tif 000035
【図３４】
2014157384.tif 000036
【図３５】
2014157384.tif 000037
【図３６】
2014157384.tif 000038
【図３７】
2014157384.tif 000039
【図３８】
2014157384.tif 000040
【図３９】
2014157384.tif 000041
【図４０】
2014157384.tif 000042
【図４１】
2014157384.tif 000043
【図４２】
2014157384.tif 000044
【図４３】
2014157384.tif 000045
【図４４】
2014157384.tif 000046
【図４５】
2014157384.tif 000047
【図４６】
2014157384.tif 000048
【図４７】
2014157384.tif 000049
【図４８】
2014157384.tif 000050
【図４９】
2014157384.tif 000051
【図５０】
2014157384.tif 000052
【図５１】
2014157384.tif 000053
【図５２】
2014157384.tif 000054
【図５３】
2014157384.tif 000055
【図５４】
2014157384.tif 000056
【図５５】
2014157384.tif 000057
【図５６】
2014157384.tif 000058
【図５７】
2014157384.tif 000059
【図５８】
2014157384.tif 000060
【図５９】
2014157384.tif 000061
【図６０】
2014157384.tif 000062
【図６１】
2014157384.tif 000063
【図６２】
2014157384.tif 000064
【図６３】
2014157384.tif 000065
【図６４】
2014157384.tif 000066
【図６５】
2014157384.tif 000067
【図６６】
2014157384.tif 000068
【図６７】
2014157384.tif 000069
【図６８】
2014157384.tif 000070
【図６９】
2014157384.tif 000071
【図７０】
2014157384.tif 000072
【図７１】
2014157384.tif 000073
【図７２】
2014157384.tif 000074
【図７３】
2014157384.tif 000075
【図７４】
2014157384.tif 000076
【図７５】
2014157384.tif 000077