Revisiting the re-tailored COBOL universe
Comment COBOL, the Common Business-Oriented Language, was one of the first signs (somewhat after LEO, the world’s first business computer in 1951) of the acceptance of computers as a routine business, as opposed to scientific or engineering, tool.
The design of COBOL was strongly influenced by FlowMatic, developed through the 1950s by Rear Admiral Grace Hopper. In 1983 she told Voice of America “Up until that time [the end of the Fifties], computer programs had to be written either in assembly code, machine code, or there was one compiled for mathematical engineering problems. But I felt that more people should be able to use the computer and that they should be able to talk to it in plain English. And that was the beginning of COBOL” (quoted here).
It may also explain COBOL’s lack of popularity with some programmers, since not all programmers care for English that much – it’s a bit verbose. Some 30 years after Hopper's remark I remember a C programmer explaining to me that he found a piece of COBOL completely opaque. As I remember it (apologies if I misremember this complex syntax), the fragment concerned included obscurities something like
IF VALID-AMOUNT MOVE ABCD-IPUT-INVOICE-AMOUNT TO ABCD-OUTPUT-INVOICE-AMOUNT...
However, many programmers working in “big iron” IT in the financial services markets may soon have to start looking at COBOL again. This is because of the EU MiFID (Markets in Financial Instruments Directive), designed to facilitate a single European financial services market.
As is usual with financial services initiatives these days, MiFID introduces stringent regulatory requirements: banks will need to retain trading information for up to five years, and tighten transaction reporting. Since a lot of the processing in financial services still involves systems written in COBOL, the possible implications for the COBOL industry are obvious.
A spokesman from Micro Focus, which seems to see itself as the guardian of business COBOL amongs other things - visit the COBOL Webring here - argues that these challenges represent an opportunity to rework business processes to improve flexibility, reduce costs and increase agility. The directive is not just an obligation to employ a few consultants at vast expense to implement a few tick-box compliance changes.
Nevertheless, re-engineering COBOL legacy needs some understanding of COBOL and the way COBOL systems work (even if there are now code analysis tools to help); and an ability to abstract from this into the underlying automated business process. Fortunately, understanding well-written COBOL code isn’t hard, although badly-written COBOL can be the very devil, and modern COBOL dialects support modern ideas of coding style and practice.
Now, Microsoft’s .NET environment means that COBOL can interoperate with other .NET languages as Julian Dobbins, senior market development manager, Micro Focus, points out. “The most exciting aspect of .NET COBOL, Micro Focus' most recent object-oriented version of the language,” he says, “is the seamless interoperability it provides with other languages.
At one time, object-oriented COBOL required that developers lock themselves into a self-contained COBOL universe, with access only to class libraries that are written in COBOL (either by Micro Focus or by themselves). But the .NET universe means that there is completely seamless operation from COBOL to any class libraries written for .NET in any language”. Modern COBOLs are available from the likes of Fujitsu Software and IBM as well as from Micro Focus (as part of Net Express) here.
COBOL has some interesting issues. Take OOP, for example – often thought to be the killer issue for COBOL. But Netron was producing object frameworks in COBOL-74 even before C++ arrived in business. Indeed, the basic structure of a COBOL module (Data Division defining a data structure, associated with Procedure Division “methods” seems, to me, to suit object definitions rather well, so long as you enforce “encapsulation” with a suitable interface.
Sponsored: DevOps and continuous delivery