|
>>Second, coding multiple returns in a routine CAN be a bad technique in
>>and of itself. Multiple returns get to be problematic when you're
>>actually returning a value, and the value you return depends on which
>>point you're exiting from. Even with a breakpoint on a P-E, it can be
>>difficult to tell what is actually being returned. And if the calling
>>routine is not placing the value into a temporary value but instead
>>using it as a parameter to another routine (possibly one for which you
>>have no source), or worse yet returning the value to ITS caller, the
>>code can get difficult to debug.
That's why we decided to add a Return-Subroutine in almost each of our
procedure,
like we've done it already in our RPGIII programs.
In the Return-Subroutine, the return values, output parameters
and error handling (sending an excape message if an error occured) are
handled.
Example:
Monitor;
If ParmXXX = *Blanks;
Error = True;
MsgId = 'MSG0001';
exsr XReturn;
EndIf;
Chain MyKey MyFileF;
If Not %Found;
Error = True;
MsgId = 'MSG0002';
exsr XReturn;
EndIf;
....
On-Error;
$Error = True;
EndMon;
XReturn;
BegSR XReturn;
If Error = True;
If MsgId = *Blanks;
MsgId = 'CPF9898';
MsgTxt = SDSMsgTxt;
EndIf;
SndEscMsg(MsgId: MsgTxt);
EndIf;
ParmOut1 = WhatEver;
If %Parms >= NbrParmOut2;
ParmOut2 = MyFld;
EndIf;
Return MyRtnValue;
EndSR;
Birgitta
--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.