Mainframe Modernization: Transforming IBM (CICS) COBOL to Java & C# Cloud
Transitioning from IBM Z/Os Mainframe COBOL applications to modern programming languages like Java or C# on cloud platforms such as AWS or Azure offers strategic advantages. Key among them is scalability, allowing businesses to adapt to fluctuating workloads without major upfront infrastructure investments.
The shift is especially critical given the dwindling expertise in legacy technologies like COBOL and CICS. Migrating to Java or C# also enhances security, reduces operational risks, and aligns with the robust, constantly updated environment of cloud platforms.
This transition not only provides access to a larger talent pool but also enables businesses to leverage cutting-edge tools and frameworks to remain competitive.
SoftwareMining's transition of IBM Z/Os applications to Java/C# aims to enhance long-term maintainability by:
VSAM & KSDS Migration Support: Includes file migration and converting VSAM API to Object-Relational data access methods. See IBM Mainframe VSAM to Java Conversion for more information.
Leveraging existing 3rd party technologies: Utilizing application servers like Tomcat, WebLogic, or IIS for C#, and SQL Database Servers instead of traditional VSAM (KSDS), among others.
Improving legibility: This includes generating JSP (or XHTML) from BMS files.
Using RESTful architecture for providing Web Services.
Supplying IBM 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 Z/Os 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:
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 IBM Mainframe / CICS security system integrates seamlessly with IBM Z/Os 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' ...
to:
MQManager.Get(... );
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.
Error handling
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.
Date/Time
EXEC CICS ASKTIME
EXEC CICS FORMATTIME Transform absolute date and time into a specified format.
Miscellaneous
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.
IBM Mainframe COBOL to Java/C# Migration - Further reading