In the Unix/Linux environment (which is the scope of this discussion), COBOL is a very rare bird -- almost universally unknown. C is the dominant programming language, and the semantics of the C programming language are almost universal throughout the OS and application development environment. Both languages support structured records in RAM and on disk, and structured, modular logic -- and a full C development environment is already present in every Linux system at no extra cost, so it's no more difficult for a competent programmer to write a business application in C than it is to write the same application in COBOL. Good program logic and data structure design are necessary for both languages; it's only a discussion of how the logic and data structures are expressed. It's interesting that one of the best business programming books I've ever seen has all the examples implemented entirely in GW-BASIC...8-).
All the COBOL compilers and tools available on Linux (specifically on zSeries and on Linux in general) are commercial applications. They are *very* expensive to acquire, and are difficult to integrate -- special libraries, different runtime requirements, non-standard calling conventions, etc. So, while I don't have any objections to COBOL per se (I've written a few zillion lines of the stuff myself), it's simply not present in most Linux environments, and the cost of supporting COBOL applications in the Linux environment is prohibitive compared to supporting the same application written in C, both from a configuration/operations perspective, and from a tooling acquisition perspective.
The point I was making: for Linux, supporting COBOL on Linux is most likely to be a transition strategy; it is highly unlikely to be the final destination.
If someone feels like finishing the GNU COBOL compiler project and gets it incorporated into the distributions, my opinion might change. Until then, COBOL is simply unlikely to make any headway in the Linux environment.
Why would you use 'C' instead of COBOL to produce reports?
It costs nothing additional to develop and use C applications on Linux, and the entire environment is oriented toward supporting C applications in an efficient and natural manner. It costs a substantial amount to support COBOL on Linux. See above for discussion of language features, etc. Nothing in the Linux environment *prevents* use of COBOL; the observation is that COBOL is rarely selected in that environment for purely economic reasons.
Wrt to reports, in the Linux world, it would be much more likely that report programs would be written in Perl or Python than C. Both have sophisticated text manipulation capabilities not easily implemented in C or COBOL, and (at least in the case of Perl), there is a enormous library of functions available for any concievable need that are available for public re-use with no license attached. Taking advantage of these freely-available modules makes the case for developing a compiled application in either C or COBOL suspect -- it's just way too much easier to write applications like that in Perl. Perl's interface to SQL-based DBMS systems is also almost trivial to use (much simpler than either the C or COBOL model), and as these COBOL reporting applications typically also move the data to some kind of DBMS, that's further argument for making it happen with Perl instead of compiled stuff.
It's not a discussion about whether C is better than COBOL. It's a business decision that in a Linux environment, I can get more working applications per hour for less expensive resources and requirements from C or Perl than COBOL. Given that, most organizations choose C or Perl over COBOL for new development on Linux.
This was first published in December 2005