このWebサイトでは、クッキーを使用しております。
詳細は プライバシー保護およびクッキーに関する通知を参照ください。

インテリジェントでカスタマイズ可能なDB/アプリ自動変換ソリューション


Progress 4GLからC#.NETへの移行

.NET

アプリケーション移行ツールIspirer MnMTKはProgress 4GLをC#.NETに変換する事が出来ます。


Progress 4GLからC#.NETへの移行の概要

Ispirer MnMTKは、現行OpenEdgeアプリケーションからC#.NETへの移行作業を自動化することができ、移行作業に伴うリスクと必要な内部作業を大幅に削減することが出来ます。Ispirer MnMTKはこれらの利点と共にお手頃な価格でデータベースおよびアプリケーションの変換を行う事ができるため、このような移行プロジェクトにとりとても魅力的なツールです。

このデモでIspirer MnMTKによるProgress 4GLからC#.NETへの変換を見ることができます:


Progress 4GLからC#.NETへの移行にIspirer MnMTK 2017を使う理由

Ispirer Systemsの主な目標は、高度で一線級のデータベース移行を実行することです。移行ツールIspirer MnMTKは、様々な個別のビジネス要件に応えることができる費用対効果の高い製品です。

  • 良質で経験豊富なサポート:私たちのテクニカルチームは絶大経験のおかげで、最も複雑なタスクの解決策を見つけることをお約束します
  • 迅速なカスタマイズ:修正、カスタム変換、最適化(ほとんどの要件は 1~2 日で対応);
  • 検討段階での共同作業:お客様の検討期間中に変換のデモをお見せすることができます;
  • 柔軟な価格設定:広範囲オプションのご提供;
  • 最適化された変換:インテリジェントで保守し易いコードを生成します。
    変換後特別なIspirerのミドルウェア等は必要ありません。

見積のための情報収集

Ispirerでは、ツールを使用したアプリケーション移行プロジェクトのIspirer/お客様による共同作業モデルを用意しています。お見積に必要な情報は、下記のフォームを参照いただくと揃えることができます:


無償試用版(アプリ移行)

Ispirer Toolkit 10Progress 4GLからC#.NETへ

ダウンロード

お見積

移行サービスProgress 4GLからC#.NETへ

サービス 移行ツール

変換機能

Progress 4GLからC#.NETへのアプリケーション移行の一部として、ProgressデータベースがMicrosoft SQL Serverデータベースに変換されます:

Progress to SQL Server

  • Progress のテーブル、ビュー、シークェンスをMicrosoft SQL Serverのテーブル、ビュー、シークェンスへ:
    ADD TABLE "TB_DATATYPES" 
      AREA "Schema Area" 
      DUMP-NAME "tb_datat" 
        
      ADD FIELD "c1" OF "TB_DATATYPES" AS CHARACTER 
      FORMAT "X(8)" 
      INITIAL "" 
      POSITION 2 
      SQL-WIDTH 16 
      ORDER 10 
        
      ADD FIELD "c4" OF "TB_DATATYPES" AS INTEGER 
      FORMAT "->,>>>,>>9" 
      INITIAL "0" 
      POSITION 5 
      SQL-WIDTH 4 
      ORDER 20 
        
      ADD FIELD "c5" OF "TB_DATATYPES" AS logical 
      FORMAT "yes/no" 
      INITIAL "no" 
      POSITION 6 
      SQL-WIDTH 1 
      ORDER 30 
        
      . 
      PSC 
      cpstream=ISO8859-1 
      . 
      0000000976 
        
      TO: 
        
      CREATE TABLE TB_DATATYPES 
      ( 
      c1 CHAR(16) NULL, 
      c4 INT NULL, 
      c5 BIT NULL 
      )
  • Progress 4GLのトリガをMicrosoft SQL Serverのトリガ/プロシージャ、またはC#のクラスへ:
    TRIGGER PROCEDURE FOR DELETE OF gsinvhd. 
      FIND distribution 
      WHERE distribution.company = gsinvhd.company NO-LOCK 
      NO-ERROR. 
        
      TO: 
        
      CREATE TRIGGER SWT_Delete_gsinvhd 
      ON gsinvhd 
      AFTER DELETE 
      AS 
      DECLARE @distribution_company VARCHAR(255) 
      SELECT @distribution_company = company FROM distribution 
      WHERE distribution.company = gsinvhd.company

  • Progress 4GLコードを.NET コードへ:
    Progress 4 GL to .Net
  • Progress 4GLのプロシージャファイル(*.p) をC#クラスへ変換
  • Progress 4GLのインクルード ファイル (*.i) をC#クラス/コードへ変換
    FUNCTION days-in-month RETURNS INTEGER 
      ( INPUT pmonth AS INTEGER, INPUT pyear AS INTEGER ) : 
        
      DEFINE VARIABLE idays AS INTEGER EXTENT 12 INITIAL 
      [31,28,31,30,31,30,31,31,30,31,30,31]. 
        
      IF pmonth NE 2 THEN DO: 
      RETURN idays[pmonth]. 
      END. 
      ELSE DO: 
      IF INTEGER(pyear / 4) * 4 = pyear THEN DO: 
      IF INTEGER(pyear / 100) * 100 = pyear THEN DO: 
      IF INTEGER(pyear / 400) * 400 = pyear 
      THEN RETURN 29. 
      ELSE RETURN 28. 
      END. 
      ELSE RETURN 29. 
      END. 
      ELSE RETURN 28. 
      END. 
      END FUNCTION. 
        
      using System; 
      using System.Collections.Generic; 
      namespace Ispirer.Services.Source 
      { 
      public class TestClass 
      { 
      static TestClass() 
      { 
      } 
      public int Days_in_month(int pmonth, int pyear) 
      { 
      int[] idays = new int[] 
      { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
      if (pmonth != 2) 
      { 
      return idays[pmonth - 1]; 
      } 
      else 
      { 
      if (Convert.ToInt32(pyear / 4) * 4 == pyear) 
      { 
      if (Convert.ToInt32(pyear / 100) * 100 == pyear) 
      { 
      if (Convert.ToInt32(pyear / 400) * 400 == pyear) 
      return 29; 
      else 
      return 28; 
      } 
      else 
      return 29; 
      } 
      else 
      return 28; 
      } 
      } 
      } 
      }
  • Progress 4GLのウィンドウプロシージャ(*.w) ファイルを以下に変換:
    • Windows Forms
    • Windows Presentation Foundation (WPF)


    • Progress 4GL window

      例WinFormsへ:

      csharp winforms window

    Ispirer MnMTKはProgress 4GLのウィンドウ(*.w)ロジックを自動的にセパレート:
    • UIロジックを“.Designer.cs”へ
    • ONトリガロジックをソースコード “.cs”へ
  • データアクセスを以下に変換:
    • ADO.NET
    • LINQ
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE generate-data Procedure 
      PROCEDURE generate-data : 
      DEFINE VARIABLE i AS INTEGER NO-UNDO. 
      DEFINE VARIABLE gc-company AS CHARACTER NO-UNDO. 
        
      FIND company WHERE company.company = gc-company NO-LOCK NO-ERROR. 
        
      find budget where budget.company = gc-company no-lock no-error. 
        
      Do while avail budget: 
      Do i = 0 to company.num-periods: 
      find budget-analysis where 
      budget-analysis.user-id = company.gc-user-id and 
      budget-analysis.company = gc-company and 
      budget-analysis.pc-center = "ALL" and 
      budget-analysis.acct-period = i 
      no-error. 
      End. 
      End. 
      END PROCEDURE. 
      &ANALYZE-RESUME 
        
      TO: 
      using System; 
      using System.Collections.Generic; 
      using System.Data; 
      using System.Linq; 
      namespace Ispirer.Services.Source 
      { 
      public class Gn_Data 
      { 
        
      #region Implicit buffers 
        
      Data.Tables.company company; 
      Data.Tables.budget budget; 
      Data.Tables.budget_analysis budget_analysis; 
        
      #endregion 
        
      public Gn_Data() 
      { 
      } 
      public void Generate_data() 
      { 
      int i = 0; 
      string gc_company = string.Empty; 
      company = (from company_Row in Db.company 
      where company_Row.company == gc_company 
      select company_Row).FirstOrDefault(); 
      budget = (from budget_Row in Db.budget 
      where budget_Row.company == gc_company 
      select budget_Row).FirstOrDefault(); 
      while (budget != null) 
      { 
      for (i = 0; i <= company.num_periods; i++) 
      { 
      budget_analysis = 
      (from budget_analysis_Row in Db.budget_analysis 
      where budget_analysis_Row.user_id == company.gc_user_id && 
      budget_analysis_Row.company == gc_company && 
      budget_analysis_Row.pc_center == "ALL" && 
      budget_analysis_Row.acct_period == i 
      select budget_analysis_Row).FirstOrDefault(); 
      } 
      } 
      } 
      } 
      }
  • Progress 4GLのウェブサービスマッピングファイル(*.wsm) をXMLウェブサービス (*.asmx.cs)へ変換

Progress 4GLのソースコードのサンプルと変換の結果をダウンロードすることができます:


詳細はお問い合わせください。

 
Testimonials
Schulz, Brazil

InterBase to Microsoft SQL Server
Database Migration

In order to change a factory supervision and information system, we were looking for a tool to migrate the existing "Interbase 6.0" database to "Microsoft SQL Server". We tested a few softwares, but they didn't suit us.

...

System Protocol Information, Malaysia

Informix to Microsoft SQL Server
Database Migration

Dear Sir / Madam,

We have just completed our biggest migration job to date from Informix to MS SQL Server. The exercise was efficiently done within schedule given to us. It was a success and thanks to a great part to your tool.

...

Case Studies
Sybase ASEからMicrosoft SQL Serverへの移行、チリ

チリに拠点を置くソフトウェア開発会社です。

...

IBM DB2 iSeriesからMicrosoft SQL Serverへの移行、アメリカ

ソフトウェアとアプリケーションの開発、リエンジニアリングとメンテナンスを専門とする、米国に本拠を置くフルサービスのIT企業です。 同社はウェブサイトデザイン、ウェブホスティング、SEOなどのウェブサービスを提供しています。 また、CRMシステムの導入、アップグレードおよび管理も実施しています。

...