For the record, this has been an enlightening* discussion, but it is all a moot point for programs that can run under Language Environment, because LE does not support anything but standard 72-byte chaining in the save areas (in amode 24/31 programs).
This is documented in: z/OS 2.3 Language Environment > z/OS Language Environment Programming Guide > Specialized programming tasks > Register conventions > Non-Language Environment conforming assembler routines: "The register save area back chain must be set to a valid 31-bit address" z/OS 2.3 MVS > z/OS MVS Programming: Assembler Services Guide > Linkage conventions > Using a caller-provided save area > If changing the contents of bits 0-31 of the 64-bit GPRs but not changing ARs: "If the caller provides a 72-byte save area, then the target program must save the low halves of the 64-bit GPRs in that 72-byte area, and then must save the high halves in its own save area, which might be a Format 5 or Format 8 save areas IF THE PROGRAM IS NOT RUN UNDER the CONTROL OF LANGUAGE ENVIRONMENT" (emphasis mine) "Word 1: Value of "F5SA" or "F8SA"... Note: This field must contain a valid address if the programs are run under Language Environment" Enterprise COBOL for z/OS 6.2 > Migration Guide > Appendixes > Applications with COBOL and assembler > Saving and restoring the high halves of General Purpose Registers in assembler programs: "Do not use the F5SA or F8SA save area formats as described in the MVS(tm) Programming: Assembler Services Guide." * The fact that is so confusing implies that the Assembler Services Guide is not doing a good job of explaining it. It is hard to understand because it defies expectations. What you *expect* is that you have a value that describes the format of a structure, and by implication, its length. -----Original Message----- From: IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU> On Behalf Of Seymour J Metz Sent: Thursday, January 20, 2022 11:22 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Saving Caller's 64-bit Registers Some of the new formats are used in conjunction with a 72-byte save area, and you can definitely use them in A31. I don't know what LE supports (OCO delenda est!). -- Shmuel (Seymour J.) Metz https://clicktime.symantec.com/3SeUTRDS2aQHgDGTDxwuQwH7VN?u=http%3A%2F%2Fmason.gmu.edu%2F~smetz3 ________________________________________ From: IBM Mainframe Assembler List [ASSEMBLER-LIST@LISTSERV.UGA.EDU] on behalf of Schmitt, Michael [michael.schm...@dxc.com] Sent: Thursday, January 20, 2022 10:56 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Saving Caller's 64-bit Registers The problem is that the new save area formats are not compatible with the 72-byte save area format, so you can't use them in amode 31 unless you control both the calling and called programs. And they're not supported by Language Environment. -----Original Message----- From: IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU> On Behalf Of Steve Smith Sent: Thursday, January 20, 2022 9:52 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Saving Caller's 64-bit Registers I don't know what you found, but that's incorrect. A standard Format-4 save area is 144 bytes, and there are additional formats (5-8) that can hold combinations of ARs and high-halves. As previously mentioned, the Assembler Services Guide defines all this. sas