IBM Support

PM25279: LNR7065 issued on i/OS for compound conditional with dbcs literals

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • User's program abends with LNR7065, if the EGL source contains a
    compound IF statement with comparision to DBCS literals.
    
    For example:
          if (G9999MSHRINM == ' ' || G9999MSHRIMTD != ' '  )  ...
    
     in this example, the first literal is a DBCS blank.
    
    Workarounds:
    
    1. break the statement into multiple IFs
    2. use a variable with a value of DBCS blank rather than the
    DBCS literal blank in the if statement
    3. use
          if (G9999MSHRINM == d' '|| 99MSHRIMTD != ' ' ) ...
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The problem occurred when a compound IF statement had a
    series of binary expressions. In these expressions, the
    logic was comparing a DBCHAR variable with a string literal.
    The internal logic attempts to determine the appropriate
    type to set the string literal to, as it might not be a
    string. If the variable is a CHAR for example, then the
    string literal should be a char literal instead. The same
    goes for DBCHAR variables, the string literal should be
    changed to a dbchar literal instead.
    The problem was that the type being remembered was the first
    type it came across, but in the case of a compound IF
    statement, the first type was the type for a binary
    expression, which is type BOOLEAN. The logic erroneously
    remembered this and when it was trying to resolve the type
    to change the string literal to, did not get a match, so
    unicode was selected by default. This caused the problem.
    The other part of the problem, was that the RHS of the IF
    statement was still using the saved type from the LHS. Now
    it is being reset when crossing from the LHS to the RHS when
    they are not part of an expression.
    

Problem conclusion

  • Software updated. Fixtest available.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PM25279

  • Reported component name

    RBD EGL FOR COB

  • Reported component ID

    5724S5001

  • Reported release

    750

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-10-26

  • Closed date

    2011-05-06

  • Last modified date

    2011-05-06

  • 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

    RBD EGL FOR COB

  • Fixed component ID

    5724S5001

Applicable component levels

  • R750 PSN

       UP

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSMQ79","label":"Rational Business Developer"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.5","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
06 May 2011