Author:  Dale L. Fenimore                                      21 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/Left Places 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                       (6)  ALT L - ALT D, ALT F

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)

17 Nov1  Let's say you chose the OTHER option.  Then, you decided that's not
         what you wanted to do and hit CANCEL. The 2nd menu line which
         identified the current path wasn't restored.  This was fixed.
         (Version 3.8d)

21 Nov1  Variables were being cleared which were needed for proper saving of
         the the autoretrieve file.  This was a holdover from the time when
         this was a self-contained file.  These variables no longer need to be
         cleared at the end of this macro any longer. (Version 3.8d1)

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)

17 Nov1  Let's say you chose the OTHER option.  Then, you decided that's not
         what you wanted to do and hit CANCEL. The 2nd menu line which
         identified the current path specification wasn't restored.  This was
         fixed. (Version 3.73c)

19 Nov1  Suppose you decided to rename a file. If you get all the way to the
         full path specification and then  decide you don't want to rename the
         file after all. You hit CANCEL twice (to get back to the main FILE
         menu) only to discover that the path specification had TWO copies of
         the path to the file - no longer. (Version 3.73d)

21 Nov1  The document identification line in the menu was changed so that a
         file with no name was a tad more unambiguously identified.  Variables
         initialization is now performed prior to checking for a blank
         document. (Version 3.74)

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)

12 Nov1  The macro was modified to rely upon DP (Drives and Paths) to
         intialize the variables used by ALTX.  (Version 3.12a)

17 Nov1  Modified the macro to allow proper operation of a CANCEL while in a
         file rename situation during a WordPerfect exit.  The CANCEL action
         rewrites the EXIT menu after exiting the rename facility.  The file
         being renamed is reset to it's original name and all references to
         the "new" file name removed is from the system. (Version 3.12b)

19 Nov1  Modified the macro to rewrite the screen (and get rid of the Rename
         File instructions) at the conclusion of a file rename at the Exit
         WordPerfect menu (the menu which is displayed when the WordPerfect
         option is chose at the initial EXIT menu).  A test is now made on
         file names of three characters or less.  This test looks for and
         disallows filenames of the following type:  ":", "\", "A:", "A\", or
         "A:\". Other illegal filenames are, for the most part, caught during
         the exit procedure. It's the user's responsibilty to ensure the
         filenames are correctly specified. (Version 3.13)

21 Nov1  In a WordPerfect exit the Rename function wasn't working correctly
         with files which hadn't been named and an ACCEPT option was selected.
         Now, ALTX forces a file rename before the WordPerfect EXIT is
         performed.

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)

17 Nov1  Made an explicit test for what macro called this one to correctly set
         the second menu line (which identifies the current path or path
         specification). (Version 1.0d)

21 Nov1  Made changes to accommodate variables initialization for the EXIT
         macro (ALTX). (Version 1.0e)

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)

19 Nov1  Added a help menu which is displayed when the OTHER option of ALTD,
         ALTF, or ALTX is requested. (Version 1.3a)


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).