IBM Support

PH08642: NEW FUNCTION: Improved NUMCHECK performance

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as new function.

Error description

  • Some users wish to use NUMCHECK in production to detect invalid
    data. As NUMCHECK checks every data item of the specified types
    each time they're used, using NUMCHECK can significantly
    decrease performance.
    

Local fix

  • Use NUMCHECK for testing only, not production
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V6.2 wanting to    *
    *                 use NUMCHECK to detect invalid data in       *
    *                 their production environment.                *
    ****************************************************************
    * PROBLEM DESCRIPTION: Some users wish to use NUMCHECK in      *
    *                      production to detect invalid data. As   *
    *                      NUMCHECK checks every data item of the  *
    *                      specified types each time they're       *
    *                      used, using NUMCHECK can significantly  *
    *                      decrease performance.                   *
    ****************************************************************
    * RECOMMENDATION: Apply the provided PTF.                      *
    ****************************************************************
    The initial version of NUMCHECK is thorough and guarantees
    accuracy, but since it checks every possible case, even those
    that are redundant, it is bad for performance.
    

Problem conclusion

Temporary fix

Comments

  • The compiler has a new optimization that analyzes the program
    for NUMCHECKs that are redundant, because the value is known to
    be good or bad, or because a value has previously been checked.
    This increases the performance of NUMCHECK.
    
    Because some checks are removed, there will be
    fewer runtime messages produced by NUMCHECK. Invalid data that
    is preserved over multiple COBOL statements will still be
    checked at least once.
    
    Using NUMCHECK(ABD), for checks where the data is known invalid
    at compile time, the compiler removes the check and issues an
    error message.
    
    Using NUMCHECK(MSG), for checks where the data is known invalid
    at compile time, the compiler does not remove the check and
    issues a warning message. That check will fail, and produce a
    message, at runtime.
    
    The full analysis required to remove the redundant checks can
    take a lot of compilation time for larger programs. At OPT(0),
    a simpler version of the analysis is run, in order to keep
    compilation time low; at OPT(1|2), a more expensive analysis is
    run. Programs compiled with NUMCHECK at OPT(1|2) may perform
    better than programs compiled with NUMCHECK at OPT(0) because
    the more expensive analysis at OPT(1|2) may remove more
    redundant checks than the cheaper analysis at OPT(0). Because
    of this, there may be more runtime messages shown using
    NUMCHECK(MSG) at lower OPT levels than higher OPT levels.
    
    Checks where data is known invalid at compile time may only be
    able to be detected by the compiler at higher OPT levels, and
    so there may be more compile time errors, using NUMCHECK(ABD),
    or messages, using NUMCHECK(MSG), at higher OPT levels.
    

APAR Information

  • APAR number

    PH08642

  • Reported component name

    ENT COBOL FOR Z

  • Reported component ID

    5655EC600

  • Reported release

    620

  • Status

    CLOSED UR1

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2019-02-15

  • Closed date

    2019-03-27

  • Last modified date

    2019-04-02

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Modules/Macros

  • IGY8RWTU IGYCASMB IGYCCBE  IGYCCCRT IGYCCICS IGYCCSRV IGYCDGEN
    IGYCDIAG IGYCDMAP IGYCEN$0 IGYCEN$1 IGYCEN$2 IGYCEN$3 IGYCEN$4
    IGYCEN$5 IGYCEN$8 IGYCEN$D IGYCEN$R IGYCFGEN IGYCFREE IGYCINIT
    IGYCJA$0 IGYCJA$1 IGYCJA$2 IGYCJA$3 IGYCJA$4 IGYCJA$5 IGYCJA$8
    IGYCJA$D IGYCJA$R IGYCLIBH IGYCLIBO IGYCLIBR IGYCLSTR IGYCLVL0
    IGYCLVL1 IGYCLVL2 IGYCLVL3 IGYCLVL8 IGYCMALL IGYCOB2  IGYCOB2E
    IGYCOPI  IGYCOPT  IGYCOSCN IGYCPGEN IGYCRCTL IGYCRDPR IGYCRDSC
    IGYCREAL IGYCRWT  IGYCSCAN IGYCSIMD IGYCUE$0 IGYCUE$1 IGYCUE$2
    IGYCUE$3 IGYCUE$4 IGYCUE$5 IGYCUE$8 IGYCUE$D IGYCUE$R IGYCXREF
    IGYDRV   IGYEQCWI IGYMSGE  IGYMSGK  IGYMSGT  IGYQCBE  IGYZQDRV
    IGYZQENU IGYZQJPN
    

Fix information

  • Fixed component name

    ENT COBOL FOR Z

  • Fixed component ID

    5655EC600

Applicable component levels

  • R620 PSY UI62019

       UP19/03/29 P F903

  • R621 PSY UI62020

       UP19/03/29 P F903

  • R622 PSY UI62021

       UP19/03/29 P F903

  • R62H PSY UI62022

       UP19/03/29 P F903

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":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SS6SG3","label":"Enterprise COBOL for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"620","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
12 December 2023