Maybe you could show your code.  MP and DP can be tricky, but when you
CVDG the high D-word, you'd then multiply it by
9,223,372,036,854,775,808, then by 2 (or something equivalent).  Add
to what you CVDG from the low D-word.

Of course, this will overflow if the value is too large for 31 digits,
and may get PD multiply exceptions for much less.  You may have to do
some weaseling to make it work.  Brute force would be multiplying the
converted high D-word by 2 64 times.

sas

On Mon, Aug 7, 2017 at 12:51 PM, Paul Gilmartin
<0000000433f07816-dmarc-requ...@listserv.ua.edu> wrote:
> On Mon, 7 Aug 2017 11:17:05 -0500, Todd Arnold wrote:
>
>>I got this answer from someone else at IBM, who is an expert in the vector 
>>instructions:
>>"Currently to convert a 128-bit singed/unsigned integer in a vector register 
>>to a packed decimal value you must store the value to memory and use the 
>>standard integer conversion instruction CVBG to convert 64-bits at a time.  
>>...
>>
> Does "someone else" suggest working right-to-left or left-to-right?  And 
> there's
> a trick needed to cross the boundary since 2**64 is not a power of 10.  Would 
> I
> find an example if I RTFM PoOps?
>
>>... A full 128-bit value will not fit into a 31-digit decimal number."
>>
> ... a tautology, since
> 2**127: 170141183460469231731687303715884105728
> ... is greater than
> 10**31:        10000000000000000000000000000000
>
> -- gil
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN



-- 
sas

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to