SoftwareMining's COBOL-to-Java and COBOL-to-C# Converter supports the migration of IBM IMS COBOL applications to maintainable Java or C# source code. Automated, non-AI, rule-based conversion operates within the customer's own infrastructure.

The converter supports COBOL business logic, IMS DB and DL/I database access, IMS TM transaction and message processing, and MFS screen handling. It uses DBD definitions and COBOL record layouts to map IMS segments, fields, keys and parent-child relationships to relational tables, columns and indexes. PSB and PCB definitions identify the database access available to each application.

After existing IMS data is migrated to the target SQL database, generated metadata and runtime components preserve the navigation and qualification behaviour required by supported DL/I operations.

Converting IMS COBOL and DL/I Operations

Supported CBLTDLI calls are converted into Java operations that use the original PCB and SSA information to access the migrated relational database. For example:

IMS COBOL

Generated Java

CALL 'CBLTDLI' USING
     'GN'
     PCB-DATA
     ORDER-RECORD
     SSA-DATA
IMSDbProcessor.getNext(
    this,
    pcbData,
    orderRecord,
    ssaData);

At runtime, the PCB identifies the database context and the SSA defines the target segment and qualification criteria. An SSA selecting orders with a value greater than 100 may generate:

SELECT ORDERVALUE, ORDER_ID, CLNT_ID
FROM ORDERRECORD
WHERE ORDERVALUE > 100

The returned columns populate the generated orderRecord object corresponding to ORDER-RECORD.

Preserving IMS Hierarchical Navigation

Hierarchical operations such as GNP, or Get Next within Parent, are converted while retaining the current parent context:

IMS COBOL

Generated Java

CALL 'CBLTDLI' USING
     'GNP'
     PCB-DATA
     ORDER-DETAIL-RECORD
     SSA-DATA-2
IMSDbProcessor.getNextInParent(
    this,
    pcbData,
    orderDetail,
    ssaData2);

If ORDRDETAIL is a child of ORDERRECORD and the current parent has an ORDER_ID of 33, the corresponding query may be:

SELECT ...
FROM ORDRDETAIL
WHERE ORDER_ID = 33

The result populates orderDetail while retaining the parent context required by the original operation.

Making IMS Relationships Explicit in Java

Parent-child relationships defined in IMS metadata can be represented directly in the generated Java application:

orderDetail.assignParent(orderRecord);

orderRecord.read();
orderDetail.read();

This makes IMS relationships visible to Java developers. Generated SQL can also be logged to support testing, troubleshooting and maintenance.

Converting IMS MFS Screens to Web Interfaces

IMS TM, traditionally known as IMS DC, uses Message Format Service (MFS) definitions to control the input and output presented through IBM 3270 terminals. SoftwareMining's COBOL-to-Java Conversion Toolkit converts supported MFS definitions and their associated COBOL screen-processing logic into JSP or HTML web-interface components that can be accessed through standard browsers.

The initial generated interface is designed to preserve the fields, interactions and established behaviour of the original 3270 application. It can subsequently be enhanced with web controls such as checkboxes, radio buttons and drop-down lists as part of a wider user-interface modernization programme.

Explore MFS and BMS COBOL-to-Java modernization