I think you will be surprised - you can change the key field values on a CHGOBJ!
Pass the new key fields in as additional parameters to the CHGOBJ, then in one of the user points before update move the new key fields to the original key fields - and it should work.
I seem to recall that this will not work when generating COBOL - but that is from 15+ years ago - and the memories are fading somewhat...