[Top][All Lists]

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

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

From: Patrick
Subject: Re: [open-cobol-list] Calling C++ from GNU COBOL
Date: Wed, 05 Nov 2014 15:03:11 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0

Hi Scott

I don't know enough about C++ to give you a solid answer but perhaps you could try calling Cobol from a C++ main and then having the Cobol part call back into C++.

You will need to include libcob.h and call cob_init(0, 0) (or with int argc, char *argv[] )

Hope that helps-Patrick

On 14-11-05 02:24 PM, Scott McKellar wrote:
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

open-cobol-list mailing list

reply via email to

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