Re: Converting packed decimal to a char array
Jevgeni Astanovski <[email protected]>
| Newsgroups | gmane.comp.lang.as400.c |
|---|---|
| Message-ID | <CAJuVQr0_nbS+1GWSPzBfgNVy_eBha2wjjAx74o3bnzheANij1A@mail.gmail.com> |
Tim,
length and precision are not a problem. The question is how to pass
this decimal value to the function.
The only way that I can imagine is as a void pointer. But you cannot
apply indirection to void pointers AFAIK.
The below program does not compile:
void printdec(void *A, int Len, int Prec) ;
int main ( )
{
decimal (15,9) A ;
A = 17.5D ;
printdec(&A, digitsof(A), precisinof(A)) ;
return(0) ;
}
void printdec(void *A, int Len, int Prec)
{
printf("%D(*,*)\n", Len, Prec, *A) ;
}
On Fri, Jan 9, 2015 at 5:25 PM, Tim Bronski <[email protected]> wrote:
> Well your function needs to know the length and decimal places. So if you
> know those and can pass them to the function then just build the format
> string before using it in sprintf.
>
> On 1/9/2015 10:00 AM, Jevgeni Astanovski wrote:
>>
>> Hi all,
>>
>> spend a lot of time and feeling like I run into a dead cycle with a
>> problem, that looks trivial.
>>
>> I have packed decimals in my C programs that I need to convert to a
>> char array, representing the number (not zero terminated string).
>>
>> For example:
>>
>> decimal (15,9) A ;
>> char szTemp[32], sField[16] ;
>>
>> sprintf(szTemp, "%016D(15,9)", A) ;
>> memcpy(sField, szTemp, 16) ;
>>
>> What I want to achieve is get a function, that receives A and returns
>> sField.
>> Of course it must support any types of decimal - not only decimal
>> (15,9) but others like decimal(11,7), decimal (15,0), decimal (5,0)
>> and so on. And, of course, decimal can be positive or negative...
>>
>>
>> Any ideas?
>>
>> Jevgeni.
>
>
> --
> Need secure FTP? Download your native sFTP solution here:
> www.arpeggiosoftware.com
> --
> This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L)
> mailing list
> To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/c400-l
> or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/c400-l.
>
--
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.