C-ISAM
Posted in 1999
Topics: Installation, Setup & Upgrades, Connectivity: ESQL/C, 4GL & Embedded SQL
My company has an old legacy app that runs on SCO 3.2.4.2 and an extremely old version of Informix SE. Files are written to via ISAM. The powers that be want to just recompile on a newer version of SCO and Informix SE and C-ISAM to make it Y2K. Here's the problem. The developer called and said the code is calling a function rtoday() which apparently was in library libsql.a on the old system. I'm sure there are a few other similar r*() function in the code. The libsql.a isn't on the new system - and I know on another system I have there is a libixsql.a - but apparently it doesn't work. Could the original developer have leveraged the ESQL libraries when developing this application? Or am I missing a library from the Informix-SE or C-ISAM install? Thanks Joe jlk62@aol.com
JLK62 wrote: > My company has an old legacy app that runs on SCO 3.2.4.2 and an > extremely old version of Informix SE. Files are written to via ISAM. BY definition. > The powers that be want to just recompile on a newer version of SCO > and Informix SE and C-ISAM to make it Y2K. Here's the problem. The > developer called and said the code is calling a function rtoday() > which apparently was in library libsql.a on the old system. It should be in the new code, too. At least, for ESQl/C programs; I'm not so sure about C-ISAM; the 5.00 manual doesn't mention it, and since C-ISAM has no concept of a DATE type, that's reasonable. > I'm sure there are a few other similar r*() function in the code. > The libsql.a isn't on the new system - and I know on another system > I have there is a libixsql.a - but apparently it doesn't work. Hmmm. Sounds like you're not using the esql script to do the linking. DON'T DO IT! Always, but always, but absolutely always, even if it is excruciatingly painful, use the esql script to do the linking. If you want to see 'excruciatingly painful' at work, track down what the build process for DBD::Informix (a Perl module) does -- but it does use the esql script to do the linking. The library list has grown. There are somewhere in the region of 8 Informix libraries, plus an object file, that have to be listed in the correct order (possibly with duplicate entries if you're doing static links). Plus a variety of system libraries which changes routinely. > Could the original developer have leveraged the ESQL libraries > when developing this application? Or am I missing a library from > the Informix-SE or C-ISAM install? If your program is a pure C-ISAM program, it has no business being linked with libsql.a; the C-ISAM library is libisam.a (libisam.so?). No ifs, buts, or anything. Of course, the GLS version of C-ISAM should use -lgls and -lglx as well as (and after) -lisam, but no, the GLS libraries are bundled into the C-ISAm library. But your C-ISAM application should not be using -lsql and if it does, you will now need to add a whole bunch of other libraries to your link. Most of the ESQL/C libraries, in fact. In fact, you would probably need to use: esql -o isamprog *.o -lisam Expect the result to be huge. -- Jonathan Leffler (jleffler@informix.com, jleffler@earthlink.net) Guardian of DBD::Informix v0.60 -- see http://www.perl.com/CPAN #include <disclaimer.h>