Package Update
This section describes the package-update functional area of the high-level language exits. The 4-character exit name identifier is PUPD.
Select option 3 Package Update from the HLL Exit Definition - Function Selection (CMNHLLMM) panel to define customized ISPF variables for the package-update function:
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.
The panels around which exit points will be placed are listed below. The internal exit name (also known as function code) is PUPD0pnn, 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 (usually to provide model parameters displayed on the panel) and the post-exit is taken after the panel has been displayed (for example, for input validation or enforcement).
Package-update exits are only taken when panels are displayed in input mode.
For package update the package already exists and each update function is updating a specific set of package information. The data format consists of a fixed core of fields, which is provided on every exit call, followed by a single variable length set of information pertaining to the specific update being applied. The map to be used will depend on the exit function code (internal exit name).
Package Update:
Panel ID | Description | Associated Package-Create Panel ID | Exit Name |
---|---|---|---|
CMNPGNL1 | Updates control information | CMNUPD01 | PUPD0p01 |
CMNPGNL2 | Updates package description | CMNUPD02 | PUPD0p02 |
CMNPGNL3 | Updates installation instructions | CMNUPD03 | PUPD0p03 |
CMNPGNL4 | Updates scheduling dependencies | CMNUPD04 | PUPD0p04 |
CMNPGNL5 | Updates affected applications | CMNUPD05 | PUPD0p05 |
CMNONSTE | Updates install information | CMNUPD06 | PUPD0p06 |
CMNPRSTI | Updates site install information | CMNUPD07 | PUPD0p07 |
CMNPGNL6 | Updates complex/super package information | CMNUPD08 | PUPD0p08 |
CMNDPUP1/CMNDPUP2 | Updates package user options | PUPD0pPU | |
CMNRMBRO | Updates ERO information | PUPD0pER | |
CMNDB2UP | Updates Db2 option special libtypes | PUPD0pD2 | |
CMNIMSYS | Updates IMS option physical system information | PUPD0pIS | |
CMNIMACB | Updates IMS options ACB definitions | PUPD0pIA | |
CMNIMDBD | Updates IMS option DBD definitions | PUPD0pID | |
CMNIMPSB | Updates IMS option PSB definitions | PUPD0pIP | |
CMNQRYL2 | Monitor Limbo / All | PUPD01M6 / M7 |
Note
The PUPD01M6 (Monitor ALL site) and PUPD01M7 (Monitor DP site) exits cannot change any data values. They can be used to validate the proposed change of install date and, if necessary, reject the update with a message.
In order to allow the cursor to be positioned at specific panel fields, a number relating to the panel field in question will be passed back in the XPUPOCURS field. These numbers are documented in the supplied copybook for the function (and, eventually, in the lists of REXX field names). You must make sure that your exit returns a field number that is valid for the panel about to be (re)displayed. If the field number is not valid, a dialog error results.
Each package-update exit call, if it requires variable blocked information, only contains a single block as relevant to the call.
Note
This is different from package create, which contains them all if they are available, null if not).
***
* VARIABLE BLOCK POINTERS
* EACH POINTS TO A DIFFERENT VARIABLE LENGTH SECTION OF DATA.
* THEY APPLY TO EACH SPECIFIC TYPE OF PACKAGE UPDATE.
* THEY REDEFINE THE SAME AREA OF STORAGE AND ARE MUTUALLY
* EXCLUSIVE. PLEASE REFER TO THE VALUE IN PUPDFUNC FOR WHICH
* WHICH MAP TO USE.
*
* EACH ENTRY IN A VARIABLE LENGTH BLOCK CONSISTS OF THE DATA
* FOLLOWED BY A POINTER TO THE NEXT ENTRY. WHEN THAT POINTER
* IS NULL THEN THERE ARE NO FURTHER ENTRIES IN THE BLOCK.
***
03 PUPDVARB-PTR USAGE IS POINTER.
***
* PUPDFUNC = 'PUPD0002' OR 'PUPD0102'
*
* PACKAGE DESCRIPTION - UP TO 46 LINES OF 72 BYTES
***
01 PUPDVB1.
03 PUPDPDSC PIC X(72).
* LINE OF DESCRIPTION (087)
03 PTR-NEXT-PUPDVB1 POINTER.
* POINTER TO NEXT LINE
***
* PUPDFUNC = 'PUPD0003' OR 'PUPD0103'
*
* PKG IMPLEMENTATION INSTRUCTIONS - UP TO 46 LINES OF 72 BYTES
***
01 PUPDVB2 REDEFINES PUPDVB1.
03 PUPDPIMI PIC X(72).
* PKG IMPL INSTRUCTION(088)
03 PTR-NEXT-PUPDVB2 POINTER.
* POINTER TO NEXT LINE
The user exit should follow the pointer chains for the single repeating group until the pointer is null.
If PUPDLOKD is set to |yes|, data fields on the related panel will be set to output only. The list of panels for which this applies is:
Panel ID | Description | Associated Package-Create Panel ID | Exit Name |
---|---|---|---|
CMNPGNL1 | Updates control information | CMNUPD01 | PUPD0001 |
CMNPGNL2 | Updates package description | CMNUPD02 | PUPD0002 |
CMNPGNL3 | Updates installation instructions | CMNUPD03 | PUPD0003 |
CMNPGNL4 | Updates scheduling dependencies | CMNUPD04 | PUPD0004 |
CMNPGNL5 | Updates affected applications | CMNUPD05 | PUPD0005 |
CMNONSTE | Updates install information | CMNUPD06 | PUPD0006 |
CMNPRSTI | Updates site install information | CMNUPD07 | PUPD0007 |
CMNPGNL6 | Updates complex/super package information | CMNUPD08 | PUPD0008 |
CMNDB2UP | Updates Db2 option special libtypes | PUPD00D2 | |
CMNIMSYS | Updates IMS option physical system information | PUPD00IS | |
CMNIMACB | Updates IMS options ACB definitions | PUPD00IA | |
CMNIMDBD | Updates IMS option DBD definitions | PUPD00ID | |
CMNIMPSB | Updates IMS option PSB definitions | PUPD00IP |
PUPDSHRT and PUPDLONG are used to set a message on the next panel/window to be displayed.
If PUPDGO is set to NO, the fields PUPDSHRT, PUPDLONG, and PUPDCURS will be used to set an error message and the associated panel will be (re)displayed by the client.
If the user exit wishes to change any of the data fields, it does that in place and sets PUPDCHNG to |yes|. If PUPDCHNG is not set to |yes|, any data changes are ignored by the client. Note that while the full exit data structure is passed to the exits driven around the package user variable panels (CMNDPUP1/2) only package user variables may be updated by these exits.
A single data structure is passed to all of these exits.
Data Interface for the Package-Update Exits
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDFUNC | function | 8 | Function code | No | |
PUPDDBUG | debugCall | 1 | Debug exit call (Y/N) | No | |
PUPDORGN | callOrigin | 3 | ISPF=SPF XML Service=XML ZDD=ZDD ZMF4ECL=ECL | No | |
PUPDZMFS | zmfSubs | 1 | ZMF subsystem Id | No | |
PUPDPDB2 | db2Subs | 4 | Primary Db2 subsystem | No | |
PUPDUSER | userid | 8 | User Id | No | |
PUPDEXTN | externalName | 256 | External name for exit | No | |
PUPDAPPL | applName | 4 | Application | No | |
PUPDLOKD | dataLocked | 3 | Fields locked? (yes/NO) | yes | |
PUPDGO | proceed | 3 | Proceed? (yes/NO) | yes | |
PUPDSHRT | shortMsg | 24 | Short message | yes | |
PUPDLONG | longMsg | 128 | Long message | yes | |
PUPDCURS | cursorField | 3 | Cursor tag | yes | |
PUPDCHNG | dataChanged | 3 | Data changed? (yes/NO) | yes | |
PUPDPKGN | packageName | 10 | Package name | No | |
PUPDCTSI | packageCreator | 8 | User id of package creator | No | |
PUPDPLVL | packageLevel | 1 | Package level | yes | 001 |
PUPDPTYP | packageType | 1 | Package type | yes | 002 |
PUPDPSTT | packageStatus | 1 | package status | No | |
PUPDCSPK | complexSuperPackageStatus | 1 | complex package status | No | |
PUPDRSCD | reasonCode | 3 | Reason code | yes | 004 |
PUPDCSPK | complexSuperPackage | 10 | Complex package | yes | 003 |
PUPDDEPT | packageDepartment | 4 | department | yes | 005 |
PUPDNAME | requestorName | 25 | Requester name | yes | 006 |
PUPDPHON | requestorPhone | 15 | Requester phone | yes | 007 |
PUPDPCAC | problemActionCode | 1 | Contingency action code | yes | 008 |
PUPDOPCA | otherProblemAction | 44 | Other contingency action | yes | 009 |
PUPDSCHD | schedulerType | 1 | Scheduler | yes | 010 |
PUPDTCDU | tempChangeDuration | 3 | Temporary change duration | yes | 011 |
PUPDWRQN | packageWorkRequest | 12 | Work request number | yes | 012 |
PUPDTITL | packageTitle | 255 | Package title | yes | 013 |
PUPDUPAN | userPanel | 8 | Package user variable panel | yes | |
PUPDNTUS | notifyUser | 8 | Notify user | Yes | 161 |
PUPDOPRF | optsProfile | 8 | Used to select the ZDDOPTS profile for the display of user options for the ZMF Client Pack | yes |
Package User Variables
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPD01 | userVarLen101-userVarLen115 | 1 * 15 | Set of fifteen 1-byte package user variables | yes | 014-028 |
PUPD0199 | userVarLen199 | 1 | (Reserved) | yes | |
PUPD02 | userVarLen201 - userVarLen211 | 2 * 11 | Set of eleven 2-byte package user variables | yes | 029-039 |
PUPD03 | userVarLen301-310 | 3 * 10 | Set of ten 3-byte package user variables | yes | 040-049 |
PUPD04 | userVarLen401-410 | 4 * 10 | Set of ten 4-byte package user variables | yes | 050-059 |
PUPD08 | userVarLen801-810 | 8 * 10 | Set of ten 8-byte package user variables | yes | 060-069 |
PUPD16 | userVarLen1601-1605 | 16 * 5 | Set of five 16-byte package user variables | yes | |
PUPD44 | userVarLen4401-4405 | 44 * 5 | Set of five 44-byte package user variables | yes | 075-079 |
PUPD72 | userVarLen7201-7205 | 72 * 5 | Set of five 72-byte package user variables | yes | 080-084 |
Release and Release Area
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDRLSM | release | 8 | Release | yes | |
PUPDRARE | releaseArea | 8 | Release area | yes | 086 |
Package Description
LE-Language Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDPDSC | packageDesc.n | 72 * 46 | Up to forty-six 72-byte lines of description | yes | 087 |
Implementation Instructions
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDPIMI | packageImplInst.n | 72 * 46 | Up to forty-six 72-byte lines of implementation instructions | yes | 088 |
Scheduling Information
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDSSSJ | schedulingInfo.successorJobName.n | 8 | Successor job name | yes | 089 |
PUPDSSPJ | schedulingInfo.predecessorJobName.n | 8 | Predecessor job name | yes | 090 |
Participating Packages
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDPPAPPUPDPPNM | partPackageName.n(10) | 46 | Set of n 4 byte and 6 byte participating package appl/numbers (LE), n 10 byte participating package names (REXX) | yes | 091 |
Affected Applications
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDAAPP | affectedApplName.n | 4 | Set of n 4-byte application names(n is limited only by storage constraints) | yes | 092 |
Install Site Information
Set of n sets of installation site information (n is limited only by storage constraints
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDSITE | siteInfo.siteName.n | 8 | Site name | yes | 093 |
PUPDINDT | siteInfo.installDate.n | 8 | Install date | yes | 094 |
PUPDFINT | siteInfo.fromInstallTime.n | 6 | Install from time | yes | 095 |
PUPDTINT | siteInfo.toInstallTime.n | 6 | Install to time | yes | 096 |
PUPDOANM | siteInfo.contactName.n | 25 | Originating analyst | yes | 097 |
PUPDOAPH | siteInfo.contactPhone.n | 15 | Analyst phone number | yes | 098 |
PUPDAANM | siteInfo.alternateContactName.n | 25 | Alternative analyst | yes | 099 |
PUPDAAPH.n | siteInfo.alternateContactPhone.n | 15 | Alternative analyst phone number | yes | 100 |
Db2 Libtype Information
Set of n sets of Db2 libtype information (n is limited only by storage constraints
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDDLTP | db2Info.libType.n | 3 | Db2 Libtype | yes | 101 |
PUPDDSUB | db2Info.subType.n | 1 | Db2 Sub type | yes | 102 |
PUPDEOSC | db2SqlTerminationChar.n | 1 | SQL end of sentence | yes | 103 |
IMS System Information
Set of n sets of IMS system information (n is limited only by storage constraints
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDISID | imsSysInfo.imsControl Region.n | 4 | IMS system Id | yes | 104 |
PUPDISRS | imsSysInfo.imsSiteName.n | 8 | ZMF remote site | yes | 105 |
PUPDISLN | imsSysInfo.imsLogicalSite.n | 8 | IMS logical site name | yes | 106 |
PUPDISOP | imsSysInfo.isImsGlobalActivationEnabled.n | 1 | IMS option activated | yes | 107 |
PUPDISDV | imsSysInfo.imsDevCharSuffix.n | 1 | IMS device character | yes | 108 |
PUPDISMF | imsSysInfo.isMfsAlwaysGenerated.n | 1 | Process MFS (Y/N)? | yes | 109 |
PUPDISPS | imsSysInfo.isPsbAlwaysGenerated.n | 1 | Process PSB (Y/N)? | yes | 110 |
PUPDISDB | imsSysInfo.isDbdAlwaysGenerated.n | 1 | Process DBD (Y/N)? | yes | 111 |
PUPDISAC | imsSysInfo.isAcbAlwaysCreatedForPcbs.n | 1 | Process ACB (Y/N)? | yes | 112 |
PUPDISBU | imsSysInfo.imsBackupModelLib.n | 25 | IMS back-up model data set name | yes | 113 |
PUPDISS1 | imsSysInfo.imsGenMacroComponent.n | 8 | Stage 1 gen member name | yes | 114 |
PUPDISRL | imsSysInfo.imsResLib.n | 44 | IMS RESLIB | yes | 115 |
PUPDISML | imsSysInfo.imsMacLib.n | 44 | IMS MACLIB | yes | 116 |
PUPDISMS | imsSysInfo.imsModStatLib.n | 44 | IMS MODSTAT | yes | 117 |
PUPDISGM | imsSysInfo.imsGenMacroStageLib.n | 44 | IMS sysgen MACLIB | yes | 118 |
PUPDISPL | imsSysInfo.imsPsbLib.n | 44 | IMS PSBLIB | yes | 119 |
PUPDISDL | imsSysInfo.imsDbdLib.n | 44 | IMS DBDLIB | yes | 120 |
PUPDISAL | imsSysInfo.imsAcbLib.n | 44 | IMS ACBLIB | yes | 121 |
PUPDISFL | imsSysInfo.imsFormatLib.n | 44 | IMS FMTLIB | yes | 122 |
PUPDISRF | imsSysInfo.imsRefLib.n | 44 | IMS referal | yes | 123 |
IMS ACB Information
Set of n sets of IMS system information (n is limited only by storage constraints)
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDIAID | imsAcbInfo.imsControlRegion.n | 4 | IMS system Id | yes | 124 |
PUPDIARS | imsAcbInfo.imsSiteName.n | 8 | ZMF remote site | yes | 125 |
PUPDIALN | imsAcbInfo.imsLogicalSite.n | 8 | IMS logical site name | yes | 126 |
PUPDIATY | imsAcbInfo.acbStatementType.n | 3 | IMS ACB type | yes | 127 |
PUPDIACT | imsAcbInfo.acbGenStatementType.n | 8 | ACB control word | yes | 128 |
PUPDIASR | imsAcbInfo.component.n | 8 | ACB source name | yes | 129 |
PUPDIATG | imsAcbInfo.targetComponentType.n | 8 | ACB target name | yes | 130 |
PUPDIALT | imsAcbInfo.componentType.n | 3 | ACB libtype | yes | 131 |
PUPDIATL | imsAcbInfo.targetComponentType.n | 3 | ACB target libtype | yes | 132 |
IMS PSB/DBD Information
Set of n sets of IMS system information (n is limited only by storage constraints)
LE-Lang Var Name | REXX Var Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PUPDIPID | imsDbdPsbInfo.imsControlRegion.n | 4 | IMS system Id | Yes | 133 |
PUPDIPRS | imsDbdPsbInfo.imsSiteName.n | 8 | ZMF remote site | Yes | 134 |
PUPDIPLN | imsDbdPsbInfo.imsLogicalSite.n | 8 | IMS logical site name | Yes | 135 |
PUPDIPCT | imsDbdPsbInfo.controlStatement.n | 8 | Control word | Yes | 136 |
PUPDIPSR | imsDbdPsbInfo.component.n | 8 Source name | Yes | 137 | |
PUPDIPLT | imsDbdPsbInfo.componentType.n | 3 | Libtype | Yes | 138 |
PUPDIPOV | imsDbdPsbInfo.overrideStatement.n | 64 | Override statement | Yes | 139 |
PUPDIPOR | imsDbdPsbInfo.originalStatement.n | 64 | Original statement | Yes | 14 |