COBOLからC#.NETへの移行
Ispirer MnMTKはCOBOLアプリケーションを.NETへ 変換することができます。
なぜIspirer MnMTKなのか
Ispirer MnMTKはお客様がお使いのCOBOLアプリケーションの自動変換を行い、移行作業に伴うリスクと必要な内部作業を大幅に削減することができます。 これらの利点があるIspirer MnMTKはお手頃な価格でデータベースおよびアプリケーションの変換を行うことができるため、このような移行プロジェクトにとってとても魅力的な製品です。
主な利点:
- 優れたテクニカルサポート:移行のプロジェクトにおける絶大経験による、最も複雑なタスクの解決策を見つけることをお約束します
- 顧客志向のアプローチと迅速なカスタマイズ:1-2営業日での修正対応
- 検討段階での共同作業:お客様の検討期間中に変換のデモをお見せすることができます
- 柔軟な価格設定:広範囲オプションの提供
- 最適化された変換:インテリジェントで保守しやすいコードを生成します。
変換後のソースの利用に特別なIspirerのミドルウェア等は必要ありません
このデモでIspirer MnMTKによるCOBOLからC#.NETへの移行を見ることができます:
アセスメント
アセスメント作業は簡単ですぐに移行に要する作業とコストを見積もることができます。お見積に必要な情報は、下記のフォームを参照いただくと揃えることができます:
Ispirer Toolkit 10COBOLからC#.NETへ ダウンロード
変換機能
COBOL プログラム構造
1. IDENTIFICATION DIVISION.
2. PROGRAM-ID. DemoId.
3. ENVIRONMENT DIVISION.
4. DATA DIVISION.
5. PROCEDURE DIVISION.
6. FIRST-PARAGRAPH.
7. DISPLAY "First DEMO".
4つのディビジョンがあります:
- IDENTIFICATION DIVISION: ここにプログラム名を記述します。
- ENVIRONMENT DIVISION: プログラムで必要なファイルを定義します。
- DATA DIVISION: 変数、レコード、ファイル等を定義します。
- PROCEDURE DIVISION: プログラムを記述します。上のサンプルでは全てがひとつのパラグラフ内に記述されています。パラグラフはラベル付けされた一連のステートメントです。パラグラフの終わりを示す特別なマークはありません。
変換機能
- COBOLアプリケーションのデータベースをMSSQLServerのデータベースに移行
- COBOLアプリケーションのプログラムをC#クラスに変換
1. using System;
2. using System.Collections.Generic;
3. using System.Linq;
4. using System.Text;
5. namespace CobolApplication
6. {
7. class DemoId
8. {
9. static void Main(string[] args)
10. {
11. Console.WriteLine("First DEMO");
12. }
13. }
14. }
識別子の名前を「キャメルケース」に変換
WORKING-STORAGEセクションに定義された変数をクラス変数に変換
1. WORKING-STORAGE SECTION.
2. 01 MY_STRING_1 PIC X(20).
3. 01 MY_STRING_2 PIC X(30).
4. 01 MY_NUMBER PIC 9(2) VALUE 1.
から
1. private string MyString1;
2. private string MyString2;
3. private int MyNumber = 1;
COBOLレコード定義をC#のユーザ定義タイプへ変換
1. 01 MY_DATA_RECORD.
2. 03 MY_NAME PIC X(20) VALUE “John Smit”.
3. 03 MY_ADDRESS PIC X(40) VALUE “Walt street”.
4. 03 MY_ID PIC 9(2) VALUE 123.
から
1. public class MyDataRecord
2. {
3. public string MyName = "John Smit";
4. public string MyAddress = "Walt street";
5. public int MyId = 123;
6. }
7. public MyDataRecord myDataRecord = new MyDataRecord();
COBOLのMOVE TO/COMPUTEステートメントをC#のアサインステートメントに変換
1. MOVE 5 TO MY_NUMBER.
から
1. MyNumber = 5;
COBOLセクション(パラグラフやステートメントのグループ)をC#のメソッドに変換。セクションをCALLするPERFORM文はC#のcallメソッドに変換。
1. DISPLAY-INFORMATION.
2. DISPLAY DISPLAY 'My Number = ' MY_NUMBER.
から
1. private void DisplayInformation()
2. {
3. Console.WriteLine("My Number = " + MyNumber);
4. }
COBOLの制御構造をC#の制御ステートメントに変換
1. IF MY_NUMBER > 5
2. MOVE 12 TO MY_NUMBER.
から
1. if (MyNumber > 5)
2. {
3. MyNumber = 12;
4. } および
1. PERFORM UNTIL WS-NUMBER-1 > 100 AND WS-NUMBER-1 < 1000
2. DISPLAY "Still between 100 and 1000"
3. END-PERFORM
から
1. while ((MyNumber > 100) && (MyNumber < 1000))
2. {
3. Console.WriteLine("Still between 100 and 1000");
4. }
画面表示(DISPLAY ステートメント)を「Console.WriteLine」メソッドに変換
EXEC SQL/ END-EXEC (select, insert, update, delete, CURSOR ステートメント)をC# LINQのエンティティに変換
1. EXEC SQL
2. SELECT COUNT(*)
3. INTO :MY_NUMBER
4. FROM MY_TABL
5. WHERE CTR_ID = :MY_STRING_1 AND
6. MOD_CD = 'ONE'
7. WITH UR
. END-EXEC.
から
1. MyNumber = (from MyTabl in db.MyTabls
2. where (MyTabl.CtrId == MyString1)
3. && (MyTabl.ModCd == "ONE")
4. select MyTabl).Count(); および
1. EXEC SQL
2. DECLARE MY_CUR CURSOR FOR
3. SELECT LOC_NO,
4. EFF_DT,
5. XPIR_DT,
6. DET_AMT
7. FROM MY_TABL
8. WHERE CTR_ID = :MY_STRING_1
9. AND MOD_CD = 'TWO'
10. AND TRN_ID IS NULL
11. ORDER BY LOC_NO, EFF_DT
12. WITH UR
13. END-EXEC.
14. EXEC SQL
15. OPEN MY_CUR
16 END-EXEC.
17. EXEC SQL
18. FETCH MY_CUR
19. INTO :MY-LOC-NO,
20. :MY-EFF-DT,
21. :MY-XPIR-DT,
22. :MY-ARO-AMT
23. END-EXEC
24. EXEC SQL CLOSE MY_CUR END-EXEC.
から
1. foreach (var MyCur in (from MyTabl in db.MyTabls
2. where (MyTabl.CtrId == MyString1) &&
3. (MyTabl.ModCd == "TWO") &&
4. (MyTabl.TrnId == null)
5. orderby MyTabl.LocNo, MyTabl.EffDt
6. descending
7. select MyTabl))
8. {
9. MyLocNo = MyCur.LocNo;
10. MyEffDt = MyCur.EffDt;
11. MyXpirDt = MyCur.XpirDt;
12. MyAroAmt = MyCur.DetAmt;
13. }
詳細はお問い合わせください。
|