|
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 +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.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 on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.