|
Charles, Thanks for the input. I guess my line of thought is that the procedure is returning a value, so I should avoid returning that value in a parm and return it in the return field (if that's the official term for it I'm not sure). But, being a data structure storing multiple fields, I thought it best to return it by reference (return the pointer) instead of returning it by value. The ActGrp I'm using is *New, and I have other fields defined as static (albeit only used w/in the procedure in which they are defined). I see where you're coming from I think, but maybe an explanation (or a link) to why it's a no-no would be helpful. Kurt Anderson Application Developer Highsmith Inc -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Wilt, Charles Sent: Thursday, January 12, 2006 7:14 AM To: RPG programming on the AS400 / iSeries Subject: RE: Procedure returning a pointer, and debugging Kurt, Glad it works, but IMHO you should reconsider doing this. Passing back a point to a procedures private data is a big no-no. Either return the DS itself, or pass a DS by reference into the procedure for update. Just my .02 Charles Wilt -- iSeries Systems Administrator / Developer Mitsubishi Electric Automotive America ph: 513-573-4343 fax: 513-398-1121 > -----Original Message----- > From: rpg400-l-bounces@xxxxxxxxxxxx > [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Kurt Anderson > Sent: Wednesday, January 11, 2006 5:37 PM > To: RPG programming on the AS400 / iSeries > Subject: RE: Procedure returning a pointer, and debugging > > Larry, > > Your input lead me to the answer. > I didn't have the pointer in the subprocedure defined as static, which > is ok... But the problem I had is that I didn't have the data > structure (which is what the pointer was pointing to) defined as > Static. So, I put the Static keyword on it and it works great. > > Thanks, > > Kurt Anderson > Application Developer > Highsmith Inc > > -----Original Message----- > From: rpg400-l-bounces@xxxxxxxxxxxx > [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Larry Ducie > Sent: Wednesday, January 11, 2006 4:26 PM > To: rpg400-l@xxxxxxxxxxxx > Subject: Re: Procedure returning a pointer, and debugging > > D'oh! > > <snip> > Is the pointer defined as static..? > </snip> > > Obviously, I meant: Is the pointer NOT defined as static..? > > I must learn how to switch off this predictive-text keyboard! ;-) > > Larry Ducie > > > -----Original Message----- > From: Larry Ducie [mailto:Larry_Ducie@xxxxxxxxxxx] > Sent: 11 January 2006 22:19 > To: rpg400-l@xxxxxxxxxxxx > Subject: Re: Procedure returning a pointer, and debugging > > > Hi Kurt, > > Is the pointer you are passing back defined within the procedure you > are calling..? Is the pointer defined as static..? > > If so you will have trouble because when the procedure returns the > pointer will be destroyed. The OS may use up the memory allocated to > it for something else at any point, but when this occurs is > indeterminate. So, a quick return may well result in data still > untouched (and the chain > succeeding) , but if a long time elapses (like when debugging) the OS > may well allocate the storage to something else and "corrupt" > your data. It > may > be better to pass your pointer in as an input-output variable and let > the procedure write data to that. This way, your data will still exist > prior and after the call. This is how standard IBM APIs usually work. > > I believe that, even though the pointer is passed back by value you > are simply setting your pointer to point to the same address as the > pointer defined in your procedure (which no longer exists). > > HTH > > Larry Ducie > > -- > This is the RPG programming on the AS400 / 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. > > > -- > This is the RPG programming on the AS400 / 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. > >
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.