Ispirer MnMTK ist das Tool für die Anwendungskonvertierung. Dieses Tool kann die Konvertierung von Progress 4GL nach C#.NET automatisch durchführen.
Während der Erarbeitung unser Tools berücksichtigen wir die Anforderungen der Kunden um die besten Konvertierungsergebnisse zu erreichen.
Unser technishes Team hat viele Erfahrung und immer findet die innovativen Lösungen zu den komplizierten Problemen.
Diese Demo zeigen, wie Ispirer MnMTK 2015 Progress 4GL nach C#.NET konvertieren kann:
Warum Ispirer MnMTK
Unsere Vorteile:
- Hochqualifiziertes Team: unsere Experte haben viele Erfahrung in den Migrationsprojekten und können Migrationen auf jeden Schwierigkeitsgrad durchführen.
- Kundenorientierung: wir personalisieren das Tool gemäß der Anforderungen von den Kunden. Die Erweiterung des Tools nimmt 1-2 Tage in Anspruch;
- Online-Meeting: es gibt die Möglichkeit Online-Meetings zu vereinbaren, während dessen unser Team den Konvertierungsprozess Ihnen demonstrieren kann;
- Projektbezogene Preise: die Preise hängen von der Größe des Projektes ab; wir bieten eine Reihe von Optionen an, damit Sie am besten passende Option wählen können;
- Optimierte Konvertierung: nach der Konvertierung bekommen Sie den komplett funktionellen Code.
Ispirer MnMTK ünterstützt auch die Migration von Progress Datenbank nach verschiedenen Datenbanken.
Bewertungsprozess
Füllen Sie bitte den Fragenbogen, der uns bei der Bewertung helfen wird. Auf der Basis deiser Information können wir Ihnen üngefähres Angebot machen:
Konvertierungsbesonderheiten
Als ein Teil der Anwendungsmigration von Progress 4GL nach C# .NET werden Progress Datenbanken nach Microsoft SQL Server Datenbanken konvertiert. Ispirer MnMTK bietet das Folgende an:
- Konvertierung der Progress Tabellen/Sichten/Sequenzen nach Microsoft SQL Server Tabellen/Sichten/Sequenzen:
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
)
- Konvertierung der Progress 4GL Trigger nach Microsoft SQL Server Trigger/Prozeduren oder C# Klassen:
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 nach .NET Code:
- Konvertierung der Progress 4GL Dateien der Prozeduren (*.p) nach C# Klassen
- Konvertierung der Progress 4GL Include-Dateien (*.i) nach C# Klassen/Code
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;
}
}
}
}
- Konvertierung der Progress 4GL Window Dateien der Prozeduren (*.w) nach:
- Windows Forms
- Windows Presentation Foundation (WPF)
Zum Beispiel, nach WinForms:
Ispirer MnMTK separiert die Logik von Progress 4GL window automatisch (*.w):
- Logik der Benutzeroberfläche nach “.Designer.cs”
- Logik der ON Trigger nach Quellcode “.cs”
- Konvertierung von Data Access nach:
&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();
}
}
}
}
}
- Konvertierung von Progress 4GL Web Service Mapping Files(*.wsm) nach XML Web service (*.asmx.cs)
Sie können auch die Muster vom Progress 4GL Quellcode unterladen und die Ergebnisse der Konvertierung anschauen:
Für weitere Informationen, kontaktieren Sie bitte uns.
|