|
Correct. He will also need to clarify the data structure field names with
the data structure name to insure the proper fields are updated (because fo
the likeds).
I should have been more clear. The reason for his post was a pointer error.
The reason he is getting the pointer error is because he has defined his
data structure based on a pointer (via the like definition) and he did not
allocate any memory to that pointer. Removing the "BASED" keyword is just
one of a few different solutions.
His code should look like this:
This is the /copy I am using (PROINV)
// ---------------------------------------------Prototype: DescClass
D DescClass PR N
D ItemInfoDS LikeDS(ItemInfo)
D ItemInfo DS
D ItemIn 15
D DscOut 30
D ClsOut 2
This is the inventory procedure (DESCCLASS)
H NOMAIN
* External procedure for DESCCLASS
/COPY QPROSRC,PROINV
////////////////////////////////////////////////////////////////////
// Procedure to return the description & item class for an item.
PDescClass B EXPORT
D DescClass PI N
D ItemInfoDS LikeDS(ItemInfo)
D*
D IDESC S 30 INZ(*blanks)
D ICLAS S 2 INZ(*blanks)
C*
C/EXEC SQL
C+ SELECT idesc, iclas INTO :idesc, :iclas FROM iim WHERE iprod =
C+ :ItemIn
C/END-EXEC
C*
C Eval ItemInfoDS .DscOut = IDESC
C Eval ItemInfoDS .ClsOut = ICLAS
C Return *off
C*
PDescClass E
And this is the shell program I am executing
/If Defined(*CRTBNDRPG)
H DftActGrp(*NO) ActGrp(*Caller)
/EndIf
F* Shell program to test inventory procedures.
D*
D Main PR EXTPGM('SHELLINV')
D 2
D 15
D*
D Main PI
D ParmItm 15
/COPY QPROSRC,PROINV
D ReturnMPG S 5
D ReturnDS S 47
D ReturnInd S N
D ItemInfoDS DS LikeDS(ItemInfo)
/FREE
Eval ItemInfoDS .ItemIn = ParmItm;
Eval ItemInfoDS .DscOut = *blanks;
Eval ItemInfoDS .ClsOut = *blanks;
ReturnInd = DescClass( ItemInfoDS );
Dsply ItemInfoDS .ItemIn;
Dsply ItemInfoDS .DscOut;
Dsply ItemInfoDS .ClsOut;
*INLR = *ON;
Return;
/END-FREE
Schadd Gray
Damon Technologies, Inc.
www.damontech.com
----- Original Message -----
From: "Scott Mildenberger" <scottmildenberger@xxxxxxxxx>
To: "RPG programming on the AS400 / iSeries" <rpg400-l@xxxxxxxxxxxx>
Sent: Wednesday, October 01, 2003 1:00 PM
Subject: Re: More problems w/passing data structures as parameters
> Actually, if you just removed the based keyword the procedure
> would be updating the data structure in the /copy member and not
> be using the parameter at all. That would not be a good thing!
>
> Scott Mildenberger
>
> --- Schadd Gray <list@xxxxxxxxxxxxx> wrote:
> > What you are missing is the fact that your data structure
> > ItemInfo is based
> > on a pointer. If you remove the based keyword from that data
> > structure it
> > will work. In your code you are passing the data structure,
> > not a pointer
> > to it.
> >
>
>
>
> __________________________________
> Do you Yahoo!?
> The New Yahoo! Shopping - with improved product search
> http://shopping.yahoo.com
> _______________________________________________
> 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-2025 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.