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



Bob, 
 
So if I understand right, when I declare a procedure:

     p Search          B 
     d Search          PI             5U 0 
     d  peArray                            likeds(bigDS)
     d                                     dim(32767) 
     d                                     const
     d                                     options(*varsize) 

And I have in the calling program a global array declared :

     d bigDS           DS
     d   field1                   32767A
     d   field2                   32767A     
     d ArrayToPass     S                   likeds(bigDS)
     d                                     dim(3000)

That would cause the compiler to create a temporary array because
ArrayToPass is a fixed length field ?

TIA, Arco Simonse


> -----Oorspronkelijk bericht-----
> Van: rpg400-l-bounces@xxxxxxxxxxxx 
> [mailto:rpg400-l-bounces@xxxxxxxxxxxx] Namens Bob Cozzi
> Verzonden: zaterdag 3 september 2005 17:22
> Aan: 'RPG programming on the AS400 / iSeries'
> Onderwerp: RE: Constants (was: *varsize array as procedure parameter)
> 
> 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
> 
DISCLAIMER:
This message contains information that may be privileged or confidential and is 
the property of the sender. 
It is intended only for the person to whom it is addressed. If you are not the 
intended recipient, you are not 
authorized to read, print, retain, copy,disseminate, distribute, or use this 
message or any part thereof. If you
receive this message in error, please notify the sender immediately and delete 
all copies of this message. 

This footnote also confirms that this email message has been swept of the 
presence of computer viruses



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.