Ispirer MnMTK 애플리케이션의 마이그레이션 및 현대화는 툴킷은 Progress 4GL에서 C#.NET으로 자동 변환을 제공합니다.
이제부터 수동 변환 더 이상 필요가 없습니다. Ispirer MnMTK는 Progress 4GL에서 C#.NET로 필요 변환을 수행하겠습니다. Inspirer Systems의 헌신적인 프로프 팀은 저희 툴은 고객님의 가장 복잡한 레거시 근대화 요구 사항에 충족하게 가능하게 합니다.
이 데모 영상은 Ispirer MnMTK의 도움으로 Progress 4GL에서 C#.NET로 마이그레이션하는 방법을 보여줍니다.
왜 Ispirer MnMTK인가?
Ispirer MnMTK는 현재 Progress 4GL 응용 프로그램에서 C#.NET으로 전체 마이그레이션 프로세스를 자동화 합니다. 또한, Ispirer MnMTK는 관련된 위험의 대부분을 제거하고 상당히 내부 노력을 감소 시킵니다. 이러한 모든 혜택은 프로젝트 유형에 대한 Ispirer MnMTK가 더욱 매력적인 툴을 만드는 매우 합리적이고 경쟁력있는 비용으로 사용할 수 있습니다.
저희 변환 택놀로지는 다음으로 보장합니다.
- 수동 변환 품질로 읽을 수 및 유지 보수성 코드 생성 읽기 쉽고 유지 보수 코드 생산
- 코드 변환 및 Refactorin은 오히려 새로운 플랫폼에서 기존 기술을 모방보다 .NET의 모범 사례를 구현하는 코드를 변환합니다
- 장점과 새로운 .NET 기능과 기술 (WPF, LINQ, MVC 등)를 사용하는 최신 기술
- 변환 후 IP 사용과 Ispirers 라이브러리 Pure .NET Code 없음
Ispirer MnMTK는 수천 파일과 수백만 라인을 포함하는 대형 응용 프로그램을 변환하는 것이 효과적입니다.
- Automatically Resolves Dependencies
그것은 종속 파일,데이터베이스로 부터 자동으로 의존성과 충돌을 해결하기 위해 정보를 추출 할 수있다
- 다른 구성을 이해하는것은
다양한 구성과 프로젝트 파일 (SQLWays .xml 파일, 비주얼 스튜디오 .dbml, EDMX, .XML, 그것은 .xsd 파일 등)부터 정보를 읽을수 있다
- 빠르고 강력한 사용자 정의
추상 레이어, 재사용 가능한 변환 템플릿, 내부 변환 언어와 액세서리 툴은 빠른 사용자 정의 및 복잡한 코드 변환을 제공합니다.
또한 Progress 4GL 소스 코드 샘플 및 변환의 결과를 다운로드 할 수 있습니다:
평가 과정
평가는 마이그레이션의 노력과 비용을 추정하는데 도움을 줍니다. 더 자세한 평가의 공정을 위해 다름 링크를 참조하시기 바랍니다.
Ispirer Toolkit 10
Progress 4GL to C#.NET
내려받기
Ispirer 마이그레이션 솔루션
Progress 4GL to C#.NET
서비스
툴킷
변환의 특징
Progress 4GL의 일환으로 C # .NET 용 프로그램 마이그레이션 진행 데이터베이스가 마이크로 소프트 SQL Server 데이터베이스로 변환됩니다. MnMTK는 또한 허용합니다.
- 테이블 / 뷰 / 시퀀스에 시퀀스가 마이크로 소프트 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 triggers를 Microsoft SQL Server triggers/procedures 또는 C# classes로 변환한다.
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 code에서 to .NET code로
- Progress 4GL Procedure Files (*.p)를 C# 클래스로 변환합니다
- Convert Progress 4GL Include Files (*.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 Window Procedure (*.w) 파일을 다음으로 변환합니다.
- Windows Forms
- Windows Presentation Foundation (WPF)
For example, to WinForms:
MnMTK는 Progress 4GL window(*.w) 로직을 분리합니다
- UI logic to Designercs
- ON triggers logic to source code cs
다음으로 데이터 Access를 변환:
&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 Web Service Mapping Files(*.wsm)에서 XML Web service (*.asmx.cs)로 변환합니다.
추가로 칠문이 있으시면 언제든지 연락주시기 바랍니다.