|
On Feb 14, 2024, at 11:44 AM, Alan Campin <alan0307d@xxxxxxxxx> wrote:
Right but the question that I think was initially discussed was what
happens when you have more than 32767 records on a read. SQL loads 32767
and returns. You check and determine you have loaded 32767 records and you
are not at EOF so you loop back to load more records. How will the *Auto
handle another read? Seems like it has two choices. Either extend the array
for another x number of records or load from the beginning. Based on the
statement from Chris above, I am betting it will extend the array. It will
keep extending the array until you do %Elem(Array_Name). = 0. Correct?
On Wed, Feb 14, 2024 at 8:25 AM Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:
Correct - but it appears that SQL does this for you if you are using it to--
populate the array.
Jon P.
On Feb 14, 2024, at 8:39 AM, McNierney_Chris via RPG400-L <rpg400-l@xxxxxxxxxxxxxxxxxx> wrote:
Campin <alan0307d@xxxxxxxxx>
To initialize an *Auto array, set the number of elements to zero:
%Elem(Auto_Array_Name) = 0;
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> on behalf of Alan
Date: Monday, February 12, 2024 at 3:13 PMSome
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: Loading Variable Array From SQL Caveat
Yes, 32767 is the maximum number of rows that can be loaded at a time.
genius at IBM used a Small Integer for the counter instead of a integeryou
years ago and we are stuck with it.
You always have to write logic to check for rows over 32767 if you are
loading an array. If you have 32767 and don't have an End Of File then
have more records to load. What I don't know is how *Auto handles that.If
you try to load the array again will it clear the array and start over orhttps://lists.midrange.com/mailman/listinfo/rpg400-l>
add to it. Not an issues with a manually allocated array.
On Mon, Feb 12, 2024 at 12:02 PM Sam_L <lennon_s_j@xxxxxxxxxxx> wrote:
I found that while loading a variable length array with SQL you may not
load all the rows you expect...
I wanted to load 42,000+ rows using a technique like this:
dcl-ds csz_a dim(*auto : 50000) qualified;
exec sql fetch from csz_cur for 42735 rows into :csz_a;
But I got only 32767 rows loaded.
And I couldn't find a way to do a loop with a fetch like this:
exec sql fetch from csz_cur for 42735 rows into :csz_a(inx);
because SQL won't accept it.
I ended up fetching one record at a time into a single element array and
adding that to the full array. It was still blazing fast and the program
is rarely executed anyway.
Maximum rows that can be fetched is probably documented somewhere in the
SQL manual though I didn't think to look. And probably most people won't
want to load this many rows--mine is maybe a unique use case and I
wanted to experiment.
--
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<
https://archive.midrange.com/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<
related
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
https://lists.midrange.com/mailman/listinfo/rpg400-l>questions.--
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@xxxxxxxxxxxxxxxxxxhttps://archive.midrange.com/rpg400-l>.
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l<
related questions.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
--related questions.
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
--
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.
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.
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.