Within the same job, calling a function that runs in a different activation group degrades the performance of the call significantly (the call takes approximately twice as long).
If a service program was created to run in a named activation group (using the ACTGRP(name) parameter of the CRTSRVPGM command) then any calls to that function from a program or service program would be calling across an activation group and would therefore be slower. Sometimes it makes sense to run programs or service programs in other activations groups (for storage isolation, exception handling) but it should be noted that call-performance suffers in that arrangement.
(C) Copyright IBM Corporation 1992, 2005. All Rights Reserved.