A fix is available
APAR status
Closed as new function.
Error description
The server provides configuration parameters to control what level of validation is done on native data and how numeric conversion errors are handled. These configuration settings control how badly formed numeric data is repaired when a badly formed native data value is mapped to an SQL numeric data column for replication or publishing. The server, by default, will repair numeric SQL columns when the badly formed native data cannot be successfully converted to a DECIMAL, SMALLINT or INTEGER column. This is done to prevent failures in the event of badly formed native data. The default repair values for the SQL numeric column is -9999?99 for the precision and scale of the SQL column. A column repair exit is required to provide the user with a mechanism to customize the repair value for a numeric SQL column that fails validation or cannot be converted to the SQL numeric data type. Using the column repair exit, you can implement your own rules to determine what repair value should be provided when badly formed data is encountered for a specific Table, Column and or Subscription.
Local fix
N/A
Problem summary
**************************************************************** * USERS AFFECTED: InfoSphere Classic Change Data Capture for * * z/OS * **************************************************************** * PROBLEM DESCRIPTION: A column data repair exit for * * Classic CDC is needed. * **************************************************************** * RECOMMENDATION: * **************************************************************** The server provides configuration parameters to control what level of validation is done on native data and how numeric conversion errors are handled. These configuration settings control how badly formed numeric data is repaired when a badly formed native data value is mapped to an SQL numeric data column for replication or publishing. A column repair exit is required to provide the user with a mechanism to customize the repair value for a numeric SQL column that fails validation or cannot be converted to the SQL numeric data type.
Problem conclusion
Temporary fix
Comments
Classic is providing a column repair exit to give the user a mechanism to customize the repair value for a numeric SQL column that fails validation or cannot be converted to the SQL numeric data type. Using the column repair exit, you can implement your own rules to determine what repair value should be provided when badly formed data is encountered for a specific Table, Column and/or Subscription. The column repair exit will be called after the server has determined that the native data being mapped to the SQL column fails validation or generates a numeric conversion error and needs to be repaired. Developing a Column Repair Exit The column repair exit runs in the Classic server address space. A copy of the exit is loaded by each subscription that is actively refreshing data, replicating or publishing in a Change Data Capture environment. The exit is called in key 8 problem program state. The exit is loaded from an APF-authorized library so that it can enter supervisory state and perform authorized functions, but that mode of operation is not recommended. The exit must reside in a PDSE load library. Classic provides a generic sample column repair exit that is written in COBOL and distributed as SCACSAMP(CECCREPX). This exit implements a basic rule to return a value of zero for any SQL column that has detected badly formed data that cannot be mapped to an SQL numeric column. The column repair exit is configured by setting the COLUMNREPAIREXIT global configuration parameter. You identify the name of the load module that you want called when badly formed data is detected that cannot be mapped to an SQL numeric column. The named exit load module is loaded at the time a subscription starts replicating, publishing or at refresh. If replication is already active for a subscription, you need to stop and restart replication to enable the exit for a subscription. The exit is invoked in a language environment and can use any LE services. The exit is intended to be developed by using a high-level language such as COBOL, HLASM or C. The column repair exit must be compiled and linked as reentrant. When the exit is called, the exit has control of that service (TCB) until control is returned. Time consuming calls should be minimized within the exit, as such calls will impact replication for all subscriptions. Additionally, no special abend or ESTAE protection is in place, so if the exit abnormally terminates, default exception processing for the language environment is invoked. Column Repair Exit Processing When enabled, the column repair exit is called for the following initialization, termination and validation operations. Initialization: The column repair exit is called for initialization processing when a subscription is first refreshed or start mirroring operation. During the initialization call the exit should verify the version of the exit parameter list to ensure it matches the version used by the server. The exit can also use the initialization call to allocate working storage and return an address to this storage in the user double-word parameter that is passed on subsequent calls to the exit. Any values stored in the user double-word parameter will be preserved for the subscription until termination processing is invoked when replication is stopped for the subscription The exit must communicate the version of the exit it is using by returning that value back to the server in the Column Repair Exit Parameter List Version parameter passed to the exit. Termination: The column repair exit is called for termination processing when replication is stopped for subscription. During the termination call the exit must free any resources it previously allocated. Validation: The exit is called for validation processing after the server has determined that the native data being mapped to the SQL column fails validation or generates a numeric conversion error and needs to be repaired. The exit will be called for each column that has badly formed data and needs to be repaired. The exit will be called for after image processing and for before image processing when configured. The exit will determine how to repair the badly formed data and communicate this back to the server. Parameters that are passed to the Column Repair exit 1. Parameter list version 2 bytes long Input parameter Description: Informs the exit what version of the exit parameter list it communicates with. This parameter is provided for future extension. The only valid value is 1. 2. Column repair exit parameter list version 2 bytes Output parameter Descr: The exit is expected to inform the caller what version of the exit parameter list it communicates with. The only valid value is 1. 3. User double words 8 bytes Input/Output Descr: The user double word is initialized to binary zeroes before the initialization call. The exit can use this area for any purpose. The value that the exit puts in this area is returned to the exit for each subsequent call for the given subscription until the replication is stopped for the subscription. 4. Function code 4 bytes Input Descr: One of the following functions for which the exit is being invoked: CREX-FUNC-INIT, CREX-FUNC-REPAIR, CREX-FUNC-TERM 5. User Name 32 bytes Input Descr: Left-justified, space padded User Name associated with operation. Will be spaces in Change Data Capture 6. Subscription Name 64 bytes Input Descr: Left-justified, space padded Subscription Name associated with operation. Will be spaces in non-Change Data Capture operations 7. Source System ID 8 bytes Input Descr: Left-justified, space padded 8 byte unique identifier for subscription. Will be spaces in non-Change Data Capture operations 8. Database Type 8 bytes Input Descr: Left-justified, space padded Database Type associated with operation. Values: $IMS for IMS data source, $VSAM for VSAM data source 9. Table Name 20 bytes Input Descr: Left-justified, space padded Table or View Name associated with operation. 10. Schema Name 8 bytes Input Descr: Left-justified, space padded Schema Name for the table associated with operation. 11. Column Name 32 bytes Input Descr: Left-justified, space padded Column Name that failed validation or conversion. 12. Native Data Type 1 bytes Input Descr: The Native Datatype that failed validation or conversion. Valid values are: C Mixed mode character data. Fixed Length P Packed decimal data D Floating point data. F 32-bit signed binary value where the sign is in the high order bit. H 16-bit signed binary value where the sign is in the high order bit. V Variable mixed-mode character data, data is preceded by a 16-bit signed binary number that identifies the actual length of the data. B Fixed length binary data. 13. Native Data Signed 1 bytes Input Descr: Value indicating if Native numeric data is signed: Y - data is signed N - data is unsigned 14. Native Data Length 4 bytes Input Descr: The length of the Native Data 15. Native Data Address 4 bytes Input Descr: The address of the Native Data that failed validation or conversion The exit cannot modify the contents of this area 16. SQL Data Type 4 bytes Input Descr: The SQL data type for the data pointed to in SQL Data Address. Possible Values: SQL-TYPE-SMALLINT, SQL-TYPE-INTEGER, SQL-TYPE-DECIMAL 17. SQL Data Length 4 bytes Input Descr: The length of the SQL data type for the data pointed to in the SQL Data Address. 18. SQL Data Precision 4 bytes Input Descr: The precision of the SQL data type for the data pointed to in SQL Data Address. 19. SQL Data Scale 4 bytes Input Descr: The Scale of the SQL data type for the data pointed to in the SQL Data Address. 20. SQL Data Address 4 bytes Input/Output Descr: The address of the SQL Data that failed validation or conversion. The value will contain the server default repair value of -999's. The exit can modify the contents of this area to change the repair value for the operation. 21. SQL Data Null Indicator 1 bytes Input Descr: Value indicating if the SQL Data supports NULL Y - data supports NULL N - data cannot be NULL 22. SQL Action 4 bytes Input Descr: Data Server action associated with the operation: CREX-ACT-NONE CREX-ACT-DELETE CREX-ACT-INSERT CREX-ACT-UPDATE CREX-ACT-QUERY CREX-ACT-AFTR-DELETE CREX-ACT-BFOR-DELETE CREX-ACT-AFTR-INSERT CREX-ACT-BFOR-INSERT CREX-ACT-AFTR-UPDATE CREX-ACT-AFTR-UPDATE 23. Return code 4 bytes Output Descr: One of the following values: CREX-DEFAULT : CREX-SUCCESS: User Server default behavior CREX-REPAIRED: Exit provided new repair value in buffer pointed to by SQL Data Address CREX-FAILED: Exit requests that the operation is terminated with a failure 24. Reason code 4 bytes Output Descr: The only valid reason code is: CREX-REASON-0 25. Diagnostic string 80 bytes Output Descr: Always set to low values on entry to the apply exit. The exit can use this area to return a null terminated diagnostic string. The maximum length of the message is 79 bytes allowing for the 1 byte null string terminator. . The IBM Knowledge Center will be updated with more details about this update for Version 11.3. See the link below: http://www-01.ibm.com/support/docview.wss?uid=swg27039728&wv=1
APAR Information
APAR number
PI85860
Reported component name
CLASSIC FED & E
Reported component ID
5697I8200
Reported release
B30
Status
CLOSED UR1
PE
NoPE
HIPER
NoHIPER
Special Attention
YesSpecatt / New Function / Xsystem
Submitted date
2017-08-15
Closed date
2017-08-23
Last modified date
2017-09-02
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI49806 UI49807 UI49808 UI49809 UI49810 UI49811 UI49812 UI49813
UI49814 UI49815
Modules/Macros
CACCHICT CACENGCT CACJPNCT CACZHOCT CECAPI2 CECAVSM1 CECCABHD CECCADAB CECCADAI CECCADV CECCAIMC CECCAIMM CECCAIMO CECCAIMS CECCAOPS CECCAPEX CECCAPIC CECCASHL CECCASSI CECCAVMM CECCBCFG CECCBCP1 CECCBNEW CECCBTIN CECCBUFF CECCCATL CECCCATU CECCCDCP CECCCHDL CECCCHSH CECCCNFG CECCCNTL CECCCOMM CECCCONN CECCCONV CECCCREX CECCCSIM CECCCSVS CECCDBDL CECCDCFG CECCDD05 CECCDESC CECCDIAG CECCDISP CECCDOPS CECCDRAI CECCDSSI CECCDUMP CECCEFSM CECCEIF CECCENDE CECCENGN CECCESSI CECCFAHD CECCFASH CECCFGUT CECCFILE CECCFLDP CECCGET CECCHNDL CECCIDMD CECCIDRA CECCIIMS CECCILE CECCIMSA CECCIMSI CECCINFO CECCINIT CECCIOPS CECCIRES CECCIRRS CECCITCA CECCITCI CECCITIC CECCITMA CECCITMI CECCITMS CECCITSC CECCITSS CECCIWLM CECCLDAM CECCLEX CECCLRFU CECCLRIC CECCLRID CECCLRIE CECCLRIH CECCLRII CECCLRIM CECCLRIO CECCLRIQ CECCLRIR CECCLRIS CECCLRIT CECCLRSM CECCLRSS CECCLRVC CECCLRVD CECCLRVE CECCLRVH CECCLRVI CECCLRVL CECCLRVQ CECCLRVR CECCLRVS CECCLRVT CECCMADA CECCMAIN CECCMAMD CECCMAMT CECCMAM1 CECCMAM2 CECCMAM3 CECCMAM4 CECCMAPF CECCMAUT CECCMCFG CECCMDB2 CECCMDCM CECCMEMO CECCMIDM CECCMIMS CECCMISC CECCMSEQ CECCMSGS CECCMSHL CECCMTO CECCMVSM CECCNFG1 CECCNLOG CECCNLS CECCONV1 CECCONV2 CECCOPFU CECCOPXM CECCPAAD CECCPACM CECCPADB CECCPAEV CECCPAPF CECCPASC CECCPASS CECCPAS2 CECCPATG CECCPAUT CECCPFIX CECCPFS CECCPLOG CECCPSHL CECCPUMN CECCQGEN CECCQNOD CECCQOPS CECCQPIN CECCQSSI CECCREPC CECCREPM CECCREPU CECCREPX CECCREP2 CECCREP3 CECCRES CECCROBJ CECCROC CECCROLE CECCRSLV CECCRTNS CECCRUNT CECCSHLB CECCSHLQ CECCSHLR CECCSHL2 CECCSHR CECCSHSL CECCSKA CECCSLS CECCSMOS CECCSOPS CECCSPDA CECCSPDI CECCSPDR CECCSPNT CECCSPSM CECCSPXL CECCSP62 CECCSQER CECCSRVC CECCSRVR CECCSSUB CECCSTMT CECCSTSK CECCSVC CECCTBRI CECCTCBM CECCTCMN CECCTDIS CECCTDM CECCTFLT CECCTLOG CECCTRAN CECCTSHL CECCTSPI CECCTSSI CECCTSUB CECCT2AS CECCT2CD CECCT2TS CECCUOPS CECCUOR CECCUSER CECCUSH1 CECCUTIL CECCVBRI CECCVMAP CECCVSAM CECCVSHL CECCVSMS CECCVSSI CECCVUTL CECCWQUE CECCWRTR CECCWSHL CECCXBLD CECCXCOM CECCXEXT CECCXLE1 CECCXOPS CECCXUTL CECCYFMT CECCZSSI CECC2CAF CECC2QSI CECC2SSI CECDUMP1 CECENCR CECFILE1 CECMCFG1 CECMISC1 CECOPER1 CECREPC1 CECREPL2 CECREPL3 CECREPL4 CECSHLL2 CECSHLL3 CECSHLL4 CECSHLL5 CECSPRS1 CECSQL1 CECTCBM1 CECTRAN1 CECUTIL1 CECVHS HABIB30J
Fix information
Fixed component name
CLASSIC FED & E
Fixed component ID
5697I8200
Applicable component levels
RB3A PSY UI49807
UP17/08/29 P F708
RB3G PSY UI49808
UP17/08/30 P F708
RB3H PSY UI49809
UP17/08/30 P F708
RB3J PSY UI49810
UP17/08/30 P F708
RB30 PSY UI49806
UP17/08/29 P F708
RB31 PSY UI49811
UP17/08/29 P F708
RB35 PSY UI49812
UP17/08/29 P F708
RB36 PSY UI49813
UP17/08/29 P F708
RB37 PSY UI49814
UP17/08/29 P F708
RB39 PSY UI49815
UP17/08/29 P F708
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":"BU048","label":"IBM Software"},"Product":{"code":"SSC4BEF","label":"General issues"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B30","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B30","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
02 September 2017