× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Thanks for the advice Dennis. Here's the stdlib part:

#if defined(__STDC_WANT_DEC_FP__) && \
(__OS400_TGTVRM__ >= 610) && defined(__IBM_DFP__)
#if defined(__LLP64_IFC__)
#pragma datamodel(LLP64)
#endif

_Decimal32 strtod32 ( const char *, char ** );
_Decimal64 strtod64 ( const char *, char ** );
_Decimal128 strtod128 ( const char *, char ** );

... so question is why the first and/or third one is not in effect.
I'll scrounge around some more.



2011/7/14 Dennis Lovelady <iseries@xxxxxxxxxxxx>:
Unfortunately I have no 6.1/7.1 system on which to try this.

Having said that, when the compiler complains that some prototype is not
found, but you find that same proto in a #include file, then one of two
things is happing:

The #include file is not being included (due to compiler directives #if,
#else) or (more likely) the section of the #include file that contains your
proto is not being included, due to compiler directives.

I would have a closer look at stdlib.h and see what flags are involved in
the omission of that proto.

Dennis Lovelady
http://www.linkedin.com/in/dennislovelady
--
"An autobiography usually reveals nothing bad about its writer except his
memory."
       -- Franklin P. Jones


I've used the 6.1 support for Decimal Floating Point here and there a
year or so but I haven't had any problems until I tried using the
strtod functions today.
When I try to create a C module I get a warning that there's no
prototype for strtod64 even though stdlib.h is included and the parms
are correct. I've also grepped that the prototype is in stdlib:

grep strtod64 /qsys.lib/qsysinc.lib/h.file/stdlib.MBR
    _Decimal64  strtod64  ( const char *, char ** );

Basically, I've reduced and reduced my code until it's on the level of
the example in the manual but it still does not work. So I have this:

#include <stdlib.h>
#include <stdio.h>

/* stuff         */
char *dfpstring = "3.1415926This stopped it";
      char *stopstring;
              _Decimal64 dfp;

dfp = strtod64(dfpstring, &stopstring);
printf(" strtod = %Df\n", dfp); /* produces rubbish as the function is
not found */

I'm not using any particular compiler options, I've tried using both
ixlc -c and CRTCMOD as well as strtod128. Anyone have any idea what's
going on?

Best wishes,
Erik
--
This is the C programming iSeries / AS400 (C400-L) mailing list
To post a message email: C400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.


--
This is the C programming iSeries / AS400 (C400-L) mailing list
To post a message email: C400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.