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