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



Do I understand that it is SATSSData_GetData that repeats? In other words you effectively want a DIM on that? If not - where is the repeat?

If this is the repeat then something like this is needed - it will handle 99 elements at a time - adjust as required..

Dcl-Pr HandleBooking Int(10);
commArea Int(10);
booking LikeDS(SATSSData_GetData) Dim(99) Const; // Handle 99 at a time
numElements Int(10) Value; // Actuall number passed this call - 99 or 1 -99 on last call
End-Pr;


Dcl-S count Int(10) Inz; // Will contain total elements processed on completion

DATA-INTO %Handler( HandleBooking: count )
%DATA( JSON_Input : 'path=booking/SATSSData_GetData case=any' ); // Use YAJLINTO option to name outer element as "booking"

// Actual Handler procedure

Dcl-Proc HandleCompany;

Dcl-Pi *N Int(10);
count Int(10);
booking LikeDS(SATSSData_GetData) Dim(99) Const; // Handle 99 at a time
numElements Int(10) Value;
End-Pi;

Dcl-S i Int(10);

for i = 1 to numElements;
// Do your processing
end-for;

// add current count to total in Comm Area and display current count
count += numElements;
return 0;

End-Proc;

P.S. You said INZ on the DS - you don't need it on the individual fields. Also Inz(*Blanks) is normally a bad idea for varchar fields. inz or Int('') is better as you'll get a null length pif there is no data. But in this case Inz won't help anyway 'cos RPG will initialize the storage. Because of this you may need to add counts to any optional elements in order to be sure if there is a value or not.

On Dec 10, 2020, at 6:49 PM, Don Brown via MIDRANGE-L <midrange-l@xxxxxxxxxxxxxxxxxx> wrote:

Thanks Jon,

Here is the data structure.

In testing I did have allowextra=yes but even with this if the count was
the maximum array size I could consider this an error and more records did
exist.

What I am trying to do is cater for a situation where I get more records
than what I have allowed in my array size - how do I process the json in
multiple passes ?

So booking_ref_num is unique.

dcl-ds SATSSData_GetData qualified template inz;
booking_ref_num varchar(30) inz(*blanks);
journey_id zoned(9) inz(*zeros );
device_type varchar(20) inz(*blanks);
my_sa_gov_username varchar(100) inz(*blanks);
vehicle_plate varchar(10) inz(*blanks);
current_journey_status varchar(20) inz(*blanks);
start_journey_calculated_datetime varchar(25) inz(*blanks);
end_journey_calculated_datetime varchar(25) inz(*blanks);
full_journey_offline varchar(10) inz(*blanks);
satss_subsidy_from_card varchar(25) inz(*blanks);
payment_total_fare_in_cents varchar(15) inz(*blanks);
payment_subsidy_applied_cents varchar(15) inz(*blanks);
payment_passenger_to_pay_in_cents varchar(15) inz(*blanks);
payment_levy_cents varchar(15) inz(*blanks);
trumps_driver_id varchar(10) inz(*blanks);
location_start_lookup varchar(20) inz(*blanks);
location_end_lookup varchar(20) inz(*blanks);
created_on_utc varchar(25) inz(*blanks);
end-ds;






Don Brown
Director

MSD Information Technology
t: 07 3368 7888
m: 0408 751 644
e: dbrown@xxxxxxxxxx
www.msd.net.au



From: "Jon Paris" <jon.paris@xxxxxxxxxxxxxx>
To: "Midrange Systems Technical Discussion"
<midrange-l@xxxxxxxxxxxxxxxxxx>
Date: 11/12/2020 09:37 AM
Subject: Re: DATA-INTO where number of records not known
Sent by: "MIDRANGE-L" <midrange-l-bounces@xxxxxxxxxxxxxxxxxx>



Multiple options.

I'm guessing that %Handler doesn't work because the repeating element is
not at the top level? In that case you can use the path= option to drill
down to the repeating level and use %Handler that way. If you need the
earlier non repeating stuff then you can do that with a separate pass of
DATA-INTO.

I could offer other suggestions if you could give us a hint or two as to
what the json looks like. It really depends on the document and
whereabouts the unknown number of repeats occurs.

To directly answer your question though - no - the count will not be set
correctly. DATA-INTO would error out at the point that the limit was
exceeded, unless you specified allowextra=yes in which case it should
complete but the count would be set to the maximum array size. Easy
enough to test this ... just code an example with a tiny number of
elements.


On Dec 10, 2020, at 5:01 PM, Don Brown via MIDRANGE-L
<midrange-l@xxxxxxxxxxxxxxxxxx> wrote:

(Sorry, not sure if this is should be the RPG list only or the Midrange
list)

We are using data-into with YAJLINTO to process a json file we retrieve
from an external site using a web service.

The web service does not provide any options as to controlling the
number
of records to be returned.

The json returned does not have an element for the number of records
provided.

If I put a count at the highest level will this be set correctly if the
number of records retrieved exceeds the array size ? And if yes how do I

then process the records past that point ?

I don't think the %handler option helps - well the way I read the doco
it
wont.

How do I either check how many records have been returned or process a
json string that exceeds the number of elements in my receiving array ?

Thanks for all suggestions

Don


--
This email has been scanned for computer viruses. Although MSD has taken
reasonable precautions to ensure no viruses are present in this email, MSD
cannot accept responsibility for any loss or damage arising from the use
of this email or attachments..
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.midrange.com_mailman_listinfo_midrange-2Dl&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=2eajd41jA4FAw0IvkFrLQG74b6r6iPaVlK8LGIKzG_o&e=

or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
https://urldefense.proofpoint.com/v2/url?u=https-3A__archive.midrange.com_midrange-2Dl&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=aNJPcBvBsLWKkSkOyzncWw2kcD3Ua0aj0ZFslF2sF8I&e=
.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.

Help support
https://urldefense.proofpoint.com/v2/url?u=http-3A__midrange.com&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=xtH11dbXk4ltv6mZLVxeGEZhta_ZlYeOvSmK0Dz3mkc&e=
by shopping at
https://urldefense.proofpoint.com/v2/url?u=http-3A__amazon.com&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=HkBzR-8G0wwNFqlx_COYc2NOOoEl-evtL2eSYKTSN_c&e=
with our affiliate link:
https://urldefense.proofpoint.com/v2/url?u=https-3A__amazon.midrange.com&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=MGIKHujY1odQH3PQ975O0l41AjV3I78CwTU8cC6Fdpo&e=


--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.midrange.com_mailman_listinfo_midrange-2Dl&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=2eajd41jA4FAw0IvkFrLQG74b6r6iPaVlK8LGIKzG_o&e=

or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
https://urldefense.proofpoint.com/v2/url?u=https-3A__archive.midrange.com_midrange-2Dl&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=aNJPcBvBsLWKkSkOyzncWw2kcD3Ua0aj0ZFslF2sF8I&e=
.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.

Help support
https://urldefense.proofpoint.com/v2/url?u=http-3A__midrange.com&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=xtH11dbXk4ltv6mZLVxeGEZhta_ZlYeOvSmK0Dz3mkc&e=
by shopping at
https://urldefense.proofpoint.com/v2/url?u=http-3A__amazon.com&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=HkBzR-8G0wwNFqlx_COYc2NOOoEl-evtL2eSYKTSN_c&e=
with our affiliate link:
https://urldefense.proofpoint.com/v2/url?u=https-3A__amazon.midrange.com&d=DwICAg&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=Kys-lxRCMpPr7up01Pp1FRjOe49ne6imWwi1b-ue8yQ&m=l-c2aASNp0flGGbod6DDZ6_cuRsgvGtfX8lMGl7Fznk&s=MGIKHujY1odQH3PQ975O0l41AjV3I78CwTU8cC6Fdpo&e=





--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-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 ...

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.