Re: Problem 4GL program
Posted in 1999
Topics: Connectivity: ESQL/C, 4GL & Embedded SQL
What are mangled cursor names ? (or where can I find information about it) Could you also tell me what goes into the global string table. TIA Doris ---------- From: Jonathan Leffler To: informix-list@iiug.org Subject: Re: Problem 4GL program Date: Friday 19 March 1999 7:19 Willaert Doris wrote: > I you talk about cursor names, does this mean that it could help > to choose shorter names for my cursors ? I have cursor names with > a length between 10 en 20. Not unless you suppress the mangled cursor names. The mangled names are always 18 characters long, the maximum permitted length. >Jonathan Leffler wrote: > Willaert Doris wrote: > > I am transfering my 4GL programs from version 4.13 to version > > 7.20.UD6. When I compile a program and try to run it with the > > fglgo command I get the following error : > > > > Program stopped at "sf_druk.4gl", line number 0. > > 4GL run-time error number -4453. > > The size of the global string table has exceeded the limit of 65535. > > > > What should I do to resolve this problem. How can I see how much > > this program exceeds the global string table. > > Given that the program was running under 4.13 and isn't under 7.20, > the chances are that the original program was very close to the limit, > and the cursor name mangling stuff is throwing it over the limit. > Basically, you'll have to eliminate (or reduce the size of) some > string constants in your program. Maybe there's a report which could > be factored out into a separate executable? Or maybe you can wait > for 7.30 (due out late Q2) which will raise the limit to somewhere in > the gigabyte range (1 GB I think). > > If you don't know what the cursor name mangling stuff is, be grateful. > I spent the entire afternoon writing a (large) email discussing how > we might be able to get around it without requiring you to modify your > source code. And there were two sections which I really had not done > enough on. You could try compiling with -globcurs in the FGLPCFLAGS > environment variable, but I'm not confident that does the job; the > code still needs an extra (albeit unmangle) version of your cursor > name, resulting in more GSS being used in 7.20 than in 4.13. -- Jonathan Leffler (jleffler@informix.com, jleffler@earthlink.net) Guardian of DBD::Informix v0.60 -- see http://www.perl.com/CPAN #include <disclaimer.h>
Willaert Doris wrote: > What are mangled cursor names ? (or where can I find information > about it) > Could you also tell me what goes into the global string table. A pain in the b**t. Bug B31661 is one of the principal ones for this; there are a number of others. Mangled cursor names should be covered in the release notes and/or the documentation. Amongst other things, cursor and statement names. Also string literals, I believe. Probably some other things. When version 7.3 of Classic 4GL is released (late 2Q99), it will have the limit on the GSS (global string space aka global string table) raised to about 1 GB -- that should do for the next 6 months or so until applications grow too big again. Dynamic 4GL doesn't have this problem at all -- no GSS. > Doris > ---------- > From: Jonathan Leffler > To: informix-list@iiug.org > Subject: Re: Problem 4GL program > Date: Friday 19 March 1999 7:19 > > Willaert Doris wrote: > > I you talk about cursor names, does this mean that it could help > > to choose shorter names for my cursors ? I have cursor names with > > a length between 10 en 20. > > Not unless you suppress the mangled cursor names. The mangled names > are always 18 characters long, the maximum permitted length. > > >Jonathan Leffler wrote: > > Willaert Doris wrote: > > > I am transfering my 4GL programs from version 4.13 to version > > > 7.20.UD6. When I compile a program and try to run it with the > > > fglgo command I get the following error : > > > > > > Program stopped at "sf_druk.4gl", line number 0. > > > 4GL run-time error number -4453. > > > The size of the global string table has exceeded the limit of 65535. > > > > > > What should I do to resolve this problem. How can I see how much > > > this program exceeds the global string table. > > > > Given that the program was running under 4.13 and isn't under 7.20, > > the chances are that the original program was very close to the limit, > > and the cursor name mangling stuff is throwing it over the limit. > > Basically, you'll have to eliminate (or reduce the size of) some > > string constants in your program. Maybe there's a report which could > > be factored out into a separate executable? Or maybe you can wait > > for 7.30 (due out late Q2) which will raise the limit to somewhere in > > the gigabyte range (1 GB I think). > > > > If you don't know what the cursor name mangling stuff is, be grateful. > > I spent the entire afternoon writing a (large) email discussing how > > we might be able to get around it without requiring you to modify your > > source code. And there were two sections which I really had not done > > enough on. You could try compiling with -globcurs in the FGLPCFLAGS > > environment variable, but I'm not confident that does the job; the > > code still needs an extra (albeit unmangle) version of your cursor > > name, resulting in more GSS being used in 7.20 than in 4.13. > > -- > Jonathan Leffler (jleffler@informix.com, jleffler@earthlink.net) > Guardian of DBD::Informix v0.60 -- see http://www.perl.com/CPAN > #include <disclaimer.h> -- Jonathan Leffler (jleffler@informix.com, jleffler@earthlink.net) Guardian of DBD::Informix v0.60 -- see http://www.perl.com/CPAN #include <disclaimer.h>