Maksim Kabakou - Fotolia
While modern programming languages like Java and .NET are widely used, COBOL is still very much alive and -- for some businesses -- here to stay. Similar to other old, imperative languages like Fortran and Basic, COBOL is considered a relic of the early days of programming. Today, however, there are an overwhelming number of organizations that have COBOL code buried deeply within their most important application systems.
Common Business-Oriented Language (COBOL) exists as part of 90% of Fortune 500 enterprise software environments, according to COBOL Cowboys, a consulting company. Its popularity stems from the use of English words and phrases, which are easier for general business users to understand than programming terms. The language is particularly prevalent in financial institutions and government agencies, as these were some of the first adopters, in addition to the defense industry. COBOL later became popular for the transportation sector, in the 1990s.
Banks deal with an enormous amount of large-scale batch and transaction processing jobs. According to Reuters, 43% of banking systems are built on COBOL, 80% of in-person bank transactions use COBOL, and ATMs rely on COBOL code to read 95% of card swipes. Additionally, IBM estimates there are 240 billion lines of COBOL code in production currently, with another five billion added each year.
With the language still active decades since it started, software teams should understand the place for modern COBOL in the enterprise, the careers related to it and a few strategies to keep systems running without breaking the bank.
Architecture strategies for COBOL modernization
In the late 1990s, there was great demand for COBOL as companies reviewed their code in preparation for the dreaded Y2K bug. As web-based activity took off in the 2000s, and companies began to facilitate system communication through web protocols like TCP/IP and languages like JSON, COBOL lost favor. Now, translating COBOL systems to these newer languages and hosting options is a priority for a large majority of organizations.
There are a few ways companies can undergo a COBOL modernization, each with its own benefits and set of caveats. The strategies range from a code rewrite or refactoring to code conversion, or data transfer from one system to another, as well as cloud migration.
Rewrite and refactor code. One way companies handle updates to COBOL systems is intensive rewrites and refactoring. However, this modernization effort is not just a code conversion, but a conversion of an entire application system and its dependencies. This approach is expensive, and ancient COBOL applications likely lack the needed documentation, such as functional specifications.
Use code conversion tools. It's possible to use tools that convert old COBOL source code to alternatives like Java or C#. However, the results vary. Converted code can be difficult to read and debug. The old platform must change from IBM CICS and Job Control Language with COBOL to Microsoft Windows or Linux with the new language. A tool-based code conversion is not a bad way to experiment with modernizing certain amounts of COBOL code for an application, but expect to pay for tech consultants and contracted developers to make the conversion work.
Transfer data off COBOL systems. When companies go through a merger, acquisition or other major shakeup, architects have the option to transfer business accounts, bills, users and other corporate information to a more modern software system. This migration, of course, requires some custom code to make new systems work like the old ones. It also demands a forceful approach -- customers might have to lose a few complex features. However, leaving legacy COBOL-based systems for newer ones will likely prove significantly cheaper than a massive code rewrite project.
Move to the cloud. Another option is to move the COBOL code to an OpenVMS OS, a processing OS originally released by Digital Equipment Corporation that can support an x86 architecture. It could even port to a Linux OS, which can run Docker and Kubernetes. This approach is well-suited for organizations that have already moved web servers and distributed application services to the cloud and are comfortable with the process. This type of COBOL modernization can also cut down on licensing fees, data center management expenses and the time it takes to debug code.
A cloud-based approach is the least risky option for a migration off COBOL programming, because you can keep the old data center running as a failsafe. This allows your core COBOL system to continue doing what it does best -- which is processing transactions -- while slowly shifting components and services to a connected cloud platform. Non-COBOL functions, such as payroll and accounting, will likely transfer relatively easily to a web-based platform.
COBOL skills and career options
Becoming an expert in COBOL means intense specialization in one language. Focusing intensely on COBOL may potentially hurt your ability to explore other languages and application styles. As a programmer who has written some COBOL, I found the language incredibly verbose, not to mention that basic COBOL code doesn't include procedural recursion, support functional programming or feature built-in support for regular expressions. It just involves more typing.
However, developers can carve out a middle ground with COBOL. If you can learn enough to be helpful in a crisis, such as the one caused by COVID-19, then you are still adding a lot of value to your team. For instance, the COVID-19 pandemic caused massive job cuts, and a rush of unemployment claims to overwhelm the country's unemployment insurance systems that are based on COBOL. The phenomenon increased the demand for experienced programmers. However, IBM puts the typical age of the COBOL programmer at 58 and colleges don't have COBOL prominent enough in their curricula to bring up a new generation of COBOL programmers.
Think about dedicating time to writing COBOL code in case it's needed, but don't let yourself get pigeonholed by not learning other languages as well. Take courses on COBOL, too, such as those provided by Udemy and Coursera. These online learning platforms often also offer training in COBOL-based IBM mainframe management languages and tools. Here are a few examples of what's worth brushing up on:
- Time Sharing Option environments
- Job Control Language
- CICS software
- Db2 relational databases
Remember, it's never too late to learn COBOL. In fact, it might be the ticket to a stronger career in software development.