Kevin; I feel the same way about curley braces (in C and other legitimate languages). I find it so strange to see which closing brace goes with which opening brace.
I have programmed in FORTRAN and APL before MUMPS and was very happy to NOT use the GOTO in MUMPS. Now the exit on condition can be abbomplished with a consistant set of exit actions by installing a dot block which allows for the negative/positive actions to decide an action and then to exit. It is what I call a herring bone filter. Here is a simplified form; EVALU8(A,B) ; Evaluate the string passed as A, contition returned in B N E,X S B=$G(B) S E=$G(A) S X="999;Unidentified Error: "_E D . I A?1.N S X="0;Numeric: "_E Q . I A?1.AN S X="0;AlphaNumeric: "_E Q . ; As many conditions as needed go here, but when the situation is found, exit the block. . ; Else was a precondition .QUIT S:'X B="Success" QUIT X ; ============== ----- Original Message ----- From: "Kevin Toppenberg" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Wednesday, September 14, 2005 5:17 PM Subject: [Hardhats-members] Re: More easy M syntax questions I have always been taught that goto's should be avoided like the plague. And that is the general rule I have always followed before working with M. One issue is that having to nest block of code with leader dots (e.g. . . . S I=1), makes it more awkard in my opion. So it becomes easier to have this: MyFunct(a,b) new result set result=-1 if $get(a)="" goto FuncDone if $get(b)="" goto FuncDone set result=a*b ;//more code here. FuncDone quit result as compared to MyFunct(a,b) new result set result=-1 if ($get(a)'="")&($get(b)="") do . set result=a*b . ;//more code here FuncDone quit result Another issue is that the for loops in M don't have a "break" or "continue" command, which makes the syntax a bit more awkward. Kevin On 9/14/05, Greg Woodhouse <[EMAIL PROTECTED]> wrote: > The reason I care is that I've been thinking about code analysis and > code generation lately. One topic of special inteest to me is > concurrent and distributed processing, and I've been thinking about > ways of effectively using multiprocessors to run sequential programs. > > --- Greg Woodhouse <[EMAIL PROTECTED]> wrote: > > > I was referring to the GOTOs as the "exits", not the QUIT. > > > > In another language, would your code have been something like this > > > > try > > Your code here > > > > except e1 > > Handle exceptional condition 1 > > > > ... > > > > except en > > Handle exceptional condition n > > > > finally > > "Cleanup" code goes here > > > > Normal exit here > > > > > > --- Kevin Toppenberg <[EMAIL PROTECTED]> wrote: > > > > > See below > > > > > > On 9/14/05, Greg Woodhouse <[EMAIL PROTECTED]> wrote: > > > > > > > > > > That's quite an interesting question. Is it better to have > > multiple > > > > exits or to have GOTOs that branch to a common exit point? It > > seems > > > > rather arcane, but two questions come to mind: > > > > > > > > 1. Is the single exit point used to ensure that all "cleanup" > > code > > > is > > > > in the same place? > > > > > > Yes. Also to make sure that my return values for the function are > > > properly > > > set etc. > > > > > > 2. Do you have multiple "normal" exits, or do the others correspond > > > to > > > > exceptional conditions? > > > > > > No, I only have one exit. > > > Thanks > > > Kevin > > > > > > --- Kevin Toppenberg <[EMAIL PROTECTED]> wrote: > > > > > > > > > Greg, > > > > > I use the GOTO because I always set things up such that every > > > > > function has > > > > > only ONE exit point. That way if I come back later, and I want > > to > > > do > > > > > something in the function before it exits, I can put the code > > at > > > the > > > > > end. > > > > > But if I have QUITS scattered about, then its more messy. > > > > > And no I haven't started abreviating code. I was just picking > > > > > through > > > > > existing code and trying to make it as easy for others when I > > > posted > > > > > here. > > > > > Thanks! > > > > > Kevin > > > > > > > > > > On 9/13/05, Greg Kreis <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > It quits the FOR loop. I believe the code is better written > > > with > > > > > the > > > > > > QUIT instead of the GOTO. > > > > > > > > > > > > S EX=0 > > > > > > F D0=0:0 DO Q:EX > > > > > > . S D0=$O(^UTILITY(U,$J,DDF(1),D0)) > > > > > > . S:D0="" D0=-1 > > > > > > . I '$D(^UTILITY(U,$J,DDF(1),D0,0)) S EX=1 Q > > > > > > . S Z=^UTILITY(U,$J,DDF(1),D0,0) > > > > > > . D I^DITR > > > > > > > > > > > > BUT, BUT, BUT.... did you notice all the code that had to be > > > > > converted > > > > > > to full global references to be compliant with VA programming > > > > > standards > > > > > > on the use of naked references? (The rule in the SACC about > > no > > > line > > > > > > starting with a naked reference is a sound one, BTW, born of > > > > > > experience.) Also, you have to add a semaphore (EX in this > > > case) if > > > > > you > > > > > > want to avoid checking the global existence repeatedly. You > > can > > > see > > > > > > that by stretching the code out over several lines (what I > > > > > generally > > > > > > recommend) in this case made the code more verbose because we > > > now > > > > > have > > > > > > to manage what the context was handling when all on one line > > in > > > the > > > > > loop. > > > > > > > > > > > > Isn't it eye opening to see how many subtleties are in M > > code? > > > (I > > > > > am > > > > > > not sure why they wanted to set D0=-1 unless they were going > > to > > > > > > encounter problems with it being null beyond just the null > > > > > subscript > > > > > > error in the global reference that follows the check and set > > of > > > > > D0.) > > > > > > > > > > > > P.S. > > > > > > I notice you have taken to abbreviating commands... ;-) or > > are > > > you > > > > > just > > > > > > tearing apart something already written? > > > > > > > > > > > > > > > > > > Kevin Toppenberg wrote: > > > > > > > > > > > > >Hey all, > > > > > > > > > > > > > >I am working with this line of code: > > > > > > > > > > > > > >F D0=0:0 S D0=$O(^UTILITY(U,$J,DDF(1),D0)) S:D0="" > > > > > > >D0=-1 Q:'$D(^(D0,0)) S Z=^(0) D I^DITR > > > > > > > > > > > > > > > > > > > > >My question, does the QUIT in this line quit the For > > > > > > >loop, or quit the function? > > > > > > > > > > > > > >Would this be equivalent code: > > > > > > > > > > > > > >F D0=0:0 DO GOTO:'$D(^(D0,0)) LABEL1 > > > > > > >. S D0=$O(^UTILITY(U,$J,DDF(1),D0)) > > > > > > >. S:D0="" D0=-1 > > > > > > >. Q:'$D(^(D0,0)) > > > > > > >. S Z=^(0) > > > > > > >. D I^DITR > > > > > > > > > > > > > >LABEL1 > > > > > > > QUIT > > > > > > > > > > > > > > > > > > > > >Thanks > > > > > > >Kevin > > > > > > > > > > > > > > > > > > > > > > > > > > > >__________________________________ > > > > > > >Do you Yahoo!? > > > > > > >Check out the new Yahoo! Front Page. > > > > > > >www.yahoo.com <http://www.yahoo.com> <http://www.yahoo.com> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >------------------------------------------------------- > > > > > > >This SF.Net email is sponsored by: > > > > > > >Sybase ASE Linux Express Edition - download now for FREE > > > > > > >LinuxWorld Reader's Choice Award Winner for best database on > > > > > Linux. > > > > > > >http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click > > > > > > >_______________________________________________ > > > > > > >Hardhats-members mailing list > > > > > > >[email protected] > > > > > > > > >https://lists.sourceforge.net/lists/listinfo/hardhats-members > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Greg Kreis http://www.PioneerDataSys.com > > > > > > > > > > > > "You are today where your thoughts have brought you, you will > > > > > > be tomorrow where your thoughts take you." (James Lane Allen) > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > > > SF.Net email is sponsored by: > > > > > > Tame your development challenges with Apache's Geronimo App > > > Server. > > > > > > > > > > > Download > > > > > > it for free - -and be entered to win a 42" plasma tv or your > > > very > > > > > own > > > > > > Sony(tm)PSP. Click here to play: > > > > > http://sourceforge.net/geronimo.php > > > > > > _______________________________________________ > > > > > > Hardhats-members mailing list > > > > > > [email protected] > > > > > > https://lists.sourceforge.net/lists/listinfo/hardhats-members > > > > > > > > > > > > > > > > > > > > > > > > > > > === > > > > Gregory Woodhouse <[EMAIL PROTECTED]> > > > > > > > > > > > > > > > > "Without the requirement of mathematical aesthetics a great many > > > > discoveries would not have been made." > > > > > > > > -- Albert Einstein > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > SF.Net email is sponsored by: > > > > Tame your development challenges with Apache's Geronimo App > > Server. > > > > > > > Download > > > > it for free - -and be entered to win a 42" plasma tv or your very > > > own > > > > Sony(tm)PSP. Click here to play: > > > http://sourceforge.net/geronimo.php > > > > _______________________________________________ > > > > Hardhats-members mailing list > > > > [email protected] > > > > https://lists.sourceforge.net/lists/listinfo/hardhats-members > > > > > > > > > > > > > > > === > > Gregory Woodhouse <[EMAIL PROTECTED]> > > > > > > > > "Without the requirement of mathematical aesthetics a great many > > discoveries would not have been made." > > > > -- Albert Einstein > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > SF.Net email is sponsored by: > > Tame your development challenges with Apache's Geronimo App Server. > > Download > > it for free - -and be entered to win a 42" plasma tv or your very own > > Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > > _______________________________________________ > > Hardhats-members mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/hardhats-members > > > > > > === > Gregory Woodhouse <[EMAIL PROTECTED]> > > > > "Without the requirement of mathematical aesthetics a great many discoveries > would not have been made." > > -- Albert Einstein > > > > > > > > > > > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. > Download > it for free - -and be entered to win a 42" plasma tv or your very own > Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > _______________________________________________ > Hardhats-members mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/hardhats-members > ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Hardhats-members mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/hardhats-members ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Hardhats-members mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/hardhats-members
