Package Create
This section describes the package-create functional area of the high-level language exits. The 4-character exit name identifier is PCRT.
The Package create function allows you to skip certain create panels based on the create method (for example, short or long). You can set HLLX variables early in the create process and allow the later panels to have access to those HLLX variables.
Select option 3 Package Create from the HLL Exit Definition - Function Selection (CMNHLLMM) panel to define customized ISPF variables for the package-create function:
will be added as Serena expands this facility.): In response, the HLL Exit Definition (CMNHLLMN) panel is displayed.
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
Panels around which exit points will be placed are listed below. The internal exit name (also known as function code) is PCRE0pnn, 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); the post-exit is taken after the panel has been displayed (for example, for input validation or enforcement).
For the package-create function, we are building the complete set of information as we progress through the dialog. The exit data format is constant throughout the process but fields may not be filled in depending on where the exit is in the process.
Package Create
Panel ID | Panel Description | Exit Name |
---|---|---|
CMNCRT01 | Initial package-create panel (non-ERO) | PCRE0p01 |
CMNCRT0R | Initial package-create panel (ERO) | PCRE0p01 |
CMNCRT02 | Package description (long form create only) | PCRE0p02 |
CMNCRT03 | Installation instructions (long form create only) | PCRE0p03 |
CMNCRT04 | Scheduling dependencies | PCRE0p04 |
CMNCRT05 | Affected applications | PCRE0p05 |
CMNDPUP1/CMNDPUP2 | Package user options | PCRE0pPU |
CMNCRT06 | Install time/date, etc. (ALL site) | PCRE0p06 |
CMNCRT07 | Site list with install date/time, etc. (DP site) | PCRE0p07 |
CMNCRT08 | Complex/Super information | PCRE0p08 |
XML Package-Create Service
- Service: package.create.service
- Exit name: PCRE0pXM
Note
No data values are taken from exit PCRE01XM (that is, after the XML request has completed) as no further processing takes place in the function to which changes in data values can be passed. The PCRE01XM exit is purely to allow you to initiate whatever post-package-create external processes you desire.
The basic framework for the data structure passed to all exits is the set of fields accepted by the package create service. In addition, we will pass fields that allow you to make further decisions and pass back information such as error messages and so on.
The XML package-create service pre-exit will have the exit call data formatted from the input service tags and will be taken before any of the service processing. The post-exit is taken after the package has been created and is the only exit to which the created package name is passed (all other exits being taken before the package has been created). You cannot change anything or affect processing from the XML service post-exit: It is intended to be used as a mechanism of notifying external processes that the package has been created.
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 XPCROCURS field. These numbers are documented in the supplied copybook for the function (and, eventually, in the lists of REXX field names). It is your responsibility to 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.
The package-create format shown below (in COBOL v5.1 format for compactness) is for illustration purposes. Copybooks will be created for COBOL (compatible with earlier versions of COBOL) and PL/I. The equivalent REXX variable list will also be published.
The request block of each HLL exit service request starts off with a few general fields followed by package-create function-specific fields.
COBOL Example
...
01 PCRT. *>REQUEST ELEMENT LAYOUT
***
* PACKAGE CREATE PROCESS HLL EXITS - PASSED VARIABLES
***
03 PCRTFUNC PIC X(8). *>FUNCTION CODE
03 PCRTDBUG PIC X(1). *>DEBUG EXIT CALL? Y/N
03 PCRTORGN PIC X(3). *>CALL ORIGIN
03 PCRTZMFS PIC X(1). *>ZMF SUBSYSTEM ID
03 PCRTPDB2 PIC X(4). *>PRIMARY Db2 SUBSYSTEM
03 PCRTUSER PIC X(8). *>USER ID
03 PCRTEXTN PIC X(156). *>EXTERNAL EXIT NAME
03 PCRTAPPL PIC X(4). *>APPLICATION
03 PCRTMETH PIC X(1). *>PKG CREATE METHOD
03 PCRTLOKD PIC X(3). *>FLDS LOCKED? YES/NO
03 PCRTGO PIC X(3). *>PROCEED? YES/NO
03 PCRTSHRT PIC X(24). *>SHORT MESSAGE
03 PCRTLONG PIC X(128). *>LONG MESSAGE
03 PCTRCURS PIC X(24). *>CURSOR TAG
03 PCRTCHNG PIC X(3). *>DATA CHANGED? YES/NO
03 PCRTCFPK PIC X(10). *>NAME OF PKG TO CARRY FWD
(More fields here. (See "Package Create" for a for full listing.)
03 PCRTRARE PIC X(8). *>RELEASE AREA
***
* VARIABLE BLOCK POINTERS
***
03 PCRTVB1L-PTR USAGE IS POINTER.
03 PCRTVB2L-PTR USAGE IS POINTER.
03 PCRTVB3L-PTR USAGE IS POINTER.
03 PCRTVB6L-PTR USAGE IS POINTER.
03 PCRTVB7L-PTR USAGE IS POINTER.
03 PCRTVBSL-PTR USAGE IS POINTER.
***
* PACKAGE DESCRIPTION - UP TO 46 LINES OF 72 BYTES
***
01 PCRTVB1.
03 PCRTPDSC PIC X(72). *>LINE OF DESCRIPTION
03 PTR-NEXT-PCRTVB1 POINTER. *>POINTER TO NEXT LINE
***
* IMPLEMENTATION INSTRUCTIONS - UP TO 46 LINES OF 72 BYTES
***
01 PCRTVB2.
03 PCRTPIMI PIC X(72). *>LINE OF INSTRUCTION
03 PTR-NEXT-PCRTVB2 POINTER. *>POINTER TO NEXT LINE
***
* SCHEDULING INFORMATION - LIMITED ONLY BY STORAGE CONSTRAINTS
***
01 PCRTVB3.
03 PCRTSCHI.
05 PCRTSSSJ PIC X(8). *>SUCCESSOR JOBNAME
05 PCRTSSPJ PIC X(8). *>PREDECESSOR JOBNAME
03 PTR-NEXT-PCRTVB3 POINTER. *>POINTER TO NEXT SET
The user exit should follow the pointer chains for each repeating group until the pointer is null. For example:
...
IF PCRTVB1L-PTR NOT = NULLS
SET ADDRESS OF PCRTVB1 TO PCRTVB1L-PTR
MOVE 'N' TO WS-VB1DONE
END-IF.
PERFORM S510-PROCESSVB1 UNTIL VB1DONE.
S510-PROCESSVB1.
DISPLAY 'PACKAGE DESCRIPTION : ' PCRTPDSC.
IF PTR-NEXT-PCRTVB1 NOT = NULLS
SET ADDRESS OF PCRTVB1 TO PTR-NEXT-PCRTVB1
ELSE
MOVE "Y" TO WS-VB1DONE
END-IF.
If the user exit wants to add groups to the list, it is responsible for allocating new storage (using LE facilities, for example, CEECRHP and CEEGTST) and adding to the chain. See member HXCSCHD in the CMNZMF SAMPLES distribution library for an example of how to do this.
If PCRTLOKD 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 | Panel Description | Exit Name |
---|---|---|
CMNCRT01 | Initial package-create panel (non-ERO) | PCRE0001 |
CMNCRT0R | Initial package-create panel (ERO) | PCRE0001 |
CMNCRT02 | Package description (long form create only) | PCRE0002 |
CMNCRT03 | Installation instructions (long form create only) | PCRE0003 |
CMNCRT04 | Scheduling dependencies | PCRE0004 |
CMNCRT05 | Affected applications | PCRE0005 |
CMNDPUP1/CMNDPUP2 | Package user options | PCRE00PU |
CMNCRT06 | Install time/date, etc. (ALL site) | PCRE0006 |
CMNCRT07 | Site list with install date/time, etc. (DP site) | PCRE0007 |
CMNCRT08 | Complex/Super information | PCRE0008 |
PCRTSHRT and PCRTLONG are used to set a message on the next panel/window to be displayed.
If PCRTGO is set to NO, the fields PCRTSHRT, PCRTLONG, and PCRTCURS will be used to set an error message, and the client will (re)display the associated panel.
If you wish to change any of the data fields, do that in place and set PCRTCHNG to YES. If PCRTCHNG is not set to YES, the client ignores any data changes. 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.
From the REXX point of view, the variables making up the data structure have the same names as the equivalent tags in the package-create service. The following extra variables will also be created:
...
dataLocked
proceed
shortMsg
longMsg
cursorField
dataChanged
The variable numbers of blocks will be handled by means of indexed stem variables. For example:
...
siteInfo.siteName.
siteInfo.installDate.
siteInfo.fromInstallTime.
siteInfo.toInstallTime.
siteInfo.contactName.
siteInfo.contactPhone.
siteInfo.alternateContactName.
siteInfo.alternateContactPhone.
An example of how to reference them successfully is:
...
Do i = 1 to siteInfo.siteName.0
say "siteInfo.siteName."||i||" : "siteInfo.siteName.i
end
A single data structure is passed to all of these exits. The data interface for the package-create exits looks like this:
Data Interface for the Package-Create Exits
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRTFUNC | function | 8 | Function code | No | |
PCRTDBUG | debugCall | 1 | Debug exit call (Y/N) | No | |
PCRTORGN | callOrigin | 3 | ISPF=SPF XML Service=XML ZDD=ZDD ZMF4ECL=ECL | No | |
PCRTZMFS | zmfSubs | 1 | ZMF subsystem Id | No | |
PCRTPDB2 | db2Subs | 4 | Primary Db2 subsystem | No | |
PCRTUSER | userid | 8 | User Id | No | |
PCRTEXTN | externalName | 256 | External name for exit | No | |
PCRTAPPL | applName | 4 | Application | No | |
PCRTMETH | createMethod | 1 | Create method | Yes | |
PCRTLOKD | dataLocked | 3 | Fields locked? (YES/NO) | Yes | |
PCRTGO | proceed | 3 | Proceed? (YES/NO) | Yes | |
PCRTSHRT | shortMsg | 24 | Short message | Yes | |
PCRTLONG | longMsg | 128 | Long message | Yes | |
PCRTCURS | cursorField | 3 | Cursor tag | Yes | |
PCRTCHNG | dataChanged | 3 | Data changed? (YES/NO) | Yes | |
PCRTCRPK | packageName | 10 | Created package (post service) | No | |
PCRTCFPK | packageModel | 10 | Name of model package | Yes | 001 |
PCRTPLVL | packageLevel | 1 | Package level | Yes | 002 |
PCRTPTYP | packageType | 1 | Package type | Yes | 003 |
PCRTRSCD | reasonCode | 3 | Reason code | Yes | 004 |
PCRTCSPK | complexSuperPackage | 10 | Complex package | Yes | 005 |
PCRTDEPT | packageDepartment | 4 | Package department | Yes | 006 |
PCRTNAME | requestorName | 25 | Requester name | Yes | 007 |
PCRTPHON | requestorPhone | 15 | Requester phone | Yes | 008 |
PCRTPCAC | problemActionCode | 1 | Contingency action code | Yes | 009 |
PCRTOPCA | otherProblemAction | 44 | Other contingency action | Yes | 010 |
PCRTSCHD | schedulerType | 1 | Scheduler | Yes | 011 |
PCRTTCDU | tempChangeDuration | 3 | Temporary change duration | Yes | 012 |
PCRTWRQN | packageWorkRequest | 12 | Work request number | Yes | 013 |
PCRTTITL | packageTitle | 255 | Package title | Yes | 014 |
PCRTNTUS | notifyUser | 8 | Notify user | Yes | 122 |
PCRTUPAN | userPanel | 8 | Package user variable panel | Yes | |
PCRTOPRF | optsProfile | 8 | Used to select the ZDDOPTS profile for the display of user options for the ZMF Client Pack | Yes |
Package User Variables
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRT01 | userVarLen101-userVarLen115 | 1 * 15 | Set of fifteen 1-byte package user variables | Yes | 015-029 |
PCRT0199 | userVarLen199 | 1 | (Reserved) | Yes | |
PCRT02 | userVarLen201 - userVarLen211 | 2 * 11 | Set of eleven 2-byte package user variables | Yes | 030-040 |
PCRT03 | userVarLen301-310 | 3 * 10 | Set of ten 3-byte package user variables | Yes | 041-050 |
PCRT04 | userVarLen401-410 | 4 * 10 | Set of ten 4-byte package user variables | Yes | 051-060 |
PCRT08 | userVarLen801-810 | 8 * 10 | Set of ten 8-byte package user variables | Yes | 061-070 |
PCRT16 | userVarLen1601-1605 | 16 * 5 | Set of five 16-byte package user variables | Yes | 071-075 |
PCRT44 | userVarLen4401-4405 | 44 * 5 | Set of five 44-byte package user variables | Yes | 076-080 |
PCRT72 | userVarLen7201-7205 | 72 * 5 | Set of five 72-byte package user variables | Yes | 081-085 |
Release and Release Area
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRTRLSM | release | 8 | Release | Yes | 086 |
PCRTRARE | releaseArea | 8 | Release area | Yes | 087 |
Package Description
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRTPDSC | packageDesc.n | 72 * 46 | Up to forty-six 72-byte lines of description | Yes | 088 |
Implementation Instructions
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRTPIMI | packageImplInst.n | 72 * 46 | Up to forty-six 72-byte lines of implementation instructions | Yes | 089 |
Scheduling Information
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRTSSSJ | schedulingInfo.successorJobName.n | 8 | Successor job name | Yes | 090 |
PCRTSSPJ | schedulingInfo.predecessorJobName.n | 8 | Predecessor job name | Yes | 091 |
Participating Packages
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRTPPAP | partPackageName.n(10) | 4 | n 4 byte participating package appl/numbers, n 10 byte participating (REXX) | Yes | 092 |
PCRTPPNM | partPackageName.n(10) | 6 | n 6-byte participating package appl/numbers, n 10 byte participating (REXX) | Yes | 092 |
Affected Applications
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRTAAPP | affectedApplName.n | 4 | Set of n 4-byte application names (n is limited only by storage constraints) | Yes | 093 |
Install Site Information (Set of n sets of installation site information (n is limited only by storage constraints)
LE-Language Variable Name | REXX Variable Name | Length | Purpose | Modifiable | Cursor Field No. |
---|---|---|---|---|---|
PCRTSITE | siteInfo.siteName.n | 8 | Site name | Yes | 094 |
PCRTINDT | siteInfo.installDate.n | 8 | Install date | Yes | 095 |
PCRTFINT | siteInfo.fromInstallTime.n | 6 | Install from time | Yes | 096 |
PCRTTINT | siteInfo.toInstallTime.n | 6 | Install to time | Yes | 097 |
PCRTOANM | siteInfo.contactName.n | 25 | Originating analyst | Yes | 098 |
PCRTOAPH | siteInfo.contactPhone.n | 15 | Analyst phone number | Yes | 099 |
PCRTAANM | siteInfo.alternateContactName.n | 25 | Alternative analyst | Yes | 100 |
PCRTAAPH | siteInfo.alternateContactPhone.n | 15 | Alternative analyst phone number | Yes | 101 |