I am not sure whether it accepts negative return codes or not.
But i can give you one reason why it is giving RC=00 even though you have forced it to -805. Juct check, whether do u have any CALLs to subprograms after you set the retunr-code to -805. because it resets the retunr-code when the call to sub program is successful.
We do have a called program and it's passing a return code value to the calling program, will in turn will be MOVEd into the RETURN-CODE register right before ending the execution. However, we realized it's has been passing SQLCODE values which can be negative. This is easy to resolve however I'm puzzled by the way JCL/JES2 message interprets negative values.
We're quite sure that the RETURN-CODE value is -805 because we DISPLAYed it in the SYSOUT but I'm confused why JCL/JES2 changes it to RC=00.