Why Modernization Projects Fail and How to Make It a Success – Series 10

When IT Ambitions Clash with Business Reality in Legacy Modernization   When legacy modernization efforts turn into a battlefield between IT ambitions and business realities, the outcome is almost always the same: reality wins. Unfortunately, by the time reality prevails, the project often leaves behind a trail of shattered euphoria and a disheartened team. In this […]

Why modernization is hard – Series 9

In previous blog posts, I have mainly focused on deep technology obstacles that make legacy modernization so hard. In the concluding posts, I will share my experiences with various modernization projects and what makes the effort a Win-Win story. A key takeaway is starting modernization for the right reasons is crucial for success. If your […]

Why modernization is hard – Series 8

COBOL programs often generate reports where field formatting is handled using the ‘PICTURE’ clause. This clause allows for complex numeric editing and formatting options in these legacy programs. Most modernization efforts underestimate these complexities. We will highlight a few examples that we come across in customer programs.  The following table shows the results from running […]

Why modernization is hard – Series 7

Migrating mainframe COBOL DB2-based business functions to a cloud-native architecture is a daunting task. In our previous series, we discussed the various complexities involved in ensuring a smooth transition without disrupting business operations or affecting customers. Moving databases from a mainframe to the cloud adds an additional layer of complexity.  Here’s a look at some […]

Modernization Challenges – DB2 syntaxes  

A common occurrence in COBOL/DB2 programs is the coding of SQL SET assignment statement. This could be used for assigning Current Timestamp, Current Date/Time and doing various Date/Time arithmetic without coding a real SQL statement or coding complex logic in COBOL.   Some of the common SET statements we observe in customer programs include: Some […]

Why modernization is hard – Series 6

Convoluted code logic can be found in any system or programming language, but modern languages are designed to minimize such issues. For example, the creators of Java opted against direct memory allocation, pointer usage, and direct memory references. This design choice results in less confusing code, fewer bugs, and easier debugging and troubleshooting. Despite being […]

Why modernization is hard – Series 5

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 […]

Why modernization is hard – Series 4

One of the biggest challenges in modernizing legacy applications is figuring out the program call chain and the functionality of various called programs. Scanning the source code alone is not enough to understand the call chain and the full scope of the application. In this blog, I’ll share a few examples of issues customers have […]

Why modernization is hard? – Series 3

COBOL compiler options significantly affect calculation results and logic flow. Both human intelligence and AI struggle to replicate business logic in newer systems without considering these options. This challenge is like landing a plane on a foggy night without navigation—success is largely coincidental. In this blog, I’ll share a few examples of issues customers have […]

Why modernization is hard? – Series 2

Conditional handling in COBOL is quite tricky to replicate in newer languages for a few reasons. 1. The character comparisons use EBCDIC codepage which has different collating sequence than ASCII/UTF-8. The non-equal comparison operators viz. >, >=, <, <= can result in different results when compared with EBCDIC collating sequence as against ASCII/UTF-8. e.g. String […]

  • 1
  • 2