Checkout
This section describes the checkout functional area of the high-level language exits. The 4-character exit name identified is CKOT.
Select option 6 Checkout from the HLL Exit Definition - Function Selection (CMNHLLMM) panel to define exits for component checkout from baseline/promotion:
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 12 of 13
Command ===>________________________________________________________ Scroll ===> CSR
Internal   External   + Active 1=LE       Description     +
    Name    Name              2=REXX    Debug Userids       +
-------------------------------------------------------------------------------
CKOT01CK                NO      2       post checkout entry panel
    Debug: CKOTALL      YES     2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT01CL                NO      2       post component list for pkg ckot
    Debug: CKOTALL      YES     2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT01DL                NO      2       post component delete
    Debug: CKOTALL      YES     2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT01LB                NO      2       post library list where comp found
    Debug: CKOTALL      YES     2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT01LT                NO      2       post libtype display
    Debug: CKOTALL      YES     2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT01MS                NO      2       post member selection list
    Debug: CKOTALL      YES     2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT01PL                NO      2       post promotion library list
    Debug: HXPCKOT      YES     1       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT00XM                NO      2       pre service call
    Debug: CKOTALL      NO      2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT01XM                NO      2       post service call
    Debug: CKOTALL      YES     2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT0001                NO      2       pre checkout selection criteria
    Debug: HXCCKOT      NO      1       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT0101                NO      2       post checkout selection criteria
    Debug: HXCCKOT      YES     1       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT0002                NO      2       pre batch checkout panel
    Debug: CKOJOBCD     YES     2       USERA1 ,USERA2
-------------------------------------------------------------------------------
CKOT0102                NO      2       post batch checkout panel
    Debug: CKOJOBCD     YES     2       USERA1 ,USERA2
- 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.
An internal exit name of CKOT0p01, for example, means that both pre- and post-exits exist. That is, the name of the pre-exit is CKOT0001 and the name of the post-exit is CKOT0101. If it makes no sense to have a pre-exit, the internal exit name is given as CKOT0101 (post-exit only). If it makes no sense to have a post-exit, the internal exit name is given as CKOT0001 (pre-exit only).
The pre-exit is taken before the panel is displayed and the post-exit is taken after the panel has been displayed.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 checkout exit points are placed are:
| Panel ID | Description | Exit Name | 
|---|---|---|
| CMNMCKOT/R | Checkout entry panel from the build function | CKOT01CK | 
| CMNCKOT1 | Checkout selection criteria | CKOT0001/CKOT0101 | 
| CMNCKOT2 | Batch checkout panel | CKOT0002/CKOT0102 | 
| CMNCLTS | L Libtype table display | CKOT01LT | 
| CMNCCMSL/2 | Member list baseline/promotion | CKOT01MS | 
| CMNCMLSL | Member locate library list | CKOT01LB | 
| CMNCPLSL | Promotion library list | CKOT01PL | 
| CMNCKOTS/L/X | Member list - package checkout | CKOT01CL | 
| CMNSTG20 | Confirm delete request | CKOT01DL | 
Pre- and post-XML-service calls for checkout are:
| XML Service Name | Description | Exit Name | 
|---|---|---|
| cmponent.service.checkout | Component Checkout | CKOT00XM/CKOT01XM | 
Sample Exits
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 checkout exit examples are:
- 
HXCCKOT - COBOL example 
- 
HXPCKOT - PL/I example 
- 
HXRCKOT - REXX example 
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. | 
|---|---|---|---|---|---|
| CKOTORGN | callOrigin | 3 | ISPF = SPF, XML Service = XML, ZDD = ZDD, ZMF4ECL = ECL | No | |
| CKOTZMFS | zmfSubs | 1 | ZMF subsystem character No | ||
| CKOTPDB2 | db2Subs | 4 | Default Db2 subsystem for this ZMF No | ||
| CKOTUSER | userid | 8 | Userid for function calling this exit No | ||
| CKOTEXTN | externalName | 256 | External routine name defined for this exit No | ||
| CKOTPKGN | packageId | 10 | The package being acted on No | ||
| CKOTPSTA | packageStatus | 3 | Package status (DEV, FRZ, and so on) No | ||
| CKOTPINS | packageInsDate | 8 | Package Install Date yyyymmdd No | ||
| CKOTCOMP | componentName | 256 | Component Name | Yes | 001 | 
| CKOTLTYP | componentType | 3 | Component library type | Yes | 002 | 
| CKOTBSLB | chkOutSourceLocation | 1 | Source Location | Yes | |
| CKOTMODE | chkOutMode | 1 | Online or Batch | Yes | 008 | 
| CKOTBLVL | basePromoLibLevel | 3 | Baseline/Promotion level | Yes | 003 | 
| CKOTPSIT | promotionSiteName | 8 | Promotion Site | Yes | 013 | 
| CKOTPNAM | promotionName | 8 | Promotion Name | Yes | 014 | 
| CKOTRLSN | release | 8 | Release Name | Yes | |
| CKOTAREA | releaseArea | 8 | Release Area | Yes | |
| CKOTCKTO | chkOutTargetLocation | 1 | Target Location (dev/stage) | Yes | 004 | 
| CKOTCKDS | personalLibStorageMeans | 1 | Personal lib dsorg | Yes | 006 | 
| CKOTPDSN | personalLib | 1026 | Personal library name | Yes | 005 | 
| CKOTLOCK | lockComponent | 3 | Lock Component (Yes/No) | Yes | 009 | 
| CKOTUCUO | useCompUsrOpts | 3 | Use component user options (Yes/No) | Yes | 018 | 
| CKOTSPSV | savePriorVersion | 3 | Save staging versions (Yes/No) | Yes | |
| CKOTSUPN | suppressNotify | 3 | Suppress batch messages (Yes/No) | Yes | 024 | 
| CKOTMIXC | mixedCase | 1 | Name has mixed case? | Yes | 037 | 
| CKOTJOB1 | jobCard01 | 72 | Job card line #1 | Yes | 020 | 
| CKOTJOB2 | jobCard02 | 72 | Job card line #2 | Yes | 021 | 
| CKOTJOB3 | jobCard03 | 72 | Job card line #3 | Yes | 022 | 
| CKOTJOB4 | jobCard04 | 72 | Job card line #4 | Yes | 023 | 
| CKOTUVPN | userVarPanel | 8 | User variable panel name | Yes | |
| CKOTUV01 - 05 | userVariable01-05 | 8*5 | Set of five 8-byte package user variables | 027-031 | |
| CKOTUV06 - 10 | userVariable06-10 | 72*5 | Set of five 72-byte package user variables | 032-036 | |
| CKOTSLTP | selLibraryType | 3 | Selected library type | No | |
| CKOTVVMM | verModLevel | 5 | Version.mod level | No | |
| CKOTCRDT | createDate | 10 | Member create date | No | |
| CKOTCHGD | changeDate | 10 | Member change date | No | |
| CKOTCHGT | changeTime | 5 | Member change time | No | |
| CKOTCSZE | memberSize | 5 | Member change size | No | |
| CKOTUSRN | username | 8 | User name | No | |
| CKOTLSZE | loadSize | 6 | Load member size | No | |
| CKOTLTTR | loadTtr | 6 | Load member TTR | No | |
| CKOTALAS | loadAlias | 8 | Load member alias | No | |
| CKOTSSSI | loadSetssi | 8 | Load member setssi | No | |
| CKOTATTR | loadAttr | 8 | Load member attributes | No | |
| CKOTGO | proceed | 3 | Set to 'NO' to stop the process | Yes | |
| CKOTLOKD | dataLocked | 3 | Fields locked?(YES/NO) | Yes | |
| CKOTSHRT | shortMsg | 24 | Short error message text | Yes | |
| CKOTLONG | longMsg | 128 | Long error message text | Yes | |
| CKOTOPTN | optionRequested | 1 | Option used in ISPF, either from the primary entry panel for checkout or the digit in the C1, C2, C3, C4 checkout line commands available from the package list | No | |
| CKOTCURS | cursorField | 3 | For ISPF where you wish the cursor to be placed on return to the panel display. The values relating to each field are shown in this table. | Yes | |
| CKOTCHNG | dataChanged | 3 | This field must be set to YES to return changed values to ZMF. | Yes | |
| CKOTCOVL | confirmOverlay | 3 | This field must be set to YES to confirm overlay. | Yes | 019 | 
| CKOTUVAR | userVariables | 1 | Display User variable panel (Y/N) | Yes | 026 | 
| CKOTSPKG | sourcePackage | 10 | Checkout from this package | Yes | 025 | 
| CKOTOPRF | optsProfile | 8 | To select the ZDDOPTS profile to display user options for the ZMF Client Pack | Yes |