As far as I know the upper case requirement isn't a MUMPS requirement. Both Cache and GTM can use mixed case. See the following for a more readable code example. Note that is does include extended reference in GTM (It can be done).
Set MenuName=""
For Set MenuName=$Order(^|ov|DIC(19,"B",MenuName)) Quit:MenuName="" Do
. Set IEN=$Order(^|ov|DIC(19,"B",MenuName,0))
. Set Menu(0)=$Get(^|ov|DIC(19,IEN,0))
. Set Menu(15)=$Get(^|ov|DIC(19,IEN,15))
. Set Menu(20)=$Get(^|ov|DIC(19,IEN,20))
. Set Menu(22)=$Get(^|ov|DIC(19,IEN,22))
. Set Menu(25)=$Get(^|ov|DIC(19,IEN,25))
. Set Menu(26)=$Get(^|ov|DIC(19,IEN,26))
. Set MenuDesc=$Piece(Menu(0),"^",2)
. Set ExitAction=Menu(15)
. Set EntryAction=Menu(20)
. Set XquitExecutable=Menu(22)
. Set MenuRoutine=Menu(25)
. Set MenuHeader=Menu(26)
. Write "<tr><td>",MenuName,"</td><td>",MenuDesc,"</td>"
. Write "<td>"
. Write:MenuHeader'="" "<b>HEADER:</b> ",MenuHeader,"<br>"
. Write:EntryAction'="" "<b>ENTRY ACTION:</b> ",EntryAction,"<br>"
. Write:MenuRoutine'="" "<b>ROUTINE:</b> ",MenuRoutine,"<br>"
. Write:ExitAction'="" "<b>EXIT ACTION:</b> ",ExitAction,"<br>"
. Write:XquitExecutable'="" "<b>XQUIT EXECUTABLE:</b> ",XquitExecutable,"<br>"
. Write "</td></tr>",!
Write "</table>",!
On b. #2, finding sys admins and programmers has always been an issue
because M was never a common language in the outside world. But again,
there's the part of picking on Mumps; most Computer Science students
are not exposed to the languages they will use in their work until
they do work on it: and a competent sys admin for any database can
manage Mumps databases. It's not really that different. What's really
missing is educational material on Mumps and that is something we are
trying to remedy.
Thank you Rob, your vision has come to fruition, and while there will always be naysayers in the MUMPS community, your product (free, thank you very much) will bring back the interest MUMPS lost over the years, except for the few of us who remain loyal to it. I have been having a lot of fun with ewd.js and see it as the new interface tool to the M backend, while still allowing us old MUMPSters to develop in our language, while allowing us to embrace the newest technologies in development.
I expect so see ewd.js/node.js/js in the mainstream of Healthcare IT in the very near future, and quite frankly I am looking forward to it. This has been a vision of mine and others within the VA for quite some years, but our ideas always fell on deaf ears.
Cheers,
Roy
--
The urge to save humanity is almost always a false front for the urge to rule - HL Mencken