MMO'MNU:  Menu Mode

Bit value:  4096

Vertical light-bar menu. Works very similar to the MMO'DPG mode except that instead of scrolling the entire contents of the window, a selection bar or arrow is moved up and down (selecting one line at a time). Of course, if the memo is too big to fit inside the window, moving the selection bar down to the bottom will cause the text to scroll as well.

The main purpose of this mode is to provide the user with a convenient means of choosing a single item from a list of possibilities. For example, to select the terms on an invoice you might have a memo looking like:

1. Prepaid    

2. COD

3. On Invoice

4. 2%10, Net 30

Positioning the Light Bar: The light bar may be positioned with the Up arrow and Down Arrow keys and/or by typing one or more characters which identify the selection. (The bar moves to the first selection matching the characters entered so far, until no possible match can be made, at which point it beeps and starts the selection process over from the beginning.)

Making a Selection: Actual selections are made by pressing Enter or any enabled function key when the light bar is on the desired item. The entire text of that line is then returned in the TEXT parameter, along with the appropriate exit code in the EXTCOD parameter. It is up to the calling program to extract the appropriate control information from the string.

Aborting: If Escape is entered, nothing is returned in the TEXT parameter. ^C will also return nothing in TEXT but it will set EXTCOD to 1 (MMX'QUI). You may support various other types of aborts by interpreting function key exitcodes as you like. Note that on most terminals, Shift Up Arrow and Shift Down Arrow act like function keys, so you may want to interpret them as meaning to preserve the prior menu selection and move up or down to the next field on the screen. See Making and Loading Function Translation Tables for more information.

Hidden Control Information: You can append a "\" (backslash) followed by any sort of text control information you like to individual menu items. The backslash and anything following it is not displayed, but it is returned as part of the menu selection. As an example, you might create a program-chaining menu which looked something like this:

1. Accounts Payable\APMENU.CMD

2. Accounts Receivable\LOG AR:$RUN ARMENU

etc.

The program could then extract the control information following the backslash and build the appropriate command file (or whatever.)

Variations: See opcodes MMO'FST:  Fast Menu Mode and MMO'FFM:  Free Form Menu for variations of this mode. Also note that for hard-coded program menus, you may want to use memory based (No-File) memos; see CHANNEL:  Memo file channel or specification.