Re: Converting packed decimal to a char array
Jevgeni Astanovski <[email protected]>
| Newsgroups | gmane.comp.lang.as400.c |
|---|---|
| Message-ID | <CAJuVQr28ArrR-WhP_Gtb9ABPACdvNH3G0_R1pKp8y8cM8dWhnA@mail.gmail.com> |
Big-big thanks to Barbara and Tim.
The result is:
void printdec(void *A, int Len, int Prec)
{
decimal(63,0) fulldec ;
int offset, bytes ;
bytes = (Len / 2) + 1;
offset = 32 - bytes;
fulldec = 0;
memcpy(((char *) &fulldec) + offset, A, bytes);
printf("%0*.*D(63,*)\n", (Len + 1), Prec, Prec, fulldec) ;
}
is exactly what I've been looking for.
Jevgeni.
On Tue, Mar 17, 2015 at 3:58 AM, Barbara Morris <[email protected]> wrote:
> On 2015-03-16 12:46, Barbara Morris wrote:
>
> Oops, it should just be fulldec, not s.fulldec. (I had put fulldec into a
> struct with a char following so I could easily check for storage overrun in
> the debugger.)
>
> void printdec(void *A, int Len, int Prec)
> {
> decimal(63,0) fulldec;
> int offset;
> int bytes = (Len / 2) + 1;
> // Move packed number to a 63,0 variable.
> offset=32 - bytes;
> fulldec=0;
> memcpy(((char *) &fulldec)+offset, A, bytes);
> // Now print it.
> printf("%D(63,*)\n", Prec, fulldec) ;
> }
>
>
> --
> Barbara
>
> --
> 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.