• Subject: Re: *PSSR subroutine and the call stack
  • From: John Hall <jhall@xxxxxxxxxxx>
  • Date: Mon, 10 May 1999 09:15:55 -0400

Pete Hall wrote:
> At 12:07 05/09/1999 , Albert York wrote:
> >Now I'm curious. In my experience, a subroutine call involved saving the
> >current address (usually on a stack), branching to the subroutine, and
> >branching back to the saved address ( plus 1 instruction) at the end of the
> >subroutine. If RPG doesn't do it this way, how does it do it?
> Several years ago, I had a program that did something like this:
> mainline calls Sub A
> Sub A calls Sub B
> Sub B calls Sub C
> Sub C calls Sub A
> Sub A returns to mainline (not Sub C) - this was not the desired behavior
> >From this experience, I surmise that subroutine returns are implemented as
> branches to a program counter address which is set at the time the
> subroutine is first invoked. RPG doesn't complain about recursion either.
> It just doesn't work.
> Pete Hall

>From everything written here I think the "RETURN" or branch statement is
probably resolved at compile time.  
So that the exsr was implemented strictly as a pair of goto statements
and is used for readability only.


exsr   subA
suba   begsr  

is functionally equivalent to:

goto   suba
reta   tag
       goto   end
suba   tag
       goto   reta

end    tag

John Hall
Home Sales Co.
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com

This thread ...


Return to Archive home page | Return to MIDRANGE.COM home page