Convert COBOL to Java

Convert COBOL to Java

Delivering you a high-quality result in due time

Get started. Request a quote

Many companies have used our tools and provided excellent feedback on their performance

  • Capterra logo

    4.8

  • Clutch logo

    4.8


6 undeniable facts to choose conversion with Ispirer

  • Fact 1/6

    Same functionality, new application

    Migration does not require labor-intensive development of new functionality from scratch. Your application will be converted to a new technology while maintaining the original functionality

    Same functionality, new application -- card image
  • Fact 2/6

    Architecture preserved or modified

    Automated conversion implies preserving the initial architecture which is easier to maintain. The app architecture, can also be transformed, for example, from desktop to the web to improve accessibility and scalability

    Architecture preserved or modified -- card image
  • Fact 3/6

    The speed of conversion

    Migrating an application is much faster than creating a new one from scratch. Automated migration with Ispirer Toolkit minimizes manual effort and may speed up the delivery by 2-3 times

    The speed of conversion -- card image
  • Fact 4/6

    Legacy System Transformation

    Migrating COBOL to modern architectures or platforms can upgrade your application, making it easier to maintain, update, and extend in the long term run

    Legacy System Transformation -- card image
  • Fact 5/6

    Performance and Scalability

    Through conversion, you can optimize the application's architecture and infrastructure, improving scalability and performance without the need to rebuild everything

    Performance and Scalability -- card image
  • Fact 6/6

    No need for documentation

    To perform the conversion, we go by your source code. There is no need to have detailed documentation in place to start the conversion as is the case with development

    No need for documentation -- card image

Сonversion opportunities with Ispirer

Ispirer Ecosystem automates your migration routine to enable quick and smart transformation of any application. Double the migration speed with our comprehensive solutions.

  • With CodeWays only

    • Free Metrics tool to analyze the migration complexity
    • Assistance in CodeWays configuration
    • Automated migration of the entire application including project files, business logic, GUI and database API
    • Prompt customization of the tool to maximize automation rate
    • Expert support
    With codeways -- card image
  • With CodeWays as a part of migration service

    • Tailored migration roadmap from assessment through migration and testing to cutover
    • Automated migration of the entire application, including project files, business logic, GUI and database API
    • Team of experts skilled in application conversion
    • Assistance in deployment, integration, performance optimization, and new feature development
    With Ispirer Codeways -- card image

Unleash the reinforced application
Save your time

Book a demo

Do it for 5 minutes

CodeWays for automated app conversion

CodeWays is a tool for automated application conversion that translates code from one programming language to another automatically, while preserving the initial functionality of an app. Using an intelligent proprietary algorithm, the tool analyzes the syntax, semantics, mapping data types, control structures, function calls, and code structures that do not have equivalents in a target technology.

Based on the analysis, CodeWays applies all the relevant conversion rules from its knowledge base core and translates COBOL source code to Java.

It takes 5 min to start your application conversion journey!

App source code & App source code with embedded SQL*

  • Informix4GL
  • Delphi
  • Cobol
  • VisualBasic
  • Progress4GL
  • PowerBuilder
  • C/C++

Any files with SQL code

  • Informix
  • Teradata
  • SQLServer
  • Oracle
  • IBM DB2
  • SAP Sybase
  • PostgreeSQL
  • MySQL
  • Greenplum
  • MariaDB
  • Firebird
How Codeways work
  • App target code

    App target code
  • App target code with converted ESQL

    App target code with converted ESQL
  • Files with SQL code for the target DB

    Files with SQL code for the target DB

*Embedded SQL are SQL statements written inline with the program source code, of the host language.

Convert Smarter. Evolve Faster

Over 400+ ways to migrate

Give it a try now. Book a demo

Dive into the tool’s features

  • Delphi
  • Cobol
  • OracleForms
  • Progress 4GL
  • PowerBuilder
  • C\C++
  • IBM
  • RPG
  • Informix 4GL
  • Delphi
  • Cobol
  • OracleForms
  • Progress 4GL
  • PowerBuilder
  • C\C++
  • IBM
  • RPG
  • Informix 4GL
  • MSSQL
  • Oracle
  • OracleForms
  • Progress 4GL
  • C\C++
  • Delphi
  • Cobol
  • Informix 4GL
  • MSSQL
  • Oracle
  • OracleForms
  • Progress 4GL
  • C\C++
  • Delphi
  • Cobol
  • Informix 4GL

Conversion details overview

  • Ispirer Toolkit automates

    Ispirer Toolkit automates icon

    Ispirer Toolkit automatically converts COBOL to Java, considering the specifics of these languages.

    Conversion results icon

    The conversion results in a Java class being generated for each source file (.cbl, .cob, .cpy)

    The class name is formed from the PROGRAM-ID specified in the Identification division, taking into account the camelCase rule of the Java language. Variables from the Data division are migrated to class variables, and paragraphs from the Procedure division are migrated to class methods.

    When using structures in COBOL, additional classes are formed for them in Java.

    Convertion icon

    Conversion

    Besides, our tool processes COPY and INCLUDE clauses, creating a class object derived from the conversion of the header file.

    Dependencies icon

    Dependencies

    At the same time, dependencies and data types used in the header files are automatically taken into account.

    Special Framework icon

    Special Framework

    We have developed a special Java framework to achieve a high level of automation and get maintainable code.

  • Conversion results

    Code Conversion icon

    Code Conversion

    Each paragraph is converted to the class method. At the same time, the call and completion of each method automatically consider the possibility of using PERFORM and GO TO statements. COBOL statements and functions, which do not have analogues in Java, are converted to the class methods of our framework.

    Working with Files icon

    Working with Files

    Ispirer Toolkit supports conversion of files of all three types: sequential, indexed and relative.

    File algorithms are automatically moved from COBOL to Java without changes.

    Working with database icon

    Working with Database

    Database access in the COBOL application can be converted to JDBC or Hibernate. In addition, if the Java application needs to work with another database, you can convert the embedded SQL, as well as the database.

    Variable Conversion icon

    Variable Conversion

    Ispirer Toolkit automatically converts all COBOL data types, taking into account PICTURE (PIC) and USAGE clauses. For exact data type matching, we use generic Java classes.

Migration demo

Check out how Ispirer Toolkit automatically converts {COBOL} application

COBOL to Java conversion service overview

Assessment

  • Collecting info about an application
  • Analyzing the application and its components
  • Making migration plan
Start

More than 2K users use this way to
successfully convert their application code

Automated APP conversion

  • Entire APP conversion
  • APP changes (API, ESQL)
  • Tool configuration and customization for specific APP

Manual APP conversion

  • Manual code review and debugging
  • Replacing custom controls, libraries, methods, etc. with analogues
  • Developing remaining solutions using target technology

Functional testing

  • APP analysis and test documentation creation
  • Testing the application against test documentation
  • Fixing issues

Acceptance testing

  • Testing the APP against business requirements
  • Fixing issues

Cutover

  • Switching APP
  • System startup assisstance
  • Collecting info about an APP
  • Analyzing the APP and its components
  • Making migration plan
  • Entire APP conversion
  • APP changes (API, ESQL)
  • Manual code review and debugging
  • Replacing custom controls, libraries, methods, etc. with analogues
  • Developing remaining solutions using target technology
  • APP analysis and test documentation creation
  • Testing the application against test documentation
  • Fixing issues
  • Testing the APP against business requirements
  • Fixing issues
  • Switching APP
  • System startup assisstance

Conversion Samples of COBOL to Java

Ispirer Toolkit analyzes all object dependencies during the conversion process and provides not only line-by-line conversion, but resolves type conversions as well. The software understands and transforms the necessary inheritance dependencies. It parses the entire source code, builds an internal tree with all the information about the objects, and uses it in the migration process.

To convert structures, we have implemented additional type conversion classes to store variable sizes to convert redefines and arrays so that they work similar to COBOL logic.

The code samples below provide you with more details.

  • Common variables declaration structure conversion:

    COBOL

    1.  
    2. 01 varlnk.
    3. 05 varlnk-1 PIC 999.
    4. 05 varlnk-2 PIC X(10).
    5. 05 varlnk-3 PIC 9(7).
    6.  

    → Java

    1.  
    2. public class Varlnk extends StructureModel {
    3. private int sizes[];
    4. public PictureType<Integer> Varlnk1 = new PictureType<>(PictureType.Type.Integer, new DecimalFormat("999"));
    5. public PictureType<String> Varlnk2 = new PictureType<>(PictureType.Type.String, new AlphanumericFormat("X(10)"));
    6. public PictureType<Integer> Varlnk3 = new PictureType<>(PictureType.Type.Integer, new DecimalFormat("9(7)"));
    7. public Varlnk() {
    8. sizes = new int[] { Varlnk1.getSize(),Varlnk2.getSize(),Varlnk3.getSize() };
    9. }
    10. @Override
    11. public String toString() {
    12. return "" + Varlnk1 + Varlnk2 + Varlnk3;
    13. }
    14. @Override
    15. public void setData(char[] data) {
    16. setData(getStringValues(data, sizes));
    17. }
    18. @Override
    19. public void setData(String[] data) {
    20. Varlnk1.setDataFromFile(data[0].getBytes());
    21. Varlnk2.setValue(data[1]);
    22. Varlnk3.setDataFromFile(data[2].getBytes());
    23. }
    24. @Override
    25. public int getSize() {
    26. int sum = 0;
    27. for(int i = 0; i < sizes.length; i ++) {
    28. sum += sizes[i];
    29. }
    30. return sum;
    31. }
    32. @Override
    33. public void initialize() {
    34. Varlnk1.initialize();
    35. Varlnk2.initialize();
    36. Varlnk3.initialize();
    37. }
    38. @Override
    39. public byte[] toFile() {
    40. byte[] structure = new byte[] { };
    41. structure = ArrayUtils.addAll(structure, Varlnk1.toFile());
    42. structure = ArrayUtils.addAll(structure, Varlnk2.toFile());
    43. structure = ArrayUtils.addAll(structure, Varlnk3.toFile());
    44. return structure;
    45. }
    46. @Override
    47. public void setDataFromFile(byte[] bytes) {
    48. bytes = getFullArray(bytes);
    49. Varlnk1.setDataFromFile(Arrays.copyOf(bytes, Varlnk1.getSize()));
    50. bytes = Arrays.copyOfRange(bytes, Varlnk1.getSize(), bytes.length);
    51. Varlnk2.setDataFromFile(Arrays.copyOf(bytes, Varlnk2.getSize()));
    52. bytes = Arrays.copyOfRange(bytes, Varlnk2.getSize(), bytes.length);
    53. Varlnk3.setDataFromFile(Arrays.copyOf(bytes, Varlnk3.getSize()));
    54. bytes = Arrays.copyOfRange(bytes, Varlnk3.getSize(), bytes.length);
    55. }
    56. @Override
    57. public void setDefaultValue(PictureType.DefaultValue value) {
    58. Varlnk1.setDefaultValueFromStructure(value);
    59. Varlnk2.setDefaultValueFromStructure(value);
    60. Varlnk3.setDefaultValueFromStructure(value);
    61. }
    62. }
    63.  
    64. public Varlnk varlnk = new Varlnk();
    65.  
  • Common REDEFINES conversion:

    COBOL

    1.  
    2. 01 var1 PIC XXX VALUE '111'.
    3. 01 var2 REDEFINES var1.
    4. 05 vvv1 PIC 9.
    5. 05 vvv2 PIC 99.
    6.  

    → Java

    1.  
    2. private StrField Var1 = new StrField("XXX", "111");
    3. public Var2 var2 = new Var2(Var1);
    4.  
    5.  
    6. public class Var2 extends StructureModel {
    7. private int sizes[];
    8. public PictureType<Integer> Vvv1 = new PictureType<>(PictureType.Type.Integer, new DecimalFormat("9"));
    9. public PictureType<Integer> Vvv2 = new PictureType<>(PictureType.Type.Integer, new DecimalFormat("99"));
    10. public Var2(StructureModel ... objs) {
    11. sizes = new int[] { Vvv1.getSize(),Vvv2.getSize() };
    12. initRedefineObjs(objs);
    13. }
    14. @Override
    15. public String toString() {
    16. return "" + Vvv1 + Vvv2;
    17. }
    18. @Override
    19. public void setData(char[] data) {
    20. setData(getStringValues(data, sizes));
    21. }
    22. @Override
    23. public void setData(String[] data) {
    24. Vvv1.setDataFromFile(data[0].getBytes());
    25. Vvv2.setDataFromFile(data[1].getBytes());
    26. redefine();
    27. }
    28. public void setVvv1(Integer Vvv1) {
    29. this.Vvv1.setValue(Vvv1);
    30. redefine();
    31. }
    32. public void setVvv2(Integer Vvv2) {
    33. this.Vvv2.setValue(Vvv2);
    34. redefine();
    35. }
    36. @Override
    37. public int getSize() {
    38. int sum = 0;
    39. for(int i = 0; i < sizes.length; i ++) {
    40. sum += sizes[i];
    41. }
    42. return sum;
    43. }
    44. @Override
    45. public void initialize() {
    46. Vvv1.initialize();
    47. Vvv2.initialize();
    48. }
    49. @Override
    50. public byte[] toFile() {
    51. byte[] structure = new byte[] { };
    52. structure = ArrayUtils.addAll(structure, Vvv1.toFile());
    53. structure = ArrayUtils.addAll(structure, Vvv2.toFile());
    54. return structure;
    55. }
    56. @Override
    57. public void setDataFromFile(byte[] bytes) {
    58. bytes = getFullArray(bytes);
    59. Vvv1.setDataFromFile(Arrays.copyOf(bytes, Vvv1.getSize()));
    60. bytes = Arrays.copyOfRange(bytes, Vvv1.getSize(), bytes.length);
    61. Vvv2.setDataFromFile(Arrays.copyOf(bytes, Vvv2.getSize()));
    62. bytes = Arrays.copyOfRange(bytes, Vvv2.getSize(), bytes.length);
    63. }
    64. @Override
    65. public void setDefaultValue(PictureType.DefaultValue value) {
    66. Vvv1.setDefaultValueFromStructure(value);
    67. Vvv2.setDefaultValueFromStructure(value);
    68. redefine();
    69. }
    70. }
    71.  
  • Common array conversion:

    COBOL

    1.  
    2. 01 var5.
    3. 05 var5-occurs OCCURS 2 TIMES.
    4. 10 var5-occurs-txt PIC X(6) VALUE ' TEXT1'.
    5.  

    → Java

    1.  
    2. public List<PictureType<String>> Var5 = Stream.generate(()->new PictureType<String>(new AlphanumericFormat("X(6)"), " TEXT1")).limit(2).collect(Collectors.toList());
    3.  
  • COBOL call chain with PERFORMs conversion:

    COBOL

    1.  
    2. TopLevel.
    3. DISPLAY "In TopLevel. Starting to run program"
    4. PERFORM OneLevelDown
    5. DISPLAY "Back in TopLevel.".
    6. STOP RUN.
    7.  
    8. OneLevelDown.
    9. DISPLAY ">>>> Now in OneLevelDown"
    10. PERFORM TwoLevelsDown
    11. DISPLAY ">>>> Back in OneLevelDown".
    12.  
    13. TwoLevelsDown.
    14. DISPLAY ">>>>>>>> Now in TwoLevelsDown."
    15. PERFORM ThreeLevelsDown.
    16. DISPLAY ">>>>>>>> Back in TwoLevelsDown.".
    17.  
    18. ThreeLevelsDown.
    19. DISPLAY ">>>>>>>>>>>> Now in ThreeLevelsDown".
    20.  

    → Java

    1.  
    2. private static CobSmplCbl instance;
    3. public boolean isCalled = false;
    4.  
    5. public void CobSmplCblProcedureDivision() {
    6. toplevel(true);
    7. }
    8. private void toplevel(boolean isPerform) {
    9. System.out.println("In TopLevel. Starting to run program");
    10. oneleveldown(false);
    11. System.out.println("Back in TopLevel.");
    12. throw new StopRun();
    13. }
    14. private void oneleveldown(boolean isPerform) {
    15. System.out.println(">>>> Now in OneLevelDown ");
    16. twolevelsdown (false);
    17. System.out.println(">>>> Back in OneLevelDown ");
    18. }
    19. private void twolevelsdown(boolean isPerform) {
    20. System.out.println(">>>>>>>> Now in TwoLevelsDown.");
    21. threelevelsdown(false);
    22. System.out.println(">>>>>>>> Back in TwoLevelsDown.");
    23. }
    24. private void threelevelsdown(boolean isPerform) {
    25. System.out.println(">>>>>>>>>>>> Now in ThreeLevelsDown");
    26. }
    27. public static CobSmplCbl getInstance() {
    28. return instance == null ? instance = new CobSmplCbl() : instance;
    29. }
    30.  
    31. public static void cancel() {
    32. instance = new CobSmplCbl();
    33. }
    34.  

Copy statement conversion

During the conversion stage, the code from the copy files is included in the program and replaced with the appropriate copy statements, thereafter the program converts the entire code.

  • If statement conversion:

    COBOL

    1.  
    2. if var3 = var4
    3. move "D" to var3
    4. else
    5. move " " to var3.
    6.  

    → Java

    1.  
    2. if (Var3.compareTo(Var4) == 0) {
    3. Var1.setData("D");
    4. }
    5. else {
    6. Var3.setValue(" ");
    7. }
    8.  
  • PERFORM UNTIL statement conversion:

    COBOL

    1.  
    2. PERFORM UNTIL IterCount = 5
    3. ADD 1 TO IterCount
    4. END-PERFORM
    5.  

    → Java

    1.  
    2. while (Itercount != 5) {
    3. Itercount.setValue(Itercount + 1);
    4. }
    5.  

Get a free sample code of our COBOL to Java code conversion

Ispirer Toolkit automatically converts not only a single piece of code, but an entire application. Complex code will require customization of the toolkit

  • Explore how Ispirer Toolkit migrates the source code to the target technology without downloading it.
  • Analyze and compare the source sample with your code to understand which components of your application can be automatically converted using Ispirer Toolkit.
  • Test an application containing nearly 600 lines of code.
  • Our experts can add new conversion rules within 3-5 business days.
Enter your name.

Enter a valid e-mail address.

Select your country.

Invalid input.

Conversion of Various COBOL Dialects

  • Micro Focus COBOL
  • COBOL/II
  • ACUCOBOL-GT
  • Enterprise COBOL
  • IBM COBOL
  • Fujitsu COBOL
  • HP COBOL
  • GnuCOBOL
  • Micro Focus COBOL
  • COBOL/II
  • ACUCOBOL-GT
  • Enterprise COBOL
  • IBM COBOL
  • Fujitsu COBOL
  • HP COBOL
  • GnuCOBOL
  • Realia COBOL
  • COBOL-IT
  • Microsoft COBOL
  • isCOBOL
  • OS/VS COBOL
  • COBOL/400
  • ANSI COBOL
  • Hitachi COBOL
  • Realia COBOL
  • COBOL-IT
  • Microsoft COBOL
  • isCOBOL
  • OS/VS COBOL
  • COBOL/400
  • ANSI COBOL
  • Hitachi COBOL

They succeeded using Ispirer Toolkit

Transportation Firm Expands Software with Ispirer Solution

Delphi -> C# WPF

Target: C#

Transportation and defense corporation case card

Project Scope

600 000 LOC

Project Duration

11 Months

Industry

Transportation and defense corporation

Customization allowed to speed up migration 3 times

Delphi -> C# WPF

Target: C#

Transportation and defense corporation case card

Project Scope

2 000 000 LOC

Project Duration

4 Months

Industry

Financial Services Company

Trust us with your conversion project

  • Seasoned team

    Ensuring high security and performance standards is what we do best, thanks to our impressive expertise in building reliable and scalable solutions.

  • Technology expertise with 25+ years of experience

    Our team has gained a wide pool of expertise in various programming languages, from the rarest to the most popular ones.

  • We comply with ISO 27001 security

    We comply with ISO 27001 security management requirements with comprehensive policies and processes, advanced security technology, and skilled professionals.

  • Proprietary tools

    We employ Ispirer proprietary tools, underscoring our dedication to delivering the utmost reliability and performance solutions.

    The toolkit is compiled daily and continually integrates dozens of new conversion rules, enhancing the automation capabilities.

They chose Ispirer to revamp their application

Epicor, University of Maryland, Splice Machine and more have adopted CodeWays to boost their innovation life-cycle accelerate and manage their end-to-end innovation lifecycle

Epicor logo
University of Maryland logo
High Availability Systems Co. Ltd., Japan
Splice Machine, United States logo
NedGraphics, The Netherlands logo
Kellenberger, Switzerland logo

Progress ABL to C#

Migration project

50%

Migration time reduction

2 MLN

Lines of code

75%

Аutomation achieved

Enterprise software

"We have found the Ispirer team to be knowledgeable and responsive, and we have found the tooling to be flexible enough to be easily adapted to our coding conventions."

COBOL to Java

Migration project

6-month

Migration time reduction

100K+

Lines of code

200+

COBOL programs

Education

"Ispirer Toolkit enabled us to efficiently convert 200 COBOL programs with over 100,000 lines of code to Java. The tool produced high-quality, maintainable code, allowing our team to focus on infrastructure rather than conversion. Ispirer’s support was exceptional, often resolving issues within one business day."

Informix 4GL to Oracle PL/SQL

Migration project

95%

Аutomation achieved

200K+

Lines of code

75%

Migration time reduction

IT Services

"Ispirer provided a full-cycle migration service, converting over 200,000 lines of Informix 4GL to Oracle PL/SQL with 95% automation. Their expertise, customizations, and commitment to quality ensured a seamless transition. We highly recommend Ispirer for complex migration projects."

Oracle PL/SQL to Java

Migration project

80%

Аutomation achieved

400K+

Lines of code

50%

Migration time reduction

Database technology

"At the onset of the engagement, the Ispirer MnMTK was expanded to meet the specific requirements of our migration prior to being delivered for our use. Once this phase of the project was complete, we were provided with the expanded toolkit."

C/C++, AutoLISP to C#.NET

Migration project

70%

Аutomation achieved

250K+

Lines of code

50%

Migration cost reduction

Civil engineering and infrastructure

"We were impressed with the knowledge, professionalism, hard work, and enthusiasm of the Ispirer team. Through this Migration Project, we have a solid base for further expanding our application."

Borland Delphi 7.0 modernization

Migration project

75%

Аutomation achieved

20K

Lines of code

50%

Migration time reduction

Automation Equipment

"We had an old Borland Delphi 7.0 project, which was brought back to life. Ispirer had offered us a timely and financially attractive conversion of the application. The work was performed promptly."


Are you still here? And wow, that's quite a lot you had to scroll through! 😄

Сonsult with our expert to better organize for you migration flow

Take control of your application
сonversion now

Book a demo

Do it for 5 minutes

THIS SITE USES COOKIES: By continuing to browse this site, you give your consent for cookies to be used. For more details, please read our Privacy Policy and Cookies Policy.
I Got it