Jon,

Thanks... of course my RPGOPTS have allowextra=yes. I rarely ever use/define all of the JSON elements or objects. I incorrectly assumed that meant allowing objects without a matching structure.

I'm trying to find what you're referring to below... I found this article in IT Jungle: https://www.itjungle.com/2021/04/12/guru-web-services-data-into-and-data-gen-part-2/

I can give it a try... but I'm behind the 8-ball now. I specifically told this vendor to limit the size to 50 (orders) per JSON document. The "offshore resources" they are using simply ignored that requirement (among others).

Very frustrating.

Greg

-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Jon Paris
Sent: Thursday, August 19, 2021 4:52 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: Data-Into using YAJLINTO question

It should blow up but since you have not shown your RPGOPTS I can only assume that you specified allowextra=yes with the result that RPG will just ignore the extras.

If you really don't know how many you will receive (or the max is too big for an RPG array) then you should use the %Handler option which will eat the data in pieces and there will be no size limit.

Check out https://authory.com/JonParisAndSusanGantner <https://authory.com/JonParisAndSusanGantner> and look for the JSON section - there are examples there and in the XML-INTO articles on using %Handler - it is really quite easy.

Prepare to be deluged by "why don't you use SQL" options - in this case because you have a very simple document it would be quite easy - but DATA-INTO is probably faster and usually (to my mind) easier to understand and therefore more maintainable,


Jon Paris

On Aug 19, 2021, at 2:38 PM, Greg Wilburn <gwilburn@xxxxxxxxxxxxxxxxxxxxxxx> wrote:

So I have some code that looks like this... my JSON order DS contains 100 elements.

dcl-c YAJLOPTS const ('{"document_name": "order", "value_null": "", +
"number_prefix": "YAJL_" }');

dcl-ds order qualified dim(100);
id varchar(10) inz('');
recordtype varchar(10) inz('');
external_id varchar(8) inz('');
name varchar(40) inz('');
........ more elements

clear order;
monitor;
Data-Into order %data(inStmf:RPGOPTS) %parser('YAJLINTO':YAJLOPTS);
on-error;
// Get Message Text
RcvPgmMsg( Error
: %len(Error)
: 'RCVM0200'
: '*'
: 0
: '*ESCAPE'
: ' '
: 0
: '*SAME'
: QUSEC);

ErrorMsg = %subst(Error.Message:Error.rcvm0200.qmhldrtn00 + 1);
RptLine(ErrorMsg);
status = -1;
return status;
endmon;


What happens when the JSON document contains 100, 200, or more? I guess I assumed there would be an error I could retrieve.

Any ideas??

TIA,
Greg
[Logo]<https://www.totalbizfulfillment.com/> Greg Wilburn
Director of IT
301.895.3792 ext. 1231
301.895.3895 direct
gwilburn@xxxxxxxxxxxxxxxxxxxxxxx<mailto:gwilburn@xxxxxxxxxxxxxxxxxxxxxxx>
1 Corporate Dr
Grantsville, MD 21536
www.totalbizfulfillment.com<http://www.totalbizfulfillment.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


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.