cloudframe | Resource
COBOL modernization business continuity incremental migration mainframe operations production risk

Why Modernization Is Hard – Series 5

Examine the challenges of maintaining business continuity while executing parallel COBOL modernization and legacy system operations. Learn how CloudFrame's incremental modernization approach minimizes production risk dur...

By Venkat Pillay Jul 24, 2024 ARTICLES

Background

It is common to find COBOL or other legacy language application programs calling System modules viz. Standard z/OS Language Environment modules for Date functions, DB2 DSNALI/RLI modules for connection establishment, DSNTIAR utility to get formatted DB2 exception trace, IDCAMS for file allocation, IKJEFT for ISPF functions, Standard abend modules to trigger abnormal termination of process as part of exception handling, and other such utilities.

System Modules

The following are the common categories of system modules that legacy programs call:

1.z/OS Language Environment calls such as

  1. CEEDAYS, CEEDATE that convert between standard date format and Lilian format date for easy date-based arithmetic
  2. CEELOCT to get current local time
  3. CEEGMT to get current Greenwich Mean Time (GMT) in Lilian format
  4. CEEGMTO to get difference between the local system time and Greenwich Mean Time (GMT)
  5. CEE3DLY, CEEDYLM to suspend processing for a duration in seconds or milliseconds
  6. CEEDYWK to return day of week from a Lilian format date
  7. CEE3ABD, ILBOABN0 to request termination of process with an abend code
  8. LE storage related modules

When calculating the date and time, it is important to keep in mind that COBOL dates are based on Gregorian calendar starting January 1st 1601, while Java references the date January 1, 1970, 00:00:00 GMT. I have seen many systems fail to produce correct results because of date calculations.

2. DB2 Service modules

  1. DSNALI/DSNRLI calls to handle DB2 Connections
  2. DSNTIAR that helps programs obtain a formatted form of the SQLCA and a text message that is based on the SQLCODE field of the SQLCA

3. Obtaining MVS Control blocks

  1. Assembler program calls to retrieve Job name, job Id, find dataset attributes and finds out if a program is running in batch or CICS environment etc.
  2. Sometimes, the COBOL programs directly establish pointers to map MVS Control blocks and resolve runtime job related attributes

4. It is not uncommon to find COBOL programs calling System programs for handling dataset, calling REXX and other MVS Services

  1. IDCAMS calls
  2. ISPLINK calls to invoice ISPF services
  3. Passing SORT Control cards via JCL SORTCNTL DD to COBOL SORT statements
  4. Calling Assembler programs to utilize various System services.
    1. WAIT, POST, ENQ, DEQ etc
    2. Dynamic allocation/deallocation of datasets

If your modernization toolkit cannot handle these system utilities, then the manual refactoring work to identify and plug the required missing code to support these calls in legacy application programs will be significantly challenging.

Conclusion

CloudFrame identifies and handles standard system modules that are a part of the call chain of application legacy programs. This provides total transparency when it comes to handling such system modules and facilitates a transparent migration experience, so you don't lose a critical business function in the process.

Share Article

Spread this insight across your network.

X LinkedIn Facebook
Author

Venkat Pillay

Founder and CEO

Venkat is a true technology visionary, serial entrepreneur, strategist, deep generalist, and architect. With over 25 years of experience and a passion for innovation, his expertise ranges from Legacy to emerging technology and company building.

Continue Reading

Related Posts

Ready to modernize?

Start your journey from legacy mainframe to modern cloud-native applications today.

Agentic AI

Agentic AI is CloudFrame's orchestrated intelligence layer that combines deterministic, probabilistic, and generative models to assist, guide, and learn across the entire modernization journey—from discovery to transformation and optimization. It is context aware, adaptive and capable of independent operation.