IBM Support

IT16915: PCFMessage.getStringListParameterValue(int) incorrectly returns MQRC 2238 if a PCF message does not contain parameter specified.

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Running an MQ java application on WebSphere MQ V7.5 sending PCF
    queries to a queue manager on z/OS the queue manager can
    generate a series of response messages where each response
    message contains a number of parameters and their values, each
    of different types.
    
    The method:
    
      PCFMessage.getStringListParamterValue(int)
    
    provided by the WebSphere MQ PCF classes takes a PCF parameter
    type as an argument, and returns an array of Strings that
    contain all of the values for that parameter in the current
    response message. If the response message does not contain the
    PCF parameter specified, then the method will throw a
    PCFException.
    
    As an example the java application sends a PCF request message
    containing the command:
    
      MQCMD_INQUIRE_Q_NAMES
    
    to a queue manager running on z/OS, the queue manager generates
    two response messages:
    
      - The first response message contains an MQCFSL parameter of
        type MQCACF_Q_NAMES which stores a list of queue names.
    
      - The second response message does not contain any MQCFSL
        parameters.
    
    As the second response message does not contain an MQCFSL
    parameter of type MQCACF_Q_NAMES, the call:
    
      String[] queueNamesPCF =
    responses[i].getStringListParameterValue(CMQCFC.MQCACF_Q_NAMES);
    
    throws a PCFException along with:
    
      com.ibm.mq.pcf.PCFException: MQJE001: Completion Code '2',
      Reason '2238': MQRC_CFSL_ERROR
    
    This reason code is incorrect!
    
    The JavaDoc indicates that the method:
    
      PCFMessage.getStringListParamterValue(int)
    
    will throw a PCFException containing WebSphere MQ Reason Code
    3033:
    
      MQRCCF_CFSL_PARM_ID_ERROR
    
    if the PCF message does not contain the parameter specified.
    

Local fix

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of:
    
    - The WebSphere MQ V7.5 Headers and PCF classes.
    - The MQ V8.0 Headers and PCF classes.
    - The MQ V9.0 Headers and PCF classes.
    
    who have applications that one of the methods shown below:
    
    - com.ibm.mq.pcf.PCFMessage.getStringListParameterValue(int)
    -
    com.ibm.mq.headers.pcf.PCFMessage.getStringListParameterValue(in
    t)
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    The WebSphere MQ V7.5 Headers and PCF classes, along with the MQ
    V8.0 and V9.0 Headers and PCF classes, contain the following
    interfaces:
    
    - com.ibm.mq.pcf.PCFContent
    - com.ibm.mq.headers.pcf.PCFContent
    
    Both of these interfaces contain a definition of the method
    shown below:
    
    ****************************************************************
    *******
    getStringListParameterValue
    java.lang.String[] getStringListParameterValue( int parameter)
        throws PCFException
    
    Returns the value of the specified string list parameter
    (MQCFSL)
    as an array of strings.
    
    Parameters:
    parameter - the string list parameter identifier
    
    Returns:
    the string list parameter values
    
    Throws:
    PCFException - if the specified parameter does not exist in the
    group (the reason code given is MQRCCF_CFSL_PARM_ID_ERROR;
    no more specific error code is defined)
    ****************************************************************
    *******
    
    The implementation of this method provided by the classes:
    
    - com.ibm.mq.pcf.PCFMessage.getStringListParameterValue(int)
    -
    com.ibm.mq.headers.pcf.PCFMessage.getStringListParameterValue(in
    t)
    
    were incorrect and did not conform to the definition of the
    method shown above. If the method was called and the specified
    parameter did not exist in the PCFMessage, then a PCFException
    containing reason code 2238 (MQRC_CFSL_ERROR), rather than
    reason code 3033 (MQRCCF_CFSL_PARM_ID_ERROR), was thrown.
    

Problem conclusion

  • The WebSphere MQ V7.5 Headers and PCF classes, along with the MQ
    V8.0 and V9.0 Headers and PCF classes, have been updated so that
    the methods:
    
    - com.ibm.mq.pcf.PCFMessage.getStringListParameterValue(int)
    -
    com.ibm.mq.headers.pcf.PCFMessage.getStringListParameterValue(in
    t)
    
    throw a PCFException containing reason code 3033
    (MQRCCF_CFSL_PARM_ID_ERROR) if the specified parameter does not
    exist in the PCFMessage.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v7.5       7.5.0.8
    v8.0       8.0.0.6
    v9.0 CD    9.0.2
    v9.0 LTS   9.0.0.1
    
    The latest available maintenance can be obtained from
    'WebSphere MQ Recommended Fixes'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006037
    
    If the maintenance level is not yet available information on
    its planned availability can be found in 'WebSphere MQ
    Planned Maintenance Release Dates'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006309
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IT16915

  • Reported component name

    WMQ BASE MULTIP

  • Reported component ID

    5724H7241

  • Reported release

    750

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-09-06

  • Closed date

    2016-10-28

  • Last modified date

    2017-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

    WMQ BASE MULTIP

  • Fixed component ID

    5724H7241

Applicable component levels

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCPQ63","label":"APAR \/ Maintenance"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.5","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
01 June 2017