What exactly scenario can you change the contents of a parameter that uses Const? If there's a scenario, open a PMR.
I realize Const can sometimes make a temporary copy of a variable like Value does, but only if there's variation in definition. So generally the speed of a call using Const on parameters is faster - this may not be a concern for interactive shops, because the speed difference is likely insignificant, but in a batch processing shop, insignificant * a million or 100 million generally becomes significant.
Personally I only use Value if I need to modify the parameter but don't want to send it back to the caller. Even so, depending on if it's a procedure that'll be called millions of times over, I may instead use Const and load a static local variable instead.
-Kurt
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Jon Paris
Sent: Friday, June 15, 2012 4:14 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: Explanation of a datastructure as a parameter...
On 2012-06-15, at 4:56 PM, rpg400-l-request@xxxxxxxxxxxx wrote:
The datastructure DayDs is defined like the template t_DayDs. I don't
want the procedure GetDaysOfWeek to be able to change subfield1. If I had
passed all 7 parameters I would have specified the keyword const for the
first parameter.
How or can I do with a keyword when I pass a datastructure.
Using CONST won't ensure that the DS cannot be modified in and of itself. If the subprocedure did not use CONST in its PI then nothing will be protected.
The keyword you need if you need to be absolutely sure that it cannot be changed is VALUE. That will _always_ pass a copy of the data to the subproc. With CONST a copy is only made if the definitions are different, so you are reliant on the called routine being "well behaved".
Jon Paris
www.partner400.com
www.SystemiDeveloper.com
--
This is the RPG programming on the IBM i / System i (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.