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



Ok. now I understand your request a little bit more so you need to populate
an array data structure and return it as a result set? if that the case the
below example may help

1. Declare your array data structure for example like this
// Result Set Data Structure
// field definition should match field type of your database field on the
select
Dcl-Ds ResultsetDS Dim(32766) Qualified;
FIELD1Ds Char(5);
FIELD2DS Char(2);
Field3DS Char(50);
Field4DS Char(5);
Field5DS Zoned(5);
End-ds;

3. Declare a normal data structure to save your data before populating
array data structure

// field definition should match field type of your database field
on the select
Dcl-Ds QRYFIELD
FIELD1 Char(5);
FIELD2 Char(2);
FIELD3 Char(50);
FiIELD4 Char(5);
FIELD5 Zoned(5);
End-ds;

4. Declare the array data structure index
Dcl-s Recnum Zoned(5); // Record Num/Used as Index

2. Then you will need to read your data using a cursor and populate your
array data structure
// Declare your cursor
Exec Sql
Declare C0 Cursor For
Select Field1,FIELD2, FIELD3, FIELD4,FIELD5
From MyDatabase;

// Open the cursor
Exec Sql
Open C0;

// Fetch Records
Exec sql
Fetch C0 INTO :QRYFIELD;

// For each record read populate the array data structure
Dow Sqlcode = *Zeros;
// Populate array DS
RECNUM +=1;
ResultsetDS(Recnum).FIELD1Ds=Field1;
ResultsetDS(Recnum).FIELD2Ds=Field2;
ResultsetDS(Recnum).FIELD3Ds=Field3;
ResultsetDS(Recnum).FIELD4Ds=Field4;
ResultsetDS(Recnum).FIELD5Ds=Field5;

Clear QRYFIELD;
// Fetch Next Record
Exec sql
Fetch C0 INTO :QRYFIELD;

Enddo;

// Close the cursor
Exec Sql Close C0;

// Return the array data structure as result set
// this part is very important.
Exec Sql
Set Result Sets Array :ResultsetDS For: Recnum Rows;


Note: This is your external rpg procedure I hope you understand that you
should create an sql
store procedure to call the external rpg procedure. I hope this
help you and be aware that
this can be done creating a pure sql store procedure as Charles
said.


On Thu, Jul 6, 2017 at 9:25 AM, Charles Wilt <charles.wilt@xxxxxxxxx> wrote:

You're doing it wrong...

You shouldn't be reading with SQL into a DS that then gets returned as a
result set.

All you need to do is declare and open a cursor

exec SQL
declare C1 cursor for
Select fielda, fieldb, fieldc
From myTable;

exec SQL
open C1;

return;

By virtue of being left open, the cursor will be returned as the result
set.

Personally, I prefer to build such stored procedures directly in SQL rather
than RPG.

Charles




On Wed, Jul 5, 2017 at 6:09 PM, DFreinkel <dfreinkel@xxxxxxxxxxxxxxxxx>
wrote:

@Jose

I am building a data structure which is being returned as a result set in
a stored procedure.

Darryl Freinkel
iPad

On Jul 5, 2017, at 5:30 PM, CRPence <crpbottle@xxxxxxxxx> wrote:

On 05-Jul-2017 12:58 -0600, DFreinkel wrote:
I am reading data from a file into a data structure.

T_data ds qualified dim(100)
Fielda like(fielda)
Fieldb like(fieldb)
Fieldc like(fieldc)

Select fielda, fieldb, fieldc into :T_data
From myTable;

Compilers tells me SL0312 T_data is not defined or usable.

What am I doing wrong or how would I do this?

I do not want to read 1 record at a time.


As others noted, FETCH multiple rows. But if the data for the
result-set is known to be necessarily limited [e.g. 100x320], then the
data
can be returned as one row, so in effect, the above SELECT INTO could be
accomplished; the contiguous data is then /viewed/ by the program as
DIMensioned proportionally. A recursive query can easily enough
concatenate the originally expected-as multiple-row result-set as just
one
row.

--
Regards, Chuck

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

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD

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

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD

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

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD


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.