SoftwareMining's automated, rule-based COBOL-to-Java and COBOL-to-C# Conversion Toolkit converts IBM CICS COBOL applications into maintainable Java or C# source code. The toolkit translates COBOL business logic, supported EXEC CICS commands, BMS screen definitions, program flow and data structures used by online transaction applications.
Generated application code integrates with SoftwareMining runtime libraries and framework components that provide the CICS behaviour required by the converted application. This includes support for program linking, COMMAREA data, transaction state, queues, condition handling, file access and other supported CICS services.
The conversion process can also address related technologies including DB2 embedded SQL, VSAM and KSDS files, JCL-controlled batch processing, selected RACF integration requirements and IBM MQ. The required mappings are selected according to the source application and its target Java or .NET architecture.
Application analysis and source-code translation take place within the client's own infrastructure. Enterprise customers and system integrators retain control of the COBOL source, business data, generated Java or C# code, testing and deployment.
For a detailed explanation of how CICS commands, BMS screens, pseudo-conversational processing and online transaction flows are translated, see our technical guide to CICS and BMS conversion .
A CICS application cannot be converted by translating COBOL statements alone. Its behaviour also depends on transaction boundaries, program control, COMMAREA data, BMS maps, queues, file access, condition handling, security and other services supplied by the CICS environment.
A complete conversion must identify these dependencies, generate the corresponding Java or C# components and provide runtime support for behaviour not available directly from the target language. The original and converted applications should then be executed using representative transactions and their results compared to validate the required business behaviour.
SoftwareMining translates IBM z/OS COBOL business logic and supported EXEC CICS commands into Java or C# source code. Generated application code works with SoftwareMining runtime libraries and framework components that provide the CICS behaviour required by the modernized application.
A complete CICS migration must address the transaction-processing services surrounding the COBOL business logic. The following components explain how SoftwareMining handles program flow, transaction state, BMS screens, indexed files, security, messaging and supporting CICS runtime behaviour.
CICS pseudo-conversational applications normally send a screen and return control to CICS between user interactions. When the user responds, CICS starts the next transaction and restores the application state through mechanisms such as COMMAREA data.
SoftwareMining converts this processing model into web-application request handling. The generated framework uses Java session management or corresponding .NET state-management facilities to represent transaction flow, screen state and data passed between converted programs. The resulting behaviour can then be validated against the original CICS application.
BMS map definitions describe screen fields, positions and display attributes used by CICS applications. SoftwareMining converts these maps into web-interface components, including JSP-based views for Java or corresponding .NET views for C#.
SoftwareMining maps supported CICS file commands, including READ, WRITE, REWRITE, DELETE, STARTBR, READNEXT, READPREV and ENDBR, to generated data-access classes. When VSAM or KSDS data is migrated to SQL, COBOL record layouts and key definitions are used to generate relational structures and corresponding Java or C# access operations.
Indexes, transaction boundaries, connection pooling and database placement must be considered when validating the performance and behaviour of the migrated file operations.
CICS applications may depend on RACF user identities, roles and resource authorization. SoftwareMining identifies supported security dependencies and maps them to interfaces that can be connected to the authentication and authorization services selected for the target application.
The precise implementation depends on the customer's security architecture, such as LDAP, Active Directory or another enterprise identity provider. Existing RACF rules must therefore be analysed and mapped rather than assumed to transfer directly to Java or .NET.
SoftwareMining converts supported IBM MQ operations into calls through a Java or C# messaging interface. The interface can be implemented using IBM MQ or connected to another messaging provider selected for the target architecture.
For example, a COBOL MQ call such as:
CALL 'MQGET' ...
can be represented by a generated call such as:
MQManager.Get(...);
The provider behind the generated interface is configured or implemented for the organization's messaging platform. Message formats, transaction boundaries, completion codes and error handling must be validated against the original application.
Java and C# do not provide native equivalents for many CICS services. SoftwareMining runtime libraries provide the supporting behaviour required by the converted application for supported operations such as program control, COMMAREA handling, temporary storage queues, task scheduling, condition handling, resource locking and date-time processing.
Centralizing these behaviours in runtime components avoids reproducing low-level CICS handling throughout the generated business code. It also provides consistent integration points for testing and target-platform configuration.
SoftwareMining translates supported EXEC CICS commands into Java or C# calls that use generated application components and SoftwareMining runtime libraries. The required command options, response codes and application data are mapped according to how each command is used by the source program.
The following list summarizes commonly used CICS commands supported by the SoftwareMining Conversion Toolkit. Command usage and options should be confirmed during application analysis because individual CICS applications may depend on platform-specific behaviour or less commonly used options.
EXEC CICS HANDLE CONDITION maps specified CICS conditions
to the corresponding translated control flow.
EXEC CICS ABEND terminates the current transaction through
the generated application framework.
EXEC CICS START schedules a transaction using the
specified time, interval and data options.
EXEC CICS RETRIEVE retrieves data supplied to a task
initiated by a START command.
EXEC CICS LINK invokes another converted program and returns
control to the calling program.
EXEC CICS XCTL transfers control to another converted program
without returning to the transferring program.
EXEC CICS RETURN returns control to the caller or ends the
current transaction, including supported transaction and COMMAREA options.
EXEC CICS SEND TEXT sends unformatted output through the
generated user-interface framework.
EXEC CICS SEND MAP sends field values and attributes from
a generated BMS map representation.
EXEC CICS RECEIVE MAP maps submitted screen data into the
corresponding generated application fields.
EXEC CICS READ retrieves a record using its key or other
supported access options.
EXEC CICS WRITE creates a record through the generated
data-access component.
EXEC CICS REWRITE updates a previously retrieved record.
EXEC CICS DELETE deletes the selected record.
EXEC CICS STARTBR, READNEXT,
READPREV and ENDBR are mapped to ordered
browse operations over the migrated data.
EXEC CICS READQ TS, WRITEQ TS and
DELETEQ TS operate on converted temporary storage queues.
EXEC CICS READQ TD, WRITEQ TD and
DELETEQ TD are mapped to the configured transient-data
implementation where supported.
EXEC CICS ASKTIME obtains the current time in the
representation required by the converted application.
EXEC CICS FORMATTIME converts the supplied time into the
requested date and time fields.
EXEC CICS GETMAIN allocates storage represented by
generated Java or C# data structures and runtime components.
EXEC CICS INQUIRE SYSTEM, INQUIRE TASK and
INQUIRE FILE retrieve supported environment and resource
information from the target framework.
EXEC CICS ENQ and DEQ are mapped to target
locking services for coordinating access to named resources.
EXEC CICS ASSIGN retrieves supported transaction, user and
execution-environment information.
EXEC CICS ROUTE maps routed output to the configured
target reporting or output service.
EXEC CICS GET COUNTER and
DEFINE COUNTER use the configured counter implementation.
EXEC CICS PUT CONTAINER and
GET CONTAINER store and retrieve channel-container data.
For examples showing how CICS file operations and BMS screen processing are represented in generated Java, see CICS and VSAM-to-Java conversion and CICS and BMS COBOL-to-Java conversion .
SoftwareMining provides its automated, rule-based Conversion Toolkit directly to enterprise customers and system integrators. Project teams can analyse representative CICS COBOL programs, examine the generated Java or C# source code and validate supported CICS behaviour against the original application.
Review the COBOL-to-Java and COBOL-to-C# Conversion Toolkit features , download the evaluation toolkit or contact SoftwareMining to discuss the CICS commands, BMS maps, files, databases and integration requirements used by your application.