PK69308: Rational Business Developer V7.1.0: Abend U0476 due to an inval id PCB address

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • Rational Business Developer V7.1.0:
    
    Abend U0476 due to an invalid PCB address.
    
    This problem occurs when passing an IO-PCB to an EGL function
    which passes it to a subprogram:
    
      y41_Ucd_Rcv_Msg_Async_Via_Id (pg9p21.iopcb,
                                    g9p21_Iptmsg.usr_Dat a);
    
    In this function the IO-PCB is passed as parameter to a
    subprogram:
    
      function y41_Ucd_Rcv_Msg_Async_Via_Id (iopcb IO_PCBRECORD in,
                                             msg char)
      //------------------------------------------------------------
      ....
      call 'd9cp5' (iopcb, id9cp5, msg);
      ....
    
    This is the generated COBOL code:
    
      CALL EZEPROGM USING EZELFP-IOPCB-941 ID9CP5-977 EZELFP-MSG-942
    
    
    When the subprogram uses the IO-PCB ( a GU on IMS message
    queue ), an abend (U0476) occurs because the passed IO-PCB is
    not the one with the correct IMS address.
    
    In the dump, it was determined that the real IO-PCB is reserved
    below the line and the one passed to the subprogram is above the
    line.
    
    This problem is due to the function being invoked having defined
    the PCB record as type IN, which causes a copy of the PCB to be
    made.  This copy of the PCB is being made in above the line
    memory, instead of what IMS needs, which is the original PCB.
    This 'copy' is what causes the problem.
    
    To fix this, the function PCB argument must be defined as type
    INOUT (which is the default).   Rational Business Developer
    V7.1.0 has a validation problem which prevents moving data into
    a PCB (this should be allowed).  The validation problem causes
    the function INOUT type to be flagged as invalid.  In this
    case, validation should not allow the IN type and should only
    allow the INOUT type.
    
    The correct COBOL code is generated when the INOUT type is used.
    

Local fix

  • A tempfix is available from support to not allow the IN type and
    only allow the INOUT type.
    

Problem summary

  • Error was caused because the PCB was passed as an IN parm to
    a function, because the parm was defined as IN.
    

Problem conclusion

  • The check has been modfied so that the PCB record must be
    passed to an INOUT parameter, so a copy is not performed
    

Temporary fix

Comments

APAR Information

  • APAR number

    PK69308

  • Reported component name

    RATL BUS DEV EX

  • Reported component ID

    5724S5000

  • Reported release

    710

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2008-07-18

  • Closed date

    2008-12-15

  • Last modified date

    2008-12-15

  • 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

    RBDE EGL FOR CO

  • Fixed component ID

    5724S5001

Applicable component levels

  • R710 PSN

       UP



Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

Rational Business Developer

Software version:

7.1

Reference #:

PK69308

Modified date:

2008-12-15

Translate my page

Machine Translation

Content navigation