|
Jon,
Thanks... I was able to get it working (I think). Sorry... I should have
posted all of the code.
I had to add the DIM(10) keyword to the procedure interface. Simply
indicating LIKEDS did not make it a dimensional array (required for the SQL
Cursor).
MAIN PGM:
dcl-ds ship qualified dim(10);
id char(20);
end-ds;
//====================================
dcl-proc CheckShipIDs;
dcl-pi CheckShipIDs int(10);
inPID like(phpid#) const;
inPO like(phpo#) const;
ouShip likeds(ship) dim(10);
end-pi;
dcl-s maxrows uns(5) inz(%elem(ouShip));
dcl-s rc int(10);
dcl-s wkent# char(8);
rc = 0;
wkent# = %subst(inPID:1:8);
clear ouShip;
Exec Sql
Declare pscsr Cursor for
Select distinct(psidcd) from POSDQPS
exception join ADRESSAD on adent#=:wkent# and adaltk=:psidcd
where pspid#=:inPID and pspo#=:inPO;
Exec Sql Open pscsr;
Exec Sql Fetch Next from pscsr For :maxrows Rows into :ouShip;
if SqlStt = SqlNoRow;
return rc;
endif;
if SqlStt = SqlOK;
rc = 1;
endif;
return rc;
end-proc;
-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxxxxxxxx] On Behalf Of
Jon Paris
Sent: Monday, July 08, 2019 1:39 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: How best to pass a DS or DS Array
Without seeing your attempted c doing it is hard to guess what was wrong.
Maybe someone else who does what you were trying to do has an example they
can post - I don't have any I'm afraid.
Jon Paris
www.partner400.com
www.SystemiDeveloper.com
On Jul 8, 2019, at 8:27 AM, Greg Wilburn <gwilburn@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
is running an SQL statement to retrieve data from up to 20 rows. I was
Jon,
What you're missing (what I may have left out) is that I the procedure
having trouble defining things so it would compile.
the SQL statement populated that parameter. I tried quite a few things,
I was trying to define a third parameter - ouShip likeds(ship) - so that
but couldn't get it to compile.
not usable. Reason: The host structure is not a dimensioned array.
Error: SQL5011 Position 65 Host structure array OUSHIP not defined or
directly in the procedure (rather than passing it)... but I hated doing
I ended up just defining it in the main program and updating that
that.
would have been passed. It seems you're doing a bunch of work to no effect.
Greg
-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxxxxxxxx] On Behalf
Of Jon Paris
Sent: Friday, July 05, 2019 5:03 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: How best to pass a DS or DS Array
I'm having trouble with the logic of this.
If you had simply passed the DS _as_ a parameter a pointer to the DS
LikeDS(dsNameGoesHere).
In the prototype and the PI simply specify the parameter as
wrote:
what am I missing?
Jon Paris
www.partner400.com
www.SystemiDeveloper.com
On Jul 5, 2019, at 4:32 PM, Dexter Thompson <dexter.thompson@xxxxxxxxx>
questions.
I had a similar issue and resolved it using pointers. I assigned the
pointer to the DS/Array. Then I just passed the pointer to procedure
as the parameter instead of the DS/Array.
dcl-s array_ptr POINTER ;
dcl-ds Array_ds occurs(5000) based(array_ptr) ;
parameter that is passed is array_ptr
In called subprocedure (program, etc)
- receive parm_array_ptr
dcl-s sub_array_ptr Pointer ;
dcl_ds Array_ds occurs(5000) based on (sub_array_ptr)
sub_array_ptr = parm_array_ptr
Since you are using the same address, all the changes will be there
when you return.
On Fri, Jul 5, 2019 at 4:02 PM Greg Wilburn <
gwilburn@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
I don't know why I always struggle with this
I have created a sub procedure that uses an SQL cursor to gather a
list of ID numbers (see below). I mean this will work if I move the
DS definition to the main part of the pgm
So my question is how to define a parameter to return this data to
the main part of the pgm?
And how do I define the variable in the main part of the pgm?
dcl-pi CheckShipIDs;
inPID like(phpid#) const;
inPO like(phpo#) const;
end-pi;
dcl-ds ship qualified dim(10);
id char(20);
end-ds;
dcl-s maxrows uns(5) inz(%elem(ship));
Exec Sql
Declare pscsr Cursor for
Select distinct(psidcd) from POSDQPS
exception join ADRESSAD on adent#=:wkent# and adaltk=:psidcd
where pspid#=:inPID and pspo#=:inPO;
Exec Sql Open pscsr;
Exec Sql Fetch Next from pscsr For :maxrows Rows into :ship;
--
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@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our
affiliate
link: https://amazon.midrange.com
--
*Dexter Thompson*
Software Engineer, iSeries Applications Support and Development
[image: Inmar]
<https://www.inmar.com/?utm_source=email%20signature&utm_medium=email
&
utm_campaign=Associate%20Email%20Signature&utm_content=Inmar%20Logo>
dexter.thompson@xxxxxxxxx
635 Vine Street, Winston Salem, NC 27101
*p: *555-555-5555 | *c: *123-123-1234 | *f: *123-456-7890
www.inmar.com
<https://www.inmar.com/?utm_source=email%20signature&utm_medium=email
& utm_campaign=Associate%20Email%20Signature&utm_content=URL%20link>
| LinkedIn <https://www.linkedin.com/company/inmar> | Facebook
<https://www.facebook.com/inmarinc> | Twitter
<https://twitter.com/inmarinc>
--
********************************************
*Inmar Confidentiality
Note*: This e-mail and any attachments are confidential and intended
to be viewed and used solely by the intended recipient. If you are
not the intended recipient, be aware that any disclosure,
dissemination, distribution, copying or use of this e-mail or any
attachment is prohibited. If you received this e-mail in error,
please notify us immediately by returning it to the sender and delete
this copy and all attachments from your system and destroy any
printed copies. Thank you for your cooperation.
*Notice of Protected Rights*: The removal of any copyright,
trademark, or proprietary legend contained in this e-mail or any
attachment is prohibited without the express, written permission of
Inmar, Inc. Furthermore, the intended recipient must maintain all
copyright notices, trademarks, and proprietary legends within this
e-mail and any attachments in their original form and location if the
e-mail or any attachments are reproduced, printed or distributed.
********************************************
--
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@xxxxxxxxxxxx for any subscription related
https://archive.midrange.com/rpg400-l.
Help support midrange.com by shopping at amazon.com with our
affiliate
link: https://amazon.midrange.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
questions.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.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@xxxxxxxxxxxx for any subscription related
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.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@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.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@xxxxxxxxxxxx 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 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.