JP6454706B2 - ソースコード変換 - Google Patents

ソースコード変換 Download PDF

Info

Publication number
JP6454706B2
JP6454706B2 JP2016533594A JP2016533594A JP6454706B2 JP 6454706 B2 JP6454706 B2 JP 6454706B2 JP 2016533594 A JP2016533594 A JP 2016533594A JP 2016533594 A JP2016533594 A JP 2016533594A JP 6454706 B2 JP6454706 B2 JP 6454706B2
Authority
JP
Japan
Prior art keywords
programming language
software specification
data
software
representation
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.)
Active
Application number
JP2016533594A
Other languages
English (en)
Other versions
JP2017502385A (ja
Inventor
ジョナサン ベイト−アハロン
ジョナサン ベイト−アハロン
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2017502385A publication Critical patent/JP2017502385A/ja
Application granted granted Critical
Publication of JP6454706B2 publication Critical patent/JP6454706B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

関連出願の相互参照
本出願は、2013年12月6日に出願された米国特許出願第61/912,594号明細書に対する優先権を主張するものである。
本記述は、ソースコード変換に関し、詳細には、1又は2以上の元のソフトウェアプログラミング言語で指定されたソースコードを、1又は2以上の他の異なるソフトウェアプログラミング言語に変換することに関する。
ソフトウェア開発の分野では、ソフトウェア技術者は、いくつかの異なるプログラミング言語のうちの1又は2以上でソフトウェアを開発することを選ぶことができる。本記述の執筆時点で、開発者によって従来使用されている現代のプログラミング言語のいくつかの例は、Java、C#、及びC++である。一般に、各プログラミング言語にはその利点と欠点があり、所与のアプリケーションのための適切なプログラミング言語を選ぶときにこれらの利点と欠点を考慮に入れることは、ソフトウェア技術者の仕事である。
長年にわたり、プログラミング言語の最新技術は進歩してきており、それにより、いくつかの初期のプログラミング言語は、より使用されなくなり、もはやサポートされなくなり、及び/又は時代遅れになった。このような初期のプログラミング言語のいくつかの例は、Basic及びFortranである。それでもなお、「レガシー」コードとしばしば呼ばれるこれらの初期のプログラミング言語で書かれたソースコードは、その十分な性能により、何年も生産され続けることが一般的にある。しかし、このようなレガシーコードが十分に機能しなくなり、コードへの変更が必要になったとき、レガシーコードを更新するための必要なスキルを有するソフトウェア技術者を見つけるのが困難である可能性がある。
この理由で、ソース間(source-to-source)コンパイラが開発された。ソース間コンパイラは、第1のプログラミング言語で指定された第1のソフトウェア仕様を入力として受け取り、第2の異なるプログラミング言語で指定された第2のソフトウェア仕様を出力として生成する。このようなソース間コンパイラを使用して、レガシーコードは現代のプログラミング言語に変換され、これらの現代のプログラミング言語は、現代のプログラミング言語の使用に熟練したソフトウェア技術者によってより容易に編集される。
解決される技術的問題は、手続き型言語によるソースコードを含むソフトウェア仕様と、手続き型プログラミング構成体に制限される言語ではなく異なるモダリティを使用して動作する言語によるソースコードを含むソフトウェア仕様と、の間で変換することに関係する。例えば、言語は、異なる手続き間で明示的に行われる制御のみによって実行が駆動されるのではなく、データが単独で又は明示的な制御フローとの組合せで異なるプログラミングエンティティ間を流れて実行を駆動することを伴うモダリティで動作する場合がある。このような根本的な違いを有する言語間でソースコードを変換することは、異なるスタイルの言語間での単なる文字変換以上のものを必要とする。複数の言語によるソースコードを伴うシステムの場合、解決される別の技術的問題は、これらの複数の言語の特徴を異なる言語に組み込んだ、新しいシステムのためのソースコードを提供することに関係する。
一態様では、一般に、ソフトウェア仕様変換の方法は:第1のプログラミング言語(例えばCOBOL)で指定された第1のソフトウェア仕様を受け取るステップと;第2のプログラミング言語(例えばCOBOL)で指定された第2のソフトウェア仕様を受け取るステップと;第3のプログラミング言語(いくつかの実施形態では、第3のプログラミング言語は、第1及び第2のプログラミング言語とは異なり、例えばJCLである)で指定された第3のソフトウェア仕様を受け取るステップであって、第3のソフトウェア仕様が第1のソフトウェア仕様と第2のソフトウェア仕様との間の1又は2以上のデータ関係を定義する、ステップと;第1のソフトウェア仕様の表現を、第1、第2、及び第3のプログラミング言語とは異なる第4のプログラミング言語(例えばデータフローグラフ)で形成するステップと;第2のソフトウェア仕様の表現を第4のプログラミング言語で形成するステップと;第3のソフトウェア仕様を分析して1又は2以上のデータ関係を識別するステップと;第1のソフトウェア仕様と第2のソフトウェア仕様との結合された表現を第4のプログラミング言語で形成するステップであって、識別された1又は2以上のデータ関係に従って、第4のプログラミング言語による第1のソフトウェア仕様の表現と、第4のプログラミング言語による第2のソフトウェア仕様の表現との間の接続を、第4のプログラミング言語で形成することを含むステップと、を含む。
態様は、以下の特徴のうちの1又は2以上を含むことができる。
第1のプログラミング言語は、手続き型プログラミング言語である。
第4のプログラミング言語は、ソフトウェア仕様の異なる部分間の並列性を可能にする。
第4のプログラミング言語は、複数のタイプの並列性を可能にする。これらの複数のタイプの並列性は:ソフトウェア仕様のある部分の複数のインスタンスが入力データストリームの異なる複数の部分に作用するのを可能にする、第1のタイプの並列性と;ソフトウェア仕様の異なる複数の部分が入力データストリームの異なる複数の部分に対して同時に実行されるのを可能にする、第2のタイプの並列性と、を含む。
第2のプログラミング言語は、手続き型プログラミング言語である。
第2のプログラミング言語は、第1のプログラミング言語と同じである。
第1のソフトウェア仕様と第2のソフトウェア仕様との間の1又は2以上のデータ関係は、第1のソフトウェア仕様が第1のデータセットからデータを受け取り、第2のソフトウェア仕様が第1のデータセットにデータを提供することに対応する、少なくとも1つのデータ関係を含む。
第4のプログラミング言語は、データフローグラフベースのプログラミング言語である。
第4のプログラミング言語による接続は、データのフローを表す有向リンクに対応する。
第1のソフトウェア仕様は、1又は2以上のデータセットと対話するように構成され、各データセットは、第1のソフトウェア仕様において複数のデータセットタイプのうちの関連するデータセットタイプを有する。第2のソフトウェア仕様は、1又は2以上のデータセットと対話するように構成され、各データセットは、第2のソフトウェア仕様において複数のデータセットタイプのうちの関連するタイプを有する。この方法はさらに、第1のソフトウェア仕様を処理するステップを含み、処理するステップは:第1のソフトウェア仕様の1又は2以上のデータセットを識別し、識別された1又は2以上のデータセットのそれぞれにつき、第1のソフトウェア仕様におけるデータセットの関連するタイプを決定するステップと;第1のソフトウェア仕様の表現を第4のプログラミング言語で形成するステップであって、識別された1又は2以上のデータセットのそれぞれにつき、データセットの仕様を第4のプログラミング言語で形成することを含み、第4のプログラミング言語によるデータセットの仕様が、第1のプログラミング言語によるデータセットの関連するタイプに対応するタイプを有する、ステップとを含み、第4のプログラミング言語による1又は2以上のデータセットの仕様の少なくとも1つは、入力データセットタイプ又は出力データセットタイプを有する。この方法はさらに、第2のソフトウェア仕様を処理するステップを含み、処理するステップは:第2のソフトウェア仕様の1又は2以上のデータセットを識別し、識別された1又は2以上のデータセットのそれぞれにつき、第2のソフトウェア仕様におけるデータセットの関連するタイプを決定するステップと;第2のソフトウェア仕様の表現を第4のプログラミング言語で形成するステップであって、識別された1又は2以上のデータセットのそれぞれにつき、データセットの仕様を第4のプログラミング言語で形成することを含み、第4のプログラミング言語によるデータセットの仕様が、第1のプログラミング言語によるデータセットの関連するタイプに対応するタイプを有する、ステップとを含み、第4のプログラミング言語による1又は2以上のデータセットの仕様の少なくとも1つは、入力機能又は出力機能を可能にする。
結合された表現を形成するステップは:入力機能を可能にする第4のプログラミング言語による第2のソフトウェア仕様の1又は2以上のデータセットの仕様と、第4のプログラミング言語による第2のソフトウェア仕様の表現との間の接続を、第4のプログラミング言語による第1のソフトウェア仕様の表現と、第4のプログラミング言語による第2のソフトウェア仕様の表現との間の接続で置き換えるために、1又は2以上の接続を形成するステップと;入力機能を可能にする第4のプログラミング言語による第1のソフトウェア仕様の1又は2以上のデータセットの仕様と、第4のプログラミング言語による第1のソフトウェア仕様の表現との間の接続を、第4のプログラミング言語による第2のソフトウェア仕様の表現と、第4のプログラミング言語による第1のソフトウェア仕様の表現との間の接続で置き換えるために、1又は2以上の接続を形成するステップと、のうちの少なくとも一方を含む。
この方法はさらに:第4のプログラミング言語による第1のソフトウェア仕様の表現中で出力機能を可能にする、第4のプログラミング言語による第1のソフトウェア仕様の1若しくは2以上のデータセットを保存するステップ;又は、第4のプログラミング言語による第2のソフトウェア仕様の表現中で出力機能を可能にする、第4のプログラミング言語による第2のソフトウェア仕様の1若しくは2以上のデータセットを保存するステップを含む。
第1のソフトウェア仕様は1又は2以上のデータ変形操作を含み、第1のソフトウェア仕様を分析するステップは、1又は2以上のデータ変形操作のうちの少なくともいくつかを識別して、識別されたデータ変形操作を、第4のプログラミング言語の対応するデータ変形タイプに分類するステップを含む。第1のソフトウェア仕様の表現を第4のプログラミング言語で形成するステップは、識別されたデータ変形操作のそれぞれにつき、データ変形操作の仕様を第4のプログラミング言語で形成するステップを含み、第4のプログラミング言語によるデータ変形操作の仕様は、第1のプログラミング言語による識別されたデータ変形操作のデータ変形タイプに対応するデータ変形操作を可能にする。
第4のプログラミング言語による1又は2以上のデータセットの仕様の少なくとも1つは、読取専用ランダムアクセスデータセットタイプを有する。
第1のソフトウェア仕様におけるデータセットの関連するタイプを決定するステップは、データセット定義とデータセットにアクセスするコマンドとのパラメータを分析するステップを含む。
パラメータは、データセットに関連するファイル編成、データセットに関連するアクセスモード、データセットを開くのに使用されるモード、及び入出力操作、のうちの1又は2以上を含む。
この方法はさらに、第1のソフトウェア仕様と第2のソフトウェア仕様との結合された表現をストレージ媒体に記憶するステップを含む。
第1のソフトウェア仕様は、1又は2以上のデータセットと対話する1又は2以上のデータ処理操作を定義し、第2のソフトウェア仕様は、1又は2以上のデータセットと対話する1又は2以上のデータ処理操作を定義する。
第3のソフトウェア仕様は、第1のソフトウェア仕様の1又は2以上のデータセットと、第2のソフトウェアの1又は2以上のデータセットとの間の、1又は2以上のデータ関係を定義する。
別の態様では、一般に、ソフトウェア仕様変換のために、ソフトウェアがコンピュータ可読媒体に非一時的な形で記憶される。このソフトウェアは:第1のプログラミング言語で指定された第1のソフトウェア仕様を受け取ること;第2のプログラミング言語で指定された第2のソフトウェア仕様を受け取ること;第1及び第2のプログラミング言語とは異なる第3のプログラミング言語で指定された第3のソフトウェア仕様を受け取ることであって、第3のソフトウェア仕様が、第1のソフトウェア仕様と第2のソフトウェア仕様との間の1又は2以上のデータ関係を定義する、受け取ること;第1のソフトウェア仕様の表現を、第1、第2、及び第3のプログラミング言語とは異なる第4のプログラミング言語で形成すること;第2のソフトウェア仕様の表現を第4のプログラミング言語で形成すること;第3のソフトウェア仕様を分析して1又は2以上のデータ関係を識別すること;並びに、第1のソフトウェア仕様と第2のソフトウェア仕様との結合された表現を第4のプログラミング言語で形成することであって、識別された1又は2以上のデータ関係に従って、第4のプログラミング言語による第1のソフトウェア仕様の表現と、第4のプログラミング言語による第2のソフトウェア仕様の表現との間の接続を、第4のプログラミング言語で形成することを含む、形成すること、をコンピューティングシステムに行わせるための命令を含む。
別の態様では、一般に、ソフトウェア仕様変換のためのコンピューティングシステムは、ソフトウェア仕様を受け取るように構成された入力デバイス又はポートを備え、ソフトウェア仕様は:第1のプログラミング言語で指定された第1のソフトウェア仕様と;第2のプログラミング言語で指定された第2のソフトウェア仕様と;第1及び第2のプログラミング言語とは異なる第3のプログラミング言語で指定された第3のソフトウェア仕様とを含み、第3のソフトウェア仕様は、第1のソフトウェア仕様と第2のソフトウェア仕様との間の1又は2以上のデータ関係を定義する。コンピューティングシステムはまた、受け取られたソフトウェア仕様を処理するように構成された少なくとも1つのプロセッサを備え、処理することは:第1のソフトウェア仕様の表現を、第1、第2、及び第3のプログラミング言語とは異なる第4のプログラミング言語で形成すること;第2のソフトウェア仕様の表現を第4のプログラミング言語で形成すること;第3のソフトウェア仕様を分析して1又は2以上のデータ関係を識別すること;並びに、第1のソフトウェア仕様と第2のソフトウェア仕様との結合された表現を第4のプログラミング言語で形成することであって、識別された1又は2以上のデータ関係に従って、第4のプログラミング言語による第1のソフトウェア仕様の表現と、第4のプログラミング言語による第2のソフトウェア仕様の表現との間の接続を、第4のプログラミング言語で形成することを含む、形成すること、を含む。
態様は、以下の利点のうちの1又は2以上を含むことができる。
異なるプログラム仕様間のいくつかのデータ関係を識別することに基づいてプログラムを変換することで、データ処理システム中などの様々なコンテキストでより効率的に実行され得る結合された仕様の形成が可能になる。例えば、1又は2以上の手続き型プログラミング言語で書かれたプログラムをデータフローグラフ表現に変換することによって、コンポーネント並列性、データ並列性、及びパイプライン並列性が可能になる。コンポーネント並列性については、データフローグラフは、コンポーネント間のデータのフロー(又は「データフロー」)を表す有向リンクによって相互接続された複数のコンポーネントを含み、データフローグラフの異なる複数の部分におけるコンポーネントが、別々のデータフロー上で同時に稼働することができる。データ並列性については、データフローグラフは、セグメント(又は「パーティション」)に分割されたデータを処理し、コンポーネントの複数のインスタンスが、各セグメント上で同時に動作することができる。パイプライン並列性については、データフローリンクによって接続されたデータフローグラフ中のコンポーネントは、上流コンポーネントがそのデータフロー上にデータを追加し下流コンポーネントがそのデータフローからデータを受け取るのに伴って、同時に稼働することができる。
手続き型プログラミング言語で書かれたプログラム(又は、プログラムの少なくともいくつかの部分の仕様)を、プログラムのデータフローグラフ表現に変換することで、データフローグラフ表現の異なるコンポーネントを異なるサーバ上で実行するのを可能にすることができる。
手続き型プログラミング言語で書かれたプログラムによって必要とされる(その非並列性質のせいで)場合のある中間データセットを、データフローグラフから除去することができる。これは、プログラムのデータフローグラフ表現に変換し、中間データセットをデータのフローで置き換えることによって行うことができる。いくつかの例では、中間データセットは、データフローグラフの中を流れるデータのパスから外に出され、保存されて、それにより、データセットを使用する他のどのようなプログラムも、データセットに含まれるデータに引き続きアクセスできることが保証される。いくつかの例では、中間データセットを除去することで、ストレージ及びI−Oトラフィックの要件を低減することができる。
1又は2以上の手続き型プログラミング言語で書かれたプログラムをデータフローグラフ表現に変換することで、プログラムを通したデータ系統の視覚化が可能になる。
データフロープログラミング言語は、データベースタイプにとらわれない。したがって、手続き型プログラミング言語で書かれたプログラムをプログラムのデータフローグラフ表現に変換することで、手続き型プログラミング言語で書かれたプログラムによって元々サポートされていなかったタイプのデータベースを用いてプログラムを使用することを可能にすることができる。すなわち、手法は、コード(例えばJCL/COBOLコード)中の入力及び出力を、多くの異なるタイプのソース及びシンク(例えば、キュー、データベーステーブル、ファイルなど)に接続され得るフローに抽象化することができる。
手続き型プログラミング言語で書かれたプログラムをプログラムのデータフローグラフ表現に変換することで、再使用可能なユーザ定義データタイプの使用を可能にすることができる。これは、データタイプ(すなわちメタデータ)とストレージ割振りとの間を明確に区別せず、その代りにこの2つをデータ部において結合する、COBOLなどのいくつかの手続き型プログラミング言語と比較したときに有利である。本明細書に記載の手法は、COBOLソースコードからメタデータを抽出し、再使用可能なデータタイプ(例えばDMLデータタイプ)及びタイプ定義ファイルを作成する。再使用可能なデータタイプ及びタイプ定義ファイルは、手続き型変形の最初におけるストレージ割振りに使用することができ、また、ポート及びルックアップファイルレコード定義に使用することができる。いくつかの例では、抽出されたデータタイプ(例えば、COBOLからのデータタイプメタデータ)を、抽出されたデータセット(例えば、JCLからのデータセットメタデータ)と共に使用して、同じデータセットにアクセスする複数のプログラムからのデータの部分的な記述(すなわち部分的なメタデータ)を、データの包括的な記述に統合することもできる。
1又は2以上の手続き型プログラミング言語で書かれたプログラムをデータフローグラフ表現に変換することで、データフローグラフベースのグラフィカル開発環境を通した単純化されたプログラム編集が可能になる。
本発明の他の特徴及び利点は、後続の記述及び特許請求の範囲から明らかになるであろう。
ソフトウェア変換モジュールを含むシステムのブロック図である。 ソフトウェア仕様の概略的な例を示す図である。 最上レベルのソフトウェア変換モジュールのブロック図である。 ソフトウェア変換モジュールのブロック図である。 データセット機能と、それらに関連するデータセット編成タイプ、アクセスモード、及びオープンモードの組合せとのテーブルを示す図である。 第1の手続き型変形を示す図である。 第2の手続き型変形を示す図である。 第3の手続き型変形を示す図である。 プログラムのデータフローグラフ表現を示す図である。 複合データフローグラフの作成を示す図である。 図3の最上レベルのソフトウェア変換モジュールの動作例を示す図である。 図4のソフトウェア変換モジュールの動作例を示す図である。 複合データフローグラフを示す図である。
図1に、本明細書に記載のソースコード変換技法を使用してプログラムが変換され得る、データ処理システム100の例を示す。変換されたプログラムを実行して、データ処理システム100のデータソース102からのデータを処理することができる。変換モジュール120が、1又は2以上の手続き型プログラミング言語による第1のソフトウェア仕様122を入力として受け入れ、ソフトウェア仕様122を処理して、第1のソフトウェア仕様122の複合データフローグラフ表現332を、データフローベースのプログラミング言語で生成する。第1のソフトウェア仕様122のデータフローグラフ表現332はデータストレージシステム116に記憶され、データストレージシステム116から、開発環境118内で視覚的に提示されることが可能である。開発者120が、開発環境118を使用して、第1のソフトウェア仕様122のデータフローグラフ表現332を検証及び/又は修正することができる。
システム100は、データソース102を含む。データソース102は、ストレージデバイスや、オンラインデータストリームへの接続など、データの1又は2以上のソースを含むことがあり、これらの各ソースは、様々なフォーマット(例えば、データベーステーブル、表計算ファイル、フラットテキストファイル、又は、メインフレームによって使用されるネイティブフォーマット)のいずれかで、データを記憶又は提供することができる。実行環境104が、ローディングモジュール106及び実行モジュール112を含む。実行環境104は、例えば、UNIXオペレーティングシステムのバージョンなど適切なオペレーティングシステムの制御下にある1又は2以上の汎用コンピュータ上でホストされてよい。例えば、実行環境104は、複数の中央処理装置(CPU,central processing unit)又はプロセッサコアを使用するコンピュータシステムの構成を含めた、複数ノード並列コンピューティング環境を含むことができ、この構成は、ローカル(例えば、対称型マルチプロセッシング(SMP,symmetric multi-processing)コンピュータなどのマルチプロセッサシステム)又はローカル分散型(例えば、クラスタとして結合された複数のプロセッサ、若しくは超並列処理(MPP,massively parallel processing)システムであるか、或いは、リモート又はリモート分散型(例えば、ローカルエリアネットワーク(LAN,local area network)及び/又はワイドエリアネットワーク(WAN,wide-area network)を介して結合された複数のプロセッサ)であるか、或いはこれらの任意の組合せであってよい。
ローディングモジュール106は、データフローグラフ表現332を実行モジュール112にロードし、実行モジュール112から、データフローグラフ表現332は、データソース102からのデータを処理するために実行される。データソース102を提供するストレージデバイスは、実行環境104に対してローカルである場合があり、例えば、実行環境104をホストするコンピュータに接続されたストレージ媒体(例えばハードディスクドライブ108)に記憶され、又は、実行環境104に対してリモートである場合があり、例えば、実行環境104をホストするコンピュータとリモート接続(例えばクラウドコンピューティングインフラストラクチャによって提供される)を介して通信するリモートシステム(例えばメインフレーム110)上でホストされる。実行モジュール104によって実行されているデータフローグラフ表現332は、異なる複数の形のデータベースシステムを含めた、データソース102を具現化できる様々なタイプのシステムから、データを受け取ることができる。データは、それぞれのフィールド(「属性」又は「列」とも呼ばれる)についての値を有するレコード(「行」とも呼ばれる)として編成されたものであってよく、値はヌル値を含む可能性もある。データソースからのデータを最初に読み取るとき、データフローグラフ表現332は通常、このデータソース中のレコードに関する何らかの初期フォーマット情報から開始する。状況によっては、データソースのレコード構造は、最初はわかっておらず、その代り、データソース又はデータの分析後に決定されることがある。レコードに関する初期情報は、例えば、別個の値を表すビットの数、レコード内のフィールドの順序、及び、ビットによって表される値のタイプ(例えば、文字列、符号付き/符号なし整数)を含むことができる。
データフローグラフ表現332は、出力データを生成するように構成されてよく、この出力データは、データソース102に再び記憶されるか、若しくは実行環境104からアクセス可能なデータストレージシステム116に記憶されるか、又は他の方法で使用される場合がある。データストレージシステム116はまた、開発環境118からもアクセス可能である。開発環境118は、いくつかの実装形態では、頂点(データ処理コンポーネント又はデータセットを表す)間の有向リンク(「フロー」とも呼ばれ、作業要素すなわちデータの流れを表す)によって接続された頂点を含むデータフローグラフとして、アプリケーションを開発するためのシステムである。例えば、このような環境は、参照により本明細書に組み込まれる「Managing Parameters for Graph-Based Applications」という名称の米国特許出願公開第2007/0011668号明細書に、より詳細に記載されている。このようなグラフベースの計算を実行するためのシステムが、参照により本明細書に組み込まれる「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」という名称の米国特許第5,966,072号明細書に記載されている。このシステムに従って作成されたデータフローグラフは、グラフコンポーネントによって表される個々のプロセスに対して情報を出し入れする方法、プロセス間で情報を移動させる方法、及びプロセスの実行順序を定義する方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信方法を選ぶアルゴリズムを含む(例えば、グラフのリンクに従った通信パスが、TCP/IP若しくはUNIXドメインソケットを使用するか、又は共有メモリを使用して、プロセス間でデータを渡すことができる)。
1 ソフトウェア仕様
いくつかの例では、第1のソフトウェア仕様122は、C、C++、Java、C#、IBMのジョブ制御言語(JCL,Job Control Language)、COBOL、Fortran、アセンブリなど、1又は2以上の手続き型テキストベースプログラミング言語を使用して指定される。以下の例のいくつかでは、ソフトウェア仕様122は、JCLスクリプティング言語を使用して書かれたバッチ処理スクリプトと、COBOLプログラミング言語を使用して書かれたいくつかのプログラムとを含む。JCLスクリプトは、COBOLプログラムを参照し、決定ベースの制御される実行フローを課す。第1のソフトウェア仕様122は、JCLプログラミング言語とCOBOLプログラミング言語との組合せに限定されず、このプログラミング言語の組合せは、単に変換モジュール120の例示的な一実施形態を説明するのに使用されるに過ぎないことを理解されたい。
図2を参照すると、図1のソフトウェア仕様122の一例の概略図が、JCLスクリプト226を含む。JCLスクリプト226はいくつかのステップ230を含み、これらのステップのいくつかはCOBOLプログラム228を実行する。JCLスクリプト226の、可能性のある他のステップは、この記述を簡単にするために省略されている。COBOLプログラムを実行するJCLスクリプト中の各ステップは、COBOLプログラムの名前(例えばCOBOL1)と、COBOLプログラムが作用するデータセットとを指定する。例えば、JCLスクリプトのステップ3は、「COBOL1」と呼ばれるCOBOLプログラムを、「DS1.data」及び「DS2.data」データセットに対して実行する。JCLスクリプト226中では、所与のCOBOLプログラムに関連する各データセットに、ファイルハンドル(「DD名」とも呼ばれる)が割り当てられる。例えば、図2では、「DS1.data」にはファイルハンドル「A」が割り当てられ、「DS2.data」にはファイルハンドル「B」が割り当てられる。各COBOLプログラム228は、JCLスクリプト226によって指定されたデータセットに作用するためのソースコード(COBOLプログラミング言語で書かれた)を含む。所与のデータセットのファイルハンドル(すなわちDD名)は、データセットを識別するためにJCLスクリプト226とCOBOLプログラムのコードとの両方によって使用される識別子である。
動作時、IBMメインフレームコンピュータ上で例えば稼働する従来のジョブスケジューラは、JCLスクリプト226にアクセスし、JCLスクリプト226によって定義された制御フローに従ってスクリプトのステップ230を逐次的に(すなわち1つずつ)実行する。一般に、入力又は出力データセットにアクセスするCOBOLプログラムはどれも、データセットを記憶したストレージ媒体(例えば、ハードディスクドライブなど、データソース102又はデータストレージシステム116のストレージ媒体。単に「ディスク」と呼ぶ)に対して読取り又は書込みを行うことによって、そのようにアクセスする。一般に、JCLスクリプト226によって実行される各COBOLプログラムは、そのすべての入力データをディスクから読み取り、そのすべての出力データをディスクに書き込んだ後で、制御をJCLスクリプト226に返す。したがって、入力データに対して前のステップの出力に依拠するどのようなステップも、一般に、入力データをディスクから読み取らなければならない。
2 変換モジュール
図3を参照すると、図1の変換モジュール120の一例が、JCLスクリプト226と、JCLスクリプト226によって参照されるCOBOLプログラム228とを含むソフトウェア仕様122を入力として受け取り、ソフトウェア仕様122を処理して複合データフローグラフ332を生成する。複合データフローグラフ332は、第1のソフトウェア仕様122と同じ機能を実装し、図1の実行環境104によって使用可能である。変換モジュール120は、COBOL−データフローグラフ変換器334、及び複合グラフ合成器336を備える。
ごく一般には、COBOL−データフローグラフ変換器334は、COBOLプログラム228を入力として受け取り、各COBOLプログラムを、COBOLプログラムの別個のデータフローグラフ表現338に変換する。後でより詳細に述べるように、COBOLプログラムの各データフローグラフ表現338は、「手続き型変形」コンポーネントと呼ばれるデータフローグラフコンポーネントと、0又は1以上のデータセット及び/又は他のデータフローグラフコンポーネントとを含む。手続き型変形コンポーネントは、手続き型変形コンポーネントをCOBOLプログラムのデータフローグラフ表現338のデータセット及び他のコンポーネントに接続するための、入力ポート及び出力ポートなどのポートを含み、COBOLプログラムの機能のいくつか又はすべてを実施する。いくつかの例では、COBOLプログラムのデータフローグラフ表現は、COBOLプログラム中に存在するコマンドに似たデータフローグラフコンポーネントを含む。いくつかの例では、COBOLプログラムのデータフローグラフ表現338は、「サブグラフ」として実装されてよく、これらのサブグラフは、COBOLプログラムのデータフローグラフ表現338インスタンスと、他のデータフローグラフコンポーネント(例えば、図3の複合データフローグラフ332の、他のデータフローグラフコンポーネント)との間のフローを形成するための、入力ポート及び出力ポートを有する。
JCLスクリプト226、及びCOBOLプログラムのデータフローグラフ表現338は、複合グラフ合成器336に提供され、複合グラフ合成器336は、JCLスクリプト226を分析して、COBOLプログラムと、他の任意のコンポーネントとの間のデータフロー相互接続を決定する。次いで、複合グラフ合成器336は、決定されたデータフロー相互接続に従ったフローを使用してCOBOLプログラムのデータフローグラフ表現338の入力/出力ポートを連結することによって、複合データフローグラフ332を合成する。複合グラフ合成器336は、JCLのより前のステップによって書き込まれ、JCLのより後のステップによって読み取られる「中間」データセットを識別することによって、COBOLプログラム間のデータフロー相互接続を決定する。いくつかの例では、中間データセットは、除去されて、複合データフローグラフ332中のコンポーネント間のデータフローで置き換えられてよい。パイプライン並列性により、ディスクに書き込んでディスクから読み取る中間ステップを実施せずにデータがコンポーネント間を直接に流れることができるようにすることによって著しい性能改善を達成することができる。上で使用された「除去される」という用語は、必ずしも中間データセットが削除されることを意味するとは限らないことに留意されたい。いくつかの例では、中間データセットは、データフローグラフの中を流れるデータのパスから外に出されるが、依然としてディスクに書き込まれており、それにより、中間データセットに依存する他のプログラム(例えば、他のJCLスクリプトから実行されるプログラム)が引き続きそのデータにアクセスできることが保証される。中間ファイルを完全に削除できる(JCLがそれらを使用後に削除するので)場合、データフローグラフ表現はまた、ストレージ容量要件を下げることになる。
いくつかの例では、JCLコード中のいくつかのステップの遂次的な性質を無視することができ、複合データフローグラフ332中のコンポーネント並列性がもたらされる。他の例では、あるステップの出力が別のステップへの入力として提供されるようなステップの場合、ステップの逐次的な性質は、フローを使用してステップのそれぞれのコンポーネントを接続することによって保存され、その結果、パイプライン並列性がもたらされる。
2.1 COBOL−データフローグラフ変換器
図4を参照すると、COBOL−データフローグラフ変換器334の一実装形態の詳細なブロック図が、いくつかのCOBOLプログラム228を入力として受け取り、COBOLプログラム228を処理して、COBOLプログラムのいくつかのデータフローグラフ表現338を生成する。COBOL−データフローグラフ変換器334は、COBOLパーサ440、内部コンポーネントアナライザ444、データセット機能アナライザ442、メタデータアナライザ441、SQLアナライザ443、手続き部変換器445、及びサブグラフ合成器446を備える。
各COBOLプログラム228は、最初にCOBOLパーサ440に提供され、COBOLパーサ440は、COBOLプログラム228を解析して解析木を生成する。COBOLパーサ440によって生成された解析木は、次いで、内部コンポーネントアナライザ444、データセット機能アナライザ442、メタデータアナライザ441、及びSQLアナライザ443に渡される。
内部コンポーネントアナライザ444は、解析木を分析して、データフローグラフプログラミング言語による類似するデータフローグラフコンポーネント(例えば内部ソート)を有するプログラムプロセスを識別する。データフローグラフコンポーネントに変換できるCOBOL操作のいくつかの例は、「内部ソート」及び「内部再循環」(一時記憶)操作である。内部ソート操作は、後でより詳細に述べるように、ソートされていないデータのフローを受け取る入力ポートと、ソートされたデータのフローを提供する出力ポートとを有するコンポーネントに対応し、入力ポート及び出力ポートは主コンポーネントにリンクされる。内部再循環操作は、COBOLプログラム内で最初に全体が逐次的に書き込まれ、次いで全体が読み取られる、中間ファイルに対応する。データセット機能アナライザ444の出力は、識別された操作とそれらに対応するCOBOL解析木内での場所とのリストを含む、内部コンポーネント結果448である。
上記は、ステートメント、又はステートメント及び/又は操作のシーケンスが識別され得る任意の手続き型言語であって、これらのステートメント及び/又は操作がフロー中の一連のレコードに対して特定の変形を実施し、この変形が、入力ポートにおいてフローを受け取り、出力ポートから変形済みレコードを提供するコンポーネント又はサブグラフに対応する、任意の手続き型言語に適用可能である。
データセット機能アナライザ442は、解析木を分析して、COBOLプログラム228によってアクセスされる(例えば、開かれる、作成される、書き込まれる、又は読み取られる)すべてのデータソース及びシンク(例えばデータセット)を識別し、COBOLプログラムに対するデータセットに関連するタイプを決定する。こうするために、データセット機能アナライザ442は、データセットにアクセスするCOBOLステートメント(例えば、OPEN、READ、WRITE、DELETEなど)を識別し分析する。いくつかの例では、データセットに関連し得る可能なタイプは、INPUT、OUTPUT、LOOKUP、及びUPDATABLE LOOKUPを含む。COBOL定義が、データセットへのハンドル若しくはデータセットのパス、データセットのファイル編成、及びデータセットに対するアクセスモードを指定し、この場合、Input−Outputステートメントから決定されるファイルオープンモードなどの追加情報を伴う。
可能なデータセットファイル編成は、SEQUENTIAL、INDEXED、及びRELATIVEを含む。SEQUENTIAL編成のデータセットは、逐次的に(すなわち、データセットに元々書き込まれた順序で)のみアクセスできるレコードを含む。INDEXED編成のデータセットは、1又は2以上の索引付きキーにそれぞれが関連付けられたレコードを含む。INDEXEDデータセットのレコードには、キーを使用してランダムに、又はファイル内のいずれか所与の位置から逐次的に、アクセスすることができる。RELATIVE編成のデータセットは、正の整数で番号が付けられたレコードスロットを有し、各スロットは、空としてマークされるかレコードを含むかのいずれかである。RELATIVE編成のファイルが逐次的に読み取られるとき、空のスロットはスキップされる。RELATIVEファイルのレコードには、スロット番号をキーとして使用して直接にアクセスすることができる。「ファイル位置」という概念は、この3つのファイル編成に共通である。
可能なアクセスモードは、SEQUENTIAL、RANDOM、及びDYNAMICを含む。SEQUENTIALアクセスモードは、データセット中のレコードが、入力順、昇順、又は降順のキー順序で、逐次的にアクセスされることを示す。RANDOMアクセスモードは、データセット中のレコードが、レコード識別キーを使用してアクセスされることを示す。DYNAMICアクセスモードは、データセット中のレコードが、レコード識別キーを使用して直接に、又は任意の選択されたファイル位置から逐次的に、アクセスされ得ることを示す。
可能なオープンモードは、INPUT、OUTPUT、EXTEND、及びI−Oを含む。INPUTオープンモードは、データセットが入力データセットとして開かれることを示す。OUTPUTオープンモードは、空のデータセットが出力データセットとして開かれることを示す。EXTENDオープンモードは、既存のレコードを含むデータセットが、新しいレコードが付加される対象である出力データセットとして開かれることを示す。I−Oオープンモードは、データセットオープンモードが、入力データセット操作と出力データセット操作の両方をサポートすることを示す(そのような操作がプログラム中に存在するかどうかにかかわらず)。
データセット機能アナライザ442は、以下の規則セットをCOBOLデータセットアクセスコマンドのファイル編成、アクセスモード、及びオープンモードに適用して、COBOLプログラムに対するデータセットに関連する機能を決定する。
・ OUTPUTデータセットは、SEQUENTIAL、INDEXED、又はRELATIVE編成、SEQUENTIAL、RANDOM、又はDYNAMICアクセスモード、及びOUTPUT又はEXTENDオープンモードのデータセットである。
・ INPUTデータセットは、INDEXED、RELATIVE、又はSEQUENTIAL編成、SEQUENTIALアクセスモード、及びINPUTオープンモードのデータセットである。
・ LOOKUPデータセットは、INDEXED又はRELATIVE編成、RANDOM又はDYNAMICアクセスモード、及びINPUTオープンモードのデータセットである。
・ UPDATEABLE LOOKUPデータセットは、INDEXED又はRELATIVE編成、RANDOM又はDYNAMICアクセスモード、及びI−Oオープンモードのデータセットである。
いくつかの例では、ファイルに対する実際の入出力操作をカウントすることによって、ファイルの「効果的なオープンモード」が決定されてよい。例えば、ファイルがI−Oモードで開かれるが、WRITE操作のみを有し、READ操作もSTART操作も有しない場合、「効果的なオープンモード」はEXTENDに縮小されてよい。
図5を参照すると、テーブル501が、データセット編成とアクセスモードとオープンモードとの異なる複数の組合せを、各組合せに関連するデータセット機能と共にリストしている。
再び図4を参照すると、データセット機能アナライザ442の出力は、COBOLプログラムによってアクセスされるすべてのデータセットを、COBOLプログラム中でのそれらに関連する機能と共に挙げたリストを含む、データセット機能結果450である。
メタデータアナライザ441は、解析木を分析して、メタデータを抽出し、再使用可能なデータタイプ(例えばDMLデータタイプ)及びタイプ定義ファイルを作成する。再使用可能なデータタイプは、COBOLプログラム中のストレージ割振りとは別個である。メタデータアナライザ441の出力は、データタイプ結果447である。
SQLアナライザ443は、解析木を分析して、COBOLプログラム中の埋め込まれた構造化照会言語(SQL,structured query language)コード(又は単に「埋め込みSQL」)を識別する。識別されたどのような埋め込みSQLも、処理されてデータベースインタフェース情報449にされる。データベースにアクセスするためのデータベースアプリケーションプログラミングインタフェース(API,database application programming interface)が、データベースインタフェース情報449内で使用できるプリミティブを提供することができる。いくつかの例では、これらのプリミティブを含めることで、埋め込みSQLの一部を(例えばバイナリ操作を使用して作用されるバイナリ形式に)コンパイルするために特定のスキーマを使用して特定のデータベースにアクセスする必要が回避される。その代り、このようなコンパイルによって提供されるであろう効率のいくらかは、データベースインタフェース情報449内に配置された適切なAPIプリミティブを使用して、場合によっては異なるデータベース及び/又はスキーマを必要に応じて使用して、埋め込みSQLを実行時に解釈できるフレキシビリティと、トレードオフされることが可能である。
次いで、COBOLプログラムの解析木は、内部コンポーネント結果448、データセット機能結果450、データタイプ結果447、及びデータベースインタフェース情報結果449と共に、手続き部変換器445に提供される。手続き部変換器445は、解析木を分析して、COBOLロジックを「手続き型変形」データフローグラフコンポーネント452に変換する。一般に、手続き型変形データフローグラフコンポーネント452は、COBOLプログラムに関連するCOBOLロジックのいくらか又はすべてを含むと共に、入力データの受け入れ及びコンポーネントからの出力データの提供をそれぞれ行うための入力ポート及び出力ポートを有する、コンテナタイプのコンポーネントである。COBOLコードが、異なるプログラミング言語からのコードを含む(例えば、SQLコードがSQLアナライザ443によって識別されてデータベースインタフェース情報結果449中で提供される)場合、手続き部変換器445は、データベースインタフェース情報結果449を使用して、この埋め込みコードの適切な表現を手続き型変形データフローグラフコンポーネント452内で生成する。いくつかの例では、手続き部変換器445は、データベースAPIを使用して、埋め込みコードの適切な表現を生成する。他の例では、埋め込みSQLのTable及びCursorが、Input Tableコンポーネントで置き換えられ、それにより、FETCH操作が、ファイルに対して行われるようなread_record(port_number)への呼出しで置き換えられる。
いくつかの例では、手続き部変換器445は、COBOLプログラムの手続き型ロジックを表すデータ操作言語(DML,Data Manipulation Language)コードを含むファイルを生成するだけである。サブグラフ合成器446が、手続き部変換器445によって生成されたファイルを使用する手続き型変形データフローコンポーネントを生成する。
図4及び上の記述は、内部コンポーネントアナライザ444、データセット機能アナライザ442、メタデータアナライザ441、及びSQLアナライザ443の、可能な1つの動作順序に関係することに留意されたい。しかし、アナライザの動作順序は、前述の順序に限定されず、アナライザの他の動作順序も可能である。
図6を参照すると、「COBOL2」のタイトルが付いた手続き型変形コンポーネントの単純な一例554(すなわち、図2のJCLスクリプト226のステップ5で実行されるCOBOLプログラムを変換した結果)が、「in0」のラベルが付いた入力ポート556と、「out0」のラベルが付いた出力ポート560と、「lu0」のラベルが付いたルックアップポート562とを有する。ルックアップデータセットは、必ずしもコンポーネント上のポートを介してアクセスされるとは限らず、その代りにルックアップデータセットAPIを使用してアクセスされる場合もあることに留意されたい。しかし、記述を簡単にするために、ルックアップデータセットはルックアップポートを介してアクセスされるものとして述べる。
各ポートは、フローを介してそれぞれのデータセット(JCLスクリプト226によって識別される)に接続されるように構成される。いくつかの例では、開発者は、手続き型変形コンポーネント554の基礎をなすCOBOLコードのDML変換を閲覧及び編集することができ、これは例えば、コンポーネントをシフトダブルクリックすることによって、又は、情報バブルが現れるまでコンポーネントの上でホバーして情報バブル中の「変形」リンクをクリックすることによって、行うことができる。
図7を参照すると、手続き型変形コンポーネントの別の例664は、「COBOL1」のタイトルが付いたCOBOLプログラム(すなわち、図2のJCLスクリプト226のステップ3で実行されるCOBOLプログラム)が、そのコード中にソートコマンドを含む状況を示す。この状況では、内部コンポーネントアナライザ448は、ソートコマンドを識別し、ソートコマンドに関係する情報を手続き部変換器445に渡す。手続き部変換器445は、内部コンポーネントアナライザ448からの情報を使用して、手続き型変形664に関連するコード中のソートコマンドを、特化された内部ソートサブグラフへのインタフェースで置き換える。サブグラフ合成器446は、448によって作成されたソート情報を使用し、ソートされるべきデータを内部ソートデータフローサブグラフコンポーネント666に提供するための手続き型変形664からの出力ポートout1と、ソートされたデータを内部ソートデータフローサブグラフコンポーネント666から受け取るための入力in1とを作成する。
図8を参照すると、ソートコマンドを含む手続き型変形の別の類似例が示されている。この例では、ソートされるべきデータを提供するための出力とソートされたデータを受け取るための入力とを有する単一の手続き型変形を作成するのではなく、2つの手続き型変形が作成される。2つの手続き型変形のうちの第1の手続き型変形768は、ソートされるべきデータを提供するための出力を有し、2つの手続き型変形のうちの第2の手続き型変形770は、ソートされたデータを受け取るための入力を有する。図示のように、いくつかの例では、ソートデータフローコンポーネント766が、サブグラフ合成器446によって、2つの手続き型変形768、770間で自動的に接続されてよい。他の例では、ソートデータフローコンポーネント766は、2つの手続き型変形768、770間で、手作業で接続されてもよい。
2.2 サブグラフ合成器
再び図4を参照すると、COBOLプログラムの手続き型変形452は、内部コンポーネント結果448、データセット機能結果450、データタイプ結果447、及びデータベースインタフェース情報結果449と共に、サブグラフ合成器446に渡される。サブグラフ合成器446は、入力を使用して、COBOLプログラム228に対するデータフローグラフ表現338を生成する。ごく一般には、各COBOLプログラム228につき、サブグラフ合成器446は、COBOLプログラム228の手続き型変形と、COBOLプログラム228に関連するデータセットと、内部コンポーネントアナライザ444によって識別された内部コンポーネントがあればそれらと、を含むデータフローグラフを作成する。次いで、サブグラフ合成器446は、内部コンポーネント結果448及びデータセット機能結果450を使用して、データセット、内部コンポーネント、及び手続き型変形452の間のフローを適切に接続する。サブグラフ合成器446は、データタイプ結果447を使用して、コンポーネントポートの中を流れるデータを記述する。図9を参照すると、COBOL1のタイトルが付いた例示的なCOBOLプログラムに対するデータフローグラフ表現の一例838が、手続き型変形864を含み、手続き型変形864は、データセットDS1.dataに関連するファイルハンドル「A」を有する入力ファイルにフローによって接続されたin0のラベルが付いた入力ポートと、データセットDS2.dataに関連するファイルハンドル「B」を有する出力ファイルにフローによって接続されたout0のラベルが付いた出力ポートと、内部ソートコンポーネント866にフローによって接続された出力ポート及び入力ポートout1及びin1と、を有する。
2.3 複合グラフ合成器
図3に戻って参照すると、次いで、COBOLプログラムのデータフローグラフ表現338は、JCLスクリプト226と共に、複合グラフ合成器336に渡される。COBOLプログラムに関連するデータセットの機能と共に、JCLスクリプト226中のCOBOLプログラムの実行の順序を分析することによって、複合グラフ合成器336は、COBOLコードのデータフローグラフ表現を接続して単一の複合データフローグラフ332にする。
例えば、図10を参照すると、COBOL2のタイトルが付いたCOBOLプログラムのデータフローグラフ表現は、in0のラベルが付いた入力ポートにおけるデータセットDS2.dataに関連する入力ファイル「C」から読み取り、ルックアップポートlu0におけるDS3.dataに関連するルックアップファイル「D」にアクセスすることによってデータを充実化し、out0のラベルが付いた出力ポートにおけるデータセットDS4.dataに関連する出力ファイル「E」に書き込む。COBOL3のタイトルが付いたCOBOLプログラムのデータフローグラフ表現は、2つの入力データセット、すなわち、in0のラベルが付いた入力ポートにおけるDS4.dataに関連する「F」と、in1のラベルが付いた入力ポートにおけるDS5.dataに関連する「G」とから読み取り、out0のラベルが付いた出力ポートにおけるDS6.dataに関連する出力データセット「H」に書き込む。複合グラフ合成器336は、JCLスクリプト226情報を、COBOLプログラムの変換によって導出された情報と併合して、COBOL2がCOBOL3の前に実行されること、及びDS4.dataがCOBOL2によって出力されてCOBOL3によって入力されることを決定し、したがって、COBOL2のout0のラベルが付いた出力ポートは、フローによってCOBOL3のin0のラベルが付いた入力ポートに接続されることが可能であり、それにより、COBOL3がデータセットDS4.dataをディスクから読み取る必要をなくすことができる。図10に例示的な複合データフローグラフ932を示すが、この複合データフローグラフ932は、out0のラベルが付いたCOBOL2の出力ポートと、in0のラベルが付いたCOBOL3の入力ポートとを、複製コンポーネント933を介して接続するフローを含む。複製コンポーネント933は、ディスク上のDS4.dataにデータを書き込むが、フローを介して、in0のラベルが付いたCOBOL3の入力ポートにもデータを直接渡す。このようにして、COBOL3は、データセットDS4.dataがディスクに書き込まれるのを待機する必要なしに、COBOL2から流れるデータを読み取ることができ、JCLスクリプト226によって削除されないDS4.dataに記憶されたデータは、他のプロセスによって利用可能である。
いくつかの例では、中間データセット(例えばファイル)が作成された後でJCL手続きがそれを削除しない場合、このデータセットは、実行環境で稼働している他の何らかのプロセスによって使用される可能性がある。これが当てはまる例では、中間データセットは、JCL手続きのデータフローグラフ表現中で保存される(例えば、前述のように複製コンポーネントを使用して)。いくつかの例では、中間データセットが作成された後でJCL手続きがそれを削除する場合、中間データセットは、JCL手続きのデータフローグラフ表現中で完全に除去され、それに対する複製コンポーネントは必要ない。
いくつかの例では、COBOL2及びCOBOL3データフローグラフについて上述したようにフローによって接続されるポートのメタデータが、同一ではない場合があり、これは、第1のソフトウェア仕様が、同じデータセットについて代替定義を使用したからである。この場合、複合グラフ合成器336は、接続フロー上でRedefine Formatコンポーネントを挿入することができる。このようなRedefine Formatコンポーネントの存在を後で使用して、データセットメタデータを統合することができる。メタデータ情報は、各データフローグラフ338についてメタデータアナライザ441によって導出される。
3 例示的な動作
図11を参照すると、変換モジュール120の単純な動作例が、JCLスクリプト226と、図2の4つのCOBOLプログラム228とを入力として受け取り、入力を処理して複合データフローグラフ332を生成する。
変換プロセスの第1の段階では、COBOLプログラム228がCOBOL−データフローグラフ変換器334に提供され、COBOL−データフローグラフ変換器334は、各COBOLプログラムを処理して、COBOLプログラムのデータフローグラフ表現338a〜dを生成する。第2の段階では、JCLスクリプト226と、COBOLプログラムのデータフローグラフ表現338a〜dとが、複合グラフ合成器336に提供され、複合グラフ合成器336は、JCLスクリプト226と、COBOLプログラムのデータフローグラフ表現338a〜dとを処理して、複合データフローグラフ332を生成する。
図12を参照すると、COBOL−データフローグラフ変換器334は、COBOLパーサ440、内部コンポーネントアナライザ444、データセット機能アナライザ442、メタデータアナライザ441、及びSQLアナライザ443を使用して、各COBOLプログラム228を処理する。COBOLパーサ440、内部コンポーネントアナライザ444、データセット機能アナライザ442、メタデータアナライザ441、及びSQLアナライザ443によって生成された出力は、手続き部変換器445に提供され、その出力と共にサブグラフ合成器446に提供され、サブグラフ合成器446は、各COBOLプログラムに対するデータフローグラフ表現338a〜dを生成する。
JCLスクリプト226のステップ3で実行されるCOBOL1プログラムについては、内部コンポーネントアナライザ444は、プログラムが内部ソートコンポーネントを含むことを識別した。データセット機能アナライザ442は、COBOL1プログラムが1つの入力データセット「A」及び1つの出力データセット「B」にアクセスすることを識別した。識別された内部ソートコンポーネントと、データセットと、COBOL1プログラムの手続き型変形に対するそれらの関係とは、COBOL1プログラムのデータフローグラフ表現338aに反映される。
JCLスクリプト226のステップ5で実行されるCOBOL2プログラムについては、内部コンポーネントアナライザ444はどのような内部コンポーネントも識別せず、SQLアナライザ443はどのような埋め込みSQLコードも識別しなかった。データセット機能アナライザ442は、COBOL2プログラムが、入力データセットとしての1つのデータセット「C」と、出力データセットとしての別のデータセット「E」と、ルックアップデータセットとしての別のデータセット「D」とにアクセスすることを識別した。識別されたデータセットと、COBOL2プログラムの手続き型変形に対するそれらの関係とは、COBOL2プログラムのデータフローグラフ表現338bに反映される。
JCLスクリプト226のステップ6で実行されるCOBOL3プログラムについては、内部コンポーネントアナライザ444はどのような内部コンポーネントも識別せず、SQLアナライザ443はどのような埋め込みSQLコードも識別しなかった。データセット機能アナライザ442は、COBOL3プログラムが、入力データセットとしての2つのデータセット「F」及び「G」と、出力データセットとしての1つのデータセット及び「H」とにアクセスすることを識別した。識別されたデータセットと、COBOL3プログラムの手続き型変形に対するそれらの関係とは、COBOL3プログラムのデータフローグラフ表現338cに反映される。
JCLスクリプト226のステップ10で実行されるCOBOL4プログラムについては、内部コンポーネントアナライザ444はどのような内部コンポーネントも識別せず、SQLアナライザ443はどのような埋め込みSQLコードも識別しなかった。データセット機能アナライザ442は、COBOL4プログラムが、入力データセットとしての1つのデータセット「I」と、出力データセットとしての別のデータセット「J」とにアクセスすることを識別した。識別されたデータセットと、COBOL4プログラムの手続き型変形に対するそれらの関係とは、COBOL4プログラムのデータフローグラフ表現338dに反映される。
再び図11を参照すると、JCLスクリプト226と、4つのCOBOLプログラムのデータフローグラフ表現338a〜dとは、複合グラフ合成器336に提供され、複合グラフ合成器336は、JCLスクリプト226及びデータフローグラフ表現338a〜dを分析して、データフローグラフ表現338a〜dを接続して単一の複合グラフ332にする。図13を参照すると、JCLスクリプト226と図2の4つのCOBOLプログラム228との複合グラフは、フローによって相互接続された4つの手続き型変形COBOL1 452a、COBOL2 452b、COBOL3 452c、及びCOBOL4 452dを含む。複製コンポーネント933を使用して、複合データフローグラフ332中のいくつかの中間データセット(すなわちDS2.data、DS4.data、及びDS5.data)が取り置かれ(すなわち出力データセットとして書き込まれ)、フローを使用してコンポーネントが直接に接続される。
4 代替形態
上の記述では、手続き型プログラミング言語で書かれたプログラムの、限られた数の操作及び要素のみがデータフローグラフコンポーネントに変換されることについて述べているが、いくつかの例では、元のプログラム(例えばCOBOLプログラム)のソースコードのすべてがデータフローグラフ表現に変換される。
前述のシステムを使用して、1又は2以上の手続き型プログラミング言語の任意の組合せを含むソフトウェア仕様を、ソフトウェア仕様のデータフローグラフ表現に変換することができる。
いくつかの例では、前述の変換モジュールは、変換モジュールが処理する準備ができていない変換タスクに遭遇することがある。このような例では、変換モジュールは不完全な変換タスクのリストを出力し、開発者は、このリストを読み使用して、変換を手作業で修復することができる。
上の記述では、COBOL−データフローグラフ変換器334のいくつかのモジュールが並列で稼働するものとして述べているが、これは必ずしも当てはまるとは限らない。いくつかの例では、まずメタデータアナライザ441が解析木をCOBOLパーサ440から受け取る。メタデータアナライザ441は、解析木を充実化及び/又は単純化し、これをデータセット機能アナライザ442に提供する。データセット機能アナライザ442は、解析木を充実化及び/又は単純化し、これをSQLアナライザ443に提供する。SQLアナライザ443は、解析木を充実化及び/又は単純化し、これを内部コンポーネントアナライザ444に提供する。内部コンポーネントアナライザ444は、解析木を充実化及び/又は単純化し、これを手続き部変換器445に提供する。すなわち、これらのコンポーネントは直列で解析木に作用する。
5 実装形態
前述のソースコード変換手法は、例えば、適切なソフトウェア命令を実行するプログラム可能なコンピューティングシステムを使用して実装されてもよく、又は、フィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの適切なハードウェアにおいて、若しくは何らかのハイブリッド形式で実装されてもよい。例えば、プログラムされる手法では、ソフトウェアは、1又は2以上のプログラムされた又はプログラム可能なコンピューティングシステム(分散型、クライアント/サーバ、又はグリッドなど、様々なアーキテクチャのものであり得る)上で実行される1又は2以上のコンピュータプログラム中のプロシージャを含むことができ、各コンピューティングシステムは、少なくとも1つのプロセッサと、少なくとも1つのデータストレージシステム(揮発性及び/又は不揮発性の、メモリ及び/又はストレージ要素を含む)と、少なくとも1つのユーザインタフェース(少なくとも1つの入力デバイス又はポートを使用して入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを使用して出力を提供するための)とを備える。ソフトウェアは、データフローグラフの設計、構成、及び実行に関係するサービスを例えば提供するより大きいプログラムの、1又は2以上のモジュールを含むことができる。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに従う、データ構造又は他の編成されたデータとして実装されてよい。
ソフトウェアは、CD−ROM又は他のコンピュータ可読媒体(例えば、汎用若しくは専用のコンピューティングシステム若しくはデバイスによって読取り可能な)など、有形の非一時的な媒体上で提供されてもよく、或いは、ネットワークの通信媒体を介してコンピューティングシステムの有形の非一時的な媒体に送達されて(例えば、伝搬信号中で符号化されて)、コンピューティングシステムにおいて実行されてもよい。処理のいくらか又はすべては、専用コンピュータ上で実施されてもよく、又は、コプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)など、専用ハードウェアを使用して実施されてもよい。処理は、分散方式で実装されてもよく、その場合、ソフトウェアによって指定される計算の異なる部分が、異なるコンピューティング要素によって実施される。このような各コンピュータプログラムは、ストレージデバイス媒体がコンピュータによって読み取られたときにコンピュータを構成及び操作して本明細書に記載の処理を実施するために、汎用又は専用のプログラム可能コンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体(例えば、固体メモリ若しくは媒体、又は磁気若しくは光学媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムはまた、コンピュータプログラムで構成された有形の非一時的な媒体として実装されるものと考えることもでき、その場合、そのように構成された媒体は、特定の事前定義された方式でコンピュータを動作させて、本明細書に記載の処理ステップの1又は2以上を実施させる。
本発明のいくつかの実施形態について述べた。しかし、以上の記述は、本発明の範囲を例示するものとし、限定するものとはしないことを理解されたい。本発明の範囲は、後続の特許請求の範囲によって定義される。したがって、他の実施形態もまた、後続の特許請求の範囲内である。例えば、本発明の範囲を逸脱することなく、様々な修正を加えることができる。加えて、前述のステップのいくつかは、順序に依存しない場合もあり、したがって、述べた順序とは異なる順序で実施されてもよい。

Claims (21)

  1. ソフトウェア仕様変換の方法であって、
    第1のプログラミング言語で指定された第1のソフトウェア仕様を受け取るステップと、
    第2のプログラミング言語で指定された第2のソフトウェア仕様を受け取るステップと、
    前記第1及び第2のプログラミング言語とは異なる第3のプログラミング言語で指定された第3のソフトウェア仕様を受け取るステップであって、前記第3のソフトウェア仕様が前記第1のソフトウェア仕様と前記第2のソフトウェア仕様との間の1又は2以上のデータ関係を定義する、ステップと、
    前記第1のソフトウェア仕様の表現を、前記第1、第2、及び第3のプログラミング言語とは異なる第4のプログラミング言語で形成するステップと、
    前記第2のソフトウェア仕様の表現を前記第4のプログラミング言語で形成するステップと、
    前記第3のソフトウェア仕様を分析して前記1又は2以上のデータ関係を識別するステップと、
    前記第1のソフトウェア仕様と前記第2のソフトウェア仕様との結合された表現を前記第4のプログラミング言語で形成するステップであって、前記識別された1又は2以上のデータ関係に従って、前記第4のプログラミング言語による前記第1のソフトウェア仕様の前記表現と、前記第4のプログラミング言語による前記第2のソフトウェア仕様の前記表現との間の接続を、前記第4のプログラミング言語で形成することを含むステップと、を含む方法。
  2. 第1のプログラミング言語が手続き型プログラミング言語である、請求項1に記載の方法。
  3. 第4のプログラミング言語が、ソフトウェア仕様の異なる部分間の並列性を可能にする、請求項2に記載の方法。
  4. 第4のプログラミング言語が複数のタイプの並列性を可能にし、前記複数のタイプの並列性が、
    ソフトウェア仕様のある部分の複数のインスタンスが入力データストリームの異なる複数の部分に作用するのを可能にする、第1のタイプの並列性と、
    ソフトウェア仕様の異なる複数の部分が前記入力データストリームの異なる複数の部分に対して同時に実行されるのを可能にする、第2のタイプの並列性とを含む、請求項3に記載の方法。
  5. 第2のプログラミング言語が手続き型プログラミング言語である、請求項2に記載の方法。
  6. 第2のプログラミング言語が第1のプログラミング言語と同じである、請求項2に記載の方法。
  7. 第1のソフトウェア仕様と第2のソフトウェア仕様との間の1又は2以上のデータ関係が、前記第1のソフトウェア仕様が第1のデータセットからデータを受け取り、前記第2のソフトウェア仕様が前記第1のデータセットにデータを提供することに対応する少なくとも1つのデータ関係を含む、請求項1に記載の方法。
  8. 第4のプログラミング言語がデータフローグラフベースのプログラミング言語である、請求項1に記載の方法。
  9. 第4のプログラミング言語による接続が、データのフローを表す有向リンクに対応する、請求項8に記載の方法。
  10. 第1のソフトウェア仕様が、1又は2以上のデータセットと対話するように構成され、各データセットが、前記第1のソフトウェア仕様において複数のデータセットタイプのうちの関連するデータセットタイプを有し、第2のソフトウェア仕様が、1又は2以上のデータセットと対話するように構成され、各データセットが、前記第2のソフトウェア仕様において前記複数のデータセットタイプのうちの関連するタイプを有し、方法がさらに、
    前記第1のソフトウェア仕様を処理するステップを含み、前記処理するステップが、
    前記第1のソフトウェア仕様の前記1又は2以上のデータセットを識別し、前記識別された1又は2以上のデータセットのそれぞれにつき、前記第1のソフトウェア仕様における前記データセットの前記関連するタイプを決定するステップと、
    前記第1のソフトウェア仕様の表現を第4のプログラミング言語で形成するステップであって、前記識別された1又は2以上のデータセットのそれぞれにつき、前記データセットの仕様を前記第4のプログラミング言語で形成するステップを含み、前記第4のプログラミング言語による前記データセットの前記仕様が、第1のプログラミング言語による前記データセットの前記関連するタイプに対応するタイプを有する、ステップとを含み、
    前記第4のプログラミング言語による前記1又は2以上のデータセットの前記仕様の少なくとも1つが、入力データセットタイプ又は出力データセットタイプを有し、前記方法がさらに、
    前記第2のソフトウェア仕様を処理するステップを含み、前記処理するステップが、
    前記第2のソフトウェア仕様の前記1又は2以上のデータセットを識別し、前記識別された1又は2以上のデータセットのそれぞれにつき、前記第2のソフトウェア仕様における前記データセットの前記関連するタイプを決定するステップと、
    前記第2のソフトウェア仕様の表現を前記第4のプログラミング言語で形成するステップであって、前記識別された1又は2以上のデータセットのそれぞれにつき、前記データセットの仕様を前記第4のプログラミング言語で形成するステップを含み、前記第4のプログラミング言語による前記データセットの前記仕様が、前記第1のプログラミング言語による前記データセットの前記関連するタイプに対応するタイプを有する、ステップとを含み、
    前記第4のプログラミング言語による前記1又は2以上のデータセットの前記仕様の少なくとも1つが、入力機能又は出力機能を可能にする、請求項1に記載の方法。
  11. 結合された表現を形成するステップが、
    入力機能を可能にする第4のプログラミング言語による第2のソフトウェア仕様の1又は2以上のデータセットの仕様と、前記第4のプログラミング言語による前記第2のソフトウェア仕様の表現との間の接続を、前記第4のプログラミング言語による第1のソフトウェア仕様の表現と、前記第4のプログラミング言語による前記第2のソフトウェア仕様の前記表現との間の接続で置き換えるために、1又は2以上の接続を形成するステップと、
    入力機能を可能にする前記第4のプログラミング言語による前記第1のソフトウェア仕様の1又は2以上のデータセットの仕様と、前記第4のプログラミング言語による前記第1のソフトウェア仕様の前記表現との間の接続を、前記第4のプログラミング言語による前記第2のソフトウェア仕様の前記表現と、前記第4のプログラミング言語による前記第1のソフトウェア仕様の前記表現との間の接続で置き換えるために、1又は2以上の接続を形成するステップと、のうちの少なくとも一方を含む、請求項10に記載の方法。
  12. 第4のプログラミング言語による第1のソフトウェア仕様の表現中で出力機能を可能にする、前記第4のプログラミング言語による前記第1のソフトウェア仕様の1若しくは2以上のデータセットを保存するステップ、又は、
    前記第4のプログラミング言語による第2のソフトウェア仕様の表現中で出力機能を可能にする、前記第4のプログラミング言語による前記第2のソフトウェア仕様の1若しくは2以上のデータセットを保存するステップをさらに含む、請求項11に記載の方法。
  13. 第1のソフトウェア仕様が1又は2以上のデータ変形操作を含み、前記第1のソフトウェア仕様を分析するステップが、前記1又は2以上のデータ変形操作のうちの少なくともいくつかを識別して、前記識別されたデータ変形操作を、第4のプログラミング言語の対応するデータ変形タイプに分類するステップを含み、
    前記第1のソフトウェア仕様の表現を前記第4のプログラミング言語で形成するステップが、前記識別されたデータ変形操作のそれぞれにつき、前記データ変形操作の仕様を前記第4のプログラミング言語で形成するステップを含み、前記第4のプログラミング言語による前記データ変形操作の前記仕様が、第1のプログラミング言語による前記識別されたデータ変形操作の前記データ変形タイプに対応するデータ変形操作を可能にする、請求項10に記載の方法。
  14. 第4のプログラミング言語による1又は2以上のデータセットの仕様の少なくとも1つが、読取専用ランダムアクセスデータセットタイプを有する、請求項10に記載の方法。
  15. 第1のソフトウェア仕様におけるデータセットの関連するタイプを決定するステップが、データセット定義と前記データセットにアクセスするコマンドとのパラメータを分析するステップを含む、請求項10に記載の方法。
  16. パラメータが、データセットに関連するファイル編成、前記データセットに関連するアクセスモード、前記データセットを開くのに使用されるモード、及び入出力操作、のうちの1又は2以上を含む、請求項15に記載の方法。
  17. 第1のソフトウェア仕様と第2のソフトウェア仕様との結合された表現をストレージ媒体に記憶するステップをさらに含む、請求項1に記載の方法。
  18. 第1のソフトウェア仕様が、1又は2以上のデータセットと対話する1又は2以上のデータ処理操作を定義し、第2のソフトウェア仕様が、1又は2以上のデータセットと対話する1又は2以上のデータ処理操作を定義する、請求項1に記載の方法。
  19. 第3のソフトウェア仕様が、第1のソフトウェア仕様の1又は2以上のデータセットと、第2のソフトウェア仕様の1又は2以上のデータセットとの間の、1又は2以上のデータ関係を定義する、請求項18に記載の方法。
  20. ソフトウェア仕様変換のための、コンピュータ可読媒体に非一時的な形で記憶されたソフトウェアであって、
    第1のプログラミング言語で指定された第1のソフトウェア仕様を受け取ること、
    第2のプログラミング言語で指定された第2のソフトウェア仕様を受け取ること、
    前記第1及び第2のプログラミング言語とは異なる第3のプログラミング言語で指定された第3のソフトウェア仕様を受け取ることであって、前記第3のソフトウェア仕様が、前記第1のソフトウェア仕様と前記第2のソフトウェア仕様との間の1又は2以上のデータ関係を定義する、受け取ること、
    前記第1のソフトウェア仕様の表現を、前記第1、第2、及び第3のプログラミング言語とは異なる第4のプログラミング言語で形成すること、
    前記第2のソフトウェア仕様の表現を前記第4のプログラミング言語で形成すること、
    前記第3のソフトウェア仕様を分析して前記1又は2以上のデータ関係を識別すること、並びに、
    前記第1のソフトウェア仕様と前記第2のソフトウェア仕様との結合された表現を前記第4のプログラミング言語で形成することであって、前記識別された1又は2以上のデータ関係に従って、前記第4のプログラミング言語による前記第1のソフトウェア仕様の前記表現と、前記第4のプログラミング言語による前記第2のソフトウェア仕様の前記表現との間の接続を、前記第4のプログラミング言語で形成することを含む、形成すること、をコンピューティングシステムに行わせるための命令を含むソフトウェア。
  21. ソフトウェア仕様変換のためのコンピューティングシステムであって、
    ソフトウェア仕様を受け取るように構成された入力デバイス又はポートを備え、前記ソフトウェア仕様が、
    第1のプログラミング言語で指定された第1のソフトウェア仕様と、
    第2のプログラミング言語で指定された第2のソフトウェア仕様と、
    前記第1及び第2のプログラミング言語とは異なる第3のプログラミング言語で指定された第3のソフトウェア仕様とを含み、前記第3のソフトウェア仕様が、前記第1のソフトウェア仕様と前記第2のソフトウェア仕様との間の1又は2以上のデータ関係を定義し、前記コンピューティングシステムが、
    前記受け取られたソフトウェア仕様を処理するように構成された少なくとも1つのプロセッサを備え、前記処理することが、
    前記第1のソフトウェア仕様の表現を、前記第1、第2、及び第3のプログラミング言語とは異なる第4のプログラミング言語で形成すること、
    前記第2のソフトウェア仕様の表現を前記第4のプログラミング言語で形成すること、
    前記第3のソフトウェア仕様を分析して前記1又は2以上のデータ関係を識別すること、並びに、
    前記第1のソフトウェア仕様と前記第2のソフトウェア仕様との結合された表現を前記第4のプログラミング言語で形成することであって、前記識別された1又は2以上のデータ関係に従って、前記第4のプログラミング言語による前記第1のソフトウェア仕様の前記表現と、前記第4のプログラミング言語による前記第2のソフトウェア仕様の前記表現との間の接続を、前記第4のプログラミング言語で形成することを含む、形成すること、を含む、コンピューティングシステム。
JP2016533594A 2013-12-06 2014-12-08 ソースコード変換 Active JP6454706B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361912594P 2013-12-06 2013-12-06
US61/912,594 2013-12-06
PCT/US2014/069027 WO2015085291A1 (en) 2013-12-06 2014-12-08 Source code translation

Publications (2)

Publication Number Publication Date
JP2017502385A JP2017502385A (ja) 2017-01-19
JP6454706B2 true JP6454706B2 (ja) 2019-01-16

Family

ID=52146763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016533594A Active JP6454706B2 (ja) 2013-12-06 2014-12-08 ソースコード変換

Country Status (8)

Country Link
US (4) US9891901B2 (ja)
EP (3) EP3726375B1 (ja)
JP (1) JP6454706B2 (ja)
KR (1) KR102186050B1 (ja)
CN (1) CN105793818B (ja)
AU (3) AU2014360106B2 (ja)
CA (2) CA2929716C (ja)
WO (1) WO2015085291A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI760880B (zh) * 2020-10-07 2022-04-11 瑞昱半導體股份有限公司 與儲存裝置相關的傳輸控制電路、資料傳輸系統及操作資料傳輸系統的方法

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017096155A1 (en) * 2015-12-02 2017-06-08 Speedment, Inc. Methods and systems for mapping object oriented/functional languages to database languages
US10795935B2 (en) 2016-02-05 2020-10-06 Sas Institute Inc. Automated generation of job flow definitions
US10650046B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Many task computing with distributed file system
US10642896B2 (en) 2016-02-05 2020-05-05 Sas Institute Inc. Handling of data sets during execution of task routines of multiple languages
CN107229616B (zh) * 2016-03-25 2020-10-16 阿里巴巴集团控股有限公司 语言识别方法、装置及系统
USD898059S1 (en) 2017-02-06 2020-10-06 Sas Institute Inc. Display screen or portion thereof with graphical user interface
WO2018165420A1 (en) * 2017-03-09 2018-09-13 Walmart Apollo, Llc Enterprise integration processing for mainframe cobol programs
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
US10379825B2 (en) * 2017-05-22 2019-08-13 Ab Initio Technology Llc Automated dependency analyzer for heterogeneously programmed data processing system
USD898060S1 (en) 2017-06-05 2020-10-06 Sas Institute Inc. Display screen or portion thereof with graphical user interface
US10210240B2 (en) * 2017-06-30 2019-02-19 Capital One Services, Llc Systems and methods for code parsing and lineage detection
US10223086B2 (en) * 2017-06-30 2019-03-05 Capital One Services, Llc Systems and methods for code parsing and lineage detection
CN107632833A (zh) * 2017-07-31 2018-01-26 广州神马移动信息科技有限公司 轻应用的生成方法、设备及电子设备
US10503498B2 (en) 2017-11-16 2019-12-10 Sas Institute Inc. Scalable cloud-based time series analysis
US10423396B1 (en) * 2018-05-04 2019-09-24 Salesforce.Com, Inc. Transforming non-apex code to apex code
US10725745B2 (en) * 2018-05-24 2020-07-28 Walmart Apollo, Llc Systems and methods for polyglot analysis
CN110806877B (zh) * 2018-08-06 2024-04-16 北京京东尚科信息技术有限公司 编程文件结构化的方法、装置、介质及电子设备
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US11068244B2 (en) * 2019-10-01 2021-07-20 Salesforce.Com, Inc. Optimized transpilation
US11440190B1 (en) * 2020-02-26 2022-09-13 Trend Micro Incorporated Detecting unsecure data flow in automation task programs
KR102326490B1 (ko) * 2020-03-25 2021-11-15 주식회사 티맥스 소프트 스텝 입출력 데이터 셋 파이프라이닝
CN113157257B (zh) * 2021-04-12 2024-03-29 山东省城市商业银行合作联盟有限公司 针对银行系统的快速开发装置
US20230418566A1 (en) * 2022-06-22 2023-12-28 Amazon Technologies, Inc. Programmatically generating evaluation data sets for code generation models

Family Cites Families (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US521030A (en) 1894-06-05 de laval
US4586137A (en) * 1982-10-18 1986-04-29 Dresser Industries, Inc. Method for generating variable well logging data composites
JPH01108638A (ja) 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
JP2738692B2 (ja) 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法
EP0347162A3 (en) * 1988-06-14 1990-09-12 Tektronix, Inc. Apparatus and methods for controlling data flow processes by generated instruction sequences
US5072371A (en) 1989-03-01 1991-12-10 The United States Of America As Represented By The United States Department Of Energy Method for simultaneous overlapped communications between neighboring processors in a multiple
US5121494A (en) 1989-10-05 1992-06-09 Ibm Corporation Joining two database relations on a common field in a parallel relational database field
US5257366A (en) * 1990-03-27 1993-10-26 International Business Machines Corporation Query language execution on heterogeneous database servers using a bind-file bridge between application and database languages
US5367619A (en) 1990-04-27 1994-11-22 Eaton Corporation Electronic data entry system employing an expert system to facilitate generation of electronic data forms with complex interrelationships between fields and subforms
US5347639A (en) 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5632022A (en) 1991-11-13 1997-05-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Encyclopedia of software components
US5313584A (en) 1991-11-25 1994-05-17 Unisys Corporation Multiple I/O processor system
JPH05257709A (ja) 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
US5432940A (en) 1992-11-02 1995-07-11 Borland International, Inc. System and methods for improved computer-based training
US5574898A (en) 1993-01-08 1996-11-12 Atria Software, Inc. Dynamic software version auditor which monitors a process to provide a list of objects that are accessed
US5446915A (en) 1993-05-25 1995-08-29 Intel Corporation Parallel processing system virtual connection method and apparatus with protection and flow control
US5475842A (en) 1993-08-11 1995-12-12 Xerox Corporation Method of compilation optimization using an N-dimensional template for relocated and replicated alignment of arrays in data-parallel programs for reduced data communication during execution
US5600833A (en) 1993-09-17 1997-02-04 Digital Equipment Corp. Attribute portion based document retrieval system with system query language interface
JP4050339B2 (ja) 1994-04-28 2008-02-20 株式会社東芝 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置
US5588150A (en) 1994-09-29 1996-12-24 International Business Machines Corporation Push down optimization in a distributed, multi-database system
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
FI98690C (fi) 1994-10-18 1997-07-25 Nokia Telecommunications Oy Menetelmä alueryhmäpuhelun muodostamiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä
US5734886A (en) 1994-11-16 1998-03-31 Lucent Technologies Inc. Database dependency resolution method and system for identifying related data files
FI98973C (fi) 1994-11-22 1997-09-10 Nokia Telecommunications Oy Menetelmä ryhmätietojen ylläpitämiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä
US5619692A (en) 1995-02-17 1997-04-08 International Business Machines Corporation Semantic optimization of query order requirements using order detection by normalization in a query compiler system
US5546576A (en) 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
FI100215B (fi) 1995-03-17 1997-10-15 Nokia Telecommunications Oy Matkaviestijärjestelmän tilaajatietojen päivittäminen
US5706509A (en) 1995-04-28 1998-01-06 Intel Corporation Application independent record level synchronization
US5678044A (en) 1995-06-02 1997-10-14 Electronic Data Systems Corporation System and method for improved rehosting of software systems
US5682537A (en) 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
US5819021A (en) 1995-12-11 1998-10-06 Ab Initio Software Corporation Overpartitioning system and method for increasing checkpoints in component-based parallel applications
KR100200095B1 (ko) 1995-12-30 1999-06-15 윤종용 디지탈 컨버젼스를 이용한 화면 이펙트 방법 및회로
US5909681A (en) 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
US5799149A (en) 1996-06-17 1998-08-25 International Business Machines Corporation System partitioning for massively parallel processors
US5870743A (en) 1996-06-24 1999-02-09 Oracle Corporation Method and apparatus for parallelizing operations that create a table
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JPH10232875A (ja) 1997-02-19 1998-09-02 Hitachi Ltd データベース管理方法および並列データベース管理システム
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US5956074A (en) 1997-03-11 1999-09-21 Sclafani; Peter J. Cable television return display unit
JP3155991B2 (ja) 1997-04-09 2001-04-16 日本アイ・ビー・エム株式会社 集約演算実行方法及びコンピュータ・システム
US6092062A (en) 1997-06-30 2000-07-18 International Business Machines Corporation Relational database query optimization to perform query evaluation plan, pruning based on the partition properties
US6077313A (en) 1997-10-22 2000-06-20 Microsoft Corporation Type partitioned dataflow analyses
US6295518B1 (en) 1997-12-09 2001-09-25 Mci Communications Corporation System and method for emulating telecommunications network devices
US6266804B1 (en) 1997-12-23 2001-07-24 Ab Initio Software Corporation Method for analyzing capacity of parallel processing systems
JPH11327884A (ja) * 1998-05-12 1999-11-30 Hitachi Ltd 既存システム処理情報を再構成し利用するシステム
US6625593B1 (en) 1998-06-29 2003-09-23 International Business Machines Corporation Parallel query optimization strategies for replicated and partitioned tables
US6205465B1 (en) 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6453464B1 (en) * 1998-09-03 2002-09-17 Legacyj. Corp., Inc. Method and apparatus for converting COBOL to Java
US6378126B2 (en) 1998-09-29 2002-04-23 International Business Machines Corporation Compilation of embedded language statements in a source code program
JP2000148699A (ja) 1998-11-06 2000-05-30 Nec Corp ネットワークマネージメントシステム
JP4406944B2 (ja) 1998-11-11 2010-02-03 株式会社日立製作所 計算機システム及び問合せに対する処理分散システム
US7047232B1 (en) 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
US7080062B1 (en) 1999-05-18 2006-07-18 International Business Machines Corporation Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries
US6560593B1 (en) 1999-07-20 2003-05-06 Computer Associates Think, Inc. Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query
JP4552242B2 (ja) 1999-10-06 2010-09-29 株式会社日立製作所 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法
US6615203B1 (en) 1999-12-17 2003-09-02 International Business Machines Corporation Method, computer program product, and system for pushdown analysis during query plan generation
US6947934B1 (en) 2000-02-16 2005-09-20 International Business Machines Corporation Aggregate predicates and search in a database management system
US6836883B1 (en) 2000-06-21 2004-12-28 Microsoft Corporation Method and system for compiling multiple languages
US7164422B1 (en) 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US7225444B1 (en) * 2000-09-29 2007-05-29 Ncr Corp. Method and apparatus for performing parallel data operations
US6785668B1 (en) 2000-11-28 2004-08-31 Sas Institute Inc. System and method for data flow analysis of complex data filters
US7000213B2 (en) * 2001-01-26 2006-02-14 Northwestern University Method and apparatus for automatically generating hardware from algorithms described in MATLAB
US8412746B2 (en) 2001-05-25 2013-04-02 International Business Machines Corporation Method and system for federated querying of data sources
US6877000B2 (en) 2001-08-22 2005-04-05 International Business Machines Corporation Tool for converting SQL queries into portable ODBC
JP4791660B2 (ja) * 2001-08-23 2011-10-12 日立公共システムエンジニアリング株式会社 データフロー自動生成装置とデータフロー自動生成方法およびコンピュータ読み取り可能な記録媒体
US6725212B2 (en) 2001-08-31 2004-04-20 International Business Machines Corporation Platform-independent method and system for graphically presenting the evaluation of a query in a database management system
JP2003099441A (ja) 2001-09-21 2003-04-04 Hitachi Ltd データ検索手順探索方法
US6915290B2 (en) 2001-12-11 2005-07-05 International Business Machines Corporation Database query optimization apparatus and method that represents queries as graphs
US7409474B2 (en) 2002-06-27 2008-08-05 Broadcom Corporation Method and system for rate adaptation
US7167850B2 (en) 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7076772B2 (en) 2003-02-26 2006-07-11 Bea Systems, Inc. System and method for multi-language extensible compiler framework
US7953891B2 (en) 2003-03-18 2011-05-31 Microsoft Corporation Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow
CA2429910A1 (en) 2003-05-27 2004-11-27 Cognos Incorporated System and method of query transformation
US7249120B2 (en) 2003-06-27 2007-07-24 Microsoft Corporation Method and apparatus for selecting candidate statistics to estimate the selectivity value of the conditional selectivity expression in optimize queries based on a set of predicates that each reference a set of relational database tables
US20050038788A1 (en) 2003-08-14 2005-02-17 International Business Machines Corporation Annotation security to prevent the divulgence of sensitive information
US8825629B2 (en) 2003-09-06 2014-09-02 Oracle International Corporation Method for index tuning of a SQL statement, and index merging for a multi-statement SQL workload, using a cost-based relational query optimizer
US7702610B2 (en) 2003-09-19 2010-04-20 Netezza Corporation Performing sequence analysis as a multipart plan storing intermediate results as a relation
US7133861B2 (en) 2003-12-04 2006-11-07 International Business Machines Corporation Query access plan rebuilds
US7930432B2 (en) 2004-05-24 2011-04-19 Microsoft Corporation Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow
US7899833B2 (en) 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
US7461052B2 (en) 2004-12-06 2008-12-02 International Business Machines Corporation Abstract query plan
US7890532B2 (en) 2004-12-15 2011-02-15 Microsoft Corporation Complex data access
US7359922B2 (en) 2004-12-22 2008-04-15 Ianywhere Solutions, Inc. Database system and methodology for generalized order optimization
USD521030S1 (en) 2005-04-29 2006-05-16 Hussman Corporation Canopy for a refrigerated display case
US20060265362A1 (en) 2005-05-18 2006-11-23 Content Analyst Company, Llc Federated queries and combined text and relational data
US7856523B2 (en) 2005-06-01 2010-12-21 Microsoft Corporation Random Access Memory (RAM) based Content Addressable Memory (CAM) management
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7584205B2 (en) 2005-06-27 2009-09-01 Ab Initio Technology Llc Aggregating data with complex operations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US20070067274A1 (en) 2005-09-16 2007-03-22 International Business Machines Corporation Hybrid push-down/pull-up of unions with expensive operations in a federated query processor
WO2007061430A1 (en) 2005-11-22 2007-05-31 Bea Systems, Inc. System and method for translating sql queries into xml query language
US20070214179A1 (en) 2006-03-10 2007-09-13 Khanh Hoang Searching, filtering, creating, displaying, and managing entity relationships across multiple data hierarchies through a user interface
US7464084B2 (en) 2006-01-30 2008-12-09 International Business Machines Corporation Method for performing an inexact query transformation in a heterogeneous environment
US7945562B2 (en) 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US8527971B2 (en) 2006-03-30 2013-09-03 Atostek Oy Parallel program generation method
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
JP5894724B2 (ja) 2006-08-10 2016-03-30 アビニシオ テクノロジー エルエルシー グラフ型計算の分散サービス
JP4872529B2 (ja) * 2006-08-22 2012-02-08 株式会社日立製作所 リバースエンジニアリング支援方法
JP2008158664A (ja) * 2006-12-21 2008-07-10 Sony Corp 通信システム、サーバ、通信端末及び通信方法
US7983897B2 (en) 2007-02-14 2011-07-19 Google Inc. Machine translation feedback
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8122088B2 (en) 2007-06-28 2012-02-21 International Business Machines Corporation Adding personal note capabilities to text exchange clients
US9424315B2 (en) 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US20100005077A1 (en) 2008-07-07 2010-01-07 Kickfire, Inc. Methods and systems for generating query plans that are compatible for execution in hardware
JP5453273B2 (ja) 2007-09-20 2014-03-26 アビニシオ テクノロジー エルエルシー グラフベース計算におけるデータフロー管理
US8495602B2 (en) * 2007-09-28 2013-07-23 Qualcomm Incorporated Shader compile system and method
US8527976B2 (en) 2007-11-14 2013-09-03 Nec Laboratories America, Inc. System and method for generating error traces for concurrency bugs
CN101436192B (zh) 2007-11-16 2011-03-16 国际商业机器公司 用于优化针对垂直存储式数据库的查询的方法和设备
WO2009071329A1 (en) * 2007-12-07 2009-06-11 Pact Xpp Technologies Ag Using function calls as compiler directives
US20090198703A1 (en) 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
US7933916B2 (en) 2008-02-28 2011-04-26 Microsoft Corporation Querying nonSQL data stores with a SQL-style language
US8537160B2 (en) 2008-03-05 2013-09-17 Microsoft Corporation Generating distributed dataflow graphs
JP2009217405A (ja) * 2008-03-07 2009-09-24 Nec Corp ジョブネットワーク自動生成方式及びプログラム
US8538985B2 (en) 2008-03-11 2013-09-17 International Business Machines Corporation Efficient processing of queries in federated database systems
US20100295833A1 (en) 2008-04-11 2010-11-25 Masaaki Nishio Display device and method of driving display device
US7974967B2 (en) 2008-04-15 2011-07-05 Sap Ag Hybrid database system using runtime reconfigurable hardware
US20100057695A1 (en) 2008-08-28 2010-03-04 Microsoft Corporation Post-processing search results on a client computer
US7917463B2 (en) 2008-10-10 2011-03-29 Business.Com, Inc. System and method for data warehousing and analytics on a distributed file system
US20100121868A1 (en) 2008-11-07 2010-05-13 Yann Le Biannic Converting a database query to a multi-dimensional expression query
US9886319B2 (en) 2009-02-13 2018-02-06 Ab Initio Technology Llc Task managing application for performing tasks based on messages received from a data processing application initiated by the task managing application
US8392398B2 (en) 2009-07-29 2013-03-05 International Business Machines Corporation Query optimization over graph data streams
CN101645074A (zh) * 2009-09-07 2010-02-10 浪潮集团山东通用软件有限公司 一种访问不同类型关系型数据库的方法
EP2478433A4 (en) * 2009-09-16 2016-09-21 Ab Initio Technology Llc MAPPING DATA SET ELEMENTS
US9064047B2 (en) * 2009-09-24 2015-06-23 International Business Machines Corporation Parallel processing of ETL jobs involving extensible markup language documents
US8620903B2 (en) 2009-11-04 2013-12-31 Nec Laboratories America, Inc. Database distribution system and methods for scale-out applications
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US8555265B2 (en) * 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
KR101687213B1 (ko) * 2010-06-15 2016-12-16 아브 이니티오 테크놀로지 엘엘시 동적으로 로딩하는 그래프 기반 계산
US8326821B2 (en) 2010-08-25 2012-12-04 International Business Machines Corporation Transforming relational queries into stream processing
US8782619B2 (en) 2010-10-26 2014-07-15 Oracle International Corporation Extending programming language semantics while maintaining standard syntax through aliasing
US8850574B1 (en) * 2011-02-28 2014-09-30 Google Inc. Safe self-modifying code
US8640112B2 (en) * 2011-03-30 2014-01-28 National Instruments Corporation Vectorizing combinations of program operations
KR101088834B1 (ko) 2011-04-12 2011-12-06 디에스알 주식회사 크레인용 합성섬유 로프 및 이의 제조방법
US8782081B2 (en) 2011-05-11 2014-07-15 Google Inc. Query template definition and transformation
US9449030B2 (en) 2011-06-30 2016-09-20 International Business Machines Corporation Method for native program to inherit same transaction content when invoked by primary program running in separate environment
US9183302B1 (en) 2012-03-23 2015-11-10 The Mathworks, Inc. Creating a technical computing environment (TCE)-based search engine
US9182957B2 (en) * 2012-07-10 2015-11-10 Loring Craymer Method and system for automated improvement of parallelism in program compilation
WO2014018641A2 (en) * 2012-07-24 2014-01-30 Ab Initio Technology Llc Mapping entities in data models
US9135301B2 (en) 2013-03-14 2015-09-15 Oracle International Corporation Pushdown of sorting and set operations (union, intersection, minus) to a large number of low-power cores in a heterogeneous system
US9292373B2 (en) * 2013-03-15 2016-03-22 International Business Machines Corporation Query rewrites for data-intensive applications in presence of run-time errors
US9633104B2 (en) 2013-05-03 2017-04-25 Sas Institute Inc. Methods and systems to operate on group-by sets with high cardinality

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI760880B (zh) * 2020-10-07 2022-04-11 瑞昱半導體股份有限公司 與儲存裝置相關的傳輸控制電路、資料傳輸系統及操作資料傳輸系統的方法

Also Published As

Publication number Publication date
CA2929716A1 (en) 2015-06-11
EP3373134A1 (en) 2018-09-12
JP2017502385A (ja) 2017-01-19
CA3092699C (en) 2023-07-25
EP3373134B1 (en) 2020-07-22
KR20160096137A (ko) 2016-08-12
AU2019213447B2 (en) 2020-05-14
AU2019213447A1 (en) 2019-09-05
US20150160934A1 (en) 2015-06-11
US20180165077A1 (en) 2018-06-14
WO2015085291A1 (en) 2015-06-11
CN105793818B (zh) 2019-09-17
EP3726375B1 (en) 2023-02-01
EP3726375A1 (en) 2020-10-21
AU2020203491B2 (en) 2021-11-04
AU2014360106B2 (en) 2019-05-23
US20180165078A1 (en) 2018-06-14
CN105793818A (zh) 2016-07-20
CA2929716C (en) 2021-08-31
EP3077904A1 (en) 2016-10-12
US11106440B2 (en) 2021-08-31
US20200073645A1 (en) 2020-03-05
US10282181B2 (en) 2019-05-07
EP3077904B1 (en) 2018-04-11
AU2020203491A1 (en) 2020-06-18
KR102186050B1 (ko) 2020-12-03
US10289396B2 (en) 2019-05-14
AU2014360106A1 (en) 2016-05-26
CA3092699A1 (en) 2015-06-11
US9891901B2 (en) 2018-02-13

Similar Documents

Publication Publication Date Title
JP6454706B2 (ja) ソースコード変換
JP7090778B2 (ja) 影響分析
US10521427B2 (en) Managing data queries
US10437573B2 (en) General purpose distributed data parallel computing using a high level language
CA2698265C (en) Managing data flows in graph-based computations
US8209664B2 (en) High level programming extensions for distributed data parallel processing
US20100175049A1 (en) Scope: a structured computations optimized for parallel execution script language

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171024

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181004

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181217

R150 Certificate of patent or registration of utility model

Ref document number: 6454706

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250