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 |