Skip to content

Freeze, Unfreeze, and Refreeze

This section describes the freeze functional area of the high-level language exits. The 4-character exit name identifier is FREZ.

Select option 9 Freeze from the HLL Exit Definition - Function Selection (CMNHLLMM) panel to define exits for the package freeze and selective unfreeze/refreeze processes:

CMNHLLMM                     HLL Exit Definition - Function Selection
Option ===>_________________________________________________________

1 All                       Full list

2 Build                     Component checkin, build, recompile, relink, delete
3 Package Create            Initial create of a package
4 Package Update            Subsequent update of package attributes
5 File Tailoring            Define customized ISPF variables for file tailoring
6 Checkout                  Component Checkout from baseline/promotion
7 Promote/Demote            Promotion and demotion of components
8 Audit                     Audit job submission and audit process
9 Freeze                    Package freeze and selective unfreeze/refreeze
A Approve/Reject            Package approve and reject
R Revert/Backout            Package revert and backout
S Specific                  Package syslib, Standard Language, Query etc.
U Scratch/Rename            Utility functions

E ERO                       ERO functions

M Miscellaneous             HLLX procedure name
Z Modify                    Issue Reload, Detach, or Attach modify commands

In response, the HLL Exit Definition (CMNHLLMN) panel is displayed. Here is how a sample panel might look:

CMNHLLMN                    HLL Exit Definition                 Row 1 to 13 of 13
Command ===>____________________________________________________ Scroll ===> CSR

Internal    External    + Active    1=LE          Description     +
    Name        Name                2=REXX        Debug Userids        +
----------------------------------------------------------------------------
FREZ00UF                    NO      2             pre package freeze/unfreeze panel
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ01UF                    NO      2             post package freeze/unfreeze panel
    Debug: TST#FREZ         NO      2             USER12 ,USER13
----------------------------------------------------------------------------
FREZ01U1                    NO      2             selective component freeze/unfreeze
    Debug: TST#FREZ         NO      2             USER12 ,USER13
----------------------------------------------------------------------------
FREZ01U2                    NO      2             selective utility freeze/unfreeze
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ00XM                    NO      2             pre package freeze service
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ01XM                    NO      2             post package freeze service
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ00XR                    NO      2             pre selective refreeze service
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ01XR                    NO      2             post selective refreeze service
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ00XU                    NO      2             pre selective unfreeze service
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ01XU                    NO      2             post selective unfreeze service
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ0101                    NO      2             package freeze submenu
    Debug: TST#FREZ         NO      2             USER12 ,USER13
----------------------------------------------------------------------------
FREZ0002                    NO      2             pre batch freeze submit panel
    Debug:                  NO      2
----------------------------------------------------------------------------
FREZ0102                    NO      2             post batch freeze submit panel
    Debug:                  NO      2
******************************* Bottom of data *****************************

The panels around which exit points will be placed are listed below. The internal exit name (also known as function code) is FREZ0pnn, where:

  • p=0 is the pre-exit.

  • p=1 is the post-exit.

  • nn is an alphanumeric identifier relating to the panel for which the exit is taken.

The pre-exit is taken before the panel is displayed and the post-exit is taken after the panel has been displayed.

An internal exit name of FREZ0p01, for example, means that both pre- and post-exits exist. That is, the name of the pre-exit is FREZ0002 and the name of the post-exit is FREZ0102. If it makes no sense to have a pre-exit, the internal exit name is given as FREZ0101 (post-exit only). If it makes no sense to have a post-exit, the internal exit name is given as FREZ0001 (pre-exit only).

Most table displays have only post-exits. That is, we do not want to have a pre-exit that manipulates the lists that ZMF generates. We may want to have a post-exit to validate the selections that the user makes from the lists.

The panels around which the freeze, unfreeze, or refreeze exit points are placed are:

Panel ID Description Exit Name
CMNFRZ01 Package freeze submenu FREZ0101
CMNFRZ02 Batch package freeze submit panel FREZ0002/FREZ0102
CMNUNFRZ Package unfreeze/refreeze FREZ00UF/FREZ01UF
CMNUNF01 Selective component unfreeze/refreeze FREZ01U1
CMNUNF02 Selective utility request unfreeze/refreeze FREZ01U2

Pre- and post-XML-service calls for freeze, unfreeze, and refreeze are:

XML Service Name Description Exit Name
package.service.freeze Pre-service call for full package freeze FREZ00XM
package.service.freeze Post-service call for full package freeze FREZ01XM
package.src_lod.unfreeze Pre-service call for selective component unfreeze FREZ00XU
package.src_lod.unfreeze Post-service call for selective component unfreeze FREZ01XU
package.src_lod.refreeze Pre-service call for selective component refreeze FREZ00XR
package.src_lod.refreeze Post-service call for selective component refreeze FREZ01XR

Sample Exits

Sample exits are provided in the CMNZMF.SAMPLES distribution library. These examples show how to list all the information incoming to these exits. Note that not all information is available to all exit points. The exits that occur early in the dialog will not have as much information as the exits that occur later in the dialog.

The client-driven selective unfreeze/refreeze post-exits (that is, after the components to be actioned are selected) are driven once per component with single-valued component information supplied on each call. The unfreeze and refreeze service-driven exits are only called once and are supplied with a list of selected component names and library types (with no other specific component information).

The freeze exit examples are:

  • HXCFREZ - COBOL example

  • HXPFREZ - PL/I example

  • HXRFREZ - REXX example

Data Interface

A single data structure is passed to all of these exits.

LE-Language Variable Name REXX Variable Name Length Purpose Modifiable Cursor Field No.
FREZFUNC function 8 Internal exit name No
FREZDBUG debugCall 1 Debug exit call (Y/N) No
FREZORGN callOrigin 3 ISPF=SPF, XML Service=XML, ZDD=ZDD, ZMF4ECL=ECL No
FREZZMFS zmfSubs 1 ZMF subsystem character No
FREZPDB2 db2Subs 4 Default Db2 subsystem for this ZMF No
FREZUSER userid 8 Userid for function calling this exit No
FREZEXTN externalName 256 External routine name defined for this exit No
FREZACTN freezeAction 1 F/U/R/S Yes 001
FREZOPTN optionRequested 1 1/2/3/4/5 Yes 002
FREZPKGN packageId 10 The package being acted on No
FREZPCAT packageCategory 8 Same as service scope value No
FREZCAST categoryStatus 8 Frozen/unfrozen No
FREZCSTD Component staged date 8 Selective post exits only No
FREZCSTT Component staged time 6 Selective post exits only No
FREZCUSR Component user 8 Selective post exits only No
FREZCSTA Component status 8 (frozen/unfrozen) selective only No
FREZUREQ utilityRequest 3 Scr/ren (scratch/rename) No
FREZNWNM componentNewName 256 For rename request No
FREZJOB1 jobCard01 72 Job card line #1 Yes 013
FREZJOB2 jobCard02 72 Job card line #2 Yes 014
FREZJOB3 jobCard03 72 Job card line #3 Yes 015
FREZJOB4 jobCard04 72 Job card line #4 Yes 016
FREZMIXC mixedCase 1 Name has mixed case? Yes 028
FREZVAL0 validateOnly 1 Validate the package for freeze only (FREZ0xXM only) No
FREZUVPN userVarPanel 8 User variable panel name Yes
FREZTUV01 - 05 userVariable01-05 8*5 Set of five 8-byte package user variables Yes 018-022
FREZUV06 - 10 userVariable06-10 72 * 5 Set of five 72-byte package user variables No 023-027
FREZMCNT memberCount 5 Count of following member names & types No
FREZCTYP componentType.0 3 Selected Component type. Stem variable No
FREZCOMP componentName.0 1-256 Selected Component name (variable length). Stem variable No
FREZNOGO proceed 3 Set to 'NO' to stop the process Yes
FREZLOKD dataLocked 3 Fields locked? (YES/NO) Yes
FREZSHRT shortMsg 24 Short error message text Yes
FREZLONG longMsg 128 Long error message text Yes
FREZCURS cursorField 3 For ISPF where the cursor is placed on return to the panel display. Field values are shown here. Yes
FREZCHNG dataChanged 3 This field must be set to YES if you wish to return changed values to ZMF. Yes
FREZUVAR userVariables 1 Display User variable panel (Y/N) Yes 017