How to Migrate IBM Mainframe CICS COBOL Applications to Java and C#
Transitioning from IBM Mainframe CICS COBOL applications to modern programming languages like Java or C# on cloud platforms such as AWS or Azure offers strategic advantages. Scalability is one of the key benefits, enabling businesses to adapt to fluctuating workloads without major upfront infrastructure investments. This transition is particularly important given the decreasing number of developers proficient in legacy technologies like COBOL and CICS. Furthermore, migration to Java or C# offers enhanced security features, reducing operational risks, and aligns with the robust, regularly updated environment provided by cloud platforms. Additionally, the move facilitates easier access to a larger pool of development talent and opens doors to cutting-edge tools and frameworks, empowering businesses to stay competitive in the modern landscape.
SoftwareMining's transition of these applications to Java/C# aims to enhance long-term maintainability by:
- Leveraging existing 3rd party technologies: Utilizing Application servers like Tomcat, Web-logic or IIS for C#, and SQL Database Servers instead of VSAM (KSDS), among others.
- Simplifying during the Translation phase: This includes generating JSP (or ASP) from BMS files and converting VSAM API to Object-Relational data access methods.
- Supplying CICS compatible libraries: Incorporating tools from RACF, Temporary Storage Queues, and delayed program launches to Date-Time functions.
This approach empowers new Java/C# developers, unfamiliar with CICS, to handle the long-term upkeep of the newly translated Java/C# applications.
Click here for a compilation of the most popular and supported CICS API.
Essential Components in moving CICS COBOL to Java or C#
Conversion from Pseudo-conversational to Session-Based Application Server Design
Online CICS applications are prime candidates for transition to an event-driven framework,
where screens are dispatched and retrieved from terminals. CICS online applications,
especially those supporting numerous concurrent users,
are typically structured using a pseudo-conversational design to optimize processor and storage needs.
These applications are ideally suited for migration to session-based Java or C# code that leverages similar technologies,
facilitating the creation of new applications within a cloud-centric architecture.
Migration of BMS Screens to HTML
BMS is the standard for screen definitions in IBM CICS applications. SoftwareMining's conversion tool offers several output formats for BMS screens, including JSP, ASP, and XML. These formats can be employed at runtime to produce HTML. The main objectives of the conversion process include:
For more information please see From cryptic COBOL+CICS/BMS to maintainable Java/C#.
- Ensuring identical functionality to minimize testing needs.
- Minimizing maintenance challenges by producing code that is intuitive for new developers.
- Offering a clear upgrade path. SoftwareMining delivers screen enhancement tools and supports a modular design for easy integration of new or updated screens.
Interacting with Indexed Files (EXEC CICS READ WRITE REWRITE)
CICS data file access operations utilize a general and high-level approach.
By comparison, the conversion process shifts record definitions from CICS/VSAM files to a Data-Access Objects (DAO) using an Object-Relational design.
The generated DAOs can be easily repurposed to interact with existing VSAM data files or SQL tables, providing a flexible migration strategy.
Security and RACF
The CICS security system integrates seamlessly with external security managers like RACF.
Similarly, SoftwareMining's framework can either leverage its inbuilt security manager or interface with external modules like LDAP.
Once a security module is activated, the translated system will assess user privileges for tasks like transaction initiation and data access.
Integration with MQSeries
Although MQ-Series isn't an integral part of the IBM CICS library, it is often employed in large-scale CICS applications.
SoftwareMining addresses this by translating MQ API calls to vendor-neutral interfaces, ensuring compatibility with a range of messaging services.
For instance translating :
CALL 'MQGET' ...
The MQManager can be tailored to support various messaging implementations.
Such a design strategy allows for initial compatibility with the IBM-MQ messaging service.
Over time, this makes a transition to alternative messaging systems, such as Java JMS, straightforward and feasible.
Communicating with MQSeries
Whist MQ-Series is not part of the IBM CICS libraries, the MQ messaging system is used in many larger CICS applications.
SoftwareMining tackles Message Queuing by translation of MQ API to a vendor-neutral set of API.
This is done by correctly identifying MQ calls and translating them to a Vendor neutral API.
Furthermore, SoftwareMining's implementation leverages the Open-Source ActiveMQ libraries.
However, the aforementioned design ensures ease of integration with any other message-queuing tools.
Additional CICS Libraries
CICS provides a vast array of functionalities. SoftwareMining's approach aims to translate these COBOL CICS operations to native Java or C# patterns,
simplifying the architecture and future maintenance requirements.
CICS API currently supported in Java and C#
The following is a summary of the most widely used CICS API which are supported by SoftwareMining's Translation tools.
- EXEC CICS HANDLE CONDITION Handle conditions.
- EXEC CICS ABEND Terminate a task abnormally.
Starting a Task at a later time
- EXEC CICS START start a task at a specified time.
- EXEC CICS RETRIEVE The RETRIEVE command retrieves data stored by expired START commands.
Flow logic Control
- EXEC CICS LINK LINK passes control from an application program at one logical level to an application program at the next lower logical level.
- EXEC CICS XCTL XCTL transfers control from one application program to another at the same logical level.
- EXEC CICS RETURN RETURN returns control from an application program either to an application program at the next higher logical level, or to SoftwareMining framework
Online / Screen handling
- EXEC CICS SEND TEXT Send data to screen (web-browser) without mapping.
- EXEC CICS SEND MAP Sends A BMS map to screen (web-browser)
- EXEC CICS SEND Send mapped output data to a screen (web-browser).
- EXEC CICS RECEIVE MAP maps input data from a screen (web-browser)into a data area in an application program.
- EXEC CICS RECEIVE Receive data from a screen (web-browser)
VSAM Access (ported to SQL Tables and accessed through Object-Relational Data-Access Objects)
- EXEC CICS READ Read a record from a data-source.
- EXEC CICS READNEXT Read next record during a browse of a data-source.
- EXEC CICS READPREV Read previous record during a data-source browse; VSAM and data tables only.
- EXEC CICS WRITE Write a record.
- EXEC CICS STARTBR specifies the record in a data-source where the browse is to start.
- EXEC CICS ENDBR End the browse of a data-source.
Temporary Storage Queues
- EXEC CICS READQ TS / TD read from temporary storage / transient data queue.
- EXEC CICS WRITEQ TS / TD Write data to a temporary storage / transient data queue
- EXEC CICS DELETEQ TS / TD Delete a temporary storage / transient data queue.
- EXEC CICS ASKTIME
- EXEC CICS FORMATTIME Transform absolute date and time into a specified format.
- EXEC CICS ASSIGN Request values from outside the local environment of the application program. SoftwareMining supports a multitude of ASSIGN parameters.
- EXEC CICS ROUTE Currently only ROUTE NLEOM (routing to printers) is supported.
- EXEC CICS GET COUNTER / DCOUNTER Get the next number from the named counter in the specified pool.
- EXEC CICS DEFINE COUNTER / DCOUNTER create a named counter in a named counter pool in the coupling facility.
- EXEC CICS PUT/GET CONTAINER Place or retrieve data in a named channel container.
CICS COBOL Migration Related Papers
SoftwareMining is a trademark of Software Modernization Technologies Ltd (UK).
Registered in England company no: 07300248. Reg Offices: 79 Stevens House, Jerome Place, Kingston Upon Thames, KT1 1HX, United Kingdom.