Intelligent, Custom and Highly Automated Cross Platform Database and Application Migration

COBOL to C#.NET Conversion

Ispirer MnMTK performs COBOL to C#.NET conversion of any complexity.

Why Ispirer MnMTK

Ispirer MnMTK automates the entire migration process COBOL to C#.NET conversion. Moreover, choosing Ispirer MnMTK to convert COBOL you eliminate most of associated risks and considerably reduce internal efforts. All these benefits are available at very reasonable and competitive costs, which makes Ispirer MnMTK even more attractive conversion tool for this project type.

Our main benefits:

  • High quality and experiences technical support: our technical team has a tremendous experience in migration projects of different levels of complexity.
  • Customer-oriented approach and Fast Customization: we personalize our migration tool in such a way that a customized version can fully satisfy our client’s business needs, custom conversions and optimizations are made within 1-2 business days;
  • Pre-Sales Engagement: we demonstrate a full conversion during the evaluation before you make a decision.
  • Flexible pricing: we can offer you a wide range of options, among which you will definitely find the one which suits you;
  • Optimized Conversion: after the conversion you get an intelligent and maintainable code, without using any Ispirer's middleware.

This demo shows how Ispirer MnMTK can convert COBOL applications to C#.NET application:




Assessment Process

The assessment of your migration project could definitely help to weigh up efforts and the approximate cost of your migration. In order to facilitate the process, you're welcome to fill in our:


Live Presentation

Ispirer Migration Solution

COBOL to C#.NET Conversion

Request

Request a Quote

Ispirer Migration Solution

COBOL to C#.NET Conversion

Service Toolkit

Conversion Features

COBOL Program Structure

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. DemoId.
  3. ENVIRONMENT DIVISION.
  4. DATA DIVISION.
  5. PROCEDURE DIVISION.
  6. FIRST-PARAGRAPH.
  7. DISPLAY "First DEMO".


There are the four divisions:

  • IDENTIFICATION DIVISION: This is where you must enter the program name.
  • ENVIRONMENT DIVISION: This is where you define the files the program needs.
  • DATA DIVISION: This is where you declare variables, records, files etc.
  • PROCEDURE DIVISION: This is where you write the program. In the sample above this is all in one paragraph. A paragraph is a series of statements named by a label. There is no specific mark to the end of a paragraph.


Conversion features

  • Migrates database of COBOL’s application to MSSQLServer database
  • Converts COBOL’s programs to C# classes
    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. }
  • Converts identifiers’ names to “camel” case
  • Converts WORKING-STORAGE section with declaration variables to variables of class
    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.

    To:

    1. private string MyString1;
    2. private string MyString2;
    3. private int MyNumber = 1;

  • Converts COBOL records to user-defined C# types
    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.

    To:

    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();

  • Converts COBOL MOVE TO/COMPUTE statements to C# assignment statements
    1. MOVE 5 TO MY_NUMBER.

    To:

    1. MyNumber = 5;

  • Converts COBOL sections (group of paragraphs or statements) to C# methods. The SECTION could be called using PERFORM statement. PERFORM is converted to call of C# method
    1. DISPLAY-INFORMATION.
    2. DISPLAY DISPLAY 'My Number = ' MY_NUMBER.

    To:

    1. private void DisplayInformation()
    2. {
    3. Console.WriteLine("My Number = " + MyNumber);
    4. }
  • Converts COBOL control structures to C# control statements
    1. IF MY_NUMBER > 5
    2. MOVE 12 TO MY_NUMBER.

    To:

    1. if (MyNumber > 5)
    2. {
    3. MyNumber = 12;
    4. }
    And
    1. PERFORM UNTIL WS-NUMBER-1 > 100 AND WS-NUMBER-1 < 1000
    2. DISPLAY " Still between 100 and 1000"
    3. END-PERFORM

    To:

    1. while ((MyNumber > 100) && (MyNumber < 1000))
    2. {
    3. Console.WriteLine("Still between 100 and 1000");
    4. }

  • Converts Screen output (DISPLAY statement) to “Console.WriteLine” method
  • Converts EXEC SQL/ END-EXEC (select, insert, update, delete, CURSOR statements) statements to C# LINQ to Entities
    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
    8. END-EXEC.

    To:

    1. MyNumber = (from MyTabl in db.MyTabls
    2. where (MyTabl.CtrId == MyString1)
    3. && (MyTabl.ModCd == "ONE")
    4. select MyTabl).Count();
    And
    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.

    To:

    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. }

You are welcome to contact us for more information.

 
PgConf.Russia 2017
March 3, 2017 PgConf.Russia 2017

We are happy to announce that Ispirer Systems will take part in the International Conference PGConf.Russia 2017 that will be held on March 15-17, 2017 in Moscow.


.NET Versions

Microsoft .NET 4.6.1 and earlier

Testimonials
December 3, 2012Epicor Software Corporation, United States
Progress 4GL to C# .Net Migration

"Epicor has engaged with the Ispirer team to create and refine prototype techniques for migrating certain parts of the Epicor Progress ABL code to well...

...

Case Studies
May 26, 2014COBOL to .NET Conversion, United States

Our client was a major player in market-driven innovation and science. For more than two hundred years, it has been presenting world-class science and engineering to the global marketplace...

...

September 12, 2014Delphi to C# .NET, United States

Our client was a U.S.-based health insurance company providing care services since six decades through its extensive network of hospitals and other institutions.

...

Feedback

I must say that your tool is perfect, I used it only twice, once to test and the second time to do the final work. In less than two minutes I found the exact MSSQL database. If I would find myself again in a similar situation I would not hesitate to consider your other products.

Read more
Industry Events