SoftwareMining's COBOL-to-Java and COBOL-to-C# Converter supports the migration of IBM CICS applications through automated, rule-based conversion. It operates within the customer's own infrastructure and generates maintainable Java or C# source code.
Business-critical CICS applications may contain decades of proven logic and depend on BMS screens, COMMAREA data, DB2, VSAM, IBM MQ, queues, program links and JCL-controlled batch processing. Conversion must therefore address the complete application architecture while preserving established transaction behaviour, reliability and performance.
The toolkit converts COBOL business logic, supported EXEC CICS commands, BMS maps, program flow and data structures. Generated code uses SoftwareMining runtime components for supported CICS services, including program control, COMMAREA handling, transaction state, queues, file access and condition handling.
CICS conversion must address the platform services surrounding the COBOL programs. SoftwareMining maps supported dependencies to Java or C# components and provides runtime support for behaviour not available directly from the target language.
SoftwareMining addresses the transaction flow, BMS screens, indexed files, security, messaging and runtime services surrounding the COBOL business logic.
CICS applications may return control after displaying each screen and restore transaction state through COMMAREA data when the user responds. SoftwareMining maps this model to Java web-request and session handling, or corresponding .NET state-management facilities, while preserving program flow and data passed between converted components.
SoftwareMining converts BMS maps into JSP-based views for Java or corresponding .NET views for C#. Generated interfaces retain the connection between screen fields, application data, display attributes, and SEND MAP and RECEIVE MAP processing.
Supported CICS commands, including READ, WRITE, REWRITE, DELETE, STARTBR, READNEXT, READPREV and ENDBR, are converted into generated data-access operations. When VSAM or KSDS data is migrated to SQL, COBOL record layouts and keys are used to generate relational tables, indexes and Java or C# DAO classes.
SQL indexes, transactions, connection pooling and deployment architecture are considered during behavioural and performance validation.
This example shows how a CLIENT-RECORD KSDS layout and
EXEC CICS READNEXT operation are converted into a Java data-access
object. Although the record begins at COBOL level 05, its use in the
CICS operation allows the toolkit to identify and generate it as a
separate Java class.
Record / generated DAO CICS / Java operation Record key VSAM file / target mapping
WORKING-STORAGE SECTION.
01 WS-DATA.
05 WS-TMP.
10 LEN PIC 9(9) VALUE 0.
10 KEY PIC 99V99 VALUE 0.
05 CLIENT-RECORD.
10 NAME PIC X(20).
10 ADDRESS PIC X(20) OCCURS 3 TIMES.
10 ID PIC 9(4) COMP.
// CLIENT-RECORD is used by a CICS file operation
// and is generated as a CICS-aware relational DAO.
private ClientRecord clientRecord =
new ClientRecord(this);
// WS-DATA now contains everything but extracted CLIENT-RECORD.
private WsData wsData = new WsData(this);
EXEC CICS
READNEXT
DATASET('CLIENT-FILE')
INTO(CLIENT-RECORD)
RIDFLD(KEY)
LENGTH(LEN)
END-EXEC
clientRecord.assignKeyValue(wsData.getKey());
clientRecord.assignTableName("CLIENT-FILE");
clientRecord.next();
SoftwareMining identifies supported RACF identities, roles and resource authorization dependencies. These can be mapped to interfaces connected to LDAP, Active Directory or another identity service selected for the target application. Existing RACF rules must be analysed rather than assumed to transfer directly to Java or .NET.
Supported IBM MQ operations are converted into calls through a Java or C# messaging interface. The interface can use IBM MQ or another messaging provider selected for the target architecture.
CALL 'MQGET' ...
can be represented by:
MQManager.Get(...);
Message formats, transactions, completion codes and error handling are validated against the original application.
SoftwareMining runtime components provide supported CICS behaviour not available directly in Java or C#. Centralizing these services keeps low-level CICS handling out of the generated business code and provides consistent integration points for testing and configuration.
SoftwareMining converts supported EXEC CICS commands into Java or C# and provides runtime components for the corresponding CICS behaviour. Supported areas include: