Why is COBOL still the language of choice in the business world?

Question:

As everyone knows COBOL is widely used by financial institutions, where only the interface is made using current languages ​​like Java.

  • The cost of maintaining mainframes is high, but is the migration to a current language higher?
  • It is currently widely used but 20 years from now, will it still be beneficial to continue using mainframes and maintaining COBOL legacy systems?
  • Are there any limitations that prevent this COBOL migration from being done? (Ex: Data consistency)
  • At the time COBOL became popular in the business field, was there no other similar language or is it the only one that is still alive?

Answer:

Can anyone else see the problem with this question? People who don't know about COBOL, talking about COBOL, people who don't know about Mainframes, talking about Mainframes.

Let's break down the "business" more appropriately.

The smaller the company, the less relevant the language, operating system and hardware becomes.

As we progress to larger and larger companies, choices become more important.

In larger companies, with a huge amount of things to do, financial transactions, recording a huge and varied volume of actions, this kind of thing, with precision and speed: there you will find the existing systems in Mainframes, from IBM, with the programs inside of these systems running primarily on COBOL. With a greater or lesser level of "interoperability" with other "things" (other non-mainframe systems, web services, external databases, whatever).

Why is COBOL so fast? Why the attention to this?

Due to the type of language that COBOL is. Fixed-length fields. Arithmetic decimals. Developed many years before the existence of modern theory about programming languages, there is little to protect the programmer. An alphanumeric can be treated as a number, not in the sense that an interpreted language might do, but by the programmer's discretion.

Obviously a more complete description of the language, even without comparisons, would fill at least one book.

Add to that the IBM Mainframe, with fixed or known-length records (no record delimiters) and decimal machine instructions available.

Again, at least one more book.

Add to that the accumulated experience of many years of massive systems.

Add to that… I could go on…

01  BRANCH-TOTAL COMP-3 PIC S9(9)V99.
01  ACCOUNT-TOTAL COMP-3 PIC S9(9)V99.

...

ADD ACCOUNT-TOTAL TO BRANCH-TOTAL

This ADD can (depending on the compilation options) generate a machine instruction. A machine instruction. Understood? One. No rounding problem at all. 100% decimal precision. On a CPU with a clock speed that anyone could wish for.

Replace a system that's full of it, on a hardware/OS combination that can run for years without the need for a re-start (IPL), without constant security improvements, and that will run unchanged (even without a re-compilation ) in 20-50 years of time is not a trivial task.

And if anyone is faced with this task, they better do it right.

Remember, you can't just rely on hardware getting faster, because at the same time the business demands more, so excess capacity/power never really exists (or at least not for very long).


COBOL was developed in partnership between seven major computer manufacturers and the US government (including the military) to provide a standard language on different types of hardware, specifically for business programming.

There were no other languages ​​at that time that worked this way for commercial purposes. (Each manufacturer had specific programming systems for their machine lines, often different, even among their own machines)

Mainframe owning and operating costs today refer to the amount of processing power involved. Processing power is required for the huge amount of transactional processing performed.

IBM has development plans for COBOL for the next 50 years (see https://www.youtube.com/watch?v=JLMqkuou2-s ). This, of course, means that they have mainframe development plans for the same period.

Migrating from Mainframe to other hardware for "back end" processing has no limits, but the replacement system has to be: as accurate as; as reliable as; don't cost more to be maintained; stable for long periods of time ("backward compatibility") – The IBM System/360 architecture, which recently celebrated its 50th anniversary, is still the foundation for the current z/Architechture for IBM mainframes. Application programs written 50 years ago still have an exceptionally good chance of working today. It is routine for systems written in the 1970s to still be running today.

A common approach has been to implement new systems on new hardware with new languages, and run the existing Mainframe systems alongside, looking for opportunities to reduce the Mainframe workload as it grows. For these, the Test Of Time has not yet been completed.

RPG and its variants is another "long-lived" language from IBM, but one that has always been aimed at smaller systems (Mini-computers).

Are mainframes (and the systems they run on) still important? Look at IBM's financial reports. Significant sums are still being spent on new hardware and new hardware is still constantly being developed, at considerable cost. From there, draw your own conclusions.

For more information on Mainframes, IBM has made all manuals available to the public, and has published a large number of Redbooks on various Mainframe subjects. For those interested in further research but without knowledge of Mainframes, this is a good starting point: http://www.redbooks.ibm.com/abstracts/sg246366.html

Apologies for Google Translate


Can anyone see the problem with the question? People who don't know about COBOL, talking about COBOL, people who don't know about Mainframes, talking about Mainframes.

Let's split the "business" up into something more appropriate.

The smaller a business, the less relevant the language, operating system and hardware become.

As we progress through larger and larger businesses, the choices become more important.

At the very largest of businesses, with massive amounts of stuff to do, financial transactions, recording enormous volume and a variety of stock, that type of thing, accurately and rapidly: there you'll find existing systems on Mainframes, from IBM, with the programs within those systems being mainly COBOL. With a greater or lesser amount of "interoperability" between other "things" (other non-Mainframe systems, web services, external databases, whatever).

Why is COBOL so fast? Why the attention to that?

Because of the type of language COBOL is. Fixed-length fields. Arithmatic decimal. Developed many years before the existence of modern theory on programming languages, there is little to protect the programmer. An alphanumeric can be treated as a number, not in the sense that an interpreted language might do, but by deliberation on the part of the programmer.

Because there is lots of stuff to do, and to do it within time to meet the business needs, it has to be done fast.

Obviously a fuller description of the language, let alone comparisons, would fill at least a book.

Add to that, the IBM Mainframe, with fixed- or known-length records (no record delimeters) and decimal machine instructions available.

Again, at least another book.

Add to that the cumulative experience of many years of massive systems.

Add to that… I could go on…

01  BRANCH-TOTAL COMP-3 PIC S9(9)V99.
01  ACCOUNT-TOTAL COMP-3 PIC S9(9)V99.

...

ADD ACCOUNT-TOTAL TO BRANCH-TOTAL

That ADD can (depending on compile options) generate one machine instruction. One machine instruction. Go it? One. No rounding problems at all. 100% decimal accuracy. On a CPU with a clock speed anyone would wish for.

To replace a system which is full of that, on a hardware/OS combination which can run for years without requiring a re-start (IPL), without constant “security” upgrades, and which will run unchanged (without even a re-compile) in 20-50 years time, is a non-trivial task.

If that task is taken on, you’d better get it right.

Remember, you can’t just rely on hardware getting faster, because at the same time the business wants more, so the excess capacity/power never really exists (or not for long).


Original, recovered from a “recently closed tab” (thanks FireFox) and including some minor edits. Please feel free to edit google’s attempt at your language:

COBOL was developed in partnership between the seven large computer manufacturers and the US Government (including the military) to provide a standard language across different hardware specifically for business programming.

There were no other languages at the time which would operated in this way (each manufacturer had specific programming systems for their own ranges of machines, often different even between their own ranges) for business purposes.

Costs of owning and operating Mainframes today relate to the amount of processing power involved. Processing power is required for the massive amount of transactional processing carried out.

IBM has development plans for COBOL for the next 50 years (see https://www.youtube.com/watch?v=JLMqkuou2-s). This obviously means they have development plans for Mainframe computers for the same period.

Migrating from Mainframe to other hardware for the “back end” processing has no limits, but the replacement system has to be: as accurate: as reliable; not more expensive to run; stable for the coming many years (“backwards compatable”) – IBM’s System/360 Architechture, which recently celebrated its 50th birthday, is the basis for today’s z/Architechture for IBM Mainframes. Application programs written 50 years ago, still stand an exceptionally good chance of working today. It is routine for systems written in the 1970s to still be able to run today.

A common approach has been to implement new systems on new hardware with new languages, and run the existing Mainframe systems alongside, looking for opportunities to reduce the Mainframe workload as they arise. For these, The Test of Time has not been completed yet.

RPG, and its variants, is another long-lived IBM language, but that was always aimed at smaller (Mini-computer) systems.

Are Mainframes (and the systems they run) still important? Look at IBM’s financial reports. Considerable amounts of money are still being spent on new hardware, and new hardware is still being constantly developed, at considerable cost. Draw what conclusions you like from that.

For more information on Mainframes, IBM has made all their manuals publicly available, and have published a large number of Redbooks on various Mainframe subjects. For those interested in more research, but with no Mainframe background, this one is a good starting-point: http://www.redbooks.ibm.com/abstracts/sg246366.html

Scroll to Top