Change Service Program (CHGSRVPGM)

Where allowed to run: All environments (*ALL)
Threadsafe: No
Parameters
Examples
Error messages

The Change Service Program (CHGSRVPGM) command changes the attributes of a program without requiring that it be recompiled. The attributes that can be changed are the optimization attribute, the user profile attribute, the use-adopted-authority attribute, the performance collection attribute, the profiling data attribute, and the service program text. The user can also force re-creation of a service program even if the attributes being specified are the same as the current attributes.

Restrictions:

Top

Parameters

Keyword Description Choices Notes
SRVPGM Service program Qualified object name Required, Key, Positional 1
Qualifier 1: Service program Generic name, name, *ALL
Qualifier 2: Library Name, *USRLIBL
OPTIMIZE Optimize service program *SAME, *FULL, *BASIC, *NONE, 40, 30, 20, 10 Optional
USRPRF User profile *SAME, *USER, *OWNER Optional
USEADPAUT Use adopted authority *SAME, *YES, *NO Optional
RMVOBS Remove observable info Single values: *SAME, *ALL, *NONE
Other values (up to 4 repetitions): *CRTDTA, *DBGDTA, *BLKORD, *PRCORD
Optional
ENBPFRCOL Enable performance collection Single values: *SAME, *NONE, *PEP
Other values: Element list
Optional
Element 1: Collection level *FULL, *ENTRYEXIT
Element 2: Procedures *ALLPRC, *NONLEAF
PRFDTA Profiling data *SAME, *NOCOL, *COL, *CLR, *APYBLKORD, *APYPRCORD, *APYALL Optional
TERASPACE Teraspace *SAME, *YES, *NO Optional
FRCCRT Force recreation *NO, *YES, *NOCRT Optional
TEXT Text 'description' Character value, *SAME, *BLANK Optional
LICOPT Licensed Internal Code options Single values: *SAME, *NONE
Other values: Element list
Optional
Element 1: Options Character value
Element 2: Action *REPLACE, *ADD
Top

Service program (SRVPGM)

Specifies the service programs whose attributes are being changed. *USRLIBL cannot be specified or defaulted for the library qualifier when a generic name or *ALL is specified for the program qualifier.

This is a required parameter.

Qualifier 1: Service program

*ALL
All service programs in the specified library to which the user has some authority (for example, *USE authority) are selected for change.
generic-name
Specify the generic name of the service program. A generic name is a character string of one or more characters followed by an asterisk (*); for example, ABC*. The asterisk substitutes for any valid characters. A generic name specifies all objects with names that begin with the generic prefix for which the user has authority. If an asterisk is not included with the generic (prefix) name, the system assumes it to be the complete object name. If the complete object name is specified, and multiple libraries are searched, multiple objects can be changed only if *ALL or *ALLUSR library values can be specified for the name.
name
Specify the name of the service programs whose attributes are being changed.

Qualifier 2: Library

*USRLIBL
Only the libraries in the user portion of the job's library list are searched.
name
Specify the name of the library where the program is located.
Top

Optimize service program (OPTIMIZE)

Specifies whether the service program is optimized. This parameter removes redundant instructions from the specified programs. Changing the current optimization level of a service program causes the system to re-create the service program with the new optimization level.

*SAME
The value does not change.
*NONE or 10
The service program is not optimized. Variables can be displayed and changed when debugging ILE service programs at this optimization level.
*BASIC or 20
Some optimization is performed on the code. When debugging ILE service programs at this level, variables may be displayed but not changed.
*FULL or 30
More optimization is performed in addition to the optimization performed at level 20. Variables cannot be changed but can be displayed while the program is being debugged. However, the displayed value of the variable during debugging may not be its actual value.
40
This level includes all the optimization performed at optimization level 30. In addition, it includes optimization that disables call and instruction tracing. Thus, tracing of modules created at this optimization level cannot be performed.
Top

User profile (USRPRF)

Specifies whether the authority checking done while this service program is running includes only the user who is running the service program (*USER) or both the user running the service program and the service program owner (*OWNER). The profiles of the service program user or both the service program user and the service program owner are used to control which objects can be used by the service program, including the authority the service program has for each object.

Note: To change the user profile attribute, you must be the owner of the service program, or be a member of the group profile that owns the service program, or if your user profile (or one of your group profiles) has all object (*ALLOBJ) and security administrator (*SECADM) special authorities.

*SAME
The value does not change.
*USER
The service program runs under the user profile of the service program's user.
*OWNER
The user profiles of both the service program's owner and the service program's user are used when the service program is processed. The collective sets of object authority in both user profiles are used to find and access objects during service program processing. Authority from the owning user profile's group profile is not included in the authority for the running service program.
Top

Use adopted authority (USEADPAUT)

Specifies whether service program adopted authority from previous programs or service programs in the call stack are used as a source of authority when this service program is running.

Note: To change the use adopted authority attribute, you must be the owner of the service program, or be a member of the group profile that owns the service program, or if your user profile (or one of your group profiles) has all object (*ALLOBJ) and security administrator (*SECADM) special authorities.

*SAME
The value does not change.
*YES
Program or service program adopted authority from previous recursion levels is used when this service program is running.
*NO
Program or service program adopted authority from previous recursion levels is not used when this service program is running.
Top

Remove observable info (RMVOBS)

Specifies whether the observable information associated with service programs is removed.

*SAME
The value does not change.
*ALL
All of the observable information associated with the service program is removed, if possible. If the service program requires the observable information to ensure that it runs correctly, that information is not removed.

NOTES:

  • If block order profiling data has previously been applied to this ILE service program, specifying *ALL on the RMVOBS parameter also removes *BLKORD observability.
  • *ALL cannot be specified if the ILE service program is enabled to collect profiling data.
*NONE
None of the observable information associated with the service program is removed.
*DBGDTA
All of the observable information necessary to allow the service program to be debugged is removed.
*CRTDTA
All of the observable creation data is removed. Observable Creation data is necessary to allow the service program to be re-created using CHGSRVPGM, to change the optimization level, to change the performance collection attribute, or to change the profiling data attribute, is removed.

NOTES:

  • *CRTDTA cannot be specified if the ILE service program is enabled to collect profiling data.
  • Creation data (either observable or unobservable) is required to convert service programs to a different hardware technology, for example, between CISC (Complex Instruction Set Computer) and RISC (Reduced Instructions Set Computer) technology.
  • Service programs created only from modules created for release V5R1M0 or later (TGTRLS parameter when the module was created) will retain unobservable creation data even when *ALL observability or *CRTDTA observability is removed.
  • If the service program was created for a release earlier than V3R6M0, and is currently in RISC format or FRCCRT(*YES) is specified, removing *CRTDTA will cause the service program to no longer be able to be saved for a release earlier than V3R6M0.
*BLKORD
Block order profiling data is removed from the service program.
*PRCORD
Procedure order profiling data is removed from the service program.
Top

Enable performance collection (ENBPFRCOL)

Specifies whether collection of performance data is enabled.

Single values

*SAME
The value does not change.
*PEP or *NONE
Performance data is collected for the Program Entry Procedure entry and exit. There are no entry or exit hooks in the module's internal procedures and no precall or postcall hooks around calls to other procedures.

Element 1: Collection level

*FULL
Performance data is collected for procedure entry and exit. Performance data is also collected before and after calls to external procedures.
*ENTRYEXIT
Performance data is collected for procedure entry and exit.

Element 2: Procedures

*ALLPRC
Performance data is collected for all procedures. This is useful to capture information on all procedures.
*NONLEAF
Performance data is collected for procedures that are not leaf procedures and for the PEP. This is useful to capture information on most routines but not at the expense of destroying the 'leaf-ness' of the leaf procedure.
Top

Profiling data (PRFDTA)

Specifies the program profiling data attribute for service programs. Program profiling is an advanced optimization technique to reorder procedures and code within the procedures based on statistical data (profiling data).

*SAME
The value does not change.
*NOCOL
The collection of profiling data is not enabled and profiling data is not applied.
*COL
The collection of profiling data is enabled for eligible modules.

Note: Specifying *COL removes all applied profiling data if the service program has profiling data applied.

*CLR
All previously collected profiling data is discarded. The service program remains enabled to collect profiling data.
*APYBLKORD
Block order profiling data is applied to every module bound into this service program previously enabled to collect profiling data. The collection of profiling data is no longer enabled.
*APYPRCORD
Block order and procedure order profiling data are applied. The collection of profiling data is no longer enabled.
*APYALL
Block order and procedure order profiling data are applied. The collection of profiling data is no longer enabled.
Top

Teraspace (TERASPACE)

This parameter allows the teraspace storage enablement to be changed to the specified value for all the bound modules in the service program. Changing the enable teraspace storage parameter to any value other than *SAME causes the system to re-create the service program.

*SAME
The teraspace storage enablement does not change.
*NO
The teraspace storage enablement of eligible bound modules is changed to no. This requires the bound modules to be single level storage model.
*YES
The teraspace storage enablement of eligible bound modules is changed to yes. This requires the bound modules to be at least V4R4M0 or later.
Top

Force recreation (FRCCRT)

Specifies whether service program re-creation is forced.

*NO
Service program re-creation is not forced unless the Optimize service program (OPTIMIZE) parameter, the Use adopted authority (USEADPAUT) parameter, the Enable performance collection (ENBPFRCOL) parameter, the Profiling data (PRFDTA) parameter, User profile (USRPRF) parameter, Licensed Internal Code options (LICOPT) parameter or the Teraspace (TERASPACE) parameter has changed. This option allows the system to determine whether a change is required.
*YES
Service program re-creation is forced whether or not the OPTIMIZE parameter, the USEADPAUT parameter, the ENBPFRCOL parameter, the PRFDTA parameter, the USRPRF parameter, the LICOPT parameter, or the TERASPACE parameter has changed.
*NOCRT
No service program re-creation is done. If you attempt to change a service program attribute which would implicitly require the service program to be re-created, an error message is issued and no attributes of the service program are changed. Modifying one of the following parameters may cause the service program to be re-created: OPTIMIZE, USEADPAUT, ENBPFRCOL, PRFDTA, USRPRF, LICOPT, or TERASPACE.
Top

Text 'description' (TEXT)

Specifies text that briefly describes the service program.

*SAME
The value does not change.
*BLANK
Text is not specified.
character-value
Specify no more than 50 characters of text, enclosed in apostrophes.
Top

Licensed Internal Code options (LICOPT)

Specifies individual Licensed Internal Code compile-time options to be selected, and is intended for the advanced programmer who understands the potential benefits and drawbacks of each selected compiler option. Changing the Licensed Internal Code options of an Integrated Language Environment (ILE) service program to any value other than *SAME causes the system to re-create the ILE service program. Note: Additional information about the LICOPT options can be found in the ILE Concepts book, SC41-5606.

Element 1: Options

*SAME
If the service program object is re-created, the existing Licensed Internal Code compile-time options are input to object re-creation. Otherwise, the Licensed Internal Code compile-time options do not change.
*NONE
Service program re-creation is forced and no Licensed Internal Code options are used for all the bound modules.
character-value
Specify one or more Licensed Internal Code compile-time options. Changing the Licensed Internal Code options of an Integrated Language Environment (ILE) service program causes the system to re-create the ILE service program.

Element 2: Action

*REPLACE
Any existing Licensed Internal Code options for the bound modules are replaced with the specified values.
*ADD
The specified Licensed Internal Code options are added to the end of the existing Licensed Internal Code options string for each of the bound modules. Any conflicts between Licensed Internal Code option values will be resolved with the last specified value taking precedence.
Top

Examples

Example 1: Optimizing a Service Program

CHGSRVPGM   SRVPGM(PROG1/SERVICE)  OPTIMIZE(*FULL)
            USRPRF(*OWNER)

The service program SERVICE in library PROG1 is optimized, and the user profile under which it is processed is changed to include the service program owner's user profile. Only the owner of service program PROG1/SERVICE, or a user with security officer authority, can change the USRPRF attribute. The service program is re-created only if the attributes specified differ from those of the current service program.

Example 2: Changing Text for a Service Program

CHGSRVPGM   PGM(*USRLIBL/KNUTE)
            TEXT('Service program description')

This command changes the text for service program KNUTE. The user portion of the library list is used to find the service program.

Example 3: Optimizing Multiple Service Programs

CHGSRVPGM   SRVPGM(PROG1/ACE*)  OPTIMIZE(40)

All service programs in library PROG1 whose names begin with ACE, are optimized to level 40 or their maximum optimization level.

Example 4: Changing Text of Multiple Service Programs

CHGSRVPGM   SRVPGM(PROG2/*ALL)  TEXT('Generic Text')

This command changes the text of all service programs in library PROG2 to Generic Text.

Example 5: Enabling Collection of Profiling Data

CHGSRVPGM   SRVPGM(PROG1/PROFPGM)  PRFDTA(*COL)

This command enables the collection of profiling data for service program PROFPGM in library PROG1. If PROFPGM in library PROG1 had profiling data applied prior to issuing this command, all applied profiling data will be removed.

Example 6: Applying Profiling Data

CHGSRVPGM   SRVPGM(PROG1/PROFPGM)  PRFDTA(*APYALL)

This command applies block order and procedure order profiling data to service program PROFPGM in library PROG1. The collection of profiling data is no longer enabled for service program PROFPGM library PROG1.

Top

Error messages

*ESCAPE Messages

CPF223C
Not authorized to change the use adopted authority (USEADPAUT) attribute for &1 in &2 type *&3.
CPF223E
Authority check for use adopted authority attribute failed.
CPF5CEB
Service program &1 in library &2 not found.
CPF5CEC
&1 changed. &2 did not require change. &3 not changed.
CPF5CED
No service programs changed.
CPF5CEE
Service programs in libraries QSYS and QGDDM cannot be changed.
CPF5CEF
*USRLIBL not allowed with generic name or *ALL.
CPF5CF0
User &3 not authorized to change &1.
CPF5CF1
Cannot remove observable information.
CPF5CF2
User &3 not authorized to change &1.
CPF5CF3
Service program &1 in library &2 not changed.
CPF5CF4
Service program &1 in &2 not changed.
CPF5D04
Not authorized to service program &1 in library &2.
CPF9803
Cannot allocate object &2 in library &3.
CPF9804
Object &2 in library &3 damaged.
CPF9806
Cannot perform function for object &2 in library &3.
CPF9810
Library &1 not found.
CPF9818
Object &2 in library &3 not created.
CPF9819
Object &2 in library &3 not created.
CPF9820
Not authorized to use library &1.
CPF9830
Cannot assign library &1.
Top