COBOL에서 C#.NET으로 마이그레이션
Ispirer MnMTK 애플리케이션의 마이그레이션 및 현대화는 툴킷은 COBOL 에서 C# .NET으로 자동 변환을 제공합니다.
왜 Ispirer MnMTK인가?
Ispirer MnMTK 마이그레이션 툴은 COBOL 응용 프로그램의 마이그레이션을 자동화 합니다. 또한, Ispirer MnMTK를 활용하면 마이그레이션과 관련된 대부분의 위험을 제거함과 동시에 내부 노력을 상당 부분 줄일 수 있습니다. 이런 모든 장점은 데이터베이스 및 어플리케이션을 마이그레이션 하는 경우 Ispirer MnMTK를 사용한다면 매우 합리적이고 경쟁력있는 비용으로 프로젝트를 진행할 수 있음을 의미합니다.
Ispirer MnMTK 2015의 주요 장점
Ispirer Systems의 주된 목적은 최상의 애플리케이션의 마이그레이션을 제공하는 것입니다. Ispirer Systems의 마이그레이션 툴은 고객님의 비즈니스 요구 사항을 충족할 수 있도록 여러 가지 방식으로, 원하는 대로 개인화합니다.
- 고품질의 기술 지원 Ispirer Systems의 기술 팀은 다양한 마이그래이션 프로젝트에서 경험이 있습니다.
- 고객 지향적 접근 방식 및 신속한 고객화 Ispirer Systems의 마이그레이션 툴은 고객님의 비즈니스 요구사항 에 맞추기 위하여 툴을 고객님의 요구대로 개인화합니다. 고객님께 맞춤 및 최적화 변환은 영업일 2일 내에 수행합니다.
- 사전 판매 전시 고객님이 결정을 내리기 전에 Ispirer Systems는 평가 과정에서 전환을 입증합니다.
- 유연한 가격 정책 다양한 옵션 중에서 고객님께 필요한 것을 찾을 수 있습니다.
- 최적화된 변환 변환 후에는 Ispirer의 미들웨어를 사용할 필요없이 지능적인 코드를 얻을 수 있습니다.
이 데모 영상은 Ispirer MnMTK의 도움으로 COBOL에서 C# .NET으로 마이그레이션하는 방법을 보여줍니다.
평가 과정
고객님께서 Ispirer Systems와 프로젝트에 대해 공동 논의를 위해 주저 없이 설문지를 작성하시고 보내주십시오.
Ispirer Toolkit 10
COBOL to C#.NET 내려받기
Ispirer 마이그레이션 솔루션
COBOL to C#.NET 서비스
툴킷
변환의 특징
COBOL 프로그램 구조
IDENTIFICATION DIVISION.
PROGRAM-ID. DemoId.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
FIRST-PARAGRAPH.
DISPLAY "First DEMO".
4가지 부문
- IDENTIFICATION DIVISION: 프로그램의 이름을 입력하는 곳
- ENVIRONMENT DIVISION: 프로그램에서 필요한 파일을 정의하는 곳
- DATA DIVISION: 변수, 레코드, 파일 등을 선언하는 곳
- PROCEDURE DIVISION: 프로그램을 작성하는 곳. 이 위의 샘플 단락 입니다. 이 단락은 레이블로 명명된 일련의 명령어입니다. 단락 마지막에 특정 표시는 없습니다.
변환 기능
- COBOL 어플리케이션 데이터베이스를 MSSQL Server데이터베이스로 마이그레이션
- COBOL 프로그램에서 C# 클래스로 변환
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CobolApplication
{
class DemoId
{
static void Main(string[] args)
{
Console.WriteLine("First DEMO");
}
}
}
- 식별자(identifiers)의 이름을 "camel" 케이스로 변환
- 클래스의 변수에 변수를 선언하고 WORKING-STORAGE 섹션을 변환
WORKING-STORAGE SECTION.
01 MY_STRING_1 PIC X(20).
01 MY_STRING_2 PIC X(30).
01 MY_NUMBER PIC 9(2) VALUE 1.
To:
private string MyString1;
private string MyString2;
private int MyNumber = 1;
- COBOL 레코드를 user-defined C# 타입으로 변환
01 MY_DATA_RECORD.
03 MY_NAME PIC X(20) VALUE "John Smit".
03 MY_ADDRESS PIC X(40) VALUE "Walt street".
03 MY_ID PIC 9(2) VALUE 123.
To:
public class MyDataRecord
{
public string MyName = "John Smit";
public string MyAddress = "Walt street";
public int MyId = 123;
}
public MyDataRecord myDataRecord = new MyDataRecord();
- COBOL MOVE TO/COMPUTE 문을 C# assignment 문으로 변환
MOVE 5 TO MY_NUMBER.
To:
MyNumber = 5;
- COBOL 섹션(단락이나 구문의 그룹)을 C# 메소드로 변환합니다. SECTION은 PERFORM 구문으로 호출할 수 있습니다. PERFORM은 C# 메소드의 호출로 변환됩니다.
DISPLAY-INFORMATION.
DISPLAY DISPLAY 'My Number = ' MY_NUMBER.
To:
private void DisplayInformation()
{
Console.WriteLine("My Number = " + MyNumber);
}
- COBOL 제어 구조(control structures)를 C# 제어문으로 변환
IF MY_NUMBER > 5
MOVE 12 TO MY_NUMBER.
To:
if (MyNumber > 5)
{
MyNumber = 12;
}
PERFORM UNTIL WS-NUMBER-1 > 100 AND WS-NUMBER-1 < 1000
DISPLAY "Still between 100 and 1000"
END-PERFORM
To:
while ((MyNumber > 100) && (MyNumber < 1000))
{
Console.WriteLine("Still between 100 and 1000");
}
- DISPLAY 구문을 "Console.WriteLine" 메소드로 변환
- EXEC SQL/ END-EXEC(select, insert, update, delete, CURSOR 문) 문을 엔티티(Entities)에 대한 C# LINQ로 변환
EXEC SQL
SELECT COUNT(*)
INTO :MY_NUMBER
FROM MY_TABL
WHERE CTR_ID = :MY_STRING_1 AND
MOD_CD = 'ONE'
WITH UR
END-EXEC.
To:
MyNumber = (from MyTabl in db.MyTabls
where (MyTabl.CtrId == MyString1)
&& (MyTabl.ModCd == "ONE")
select MyTabl).Count();
EXEC SQL
DECLARE MY_CUR CURSOR FOR
SELECT LOC_NO,
EFF_DT,
XPIR_DT,
DET_AMT
FROM MY_TABL
WHERE CTR_ID = :MY_STRING_1
AND MOD_CD = 'TWO'
AND TRN_ID IS NULL
ORDER BY LOC_NO, EFF_DT
WITH UR
END-EXEC.
EXEC SQL
OPEN MY_CUR
END-EXEC.
EXEC SQL
FETCH MY_CUR
INTO :MY-LOC-NO,
:MY-EFF-DT,
:MY-XPIR-DT,
:MY-ARO-AMT
END-EXEC
EXEC SQL CLOSE MY_CUR END-EXEC.
To:
foreach (var MyCur in (from MyTabl in db.MyTabls
where (MyTabl.CtrId == MyString1) &&
(MyTabl.ModCd == "TWO") &&
(MyTabl.TrnId == null)
orderby MyTabl.LocNo, MyTabl.EffDt
descending
select MyTabl))
{
MyLocNo = MyCur.LocNo;
MyEffDt = MyCur.EffDt;
MyXpirDt = MyCur.XpirDt;
MyAroAmt = MyCur.DetAmt;
}
추가로 문의 사항이 있으시면연락주시기 바랍니다.
|