On 12/03/2008, at 7:32 PM, David FOXWELL wrote:
After much reading I think the benefits of using service program is  
beginning to sink in although without practical experience I admit  
having some difficulty. Currently, we only use modules bound by  
copy into many different programs and we need to explore the  
possiblities of converting to the use of service programs.
I thought I read somewhere that service programs do not run in the  
*DFTACTGRP, but I can't seem to find that information again. Could  
someone confirm if this is true or not?
It is both. You cannot compile a program that uses external  
procedures and have DFTACTGRP(*YES). The compiler complains. However,  
you can create a program with ACTGRP(*CALLER) and invoke that from a  
program running in the default activation group. This will cause the  
second program (and possibly any programs and service programs it  
calls) to run in the default activation group.
Prompting the CRTSRVPGM command and examining the ACTGRP keyword  
would show you that the only values are *CALLER or a name of your  
choice. Compare this with the ACTGRP keyword on the CRTBNDRPG  
command. You will notice that CRTBNDRPG also supports DFTACTGRP which  
is absent from CRTSRVPGM. Thus your question has been partially  
answered. However, The default, and usual, setting for a service  
program is to run in its caller's activation group. If such a service  
program is invoked from a program running in the *DFTACTGRP then the  
service program will also run in the default activation group. This  
is a bad state of affairs. Avoid it by either specifying a named  
activation group on your service programs, or create your main  
programs with a named or *NEW activation group and allow all service  
programs to use *CALLER. I use both methods according to my needs.
What kind of problems could we expect to run into when mixing ILE  
and OPM?
You cannot call service programs from OPM so either you mean ILE  
running in *DFTACTGRP, or you will have to create wrapper program  
objects to be invoked from OPM, or you will have to convert your OPM  
programs to ILE.
You cannot unload service programs from the default activation group  
except by ending the job (e.g., signing off). This makes development  
and testing awkward.
ILE and OPM (and ILE running in *DFTACTGRP) have different scoping  
for overrides, opens, and commitment control. ILE gives you more  
granular control over these things which is a good thing but can take  
some getting used to.
As I recall the ILE concepts manual gives some information about a  
mixed environment. It's been ages since I read that manual so I  
cannot be sure but it is a good read and explains ILE in great and  
understandable detail.
Also, search the archives. You are not the first to ask these  
questions in the 15 years or so that ILE has been available.
Regards,
Simon Coulter.
--------------------------------------------------------------------
   FlyByNight Software         OS/400, i5/OS Technical Specialists
   
http://www.flybynight.com.au/
   Phone: +61 2 6657 8251   Mobile: +61 0411 091 400        /"\
   Fax:   +61 2 6657 8251                                   \ /
                                                             X
                 ASCII Ribbon campaign against HTML E-Mail  / \
--------------------------------------------------------------------
 
As an Amazon Associate we earn from qualifying purchases.