On Wed, Oct 12, 2022 at 10:11 AM Richard Cornwell <rich@...> wrote:
Hi Tom,
? ?You are going to have to implement your own routines. Perhaps check
?out how Algol or PL/1 handle subroutine calls. But standard call
?routines do not support re-entrant calls.
Rich
>
> Thank you for the info.? I need to figure out how to implement your
> suggestion.? I found in the documentation on SAVE an option
>? ? ? ? ? ? SAVE? (14,12),,xxxxxxx
> where xxxx is a ds 18f area to save the regs.? I am trying to figure
> out if the change will work on DOS/VS rel 34.
>
> Cheers
> /tom c
>
>
> On Wed, Oct 12, 2022 at 9:59 AM Richard Cornwell
> <rich@...> wrote:
>
> > Hi Tom,
> >
> >? ? Typically 360/370 subroutine calls are done with a what is
> > called a save area. This is 18 words allocated within the
> > subroutine. On entry the registers are saved into the previous
> > routines save area. Then the base register is set up and the save
> > pointer is pointed to the current save area. On exit the registers
> > are restore, this will include the previous save area.
> >
> >? This means that if you call a subroutine again it will wipe out the
> >? previous calls information. To do this properly you will either
> > need to allocate a bunch of memory to save all the registers in and
> > advance the save pointer for each call. The other option is to
> > allocate and free save areas at each call.
> >
> >? Basically you will need to implement some sort of stack to handle
> >? function calls if you want true recursive calls.
> >
> > Rich
> >
> >
> >
> >
> >
> >
> >
> >
> >?
>
>
>
>
>
>