I expect that MASH is intended to be an enhanced command line, and it is intended to be written in MUMPS. The David Bolduc's Victory Programming Environment does something like this.

VPE allows a programmer to do many things. This information is from VPE version 10.

1) Command Line History - ability to retrieve previous commands issued and re use them.2) QWIK Commands - user defined commands either per person or for the entire shop (system)3) Online help for FileMan and Kernel.4) Vendor Generic Utilities to manipulate routines, globals, and FileMan Files.

5) Example KWIKs are: 5.1) VShell 5.2) VGL 5.3) VRR 5.4) VEDD

S Y S T E M Q W I K S System QWIKs come with the VShell. To invoke a System QWIK, type two dots followed by the name. For example, to run VGL you would type ..VGL. The following is a list of the available System QWIKs, grouped by category:

1.) QWIK RELATED

QB Assign User QWIKs to a Box. See BOXES help text. QC Copy a QWIK. QD Delete a QWIK. QE Add/Edit a QWIK. Same as <TAB>. QL1 List User QWIKs/Description - Same as <F1>1. QL2 List User QWIKs/Code - Same as <F1>2. QL3 List System QWIKs/Description - Same as <F1>3. QL4 List System QWIKs/Code - Same as <F1>4. QSAVE Saves your User QWIKs to a routine. Use for back-up or to send your QWIKs to another programmer. This option also restores previously saved QWIKs. QV Create QWIKs that will run on different vendors' Mumps systems. See VENDOR SPECIFIC CONFIGURATIONS help text.QVL List Vendor Specific Code for QWIKs set up with QV.

2.) SHELL RELATED

CLH Resequences your Command Line History. The VShell saves your last 20 commands. As new commands are added and old commands dropped, the sequence number of each entry can get large. You may type ..CLH at anytime, to resequence the numbers back to 1-20. DTMVT For DataTree users. If you Control C out of some DataTree utilities, VT100 terminal emulation is no longer in effect and you will see junk on the screen. Use this QWIK to reset your terminal to VT100. PARAM Enter System Parameters. See MISCELLANEOUS help text. PUR The VShell has it's own scratch area: ^%ZVEMS("%"). PUR will purge older nodes left behind by a previous session. PURVGL Purge VGL's Command Line History. PURVRR Purge VRR's Command Line History. PURVEDD Purge VEDD's Command Line History. PURVSHL Purge Command Line History for the VShell. UL List VShell Users, including DUZ and ID numbers. VER Displays VShell version number.

3.) PROGRAMMER TOOLS

ASCII ASCII table display. CAL 6 month calendar display. E VRoutine Editor. KEY Display escape sequence for any key pressed. LBRY Routine Library. Used with ..E to help prevent routines from being accidentily overwritten when there are multiple programmers working on the same routines. NOTES VPE programmer notes. RL Routine Lister RTN Start a new M routine. You may enter your lines of code and it will prompt you for a routine name and save it to disk. VEDD VElectronic Data Dictionary. VGL VGlobal Lister. VRR VRoutine Reader. ZD Kill all local variables that start with %1(parameter). ZP Use to ZPRINT a routine. ZR Use to ZREMOVE from 1 to 9 routines. ZW ZWRITE the symbol table. Writes the variables one page at a time.

I'm the station chief for the MASH station. David, you are correct in that it will be something like VPE. The idea is that we are creating a M[UMPS] shell, analogous to a command line shell in an operating system. But we are also creating a kind of standard library for M[UMPS].

The shell will be a more powerful programmer mode, and should work for any implementation of M[UMPS]. It will be written in M[UMPS], and will be utilizing VPE code. In fact, I am currently refactoring, renamespacing, and adding functionality to the VPE code set. I have added a system QWIK, called ZInsert, which will allow someone to paste a routine into VPE, and have it do it's normal syntax checking, etc. It is kind of a workaround for GT.M's lack of a routine buffer, though with much less functionality. I am also very close to having a full syntax highlighting feature working in VPE.

The MASH library is an attempt to provide a standard library of functionality to any M[UMPS] system. It will add functionality similar to routines that are provided with the various M[UMPS] implementations, but will provide an API, so that code can be written to be portable among the implementations. It will also abstract out low-level I/O functionality. The idea is that you can write your routines to call the MASH library for I/O, and the library will take care of whether you are connected to a terminal device, or a web browser, or a graphical client, or whatever. It will also be implementation agnostic. I already have a database that will handle I/O among any kind of terminal device in the UNIX/Linux world, though it isn't quite finished yet.

These are just a few of the ideas, and they are still in flux. If anyone has anything they'd like to see, or would like to help, feel free to let us all know here in the mumpster forum. Thanks again for your interest in this project.

_________________"If a thing is worth doing, it is worth doing badly." ~GK Chesterton

The MV1 distro has a very limited MCL (MUMPS command language). This is based around a much more complex MCL used in-house for development. If interested, I could supply a copy (which currently only works on MV1 but previously worked on DSM and MSM).

As for ZI, I prefer the MV1 approach of storing the routine source in ^$ROUTINE(rouname,n) = line of code for n = 1 to last line and ^$ROUTINE(rouname,0) = compiled code for that routine.

This is interesting... So is the refactoring of VPE going to create a rich library? Dave and I worked on VPE (he did all the coding) for many years and I use it all the time. I would LOVE to see the FM "// and replace with data" entry paradigm be replaced with calls to VPE and its support of data entry with cursor keys, even how it works with wrapped data.

Yes Mr. Kreis, this is exactly what we had in mind. However, I haven't had time to look at this work in quite some time, and the MDC hasn't met in close to a year now. I learned VPE from your 'VPE User Guide', which is fantastic BTW. When we start to look at this again, are you interested in helping out? Or are you simply indicating that you are an interested bystander, who will cheer from the sidelines? Either way, thank you for the support.

_________________"If a thing is worth doing, it is worth doing badly." ~GK Chesterton

Who is online

Users browsing this forum: No registered users and 1 guest

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum