IBM Support

PI85860: NEW FUNCTION: PROVIDE COLUMN DATA REPAIR EXIT FOR CLASSIC CDC

A fix is available

Subscribe

You can track all active APARs for this component.

 

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