Skip to content

Rules for Freezing Packages

These rules and restrictions apply to the freeze package function:

  • All components in a package must be in ACTIVE status before a package can be frozen.

  • A package cannot be frozen if it contains a utility request to scratch or rename a component that is in the package, which includes a generated component such as a load module created by a build process.

  • A package cannot be frozen if a utility request renames a component to the same name as a component in the package, which includes a generated component such as a load module created by a build process.

  • If a designated compile procedure is specified for a package component, the package cannot be frozen unless the designated procedure is used to build the component.

  • Audit may be required for planned packages before they can be frozen, and if audit is required, the audit return code may not exceed a maximum determined by the audit level set in application administration. See Audit Level.

  • Unplanned packages never have to pass audit before freeze, although you may be required to run audit.

  • When a package is frozen, the package status is changed from DEV (Development) to FRZ (frozen).

  • When a package is frozen, the status of package components is changed from ACTIVE to FROZEN.

  • Components cannot be added to a frozen package.

  • While a package remains frozen, package information and package components may be selectively unfrozen, changed, and refrozen.

  • To selectively unfreeze package information and package components, you must have revert authority or be an approver for a package approval that has not been entered.

  • The promotion rule may require that a component be selectively demoted before the component may be selectively unfrozen. See Promotion Rule.

  • When a package component is selectively unfrozen, the component status is changed from FROZEN to UNFROZEN. If you then stage the component, the component status is changed from UNFROZEN to either ACTIVE or INCOMP.

  • If a package component is unfrozen, but you do not change the component, the component may be refrozen without running audit, regardless of the audit level in force.

  • Unlike package revert, selective unfreeze does not reset approvals that are already entered. However, new approvals cannot be entered until all components are in FROZEN status. Approvers are not notified of selective unfreeze or refreeze.

  • A frozen package can be returned to development status (DEV) with the Revert function.

Audit Level

The audit level specified in application administration at the time a package is created determines whether audit must be run before the package is frozen. The audit level determines the maximum return code that is acceptable to pass the audit. Each return code indicates a type of out-of-sync condition.

If you unfreeze and change a package component, the audit level determines whether the change package must pass audit before you can refreeze the component.

This table describes the audit levels, the highest acceptable audit return code required to pass audit at each level, and a description of the kind of out-of-sync errors that are indicated by each return code.

Audit Level Maximum Return Code **Audit Level and Return Code Description
0 Any Audit is recommended but optional. If audit is run, any return code, except abend, is acceptable. Any out-of- sync condition is permitted.
1 Any Audit is required. Any return code, except abend, is acceptable. Any out-of-sync condition is permitted.
2 12 Audit is required. The return code indicates that there are out-of-sync conditions in the staging libraries of the package. Out-of-sync conditions indicated by lower return codes may also exist.
3 8 Audit is required. The return code indicates that there are no out-of-sync conditions in the staging libraries but that there are out-of-sync conditions in the baseline libraries. Out-of-sync conditions indicated by lower return codes may also exist.
4 4 Audit is required. The return code indicates that there are no out-of-sync conditions in the staging or baseline libraries, but at least one component in a staging library is a duplicate of the corresponding baseline component.
5 0 Audit is required. The return code indicates that there are no out-of-sync conditions in the staging or baseline libraries. Also, there are no duplicate (unmodified) components in the staging libraries. Some components that are unknown to ChangeMan ZMF, do not have ISPF statistics, or are USER239 load modules are flagged as out of sync but are allowed to pass the audit. Examples of components that are unknown to ChangeMan ZMF include language environment subroutines which the binder automatically links into a load module.

For information about package audit, see Auditing a Package

Administration Settings for Freeze Package Functions

Your global and application administrators make settings in ChangeMan ZMF administration that control how the freeze package function works in your application. Ask your administrator if any of the following apply to your application.

  • Require audit for unplanned packages when the application audit level is greater than 0. Unplanned packages can still be frozen, approved, and installed if they fail audit. (Application Administration: Force Audit of Unplanned Packages)

  • Create installation JCL at freeze or when the final approval is entered. (Application Administration Parameters: Build Installation JCL At Approve)

Exit Programs for Freeze Package Functions

Your ChangeMan ZMF installer or administrators may implement exit programs to alter the behavior ChangeMan ZMF. Ask your administrator if any of the following apply to your application.

  • Prohibit package freeze depending on package conditions like package type, library types in package, installation date, installation from time or to time, installation day of week, Package User Information variable values. (Exit program CMNEX024)

  • Prevent package freeze or selective refreeze if certain package or component conditions exist. This exit is commonly used to prevent installation of components where prohibited compile options, link edit options, or User Options were used the last time a component was staged. (Exit program CMNEX025)