CHGSRVPGM (Change Service Program)

CHGSRVPGM Command syntax diagram

 

Purpose

The Change Service Program (CHGSRVPGM) command changes the attributes of a service program without requiring that it be recompiled. 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:

  1. The user must have *USE authority for the library for the service program that is being changed.

  2. The user must have *USE and *OBJMGT authority for the service program that is being changed.

  3. The user must have *USE, *DLT, and *ADD authority for the library to change the optimization attribute (OPTIMIZE), performance collection attribute (ENBPFRCOL), profiling data attribute (PRFDTA), Licensed Internal Code options (LICOPT), enable teraspace storage (TERASPACE), or to force service program re-creation by specifying FRCCRT(*YES).

  4. Only the service program owner, or a user with *SECADM and *ALLOBJ authority, can change the user profile attribute (USRPRF) or the use adopted authority attribute (USEADPAUT).

  5. Service programs in library QSYS and QGDDM cannot be changed unless the only indicated change is a removal of observability.

  6. The STGMDL of the program and all bound modules must be *SNGLVL to change a program to TERASPACE(*NO).

 

Required Parameters

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.

The name of the service program can be qualified by one of the following library values:

*USRLIBL: Only the libraries in the user portion of the job's library list are searched.

library-name: Specify the name of the library to be searched.

*ALL: All service programs in the specified library to which the user has some authority (for example, *USE authority) are selected for change.

service-program-name: Specify the name of the service programs whose attributes are being changed.

generic*-service-program-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. See generic names for additional information.

 

Optional Parameters

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.

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. Only the service program owner or a user with QSECOFR authority can change the user profile attribute.

*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.

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.

*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.

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:

  1. If block order profiling data has previously been applied to this ILE service program, specifying *ALL on the RMVOBS parameter will also remove *BLKORD observability.

  2. *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 information necessary to allow the service program to be re-created, to change the optimization level, to change the performance collection attribute, or to change the profiling data attribute, is removed.

Notes:

  1. *CRTDTA cannot be specified if the ILE service program is enabled to collect profiling data.

  2. *CRTDTA observability is required to convert service programs to a different hardware technology. For example, between CISC (Complex Instruction Set Computer) and RISC (Reduced Instruction Set Computer) technology.

  3. 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: Information is removed that allows the system to re-apply block order profiling data when the service program is re-created.

*PRCORD: Information is removed that allows the system to re-apply procedure order profiling data when the service program is re-created or updated.

ENBPFRCOL
Specifies whether collection of performance data is enabled.

*SAME: The value does not change.

*NONE or *PEP: 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.

PRFDTA
Specifies the profiling data attribute for service programs.

*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.

Note: Specifying *COL will remove 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 is applied. The collection of profiling data is no longer enabled.

*APYALL: Block order and procedure order profiling data is applied. The collection of profiling data is no longer enabled.

LICOPT
This parameter allows 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 type of 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 with the specified Licensed Internal Code 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.

Licensed-Internal-Code-options: Specifies 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 with the specified Licensed Internal Code options for all the bound modules. Note: Additional information about the LICOPT options can be found in the ILE Concepts book.

*NONE: Service program re-creation is forced and no Licensed Internal Code options are used for all the bound modules.
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 of the bound modules 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 the eligible bound modules is changed to yes. This requires the bound modules to be at least V4R4M0 or later.

FRCCRT
Specifies whether service program re-creation is forced.

*NO: Service program re-creation is not forced unless the optimization level (OPTIMIZE), use adopted authority (USEADPAUT), user profile (USRPRF), enable performance collection (ENBPFRCOL), profiling data (PRFDTA), Licensed Internal Code options (LICOPT), or enable teraspace storage (TERASPACE) parameters are changed. This option allows the system to determine whether a change is required.

*YES: Service program re-creation is forced whether or not the optimization level (OPTIMIZE), use adopted authority (USEADPAUT), user profile (USRPRF), enable performance collection (ENBPFRCOL), profiling data (PRFDTA), Licensed Internal Code options (LICOPT), or enable teraspace storage (TERASPACE) parameters are changed.

*NOCRT: No service program re-creation is done. If a value other than *SAME is specified for OPTIMIZE, USEADPAUT, USRPRF, ENBPFRCOL, PRFDTA, LICOPT or TERASPACE parameter, a command syntax error is sent and the command is not run.
TEXT
Specifies the text that briefly describes the service program. More information on this parameter is in Commonly used parameters.

*SAME: The value does not change.

*BLANK: Text is not specified.

'description': Specify no more than 50 characters of text, enclosed in apostrophes.

Examples for CHGSRVPGM

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.

Error messages for CHGSRVPGM

*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.