A fix is available
APAR status
Closed as new function.
Error description
PROVIDE FUNCTION TO VERIFY OBJECT STRUCTURE PRIOR TO PERFORMING AN ANALYZE IN CM BATCH FOR OBJECT COMPARE.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: Users of the DB2 Object Comparison Tool for * * z/OS. * **************************************************************** * PROBLEM DESCRIPTION: 1 - User wants to be able to verify * * that the attributes for objects being * * compared are valid on their system. * * * * 2 - User wants any incorrect * * attribute values to be reported and * * the process stopped if error sare * * found. * * * * The verification of attributes * * will be done in masking and the * * calling function will continue * * processing so all verification * * errors get reported. When all * * objects have been processed, * * the calling function will stop * * the process if any verification * * errors are encountered. * * Verification errors will * * be written to a separate DD * * name called VALOUT and * * will be SYSOUT. If the calling * * function is done in TSO mode, * * please use TSO ISRDDN to * * find the VALOUT DD to see the * * results. The masking dataset * * can have both existing masks / * * overwrites and the new verification * * masks. Both will be processed by * * the masking facility. Syntax * * errors will be issued if syntax for * * VER masks is not correct. Also, * * semantic errors like the ones * * caught by overwrite mask entries * * will be caught ( i.e. Yes / no * * checking, valid numeric values ). * * * * A new syntax will be introduced * * to allow for a VER request for * * a overwrite mask type. The new * * syntax is shown below: * * * * VER,field:verification_operator, * * verification_values, * * RC=verification_rc * * * * or * * * * VER,field:REXX(execname, * * parm1,...) * * * * Note: The REXX EXEC must be * * built so that it returns two items * * in the return string. The first * * 2 characters will be the return * * code value ( e.g. 00, 08, 12 ) * * followed by a colon, and the * * rest of the string is the error * * message if the REXX EXEC * * finds an error in verification. * * The remaining string will be * * blank if no errors are found in * * verification. ( e.g. '08:A * * segsize of 12 was found when * * verifying segsize follow this * * expression, EQ,4' ) * * * * Where * * * * VER - Begins a verification * * mask * * Field - Attribute to verify * * 'Field' has to be an * * overwrite mask name * * or OBJNAME for name * * verification * * operator - One of the following * * operators: * * * * EQ - equal comparison * * NE - Not equal comparison * * LT - Less than comparison * * GT - Greater than comparison * * LIST - list of value * * RANGE - greater than/equal * * first value and less than/equal * * second value * * values - values being compared * * for the field * * rc - One of the following return * * codes: * * * * 12 - Fatal, processing will fail * * 8 - Severe, processing will fail * * 6 - Error, processing will fail * * 4 - Warning, only will fail if * * no exceptions are granted * * 0 - OK * * * * REXX - run REXX exec provided to * * validate the field * * Parm - Parameters passed * * to the REXX exec * * (same as for overwrites) * * * * NOTE: Field has to be an overwrite * * mask except for one exception, new * * overwrite, OBJNAME. OBJNAME is * * described below with special rules. * * * * Special overwrite named OBJNAME, * * which can verify both object name and * * object schema, is created so a REXX * * exit can be called to verify objects. * * This overwrite can only use the REXX * * format. An example of the syntax for * * this OBJNAME is: * * * * VER,OBJNAME:REXX(execname) * * * * The purpose of the OBJNAME REXX exit * * is to validate the object name and / * * or object schema. * * * * The EXEC will be called for all primary * * object names ( SG,DB,TS,TB,IX,DT, * * FU,SP,SQ,... ) with three parameters: * * * * - object type * * - object qualifier ( blank for objects * * without a qualifier ) * * - object name * * * * The user can use objtype, objqual and * * objname as the variable name for * * these three parameters in their EXEC. * * A primary object name is what is * * considered to be the primary key of * * the object. i.e., for a table the exit * * will be called with TB and what * * corresponds to systables.creator and * * systables.name, and not be called with * * object type DB systables.dbname, or * * and systables.tsname. The EXEC can * * set a return code and an error * * message. * * * * To improve performance we intend * * to cache the results from the exit * * so the exit is not invoked many times * * with the same object names. * * * * Note: The values for the REXX exit * * will be the same as the values stored * * in the catalog tables for this * * attribute ( e.g. AUDIT ). Please * * check the DB2 catalog table reference * * for the values that are valid for the * * attribute. * * * * Note: If a mask file has both a * * VER overwrite mask and a overwrite * * mask for the same attribute ( e.g. * * LOGGED ), then the VER overwrite * * masking will be done first to verify * * user data and then the overwrite mask * * will be applied. * * * * Panel ADB2C2L 'CM - Mask Lines' is * * changed to add a new column called * * REQ which will be 'VER' for the new * * verification masks. The FROM column * * will hold the verification operand and * * values ( e.g. EQ,YES ), and the TO * * column will hold the verification * * return code ( e.g. RC=8 ) for a * * verification mask row. * **************************************************************** * RECOMMENDATION: * **************************************************************** 1 - User wants to be able to verify that the attributes for objects being compared are valid on their system. 2 - User wants any incorrect attribute values to be reported and the process stopped if errors are found. The verification of attributes will be done in masking and the calling function will continue processing so all verification errors get reported. When all objects have been processed, the calling function will stop the process if any verification errors are encountered. Verification errors will be written to a separate DD name called VALOUT and will be SYSOUT. If the calling function is done in TSO mode, please use TSO ISRDDN to find the VALOUT DD to see results. The masking dataset can have both existing masks / overwrites and the new verification masks, both will be processed by the masking facility. Syntax errors will be issued if syntax for VER masks is not correct. Also, semantic errors like the ones caught by overwrite mask entries will be caught ( i.e. Yes / no checking, valid numeric values ). A new syntax will be introduced to allow for a VER request for a overwrite mask type. The new syntax is shown below: VER,field:verification_operator, verification_values, RC=verification_rc or VER,field:REXX(execname,parm1,...) Note: The REXX exec must be built so that it returns two items in the return string. The first 2 characters will be the return code value ( e.g. 00, 08, 12 ) followed by a colon, and the rest of the string is the error message if the REXX exec finds an error in verification. The remaining string will be blank if no errors are found in verification. ( e.g., '08:A segsize of 12 was found when verifying segsize follow this expression, EQ,4' ) Where VER - Begins a verification mask Field - Attribute to verify 'Field' has to be an overwrite mask name or OBJNAME for name verification operator - One of the following operators: EQ - equal comparison NE - Not equal comparison LT - Less than comparison GT - Greater than comparison LIST - list of value RANGE - greater than/equal first value and less than/equal second value values - values being compared for the field rc - One of the following return codes: 12 - Fatal, processing will fail 8 - Severe, processing will fail 6 - Error, processing will fail 4 - Warning, only will fail if no exceptions are granted 0 - OK REXX - run REXX exec provided to alidate the field Parm - Parameters passed to the REXCX exec (same as for overwrites) NOTE: Field has to be an overwrite mask except for one exception, new overwrite, OBJNAME. OBJNAME is described below with special rules. Special overwrite named OBJNAME, which can verify both object name and object schema, is created so a REXX exit can be called to verify objects. This overwrite can only use the REXX format. An example of the syntax for this OBJNAME is: VER,OBJNAME:REXX(execname) The purpose of the OBJNAME REXX exit is to validate the object name and / or object schema. The exec will be called for all primary object names ( SG,DB,TS,TB,IX,DT,FU,SP,SQ,... ) with three parameters: - object type - object qualifier (blank for objects without a qualifier) - object name The user can use objtype, objqual and objname as the variable name for these three parameters in their EXEC. A primary object name is what is considered to be the primary key of the object. i.e., for a table the exit will be called with TB and what corresponds to systables.creator and systables.name, and not be called with objec type DB systables.dbname, or object type TS and systables.dbname and systables.tsname. The EXEC can set a return code and an error message. To improve performance we intend to cache the results from the exit so the exit is not invoked many times with the same object names. Note: The values for the REXX exit will be the same as the values stored in the catalog tables for this attribute ( e.g. AUDIT ). Please check the DB2 catalog table reference for the values that are valid for the attribute. Note: If a mask file has both a VER overwrite mask and a overwritemask for the same attribute ( e.g. LOGGED ), then the VER overwrite masking will be done first to verify user data and then the overwrite mask will be be applied. Panel ADB2C2L 'CM - Mask Lines' is changed to add a new column called REQ which will be 'VER' for the new column called REQ which will be 'VER' for the new verification masks. The FROM column will hold the verification operand and values ( e.g. EQ, YES ), and the TO column will hold the verification return code ( e.g. RC=8 ) for a verification mask row.
Problem conclusion
Temporary fix
Comments
An enhancement has been made to the Masking function to allow users to add a new type of mask that will perform verification of object attributes. These new masks will be run along with the existing masks and any attributes that are flagged will be generated in the VERIFICATION MASK LIST REPORT. For example: if a user has a new verification mask specified as VER,AUDIT:EQ,ALL, the job fails with a return code 8 / RC=8, and an object being compared has AUDIT CHANGES the following report will be shown in DD VALOUT: VERIFICATION MASK LIST REPORT =========================================== Prepared on SSID (DB2 Release >db2_release<) by >userid< at >date_timestamp< ADB3346E RC=8 Error processing AUDIT attribute. Value is CHANGES. Verification failed for operation EQ,ALL New messages added by this APAR: ADB3340E ADB3341E ADB3342E ADB3343E ADB3344E ADB3345E ADB3346E
APAR Information
APAR number
PI51559
Reported component name
DB2 OBJECT COMP
Reported component ID
5697G6400
Reported release
B20
Status
CLOSED UR1
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2015-10-30
Closed date
2015-11-24
Last modified date
2015-12-03
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI33221
Modules/Macros
GOCCM GOCCMP GOCGCMP GOCREG GOCTVAL
Fix information
Fixed component name
DB2 OBJECT COMP
Fixed component ID
5697G6400
Applicable component levels
RB20 PSY UI33221
UP15/11/26 P F511
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSAUVH","label":"IBM Db2 Object Comparison Tool for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"11.2.0","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]
Document Information
Modified date:
03 December 2015