APAR status
Closed as program error.
Error description
Client has migrated their IMS applications to V7, and nearly fin ished all testing. Since last week they are seeing some programs fail with sql -803 error. Problem Analysis: When the job UDBR81B is run, the application JFBERRA is execut ed, the following piece of Code is not executed in alternate seq uences, that's the reason for hitting -803. // Assign random error number Function JFBERP-EXE-GETERR#() set JFBZZDW1 empty; /**/ set JFBERS41A empty; /**/ while (JFBERS41A not ioError) /* While number is not unique*/ /**/ JFBZZDW1.DATE-REQUEST-CODE = 'RN'; /**/ if (JFBZZWER.DATE-FORM != ' ') /* 1997-10-04 CP APAR 64316*/ /* 1997-10-04 CP APAR 64316*/ JFBZZDW1.DATE-FORM-IN = JFBZZWER.DATE-FORM; /* 1997-10-04 C P APAR 64316*/ end /* 1997-10-04 CP APAR 64316*/ JFBERP-EXE-CALLDTE(); /* Call date rtn for rndm #*/ if (JFBZZDW1.DATE-RETURN-CODE != 0) /* If unable to gen a nbr */ JFBZZWER.JFBZZWEI-RC = 08; /* jfbrdap (PLI module)*/ return; /* return out*/ end /* End*/ JFBERP-INQ-R41A(); /* Check if Unique Number*/ if (JFBZZWER.JFBZZWEI-RC != 0) /* If error occured*/ return; /* return out*/ end /* End*/ end /* End*/ /**/ JFBERRR41.ERR-NUM = JFBZZDW1.DATE-RNUM; /**/ /**/ JFBERRR51.ERR-NUM = JFBERRR41.ERR-NUM; /**/ /**/ JFBZZWER.ERR-NUM = JFBERRR41.ERR-NUM; /**/ end // end JFBERP-EXE-GETERR# * ************************************************** * FUNCTION=JFBERP-EXE-GETERR# * ************************************************** E9 SECTION. SET EZESTK-RETURN-OFF TO TRUE MOVE 7 TO EZEWRK-ROUTING-RTN SET ADDRESS OF JFBZZWER-60 TO EZEGSV-PASSED-1 INITIALIZE JFBZZDW1-163 MOVE ALL '0' TO DATE-CC-150 IN JFBZZDW1-163 (1:) MOVE ALL '0' TO DATE-YY-152 IN JFBZZDW1-163 (1:) INITIALIZE JFBERS41A-135 CONTINUE. EZEBGN-324-WHILE. IF ( NOT EZESTA-JFBERS41-132-ERR ) GO TO EZETHN-324-WHILE ELSE GO TO EZEELS-324-WHILE END-IF. The application JFBERRA hits -803 because the Variable in the ab ove code is not re-initialized to Zero every time. In EGL Version 6 the Variable is initialized in the Proc 'EZEINI TIALIZE-USER-STORAGE SECTION' explicitly everytime whereas in EGL Version 7 the Variable is not initialized in the Proc 'EZ EINITIALIZE-USER-STORAGE SECTION'. So, the First time, the While loop is executed, the process is f ine(Inserted the correct values into the table JFBT41). The second the while is not executed because the variable is not set to zero, the process is in error still doesn't through any error(Inserted incorrect values into the table JFBT41, because i t's the first time). The third time the While loop is executed, the process is fine(I nserted the correct values into the table JFBT41). The Fourth time, the while is not executed because the variable is not set to zero, the process is in error and the -803 is hit due to Second time and it goes on alternatively.(Trying to inser t the incorrect values into the table JFBT41 for the second time with the same key and hits - 803). EZEINITIALIZE-USER-STORAGE SECTION. MOVE 0 TO EZESTA-EZE2-JFBERRR41-RC PERFORM EZESETEMP-EZE2-JFBERRR41 MOVE 0 TO EZESTA-EZE20-JFBERRR51-RC PERFORM EZESETEMP-EZE20-JFBERRR51 PERFORM EZESETEMP-JFBERRWI PERFORM EZESETEMP-JFBERRWI-LEVEL77IT MOVE 0 TO EZESTA-EZE64-JFBERS41A-RC ?== PERFORM EZESETEMP-EZE64-JFBERS41A PERFORM EZESETEMP-JFBZZDW1 PERFORM EZESETEMP-JFCERCA PERFORM EZESETEMP-JFCERMS MOVE SPACES TO VAGEN-EZESYS MOVE ZEROS TO VAGEN-EZEREPLY MOVE ZEROS TO VAGEN-EZE-WAIT-TIME MOVE ZEROS TO VAGEN-EZE-ITEMLEN CONTINUE. EZEINITIALIZE-USER-STORAGE-X. EXIT. JFBERP-EXE-GETERRX SECTION. DISPLAY '****JFBERP-EXE-GETERRX SECTION.'. MOVE 'JFBERP-EXE-GETERRX' TO EZERTS-PRC-NAME PERFORM EZESETEMP-JFBZZDW1 PERFORM EZESETEMP-EZE64-JFBERS41A CONTINUE. EZECONDLBL-77. IF NOT EZESTA-EZE64-JFBERS41A-ERR GO TO EZECONDLBL-26 END-IF GO TO EZECONDLBL-27 CONTINUE. EZEINITIALIZE-USER-STORAGE SECTION. CONTINUE. EZEINITIALIZE-USER-STORAGE-X. EXIT. * ************************************************** * FUNCTION=JFBERP-EXE-GETERR# * ************************************************** E9 SECTION. SET EZESTK-RETURN-OFF TO TRUE MOVE 7 TO EZEWRK-ROUTING-RTN SET ADDRESS OF JFBZZWER-60 TO EZEGSV-PASSED-1 INITIALIZE JFBZZDW1-163 MOVE ALL '0' TO DATE-CC-150 IN JFBZZDW1-163 (1:) MOVE ALL '0' TO DATE-YY-152 IN JFBZZDW1-163 (1:) INITIALIZE JFBERS41A-135 CONTINUE. EZEBGN-324-WHILE. IF ( NOT EZESTA-JFBERS41-132-ERR ) GO TO EZETHN-324-WHILE ELSE GO TO EZEELS-324-WHILE END-IF. When the application is run after re-initializing the variable ' EZESTA-EZE64-JFBERS41A-RC' to zero, the application did not hit -803. It went fine.
Local fix
Problem summary
The working-storage SQL return-code variable was not being reinitialized to 0 on re-entry to the called program.
Problem conclusion
Software updated. Fixtest available.
Temporary fix
Comments
APAR Information
APAR number
PK97601
Reported component name
RATL BUS DEV
Reported component ID
5724S5000
Reported release
751
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2009-09-30
Closed date
2009-12-14
Last modified date
2009-12-14
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
RATL BUS DEV
Fixed component ID
5724S5000
Applicable component levels
R751 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.1","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]
Document Information
Modified date:
14 December 2009