|
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.
From: Erik Olsson <erik.eo.olsson@xxxxxxxxx>expression
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
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.
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>expression
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
--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 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 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.