[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[open-cobol-list] Calling C++ from GNU COBOL

From: Scott McKellar
Subject: [open-cobol-list] Calling C++ from GNU COBOL
Date: Wed, 5 Nov 2014 11:24:51 -0800

Is it possible to call C++ routines (declared of course as extern "C") from GNU 
COBOL?  Do we need to use the version that emits C++, or can we use the version 
that emits C?

Context: I'm trying to evaluate a possible migration to GNU COBOL from an 
expensive proprietary COBOL compiler (currently running Linux, RedHat 4.1.2).  
Many of our existing COBOL programs rely on C++ routines for various things, 
especially for parsing XML.  I really don't want to have to rewrite all that 
stuff in some other language.

What concerns me most is the initialization of static objects.  For example, 
std::cout is a statically allocated instance of an ostream.  It needs to be 
initialized before use (to connect it to standard output).

If the main program is in C++, the C++ compiler can give it special treatment 
to ensure that static objects are initialized before control enters main().  If 
the main program is in some other language, we still need the same kind of 
magic, or else static objects won't get initialized.

Our current compiler provides this magic if you feed it the right compile 
option.  I don't see a similar option for GNU COBOL.

So far I've been playing with GNU COBOL 1.1, compiled from source.  I tried a 
Hello World program that called a little C++ program, but it didn't get past 
the link because it couldn't find the library for std::cout.  I can probably 
find a way to make the link work, but if I do, I suspect that std::cout won't 

I understand that there is a GNU COBOL CPP from Sergey that emits C++ instead 
of C.  In that case we could presumably call C++ routines as we do today and 
any static objects would be healthy.

However I get the impression that the CPP version is a recent development and 
may still be bleeding-edge.  Ours is a big corporate shop; bleeding edges make 
people nervous.

    * Is there a way to call C++ safely from GNU COBOL 1.1, or do we have to 
use the CPP version?

    * Is the CPP version considered production-ready?  Is anyone using it 
successfully in a large-scale production environment?

Scott McKellar

reply via email to

[Prev in Thread] Current Thread [Next in Thread]