× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi all,
Just a question about YAJL_copyBuf as I am not able to determine the
correct size of the buffer.
It seems like the buffer length remains set to the larger one, so when a
new copy is done of a shorter number of bytes it always copies the previous
amount of data, meaning the result data contains garbage at the end.
I made lots of tries (like using %len(%trim(xxx)) instead of %size or
getting a buffer pointer a then using the returned length) but I can't
make it working and I am running out of time.
That's the code:
dcl-s jsonData char(32000);
dcl-s wRetLen int(10:0) inz;
dcl-s CCSID int(10:0) inz(0); // 0=job CCSID, 1208=utf-8
clear jsonData;
clear wRetLen;
YAJL_genOpen( *off );
YAJL_beginObj();
YAJL_addBool('success' : stdOutput.success);
YAJL_addChar('errCode' : stdOutput.errCode);
YAJL_addChar('message' : stdOutput.message);
YAJL_addBool('missingData' : stdOutput.missingData);
// stdOutput.data is already a JSON object
YAJL_addPreformattedPtr(
'data'
: %addr(stdOutput.data: *DATA)
: %len(%trimr(stdOutput.data))
);
YAJL_endObj();
YAJL_copyBuf(CCSID
: %addr(jsonData)
: %size(jsonData)
: wRetLen);
YAJL_genClose();
response.body = %trim(jsonData);
response.status = HTTP_OK;

Thank you very much for any help.


Il giorno sab 9 mag 2020 alle ore 11:07 Maria Lucia Stoppa <
mlstoppa@xxxxxxxxx> ha scritto:

@Charles, you are right, but despite the many tries there are times, which
I couldn't focus, where using varchar doesn't work as expected; that's the
reason trim functions are present in the code.
But I'll try again.
Lucia

Il giorno sab 9 mag 2020 alle ore 00:41 Charles Wilt <
charles.wilt@xxxxxxxxx> ha scritto:

And hopefully, if stdOutput.data is built properly without trailing
blanks...

She can get rid of the %trimr()...

YAJL_addPreformattedPtr('data'
: %addr(stdOutput.data:*DATA)
: %len(stdOutput.data);

Charles


On Fri, May 8, 2020 at 2:08 PM Scott Klement <sk@xxxxxxxxxxxxxxxx> wrote:

Correct, this is what yajl_addPreformattedPtr() is meant for.

If I understand Maria's original post, though, the first parameter
should not be omitted because this is being added as a field named
'data' in an object. So the code would look something like this:

YAJL_beginObj();
YAJL_addBool('success' : stdOutput.success);
YAJL_addChar('errCode' : stdOutput.errCode);
YAJL_addChar('message' : stdOutput.message);
YAJL_addPreformattedPtr('data'
: %addr(stdOutput.data:*DATA)
: %len(%trimr(stdOutput.data));
YAJL_endObj();


On 5/8/2020 9:16 AM, Jon Paris wrote:
Looks like you would *Omit the first parameter then supply the pointer
to the reformatted string plus its length in the third parm - which
doesn't
show up in the prototype doc but is present in the actual proto.


--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com



--

Maria Lucia Stoppa
mlstoppa@xxxxxxxxx




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.