トップページ

ツールによるレガシープログラムの言語変換について

 

現状の問題点

 

  • 既存システムが事業部門ごとに構築され、全社横断的なデータ活用ができない。
  • 過剰なカストマイズがなされていて複雑化・ブラックボックス化している。
  • 既存システム問題を解決しDXを実現することが早急の課題である。
  • DXが実現できないと2025年以降最大12兆円/年の経済損失が生じる可能性がある。

(DXレポート −2025年の崖−(2018年経産省))

 

ソリューションの提案

 

  • 仕様書のないスパゲッティ化したプログラムを解析して、100%自動変換します。さらに独自方法により各命令の実行順序を自動決定し、スパゲッティ問題を解決した変換対象言語のプログラムを自動生成します。このツールは、適切な前処理を行った後は100%自動化してプログラム言語変換を行います。
     COBOL to JAVA 自動化ツール(平成29年度ものづくり補助金にて開発済み)

その結果、自動変換した後の人手による修正作業が不要となり、スパゲッティ化したプログラムの流れが解消されます。

 

レガシープログラムの言語変換機能

プログラムの自動生成ツール

既存のプログラム、例えばCOBOLやVBで書かれたプログラムは現在も多数稼働しています。

 

今回用いた手法では、人手でフローチャートを記述しなくてもプログラムの実行順序を自動決定できます。この技術を用いると、従来難しかった既存プログラムの処理過程を整理した、すなわち理想的な実行経路に従ったソースコードへの言語変換が可能となります。

 

図 プログラム言語変換過程

 

▲画像をクリックで拡大

 

複数の言語の対応にはベースとなる同じ仕組みを利用することができます。プログラム解析ツールの言語依存部分、また、命令実行順序自動決定機能及びプログラム生成ツールの言語データを別途用意することによって比較的短期間で他の言語への対応が可能となります。

 

特徴的なプログラムの言語変換

現時点ではCOBOLからJava言語への変換が可能ですが、開発に当たって、他のプログラム言語にも対応可能なように汎用的に開発されています。このことは、例えばCOBOLにおいて、COBOLコンパイラーを提供しているメーカー各社の「方言」や、「バージョンによる機能相違」にも、個別に対応が可能な仕組みとなっています。

 

このことが可能になったのは、単純に既存プログラムと同じ処理フローを世襲して言語変換するのではなく、個々の計算式の計算条件を一目で分かるように変換する方式を採用したことによります。

 

言語変換のイメージを図に示します。

第一段階では、図のように、個々の計算命令ごとに、その命令が実行可能となる条件を追加します。

 

 

 

▲画像をクリックで拡大

 

この情報を基に、必ず命令の右辺の変数が前もって計算(成立)済みになるように個々の命令の実行順序を決定し、その順序通りに命令を並べ変えます。

 

 

このように変換すると、いままで条件文で分岐することで、その構造が捉えにくかったプログラムの流れが一目で確認できるようになります。すなわち、上から下への一本調子の流れになるので、プログラムの流れが捉えやすくなることは直感的にお分かりいただけると思いますし、メンテナンスも修正したい命令のみに着目すればよいので、Datatreeと一緒に活用すれば、メンテナンス性が向上します。
 この条件を満たすには一定の制限がありますが、それに対しては別途解決しています。