Hi Erik,

If this problem is holding you up in any way that the workaround is
insufficient to address then I would suggest opening an issue with IBM. I
have already informed the compiler team of the issue, so if you don't have
an immediate or urgent need then you don't need to worry about reporting
it.

Aaron Albertson


c400-l-bounces+albertaa=us.ibm.com@xxxxxxxxxxxx wrote on 05/10/2011
02:05:24 PM:

From: Erik Olsson <erik.eo.olsson@xxxxxxxxx>
To: C programming iSeries / AS400 <c400-l@xxxxxxxxxxxx>
Date: 05/10/2011 02:08 PM
Subject: Re: [C400-L] digitsof in a declaration
Sent by: c400-l-bounces+albertaa=us.ibm.com@xxxxxxxxxxxx

Thanks (again) Aaron. Should I bother reporting it?

Mark. Sorry if I came across as under researched but I think the
code said both C (in C++ you use bcd.h) and decimal.h.

Thanks,
Erik


On 10 maj 2011, at 17:50, Aaron Albertson <albertaa@xxxxxxxxxx> wrote:

Hi all,

Mark - Erik's code _does_ include decimal.h.

Erik - This appears to be a bug in the C compiler.

These declarations work:

char periodString[digitsof(var)];
char periodString[10 + 1];

but this does not:

char periodString[digitsof(var) + 1];

It appears to be a problem with using the digitsof macro in an
expression
on the array declaration.

As a workaround you could just allocate the storage:

char *periodString = (char *)malloc(digitsof(myrec.DECFIELD) + 1);

Thanks,

Aaron Albertson

c400-l-bounces+albertaa=us.ibm.com@xxxxxxxxxxxx wrote on 05/10/2011
10:06:25 AM:

From: "Mark S. Waterbury" <mark.s.waterbury@xxxxxxxxxxxxx>
To: C programming iSeries / AS400 <c400-l@xxxxxxxxxxxx>
Date: 05/10/2011 10:10 AM
Subject: Re: [C400-L] digitsof in a declaration
Sent by: c400-l-bounces+albertaa=us.ibm.com@xxxxxxxxxxxx

Hi, again, Erik:

Further searching of the InfoCenterI found this:

To use the decimal digitsof, and precisionof macros in your code,
you must specify

#include <decimal.h>

in your ILE C source.

(Did you even _try_ to search for an answer, e.g. in the InfoCenter,
before asking on the C/400 list?)

HTH,

Mark S. Waterbury

On 5/10/2011 10:46 AM, Erik Olsson wrote:
Anyone understand why I can't use the digitsof keyword in a
declaration? It's based on a decimal field in a struct that is known
at compile time so I don't see the problem.

#include<decimal.h>
#include</source/yada/tabledefs/myfile.h>

/* ... */

FLXDXYZ_MYFILE_MYFILE_both_t myrec;

char periodstring[digitsof(myrec.DECFIELD) + 1];

I get this: "Integral constant expression with a value greater than
zero is required"


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.

--
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 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-2019 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].