Change Service Program (CHGSRVPGM)
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:
- You must have use (*USE) authority to the library for the service program that is being changed.
- You must have *USE and object management (*OBJMGT) authorities for the service program that is being changed.
- You must have *USE, delete (*DLT), and add (*ADD) authority to 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).
- Service programs in library QSYS, QGDDM, and QTEMP cannot be changed unless the only indicated change is a removal of observable information.
- The STGMDL of the program and all bound modules must be *SNGLVL to change a program to TERASPACE(*NO).
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 |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
*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.