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



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 Campin <alan0307d@xxxxxxxxx>
Date: Monday, February 12, 2024 at 3:13 PM
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. Some
genius at IBM used a Small Integer for the counter instead of a integer
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 you
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 or
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://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<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<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<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 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.