APAR status
Closed as program error.
Error description
RD/z is generating COBOL tables with a key longer than 256 bytes. This is against the documented restriction. So we want to allow configuration of hashing heuristics to avoid binary search (SEARCH ALL) 256-byte XPath limit. Applies to: IBM Rational Developer for System z V7.6.0.1 This Test Fix makes available two heuristics used by the RDz COBOL compiled XML converter generator: MAX_HASH_RANGE_MULTIPLIER, and MAX_HASH_COMP_ELAPSED_MS. These heuristics influence whether RD/z will generate COBOL XML converters based on hashing or binary search (SEARCH ALL). MAX_HASH_RANGE_MULTIPLIER: Heuristic setting that influences the maximum size of collision-free hash tables for mapped XML XPaths in XML to language structure converters generated by RDz. Increasing the value of this setting will make it more likely that an XML converter based on hashing instead of binary search will be generated. While larger hash table sizes cause additional heap storage to be used, search performance will remain constant. The formula used to compute the maximum range (size) of the hash table follows: max_hash_range = NextPrime([mapped_xpath_count * MAX_HASH_RANGE_MULTIPLIER]) Usage: Increase the value of the setting by 1 until an XML c onverter based on hashing is generated by RDz. This heuristic applies only to XML to language structure converters. MAX_HASH_COMP_ELAPSED_MS: Heuristic setting that bounds the amount of time that RDz will spend computing a collision-free hash table for mapped XML XPaths in XML to language structure converters. RDz will generate binary search (SEARCH ALL) if a collision-free hash table is not found after MAX_HASH_COMP_ELAPSED_MS milliseconds have elapsed since the computation began. It is recommended that the value of this setting be increased whenever the value of the heuristic MAX_HASH_RANGE_MULTIPLIER is increased; this will allow additional time for RDz to try larger hash table sizes. Usage: Increase the value of the setting by 1000 until an XML converter based on hashing is generated by RDz. This heuristic applies only to XML to language structure conversion. After applying the Test Fix, the default values of these heuristics are read from com.ibm.etools.xmlent.xform.gen.cobol/plugin.xml via a new internal extension point. The default content of plugin.xml follows: ?extension point='com.ibm.etools.xmlent.cobol.xform.gen. heuristics'? ?search_heuristics MAX_HASH_RANGE_MULTIPLIER='3' MAX_HASH_COMP_ELAPSED_MS='15000' /? ?/extension? Changes made to the attributes search_heuristics/ @MAX_HASH_RANGE_MULTIPLIER and search_heuristic/@MAX_HASH_COMP_ELAPSED_MS take effect when the RDz workbench is restarted. Enterprise Service Tools projects will remember the values of these heuristics that were defined in plugin.xml when the code was generated. The values are recorded in the file Project/Generation/Platfor mProperties.xml: ?CodegenProperty name='com.ibm.etools.xmlent.ui.GEN_MAX_HASH_RANGE_MULTIPLIER' value='3'/? ?CodegenProperty name='com.ibm.etools.xmlent.ui.GEN_MAX_HASH_COMP_ELAPSED_MS' value='15000'/? Once code has been generated in an Enterprise Service Tools project, the project will use the values recorded in the file Project/Generation/PlatformProperties.xml, not those in the file com.ibm.etools.xmlent.xform.gen.cobol/plugin.xml. Therefore, to specify different values for the heuristics when regenerating code in an EST project, edit the values in PlatformProperties.xml.
Local fix
Problem summary
necessary to avoid the use of SEARCH ALL when XML XPaths exceed 256 bytes (128 characters UTF-16, 256 characters SBCS).
Problem conclusion
Made available two heuristics used by the RDz COBOL compiled XML converter generator: MAX_HASH_RANGE_MULTIPLIER, and MAX_HASH_COMP_ELAPSED_MS. These heuristics influence whether RDz will generate COBOL XML converters based on hashing or binary search (SEARCH ALL). MAX_HASH_RANGE_MULTIPLIER: Heuristic setting that influences the maximum size of collision-free hash tables for mapped XML XPaths in XML to language structure converters generated by RDz. Increasing the value of this setting will make it more likely that an XML converter based on hashing instead of binary search will be generated. While larger hash table sizes cause additional heap storage to be used, search performance will remain constant. The formula used to compute the maximum range (size) of the hash table follows: max_hash_range = NextPrime([mapped_xpath_count * MAX_HASH_RANGE_MULTIPLIER]). Usage: Increase the value of the setting by 1 until an XML converter based on hashing is generated by RDz. This heuristic applies only to XML to language structure converters. MAX_HASH_COMP_ELAPSED_MS: Heuristic setting that bounds the amount of time that RDz will spend computing a collision-free hash table for mapped XML XPaths in XML to language structure converters. RDz will generate binary search (SEARCH ALL) if a collision-free hash table is not found after MAX_HASH_COMP_ELAPSED_MS milliseconds have elapsed since the computation began. It is recommended that the value of this setting be increased whenever the value of the heuristic MAX_HASH_RANGE_MULTIPLIER is increased; this will allow additional time for RDz to try larger hash table sizes. Usage: Increase the value of the setting by 1000 until an XML converter based on hashing is generated by RDz. This heuristic applies only to XML to language structure conversion. After applying the Test Fix, the default values of these heuristics are read from folder: <RDzInstallLocation>\SDPShared\plugins\plugins\ com.ibm.etools.xmlent.cobol.xform.gen_9.3.300.201003111122\plugi n.xml via a new internal extension point. The default content of plugin.xml follows: <extension point="com.ibm.etools.xmlent.cobol.xform.gen.heuristics"> <search_heuristics MAX_HASH_RANGE_MULTIPLIER="3" MAX_HASH_COMP_ELAPSED_MS="15000" /> </extension> Changes made to the attributes search_heuristics/@MAX_HASH_RANGE_MULTIPLIER and search_heuristic/@MAX_HASH_COMP_ELAPSED_MS take effect when RDz is started *with the -clean option*. Enterprise Service Tools projects will remember the values of these heuristics that were defined in plugin.xml when the code was generated. The values are recorded in the file Project/Generation/PlatformProperties.xml: <CodegenProperty name="com.ibm.etools.xmlent.ui.GEN_MAX_HASH_RANGE_MULTIPLIER" value="3"/> <CodegenProperty name="com.ibm.etools.xmlent.ui.GEN_MAX_HASH_COMP_ELAPSED_MS" value="15000"/> Once code has been generated in an Enterprise Service Tools project, the project will use the values recorded in the file Project/Generation/PlatformProperties.xml, not those in the file com.ibm.etools.xmlent.xform.gen.cobol/plugin.xml. Therefore, to specify different values for the heuristics when regenerating code in an EST project, edit the values in PlatformProperties.xml. The problem listed in this APAR has been resolved with IBM Rational Developer for System z V7.6.1 Refresh Pack which is available from the Recommended Fixes support download page: http://www-1.ibm.com/support/docview.wss?rs=2294&uid=swg27006335
Temporary fix
Comments
FITS MR0216104537 exists. This is a request for a more complete solution.
APAR Information
APAR number
PM09278
Reported component name
RATL DEV FOR SY
Reported component ID
5724T0700
Reported release
760
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2010-03-05
Closed date
2010-05-22
Last modified date
2010-06-01
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
RATL DEV FOR SY
Fixed component ID
5724T0700
Applicable component levels
R761 PSY
UP
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSJK49","label":"IBM Developer for z Systems"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.6","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]
Document Information
Modified date:
27 October 2020