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