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.
This was first published in September 2004