Grâce à l'outil Ispirer Migration and Modernization Toolkit il est désormais possible de convertir des applications depuis Progress 4GL vers Java!
Pourquoi Ispirer MnMTK?
Effectuez votre migration avec Ispirer Systems et profitez donc des avantages suivants que vous offre notre outil:
-
Cohérence et Intégration: automatisation jusqu'à 100%
-
Personnalisation rapide: individualisation et optimisation de la converson (1-3 jours ouvrables en moyenne)
-
Engagement pré-vente: nous démontrons une conversion complète au cours de l'évaluation avant que vous preniez une décision
- Prix Raisonnable: nous offrons une tarification souple
- Conversion Optimisée: en tant que résultat vous obtenez un code intelligent et maintenable, sans aucun middleware à utiliser après la conversion
Evaluation et Achat
L'évaluation de votre projet de migration permettra de mesurer les ressources nécessaires aussi bien que le coût de votre migration. Afin de faciliter ce processus, n'hésitez pas à remplir et nous envoyer en retour le questionnaire ci-dessous:
Ispirer Migration Solution
Progress 4GL vers Java Commander
Caractéristiques de Conversion
Migration des bases de données Progress vers des bases de données Oracle/PostgreSQL/MySQL lors de la migration de l'application Progress 4GL:
- Convertit les tables/ vues/ séquences vers Oracle/PostgreSQL/MySQL
Par exemple,
Progress 4GL:
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
Oracle:
CREATE TABLE TB_DATATYPES
(
c1 CHAR(16),
c4 NUMBER(10,0),
c5 NUMBER(1,0)
);
- Convertit les triggers de Progress 4GL vers les triggers/procédures de PostgreSQL/ Oracle/MySQL et les classes Java:
Progress 4GL:
TRIGGER PROCEDURE FOR DELETE OF gsinvhd.
FIND distribution
WHERE distribution.company = gsinvhd.company NO-LOCK NO-ERROR.
Oracle:
CREATE OR REPLACE TRIGGER SWT_Delete_gsinvhd
AFTER DELETE
ON gsinvhd
DECLARE
v_distribution_company VARCHAR2(255);
BEGIN
SELECT company INTO v_distribution_company FROM distribution
WHERE (distribution.company = gsinvhd.company) AND ROWNUM <=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
- Convertit les fichiers de procédures (*.p) Progress 4GL vers les paquets Java avec les classes
Progress 4GL:
DEF VAR w_ail AS CHAR NO-UNDO.
PROCEDURE act_InitValues.
IF w_ ail EQ "ac21" OR w_ ail EQ "first"
THEN DO:
ASSIGN w_ ail ="first".
END.
ELSE IF w_ ail EQ "ac50"
THEN DO:
ASSIGN w_ ail ="second".
END.
ELSE DO:
ASSIGN w_ ail ="third"
END.
END PROCEDURE.
Java:
package ispirer;
public class If_statement
{
private String w_ ail = null;
public void act_InitValues()
{
if((w_ ail.equals("ac21")) ||( w_ ail.equals("first")))
{
w_ ail = "first";
}
else if(w_ ail.equals("ac50"))
{
w_ ail = "second";
}
else
{
w_ ail = "third";
}
}
}
- Convertit les fichiers Include (*.i) Progress 4GL vers les paquets Java avec les classes
Progress 4GL:
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.
Java:
package ispirer;
public class Daymonth
{
public final 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 ((int)(pyear / 4) * 4 == pyear)
{
if ((int)(pyear / 100) * 100 == pyear)
{
if ((int)(pyear / 400) * 400 == pyear)
{
return 29;
}
else
{
return 28;
}
}
else
{
return 29;
}
}
else
{
return 28;
}
}
}
}
- Convertit les fichiers de procédure Window (*.w) Progress 4GL vers les UI Frameworks Java (Swing, SWT, Java FX, etc.)
- Convertit les Progress ABL reports vers Java Jasper reports ou Crystal reports
- Convertit Data Access vers Java Database Access Frameworks (JDBC, Hibernate, Torque, etc.)
Ispirer MnMTK peut également générer automatiquement Hibernate, Torque XML maps selon les tables de bases de données.
Par exemple, Progress 4GL:
DEF BUFFER buf_LogOverview FOR test_table.
PROCEDURE test_proc.
FIND FIRST buf_LogOverview NO-LOCK
WHERE buf_LogOverview.col1 EQ "1"
AND buf_LogOverview.col2 EQ 2
NO-ERROR.
END PROCEDURE.
CREATE TABLE test_table
(
col1 VARCHAR,
col2 INTEGER PRIMARY KEY
);
Java:
package buffer_migration;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;
public class Find_stmt
{
private Test_table buf_LogOverview;
public void test_proc()
{
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
buf_LogOverview =((List< Test_table >)
session.createQuery("from Test_table WHERE col1 = '1' "+
" AND col2 = 2").list()).get(0);
session.getTransaction().commit();
}
}
import java.util.Set;
import java.util.HashSet;
public class Test_table
{
private String col1;
private Integer col2;
private Set test_tables = new HashSet();
public Test_table()
{
}
public void setCol1(String col1)
{
this.col1=col1;
}
public String getCol1()
{
return col1;
}
public void setCol2(Integer col2)
{
this.col2=col2;
}
public Integer getCol2()
{
return col2;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Test_table" table="test_table">
<property column="col1" name="col1" type="java.lang.String"/>
<id column="col2" name="col2" type="java.lang.Integer"/>
</class>
</hibernate-mapping>
Contactez-nous pour en savoir plus.
|