> A reinterpret_cast will only result in another pointer

That's why I de-referenced it, *reinterpret_cast. I do it all the time.
Short foo = *reinterpret_cast<short *>(some_char_array) results in loading
the first two bytes of the array as a 16-bit integer.

> Do you know the size and scaling factor of the packed decimal values at
compile time?

No. It will make __EDMK() a somewhat challenging exercise. I am about to
start on it.

Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of David W Noon
Sent: Wednesday, April 26, 2017 10:28 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Can XLC printf() take "%D(*,*)"?

On Wed, 26 Apr 2017 10:01:06 -0700, Charles Mills (charl...@mcn.org) wrote
about "Re: Can XLC printf() take "%D(*,*)"?" (in
<0dc501d2beae$b2613e30$1723ba90$@mcn.org>):

> I don't seem to be able to declare a D variable in C++.
> 
> I am coding the parameter to printf() as
> 
> *reinterpret_cast<D(31,0)*>(value)

A reinterpret_cast will only result in another pointer, as all it does is
change the notional type but keep the bit pattern the same. An array is
always a pointer in C/C++, so a char[] is always reduced to its address.

> where value is declared as char[1] and contains (variable length, 
> passed to me as a parameter) the fixed point decimal data. The 
> compiler is giving me
> 
> line 1047.39: CCN5130 (S) "D" is not declared.
> 
> (And yes, I #include <decimal.h> without error.)
> 
> I am starting to think this approach is hopeless (pending what if 
> anything I hear from Toronto).

I think you'll need to use "C thinking" rather than "C++ thinking".

My suggestion of using a struct is the best I have come up with so far.

> I am currently using an interpretive loop to format the decimal data. 
> I am going to look into using __EDMK() instead. (And yes, the volume, 
> potentially millions of iterations per day, justifies the effort.)

Do you know the size and scaling factor of the packed decimal values at
compile time? If so, the __EDMK() call could be faster than printf(), as
those format interpreters [printf(), sprintf(), etc.] often run like treacle
in winter.

----------------------------------------------------------------------
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