PK69308: Rational Business Developer V7.1.0: Abend U0476 due to an inval id PCB address
Closed as program error.
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.
A tempfix is available from support to not allow the IN type and only allow the INOUT type.
Error was caused because the PCB was passed as an IN parm to a function, because the parm was defined as IN.
The check has been modfied so that the PCB record must be passed to an INOUT parameter, so a copy is not performed
Reported component name
RATL BUS DEV EX
Reported component ID
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
RBDE EGL FOR CO
Fixed component ID
Applicable component levels