Working storage is generally a term reserved for use with COBOL -- as in WORKING-STORAGE SECTION. So it is confusing when you say
persistent "working storage"
- if you're talking about the assembler data areas, that's not "working storage" as the term is commonly used; if you're talking about the COBOL WORKING-STORAGE, then it will be the same when the subprogram returns as when the subprogram is invoked (unless, of course, you changed it in the subprogram).
And it is not clear why you would think a dynamic call would behave differently than a static call =- unless the calling program uses a CANCEL to reset the called program storage.