We have menu applications that nest quite deep. Is there a method to force termination of an application from deep within the nest -- rather than backing out one screen at a time or reprogramming each application to avoid f12(prev)-f12-f12-f12-f3(exit)?
Use a return code
In your scenario, each program calls the next (maybe passing parameters). Add a return code parameter -- mine is seven characters, this way I can pass meaningful values and even message IDs.
The return code can be used to tell the called program something, but in your case you want to tell the calling program that the current program is terminating 'express'.
So the user presses F3=Exit in the currently active program in your nest, and it returns '*CMD03' to its caller when it terminates. The caller looks at the return code, and if it contains '*CMD03' it will just terminate itself, passing the same return code value to ITS calling program, and so on down your stack.
If the active program returns '*CMD12', then its calling program will regain normal control and redisplay its own screens.
MORE INFORMATION ON THIS TOPIC
The Best Web Links: tips, tutorials and more.
Ask your programming questions--or help out your peers by answering them--in our live discussion forums.
Ask the Experts yourself: Our application development gurus are waiting to answer your programming questions.
Dig Deeper on RPG iSeries programming
Related Q&A from John Blenkinsop
When an error occurs on an IBM command, the diagnostic messages are sent first, then an escape message, which you can monitor. On AS/400 you see the ... Continue Reading
Learn how to 'append data to the file' with the FTP DIR command, and eliminate the hassle of having to end the FTP session and restart to view ... Continue Reading
RPGIV will 'think of' incoming integer fields as binary, and then will redefine them in the program structures as PACKED. So, when you chain a record... Continue Reading