MIDRANGE dot COM Mailing List Archive



Home » MIDRANGE-L » November 2006

Re: Job behaviour RPGLE vs CLLE



fixed

Hi, Jim:

This happens if you code in RPG/400 or RPGLE like this:

      CALL   'PGM001'
versus:
      MOVEL   'PGM001'   PGMNAM   10
      CALL      PGMNAM

This second case causes RPG to generate the full dynamic call that "resolves" to the name on each call. Note that there is more "overhead" for doing it this way.

For this reason (in order to reduce runtime overhead for needless re-resolving), when the name of the object called is known at compile-time, (the first case above), IBM compilers generate the code to do the "resolve" (issue RSLVSP MI instruction) in the "initialization" part of the *PGM, so this overhead is incurred just once, and from that point on, e.g. at the point of the CALL, a pointer to the *PGM is used (already resolved).

Hope that helps,

Mark S. Waterbury

> Jim Wiant wrote:
I've noticed a behaviour that I don't understand, and would like some
clarification/explanation:
The situation is program objects and library lists, and is set up as
follows:
The library list includes LIB1 and LIB2. LIB1 is 1st in the list, LIB2
is 2nd in the list.
I have two programs that call a sub program. One is RPGLE, and calls the
sub program with a simple CALL verb (not bound, etc.). The other program
is a CLLE and again calls a sub program with a simple CALL verb. In both
cases they make the call, sleep for a few seconds, and then loop and
call the child again.
The child program exists in LIB2. Both parent programs end up executing
the same object in LIB2 when started. So far so good..
If I create a new child program with the same name and place it in LIB1
(which is earlier in the library list) I get different behaviours from
the 2 parent programs:
The RPGLE code continues to execute the child from LIB2, ignoring the
object in LIB1.
The CLLE code finds the new code in LIB1 and starts running it next time
it loops.
In both cases the parent process is started with a SBMJOB command with
the same job description and parameters.
Why the difference? I expected the RPGLE parent program to be doing
dynamic calls and it should pick up the new program object from the
library earlier in the library list just like the CLLE does. I don't
mind if the behaviour is consistent even if different between the
languages, but I would like to understand why the difference and if
there is any way to control it. Thanks all Jim Wiant
Developer
Foodstuffs, Akl. Ltd.
Fast is fine, but accuracy is everything. Earp, Wyatt
This message has been sent from Foodstuffs (Auckland) Limited ("Foodstuffs").

The information contained in this message and or attachments is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any system and destroy any copies.

The views and opinions expressed in this message may be those
of the individual and not necessarily those of Foodstuffs, and are not given or endorsed by it.

Please note that this communication does not designate an information system for the purposes of the Electronic Transactions Act 2002.





Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2014 by MIDRANGE dot 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 here. If you have questions about this, please contact