|
Thanks, Jon.
Well, by now I found these editing function and got the following:
decimal (15,0) A = 125678D ;
char szTemp[256], szOutput[256], EditMask[256], ZeroFill[1] ;
int n, m, MaskLen, RcvLen ;
Qus_EC_t error_code ;
n = digitsof(A) ;
m = precisionof(A) ;
QECCVTEC(EditMask, &MaskLen, &RcvLen, ZeroFill, "P", " ", n, m,
&error_code) ;
QECEDT(szTemp, RcvLen, &A, "*PACKED ", n, EditMask, MaskLen, "0",
&error_code) ;
memcpy(szOutput, szTemp, RcvLen) ;
szOutput[RcvLen] = 0x00 ;
printf("After conversion A: !%s!\n", szOutput) ;
It produces the following:
After conversion A: ! 125678!
What I expected is a number padded with zeros in the left.
I have to check if the receiver program will accept the changed input...
Is it what you meant in your advise?
You asked what for do I need it.
I have a big set of API-s on iSeries that are called via RPC from PC
environment. The input and outputs are both data buffers that are
effectively packed structures - that is data fields without any
separators with known widths. This is as infrastructure and I cannot
change it. Packed numbers are always returned as char arrays - and it
is also part of the infrastructure....
On Fri, Jan 9, 2015 at 5:47 PM, Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:
It would help to know why you are trying to do this (editing the number for example?).--
Have you looked at the various editing and conversion capabilities available in the surfaced MI functions (https://publib.boulder.ibm.com/iseries/v5r1/ic2924/books/c0924180.pdf) as well as the C/C++ library extensions? (http://www-01.ibm.com/support/knowledgecenter/#!/ssw_ibm_i_72/rtref/rtrefmain.htm).
Everything you could need is there.
Jon Paris
www.partner400.com
www.SystemiDeveloper.com
On Jan 9, 2015, at 4:00 AM, Jevgeni Astanovski <jevgeniast@xxxxxxxxx> 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.
--
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (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 Bare Metal Programming IBM i (AS/400 and iSeries) (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 Bare Metal Programming IBM i (AS/400 and iSeries) (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.