× 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 an issue with a DS being passed to a Service Program and my updates
to it was not being passed back to the calling program. When a coworker
suggested pointers, my reaction is very similar to yours. But I had a lot
of respect for the person making he suggestion, so I tried it and worked
great. Since the data itself is not being passed, there is a little less
overhead, with my company, that is a premium. There are multiple ways to
accomplish your task and which works best for you is up to you. For me,
this worked great and gave me the flexibility to be able to pass parameters
in multiple formats. Previously, there were middle programs taking
different parameter formats and then calling the service program with
single parameter format (the DS). By using the pointer and passing the
different parameter formats I was able to eliminate the middle programs and
reduce run time (again a premium where I work). Good luck.

On Fri, Jul 5, 2019 at 5:17 PM Justin Taylor <JUSTIN@xxxxxxxxxxxxx> wrote:

I don't entirely follow the details of what you're asking.

I often use DS as parameters or return values using the LikeDS() keyword.
I'll define the DS in the /copybook for the *SRVPGM (specifying Template)
and then have all the references use LikeDS().

HTH



-----Original Message-----
From: Greg Wilburn [mailto:gwilburn@xxxxxxxxxxxxxxxxxxxxxxx]
Sent: Friday, July 05, 2019 3:03 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: How best to pass a DS or DS Array

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




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.