On Tue, 25 Jun 2013 08:15:46 -0500, John McKown <[email protected]> 
wrote:

>1) Can I use a BAKR instruction in CICS successfully.

You will still need to provide a save area, which would be marked with "F1SA" 
in offset 4, or set register 13 to zero.  This is necessary for debugging 
purposes, 
even if you never call any other program that will require a save area.  See 
Chapter 2 of the Assembler Services Guide for release 12 or above of z/OS.

>4) What about not using a save area at all?

Please don't do that.

>It might be poor design, but
>what about using the high full word of each register as a save area for the
>lower full word?

That would be a violation of the linkage conventions.  If you alter 
the high halves of the registers, you must save them.

>I _assume_
>that bits 0-31 at entry are not important and need not be saved/restored.

Linkage conventions say otherwise.  If any program that might ever 
call your program uses the high halves, you will break that program 
when you return to it.

>5) What about using the access registers as a save area? 

The same as the high halves.  If you use it, you are responsible for 
saving it and restoring it when you are finished.

Both this and the idea of using the high halves confuses the use of 
the save area that you use to save your caller's registers with the 
save area that you provide for any program that you call.  Upon 
entry, register 13 contains the address of a save area that you use 
to save your caller's registers.  You then load register 13 with the 
address of a save area that you provide for your callers.

If you are absolutely certain that you will never call any other 
program, you could save your caller's registers in the save area 
that was provided by your caller and set register 13 to zero. 
I don't recommend it.

If you can't use GETMAIN or STORAGE OBTAIN in a CICS environment, 
you could require that your caller pass you an area that includes space 
for your save area.  This could be a requirement that the area in 
register 13 be 144 bytes (assuming that you will provide only a 72-byte 
save area), or it could be an area passed via register 1.

Is there a way for the code to determine whether it is running under CICS 
without having to make a call that requires a save area?

>I don't think that the Access Registers are used
>in CICS application code and I doubt their values are assumed to be
>anything specific in CICS management routines. I.e. they should be
>available without saving.

No, they are not available for use without saving.

-- 
Tom Marchant

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to