Hi, Jeff:

You do not _have_ to set the user profile's *CURLIB to that library. You only need to ensure that the library containing that *SRVPGM is somewhere in the initial library list for this user profile.

Usually, this is established via some job description -- every user profile has a default job description associated with it. You might have many user profiles using the same job description... in that case, you might want to create a new one just for this one user, or perhaps a few users who need to use this new procedure.

Another alternative, in conjunction with using the *DEFER option (at V6R1 and up), is to have the calling CL program issue an ADDLIBLE to ensure that library is in the *LIBL before the CALLPRC is issued.

Hope that helps,

Mark S. Waterbury

> On 12/24/2012 11:08 AM, Jeff Young wrote:
Hi Scott,
Thanks for the pointer.
In this case, the service program activation was set to *IMMED, so when the
job description did not contain the library for the service program, and
the user profile did not have the CURLIB set to a library containing the
service program, I received the error.

I did not realize that when the activation is set to *IMMED, that the
system attempts to resolve the service program when the program starts and
before any code is executed.
(I have now learned something new.)

Since this is set as part of a package software, I have set the user
profile CURLIB to a library containing the service program.

Thanks again,

On Mon, Dec 24, 2012 at 10:56 AM, Scott Klement <midrange-l@xxxxxxxxxxxxxxxx
Hello Jeff,

By default, service program binding is resolved when the program is
loaded (not when the CALLPRC happens). However, this can be changed by
changing the activation from *IMMED (default) to *DEFER.

Also, you need to look at how the library was specified when the srvpgm
was bound. It can be specified as *LIBL or a hard-coded library.
(Though, I don't think it's possible to specify *CURLIB.)


On 12/24/2012 8:59 AM, Jeff Young wrote:
I have a CLLE program that is specified as the initial program for my
This program calls a program to set the users library list and changes
Current Library to *CRTDFT. The library list set by this program
the library that the service program resides in.
After the library list is set it then calls a procedure in a service

call pgm(ZZZ/xxx) /* this is a qualified call specifying the library
containing the program to set the library list */
callproc (sp_xxx_xxx)
. do more stuff

1. When the user profile specifies the Current Library as a library
containing the service program, all works just fine.

2. When the user profile specifies the Current Library as either *CRTDFT
a library not containing the service program, the signon is aborted by
system and the following message is received:
CH3401 Escape 40 12/24/12 09:49:38.946985
#mnrnrl 000518 QCMD QSYS 04FA
Message . . . . : Cannot resolve
object XASRVPG. Type and Subtype X'0203'

Since the service program XASRVPG is in the library list at the time the
CALLPRC is issued, I do not understand why there is a problem.


This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.

This thread ...


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