Skip to content

Package Approve and Reject

This section describes the package approve/reject functional area of the high-level language exits. The 4-character exit name identifier is APRV.

Select option A Approve/Reject from the HLL Exit Definition - Function Selection (CMNHLLMM) panel to define exits for the package approve and reject functions:

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 10 of 11
Command ===>                                                    Scroll ===> CSR

Internal External   + Active        1=LE            Description          +
    Name    Name                    2=REXX          Debug Userids           +
APRV00XM                NO          2               pre service all for approve
    Debug:  HXRAPRV     NO          2               USER12
APRV01XM                NO          2               post service call for approve
    Debug:  HXRAPRV     NO          2               USER12
APRV0101                NO          2               list of packages to be approved
    Debug: HXRAPRV      YES         2               USER12
APRV0102                NO          2               approve/reject option menu
    Debug: HXRAPRV      YES         2               USER12
APRV0103                NO          2               approver entity list
    Debug: APRV0103     YES         2               USER12
APRV0004                NO          2               pre checkoff comments
    Debug: HXRAPRV      YES         2               USER12 ,USER58
APRV0104                NO          2               post checkoff comments
    Debug: HXRAPRV      YES         2               USER12 ,USER58
APRV0105                NO          2               reject reasons entity selection
    Debug: HXRAPRV      YES         2               USER12
APRV0006                NO          2               pre reject reasons text
    Debug: HXRAPRV      YES         2               USER12 ,USER58
APRV0106                NO          2               post reject reasons text
    Debug: HXRAPRV      YES         2               USER12 ,USER58
The panels around which exit points will be placed are listed below. The internal exit name (also known as function code) is APRV0pnn, 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. The post-exit is taken after the panel has been displayed.

An internal exit name of APRV0p04, for example, means that both pre- and post-exits exist. That is, the name of the pre-exit is APRV0004 and the name of the post-exit is APRV0104. If it makes no sense to have a pre-exit, the internal name will be given as APRV0101 (post-exit only). If it makes no sense to have a post-exit, the internal exit name is given as APRV0001 (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 approve/reject exit points are placed are:

Panel ID Description Exit Name
CMNAPPL1 Resulting list of packages to be approved (short) APRV0101
CMNAPPL2 Resulting list of packages to be approved (long) APRV0101
CMNAPPOP Approve function submenu APRV0102
CMNAPPLS Approver entity list for action APRV0103
CMNCHKLS Checkoff comments APRV0004/APRV0104
CMNREJR0 Reject reason entity selection APRV0105
CMNREJR1 Reject reason text APRV0006/APRV0106

Pre- and post-XML-service calls for approve are:

XML Service Name Description Exit Name
package.service.approve Pre-service call for approve (all actions) APRV00XM
package.service.approve Post-service call for approve APRV01XM

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

The approve exit examples are:

  • HXCAPRV - COBOL example

  • HXPAPRV - PL/I example

  • HXRAPRV - REXX example

  • HXRAPRV3 - REXX example exit to warn the approver if check has found an issue and to give the approver two options:

    • Ignore warnings and proceed.
    • Cancel approval.

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

Data Interface

LE-Language Variable Name REXX Variable Name Length Purpose Modifiable Cursor Field No.
APRVFUNC function 8 Internal exit name No
APRVDBUG debugCall 1 Debug exit call (Y/N) No
APRVZMFS zmfSubs 1 ZMF subsystemcharacter No
APRVPDB2 db2Subs 4 Default Db2 subsystem for this ZMF No
APRVUSER userid 8 Userid for function calling this exit No
APRVEXTN externalName 256 External routine name defined for this exit No
APRVACTN approverAction 1 (approve/reject/review /checkoff) Yes 001
APRVPKGN packageId 10 The package being acted on No
APRVPSTA packageStatus 1 See service values No
APRVPINS packageInstallDate 8 Package installation date No
APRVPLVL packageLevel 1 Package level No
APRVPTYP packageType 1 Package type No
APRVDEPT packageDepartment 4 Department Yes
APRVWKRQ packageWorkRequest 12 Work request number Yes
APRVCRTR packageCreator 8 User id of the package creator No
APRVPRST promotionSite 8 Promotion site No
APRVPRNM promotionName 8 Promotion name No
APRVPRLV promotionLevel 2 Promotion level No
APRVPRDT promotionDate 8 Promotion date No
APRVPRTM promotionTime 6 Promotion time No
APRVPRUS promotionUser 8 Promotion userid No
APRVAENT approvalEntity 8 Approval entity No
APRVADSC approvalDescription 44 Approval description No
APRVACDE approvalCode 1 Approval code No
APRVAUSR approvalUser 8 Userid of the approver No
APRVADTE approvalDate 8 Approval date No
APRVATME approvalTime 6 Approval time No
APRVAORD orderNumber 2 Order number No
APRVAFUN lastFunction 7 Last function No
APRVREJR reasons.n 72 Stem variable. 10 reject reasons Yes 010-019
APRVCKCM comments.n 72 Stem variable 14 checkoff comments Yes 031-044
APRVGO proceed 3 Set to 'NO' to stop the process Yes
APRVLOKD dataLocked 3 Fields locked? (YES/NO) Yes
APRVSHRT shortMsg 24 Short error message text Yes
APRVLONG longMsg 128 Long error message text Yes
APRVCURS cursorField 3 For ISPF to place the cursor on return to panel display. Field values are shown in this table. Yes
APRVCHNG dataChanged 3 This field must be set to YES to return changed values to ZMF. Yes