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



I had a good teacher :)

-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxxxxxxxx] On Behalf Of Jon Paris
Sent: Monday, July 08, 2019 2:05 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: How best to pass a DS or DS Array

He took care of that with the MaxRows. Nice approach soft coding it to the current array size.


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Jul 8, 2019, at 1:59 PM, Alan Campin <alan0307d@xxxxxxxxx> wrote:

Just curious what happens when you have 11 records.

On Mon, Jul 8, 2019 at 10:51 AM Greg Wilburn <
gwilburn@xxxxxxxxxxxxxxxxxxxxxxx> wrote:

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:

Jon,

What you're missing (what I may have left out) is that I the
procedure
is running an SQL statement to retrieve data from up to 20 rows. I
was having trouble defining things so it would compile.

I was trying to define a third parameter - ouShip likeds(ship) - so
that
the SQL statement populated that parameter. I tried quite a few
things, but couldn't get it to compile.

Error: SQL5011 Position 65 Host structure array OUSHIP not defined
or
not usable. Reason: The host structure is not a dimensioned array.

I ended up just defining it in the main program and updating that
directly in the procedure (rather than passing it)... but I hated
doing that.

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
would have been passed. It seems you're doing a bunch of work to no effect.

In the prototype and the PI simply specify the parameter as
LikeDS(dsNameGoesHere).

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>
wrote:

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=ema
il
&
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=ema
il &
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
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
--
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
--
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

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