MIDRANGE dot COM Mailing List Archive



Home » MIDRANGE-L » May 1999

Re: *PSSR subroutine and the call stack


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

fixed

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.

ex

exsr   subA
.
.
.
suba   begsr  
       endsr  

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
+---






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

This mailing list archive is Copyright 1997-2014 by MIDRANGE dot COM and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available here. If you have questions about this, please contact