Skip to content

Customizing Exits

ChangeMan ZMF exit programs are delivered inactive, except for exit CMNEXINS. Follow these steps to customize and activate an exit to modify ChangeMan ZMF behavior.

Find the Exit You Want

See Exit Descriptions to find an exit that targets the function you want to modify. Review the examples in the exit description to see how the exit can be used to alter the target function. Read the comments at the top of the exit source member for more information about the exit. Review the sample code in the exit to see if the exit can perform the function you want.

Modify Exit Source

Follow these steps to modify the exit source to perform the function you want.

  1. Check out the exit source in your ChangeMan ZMF application. If you do not have ChangeMan ZMF application, copy the source from the delivered ASMSRC library to your custom ASMSRC library.

  2. Edit the source to enable the exit. Comment out the following code to cause the exit program to be loaded at ChangeMan ZMF started task initialization:

    ***********************************************************************
    *
    * Comment (or delete) the following 2 lines to activate this exit.
    *
    CMNEX014 CSECT
    DC Y(2046) inactive module
    ***********************************************************************
    

    ...

  3. Modify the exit source. Many exits are delivered with examples that can be used as they are delivered, or the sample code can be modified to perform the function you desire.

    1. Some exits contain tables with entries that can be changed and extended to serve the purpose you need. Examine the end of the table to see how the program detects the end of table data, and make adjustments if necessary.

    2. If necessary, set the exit return code. If sample code is provided, it usually sets the return code to the appropriate value to communicate the exit result to the calling program. Valid values for return codes are described in comments at the top of source members.

  4. Use coding techniques that will make it easy to see and understand your modifications when they must be updated or applied to the next release of ChangeMan ZMF.

    If you comment out delivered code or overtype it, compare tools will often show the custom code as interleaved sets of inserted and deleted lines that are hard to understand. Use one of the following techniques to make code compare results easier to read:

    • Code custom table entries as a separate copybook component, and insert a COPY statement into the exit code in place of the delivered sample table. To update the table, change the copylib member and reassemble the exit.

    • Use an AGO statement to exclude delivered code, then place your custom code beneath the excluded code.

    ****
    * Valid work request number table
    ****
    X14$VWR#    DS 0CL12 valid work request number
                AGO .SKIP14
                DC CL12'WORK#0000001'
                DC CL12'WORK#0000002'
                DC CL12'WORK#0000003'
                DC CL12'WORK#0000004'
                DC CL12'WORK#0000005'
                DC CL12'WORK#0000006'
    .SKIP14 ANOP
                DC CL12'CUSTOM000021' custom work request
                DC CL12'CUSTOM000022' custom work request
                DC CL12'CUSTOM000023' custom work request
                DC CL12'CUSTOM000024' custom work request
    X14#VWR# EQU (*-X14$VWR#)/12 maximum entries
    

    ...

  5. Add comments to your custom code so you will know what you were trying to accomplish when you must reapply your code to a new release of ChangeMan ZMF.

Assemble Exit Source

Stage customized exit source in your ChangeMan ZMF application. If you do not manage ChangeMan ZMF components with ChangeMan ZMF, assemble the exit source manually.

Note

RENT and ALIGN assemble options are now both specified in the SERNET ASSEMBLE.JCS.

  1. Use the sample assembly JCL provided in member ASSEMBLE in the CMNZMF CNTL library, or use your standard assemble procedure.

  2. Use the options per the sample member in the supplied .CNTL library:

    • Assemble ASMA90: ALIGN,LIST,XREF(SHORT),RENT,OBJECT

    • Binder IEWL: LIST,XREF,RENT,REFR,MAP,REUS,AC=0

    • Follow instructions provided in sample .ASMSRC library members

  3. Preserve the delivered exit load modules by link editing into a custom load library, not the delivered load library. See Preserving Vendor Versions of ChangeMan ZMF Components

  4. Verify that the assemble and link edit steps completed successfully and that the link edit completed without unresolved external references.

  5. Verify that the link edit options displayed in the directory of your custom LOAD library are the same as those displayed in the directory of the delivered LOAD library. !!! important In particular, check directory entries for AC, AM, and RM.

  6. Test the new exit load module in a test ChangeMan ZMF instance.

Refresh Exit Load

After you assemble and link edit a customized exit, you must take further action to ensure that your changes take effect.

This table tells you what action to take depending on where the exit runs.

Where the Exit Runs Action
SERNET started task Stop and start (recycle) the started task
ChangeMan ZMF ISPF client Exit and reenter your ChangeMan ZMF ISPF session
File tailoring task (CMNADSP) or batch job Rerun the task, job, or job step

...

This table tells you where each exit runs.

Exit Name STC ISPF TASK/JOB
CMNEXINS Y Y Y
CMNEX001 Y
CMNEX002 Y Y
CMNEX003 Y Y
CMNEX004 Y
CMNEX005 Y
CMNEX006 Y Y
CMNEX007 Y Y
CMNEX008 Y Y Y
CMNEX009 Y Y
CMNEX010 Y
CMNEX011 Y
CMNEX012 Y Y
CMNEX014 Y Y
CMNEX015 Y
CMNEX016 Y
CMNEX019 Y Y
CMNEX020 Y
CMNEX021 Y
CMNEX022 Y
CMNEX023 Y Y
CMNEX024 Y
CMNEX025 Y
CMNEX026 Y Y
CMNEX027 Y Y
CMNEX028 Y Y Y
CMNEX030 Y Y
CMNEX031 Y
CMNEX032 Y
CMNEX033 Y Y
CMNEX034 Y Y
CMNEX035 Y Y
CMNEX036 Y
CMNEX037 Y
CMNEX038 Y
CMNEX039 Y
CMNEX040 Y
CMNEX041 Y
CMNEX042 Y
CMNEX043 Y Y
CMNEX044 Y
CMNEX101 Y
CMNEX102 Y
CMNEX103 Y
CMNEX201 Y
CMNEX210 Y
CMNEX220 Y

...

Refresh VLF and LLA

If you put ChangeMan ZMF load libraries in the LINKLIST, you must:

  1. Reload the Virtual Lookaside Facility (VLF) if it is enabled.

  2. Refresh the Library Lookaside (LLA) facility.

Note

The ChangeMan ZMF Installation Guide recommends that you do not LINKLIST ChangeMan ZMF libraries and that you use STEPLIB and JOBLIB instead.

Exit Lists in SERPRINT

Active exits are listed in SERPRINT for the SERNET started task at startup. Example:

SER4340I CMNSTART CMNEXINS loaded
SER4340I CMNSTART CMNEX023 loaded
SER4340I CMNSTART CMNEX026 loaded

...