IBM Support

JR29520: UNNECESSARY 2 BYTES RETURNS BY SUBSTRINGS() IN THE CASE OF INPUT TRAIL IS 0XE0.

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Substring function in a transformer stage of a server job
    returns a wrong value.
    
    Job design is very simple. Seq1-->Trans-->Seq2. Substring
    function is used in the transformar like
    Substrings(DSLink3.c,5,4), DSLink3.c[5,4] in the output
    derivation.
    
    When the last byte of DSLink3.c is 0xE0, the result from the
    above substring functions is strange.
    
    For example, when DSLink3.c is 0x00 00 00 00 00 BB 31 E0, the
    result becomes 0x00 BB 31 E0 02 00. Last two bytes (02 00) are
    unnecessary.
    
    This should become 0x00 BB 31 E0.
    

Local fix

  • We know Right() returns the expected substring, but it has a
    significant impact on customers job to replace Substrings()
    with Right(). So customer is requesting a patch for this issue.
    
    This fix is included in 8.0.1 fixpack 3
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    When NLS is enabled and SUBSTRINGS function or BASIC substring
    expression var[x,y] is used in a BASIC transformer
    ****************************************************************
    PROBLEM DESCRIPTION:
    When (1) NLS is enabled, (2) BASIC transformers contain
    SUBSTRINGS or substring expressions, and (3) columns contain
    binary data strings that end in bytes equal to 0xC*, 0xD*, or
     0xE*, the resulting string will contain 1 or 2 extra bytes.
    ****************************************************************
    RECOMMENDATION:
    Request a patch.
    This change is included in 8.1 Fix Pack 1.
    ****************************************************************
    

Problem conclusion

  • BASIC string functions generally should not be passed binary
    data since certain bytes have special meaning (such as 0xC0,
    0xD0, and 0xE0 which indicate multibyte sequences).  However,
     since the SUBSTRINGS processing was returning pointers beyond
    end of string when last byte of data was 0xC*, 0xD*, or 0xE*,
      a change was made to prevent this.  The fix was patched for
     7.5.1A Redhat Linux.  The fix will be propagated to 7.5.3,
     8.0.1, and 8.1 for upcoming releases.
    

Temporary fix

Comments

APAR Information

  • APAR number

    JR29520

  • Reported component name

    WIS DATASTAGE

  • Reported component ID

    5724Q36DS

  • Reported release

    751

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2008-06-10

  • Closed date

    2008-07-28

  • Last modified date

    2010-12-09

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

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

Modules/Macros

  • SERVER
    

Fix information

  • Fixed component name

    WIS DATASTAGE

  • Fixed component ID

    5724Q36DS

Applicable component levels

  • R751 PSN

       UP

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSVSEF","label":"IBM InfoSphere DataStage"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.5.1","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
09 December 2010