Author:  Dale L. Fenimore                                     15 November 1991

Disclaimer:  These Wordperfect 5.1 macros are released in an AS IS condition. 
No warranty is provided that they will work for you or be what you want or
need.  Use them at your own risk.  I wrote these macros to make things easy
for myself; if they do the same for you then fine - I accept no responsibility
for any document on which any of these macros were used and for which you may
claim damage as a result of said use.

Disclaimer #2:  No Government time, equipment, or resources were involved in
the development of this macro suite.  However, the Government has benefited
from their use.

Updates.  These macros are periodically updated as I add to, improve, or
enhance them.  Improvements are always in the works. To date, several of these
macros have been completely replaced or substantially improved/modified over
their original state.

Recommended Machine.  The faster the machine the better the performance.  I
have run these macros on an 8MHz AT and, though SLOW, they worked fine. 
However, nothing less than 12MHz is recommended (even 12MHz machines might be
a tad slow...).  Some of these macros are probably too complex and powerful
for use on a PC/XT.  However, if you don't know any better (aren't addicted to
speed like some of us) most of these macros should prove more than adequate. 
Some will seem just TOO SLOW on a slow machine to be useful.

What's Provided.  
I.  The following macros are provided. Some are found within a WordPerfect
keyboard definition file (WPK). Included below is a brief description of each
macro.
    Notes:
    a)  ENV.WPM needs the file called ENVELOPE.REF placed in your WP51
    directory before it works correctly (also, these files are separate and
    not in the keyboard definition file).  Additionally, you'll need to
    modify ENVELOPE.REF for your particular printer.
    b) ALTH, the Help macro is too large for inclusion into the WPK.
II. The following macros are provided:                                                       MNEMONIC BASIS
 MACRO                 DESCRIPTION                      FOR THE MACRO

ALTA         Macro to place text anywhere on a page     (ADVANCE)
ALTB         Block document segments for special action (BLOCK)
ALTC         Drop Caps                                  (CAPITAL)
ALTD         Provides Menu Access to drives & dirs      (DIR)
ALTF         Save/Get file w/o prompts w/current name   (FILE)
ALTH         Help information on these macros           (HELP)
ALTL         Long/Short Doc Name Save/List              (LIST)
ALTN         Choose predefined Special Characters       (NEW Characters)
ALTP         Print menu                                 (PRINT)
ALTV         Preview Document                           (VIEW)
ALTX         Exit WP51 w & w/o Save. Needs ALTF.WPM     (EXIT)
CTRL A       Save File as ASCII                         (ASCII)
CTRL D       Format Date for Inclusion in document      (DATE)
CTRL O       Character over Character                   (OVER)
CRTL S       Superscript over Subscript                 (SUB/SUPERSCRIPT)
CTRL Enh Right/Left
             Places cursor at end of current/word-on-left, respectively
             
ALT Enh Right/Left
             Places cursor at next/previous column or table cell, respectively
Shf Enh Right/Left
             Places cursor at next/previous sentence, respectively
ALT-         Used for paragraph numbering/renumbering   --------
ALT[         Transpose character right                  --------
ALT]         Transpose character left                   --------
CTRL Del     Deletes word or block of text              --------
CTRL PgDn    Retrieve a Named Memory Variable           --------
ENV          Create Addresses for envelopes, Printing reqr's ALTP
ENVELOPE.REF      Sample Reference file for ENV.WPM
LTRHD        Create headings for Military letterhead (Easily modified for
             other types of letterhead)
             (CTRL L)
MEMO         Create a heading for a Memo letter (CTRL M)
FN           Used by macros to provide/modify file names and/or paths
DP           Provides a common drive/path menu for use by other macros

NOTES:
1. Macros provided in the WPK, but not mentioned here are considered
temporary. 
2. These macros are powerful augmentations to WordPerfect's native
abilities.  However, on slow machines, these macros will likewise seem slow.
On faster machines though, they'll just whiz by.  Recommended machines are
those with clock speeds of 12 MHz or faster.Macro Descriptions:
ALT A     Essentially the same as the Shf F8, (O)ther, (A)dvance menu
          selection.  However, this macro requires far fewer keystrokes to
          access.  Additionally, being menu driven makes it easier to use.

ALT B     This is an extremely feature filled, highly useful macro.
          a. Combines the features of MOVE (CTRL F4) with a few other
          enhancements.  Allows the user to block the following types of
          text:  character(s), word(s), sentence, paragraph, page or a
          specified block.  It then allows the addition of various
          enhancements (font size or attribute),  super/subscripts, quotes,
          delete the block (a sort of enhancement...), upper/lowercase, or to
          keep it blocked.
          b. Text in the move buffer may also be retrieved.  Duplicates and
          improves upon WordPerfect's block retrieve feature (CTRL F4 4 1,
          also known as CTRL F4 RB)
          c. You can also move, copy or delete the defined block of text. 
          Note:  Text deleted with this macro is placed in the Move block
          temporary storage area and not in the delete holding area. 
          Retrieve it using ALTR or the retrieve block option in menu 1.  
          d. Lowercasing a sentence will capitalize the first letter of it's
          first word.
          e. Lowercasing a PARAGRAPH will recapitalize the first letter of
          every sentence's first word within the paragraph
          f. If you've already blocked some text when you run this macro it
          will automatically go to the Menu 2. This menu provides for
          operation upon blocks of text
          g. Two true quotes is placed in the document by hitting ALT-B O Q
          (access the BLOCKing macro, O for Options menu and Q for
          Quotes).  If the character at the cursor is a space the two quote
          characters are entered and the cursor placed between them
          otherwise, the character at the cursor is quoted.  However, if
          there is a blocked region, that region is quoted.
          h. Menu 3. Essentially the same as hitting Ctrl F8 (A)ppearance or
          (S)ize and then the appropriate menu item.  What this macro does is
          put these options in the same menu.  This macro is sensitive to
          active blocks.  If a menu choice is made without text being
          blocked, the character on which the cursor rests will take on the
          attribute chosen from the menu.  However, if a block is active, all
          text within that block takes on the attribute of the chosen menu
          item.  NOTE:  Normally part the (S)ize option of CTRL F8 menu,
          Super/Subscripts are not within this section of the macro. 
          Sub/Superscripts exits at the previous level of this macro
          i. If Menu 2 is chosen from Menu 1 (with no active block), the
          chosen option acts as if a single character was chosen; exception:
          Move and Copy which will not work without an active block of text
          chosen.
          j. You may uppercase the first character of a word or the first
          word of each sentence without lowercasing the sentence or paragraph
          first.
          k. Spell check a defined block or the current word.
          Limitation:  1) Character blocks only recognize the following as
          valid characters:  0-9, a-z and A-Z Use the Wordperfect BLOCK
          feature (ALT F4, or, on extended keyboards F12) for other
          characters. 2) When moving or copying text to the end of a document
          ensure that at least two spaces exist at the location to which you
          are moving/copying the text.  If you don't, the moved/copied text
          won't appear automatically.  The problem lies with WordPerfect
          somehow and I haven't figured a way around it yet.  If the text
          doesn't appear as expected hit the retrieve macro (ALT-R) to obtain
          it.  3)  Block copies and moves may not work as expected when those
          copies/moves cover more than one column (block or block protect
          columns) or more than one table cell.

ALT C     Adds a Drop Cap to your paragraph.  Allows you to specify the
          desired character or, if a character is blocked will convert that
          character to a Drop Cap.  You may also specify a new size for the
          base font.  Requires scalable font capability.  DON'T USE WITHIN
          TABLES!

ALT D     An extension to the LIST (F5) key in that this macro is
          customizable to include the subdirectories or drives used often. 
          This means they are only one or two keystrokes away rather than
          many. You may want to customize it for your particular subdirectory
          structure.  (ALT D).
          
          NOTES:
          1.  The WordPerfect files directory is assumed to be called WPDOC.
          You may change it though by changing the contents of the variable
          DOCDIR. This variable is located at the beginning of the macro for
          easy modification, if necessary.
          2. The WordPerfect subdirectory is assumed to be called WP51.  You
          may change the contents of the variable called WPDIR to reflect
          your WordPerfect subdirectory.
          3.  This macro is designed for use with LONG or SHORT file names. 
          However, unless you have a Jun 90 or later WordPerfect 5.1 interim
          release the use of long filenames will not correctly be detected
          and the macro may not work correctly.

ALT F     Saves a file or retrieves a file depending upon the status of the
          document. There is also an option to provide a document summary or
          print the file (or a portion of it).  The primary purpose for this
          file though, are the features described below.
          Save File.  If the current document window has a file in it (or has
          been modified in any way) this macro displays a menu which has a
          number of options for saving the current file. The macro detects
          files with no names and prompts the user to supply one. 
          Retrieve File.  If the current document is BLANK the macro
          retrieves information from a special file concerning the last
          file(s) edited.  This information was obtained during an exit from
          WordPerfect using the Exit macro (ALTX)). This information is then
          displayed to the user.  Depending upon the information displayed,
          one or more files may be retrieved.  During the process of
          retrieving the file(s) the cursor relocated to the last edited
          position.  LIMITATIONS: 1) If page renumbering was used then the
          cursor may not return to the exact same spot.  However, the macro
          attempts to place the cursor at an equivalent spot of matching
          the page, line and position on the line locations. 2) You'll need
          Jun 90 or later WordPerfect interim release if you use long
          document names.

          NOTE: If you are upgrading from a version of these macros which is
          prior to late October 90 you'll need to run the CONVERT macro to
          auto-retrieve your files (as described above).

ALT H     Provides a brief description of all macros provided. Completely
          menu driven.

ALT L     Provides an easy method of switching between Long and Short (DOS)
          Document names when Saving and/or listing files.  All legal options
          are provided:
          a. Long names when saving: long names or short names in display
          listing
          b. Short names when saving: long names or short names in display
          listing.

ALT N     There are a number of chosen characters in many different
          categories. Nominally organized by category choose the character(s)
          by number. If your printer doesn't recognize the character chosen
          WP51 sends it as a graphic (provided your printer is not a daisy
          wheel printer).  LIMITATION:  There are three symbols which use
          user defined character specifications (Character set 12).  They are
          #'s 54, 59, and 61.  They may or may not print.  If they do print,
          there is no telling how they'll print unless you use ITC Zapf
          Dingbats (I'm currently using the Postscript cartridge for a
          LaserJet II).  Redefine as necessary.  NOTE:  alphabetic characters
          entered with numbers will show up as bad options but will not
          interfere with any other chosen options.

ALT P     Print a page, specified pages, the entire document, initialize the
          printer, or go to the WordPerfect print menu (SHF F7).  During
          print operation the macro identifies whether a page or the document
          is being printed. This macro also reports the page number on which
          the cursor rests.  Just prior to exiting, the macro reports that it
          is exiting.  This is a helpful feature for slower machines which
          may take some time before being able to actually exit.

ALT V     The same as Shf F7, (V)iew

ALT X    Exit from WP or the document.  Sensitive to whether the current
          document has been modified.  Calls ALTF for file save operations. 
          Detects blank files and automatically exits from either WP or the
          document when called.  If called, and printing is on-going. this
          macro provides the option of continuing with the exit or returning
          to the document to continue printing.  Additionally, on an exit
          from WordPerfect this macro saves the information on the current
          file(s) for later automatic retrieval. This information is used by
          ALTF for automatic file retrieval.

CTRL A    Stores a file as ASCII text.  Takes current filename, removes
          extension, and supplies a specific extension for the ASCII save --
          as supplied that extension is "TXT".  User may redefine extension
          by changing variable contents at beginning of macro.  User may
          store file with a different file name and/or path by supplying the
          appropriate information.  The default ASCII file extension may also
          be overridden to force storage of file with a specific filename and
          extension.  Existing files with same name are detected.  Files
          without names when macro is executed are detected.  Original
          filename is restored at the completion of an ASCII store.  A file
          with same name when the ASCII extension is added is detected and
          taken care of during an ASCII save (ASCII saves will not be
          overwritten by a WP51 format document inadvertently)

CTRL D    Provides options to chose a date format for inserting into a
          document.  These formats include Standard (mm dd, yy), Military (dd
          mm yy), and Contracting (yy mm dd).  Additionally, the name of the
          month may be a three letter abbreviation or fully written out.  The
          year may be the last two digits (e.g. 91) or the entire year (e.g.
          1991).

CTRL S    Places a superscripted value over a subscripted value.  Example: 
          Eab.  The macro places a space directly after the last value so the
          user can continue typing.  Also, the macro is independent of font
          size and uses no position sensitive codes.  Spacing adjustment is
          automatically calculated for proper placement of text.  CAVEAT:  If
          the size of text is changed AFTER this character set is created you
          may need to make proper adjustment for the superscripted value (or
          redo the equation). However, a variance of two points, larger or
          smaller, does not significantly alter the appearance of the printed
          result.  If the typeface is  changed (say from Times Roman to
          Century Schoolbook) chances are the equation WILL need to be
          redone.

ALT -     Provides for paragraph numbering. Executing this macro and hitting
          A or ENTER will create an automatic paragraph numbering based
          upon the number of tabs/indents the cursor is from the left margin. 
          Hitting a number between 1 and 8 will chose a specific level of
          paragraph numbering. The Option N will reset the new paragraph
          number to 1. The S, setup, option will send you to the paragraph
          numbering setup menu provided by WordPerfect.

ALT [     Takes the character at the cursor and transposes it left by one
          position. Characters include formatting characters as well. See ALT
          ].

ALT ]     Takes the character at the cursor and transposes it right by one
          position.  Characters include formatting characters as well.  If
          the character at the cursor is one which is not paired (as in
          {BOLD}{bold} it may be transposed.  If the character is paired, the
          cursor is moved until a transposable character is found- it is then
          transposed.

ALT Enh Right Arrow
          Right/LeftPlaces cursor at next column or table cell

ALT Enh Left Arrow
          Places cursor at previous column or table cell

CRTL Enh Left Arrow
          Places cursor at the end of the word to the left of the current
          word.  Moves past all formatting code until cursor reaches the
          actual text

CTRL Enh Right Arrow
          Places cursor at the end of the current word.  Moves through the
          word until it reaches the end of the word (or formatting code
          whichever comes first)

Shift Enh Right Arrow
          Move cursor to the beginning of the next sentence

Shift Enh Left Arrow
          Move cursor to the beginning of the previous sentence

CTRL PgDn Retrieve the contents of a memory variable. (RXMEM) To use, the
          memory variable must exist (otherwise there's nothing to retrieve
          and you get an error message).  To assign a memory variable from
          the keyboard, block the text desired (up to 127 characters) and hit
          Ctrl PageUp.  At the variable prompt, provide a name and hit enter. 
          Or, hit Ctrl PageUp, and at the variable prompt, provide a name and
          hit enter.  Then, at the value prompt, enter the desired text.  To
          retrieve the contents of this variable hit Ctrl Pageup and provide
          the name of that variable.  The retrieved text is placed directly
          into your document.  This macro is assigned to the PgDn key of
          extended keyboards.

CTRL Del  Delete a block of text or, if block isn't active, the current word

ENV       Creates the text to place on an envelope which is then placed on a
          page defined by ENVELOPE.REF.  Menu options allow editing your
          info, viewing the document, exiting to the document, deleting the
          current page or adding another record.  You may want to rename this
          to ENV. 

FN        This file is used by ALTF and ALTX to handle the manipulation of a
          filename and it's path. This macro takes a file's name and path and
          allows you to replace, insert and or add characters to the file
          specification. It then returns the result to the calling macro.  It
          has NO direct user utility.

CTRL M    (MEMO) The macro will prompt for the type of Memorandum it is (i.e.
          Memo for...).  It also prompts for the subject of the memo and from
          whom.  The macro then places the Memo text on the first line flush
          left, the Date is placed flush right and then a graphic line is
          inserted under which is placed the subject and from.  All tabs and
          margins are automatically setup.

CTRL L    (LTRHD) Prompts for REPLY TO ATTN OF, SUBJECT, and TO for placement
          on Military preprinted letterhead.  Variables are created such that
          it is easy to change the placement of these inputs to compensate
          for actual placement of these prompts between different batches of
          letterhead.  Note: this letterhead is usually " narrower than
          normal 8.5"x11" paper.  This means that if you measure a one inch
          left margin (about two spaces to the right of the semi-colon) you
          will actually need about a 1.17" left margin (for example).  All
          document initialization's are placed at the top of the macro. 
          Useful tool for non-military as well - modify as appropriate to
          your organizational letterhead (or your own).Replaced Macros.  These are macros which, as others matured, had their
          abilities taken over by another (i.e. were superseded).

REMOVED
.
ALT S  Search (forward/reverse), Spell, subscript/superscript.  Everything
       but search transferred to the Blocking macro (ALTB). The search
       capability provided no real value added over the native WP search
       capabilities.

REPLACED by ALT B.  This macro now has all of the functionality of these
macros, including ease of use, such that they are now longer necessary as
standalone macros:

ALT C  Upper or lower cases a character or, if the block is active,
       upper/lower case all text within the block
ALT E  Enhance Text:  Size and Appearance
ALT I  Italicize a character or a block of characters
ALT L  Lowercase a character or a block of characters
ALT Q  True quotes of a block of text or if no active block, placement of the
       cursor between two true quotes
ALT R  Retrieve text from WordPerfect buffer
ALT S  The Spell Check option of this macro was revised, extended and
       improved by inclusion into ALTB
ALT S  Subscript and Superscript capability transferred into ALTB.
ALT U  Uppercase a character or a block of characters
ALT W  1.  Blocks a word. This macro is punctuation sensitive.
       2.  Transposes a word forward or reverse of its present position

Notes.
  If ALTX recognizes that a document was modified it calls the SAVE macro,
ALTF, to save it.  If these two files reside in a keyboard definition file and
ALTX is executed, an error is generated: ALTF cannot be found.  The problem is
that WP51 cannot call (and therefore execute) a macro from within another
macro which within exists only in an active/inactive keyboard definition.  The
only macros which a macro within a keyboard definition file (or even a
standalone macro) can call are standalone macros. In other words, a macro
within a keyboard definition file cannot call another macro within a keyboard
definition file.
  HP Laser Jet Series II appears to require an additional Advance Up of 0.2c
for each heading.  These macros are currently setup for the Apple LaserWriter
IINTX (or HP Series II with a Postscript Cartridge).Macro Dependencies:

(1) ALT F - ALT P, ALT X, DP, FN         (2)  ALT X - ALT F, DP, FN
(3) ALT [ - TR                           (4)  Env - ALT P
(5) ALT D - DP, FN

NOTES:
1. Relies on information supplied by ALTX when WP51 is exited to retrieve the
last file edited when WP51 is reentered. There is no other link.
2. DOS filename for ALT], the TRANSPOSE RIGHT macro.  DOS won't accept the
"]" character as part of a filename so ALT] can't be used.  TR is the
standalone version of the ALT] macro found in the WPK file.
3. Macros which call other macros CANNOT call a macro in the same or
different keyboard definition file.  This means, if such an event happens, and
the called macro is not found in the macro directory (a .WPM file) it is
reported as missing or non-existent.
4. Neither FN nor DP have any user capability.  They provide features for the
macros which call them.


Improvement History (by macro):
ALTA
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 3.7e)

ALTB
21 Sep1 Printing of any block is now allowed now.  This includes a character,
        word, or sentence (previously disallowed).  This macro allows
        printing a block at it's current location.  WordPerfect will get the
        line correct but if you printed the blocked region which exists in
        the middle of a paragraph, it'll print beginning at the left margin. 
        This macro has it start printing at the line position reported by
        WordPerfect.  NOTE (important):  WordPerfect does microjustification. 
        Therefore, if you use other than left justification in your documents
        the true location on the page may not accurately reported (for some
        reason) by WordPerfect.  Also, the blocked region will have it's own
        microjustification independent of the text surrounding it so, a
        sentence in the middle of the paragraph may print differently from
        what you might expect (less tight kerning for instance).  With this
        in mind, happy printing! The macro also identifies what type of block
        you are printing (character, word, etc). (Version 3.33)

22 Sep1 The two methods I've used to test for end/begin of document don't
        always work correctly between different interim releases of WP. This
        might evidence itself by a tilde (~) appearing in your document.  I
        started seeing this with interim release 5/31/91 when blocking
        sentences at the end of a document. I had to rewrite the sentence
        blocking section to avoid this problem.  If no sentence is recognized
        an error message is generated before returning to menu 1.  This is
        possible if there is nothing to block or, you are at the bottom of
        the document and formatting codes exist after the last sentence but
        before the end of the document.

        I also reworked all four menus slightly.  These menus are now one
        line higher than before. Menu 3 is now wrapped onto the lowest line
        instead of going to the end of first line. In multiple mode the only
        line which gets rewritten now is the lowest line.  This line
        identifies those enhancements being added to the document.  This is
        especially beneficial to those with slower systems since the entire
        menu needn't be rewritten now. If you attempt to go to menu 4 without
        first blocking something the error message is displayed in the lowest
        line.
        An entire screen refresh is no longer performed between menus as was
        a previous practice.

        Formerly, during an index, if you made an index entry for the primary
        index but didn't want a subindex you got one anyway. This is fixed. 
        Now, to accept a subindex you either hit the "=" key (and hit enter
        to accept the default subindex) or type in another subindex.  Hitting
        the enter key without an entry will default to NO subindex.  (Version
        3.34)

23 Sep1 Fixed a problem with a sentence being blocked such that the blocking
        would end with the cursor on one or more lines below the block start
        but at the left margin.  This would cause a "No Sentence Found" error
        (which was bogus). (Version 3.34a)

23 Sep1 Abbreviated the menus to allow quicker screen writing on slower
        machines.  Improved menu 3 to write only the necessary changes when
        going between the Multiple and non-multiple modes.  This
        substantially improves the speed at which the menu modes switches.
        (Version 3.34b)

23 Sep1 Menu 4 now includes options to go directly to Menus 1, 2 or 3. 
        Hitting the enter key in any of the menus takes you to the previous
        menu level.  One minor difference is that if menu 4 was called from
        menu 2, hitting the enter key in menu 4 will return you to menu 2. 
        Returning to menu 1 from any of the other menus will still turn off
        the active blocking but will also return the cursor to the beginning
        of that block rather than leaving it at the end of the block as was
        the case. (Version 3.34c)

23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 3.34d)

13 Oct1 A minor bug caused menu 3 to display when a sentence was blocked. 
        However, menu 2's options were active (not menu 3's).  This no longer
        occurs. Another fix involved words which contained soft hyphens (the
        one you get directly from the keyboard).  WordPerfect would have now
        problem blocking the entire word containing hyphens.  However, the
        macro would block a word up to the hphen.  This was fixed to perform
        similarly to the way WordPerfect's word block performs. (Version
        3.34e)

ALTC
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 2.60a)

ALTD
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 3.70o)

2 Oct1  If an error occurs the WordPerfect is reset to used the default
        document directory to be on the save side of things. (Version 3.70p)

10 Nov1 Removed directory menu information and placed it into a separate
        file, DIRPATH.  This file is then used by all other macros needing
        access to that same menu information (ALTF, for instance). Options
        are now case sensitive (they are no longer converted to uppercase
        from lowercase).  (Version 3.8)

12 Nov1 Made a few changes to make it easier to make changes to drives and
        directories. All directory and drive information is now in DP
        (formerly called DIRPATH). (Version 3.8a)

13 Nov1 Fixed the macro so that it works more closely to WordPerfect's
        operation. So, if you chose to do a directory on drive A (with ALTD)
        and later you hit LIST (F5) you'll get a default directory of drive
        A.  Previous to this you'd get a default directory listing of your
        WP51 Document directory.  An error handling routine was reactivated.
        After displaying its menu the error routine will return to the
        directory menu. (Version 3.8b)

14 Nov1 Added a routine to assist, in certain cases, accessing drives.  It
        does this by reminding WP what the default drive is.  To perform ONLY
        this reset, execute ALTD and then exit the macro. (Version 3.8c)

ALTF
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 3.35a)

29 Sep1 Substantially enhanced.  Macro now retrieves one or more files
        depending on the information stored in the data file.  Senses status
        of files currently loaded and adjusts the menu accordingly.  For
        instance, if information on two files is stored in the data file and
        one file is already being edited then you may retrieve one files
        indicated and not both.  Macro added the option of NOSAVE to the menu
        line.  Normally this option isn't needed.  However, it might be
        needed when this macro is called by the EXIT macro (ALT X). (Version
        3.4)

29 Sep1 It used to be that you had to provide a name for files without names.
        This has changed. The user is now asked if he/she wants to provide a
        name.  If the answer is yes the macro proceeds as usual.  If the
        answer is no then the macro is exited.  This is not normally an issue
        unless the EXIT Macro (ALT X) has called this macro. (version 3.40a)

30 Sep1 A bug in the program wouldn't allow the retrieve menu to display
        under some conditions.  This was fixed.  The macro was also modified
        so that when called by the EXIT macro (ALT X) with a blank file the
        user may exit the macro (by using the cancel key and thereby the exit
        operation), provide the file with a name, or exit the file. Prior to
        this an exit from an unnamed file using the ALT X macro wasn't
        directly possible.  (Version 3.40b)

1 Oct1  Fixed a problem which occurred when making a choice not provided -
        the macro would end up exiting after a short while. Made some changes
        to allow proper operation of the EXIT macro (ALT X) when the ALL and
        both document options called this macro and the file had no name.
        What happens is that a return code is returned based upon an option
        made in this macro.  Part of this change was the modification of the
        menu used for unnamed files to include a CANCEL option.  (Version
        3.41)

2 Oct1  Made some programmatic changes to improve user control under certain
        circumstances (primarily in providing answers to prompts.  Some
        prompts looked only for a "Y" answer with all other responses,
        rightly or wrongly, all grouped together. These changes stop that
        practice.)  (Version 3.41a)

4 Oct1  Macro was doing a name check of the file being saved via a system
        call rather than a variable call.  This was providing improper
        results at times. (Version 3.41b)

6 Oct1  Gave a more flexible rename capability.  When a file is given a name
        a path may or may not be specified. Once the name is supplied return
        is made to the main menu. From here, you may store to any drive or
        subdirectory listed with a simple keystroke.  For drives, the name
        you supplied is used along with the drive specified.  For
        subdirectories, these take direct control and store immediately to
        that subdirectory.  If you've renamed a file and you've specified the
        root directory and you want to store that file to a subdirectory,
        forget it with this version unless you store the file first.  This
        will be fixed in a future version.  The Rename menu for use with long
        document names has been slightly modified to be less confusing and
        more direct.  (Version 3.51)

7 Oct1  Improved auto-recall error handling.  If one or the other file
        doesn't exist the one which does exist is retrieved into document #1
        and the user left in document #1. If neither exist nothing is
        retrieved! (Version 3.51a)

7 Oct1  Fixed the root directory problem identified by the 6th of Oct change. 
        Choosing a root directory as part of the name of a file is no longer
        a problem.  Now, the new name is parsed and separated from the path
        regardless of length.  (Version 3.51b)

13 Oct1 Changed the routine which gives/changes filenames to a subroutine
        module. Portions of this macro which rely on this subroutines'
        functions must now CALL (as opposed to GO to) it. Portions of this
        macro which merely went to this routine were modified to reflect that
        change. (Version 3.52)

27 Oct1 Modified the macro to rely on a routine which specifically handles
        the full path specification of a file during a file save.  See FN for
        a description of the full functionality. (Version 3.6)

3 Nov1  Added OTHER option to the menu.  This allows the user to specify a
        destination not identified by the menu when saving a file. (Version
        3.6a)

3 Nov1  Provided a multiple save option.  This allows more than one save
        location during a save operation.  NOTES: (1) Only provided drives
        and/or subdirectories are valid options (OTHER isn't provided at this
        time). (2) A RESET to the original subdirectory or drive is performed
        after all save operations (including multiple operations and all
        single drive operations, excluding single subdirectory saves).
        (Version 3.7)

6 Nov1  a) Fixed a tendency the macro had with saving the file to the
        original path three times during a multiple save (the original path
        is the path the file had when the macro was first run).  b) Changed
        the "save to a drive path" option to act like a save to a
        subdirectory path (i.e., that option BECOMES the path).  This doesn't
        happen during multiple saves though.  After multiple saves the path
        is reset to the original path. c) Long document names weren't being
        saved during a file save (i.e., during Rename or providing a nameless
        file a name). Fixed this problem.  (Version 3.71)

7 Nov1  Added several options: SUMMARY and PRINT. Also added additional
        identification for the OTHER option for clarification of its use.
        SUMMARY puts the user into the document summary screen -- ALTF
        terminates. The PRINT option executes and passes control to the PRINT
        macro (ALTP) -- ALTF terminates. Minor changes were made to the SAVE
        menu. (Version 3.72)

10 Oct1 Took the menu of options out of this macro and placed it in a macro
        file called "DIRPATH".  This macro file is reponsible for all menu
        options.  The advantage of this is that this file is also used by all
        files needing access to this same menu (ALTD, for instance). Options
        are now case sensitive (they are no longer converted to uppercase
        from lowercase). (Version 3.73)

12 Nov1 Made some changes to make it easier to add/delete/modify directories
        and/or drives.  All drive and/or directory information is now
        contained in DP (formerly DIRPATH).  DP is called to initialize some
        variables used by ALTF. (Version 3.73a)

14 Nov1 Added a routine to assist, in certain cases, accessing drives.  It
        does this by reminding WP what the default drive is.  To perform ONLY
        this reset, execute ALTF and then exit the macro. (Version 3.73b)

ALTH
21 Sep1 Updated for changes to ALTN. (Version 2.03c)

11 Nov1 Broke the macro into four (4) sections. The first section is the
        master menu (ALT H). The other sections are for each type of macro
        key: ALT, CTRL, and Shift.  These macros are named ALTKEY, CTRLKEY,
        and SHFKEY respectively.  Operation of the macro is essentially the
        same. (Version 2.1)

ALTL
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 2.00c)

ALTN
21 Sep1 Added a new category: Technical.  Added several characters too.
        Angstrom () was placed in Technical and degree () was moved there.
        The square root sign and hi-bar were added to Math.  These two
        together make a decent looking square root sign (). ) (Version
        2.92)

23 Sep1 Sometimes, the macro wouldn't accept the first character.  A guess is
        that the bad option flag was set when the macro was run resulting in
        a bogus error indication.  This flag is now reset upon running the
        macro.  Hopefully this fixes the problem. (Version 2.91a)

ALTP
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 2.41a)

2 Oct1  Made a message change to the menu for allowing the printing of odd or
        even pages from a range of user supplied page numbers.  Also,
        provided an extension to the "print from current page to end" and the
        "print from start to current page" so that only odd or even pages are
        printed.  The user only selects "e" or "o" with a "+" or "-" to do
        so.  At this time the options "oe", "eo", "+-" and "-+" will print
        ALL pages (it's equivalent to Print Entire Document).  (Version 2.50)

3 Oct1  Redid the main menu.  Renamed "Specific Page(s)" to "Multiple
        Page(s)".  Renamed "Document" to "File" Option.  Rearranged the menu
        to read "This Page/File". Cleaned up a few minor bugs. (Version
        2.50a)

ALTV    No change since 12 Jan 91

ALTX
21 Sep1 If not at the main editing screen (for example, while in a page
        preview or directory list), hitting ALT X will exit to it.  (Version
        2.13a)

23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 2.13b)

29 Sep1 Major Revision.  Macro now stores information on both documents so
        one or the other may be retrieved by the FILE macro (ALT F). 
        Information is obtained on only non-empty files.  Information on all
        available files is displayed to the user, to rename or accept, before
        an actual file save is completed.  During a file rename the user may
        give the file a new name to store the file by or tell the macro not
        to save the file.  Accept will save the files, store the file
        information (path, name, cursor position), and exit WordPerfect. The
        data file has a different structure than previous versions.  A macro
        (Convert.wpm ) has been provided to convert from the old to the new
        structure. (Version 3.00)

30 Sep1 Exit ALL documents is now provided.  This procedure is functionally
        the same as the WordPerfect exit except that the user remains in
        WordPerfect after all documents are exited. Also, through changes to
        the FILE macro (ALT F), the current unnamed document may be exited
        under control of the macro.  Prior to this such an action wasn't
        directly possible. (Version 3.00a)

1 Oct1  Fixed a problem in which an improper call to the FILE macro (ALT F)
        disabled proper macro execution. Fixed some minor problems with
        making choices which weren't on the menu. Fixed a problem with the
        option ALL. When there were files with no names both files might or
        might not be exited. Either that or there'd be an error of some sort.
        Modifications to the FILE macro (ALT F) and the EXIT (ALT X) macro
        together now allow proper operation on unnamed files. Now the files
        aren't arbitrarily exited when the options ALL, document or DOCUMENT
        are chosen. (Version 3.01)

4 Oct1  Gave direct access to available files (modified or unmodified) for
        renaming (a shortcut to the renaming a file). The saving of a renamed
        file didn't work correctly in the previous version but has been fixed
        in this one. If a file has been given a new name it is saved under
        that new name (whether or not the original was modified) along with
        the appropriate cursor location information.  Note: in this version
        it is important for the user to supply the file's full path as part
        of its new name.  This is particularly important for later automatic
        retrieval of the file.  If you use C: instead of C:\, for instance,
        the macro will look in the current directory instead of the root
        directory.  If the current directory is not the root directory the
        file won't be found... Also, disabled the use of the ENTER key at the
        RENAME ACCEPT menu. The user is now forced to respond appropriately
        (it was nice to respond with the ENTER key to save the files and exit
        WordPerfect but it easily caused problems) (Version 3.02)

6 Oct1  This change provides checking for paths in filenames provided during
        WordPerfect exits.  This rename facility is performed at the exit
        menu. Now, if you give a file a name the macro will check the
        supplied name for a path.  If no path is provided in the new name it
        is given the default path.  If a path is provided it is separated
        from the filename (the filename and path are now in separate
        variables). If the root directory is specified, the root directory of
        the default drive is used (this is currently defined by the macro as
        the root directory of drive C).  On blank files, WordPerfect has no
        method for determining a default drive.  However, it will use the
        default document directory for document storage.  Unfortunately,
        there's no direct way to get to that directory specification without
        first saving a file (without specifying a path during the save). 
        This isn't sufficient for file autoretrieve, however. Therefore, the
        default drive is specifically identified.  New names are now
        correctly identified, along with path names, during a WordPerfect
        exit for inclusion in the retrieve file data file.  Prior to this,
        the user supplied names weren't checked.  If you supplied no name,
        the file was stored on a default drive (whatever it was).  If you
        supplied a root directory, the root drive of whatever drive was used. 
        However, in this case, no drive name was supplied.  This made it
        difficult to autoretrieve some files. (Version 3.10a)

7 Oct1  Fixed a problem with exit ALL option.  Now all files are exited
        correctly.  The only difference between the exit ALL and the EXIT
        WordPerfect options is that the ALL option does not store file
        information on the files exited and leaves the user in WordPerfect,
        document #1. (Version 3.10b)

13 Oct1 If a user was exiting WordPerfect and accepted a file which was
        modified but which had no name ALTF would catch it. However, the
        filename wouldn't get recorded in the autoretrieve information file. 
        This problem was fixed. (Version 3.11)

27 Oct1 Modified the macro to rely on a routine which specifically handles
        the full path specification of a file during a file or WordPerfect
        exit.  The functions which use this operation are exit ALL files or
        exit WordPerfect.  This macro, FN, is called from ALTX through the
        RENAME function.  See FN for a description of the full functionality.
        (Version 3.12)

ALT-
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 3.10g)

CTRL A
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. Removed the message concerning the enter and cancel
        keys. (Version 1.2c)

5 Oct1  Added the ability to save as a generic wordprocessing file (with
        tabs) or as simple ASCII text (no tabs).  Note: indents are converted
        to tabs in the generic save. (Version 1.2d)

CTRL D
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 3.00b)

CTRL L (LTRHD)
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. If the macro is run on a non-empty document the
        cursor is moved to the end of the current document before any
        memorandum information is entered. (Version 2.7)

24 Oct1 Fixed a minor problem which prevented proper operation when chosing a
        mail stop for the TO: address. (Version 2.7a)

26 Oct1 Modified the menu presentation.  Added capability for five line
        addresses.  Macro now checks to see if the document is empty.  If
        empty the macro acts normally.  If the document isn't empty the macro
        puts the cursor at the end of the document and adds a hard page
        break.  This puts the cursor at the beginning of the new page.
        (Version 2.71)

CTRL M (MEMO)
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. If the macro is run on a non-empty document the
        cursor is moved to the end of the current document before any
        memorandum information is entered. (Version 2.7)

26 Oct1 Fixed a problem I thought fixed: the macro wouldn't end normally
        (required the user to hit another key...) (Version 2.71)

CTRL O  No changes since Sep 91

CTRL PgDn (RXMEM)
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 1.0c)

6 Oct1  Changed the variable used to grab memory variables to a less commonly
        used one.  This is normally not a problem but is in certain
        situations. (Version 1.0e)

CTRL S
23 Sep1 Modified main menu.  Shortened horizontal line in consideration for
        slower machines. (Version 1.30a)

Shift Enh Right Arrow
15 Nov1 This macro works by detecting a depressed shift key while the
        enhanced right arrow is pressed as well. This change detects use
        while in the TAB edit screen. (Version 2.03b)

Shift Enh Left Arrow
15 Nov1 This macro works by detecting a depressed shift key while the
        enhanced right arrow is pressed as well. This change detects use
        while in the TAB edit screen. (Version 2.01b)

CTRL Enh Left Arrow
15 Nov1 This change lets the CTRL Enh left arrow work while in the TAB edit
        screen. (Version 2.00b)

CTRL Enh Right Arrow
15 Nov1 This change lets the CTRL Enh right arrow work while in the TAB edit
        screen. (Version 3.01b)

ALT Enh Left Arrow

ALT Enh Right Arrow

CTRL Del

ALT[    TRANSPOSE LEFT (chains to ALT])

ALT]    TRANSPOSE RIGHT/LEFT

DP
10 Nov1 NEW. This macro has NO user functionality.  It is called by either
        ALTD or ALTF. This is a central macro for all macros requiring
        basically the same menu structure. At this time that means both ALTD
        and ALTF.  A change to this menu macro (addition or deletion) is now
        reflected in both ALTD and ALTF without having to modify both. The
        user needs to modify ONLY this macro to provide the directories
        and/or drives necessary for his/her system. Options are now CASE
        SENSITIVE.  The UPPERCASE only option was removed to increase the
        number of user definable letter options. (Version 1.0)

12 Nov1 Fixed a problem with a misnamed subroutine call which prevented
        access to drives. Rewrote a routine which didn't seem to work on
        early model ATs (too long a test...options at the beginning of the
        test worked, those at the end didn't). Modified a routine to act as a
        variable intializer for calling macros. (Version 1.0a)

13 Nov1 Changed some path information for options to use the default Drive,
        WordPerfect directory and WordPerfect document variables identified
        by the initalization routine.  For those options which identify
        subdirectories off the WP51 directory or document directory (or the
        "default" drive) this "could" potentially save some work.  (Version
        1.0b)

14 Nov1 Added a TEST to determine whether the initialization routine has been
        run.  If so, initialization isn't performed again.  Without this test
        the file Path and Name variables are reset and, if reset, a file
        rename isn't possible. (Version 1.0c)

ENV     No changes since 12 Oct 90

FN
26 Oct1 NEW.  This macro has NO user functionality.  It is called by ALTF and
        ALTX to manipulate path specifications during file renames. Added to
        allow a user, during a file rename, decent manipulation of the path
        specification (i.e. path and filename).  The user is presented with
        the full path specification during which characters are added,
        inserted, or replaced. The following functions are provided:

                HOME HOME removes the path specification from the cursor to
                the beginning
                HOME END removes the path specification from the cursor to
                the end
                HOME RIGHT ARROW moves to the end of the path specification
                HOME LEFT ARROW moves to the beginning of the path
                specification
                DEL removes the character at the cursor
                BACKSPACE removes the character before the cursor
                INSERT. Added characters shift characters to the right of the
                cursor right
                = resets to the original path specification
                / causes the designated file to NOT be stored (Macro must be
                called from ALTX)
        (Version 1.0)

3 Nov1  Added hooks to support ALTF's OTHER option. This option (OTHER)
        provides a path not provided by the ALTF file save menu. (Version
        1.1a)

4 Nov1  ALT X menu wasn't being dealt with correctly.  This change fixes it.
        (Version 1.1b)

12 Nov1 Added a variable used by calling macros to detect a CANCEL and
        therefore act accordingly. (Version 1.1c)

Addendum - Wright Laboratory, Wright Patterson Air Force Base, OH Addition:
(for WL supplied version only)

ALTD    This macro is modified for use on the LAN with ELMO as it's NODE. 
        The network drive's M and N are recognized.  If drive N is chosen
        another menu for access to each of its subdirectories comes up.  If a
        drive is chosen which does not exist an error condition is sensed
        indicating either that the drive does not exist or, if in the case of
        the local area network, it is not an active drive.

        As Wordperfect is sensitive to you calling a drive which does not
        exist (or which died while you were using Wordperfect) only the local
        hard drive and its subdirectories are called absolutely (i.e.
        List=subdirname, where list is normally accessed by hitting F5 and
        subdirname is the path and name of the subdirectory you wish wp to
        access henceforth when list is hit.)

        All calls to drives use the default directory of the drive being
        called.

        ALTD exists as a user modifiable macro. It was made relatively simple
        to add/change drives and/or directories you wish to use with this
        macro.  (Note: this macro dependends upon no other macro).

KNOWN Problem(s).
  A blocked word at the end of a document may include punctuation. Normally,
punctuation is not included when a word is blocked (except in blocking
multiple words).