Using Audit Auto Resolve
Audit auto resolve automatically submits stage, recompile, and relink jobs in an attempt to fix the following out-of-sync conditions detected by audit:
-
SYNCH2!
-
SYNCH4!
-
SYNCH5!
-
SYNCH7!
-
SYNCH8!
-
SYNCH9!
-
SYNCH15!
-
SYNCH16!
-
SYNCH24!
-
SYNCH25!
-
SYNCH26!
You invoke the auto resolve facility of package audit when you set the Auto Resolve field to YES on the Audit Change Package panel.
After the jobs automatically submitted by audit auto resolve are completed, you must run another audit to prove that all out-of-sync conditions have been eliminated. As you saw in the example in Use Case Scenario: Fixing Out-of-Sync Conditions, resolving one out-of-sync condition may uncover another, so audit auto resolve may not resolve all errors in one execution.
Auto Resolve Actions
Auto resolve submits the following restage, recompile, and relink jobs under the conditions listed with each SYNCH! error.
SYNCH2!
Conditions | Auto Resolve Remedy |
---|---|
All | Restage component using the designated procedure. |
SYNCH4!
Conditions | Auto Resolve Remedy |
---|---|
Source staged in package | Restage the source component at its current location. |
Recompile in package | Recompile the component in the same package. |
SYNCH5!
Conditions | Auto Resolve Remedy |
---|---|
1.Simple package audit 2.Source in same application as the package being audited |
Recompile source in the package being audited. |
1. Simple package audit 2. Source in a different application than the package being audited (cross application processing); |
No recompile submitted because there is no eligible package. This is noted in the audit output. |
1. Participating package audit 2. Source in one of the applications represented by the collection of eligible participating packages |
Recompile source in the participating package with the latest install date, belonging to the source application. |
Notes: If there are several packages with the same install date, the one with the highest package number will be chosen. | |
If the baseline containing the source is shared across several applications, auto resolve tries to use the application where the source was last baselined. If this application is not represented in the collection of participating packages, auto resolve works back through component history until it finds the first package that is. | |
1. Participating package audit 2. Source can not be placed in any application represented by the collection of eligible participating packages; |
No recompile submitted because there is no target package. This is noted in the audit output. |
Complex package audit | Processing is the same as for participating package audit. |
SYNCH7!
Conditions | Auto Resolve Remedy |
---|---|
Composite load in the package created by staging source in the package. | Restage of source in the package. |
Composite load in the package created by recompile from baseline. | Recompile from baseline. |
Composite load in the package relink from baseline. | Relink from baseline. |
SYNCH8!
Conditions | Auto Resolve Remedy |
---|---|
Composite load in baseline is created from source component. | Recompile of source component. |
Composite load in baseline is created from:
|
Relink |
1. Simple package audit 2. Composite load in the same application as the package; |
Action in the package being audited. |
1. Participating package audit 2. Composite load in one of the applications represented by the collection of eligible participating packages |
Action in the participating package with the latest install date belonging to the executable application Note: - If there are several packages with the same install date, the one with the highest package number is chosen. - If the baseline containing the composite load is shared across applications, auto resolve tries to use the application where the composite load was last baselined. If this application is not represented in the collection of participating packages, auto resolve works back through component history until it finds the first package that is. |
1. Participating package audit 2. Composite load cannot be placed in any application represented by the collection of eligible participating packages |
No recompile submitted because there is no target package. This is noted in the audit output. |
Complex package audit | Processing is the same as for participating package audit. |
SYNCH9!
Conditions | Auto Resolve Remedy |
---|---|
All | Restage the source component in its current location. |
SYNCH16!
Conditions | Auto Resolve Remedy |
---|---|
1. Simple package audit 2. Source in same application as the package being audited |
Recompile source in the package being audited. |
1. Simple package audit 2. Source in a different application than the package being audited (cross application processing); |
No recompile submitted because there is no eligible package. This is noted in the audit output. |
1. Participating package audit 2. Source in one of the applications represented by the collection of eligible participating packages |
Recompile source in the participating package with the latest install date, belonging to the source application. |
Notes: If there are several packages with the same install date, the one with the highest package number will be chosen. | |
If the baseline containing the source is shared across several applications, auto resolve tries to use the application where the source was last baselined. If this application is not represented in the collection of participating packages, auto resolve works back through component history until it finds the first package that is. | |
1. Participating package audit 2. Source can not be placed in any application represented by the collection of eligible participating packages; |
No recompile submitted because there is no target package. This is noted in the audit output. |
Complex package audit | Processing is the same as for participating package audit. |
SYNCH24!
Conditions | Auto Resolve Remedy |
---|---|
1 Simple package audit 2 Composite in same application as thepackage being audited |
If we can determine the generating source for the composite, a baseline recompile is requested in the audited package. Otherwise, a baseline relink of the composite is requested. |
1 Simple package audit 2 Composite in a different application from the package being audited (cross application processing) |
No action submitted as there is no eligible package available. This is noted in the audit output. |
1 Participating package audit 2 Composite in one of the applications represented by the collection of eligible participating packages |
Recompile the composite source (if it can be determined), or relink the composite itself, in the participating package with the latest install date, belonging to the source application. |
Notes
|
|
1 Participating package audit 2 Source can not be placed in any application represented by the collection of eligible participating packages. |
No action submitted as there is no target package. This is noted in the audit output. |
Complex package audit | Processing is the same as for participating package audit. |
SYNCH25!
Conditions | Auto Resolve Remedy |
---|---|
1 Simple package audit 2 LCT in package 3 Target executable(s) generated by: - Source cmpnt in pkg - Recompile in pkg - Relink in package |
Rebuild ‘source’ component in package, that is,one of: - Package build - Baseline recompile - Package relink |
1 Participating package audit 2 LCT in package 3 Target executable(s) in same part. pkg |
This is effectively the same as the simple package case. |
1 Participating package audit 2 LCT in package 3 Target executable(s) in different part. pkg |
The relevant rebuild action will take place in the same pkg as the target executables (unless over-ridden elsewhere, e.g., preferred pkg). |
SYNCH26!
Conditions | Auto Resolve Remedy |
---|---|
1 Simple package audit 2 LCT in package 3 Target executable(s) have been deleted. They were originally generated by: - Source cmpnt in pkg - Recompile in pkg - Relink in package |
If the LCT has never been used by a build action in the package, auto resolve does nothing. You must either delete the unnecessary LCT component from the package or use it in a manual build process.Auto resolve submits a relevant build job that uses an LCT component in cases where a previously built executable has been subsequently deleted. This includes: - A baseline recompile (as there is no source in package) - A baseline recompile - A package relink |
1 Participating package audit 2 LCT in package 3 Target executable(s) were in the same part. pkg before they were deleted. |
This is effectively the same as the simple package case. |
1 Participating package audit 2 LCT in package 3 Target executable(s) in different part. pkg prior before they were deleted. |
The relevant rebuild action takes place in the same pkg as the target executables (unless over-ridden elsewhere, e.g., preferred pkg). |
Duplicate or Overlapping Requests
When package audit detects an error that auto resolve can take action against, an auto resolve event is recorded. When audit processing finished, the list of auto resolve events is sorted and the following are dropped:
-
The same action against the same component
-
Different actions to create the same output
For example, if there are two events recorded that require a restage of the same source component, one event is dropped. If a relink and a recompile are required that will build the same load module, the relink event is dropped.
Sequence of Auto Resolve Job Execution
The efficiency of the process to fix audit errors depends on the sequence of jobs that are executed to fix the errors, whether those jobs are submitted manually by you or automatically by audit auto resolve.
For example, statically linked subroutines should be rebuilt before composite loads that contain them are rebuilt.
When auto resolve submits jobs to fix audit errors, the sequence of file tailoring to create the job JCL is controlled in two places:
-
The SEQ number in application library type definitions. This is the default.
-
Run time parameters in an optional data set named in the Auto Resolve Parms field of the Audit Change Package panel where you request an audit.
At a minimum, file tailoring for stage, recompile, and relink jobs can be initiated in a sequence that favors the resolution of a maximum number of SYNCH errors.
However, control over the sequence of file tailoring may not control the actual execution sequence of the jobs.
Auto Resolve Runtime Parameters
Optional runtime parameters for audit auto resolve include parameters that give you control over:
-
Sequence numbers that override the SEQ value in library type definitions to control the order that file tailoring is initiated for auto resolve jobs
-
Auto resolve job name pattern so you can tell the purpose of each auto resolve job from the job name
-
Whether auto resolve jobs are submitted with TYPRUN=HOLD so you can manually release the jobs in the sequence that resolves out-of-sync conditions most efficiently
-
How job names are incremented so you can control simultaneous execution of auto resolve jobs
Run time parameters are input to audit in an optional data set named in the Auto Resolve Parms field of the Audit Change Package panel where you request an audit.
This is an example of a file of audit auto resolve runtime parameters.
JOBSTEM=USER15
******************************************************
* Seq. ; Appl ; Ltype ; Suffix ; TYPRUN ; Increment *
* No. ; ; ; ; ; *
******************************************************
001 ; COMM ; SRO ; CMOX ; RUN ; RANGE=05
002 ; COMM ; SRN ; CMNX ; HOLD ; RANGE=05
003 ; COMM ; SRC ; CMCX ; HOLD ; RANGE=05
010 ; COMM ; OBJ ; OBJX ; HOLD ; RANGE=05
011 ; COMM ; NCL ; NCLX ; HOLD ; RANGE=05
012 ; COMM ; LOD ; LODX ; HOLD ; RANGE=05
021 ; * ; SRO ; ALOX ; HOLD ; RANGE=05
022 ; * ; SRN ; ALNX ; HOLD ; RANGE=05
023 ; * ; SRC ; ALCX ; HOLD ; RANGE=05
031 ; * ; OBJ ; OBJX ; HOLD ; RANGE=05
032 ; * ; NCL ; NCLX ; HOLD ; RANGE=05
033 ; * ; LOD ; LODX ; HOLD ; RANGE=05
999 ; * ; * ; A ; HOLD ; NO
Parameter Syntax
These are the syntax rules for coding auto resolve runtime parameters except for the JOBSTEM parameter:
-
Each line (record) consists of a set of values related to an application/library type combination
-
Each value on a line is separated by a comma or a semi-colon
-
Spaces are ignored
-
Lines starting with an asterisk are treated as comments
-
Wild cards are allowed
-
Any number of lines can be used to specify the parameters required to drive your auto resolve process.
-
Auto resolve uses the parameters associated with the most specific match to the application/library type of the auto resolve action.
This table describes the auto resolve parameters. In this table, application/library type is abbreviated as appl:libtype.
Field | Description |
---|---|
JOBSTEM | 1 to 8 characters that define the first part of auto resolve job names |
Seq No | Value 001 to 999 that sets the order of file tailoring for the appl:libtype of the component being "autoresolved' |
Within a single appl:libtype, components are processed alphanumerically, but stage jobs are file tailored before recompiles, before relinks. | |
If the same sequence number is assigned to multiple appl:libtype combinations, then the combinations are taken in alphanumeric order. | |
Appl | 3 or 4 character application mnemonic. Wild card (*) is permitted. |
Ltype | 3 character library type. Wild card (*) is permitted. |
Suffix | 1 to 7 characters that are added to the end of the JOBSTEM to make a job name up to 8 characters. The jobname suffix overlays the end of the JOBSTEM, if necessary. |
TYPRUN | Value HOLD forces TYPRUN=HOLD on JOB statements. Value RUN omits any TYPRUN values. Any other value has no meaning. |
Increment | YES: The final character of the jobname is incremented from 0 through to Z (36 values) for each job submitted under this entry. After Z, start again at 0. |
RANGE=nn (valid values for nn are 01-36). The final character of the jobname is incremented from 0 through to the character that equates to the nnth position in the sequence from 0 to Z. The final jobname character starts again at 0 and it cycles through as many times as necessary. | |
NO: No final character increment on jobname. |
...
Tip
To view auto resolve job service requests without executing the jobs, use execution parameter TRACE=AUTO for program CMNAD500. The service requests are written to a dynamically allocated AUTOSRVC DD statement.
Autoresolve Example
Observe the following autoresolve parameters:
BROWSE CMNTP.GENL.PARMLIB(AUTOCNTL) - 01.00
Command ===>
********************************* Top of Data ********
JOBSTEM=USER
******************************************************
* Seq. ; Appl ; Ltype ; Suffix ; TYPRUN ; Increment *
* No. ; ; ; ; ; *
******************************************************
001 ; ACTP ; SRO ; SROX ; RUN ; RANGE=05
002 ; ACTP ; SRN ; SRNX ; RUN ; RANGE=05
003 ; ACTP ; SRC ; SRCX ; RUN ; RANGE=05
010 ; ACTP ; OBJ ; OBJX ; RUN ; RANGE=05
011 ; ACTP ; NCL ; NCLX ; RUN ; RANGE=05
012 ; ACTP ; LOD ; LODX ; RUN ; RANGE=05
021 ; GENL ; SR* ; SRCX ; RUN ; RANGE=05
022 ; GENL ; L* ; LODX ; RUN ; RANGE=05
031 ; GENL ; OBJ ; OBJX ; RUN ; RANGE=05
032 ; GENL ; NCL ; NCLX ; RUN ; RANGE=05
999 ; * ; * ; OTHR ; RUN ; NO
******************************** Bottom of Data ******
In this sample all jobnames are built from "USER".
This user has an application (ACTP), which has components that are processed ahead of all other applications. In the ACTP application, and in all other applications, source for object (SRO) is processed ahead of source for NCAL subroutines (SRN), ahead of main module source (SRC).
Similarly, relink requests for object code (OBJ) and NCAL subroutines (NCL) are processed ahead of relinks for composite load modules (LOD). (Note that the OBJ/NCL rules are there just in case there is something wrong with the setup and audit auto resolve requests a relink of an object or NCAL subroutine.)
Finally, if the request does not fit into any of the above categories then it is covered by the "catch all" final entry.
If a series of recompiles are requested for SRn components in application GENL, then the jobnames used to process the recompiles are USERSRC0, then USERSRC1, USERSRC2, USERSRC3, USERSRC4 before returning to USERSRC0 again.
In this example all jobs will not have TYPRUN=HOLD added to the jobcard definitions. Note that if the jobcard parsing code is unable to find somewhere to put TYPRUN=HOLD on the 4 supplied jobcard images then the action will not take place and an error message will be issued. If however the original audit job is built with TYPRUN=HOLD, then all jobs will also be TYPRUN=HOLD (as shown below).
The following is an extract from CMNAD500 SYSPRINT DD for a run in which autoresolve parameters have been used. (The dataset name is enforced here via exit CMNEX040). The lines in black text have not changed from the current CMNAD500 SYSPRINT. The lines in red are produced when CMNEX040 is in use, the lines in blue describe the autoresolve parameters being used by CMNAD500. The lines in magenta describe what actions autoresolve has taken.
ChangeMan(R) ZMF CMNAD500 - 8.1.0 Audit THURSDAY JANUARY 8, 2015 @ 00:29:14
CMN2698I - Processed by CMNAD500 version 2014/10/10 10.40
CMN7500I - Attempting to initiate dialog with started task.
CMN7510I - Session established with ChangeMan ZMF started task.
CMN2683I - PRINTING AUDIT REPORT FOR PACKAGE GENL000007.
CMN3060A - This package has failed the audit.
CMN2696I - PACKAGE GENL000007 FAILED THE AUDIT WITH A RETURN CODE OF 08.
AUTOCNTL: installation exit is forcing the use of dataset
CMNTP.GENL.PARMLIB
AUTOCNTL: and member
AUTOCNTL
The following autoresolve control parameters were used in this execution:
AUTOCNTL: JOBSTEM=USER
AUTOCNTL: ******************************************************
AUTOCNTL: * Seq. ; Appl ; Ltype ; Suffix ; TYPRUN ; Increment *
AUTOCNTL: * No. ; ; ; ; ; *
AUTOCNTL: ******************************************************
AUTOCNTL: 001 ; ACTP ; SRO ; SROX ; RUN ; RANGE=05
AUTOCNTL: 002 ; ACTP ; SRN ; SRNX ; RUN ; RANGE=05
AUTOCNTL: 003 ; ACTP ; SRC ; SRCX ; RUN ; RANGE=05
AUTOCNTL: 010 ; ACTP ; OBJ ; OBJX ; RUN ; RANGE=05
AUTOCNTL: 011 ; ACTP ; NCL ; NCLX ; RUN ; RANGE=05
AUTOCNTL: 012 ; ACTP ; LOD ; LODX ; RUN ; RANGE=05
AUTOCNTL: 021 ; GENL ; SR* ; SRCX ; RUN ; RANGE=05
AUTOCNTL: 022 ; GENL ; L* ; LODX ; RUN ; RANGE=05
AUTOCNTL: 031 ; GENL ; OBJ ; OBJX ; RUN ; RANGE=05
AUTOCNTL: 032 ; GENL ; NCL ; NCLX ; RUN ; RANGE=05
AUTOCNTL: 999 ; * ; * ; OTHR ; RUN ; NO
Baseline recompile requested in GENL000007 for SRC/GNLSRC1A
Baseline recompile requested in GENL000007 for SRS/GNLSRS5A
CMN7540I - End of job; RC = 08
CMN1410I - Session terminated with ChangeMan ZMF started task.
If any of the service requests should fail for some reason then the message returned by ChangeMan ZMF will be shown immediately following the relevant line (magenta above) for example:
Package build requested in GENL000007 for GNL07S01.SRC
Service request failed, message returned by ZMF follows:
CMN8490I - Compile procedure was not specified.
If TRACE=AUTO is added to CMNAD500 PARM, then autoresolve trace information is written to the SYSPRINT DD . However, this prevents the action service requests from being issued, but this is useful for testing.
Instead, DD statement AUTOSRVC will be used to write CMNVSRVC batch keywords. These are equivalent to the service requests that would have been issued. This means that a test scenario can be setup and run several times without having to reset the components in the package being autoresolved. The end product of the autoresolve actions can be seen in these batch keywords. Of course, the batch keywords can equally well be used as input to a run of CMNVSRVC if there is a requirement to action them.
However, the main aim of this facility is to allow for ease of testing.
The AUTOSRVC DD statement can be added to the CMNAD500 step pointing to a disk file if the batch keywords need to be kept (e.g. for sending to Serena support). If the AUTOSRVC DD statement is missing then it will be dynamically allocated as a sysout DD.
Sample AUTOSRVC output:
OBJ=CMPONENT,MSG=RECOMPILE,
PKN=GENL000007,LTP=SRC,SUP=N,LVL=00,UHS=Y,
JC1=//USERSRCA JOB (SM-1IKF-SM),'GENL07', ,
JC2=// CLASS=A,MSGCLASS=X,NOTIFY=USER015,TYPRUN=HOLD ,
JC3=//* ,
JC4=//* JOB TO RUN AUDIT ON GENL00007 WITH AUTO RESOLVE AND WITH EXIT ,
CMP=GNLSRC1A,
CNT=0001
OBJ=CMPONENT,MSG=RECOMPILE,
PKN=GENL000007,LTP=SRS,SUP=N,LVL=00,UHS=Y,
JC1=//USERSRCB JOB (SM-1IKF-SM),'GENL07', ,
JC2=// CLASS=A,MSGCLASS=X,NOTIFY=USER015,TYPRUN=HOLD ,
JC3=//* ,
JC4=//* JOB TO RUN AUDIT ON GENL00007 WITH AUTO RESOLVE AND WITH EXIT ,
CMP=GNLSRS5A,
CNT=0001
...