IBM's Watson Works Editor (EPM) is actually a simple application built on top of a very powerful editor toolkit (ETK).
EPM is programmable at a number of levels. The simplest way to configure EPM is from the Options menu in version 5.51 or the Settings dialog in 6.0x; a number of features are pre-configured with support for multiple ways of doing things and to allow the specific method to be chosen dynamically and saved.
The next level is writing REXX macros. This lets you do some fairly powerful things, but to take complete advantage of the editor, you have to go to a lower level. E macros are compiled into .ex files, which are interpreted at run time. You can control the macros at two levels. One is by creating a MYCNF.E and setting flags in it which controls which of the various features we've already written are included in the .ex files; the second is to actually write your own macros.
The configuration flags are described in the User's Guide. The macro language is defined and described in the EPM Macro Programmer's Technical Reference. Also, looking through the existing macros is a good way to become familiar with the language - particularly if you have any Rexx experience. Starting with EPM 6, macros can be written in C as well.
EPM can also be controlled via DDE (Dynamic Data Exchange); this is how we interact with the Workframe/2 product. Finally, users can use the E Toolkit to embed one or more E-MLE's (Enhanced Multi-line Edit Controls) within their own application.
- Ring support - any number of files can be loaded into an edit window.
- Host file editing - The EDIT, NAME, SAVE, FILE and GET commands all handle host filenames (both VM and MVS).
- Passing commands - EPM commands can be passed to the editor from the command line, intermixed with filenames.
- Edit shell - EPM can create a shell window.
- Sort - EPM can sort text.
- Math functions - EPM can function as a calculator by entering an expression on the EPM command line.
- GREP - Search option to perform searches using regular expressions
- Keyboard macros - record a sequence of keystrokes, then play them back to easily perform repetitive operations.
- Keyword help - driven by an index file (by default, EPMKWHLP.NDX)
- DIR support - If you then place the cursor on a file in the directory listing and press Alt+1, the file will be loaded. (If you press the cursor on a directory, a DIR will be issued for that directory.)
- Workframe integration - EPM supports drag&drop of files and error messages from the IBM Workframe/2.
- Rexx profile - EPM has the ability to execute a Rexx profile every time an edit window is opened, allowing you to configure the window to your liking.
- Bracket matching - place the cursor on a bracket, brace, parenthesis or angle bracket and press Ctrl+bracket, and the cursor will be moved to the matching open or close bracket (taking nesting into account).
- Partial list of new features of EPM 6.0x
- Long lines - supports lines up to 1600 bytes
- Drag&drop - of files and marked text between edit windows, or edit window and desktop. Also supports drop of fonts, colors, and bitmaps.
- Fast sort - much faster than 5.51, with no limit on amount that can be sorted.
- Proof - much faster performance than 5.51, with a new, custom dialog.
- Extended GREP (including subexpression replacement for Change command) - adds alternation, grouping, and macros to the standard GREP search.
- TAGS support - Can build a tags file listing all functions defined in your program, then place the cursor on a function and automatically jump to the file and position where that function is defined.
- User-configurable toolbar - a button-bar that users can easily configure to add new functions to the editor.
- Multiple views of a file within an edit window.
- Pop-up menus (context menus).
- Tree support (Fileman-like functionality) - create a tree listing of all matching files on one or more drives, sort by any attribute, apply commands to all or marked files.
- large .ex files - more efficient, and no more 64k size limit.
- Dynamic spell checking - optionally have words spell-checked as you type them in, with a beep and message if a word is misspelled.
- Voice recognition - dictation (IPDS) support.
- Keyword hilighting - support included for C, E, HTML, Rexx, IPF, Java, Perl, RC, Rexx, Script, and TeX files
- Binary editing - loading a file in binary lets the user edit the CR, LF, etc.
- Enhanced bracket matching - can match #if / #else / #endif for C, COMPILE IF / COMPILE ELSE / COMPILE ENDIF for E, :ol., :eol., etc., for GML tags, /* and */ for comments, and SGML tags, as well as the single-character brackets.
- Save ring as desktop object - can save the contents of the edit ring as a desktop object.
- Negated searching - can search for a line not containing a specified string.
- Word search - can search for a string as a word, rather than just as a substring.
- Case-match option for Change command - will match the case (all caps, all lower-case, initial cap, etc.)
- [Version 6.03]