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



Birgitta,

When CONST is specified for a parameter and VARYING is also specified, a
copy of the input parameter's value is made if:
A) The input value is in a fixed-length field.
B) The input value is in a VARYING field and it is shorter than the declared
parameter length.
C) A literal or character-string expression is passed.

And probably one or two other situations that I can't think of.

My rule-of-thumb is to always use CONST for numeric parameters and date
parameters (obviously if I don't need to modify them). And for character
parameters, justify why I don't need it, otherwise use CONST there too.
Again, the only caveat to this is when VARYING is used.

Also, you don't want to use long return values from procedures--this kills
performance. An integer or very short character value is fine, but returning
something like a data structure or worse data structure array or just an
array is a performance killer... Instead, pass a parameter, update it, and
return perhaps the number of value populated in the array as an integer.

-Bob Cozzi
www.RPGxTools.com
RPG xTools - Enjoy programming again.


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of HauserSSS
Sent: Saturday, September 03, 2005 3:54 AM
To: RPG programming on the AS400 / iSeries
Subject: AW: Constants (was: *varsize array as procedure parameter)

Hi David,

>>If a const is just a pointer to a variable that isn't allowed to be
>>changed ... is there any reason I couldn't take the address of that
>>pointer, assign it to another (non-const) variable, and change the
>>const's value that way?

May be we should explain what happens if a parameter is passed by constant
reference:
If the passed parameter has the same data type and length as required in the
prototype, the address of this parameter field is passed to the called
procedure.
If the passed parameter has a compatible data type or different length, a
temporary field with the required definition is created and initialized with
the parameter value. After the address of this temporary field is passed to
the called procedure.
Because it cannot be determined whether the received address is from the
original field or a temporary field, and to avoid to change some values by
mistake, it's forbidden to change a parameter field that is passed by
constant reference.
The compilers already check it.

Birgitta

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

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.