1 EDT_EMULATOR
 The EDT Keypad Emulator is an interactive text editor that
 demonstrates the versatility and extensibility of the VAXTPU
 programming language.  This editor emulates the keypad functions
 and some of the line mode commands of the EDT Version 3 text
 editor.  The purpose of the EDT Keypad Emulator is to provide you
 with a familiar editing interface.  It is hoped that you will use
 this editor as you have used EDT, but then go on to enhance the
 editor with the further powerful capabilities of the VAXTPU
 language.
2 HELP
 To use help from the CTRL/Z, '*' prompt, type HELP followed by a
 line_mode_command.  If the cursor is positioned after the 'Topic?'
 prompt then type:

    EDT                - to get a list of EDT_EMULATOR topics

    EDT LINE           - to get a list of line mode commands

    EDT KEY            - to get a list of keypad commands

    EDT VAXTPU_EQU     - to get help on VAXTPU syntax for missing
                         line mode commands

    VAXTPU             - to get help on the VAXTPU language
2 KEYPAD_FUNCTIONS

 One major difference between EDT and the VAXTPU EDT Keypad
 Emulator is the use of GOLD Keypad 7 (PF1 and KP7).  This command
 places you into VAXTPU command line mode.  Here you can enter
 VAXTPU commands or programs.  To use the emulated subset of EDT
 line mode commands you must use CTRL/Z and enter the commands at
 the asterisk (*) prompt.
3 ADVANCE

 Keypad 4

 Sets the editing direction to forward; that is, toward the bottom
 of the buffer.

3 APPEND

 Keypad 9

 Deletes the select range from the current buffer; appends it to
 the PASTE_BUFFER, just after the present contents of the
 PASTE_BUFFER.

3 BACKSPACE

 CTRL/H

 Moves the cursor to the beginning of the current line or the
 previous line, depending on the editing direction.

3 BACKUP

 Keypad 5

 Sets the editing direction to reverse; that is, toward the top of
 the buffer.

3 BOTTOM

 GOLD Keypad 4

 Moves the cursor to the end of the current buffer.

3 CHAR

 Keypad 3

 Moves the cursor one character in the current direction.

3 CHNGCASE

 GOLD Keypad 1

 Changes the case of all the letters in the select range, or the
 case of the current letter.

3 COMMAND

 GOLD Keypad 7

 Enables you to enter one or a sequence of VAXTPU built-in
 procedures or user-written procedures for execution.  Type the
 procedure name in response to the 'TPU Command:' prompt.

3 CTRL_A
 CTRL/A (Compute Tab Level)

 Resets the tab indentation level to the current cursor position,
 if that position is a multiple of the current SET TAB value.

3 CTRL_C
 CTRL/C

 Aborts the current VAXTPU operation.  CTRL/C is useful for
 stopping searches and the reading and writing of files.  You
 should exit from the editor after using CTRL/C and start a new
 session for any further edits.  It may not be possible to recover
 text changes made after a CTRL/C.

3 CTRL_D
 CTRL/D (Decrease Tab Level)

 Reduces the current tab level count by one.

3 CTRL_E
 CTRL/E (Increase Tab Level)

 Increases the current tab level count by one.

3 CTRL_F
 CTRL/F

 Erases the window that displays HELP or SHOW text, and returns the
 cursor to MAIN_WINDOW.

3 CTRL_H
 CTRL/H

 BACKSPACE

 Moves the cursor to the beginning of the current line.  If the
 cursor is already at the beginning of the line, entering CTRL/H
 moves the cursor to the beginning of the previous line.

3 CTRL_I
 CTRL/I

 TAB

 Moves the text that is to the right of the cursor (including the
 cursor character) to the right to the nearest preset VAXTPU tab
 stop.

3 CTRL_J
 CTRL/J

 LINEFEED

 Deletes characters from the current cursor position to the
 beginning of the word that the cursor is in.  If the cursor is at
 the beginning of a word, the previous word is deleted.

3 CTRL_K
 CTRL/K

 Prompts for the VAXTPU define key command.

3 CTRL_L
 CTRL/L

 Inserts a form feed character into the text.

3 CTRL_M
 CTRL/M

 RETURN

 Causes a new line to be inserted at the current cursor position.
 The cursor moves to the beginning of the new line.

3 CTRL_R
 CTRL/R (Refresh Screen)

 Refreshes the screen.

3 CTRL_T
 CTRL/T (Tab Adjust)

 Indents each line in the select range.  Note that this key will
 only work if you have used the DCL command 'SET NOCONTROL=T'.

3 CTRL_U
 CTRL/U (Delete to Beginning of Line)

 Deletes text from the current cursor position to the beginning of
 the line.  The deleted text replaces the contents of the DELETE
 LINE buffer.

3 CTRL_W
 CTRL/W (Refresh Screen)

 Refreshes the screen.

3 CTRL_Y
 CTRL/Y

 Aborts the current editing session.  The current edits are saved
 in a journal file.  If you pressed this key sequence by accident
 you can resume your editing session by typing "CONTINUE" at the
 DCL prompt.

3 CTRL_Z
 CTRL/Z (Exit to Line Mode)

 Shifts from keypad mode to the EDT Emulator command line mode.
 Places the cursor at the EDT Emulator command line mode prompt
 (*).

3 CUT

 Keypad 6

 Deletes the select range and places it in the PASTE_BUFFER.  The
 previous contents of the PASTE_BUFFER, if any, are deleted.

3 DEL_C
 DEL C (delete character)

 Keypad COMMA

 Deletes the character that the cursor is on.

3 DEL_EOL
 DEL EOL (delete to end of line)

 Gold Keypad 2

 Deletes text from the current cursor position to the end of the
 line.  Does not delete the line terminator.

3 DELETE

 DELETE key on VT100, <X] key on VT200

 Deletes the character to the left of the current cursor position.

3 DEL_L
 DEL L (delete line)

 Keypad PF4

 Deletes text from the current cursor position to the beginning of
 the next line, deleting the line terminator.

3 DEL_W
 DEL W (delete word)

 Keypad MINUS

 Deletes characters from the current cursor position to the
 beginning of the next word.
3 DO

 DO key on VT200

 Sends a command or search string to the editor for processing.

3 DOWN_ARROW

 Moves the cursor down to the position on the following line that
 corresponds to the current cursor position.

3 ENTER

 Sends a command or search string to the editor for processing.
 Completes the CTRL/K key definition process.

3 EOL

 Keypad 2

 Moves the cursor to the next line terminator in the current
 editing direction.

3 FILL

 GOLD Keypad 8

 Reformats the text in the select range so that as many whole words
 as possible are included within the current buffer's margin
 settings.

 If SET WRAP is in effect, the left margin is one, and the right
 margin is the value established through SET WRAP.  If SET WRAP is
 not in effect, then the text is wrapped between column one and the
 width of the current window.

3 FIND

 Gold Keypad PF3

 Searches in the current direction for the string that you type
 when the EDT Keypad Emulator displays the 'Search for:' prompt.

3 FNDNXT

 Keypad PF3

 Locates the next occurrence of the current search string in the
 current direction.

3 GOLD

 Keypad PF1

 Accesses alternate keypad functions.

3 HELP

 Keypad PF2

 PF2 provides information on the keypad layout.  Gold Keypad PF2
 provides information on keypad editing and VAXTPU features in
 general.  Request information after the "Topic:  " prompt.

3 LEFT_ARROW

 Moves the cursor one character to the left.

3 LINE

 Keypad 0

 Moves the cursor to the beginning of the next line in the current
 editing direction.












3 LINEFEED

 CTRL/J

 Deletes characters from the current cursor position to the
 beginning of the word that the cursor is in.  If the cursor is at
 the beginning of a word, the previous word is deleted.

3 OPEN_LINE

 Gold Keypad 0

 Causes a new line to be inserted at the current cursor position.
 The cursor does not move.

3 PAGE

 Keypad 7

 Moves the cursor to the next EDT Keypad Emulator page boundary in
 the current direction.

3 PASTE

 Gold Keypad 6

 Inserts the contents of the PASTE_BUFFER just before the cursor.

3 REPLACE

 Gold Keypad 9

 Deletes the selected range and replaces it with the contents of
 the PASTE_BUFFER.

3 RESET

 Gold Keypad PERIOD

 Cancels the select range and sets the current buffer's direction
 to forward.  Also clears the PROMPT_AREA.

3 RETURN

 Inserts a line terminator in the text.  The cursor moves to the
 beginning of the new line.

3 RIGHT_ARROW

 Moves the cursor one character to the right.

3 SECT

 Keypad 8

 Moves the cursor 16 lines in the current direction.

3 SELECT

 Keypad PERIOD

 Marks one end of a select range.  When you move the cursor again,
 the characters that the cursor passes over become the select
 range.

3 SHIFT_LEFT

 Gold left arrow

 Shifts the screen image of the MAIN_WINDOW 8 columns to the left.
 Has no effect on the text.

3 SHIFT_RIGHT

 Gold right arrow

 Shifts the screen image of the MAIN_WINDOW 8 columns to the right
 if the text has already been shifted to the left.  Has no effect
 on the text.

3 SPECINS

 Gold Keypad 3

 Allows you to insert any character from the DEC Multinational
 Character Set into your text by first entering GOLD, then the
 decimal equivalent value for that character, followed by GOLD
 SPECINS.

3 SUBS (substitute)

 Gold Keypad ENTER

 Replaces the next occurrence of the current search string in your
 text with the contents of the PASTE_BUFFER.

3 TAB

 CTRL/I

 Moves the text that is to the right of the cursor (including the
 cursor character) to the right to the nearest preset tab stop.

3 TOP

 Gold Keypad 5

 Moves the cursor to the beginning of the current buffer.

3 UND_C
 UND C (undelete character)

 Gold Keypad COMMA

 Inserts the contents of the delete character buffer to the left of
 the cursor.

3 UND_L
 UND L (undelete line)

 Gold Keypad PF4

 Inserts the contents of the delete line buffer to the left of the
 cursor.

3 UND_W
 UND W (undelete word)

 Gold Keypad MINUS

 Inserts the contents of the delete word buffer to the left of the
 cursor.

3 UP_ARROW

 Moves the cursor up to the position on the previous line that
 corresponds to the current cursor position.

3 VAXTPU_HELP

 Gold Keypad PF2

 Provides information on keypad editing and VAXTPU features in
 general.  Request information after the "Topic:  " prompt.

3 WORD

 Keypad 1

 Moves the cursor to the beginning of the next word in the current
 direction.

3 No help available

 No help is available on that key.  The key that you pressed is
 either not assigned to a command or there has been no help text
 included for that key.

2 LINE_MODE_COMMANDS

 The EDT Emulator provided with VAXTPU emulates only a few of the
 line mode commands offered by EDT.  To enter one of the line mode
 commands, press CTRL/Z.  The asterisk prompt (*) appears at the
 lower left margin of your screen.  Enter the EDT Keypad Emulator
 line mode command followed by RETURN.  To reenter keypad mode,
 type the letter C, for Change, followed by RETURN.  The cursor
 returns to its former location in the text.

 You can extend or enhance the EDT Keypad Emulator's line mode
 commands by using the VAXTPU programming language.  See the VAX
 Text Processing Utility Reference Manual for more information on
 customizing the VAXTPU EDT Keypad Emulator editing interface.

3 CHANGE

 C

 Shifts the EDT Keypad Emulator to keypad mode, and returns the
 cursor to its former location in the text.

3 EXIT
 EXIT [/SAVE] [file-spec]

 Ends the EDT Keypad Emulator session, saving a copy of the
 MAIN_BUFFER text in an external file.  A new version of an
 existing file is created only if the file is modified.

4 /SAVE

 The /SAVE command line qualifier tells the EDT Keypad Emulator to
 save the journal file.  Whenever you use /SAVE, you must type a
 slash before it to signal the emulator that the following letters
 refer to a qualifier, and not a command word or string.  The /SAVE
 qualifier must be placed before the file name in this command.

3 INCLUDE

 INCLUDE file-spec [=buffer]

 Copies the specified file into the current EDT Keypad Emulator
 session, at the current cursor position.  If you supply a buffer
 specification, it becomes the new current buffer.

3 QUIT
 QUIT [/SAVE]

 Ends your editing session without saving a copy of your editing
 work.  The EDT Keypad Emulator prompts you with the message:
 'Buffer modifications will not be saved, continue quitting (Y or
 N)?' only if you modified the text.  You respond with a Y or N.
4 /SAVE

 The /SAVE command line qualifier tells the EDT Keypad Emulator to
 save the journal file.  Whenever you use /SAVE, you must type a
 slash before it to signal the emulator that the following letters
 refer to a qualifier, and not a command word or string.  The /SAVE
 qualifier is the last element in the command line.
3 SUBSTITUTE

 SUB /old_string/new_string/ [WHOLE]

 Replaces old_string with new_string.  If you supply no location
 specifiers, the substitution takes place at the first occurrence
 of "old_string" on the current line.  If you specify WHOLE, then
 the substitution is made throughout the current buffer.

3 WRITE

 WRITE file-spec [select|whole]

 Puts a copy of the entire current buffer or select range into the
 specified file.  Unlike EXIT, this command does not end the
 current editing session.  The SELECT option allows you to copy a
 selected region of text into the specified file.  When finished
 copying the text, the select range is reset.

3 SET

 SET commands allow you to customize your editing session.

4 CURSOR

 SET CURSOR top:bottom

 Controls scrolling of the screen relative to the distance of the
 cursor from the screen top and the screen bottom.  Values for the
 top and bottom can range from 0 to 21.  Default:  SET CURSOR 7:14.
4 SCREEN

 SET SCREEN width

 Sets the maximum number of characters that VAXTPU displays on a
 line of text.  The possible widths for VT100 terminals with
 advanced video option (AVO) are 80 and 132.  The width for VT100
 terminals without AVO is 80.  The possible widths for VT200
 terminals are 80 and 132.  Default:  set by operating system.
4 SEARCH
 SET SEARCH {GENERAL|EXACT}

 If EXACT, then the case of the characters must be the same.

 SET SEARCH {BEGIN|END}

 If END, then the current position will become the character
 following the located string; otherwise it will be the first
 character of the located string (default).
4 TAB

 SET TAB number

 Sets the tab value for various tabbing functions.

4 WRAP

 SET WRAP number

 Determines after which character VAXTPU wraps text being inserted
 in keypad mode.  It is also the right margin used in the FILL
 command.  If a SET WRAP number is not indicated, then the FILL
 command uses the current window size as the right margin.

3 SHOW

 SHOW commands tell which SET commands are in effect.

4 BUFFER

 Lists all buffers currently in use during your EDT Emulator
 session.  Also lists the number of lines in each buffer and the
 file name.  An equal sign (=) indicates the current buffer.

4 CURSOR

 Shows where scrolling of the screen relative to the distance of
 the cursor from the screen top and the screen bottom occurs.
 Values for the top and bottom can range from 0 to 21.  Default:
 SET CURSOR 7:14.

4 SCREEN

 Shows the maximum number of characters that VAXTPU displays on a
 line of text.  The possible widths for VT100 terminals with
 advanced video option (AVO) are 80 and 132.  The width for VT100
 terminals without AVO is 80.  The possible widths for VT200
 terminals are 80 and 132.  Default:  set by operating system.

4 SEARCH

 Shows how VAXTPU performs searches.  Default:  SET SEARCH GENERAL,
 SET SEARCH BEGIN.

4 VERSION

 Displays the current VAXTPU version number and the current version
 number of EDTSECINI.TPU (the EDT Keypad Emulator section file).

4 WRAP

 Shows after which character VAXTPU wraps text being inserted in
 keypad mode.  It is also the right margin used in the FILL
 command.  If a SET WRAP number is not indicated, then the fill
 command uses the current window size as the right margin.

3 Command_line_specifiers

4 buffer

 The name of a VAXTPU buffer.  Use the equal sign (=) immediately
 before the buffer name (for example, =MAIN).  If the buffer does
 not exist, VAXTPU creates one.  The EDT Keypad Emulator moves to
 the named buffer, except in the case of the WRITE command.

4 file-specification

 The specification for an external file.  It can include a
 directory specification.  With INCLUDE, it tells the EDT Keypad
 Emulator which file to copy into your editing session.  With EXIT
 and WRITE, it tells the EDT Keypad Emulator which file to create
 to hold text from your editing session.  If you include directory
 information, the directory must exist and you must have access to
 it.

4 select

 A selected region of text.  The selected text is copied into a
 file that is specified in the WRITE command.

4 whole

 The entire buffer is used.  With WRITE, it tells VAXTPU to write
 out the entire buffer (default).  With the SUBSTITUTE command, it
 tells VAXTPU to search the entire buffer.

3 Missing_commands

 Although the EDT Keypad Emulator provides only a few of the most
 frequently used line mode commands, missing commands can be
 executed by using VAXTPU built-ins from the Gold KP7 command line.
 To get a list of the VAXTPU syntax for the missing EDT line mode
 commands, ask for help on EDT_EMULATOR VAXTPU_EQUIVALENTS.

2 VAXTPU_EQUIVALENTS
    The following table gives a quick view of how to enter VAXTPU
    procedure names after the "TPU Command:" prompt to emulate EDT
    line mode commands if you are using the EDT Keypad Emulator.


 EDT                            VAXTPU
 ---                            ------
 CLEAR temp                     DELETE(temp_buffer)

 COPY =main TO =paste           POSITION(paste_buffer)
                                COPY_TEXT(main_buffer)
  
 DEFINE KEY                     DEFINE_KEY("READ_FILE(  
  control N as                     READ_LINE('File name:'))"
  "EXT INCLUDE ?'File name: '."    ,CTRL_N_KEY)

 DELETE =main                   ERASE(main_buffer)

 EXIT                           EXIT

 FILL =main                     FILL(main_buffer,' ',r_margin,l_margin)

 FIND =my_buffer  or            buffer_name := CREATE_BUFFER('my_buffer')
   =my_buffer                   MAP(main_window,buffer_name)

 INCLUDE foo.bar                READ_FILE('foo.bar')

 INSERT;character_string        COPY_TEXT('character_string')

 QUIT                           QUIT

 SET SCREEN 132                 SET(WIDTH,main_window,132)

 SET CURSOR 7:14                SET (SCROLLING,current_window,ON,6,7,0)

 SHL                            SHIFT(current_window,8)

 SHR                            SHIFT(current_window,-8)

 SHOW SCREEN                    SHOW(screen)
                                SHOW(windows)

 SHOW version                   SHOW(summary)

 SHOW buffer                    SHOW(buffers)

 WRITE foo.bar                  WRITE_FILE(main_buffer,'foo.bar')
1 EVE
 EVE is an interactive text editor built using the VAX Text
 Processing Utility.  It is both measurably easy to learn and easy
 to use.

 EVE commands are entered from the keyboard after pressing the DO
 key (or PF4 on VT100 terminals).  EVE commands may be abbreviated
 to the smallest unique initial string.  If an abbreviation is not
 unique, EVE will display the possible choices and prompt for the
 command name.
                       
 See the User's Guide to EVE for tutorial and reference material
 about the EVE interface.




2 COMMANDS
     KEYPAD COMMANDS

 Change Direction      Find             Move Right        Select
 Change Mode           Help             Move Up           Space
 Delete                Insert Here      Next Screen       Tab
 Do                    Move By Line     Previous Screen
 Erase Word            Move Down        Remove
 Exit                  Move Left        Return

 EDITING COMMANDS

 Bottom                Fill Paragraph   Overstrike Mode   Set Right Margin
 Capitalize Word       Forward          Quit              Start Of Line
 Center Line           Go To            Quote             Top
 End Of Line           Insert Mode      Recall            Uppercase Word
 Erase Character       Line             Replace
 Erase Line            Lowercase Word   Restore
 Erase Previous Word   Mark             Reverse
 Erase Start Of Line   Move By Word     Set Left Margin

 FILE AND WINDOW COMMANDS

 Buffer                One Window       Write File
 Get File              Other Window
 Include File          Two Windows

 ADDITIONAL SCREEN COMMANDS

 Refresh               Set Width        Show
 Set Tabs At           Shift Left
 Set Tabs Every        Shift Right

 ADVANCED COMMANDS

 Attach                Extend TPU       Repeat               Spawn
 DCL                   Learn            Save Extended TPU    TPU
 Define Key            Remember         Set Shift Key

                       
2 ATTACH                      
 ATTACH

 ATTACH is used when EVE is run in a subprocess.  ATTACH suspends
 the current EVE editing session and reconnects the terminal to the
 parent process.  Usually this is your top-level DCL process.

 By using the DCL-level SPAWN and ATTACH commands in addition to
 the EVE ATTACH command, you can keep one editing session active
 for your entire VMS session.  This makes it faster to resume
 editing, but takes up more system resources.
2 BOTTOM
 BOTTOM

 BOTTOM moves the cursor to the end of the current buffer.
2 BUFFER
 BUFFER

 The BUFFER command puts a new buffer in the current window.  The
 cursor moves to the position it was in the last time you used this
 buffer.  For example,

      buffer test.txt

 will return you to the buffer named TEST.TXT.  Buffer names are
 displayed in the status line at the bottom of the window.  You can
 use the SHOW command to find out which buffers you have used.
 Buffer names may be abbreviated.

 Some EVE commands, such as TPU and EXTEND TPU, can display many
 error messages too rapidly to read.  You can use the BUFFER
 command to see these messages by typing

      buffer messages
2 CAPITALIZE_WORD
 CAPITALIZE WORD

 CAPITALIZE WORD capitalizes the current word by making the first
 letter uppercase and the remaining letters lowercase.  The cursor
 moves to the end of the current word.

 If the current cursor position is between words, CAPITALIZE WORD
 capitalizes the word to the right of the cursor.
2 CENTER_LINE
 CENTER LINE

 CENTER LINE centers the current line between the left and right
 margins.  You may place the cursor anywhere on the line to be
 centered before using CENTER LINE.
2 CHANGE_DIRECTION
 CHANGE DIRECTION

 CHANGE DIRECTION changes the current direction of the buffer.  The
 current direction is displayed on the status line at the bottom of
 the window and may be either Forward or Reverse.

 The current direction affects the way that the FIND, MOVE BY LINE,
 and MOVE BY WORD commands work.  When the direction is Forward,
 FIND searches forward in the buffer, MOVE BY LINE moves to the end
 of the current line, and MOVE BY WORD moves to the start of the
 next word.  When the direction is Reverse, FIND searches backward
 in the buffer, MOVE BY LINE moves to the start of the current
 line, and MOVE BY WORD moves to the start of the previous word.
 See the help entries for FIND, MOVE BY LINE, and MOVE BY WORD for
 more information.

 The FORWARD/REVERSE key invokes this command.
2 CHANGE_MODE
 CHANGE MODE

 CHANGE MODE changes the current mode of the buffer.  The current
 mode is displayed on the status line at the bottom of the window
 and may be either Insert or Overstrike.

 In Insert mode, typed characters are inserted to the left of the
 current position.  In Overstrike mode, typing a character replaces
 the character at the current position.  The DELETE key in
 Overstrike mode replaces the character before the current cursor
 position with a space.

 The INSERT/OVERSTRIKE key invokes this command.
2 DCL
 DCL

 The DCL command executes a DCL (Digital Command Language) command
 from EVE's command line.  For example,

      dcl directory

 will display the contents of your default directory.

 The DCL command and the resulting output go into a special DCL
 buffer.  Once the command is executed, two windows appear on the
 screen.  The second window is associated with the DCL buffer.  The
 cursor remains in the window it was in before you issued the DCL
 command.  (A VAX/VMS limitation prevents DCL prompts from
 appearing in the DCL buffer.)

 The DCL buffer is treated just like any other buffer.  You can
 move output from a DCL command into a text file.
2 DEFINE_KEY
 DEFINE KEY

 The DEFINE KEY command tells EVE that you wish to be able to issue
 a command by pressing a single key.  EVE will prompt you for the
 key that you wish to use to invoke the command.  For example,
 after typing

      define key erase previous word

 EVE would ask for the "Key to be defined".  Say you then pressed
 the 4 key on the numeric keypad.  For the rest of this EVE
 session, pressing the 4 key on the numeric keypad would run the
 ERASE PREVIOUS WORD command.

 It is not possible to cancel a key definition, although you can
 redefine a key by assigning it to a different command within the
 same EVE session.  Use the SAVE EXTENDED TPU command to create
 permanent key definitions.
2 DELETE
 DELETE

 Deletes the character preceding the cursor.  In Insert mode the
 rest of the the line moves left one space to close up the space.
 In Overstrike mode, the character preceding the cursor is replaced
 by a space and the rest of the line remains in the same place on
 the screen.

 When the cursor is at the start of a line, the Return at the end
 of the previous line is deleted.  The text on the current line is
 moved to the right of the text in the line above.

 On VT200 series terminals, the <X] key invokes this command.  On
 VT100 series terminals, the DELETE key invokes this command.
2 DESCRIBE_KEY
 DO

   This command requests a key and then returns a one_line description of
   the key (if one exists).

2 DO
 DO

 Allows you to enter an EVE command.  Press the DO key and then
 type the command using the keys on the main keyboard.  End the
 command by pressing the RETURN key.

 To get help on EVE commands, use the HELP command.  After leaving
 help, you can use the HELP command by pressing the DO key and
 typing HELP.

 Command names may be abbreviated.  You can press the DO key twice
 in a row in order to repeat the last command.

 While typing a command, you may edit what you have typed by using
 the keypad.  You may press DO or RETURN anywhere on the line to
 issue the command.  When you edit commands, the default mode is
 Overstrike and the default direction is Reverse.

 The DO key invokes this command.
2 END_OF_LINE
 END OF LINE

 This command moves the cursor to the end of the current line.  A
 message is displayed if you are already at the end of the line.

 The CTRL/E key invokes this command.
2 ERASE_CHARACTER
 ERASE CHARACTER

 Erases the character at the current cursor position.  In Insert
 mode the rest of the the line moves left one space to close up the
 space.  In Overstrike mode, the character at the cursor position
 is replaced by a space and the rest of the line remains in the
 same place on the screen.

 When the cursor is at the end of a line, the Return at the end of
 that line is deleted.  The text on the next line is moved to the
 right of the text in the current line.
2 ERASE_LINE
 ERASE LINE

 Erases from the current cursor position to the end of the current
 line, appending the next line to the current line.  The erased
 line can be inserted back into a buffer by using the RESTORE
 command.
2 ERASE_PREVIOUS_WORD
 ERASE PREVIOUS WORD

 If the cursor is in the middle of a word, erases the word and
 moves the cursor to the start of the next word.  If the cursor is
 at the beginning of a word or is between words, then the previous
 word is erased and the cursor remains in the same position.  If
 the cursor is at the start of a line, the current line will be
 appended to the previous line.  The erased word can be inserted
 back into a buffer by using the RESTORE command.
2 ERASE_START_OF_LINE
 ERASE START OF LINE

 Erases all characters on this line before the current cursor
 position.  The erased portion of the line can be inserted back
 into a buffer by using the RESTORE command.

 The CTRL/U key invokes this command.
2 ERASE_WORD
 ERASE WORD

 Erases the current word and moves the cursor to the start of the
 next word.  If the cursor is between words, then the next word is
 erased.  If the cursor is at the end of a line, the next line will
 be appended to the current line.  The erased word can be inserted
 back into a buffer by using the RESTORE command.

 The ERASE WORD key invokes this command.
2 EXIT
 EXIT

 The EXIT command leaves the EVE editor, saving your current
 buffer.  EXIT will ask you if you want to save each of your other
 modified buffers.

 The CTRL/Z key invokes this command, as does the EXIT key on VT200
 series terminals.
2 EXTEND_TPU
 EXTEND TPU

 This command is used to extend the power of EVE by compiling your
 own procedures written in the VAX Text Processing Utility
 language.  Typing

      extend tpu *

 compiles the entire current buffer.  Typing

      extend tpu eve_add

 compiles the procedure called eve_add in the current buffer.
 Procedure names may be abbreviated.

 If syntax errors are reported, the error messages will be
 displayed very quickly in the message window.  You can use the
 BUFFER command to switch to the "Messages" buffer in order to
 examine the messages.

2 FILL_PARAGRAPH
 FILL PARAGRAPH

 FILL PARAGRAPH reformats the current paragraph so the text fits
 between the left and right margins.  The cursor moves to the end
 of the current paragraph.

 Blank lines and RUNOFF (Digital's standard text formatting
 program) command lines are recognized by EVE as paragraph
 boundaries.  You may place the cursor anywhere in the current
 paragraph before using the FILL PARAGRAPH command.
2 FIND
 FIND

 Searches for an occurence of a string.  Press the FIND key and
 then enter the string using the main keyboard.  End the string by
 pressing the RETURN key.  Pressing the FIND key twice in a row
 causes the editor to search for the previously specified string.

 FIND is case-insensitive if the string contains no uppercase
 letters; it is case-sensitive if the string contains uppercase
 letters.

 The direction of the search (Forward or Reverse) is determined by
 the current direction of the buffer, as shown in the status line
 at the bottom of the buffer.  If the string can only be found be
 searching in the opposite direction, FIND will ask you if you want
 to move the cursor in that direction.

 The FIND key invokes this command.

2 FORWARD
 FORWARD

 Sets the current direction of the buffer to forward.  The
 direction is displayed in the buffer's status line.  The direction
 affects the operation of the FIND, MOVE BY LINE, and MOVE BY WORD
 functions.
2 GET_FILE
 GET FILE

 Use the GET FILE command when you wish to start editing another
 file.  GET FILE reads a file from the file system, puts the file
 in a new buffer, and displays the new buffer in the current
 window.  The cursor is moved to the beginning of the file.  The
 file still exists in its original form in the file system.

 For example,

      get file test.txt

 will move the cursor to the beginning of the file test.txt, in the
 new buffer test.txt.

 If a modified buffer with the same name as the new file already
 exists, GET FILE will ask you for a buffer name.  In some cases
 you will want a new buffer; in other cases you will probably want
 to use the BUFFER command to move to a file that is already being
 edited.

2 GO_TO
 GO TO

 This command moves the cursor to the previously marked text.  (See
 MARK.) For example,

      go to glossary

 moves the cursor to the position that was named "glossary" by an
 earlier mark command.  Mark names may be abbreviated.

 If the new position is not in the current buffer, the cursor still
 moves to the new position.  A new buffer is mapped to the current
 window if necessary.

 The SHOW command displays the names of all the marks in each
 buffer.  Mark names are case-insensitive.
2 HELP
 HELP

 The HELP key provides help on keypad commands.  After pressing
 HELP, press the key that you want HELP on.  Press RETURN to leave
 help.

 To get help on more advanced EVE commands, use the HELP command.
 Press the DO key, type help, and press RETURN.  The HELP command
 will then provide you with a list of all the EVE commands.  Type
 the name of the command that you want help on, or type ?  to see
 the list of commands again.  Press RETURN without typing anything
 in order to leave the HELP command.  If you are using the HELP
 key, press RETURN before using the HELP command.

 You can ask for help on a particular command in one step.  For
 example,

      help top

 will provide help on the TOP command.
2 INCLUDE_FILE
 INCLUDE FILE

 The INCLUDE FILE command makes it possible to combine files.  The
 file you specify is read from the file system and placed before
 the current cursor position.  The cursor moves to the beginning of
 the inserted file.  The file still exists in its original form in
 the file system after you include it.

 For example,

      include file test.txt

 will insert the file test.txt before the current cursor position
 and move the cursor to the beginning of test.txt.

 You may include a wild-card character (*) in the file name.  This
 can be helpful in abbreviating long file names.
2 INSERT_HERE
 INSERT HERE

 Use INSERT HERE to move and copy text.  To copy text, press the
 INSERT HERE key immediately after hitting the REMOVE key.  This
 will put the text back in its original position.  Then move the
 cursor to the place where you want the text inserted, and press
 INSERT HERE again to make another copy of the text.

 To move text from one place to another, press the INSERT HERE key
 only after you have moved the cursor to the new position.

 When you use INSERT HERE, the text is inserted regardless of
 whether the buffer is in Insert or Overstrike mode.

 The INSERT HERE key invokes this command.
2 INSERT_MODE
 INSERT MODE

 Changes the mode of the current buffer to Insert.  In Insert mode,
 typing characters are inserted before the current cursor position.
2 LEARN
 LEARN

 The LEARN command tells EVE to "learn" or record a sequence of
 keystrokes.  This learning process begins when the LEARN command
 is entered and continues until stopped by a CTRL/R.  The sequence
 of learned keystrokes is then remember, and assigned to a key for
 the current EVE session.  See REMEMBER for more information.

 You can use the LEARN command in combination with the REPEAT
 command when you need to use an editing function throughout a
 file.  Use the SAVE EXTENDED TPU command to create permanent key
 definitions.
2 LINE
 LINE

 Moves the cursor to the start of a particular line in the current
 buffer.  For example,

      line 42

 will move the cursor to the beginning of line 42.

2 LOWERCASE_WORD
 LOWERCASE WORD

 LOWERCASE WORD puts the current word in lowercase letters.  The
 cursor moves to the end of the current word.  If the current
 cursor position is between words, LOWERCASE WORD changes the word
 to the right of the cursor.  If the current word is in both
 uppercase and lowercase letters, it goes to all lowercase letters.
2 MARK
 MARK

 The MARK command is used to add bookmarks to your current editing
 session.  MARK adds a bookmark at the current cursor position.
 The mark is a character or word which names the position.  You can
 come back to a marked position by using the GO TO command.  This
 command is useful if you are editing a large file and want to go
 back to a particular section; it avoids searching throughout the
 file.

 For example,

      mark glossary

 adds a mark called "glossary" at the current cursor position.  You
 can return to this position later by using

      go to glossary
2 MOVE_BY_LINE
 MOVE BY LINE

 Moves the cursor to the start or end of the current line,
 depending on the current direction displayed in the status line.

 If the current direction is Forward, MOVE BY LINE moves the cursor
 to the end of the current line.  If the cursor is already at the
 end of a line, MOVE BY LINE moves to the end of the next line.

 If the current direction is Reverse, MOVE BY LINE moves the cursor
 to the start of the current line.  If the cursor is already at the
 start of a line, MOVE BY LINE moves to the start of the previous
 line.

 The MOVE BY LINE key invokes this command.
2 MOVE_BY_WORD
 MOVE BY WORD

 If the current direction is Forward, moves to the start of the
 next word.  If the current direction is Reverse, moves to the
 start of the current word.  If already at the start of a word,
 moves to the start of the previous word.
2 MOVE_DOWN
 MOVE DOWN

 Moves the cursor down one line on the screen.  If the cursor is on
 the last line of a window, scrolls the window forward one line.

 The down-arrow key invokes this command.
2 MOVE_LEFT
 MOVE LEFT

 Moves the cursor left one column on the screen.  If the cursor is
 on the first column on the screen, it remains at that column; it
 does not wrap to the previous line or shift the window.

 The left-arrow key invokes this command.
2 MOVE_RIGHT
 MOVE RIGHT

 Moves the cursor right one column on the screen.  If the cursor is
 on the last column on the screen, it remains at that column; it
 does not wrap to the previous line or shift the window.

 The right-arrow key invokes this command.
2 MOVE_UP
 MOVE UP

 Moves the cursor up one line on the screen.  If the cursor is on
 the first line of a window, scrolls the window backward one line.

 The up-arrow key invokes this command.
2 NEXT_SCREEN
 NEXT SCREEN

 NEXT SCREEN moves the cursor vertically through the file, a
 screenful of text at a time.  The cursor moves forward, filling
 your screen with the following lines of information.  You can
 continue using NEXT SCREEN until you reach the end of the file.

 The NEXT SCREEN key invokes this command.
2 ONE_WINDOW
 ONE WINDOW

 The ONE WINDOW command returns the screen to one view of the
 current buffer.  The window the cursor is in becomes the current
 window.  If you have been viewing two different documents in the
 two windows, EVE removes the other window from the screen.  The
 contents of the other buffer are not affected; you can return to
 editing this buffer by using the BUFFER command.
2 OTHER_WINDOW
 OTHER WINDOW

 The OTHER WINDOW command allows you to move the cursor from one
 window to the other.  Many editing functions are performed at the
 current location of the cursor, so you may frequently want to move
 it from one window to the other.  If you want scrolling in a
 window, for example, you must have the cursor in that window.
2 OVERSTRIKE_MODE
 OVERSTRIKE MODE

 Changes the mode of the current buffer to Overstrike.  In
 Overstrike mode, typing a character replaces the character at the
 current cursor position.  The DELETE key in Overstrike mode
 replaces the character before the current cursor position with a
 space.

2 PREVIOUS_SCREEN
 PREVIOUS SCREEN

 PREVIOUS SCREEN moves the cursor vertically through the file, a
 screenful of text at a time.  The cursor moves backward, filling
 your screen with the previously entered lines of information.  You
 can continue using PREVIOUS SCREEN until the first line of the
 file is displayed on the screen.

 The PREV SCREEN key invokes this command.

2 QUIT
 QUIT

 QUIT allows you to leave EVE without creating any new files.  You
 can use QUIT if you are simply reading a file without modifying
 it, or if you do not want to save your edits.

 If you have made any modifications which have not been saved by
 using the WRITE FILE command, EVE will ask you if you really want
 to stop editing.  Answering yes leaves the editor; answering no
 keeps you in the editor.  This allows you to review the current
 EVE session before discarding any changes.  You can use the SHOW
 command to see which buffers have been modified.
2 QUOTE
 QUOTE

 This command adds a character to the buffer.  It allows you to add
 a form feed and other control characters.  It also allows you to
 add graphic characters, such as letters and punctuation marks,
 that are bound or programmed to other keys.  You can also use the
 QUOTE command to include special characters within commands.

 EVE will prompt you for the key to be inserted.  Pressing CTRL/L,
 for example, would type a form feed at the current cursor
 position.

 The CTRL/V key invokes this command.
2 RECALL
 RECALL

 This command recalls the previously entered command that was
 issued using the DO or RECALL command.

 If you make a mistake entering a command, you do not need to enter
 the entire command again.  The RECALL command places the most
 recently entered command on the command line.  The cursor moves to
 the end of the command line, so you can edit the command.  By
 repeatedly pressing the RECALL key, you can recall all the
 previously entered commands, one at a time.

 The CTRL/B key invokes this command.
2 REFRESH
 REFRESH

 This command redisplays every character on the screen, eliminating
 any extraneous characters that may have appeared on the screen and
 any messages displayed in the message window.  The cursor remains
 in the same location.

 The CTRL/W key invokes this command.

2 REMEMBER
 REMEMBER

 REMEMBER is used to finish a sequence of keystrokes than you plan
 to use repeatedly during an editing session.  The LEARN command is
 used to start the sequence of keystrokes.

 You will be prompted for the key that you wish to press each time
 that you want to repeat this sequence of keystrokes.  You cannot
 use the DO key, the RETURN key, or the typing keys for this
 purpose.

 These key definitions will stay in effect for the rest of your EVE
 session.  Use the SAVE EXTENDED TPU command to create permanent
 key definitions.

 The CTRL/R key invokes this command.  REMEMBER cannot be used from
 the command line.
2 REMOVE
 REMOVE

 Removes the text in the select range, which is the highlighted
 area of text on the screen.  See the help entry on the SELECT
 command for more information about select ranges.  If you have
 started a select range and wish to stop without making any
 changes, press the SELECT key again to cancel the select range.

 You can move and copy a select range after using REMOVE by using
 the INSERT HERE key.  See the help entry on the INSERT HERE
 command for more information.

 Hitting SELECT followed immediately by REMOVE will remove the
 character that the cursor is positioned on.  Each time REMOVE is
 used, the previously removed text is discarded.

 The REMOVE key invokes this command.
2 REPEAT
 REPEAT

 REPEAT lets you repeat a command or a typing character for a
 predetermined number of times.  For example, say you press the DO
 key and type

      repeat 30

 and then type the letter "x".  The letter "x" will be typed thirty
 times at the current cursor position.  If instead of typing, you
 press the DO key and type

      capitalize word

 then the next 30 words will be capitalized.

 REPEAT is especially useful in combination with LEARN and REMEMBER
 for doing repetitive editing.  Use LEARN and REMEMBER to define
 the editing operation, and then use the REPEAT command to repeat
 the operation as often as necessary.
2 REPLACE
 REPLACE

 REPLACE lets you repeatedly substitute one word or phrase for
 another throughout a buffer.  For example,

      replace good excellent

 instructs EVE to replace "good" with "excellent" in the current
 buffer.

 Each occurrence of "good" within the current buffer will be
 highlighted in reverse video, and you will be prompted for an
 action.  Typing "Yes" or just pressing RETURN replaces this
 occurrence.  "No" skips this occurrence.  "All" replaces this
 occurrence and all future occurrences without any further
 prompting.  "Last" replaces this occurrence and stops the REPLACE
 command.  "Quit" stops the REPLACE command without replacing this
 occurrence.

 In order to replace multi-word phrases, put the phrases in
 quotation marks.  For example,

      replace "the first one" "the second one"
2 RESTORE
 RESTORE

 Inserts the text last erased by the ERASE WORD, ERASE LINE, ERASE
 PREVIOUS WORD, and ERASE START OF LINE commands.  The text is
 inserted regardless of whether the current mode is Insert or
 Overstrike.
2 RETURN
 RETURN

 Inserts a new line before the current cursor position, moving the
 cursor to the start of the new line.

 The RETURN key invokes this command.
2 REVERSE
 REVERSE

 Sets the current direction of the buffer to reverse.  The
 direction is displayed in the buffer's status line.  The direction
 affects the operation of the FIND, MOVE BY LINE, and MOVE BY WORD
 functions.
2 SAVE_EXTENDED_TPU
 SAVE EXTENDED TPU

 The SAVE EXTENDED TPU command saves all currently defined key
 definitions, learn sequences, and command definitions in a section
 file that you specify.  The section file name should include a
 complete VMS file specification, including device and directory
 names.  These may be specified using a VMS logical name.

 You must define the TPUSECINI logical name with the same file
 specification as you used in the SAVE EXTENDED TPU command in
 order to use the section file in future editing sessions.  For
 example,

      save extended tpu d1:[user]myeve.gbl

 saves the current editing environment, and issuing

      $ define tpusecini d1:[user]myeve.gbl

 at DCL level lets you use this editing environment in future
 editing sessions.

2 SELECT
 SELECT

 Marks one end of a select range.  A select range is a block of
 text on which various operations (such as REMOVE) can be
 performed.  To create a select range:

 1.  Move the cursor to either the beginning or end of the text you
     wish to select.

 2.  Press the SELECT key.

 3.  Move the cursor to the opposite end of the text.

 You can then press the REMOVE key to remove the select range.

 If you start a select range and wish to stop without making any
 changes, press SELECT again to cancel the select range.

 The SELECT key invokes this command.
 
2 SET_LEFT_MARGIN
 SET LEFT MARGIN

 This command changes the left margin for the current buffer.  The
 right margin is not changed.  For example,

      set left margin 10

 sets the left margin to 10.  New text will start in column 10.
 Nine spaces will be inserted before each new line.

 The left margin is set to 1 by default.  You can use the SHOW
 command to examine the current margin settings for each buffer.

2 SET_RIGHT_MARGIN
 SET RIGHT MARGIN

 This command changes the right margin for the current buffer.  The
 left margin is not changed.  For example,

      set right margin 70

 sets the right margin to 70.  New text will not go beyond column
 70.

 An eight-character "hot zone" is used to perform automatic word
 wrapping.  In this example, new words will not begin beyond column
 62 but will instead be started on the next line.  Using the FILL
 PARAGRAPH command will reformat the paragraph between the left and
 right margins.

 The right margin is set to 79 by default.  You can use the SHOW
 command to examine the current margin settings for each buffer.
2 SET_SHIFT_KEY
 SET SHIFT KEY

 The SET SHIFT KEY command lets you define a key to act as a shift
 key.  The defined shift key (not to be confused with the key
 marked SHIFT) assists in sending instructions to EVE but does not
 perform an editing function.  The shift key acts much like the
 gold key on EDT or a calculator.  EVE will prompt you for the key
 to use as the shift key.

 The shift key allows you to assign two commands to one key:  one
 is used when the key is pressed by itself, and the other is used
 when the key is pressed after the defined shift key.  These key
 definitions will stay in effect for the rest of your EVE session.
 Use the SAVE EXTENDED TPU command to create permanent key
 definitions.

 If you want to change the definition of the shift key, you must
 use the TPU UNDEFINE_KEY command first.  For example, if your old
 shift key was the 4 key on the numeric keypad, you would have to
 use

      tpu undefine_key (kp4)

 before using the SET SHIFT KEY command to change the shift key.
2 SET_TABS_AT
 SET TABS AT

 SET TABS AT allows you to set tab stops at specified positions.
 The specified positions are a sequence of numbers separated by
 spaces.  For example,

      set tabs at 8 14 22 56

 sets tab stops at positions 8, 14, 22, and 56.  The default tab
 stops are set to every eight characters.  To set tabs at equal
 intervals, use the SET TABS EVERY command.

 On any terminals or printers which have different tab settings
 from those specified, the file will not appear the same as it does
 when viewed using EVE.  This command does not affect the hardware
 tab settings of your terminal.
2 SET_TABS_EVERY
 SET TABS EVERY

 SET TABS EVERY allows you to set tab stops at equal intervals.
 For example,

      set tabs every 10

 sets tab stops at positions 10, 20, 30, etc.  The default tab
 stops are set to every eight characters.  To set tab stops at
 specific positions, use the SET TABS AT command.

 On any terminals or printers which have different tab settings
 from those specified, the file will not appear the same as it does
 when viewed using EVE.  This command does not affect the hardware
 tab settings of your terminal.

2 SET_WIDTH
 SET WIDTH

 This command allows you to set the width of lines.  EVE displays
 lines no longer than the width specified using this command.
 Lines longer than the width are indicated by a diamond at the end
 of the line.  You can see the rest of these lines by using the
 SHIFT RIGHT and SHIFT LEFT commands.

 The width is set to 80 characters by default.  If you set the
 width greater than 80, the terminal is placed in 132-character
 mode.  Otherwise the terminal is placed in 80-character mode.  For
 example,

 set width 120

 tells EVE to display lines no longer than 120 characters long, and
 the terminal is placed in 132-character mode.  You can use the
 SHOW command to examine the current width.
2 SEQUENCE
 SEQUENCE

 The key that you have pressed has been assigned to a learn
 sequence by using the LEARN and REMEMBER commands.
2 SHIFT_LEFT
 SHIFT LEFT

 SHIFT LEFT shifts or moves the window horizontally to the left by
 the number of columns you specify.  SHIFT LEFT allows you to view
 characters located to the left of the current screen width.  You
 can use SHIFT LEFT to reverse the results of a SHIFT RIGHT
 command.  For example, if the current window is shifted right by
 15 characters,

      shift left 15

 will restore the window to its unshifted state.  You can use the
 SHOW command to see how many columns over the current window is
 shifted.
2 SHIFT_RIGHT
 SHIFT RIGHT

 SHIFT RIGHT shifts or moves the window horizontally to the right
 by the number of columns you specify.  You can use SHIFT RIGHT to
 see beyond the width of the screen.  For example, suppose that you
 are editing a file with lines 160 characters long, and you have
 SET WIDTH to 132.  You can use

      shift right 28

 to see the characters in columns 29 through 160.  You can use the
 SHOW command to see how many columns over the current window is
 shifted.
2 SHOW
 SHOW

 Shows information about the current buffer, including the name of
 the input file, the name of the output file, margin settings, tab
 settings, and the names of the marks associated with this buffer.

 If you have more than one buffer in your editing session, SHOW
 will ask you if you want more information.  Press the DO key to
 see information about the other buffers, displayed one buffer at a
 time.  Press the RETURN key to resume editing.

 SHOW does not display information about internal system buffers,
 such as the MESSAGES buffer, unless it is the current buffer.

2 SPACE
 SPACE

 The SPACE command inserts or overstrikes a space character at the
 current cursor position, depending on the current mode.  SPACE
 also will move the cursor to the start of the next line if the
 cursor is less than 8 spaces away from the right margin.  If the
 current word extends beyond the right margin, that word will also
 be moved to the next line.

 You can change the current margin settings by using the SET LEFT
 MARGIN and SET RIGHT MARGIN commands.

 The SPACE bar invokes this command.
2 SPAWN
 SPAWN

 SPAWN suspends the current EVE editing session and connects the
 terminal to a new DCL subprocess.  Logging out of the DCL
 subprocess resumes the EVE editing session.

 The SPAWN command can be used to run screen-oriented programs and
 DCL utilities without losing your current editing session.
2 START_OF_LINE
 START OF LINE

 This command moves the cursor to the start of the current line.  A
 message is displayed if you are already at the start of the line.

 The CTRL/H and BACKSPACE keys invoke this command.

2 TAB
 TAB

 Inserts a Tab character at the current cursor position.  The Tab
 character is inserted regardless of whether the buffer is in
 Insert or Overstrike mode.

 The TAB key invokes this command.
2 TOP
 TOP

 TOP moves the cursor to the beginning of the current buffer.
2 TPU
 TPU

 The TPU command lets you execute a VAX Text Processing Utility
 command.  For example,

      tpu message ('Hello')

 compiles and executes the VAXTPU command, "message ('hello')".
 The word "Hello" appears in the message window.

 The VAX Text Processing Utility Reference Manual contains complete
 information about the VAXTPU language.

 Press the DO key for more information about VAXTPU commands.

2 TWO_WINDOWS
 TWO WINDOWS

 The TWO WINDOWS command creates two sections on the screen, making
 it possible to view different parts of one file, or two different
 documents.  When you view one file in two windows, whatever you do
 to one is done to the other.  This is not true when viewing two
 different files in two windows.

 If there is one window on the screen, TWO WINDOWS takes the
 current window and divides it into two smaller windows.  The
 current buffer is displayed in both windows, and the cursor is
 moved to the bottom window.  To view two different files at the
 same time, use the BUFFER or GET FILE commands after using TWO
 WINDOWS to put a new buffer or file in the current window.
2 TYPING
 TYPING KEYS

 In Insert mode, typed characters are inserted to the left of the
 current cursor position.  In Overstrike mode, typing a character
 replaces the character at the current cursor position.
2 UNKNOWN
 UNDEFINED KEY

 The key that you have pressed has not been assigned to a command.
 You may use the DEFINE KEY command or the LEARN and REMEMBER
 commands to assign a command to this key.
2 UPPERCASE_WORD
 UPPERCASE WORD

 UPPERCASE WORD puts the current word in uppercase letters.  The
 cursor moves to the end of the current word.  If the current
 cursor position is between words, UPPERCASE WORD changes the word
 to the right of the cursor.  If the current word is in both
 uppercase and lowercase letters, it goes to all uppercase letters.

2 WRITE_FILE
 WRITE FILE

 The WRITE FILE command places the contents of the current buffer
 in the file you specify.  Use

      write file

 to create a new version of an existing file.  You can also write
 the buffer to a new file name.  For example,

      write file new.txt

 writes the current buffer to the file new.txt, even if the file
 already existed with a different name.  The editing session does
 not end until you use either the EXIT or QUIT commands.

 The WRITE FILE command does not change the buffer name, but it
 does change the output file name.  A future WRITE FILE command
 will write the buffer to the new file name (as will the EXIT
 command, if the buffer has been modified).  You can examine the
 current output file name with the SHOW command.

1 HELP
 When you request help information on VAXTPU from either EVE or the EDT
 Keypad Emulator, the information is inserted into a buffer, and is
 displayed in a window on the screen.  If there are more lines of
 information than a single screen can display, you will see the prompt
 "Press RETURN to continue ...".  If you press the RETURN key, the next
 page of text will appear.  When there is no more text under this help
 level a "Topic?" or "...Subtopic?" prompt will appear.  If the cursor
 is positioned at the "Press RETURN to continue ..." prompt, and you do
 not wish to see the remainder of the text, enter a subtopic to get help
 on the next level or use CTRL/Z to leave help.

 If the cursor is at the "Topic?" or "...Subtopic?" prompt, you can end
 help prompting mode by pressing CTRL/Z or by repeatedly pressing
 RETURN.  To get help on VAXTPU when the "Topic?" prompt is active,
 respond with VAXTPU.  Note that abbreviations are allowed down to the
 smallest unique subset of characters.
1 KEYPAD_DIAGRAMS 

 To view keypad diagrams for the interface being
 used (EDT or EVE), exit from this help file with a CONTROL Z.
 For the EDT (not EDTP) interface, press CONTROL F to unmap INFO_WINDOW.
 Then press the appropriate help key on the keypad (PF2 or KP3).
 

2 EDT_VT100
  [mlqqqqqqqqwqqqqqqqqwqqqqqqqqwqqqqqqqqk      lqqqqqqqqwqqqqqqqqwqqqqqqqqwqqqqqqqqk
  x   ^    x  DOWN  x        x        x      x[7m        [mx        x FNDNXT x DEL L  x
  x   x    x   x    x <qqqq  x  qqqq> x      x[7m  GOLD  [mx  HELP  x        x        x
  x   x    x   x    x  LEFT  x  RIGHT x      x[7m        [mx        x[7m  FIND  [mx[7m UND L  [mx
  x   UP   x   v    x        x        x      tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu
  mqqqqqqqqvqqqqqqqqvqqqqqqqqvqqqqqqqqj      x  PAGE  x  SECT  x APPEND x DEL W  x
  DELETE      Delete character               x        x        x        x        x
  LINEFEED    Delete to beginning of word    x[7m COMMAND[mx[7m  FILL  [mx[7m REPLACE[mx[7m UND W  [mx
  BACKSPACE   Backup to beginning of line    tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu
  CTRL/A      Compute tab level              x ADVANCEx BACKUP x  CUT   x DEL C  x
  CTRL/D      Decrease tab level             x        x        x        x        x
  CTRL/E      Increase tab level             x[7m BOTTOM [mx[7m  TOP   [mx[7m PASTE  [mx[7m UND C  [mx
  CTRL/K      Define key                     tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu
  CTRL/R      Refresh Screen                 x  WORD  x  EOL   x  CHAR  x        x
  CTRL/T      Adjust tabs                    x        x        x        x ENTER  x
  CTRL/U      Delete to beginning of line    x[7mCHNGCASE[mx[7m DEL EOL[mx[7m SPECINS[mx        x
  CTRL/W      Refresh screen                 tqqqqqqqqvqqqqqqqqnqqqqqqqqu        x
  CTRL/Z      Exit to line mode              x      LINE       x SELECT x        x
                                             x                 x        x[7m  SUBS  [mx
                                             x[7m    OPEN LINE    [mx[7m RESET  [mx        x
                                             mqqqqqqqqqqqqqqqqqvqqqqqqqqvqqqqqqqqj

2 EVE_VT200
 EVE keypad for VT200 series terminals

  _________________________________      _________________________
  |Forward|Move by| Erase |Insert |      |       |               |
  |Reverse| Line  | Word  |Overstr|      | Help  |      Do       |
  |_______|_______|_______|_______|      |_______|_______________|

                                         _________________________
       F10    - Exit                     |       |Insert |Re-    |
       CTRL/B - Recall                   | Find  |Here   |move   |
       CTRL/E - End Of Line              |_______|_______|_______|
       CTRL/H - Start Of Line            |       |Prev   |Next   |
       CTRL/R - Remember                 |Select |Screen |Screen |
       CTRL/U - Erase To Start Of Line   |_______|_______|_______|
       CTRL/V - Quote                            |   ^   |
       CTRL/W - Refresh                          |   |   |
       CTRL/Z - Exit                     ________|_______|________
                                         |       |   |   |       |
       Use the Do key to enter           |  <--  |   V   |  -->  |
       advanced commands.                |_______|_______|_______|
2 EVE_VT100
 EVE keypad for VT100 series terminals

  _________________________________     _________________________________
  |   ^   |   |   |       |       |     |       |       |Forward|       |
  |   |   |   V   |  <--  |  -->  |     | Find  | Help  |Reverse|  Do   |
  |_______|_______|_______|_______|     |_______|_______|_______|_______|
                                        |       |       |Insert |Move by|
                                        |Select |Remove |Here   | Line  |
    BACKSPACE - Start Of Line           |_______|_______|_______|_______|
    CTRL/B    - Recall                  |       |   ^   |       | Erase |
    CTRL/E    - End Of Line             |       |   |   |       | Word  |
    CTRL/R    - Remember                |_______|_______|_______|_______|
    CTRL/U    - Erase To Start Of Line  |       |   |   |       |       |
    CTRL/V    - Quote                   |  <--  |   v   |  -->  |       |
    CTRL/W    - Refresh                 |_______|_______|_______|Insert |
    CTRL/Z    - Exit                    |     Next      |Prev   |Overstr|
                                        |     Screen    |Screen |       |
       Use the Do key to enter          |_______________|_______|_______|
       advanced commands.

2 USER_200KEYPAD
 (0                lqqqqqqqqwqqqqqqqqwqqqqqqqqwqqqqqqqqk F6 -
   UNSHIFTED     x SHIFT  x  TOP   xGOTO LINxDCL DIR x F7  -
 ^B -RECALL      x  KEY   x BOTTOM xSH LINE#xCOB TABSx F8  -CAP. WD. / FILL
 ^E -EOL         x  PF1   x  PF2   x  PF3   x  PF4   x F9  -LEARN
 ^H -BOL         tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu F10 -EXIT
 ^K -LEARN       xSET RECTxCC RANGExCC CHAR xFOR TABSx F11 -TOGGLE FWD/REV
 ^P -PREV. EOL   xSET NOREx        xCC LINE xSTD TABSx F12 -MOVE BY WORD / LINE
 ^R -REMEMBER    x   7    x   8    x   9    x   -    x F13 -DELETE WORD
 ^U -ERASE TO BOLtqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu F14 -TOGGLE INS/OVR
 ^V -QUOTE       xSCRL UP1xSCRL DN1xTYPE ALLxNEXT PG x HELP-HELP KEYPAD
 ^W -REFRESH     x CENTER x REPLACExCOL XCHGx        x DO  -COMMAND / TPU
 ^Z -EXIT        x   4    x   5    x   6    x   ,    x F17 -ERASE TO BOL / BOB
                 tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu F18 -ERASE TO EOL / EOB
    SHIFTED      x WID 80 xSHO COLSxTHIS MSGxUNDELETEx F19 -TOGL BUFR / SPLT SCR
 ^D -DCL WINDOW  x WID 132xSHO RECLx        xRESTORE x F20 -QUIT
 ^I -INS. PG MKS x   1    x   2    x   3    x        x SHIFT A - APPEND FILE
 ^R -REM. PG MKS tqqqqqqqqvqqqqqqqqnqqqqqqqqu        x SHIFT G - GET FILE
 ^T -TRANS. BUFR x ANY TMP USER KEYxDEL CHARx        x SHIFT I - INCLUDE FILE
 <  -SHFT L 25   x   DEFINITION    xDEL LINEx        x SHIFT R - REPEAT CMD
 >  -SHFT R 25   x        0        x   .    x ENTER  x SHIFT S - CHG SCROLL MODE
                 mqqqqqqqqqqqqqqqqqvqqqqqqqqvqqqqqqqqj SHIFT W - WRITE FILE      (B
2 USER_100KEYPAD
 (0  UNSHIFTED     lqqqqqqqqwqqqqqqqqwqqqqqqqqwqqqqqqqqk       SHIFTED
 ^B -RECALL      x SHIFT  x  TOP   xGOTO LINx   DO   x    ^D -DCL WINDOW
 ^E -EOL         x  KEY   x BOTTOM xSH LINE#xWRT FILEx    ^F -SEARCH
 ^F -FIND        x  PF1   x  PF2   x  PF3   x  PF4   x    ^G -REMOVE
 ^G -SELECT      tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu    ^I -INSERT
 ^H -BOL         xSET RECTxCC RANGExCC CHAR xFOR TABSx    ^L -MOVE BY WORD
 ^J -DELETE WORD xSET NOREx INS/OVRxCC LINE xSTD TABSx    ^R -FWD./REV.
 ^L -MOVE BY LINEx   7    x   8    x   9    x   -    x    ^T -TRANS. BUFR
 ^P -PREV. EOL   tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu    ^U -ERASE TO EOL
 ^R -REMEMBER    xSCRL UP1xSCRL DN1xTYPE ALLxNEXT PG x    ^Z -QUIT
 ^U -ERASE TO BOLx CENTER x REPLACExCOL XCHGx        x
 ^V -QUOTE       x   4    x   5    x   6    x   ,    x
 ^W -REFRESH     tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu SHIFT A - APPEND FILE
 ^Z -EXIT        x WID 80 xSHO COLSxTHIS MSGxUNDELETEx SHIFT G - GET FILE
                 x WID 132xSHO RECLxBUFR TGLxRESTORE x SHIFT I - INCLUDE FILE
 /\ -PREV. SCR   x   1    x   2    x   3    x        x SHIFT R - REPEAT CMD
 \/ -NEXT SCR    tqqqqqqqqvqqqqqqqqnqqqqqqqqu        x SHIFT S - CHG SCROLL MODE
  < -SHIFT L 25  x ANY TMP USER KEYxDEL CHARx        x SHIFT W - WRITE FILE
  > -SHIFT R 25  x   DEFINITION    xDEL LINEx        x SHIFT 1 - ONE SCREEN
 F12-BOL         x        0        x   .    x ENTER  x SHIFT 2 - TWO SCREENS
 F13-DELETE WORD mqqqqqqqqqqqqqqqqqvqqqqqqqqvqqqqqqqqj                      (B 
2 EDTP_KEYPAD
 (0                lqqqqqqqqwqqqqqqqqwqqqqqqqqwqqqqqqqqk F6 -
   UNSHIFTED     x  GOLD  xTHIS MSGx FNDNXT x  DEL L x F7  -
 ^E -EOL         x        x  HELP  x  FIND  x  UND L x F8  -
 ^F -UNMAP INFO  x  PF1   x  PF2   x  PF3   x  PF4   x F9  -
 ^H -BOL         tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu F10 -EXIT
 ^K -DEFINE KEY  x  PAGE  x  SECT  x APPEND x  DEL W x F11 -TOGGLE FWD/REV
 ^L -GO TO LINE# x COMMANDx  FILL  x REPLACEx  UND W x F12 -
 ^P -PREV. EOL   x   7    x   8    x   9    x   -    x F13 -DELETE WORD
 ^V -QUOTE       tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu F14 -TOGGLE INS/OVR
 ^W -REFRESH     x ADVANCEx BACKUP x  CUT   x  DEL C x HELP-HELP KEYPAD / TPU
 ^Z -EXIT        x BOTTOM x  TOP   x PASTE  x  UND C x DO  -COMMAND / TPU
    SHIFTED      x   4    x   5    x   6    x   ,    x F17 -ERASE TO BOL / BOB
 ^D -DCL WINDOW  tqqqqqqqqnqqqqqqqqnqqqqqqqqnqqqqqqqqu F18 -ERASE TO EOL / EOB
 ^I -INS. PG MKS xWORD FWDx  EOL   xWORD REVx  SUBS  x F19 -TOGL BUFR / SPLT SCR
 ^L -SHOW LINE#  xCHG CASEx DEL EOLx SPECINSx        x F20 -QUIT
 ^R -REM. PG MKS x   1    x   2    x   3    x        x SHIFT A - APPEND FILE
 ^W -CHG WIDTH   tqqqqqqqqvqqqqqqqqnqqqqqqqqu        x SHIFT B - CHG BUFFER  
 ^Z -FILE EXIT   x       LINE      x SELECT x        x SHIFT G - GET FILE    
 <  -SHFT L 25   x     OPEN LINE   x  RESET x        x SHIFT I - INCLUDE FILE
 >  -SHFT R 25   x        0        x   .    x ENTER  x SHIFT W - WRITE FILE      
                 mqqqqqqqqqqqqqqqqqvqqqqqqqqvqqqqqqqqj SHIFT X - EXIT            (B
1 VAXTPU
 VAXTPU is a new Text Processing Utility for VAX/VMS Version V4.0 and
 later.  The utility consists of a procedural language, a compiler, an
 interpreter, and two editing interfaces written in VAXTPU.  The
 Extensible VAX Editor (EVE) and the VAXTPU EDT Keypad Emulator are
 examples of interfaces written in the VAXTPU programming language and
 layered on the utility.  You have access to the VAXTPU interpreter and
 compiler from both EVE and the EDT Keypad Emulator.  While using one of
 the editing interfaces, you can write procedures in VAXTPU to customize
 or extend the interface you are using.

 This HELP file contains information about the VAXTPU language, such as
 descriptions of the built-in procedures, a list of language statements,
 and so on.  For more information on VAXTPU, see the VAX Text Processing
 Utility Reference Manual.  For sample VAXTPU programs, examine the
 source code files that create the two interfaces:
 SYS$LIBRARY:EVESECINI.TPU and SYS$LIBRARY:EDTSECINI.TPU.
2 BUILT-INS
 The VAXTPU language provides 93 built-in procedures that you can use
 alone or in combination with language statements and other built-ins.
 Following is a list of the built-ins grouped according to the function
 they perform.  If you want more information on an individual built-in,
 enter the name of the built-in on the prompt line (you can abbreviate
 the name to its unique form).  The following conventions are used in
 the descriptions of the built-ins:

 {|}         Choose one of the enclosed items; for example, {a | b} means 
             to choose either "a" OR "b".  
 [ ]         Indicates an optional item. The CASE statement is an exception
             to this; the square bracket is required for case-selectors.
 buffer :=   An entry on the LHS of an assignment statement indicates that 
             the built-in procedure returns a value of that type.  





 Screen Layout
 -------------
    ADJUST_WINDOW     CREATE_WINDOW     MAP            REFRESH 
    SHIFT             UNMAP             UPDATE 


 Cursor Movement
 ---------------
    CURSOR_HORIZONTAL     CURSOR_VERTICAL     SCROLL


 Editing Position Modification
 -----------------------------
    MARK     MOVE_HORIZONTAL     MOVE_VERTICAL     POSITION




 Text Manipulation
 -----------------  
    APPEND_LINE       BEGINNING_OF     CHANGE_CASE     COPY_TEXT
    CREATE_BUFFER     CREATE_RANGE     EDIT            END_OF
    ERASE             ERASE_CHARACTER  ERASE_LINE      FILE_PARSE
    FILE_SEARCH       FILL             MOVE_TEXT       READ_FILE       
    SEARCH            SELECT           SELECT_RANGE    SPLIT_LINE      
    TRANSLATE         WRITE_FILE


 Pattern Matching
 ----------------
    ANCHOR    ANY     ARB     LINE_BEGIN    LINE_END     MATCH
    NOTANY    REMAIN  SCAN    SCANL         SPAN         SPANL





 Editing Context Information
 ---------------------------
    CURRENT_BUFFER        CURRENT_CHARACTER     CURRENT_COLUMN
    CURRENT_DIRECTION     CURRENT_LINE          CURRENT_OFFSET
    CURRENT_ROW           CURRENT_WINDOW        GET_INFO
    SET                   SHOW


 Defining Keys
 -------------
    DEFINE_KEY     KEY_NAME    LAST_KEY     LOOKUP_KEY     UNDEFINE_KEY


 Multiple Processing
 -------------------
    ATTACH     CREATE_PROCESS       SEND        SEND_EOF     SPAWN





 Program and Procedure Execution
 -------------------------------
    COMPILE     EXECUTE        EXIT             QUIT         SAVE


 Miscellaneous
 -------------
    ASCII            CALL_USER      EXPAND_NAME      DELETE          FAO
    HELP_TEXT        INDEX          INT              JOURNAL_CLOSE
    JOURNAL_OPEN     LEARN_BEGIN    LEARN_END        LENGTH
    MESSAGE          READ_CHAR      READ_KEY         READ_LINE       STR
    SUBSTR





3 ADJUST_WINDOW
 Changes the size and/or screen location of a window.

 Format
    ADJUST_WINDOW (window, integer1, integer2)

 window   The screen region whose size or location you want to change. 
          The window that you specify becomes the current window.
 integer1 The signed (+/-) integer value to be added to the screen line
          number at the top of the window.
 integer2 The signed (+/-) integer value to be added to the screen line 
          number at the bottom of the window. 
4 Example
 ADJUST_WINDOW (main_window, -5, +5)

 This statement enlarges main_window by adding 5 lines to the top
 of the window and 5 lines to the bottom of the window.  If the
 screen line number at the top of the window is 11, this statement
 changes the screen line number to 6.  (If you use this statement
 when the top line of the window is number 1, you will get a
 warning message, and the top of the window will remain at screen
 line number 1.)
4 Side Effects
 This built-in causes the "original_top" and "original_bottom"
 lines defined when the window is created to be permanently
 modified, making the changed line numbers the new "original" value
 of the window.  Part or all of the window may be redisplayed or
 scrolled so that the current position at the time of the
 adjustment remains visible.
3 ANCHOR
 Disables seek search and incremental search modes of seaching for
 patterns and ties a search for a matching string to the current
 character position.  By default, when the SEARCH built-in fails to find
 a matching pattern, the character position is moved one position and
 the search continues until a match is found or until an end of search
 condition is reached.  ANCHOR disables this continuous mode of
 searching (which can be either a seek search, the default, or an
 incremental search) and applies the pattern only one time.

 Format
   ANCHOR

4 Example
 pat1 := ANCHOR & 'a' & '123'

 This assignment statement creates a pattern that is made up of the
 character a and the digits 1, 2, and 3.  When pat1 is used as a
 parameter for SEARCH, the search will not move from character to
 character looking for this pattern.  The search will fail if the
 pattern is not found starting at the current character position.
3 ANY
 Returns a pattern that will match any single character in the string
 used as a parameter.

 Format
    pattern := ANY (string)

 string   A string that contains the characters you want to match. 
4 Example
 pat1 := ANY ('hijkl')

 This assignment statement creates a pattern that will match any
 one of the characters 'hijkl'.
3 APPEND_LINE
 Moves the current line to the end of the previous line.

 Format
    APPEND_LINE
4 Example
 The following procedure causes the character preceding the cursor
 to be deleted.  If you are at the beginning of a line, the current
 line will be appended to the previous line.

 PROCEDURE user_delete_char
    IF     CURRENT_COLUMN = 1
     THEN   
         APPEND_LINE;
     ELSE
         ERASE_CHARACTER (-1);
     ENDIF;
 ENDPROCEDURE;
3 ARB
 The pattern returned by ARB will match an arbitrary sequence of
 characters that is of the length you specify.  The sequence of
 characters starts at the current character position.

 Format
    pattern := ARB (integer)

 integer   The number of characters in the pattern.
4 Example
 pat1 := ARB (5)

 This assignment statement creates a pattern that matches the next
 5 characters starting at the current character position.  The
 characters themselves are arbitrary; it is the number of
 characters that is important for a pattern created with ARB.
3 ASCII
 Returns a string of length 1, that represents the character of the DEC
 Multinational Character Set that corresponds to the integer that you
 provide.

 Format
    string := ASCII (integer)

 integer  The decimal value of a character in the DEC MCS.
4 Example
 my_character := ASCII(12)

 This assignment statement places the value of the FORM FEED
 character in the variable my_character.
3 ATTACH
 Deassigns the terminal and switches control from the current process to
 a previously created process.

 Format
    ATTACH [({integer|string})]

 integer    The process identification of the process to which 
            terminal control will be switched. Use decimal 
            numbers.
 string     A process name.

4 Example
 ATTACH ('JONES_2')

 This command changes the terminal's control to the process
 JONES_2.
3 BEGINNING_OF
 Returns a marker that points to the first position of a buffer or a
 range.

 Format
    marker := BEGINNING_OF ({buffer|range})

 buffer   The buffer whose beginning you want to mark.
 range    The range whose beginning you want to mark. 
4 Example
 beg_main := BEGINNING_OF (main_buffer)

 This assignment statement stores the marker at the beginning of
 the main_buffer in the variable beg_main.
3 CALL_USER
 Allows you to call a program written in another language from within
 VAXTPU.  The CALL_USER parameters are passed to the external routine
 exactly as you enter them.  VAXTPU does not process the parameters in
 any way.  See the VAX Text Processing Reference Manual for an example
 of how to use CALL_USER to call a BASIC program to do floating point
 arithmetic.

 Format
    string2 := CALL_USER (integer, string1)

 integer  An integer that is passed to the external program by reference.
 string1  A string that is passed to the external program by descriptor.
3 CHANGE_CASE
 Modifies the case of all the alphabetic characters in the specified
 unit of text according to the keyword that you supply.

 Format
    CHANGE_CASE ({buffer|range|string}, keyword)

 buffer   The buffer in which the case will be changed.
 range    The range in which the case will be changed.
 string   The string in which the case will be changed.
 keyword  Specifies the case. Valid keywords are
          LOWER, UPPER, or INVERT.
4 Example
 CHANGE_CASE (main_buffer, UPPER)

 This command makes all the characters in the main buffer
 uppercase.  If you enter this command on the VAXTPU command line
 and if the main_buffer is associated with a visible window, you
 will see the command take effect immediately.
3 COMPILE
 Converts the statements in a string, a range, or a buffer into an
 internal compiled format.  COMPILE optionally returns a program.  Use
 the SET (INFORMATIONAL, ON) statement before a compile in order to see
 the compiler error messages.

 Format
    [program := ] COMPILE ({string|range|buffer})

 string   A string that is a  VAXTPU procedure or statement.
 range    A range that contains VAXTPU procedures and/or statements.            
 buffer   A buffer that contains VAXTPU procedures and/or statements.  

4 Example
 user_program := COMPILE (main_buffer)

 This command compiles the contents of the main buffer.  If the
 buffer contains executable statements, VAXTPU returns a program
 that stores these executable commands.  If the buffer contains
 procedure definitions, VAXTPU compiles the procedures and lists
 them in the procedure definition table so that you can call them
 later.
3 COPY_TEXT
 Makes a copy of the text you specify and places it in the current
 buffer.  If the current buffer is in insert mode, the text you specify
 will be inserted before the current position in the current buffer.  If
 the current buffer is in overstrike mode, the text you specify will
 replace text starting at the current position and continuing for the
 length of the string, range, or buffer.

 Format
    COPY_TEXT ({string|range|buffer})

 string   The text that you want to copy.
 range    A range that contains the text you want to copy. 
 buffer   A buffer that contains the text you want to copy. 
4 Examples
 COPY_TEXT ('Perseus is near Andromeda.')

 When the buffer is set to insert mode, this command causes the
 string 'Perseus is near Andromeda.' to be placed in front of the
 current position in the current buffer.


 COPY_TEXT (ASCII (10))

 When the buffer is set to overstrike mode, this command causes the
 ASCII character for line feed to replace the current character in
 the current buffer.
3 CREATE_BUFFER
 Defines a new work space for editing text.  You can create an empty
 buffer or you can associate an input file name with the buffer.
 CREATE_BUFFER optionally returns a buffer.  When you want to use a
 buffer as a parameter for a VAXTPU built-in procedure, use the buffer
 variable.

 Format
    [buffer :=] CREATE_BUFFER (string1 [,string2])

 string1  The name of the buffer you want to create. 
 string2  The file specification of an input file for the buffer.
4 Example
 nb := create_buffer ('new_buffer', 'login.com')

 This command creates a buffer called new_buffer and stores a
 pointer to the buffer in the variable nb.  The file specification,
 'login.com', is the input file for new_buffer.
3 CREATE_PROCESS
 Starts a subprocess and associates a buffer with it.  You can
 optionally specify an initial command to send to the subprocess.
 CREATE_PROCESS returns a process.

 Format
    process := CREATE_PROCESS (buffer [,string])

 buffer   The buffer in which to store output from the subprocess.
 string   The first command to send to the subprocess.  
4 Example
 my_mail_process := CREATE_PROCESS (second_buffer, '$ mail')

 This assignment statement creates a subprocess and specifies
 second_buffer as the buffer in which the output from the
 subprocess will be stored.  It also sends the DCL MAIL command as
 the first command to be executed.
3 CREATE_RANGE
 Returns a range that includes two markers and all the characters
 between them.  You must specify how the characters in the range are to
 be displayed when they are visible on the screen (no special video,
 reverse video, bolded, blinking, or underlined).

 Format
    range := CREATE_RANGE (marker1, marker2, keyword)

 marker1  The character position at which the range begins.
 marker2  The character position at which the range ends. 
 keyword  Video attribute of the range. Valid keywords are
          NONE, UNDERLINE, BOLD, BLINK, or REVERSE.
4 Example
 my_range := CREATE_RANGE (first_marker, second_marker, BOLD)

 The assignment statement creates a range starting at first_marker
 and ending at second_marker.  When this range is visible on the
 screen, the characters in the range will be underlined.
3 CREATE_WINDOW
 Defines a screen area called a window.  You must specify the screen
 line number at which the window starts and the length of the window.
 CREATE_WINDOW optionally returns a window.

 Format
    [window :=] CREATE_WINDOW (integer1, integer2, keyword)

 integer1 The screen line number at which the window starts. 
 integer2 The number of rows in the window. 
 keyword  The state of the status line. Valid keywords are
          ON or OFF. 
4 Example
 new_window := CREATE_WINDOW (11, 10, ON)

 This assignment statement creates a window that starts at screen
 line number 11 and is 10 rows long and assigns it to the variable
 new_window.  A status line will be displayed as the last row of
 the window.  To make this window visible, you must associate an
 existing buffer with it and map the window to the screen with the
 following command:

 MAP (new_window, buffer_variable)
3 CURRENT_BUFFER
 Returns the buffer in which you are currently positioned.

 Format
    buffer := CURRENT_BUFFER
4 Examples
 my_cur_buf := CURRENT_BUFFER

 This assignment statement stores a pointer to the current buffer
 in the variable my_cur_buf.


 SHOW (CURRENT_BUFFER)

 This command returns the buffer in which you are currently
 positioned and uses that buffer as the parameter for the SHOW
 built-in.
3 CURRENT_CHARACTER
 Returns a string one character long for the current character in the
 current buffer.

 Format
    string := CURRENT_CHARACTER
4 Examples
 my_cur_char := CURRENT_CHARACTER

 This assignment statement stores the string that represents the
 current character in the variable my_cur_char.


 MESSAGE (CURRENT_CHARACTER)

 This statement returns the string that represents the current
 character and uses this string as the parameter for the MESSAGE
 built-in.
3 CURRENT_COLUMN
 Returns an integer that identifies the current column of the cursor on
 the screen.  Note that this will not reflect any movement of the
 current position that has occurred within a procedure in which this is
 used unless the built-in UPDATE (window) has preceded it.

 Format
    integer := CURRENT_COLUMN
4 Examples
 my_cur_col := CURRENT_COLUMN

 This assignment statement stores the column position of the cursor
 in the variable my_cur_col.


 MESSAGE (STR (CURRENT_COLUMN))

 This statement combines three VAXTPU built-ins.  CURRENT_COLUMN
 returns the integer that is the current column position, STR
 converts the integer to a string, and MESSAGE writes this string
 to the message buffer.
3 CURRENT_DIRECTION
 Returns a keyword (FORWARD or REVERSE) that indicates the current
 direction of the current buffer.

 Format
    keyword := CURRENT_DIRECTION
4 Example
 my_cur_dir := CURRENT_DIRECTION

 This assignment statement stores in the variable my_cur_dir the
 keyword that indicates whether the current direction setting for
 the buffer is FORWARD or REVERSE.
3 CURRENT_LINE
 Returns a string that represents the current line.  The current line is
 the line on which the current character position is located.

 Format
    string := CURRENT_LINE
4 Example
 my_cur_lin := CURRENT_LINE

 This assignment statement stores in the variable my_cur_lin the
 string that represents the current line.  The current line is the
 line in the current buffer that contains the current character
 position.
3 CURRENT_OFFSET
 Returns an integer for the offset of the current character position
 within the current line.  The leftmost character position is offset 0.

 Format
    integer := CURRENT_OFFSET
4 Example
 my_cur_off := CURRENT_OFFSET

 This assignment statement stores the integer that is the offset
 position of the current character in the variable my_cur_off.
3 CURRENT_ROW
 Returns an integer that is the screen line on which the cursor is
 located.  Note that this will not reflect any movement of the current
 position which has occurred within a procedure in which this is used
 unless the built-in UPDATE (window) has preceded it.

 Format
    integer := CURRENT_ROW
4 Example
 my_cur_row := CURRENT_ROW

 This assignment statement stores in the variable my_cur_row the
 integer that is the screen line number on which the cursor is
 located.
3 CURRENT_WINDOW
 Returns the window in which the cursor is visible.

 Format
    window := CURRENT_WINDOW
4 Example
 my_cur_win := CURRENT_WINDOW

 This assignment statement stores the window that holds the cursor
 in the variable my_cur_win.
3 CURSOR_HORIZONTAL
 Moves the cursor position across the screen by the number of screen
 columns that you specify.

 Format
    CURSOR_HORIZONTAL (integer)
4 Example
 CURSOR_HORIZONTAL (1)

 This command moves the cursor position one screen column to the
 right.
3 CURSOR_VERTICAL
 Moves the cursor position up or down the screen by the number of screen
 lines that you specify.

 Format
    CURSOR_VERTICAL (integer)
4 Example
 CURSOR_VERTICAL (5)

 This command moves the cursor position five lines toward the
 bottom of the screen.
3 DEFINE_KEY
 Associates the executable VAXTPU code specified by the first parameter
 with the key specified by the second parameter.  The value for the
 second parameter must be a keyword for a valid key.  If the optional
 parameter string2 is used, it will be associated with the key
 definition as a comment that can be retrieved with the LOOK_UP key
 built-in.

 Format
 DEFINE_KEY ({string1|buffer|range|program|learn}, keyword [,string2])
4 Examples
 DEFINE_KEY ('POSITION (main_window)', CTRL_A_KEY)

 This statement associates the VAXTPU statement POSITION
 (main_window) with the key combination CTRL/A.  Note that you must
 use quotes around the VAXTPU statement.


 DEFINE_KEY (main_buffer, KEY_NAME (PF4, SHIFT_KEY))

 This statement causes VAXTPU to compile the main_buffer
 (containing VAXTPU statements).  If there are no errors in the
 compilation, VAXTPU binds the executable code to the combination
 of the editor's shift key (PF1 by default) and PF4 on the keypad.


 DEFINE_KEY ('COPY_TEXT ("Extensible")', KEY_NAME ('z', SHIFT_KEY))

 This statement causes VAXTPU to make a copy of the word
 "Extensible" at the current character location in the current
 buffer, when you press the key combination PF1 (VAXTPU's default
 shift key) and z.  Notice that you must alternate the quote
 characters that are used as delimiters for the first parameter.
 Also notice that you must quote the keyboard character that you
 use in combination with the editor's shift key.
3 DELETE
 Removes VAXTPU structures from your editing context.  When you delete a
 structure, (for example, a range), all variables that refer to that
 structure are reset to null.  If the deleted structure had any
 associated resources, these resources are returned to the editor.

 Format
    DELETE ({buffer|marker|process|program|range|window})
4 Resources_returned
 buffer  - memory for buffer control structure, pages for storing 
           text, memory for associated ranges and markers

 marker  - memory for marker control structure

 process - memory for process control structure, subprocess

 program - memory for program control structure, memory for
           program code

 range   - memory for range control structure. (The text in a
           range is not owned by the range, but by the buffer.)

 window  - memory for window control structure and associated
           record history
4 Example
 DELETE (main_buffer)

 This statement deletes the main_buffer and any associated
 resources that VAXTPU allocated for the main_buffer.  As a result
 of this statement, SHOW (BUFFERS) will not list main_buffer as one
 of the buffers in your editing context.
3 EDIT
 Modifies a string according to the keywords you specify.  EDIT is
 similar to the DCL Lexical Function F$EDIT; however, there are some
 differences, which are noted in the VAX Text Processing Utility
 Reference Manual.

 Format
    EDIT (string, keyword1[,...] [,keyword2]) 

 string   The string that you want to modify.
 keyword1 The valid keywords are TRIM, TRIM_LEADING, TRIM_TRAILING,
          UPPER, LOWER, INVERT, COMPRESS, or COLLAPSE.
 keyword2 You can use this optional keyword to specify whether the 
          VAXTPU quote characters are used as quote characters or
          as regular text. The valid keywords are ON or OFF.
4 Example

 The following procedure shows a generalized way of changing any
 input string to lower case.  The string with the changed case is
 written to the message area.

 PROCEDURE user_edit_string (input_string)
     is := input_string;
     EDIT (is, LOWER);
     MESSAGE (is);
 ENDPROCEDURE
3 END_OF
 Returns a marker that points to the last character position in a buffer
 or a range.

 Format
    marker := END_OF  ({Buffer|Range})
4 Example
 the_end := END_OF (main_buffer)

 This assignment statement stores the last position in the
 main_buffer in the variable the_end.
3 ERASE
 Removes the contents of the range or buffer that you specify.

 Format
    ERASE ({range|buffer})



4 Example
 ERASE (main_buffer)

 This command causes the contents of main_buffer to be removed.
 You still have a buffer named main_buffer in which you can
 manipulate text.






3 ERASE_CHARACTER
 Deletes the number of characters you specify and optionally returns a
 string that represents the characters you deleted.

 Format
    [string] :=  ERASE_CHARACTER (integer) 

 integer  The number of characters you want to remove.

4 Example
 take_out_chars := ERASE_CHARACTER (10)

 This assignment statement removes the current character and the 9
 characters following it and stores them in the variable
 take_out_chars.




3 ERASE_LINE
 Removes the current line from the current buffer.  ERASE_LINE
 optionally returns a string.

 Format
    [string] := ERASE_LINE  
4 Example
 take_out_line := ERASE_LINE

 This assignment statement removes the current line in the current
 buffer and stores the string of characters representing that line
 in the variable name take_out_line.
3 EXECUTE
 This built-in does one of the following:

  o  Executes programs that you have previously compiled.

  o  Compiles and then executes any executable statements in a buffer, a
     range, or a string.

  o  Replays or executes a learn sequence.

 Format
    EXECUTE ({program|string|buffer|learn|range})

4 Example
 EXECUTE (main_buffer)

 This command first compiles the contents of main_buffer and then
 executes any executable statements.  If you have any text in the
 main_buffer other than VAXTPU statements, you will get an error
 message.
3 EXIT
 Terminates the editing session and writes out any modified buffers that
 have associated files.  VAXTPU queries you for file names for any
 buffers that you have modified that do not already have an associated
 file.  Buffers that have the NO_WRITE attribute will not be written
 out.

 Format
    EXIT
3 EXPAND_NAME
 Returns a string that contains the name or names of any VAXTPU
 variables, keywords, or procedures (built-in or user-written) that
 begin with the string you specify.  VAXTPU searches its internal symbol
 tables to find a match, using your input string as the initial
 substring for the match.

 string2 :=  EXPAND_NAME (string1, keyword) 

 string1  The initial substring of a VAXTPU name.
 keyword  The type of VAXTPU name you want to match. Valid keywords are:
          
          ALL - Matches all names.
          PROCEDURES - Matches only procedure names.
          KEYWORDS - Matches only keyword names.
          VARIABLES - Matches only variable names.
4 Example
 full_name := EXPAND_NAME ('CREATE', ALL)

 This assignment statement returns the following VAXTPU words in
 the string full_name:

 CREATE_BUFFER CREATE_PROCESS CREATE_RANGE CREATE_WINDOW
3 FAO
 Invokes the Formatted ASCII Output (FAO) system service to convert a
 control string to a formatted ASCII output string.  By specifying
 arguments for FAO directives in the control string, you can control the
 processing performed by the FAO system service.  The FAO built-in
 returns a string that contains the formatted ASCII output.

 Format
    string2 := FAO (string1 [, FAO Parameters]) 

 string1         A string that consists of the fixed text of the output 
                 string and FAO directives. 
 FAO parameters  In general, these parameters correspond to the FAO 
                 directives in string1. See the VAX/VMS System Services 
                 Reference Manual for information.
4 Example
 date_and_time := FAO ("!%D",0)

 This assignment statement stores the current date and time in the
 variable name date_and_time.


 The following procedure uses the FAO directive !SL in a control
 string to convert the number equated to the variable count to a
 string.  The converted string is stored in the variable "report"
 and then is written to the message area.

 PROCEDURE user_fao_conversion
     count := 57;
     report := FAO ("number of forms = !SL", count);
     MESSAGE (report);
 ENDPROCEDURE
3 FILE_PARSE
 Performs the equivalent of the DCL F$PARSE lexical function.  That is,
 it calls the RMS service $PARSE to parse a file specification and to
 return either an expanded file specification or the file specification
 field that you request.

 FILE_PARSE returns a string that contains the expanded file
 specification or the field you specify.  If you do not provide a
 complete file specification, FILE_PARSE supplies defaults in the return
 string.  If an error occurs during the parse, FILE_PARSE returns a null
 string.

 Format
   string := FILE_PARSE (string1, [string2, [string3, [keyword]]]) 

 string1  The file specification to be parsed. 
 string2  A default file specification. 
 string3  A related file specification. 
 keyword  A field in a VMS file specification. Valid keywords are
          NODE, DEVICE, DIRECTORY, NAME, TYPE, or VERSION .
4 Example
 spec := FILE_PARSE ('program.pas', '[abbott]')

 This assignment statement calls RMS to parse and return a full
 file specification for the file program.pas.  The second parameter
 provides the name of the directory in which the file can be found.
3 FILE_SEARCH
 Calls the RMS service $SEARCH to search a directory file and return the
 full file specification for a file that you name.  If the file is not
 found, FILE_SEARCH returns a null string.

 Format
    string2 := FILE_SEARCH (string1)

 string1  The file name for which you want a full file specification.
4 Example
 fil := FILE_SEARCH ('SYS$SYSTEM:*.EXE')

 Each time this assignment statement is executed, it returns a
 string containing the resulting file specification of an EXE file
 in SYS$SYSTEM.  Since no version number is specified, only the
 latest version is returned.  When you get a null string, it means
 there are no more EXE files in the directory.
3 FILL
 Reformats the text within a buffer or a range, using integer1 and
 integer2 as left and right margins respectively.  When wrapping words,
 FILL uses the string you specify as a list of word separators.

 If you do not specify margins, the margin settings of the buffer are
 used.

 Format
    FILL ({buffer|range}, string [,integer1 [,integer2]])

 buffer      The buffer whose text you want to fill.
 range       The range whose text you want to fill.
 string      The characters you want to use as word separators.
 integer1    The value for the left margin.
 integer2    The value for the right margin.
4 Examples
 FILL (CURRENT_BUFFER, ' ')

 When entering this statement, press the space bar between the
 quote characters to cause the space character to be used as a word
 separator.  This statement reformats the text in the current
 buffer so that the lines are approximately the same length, the
 space character is used as a word separator.


 FILL (my_buffer, ASCII(13) + ASCII(10), 5, 65)

 This statement fills the buffer my_buffer using the carriage
 return and line feed characters as word separators, and spacing
 the text between a left margin of 5 and a right margin of 65.
3 GET_INFO
 Provides information about the current status of your editing context.
 Use parameter1 to specify the general area about which you want
 information (COMMAND_LINE, SCREEN, any variable name, and so on) and
 use the VAXTPU string that identifies the specific information you want
 ("journal", "width", "type", and so on) as parameter2.

 Format
    return_value := GET_INFO (parameter1, parameter2)

 parameter1  Either a variable for a VAXTPU data type, or a keyword
             such as INTEGER or SYSTEM.  GET_INFO provides information 
             about the general area specified as parameter1.  See 
             Tables 4-1 and 4-2 in the VAX Text Processing Reference 
             Manual for a list of valid parameters.

 parameter2  A VAXTPU string constant.  This string indicates the kind
             of information requested about the item in parameter1.
             See Tables 4-1 and 4-2 in the VAX Text Processing Reference
             Manual for a list of valid parameters.
4 Any_variable
  Parameter 2       | Return Value  (Parameter 1 is a variable)
 -------------------+----------------------------------------------+
  "type"            | Keyword     - Data type of item
 -------------------+----------------------------------------------+

4 A_buffer_variable
  Parameter 2       | Return Value  (Parameter 1 is a buffer variable)
 -------------------+------------------------------------------------+
  "first_range"     | Range    - First range in VAXTPU's internal list
                    | 0          if none       
  "next_range"      | Range    - Next range in VAXTPU's internal list
                    | 0        - if no more    
  "first_marker"    | Marker   - First marker in VAXTPU's internal list
                    | 0        - if none      
  "next_marker"     | Marker   - Next marker in VAXTPU's internal list
                    | 0        - if no more
 -------------------+------------------------------------------------+

  Parameter 2       | Return Value  (Parameter 1 is a buffer variable)
 -------------------+------------------------------------------------+
  "character"       | String   - Character   at   the    current 
                    |            character position              
  "file_name"       | String   - Name  of  file  associated with
                    |            the buffer when created 
  "map_count"       | Integer  - Number of windows associated with 
                    |            the buffer      
  "modified"        | (1 or 0) - Indicates whether the buffer has 
                    |            been modified    
  "name"            | String   - Name given buffer when created
  "offset"          | Integer  - Offset  of  current   character 
                    |            position                        
  "offset_column"   | Integer  - Screen  column that the current
                    |            character position would occupy 
                    |            if on the screen, unshifted
  "record_count"    | Integer  - Number of lines in the buffer 
  "record_size"     | Integer  - Maximum length for lines in the
                    |            buffer                         
 -------------------+------------------------------------------------+
  The following items are established or changed using the
  SET built-in.

  Parameter 2       | Return Value  (Parameter 1 is a buffer variable)
 -------------------+------------------------------------------------+
  "direction"       | Keyword  - FORWARD or REVERSE              
  "eob_text"        | String   - String representing the end-of-buffer 
                    |            text        
  "left_margin"     | Integer  - Current left margin setting     
  "right_margin"    | Integer  - Current right margin setting  
  "max_lines"       | Integer  - Maximum number of records (lines) in 
                    |            the buffer
  "mode"            | Keyword  - INSERT or OVERSTRIKE            
  "no_write"        | (1 or 0) - Indicates  whether  the  buffer
                    |            (if  modified) should be output
                    |            to a file upon exit             
  "output_file"     | String   - Name of explicitly SET output file 
                    | 0          if none               
 -------------------+------------------------------------------------+

  The following items are established or changed using the
  SET built-in.

  Parameter 2       | Return Value  (Parameter 1 is a buffer variable)
 -------------------+------------------------------------------------+
  "permanent"       | (1 or 0) - Indicates whether the buffer is
                    |            permanent  or  if  it  can   be
                    |            deleted           
  "system"          | (1 or 0) - Indicates whether the buffer is
                    |            a system buffer                 
  "tab_stops"       | String   - Returns a string of the tab stop  
                    |   or       values separated by spaces; or an
                    | Integer    integer that is the interval between
                    |            tab stops
 -------------------+------------------------------------------------+
 A return integer value of (1 or 0) indicates True or False 
 respectively.

4 A_marker_variable
  Parameter 2       | Return Value  (Parameter 1 is a marker variable)
 -------------------+------------------------------------------------+
  "buffer"          | Buffer   - Buffer in which the  marker  is
                    |            located                         
  "offset"          | Integer  - Offset of the marker  from  the 
                    |            beginning of the line           
  "offset_column"   | Integer  - Screen  column  that the marker 
                    |            would  occupy if it were on the 
                    |            screen, unshifted
  "video"           | Keyword  - Video attribute of the marker  
4 A_range_variable
  Parameter 2       | Return Value (Parameter 1 is a range variable)
 -------------------+------------------------------------------------+
  "buffer"          | Buffer   - The buffer in which  the  range 
                    |            is located                      
  "video"           | Keyword  - Video attribute of the range    
 -------------------+------------------------------------------------+

4 A_window_variable
  Parameter 2       | Return Value (Parameter 1 is a window variable)
 -------------------+------------------------------------------------+
  "visible_top"     | Integer  - Screen   line   number  of  the
                    |            visible top of the window       
  "visible_bottom"  | Integer  - Screen   line   number  of  the
                    |            visible bottom of the window  
                    |            (doesn't include the status line)
  "visible_length"  | Integer  - Visible  length  of  the window
                    |            (includes the status line)     
 -------------------+------------------------------------------------+


  Parameter 2       | Return Value (Parameter 1 is a window variable)
 -------------------+------------------------------------------------+
  "visible"         | (1 or 0) - Indicates  whether  window   is
                    |            mapped to the screen and is not
                    |            occluded                        
  "beyond_eol"      | (1 or 0) - Indicates whether the cursor is
                    |            beyond the end of  the  current
                    |            line                          
  "buffer"          | Buffer   - The  buffer associated with window
                    | 0          if none      
  "current_row"     | Integer  - Row in  which  the  cursor  was
                    |            most recently located           
  "current_column"  | Integer  - Column in which the cursor  was
                    |            most recently located          
  "next"            | Window   - Next window  in VAXTPU's internal list
                    | 0          if last
  "previous"        | Window   - Previous window in VAXTPU's
                    | 0          if first
 -------------------+------------------------------------------------+

  
  Parameter 2       | Return Value (Parameter 1 is a window variable)
 -------------------+------------------------------------------------+
  "original_bottom" | Integer  - Screen   line   number  of  the
                    |            bottom of the  window  when  it
                    |            was created (doesn't include the 
                    |            status line)
  "original_length" | Integer  - Number of lines in  the  window
                    |            (includes status line)       
  "original_top"    | Integer  - Screen line number of  the  top
                    |            of  the  window  when  it   was
                    |            created                        
  "shift_amount"    | Integer  - Number of columns the window is
                    |            shifted to the right or the left
 -------------------+------------------------------------------------+






  The following items are established or changed using the
  SET built-in.

  Parameter 2       | Return Value (Parameter 1 is a window variable)
 -------------------+------------------------------------------------+
  "pad"             | (1 or 0) - Indicates whether the window is
                    |            blank padded at the right     
  "scroll_amount"   | Integer  - Number of lines to scroll     
  "scroll_bottom"   | Integer  - Bottom of the scrolling area  -
                    |            this  is  an  offset  from  the
                    |            bottom screen line            
  "scroll_top"      | Integer  - Top of  the  scrolling  area  -
                    |            this  is an offset from the top
                    |            screen line                   
  "status_line"     | String   - Text of status line
                    | 0          if none 
 -------------------+------------------------------------------------+



  The following items are established or changed using the
  SET built-in.

  Parameter 2       | Return Value (Parameter 1 is a window variable)
 -------------------+------------------------------------------------+
  "status_video"    | Keyword  - If there is no video or only one
                    |            video  attribute for  the  window's
                    |            status line, the appropriate video
                    |            keyword (NONE, BLINK, BOLD, REVERSE,
                    |            or UNDERLINE) is returned;
                    | 1          if there are multiple video attributes
                    | 0          if there is no status line
  "no_video_status" | (1 or 0) - Indicates whether the video attribute
                    |            of the window's status line is NONE
  "blink_status"    | (1 or 0) - Indicates whether BLINK is one of the
                    |            video attributes of the status line
  "bold_status"     | (1 or 0) - Indicates  whether BOLD is one of the
                    |            video attributes of the status line
 -------------------+------------------------------------------------+

  The following items are established or changed using the
  SET built-in.

  Parameter 2       | Return Value (Parameter 1 is a window variable)
 -------------------+------------------------------------------------+
  "reverse_status"  | (1 or 0) - Indicates whether REVERSE is one of
                    |            the video attributes of the status
                    |            line
  "underline_status"| (1 or 0) - Indicates whether UNDERLINE is one of
                    |            the video attributes of the status
                    |            line  
  "text"            | Keyword  - Indicates  which  keyword   was
                    |            used with SET(TEXT,window,keyword)
  "width"           | Integer  - Width of the window           
  "video"           | Keyword  - If there is no video or only one video
                    |            attribute for the window, the single
                    |            video keyword (NONE, BLINK, BOLD, 
                    |            REVERSE, or UNDERLINE)is returned; 
                    | 0          if there are multiple video attributes
  "no_video"        | (1 or 0) - Indicates whether the video attribute
                    |            of the window is NONE
  "blink_video"     | (1 or 0) - Indicates whether BLINK is one of the
                    |            video attributes of the window
  "bold_video"      | (1 or 0) - Indicates whether BOLD is one of the
                    |            video attributes of the window
  "reverse_video"   | (1 or 0) - Indicates whether REVERSE is one of
                    |            the video attributes of the window
  "underline_video" | (1 or 0) - Indicates whether UNDERLINE is one of
                    |            the video attributes of the window
 -------------------+------------------------------------------------+

4 A_process_variable


  Parameter 2       | Return Value (Parameter 1 is a process variable)
 -------------------+------------------------------------------------+
 "pid"              | Integer    - Process identification number    
 -------------------+------------------------------------------------+

4 BUFFERS
  Parameter 2       | Return Value (Parameter 1 is keyword BUFFERS)
 -------------------+------------------------------------------------+
  "current"         | Buffer   - Current buffer                     
                    | 0          if none
  "first"           | Buffer   - First  buffer  in  VAXTPU's  internal 
                    |            list of buffers***                 
                    | 0          if none
  "last"            | Buffer   - Last buffer in VAXTPU's internal list 
                    |            of buffers***                      
                    | 0          if none
  "next"            | Buffer   - Next buffer in VAXTPU's internal list 
                    |            of buffers***                      
                    | 0          if at end of list
  "previous"        | Buffer   - Preceding buffer in VAXTPU's internal 
                    |            list of buffers***                 
                    | 0          if at beginning of list
 -------------------+------------------------------------------------+

 ***VAXTPU orders buffers according to the order in which they are 
 created; the first ones created are the first in the list. 

4 COMMAND_LINE
  Parameter 2       | Return Value (Parameter 1 is keyword COMMAND_LINE)
 -------------------+------------------------------------------------+
  "file_name"       | String   - File-spec used as a parameter when 
                    |            invoking VAXTPU                    
  "command"         | (1 or 0) - Indicates  whether  /COMMAND   was 
                    |            specified when invoking VAXTPU;
                    |            Returns 1 if defaulted to /COMMAND
  "command_file"    | String   - File-spec specified with /COMMAND=
  "create"          | (1 or 0) - Indicates  whether  /CREATE  was 
                    |            specified when invoking VAXTPU;
                    |            Returns 1 if defaulted to /CREATE
 -------------------+------------------------------------------------+
  Parameter 2       | Return Value (Parameter 1 is keyword COMMAND_LINE)
 -------------------+------------------------------------------------+
  "display"         | (1 or 0) - Indicates  whether  /DISPLAY   was
                    |            specified when invoking VAXTPU;
                    |            Returns 1 if defaulted to /DISPLAY
  "journal"         | (1 or 0) - Indicates  whether  /JOURNAL   was
                    |            specified when invoking VAXTPU;
                    |            Returns 1 if defaulted to /JOURNAL
  "journal_file"    | String   - File-spec specified with /JOURNAL=
  "output"          | (1 or 0) - Indicates  whether  /OUTPUT  was
                    |            specified when invoking VAXTPU;
                    |            Returns 1 if defaulted to /OUTPUT
  "output_file"     | String   - File-spec specified with /OUTPUT=
  "recover"         | (1 or 0) - Indicates  whether  /RECOVER   was
                    |            specified when invoking VAXTPU;
  "read_only"       | (1 or 0) - Indicates whether  /READ_ONLY  was
                    |            specified when invoking VAXTPU;
  "section"         | (1 or 0) - Indicates  whether /SECTION  was
                    |            specified when invoking VAXTPU;
                    |            Returns 1 if defaulted to /SECTION
  "section_file"    | String   - File-spec specified with /SECTION=
 -------------------+------------------------------------------------+

4 DEBUG
  Parameter 2       | Return Value      (Parameter 1 is keyword DEBUG)
 -------------------+------------------------------------------------+
  " local"          | Variable  - First local variable in the previous
                    |             procedure; specifies that "next" or
                    |             "previous" will refer to locals;
                    | 0           If no more local variables
  "parameter"       | Parameter - First parameter of the previous
                    |             procedure; specifies that "next"
                    |             and "previous" will refer to
                    |             parameters;
                    | 0           If no more local parameters
  "next"            | Parameter - Next parameter in parameter list
                    | Variable  - Next local variable as declared
                    | 0         - End of list has been reached
  "previous"        | Parameter - Previous parameter in parameter list
                    | Variable  - Previous local variable as declared
                    | 0         - Beginning of list has been reached
 -------------------+------------------------------------------------+

4 PROCESS
  Parameter 2       | Return Value    (Parameter 1 is keyword PROCESS)
 -------------------+------------------------------------------------+
  "first"           | Process  - First  process  in  VAXTPU's internal 
                    |            list of processes***               
                    | 0          if none
  "last"            | Process  - Last  process  in  VAXTPU's  internal 
                    |            list of processes***               
                    | 0          if none
  "next"            | Process  - Next in  VAXTPU's  internal  list  of 
                    |            processes***                       
                    | 0          if at end of the list
  "previous"        | Process  - Preceding   process    in    VAXTPU's 
                    |            internal list of processes***      
                    | 0          if at beginning of list
 -------------------+------------------------------------------------+

 ***VAXTPU  orders processes according to the order in which they are 
 created; the first ones created are the first in the list. 

4 SCREEN
  Parameter 2       | Return Value     (Parameter 1 is keyword SCREEN)
 -------------------+------------------------------------------------+
  "ansi_crt"        | (1 or 0) - Indicates  whether the terminal is 
                    |            an ANSI_CRT                        
  "current_column"  | Integer  - Column number of the current column
                    |            as of the most recent screen update
  "current_row"     | Integer  - Screen line number of the current row
                    |            as of the most recent screen update
  "dec_crt"         | (1 or 0) - Indicates  whether the terminal is 
                    |            a DEC_CRT                        
 -------------------+------------------------------------------------+

  Parameter 2       | Return Value     (Parameter 1 is keyword SCREEN)
 -------------------+------------------------------------------------+
  "dec_crt2"        | (1 or 0) - Indicates  whether the terminal is 
                    |            a DEC_CRT_2
  "edit_mode"       | (1 or 0) - Indicates  whether the terminal is 
                    |            set to edit mode                   
  "eightbit"        | (1 or 0) - Indicates  whether  the   terminal 
                    |            uses eightbit characters           
  "original_width"  | Integer  - Physical width of the screen when 
                    |            you invoked VAXTPU 
  "scroll"          | (1 or 0) - Indicates whether the terminal has 
                    |            scrolling regions, DEC_CRT         
  "visible_length"  | Integer  - Page length of the terminal        
  "vt100"           | (1 or 0) - Indicates  whether the terminal is 
                    |            in the VT100 series                
  "vt200"           | (1 or 0) - Indicates  whether the terminal is 
                    |            in  the VT200 series
  "vk100"           | (1 or 0) - Indicates  whether the terminal is 
                    |            a GIGI                             
  "width"           | Integer  - Current physical width of the screen       
 -------------------+------------------------------------------------+
  The following items are established or changed using the
  SET built-in.

  Parameter 2       | Return Value     (Parameter 1 is keyword SCREEN)
 -------------------+------------------------------------------------+
  "auto__repeat"    | (1 or 0) - Indicates whether auto_repeat 
                    |            feature is on
  "prompt_length"   | Integer  - Number of lines in the prompt area 
  "prompt_row"      | Integer  - Screen line number  at  which  the 
                    |            prompt area begins                 
  "screen_update"   | (1 or 0) - Indicates whether screen  updating 
                    |            is turned on                       
 -------------------+------------------------------------------------+
4 SYSTEM
  Parameter 2       | Return Value     (Parameter 1 is keyword SYSTEM)
 -------------------+------------------------------------------------+
  "display"         | (1 or 0) - Indicates   whether   there  is  a 
                    |            supported input device            
  "journal_file"    | String   - Name of the journal file           
  "section_file"    | String   - Name of section file used when VAXTPU 
                    |            was invoked                        
  "update"          | Integer  - Update number of this  version  of 
                    |            VAXTPU                                
  "version"         | Integer  - Version number of VAXTPU              
 -------------------+------------------------------------------------+

  The following items are established or changed using the
  SET built-in.

  Parameter 2       | Return Value     (Parameter 1 is keyword SYSTEM)
 -------------------+------------------------------------------------+
  "bell"            | Keyword  - ALL or BROADCAST indicating whether
                    |            SET (BELL) is ON for either;
                    | 0          if SET (BELL) is OFF
  "facility_name"   | String   - Current facility name              
  "informational"   | (1 or 0) - Indicates whether SET (INFORMATIONAL) 
                    |            is on
  "journaling_      | Integer  - The  number that indicates how 
   frequency"       |            frequently records are written to
                    |            the journal file
  "message_flags"   | Integer  - Current  value  of  messsage  flag 
                    |            setting if changed using SET built-in
  "success"         | (1 or 0) - Indicates whether SET (SUCCESS) is on
  "timed_message"   | String   - Text  that  VAXTPU  displays  at  one 
                    |            second intervals in the prompt area
4 WINDOWS
  Parameter 2       | Return Value    (Parameter 1 is keyword WINDOWS)
 -------------------+------------------------------------------------+
  "current"         | Window   - Current window on the screen;
                    | 0          if none
  "first"           | Window   - First  window  in  VAXTPU's  internal
                    |            list of windows***
                    | 0          if none
  "last"            | Window   - Last window in VAXTPU's internal list
                    |            of windows***                    
                    | 0          if none
  "next"            | Window   - Next window in VAXTPU's internal list
                    |            of windows***                     
                    | 0          if pointing at last window
  "previous"        | Window   - Preceding window in VAXTPU's internal
                    |            list of windows***               
                    | 0          if pointing at first window
 -------------------+------------------------------------------------+

 ***VAXTPU  orders  windows  according  to their "original top"
 line number. If multiple windows have  the same top line
 number, the most recently created window comes first in
 VAXTPU's list of windows. 

4 Examples
 my_buffer := GET_INFO (BUFFERS, "current");

 This assignment statement stores the pointer to the current buffer
 in the variable my_buffer.


 my_string := GET_INFO (my_buffer, "file_name");

 This assignment statement stores the name of the input file for
 my_buffer in the variable my_string.
3 HELP_TEXT
 Invokes the VMS HELP utility.  You must specify the help library that
 will be used for help information, the initial library topic, the
 prompting mode for the HELP utility, and the buffer to which the help
 information will be written.  If you enter only a file name, the HELP
 utility provides a default device (SYS$HELP:) and default file type
 (.HLB).

 Format
    HELP_TEXT (string1, string2, keyword, buffer)

 string1  The name of the help library to use.
 string2  The initial library topic. 
 keyword  Specify whether the prompting mode for the library is ON or OFF.
 buffer   The buffer to which the help information will be written.
4 Example
 HELP_TEXT ('tpuhelp', (READ_LINE ('Topic:  ')), OFF,
 second_buffer)

 This command prompts the user to provide the topic for the
 HELP utility.  The information on that topic that is in the
 tpuhelp library will be written to second_buffer.
3 INDEX
 Locates a character or a substring within a string and returns its
 location within the string.

 Format
    integer := INDEX (string1, string2)

 string1  A string within which you want to find a character 
          or a substring.
 string2  A character or a substring whose leftmost character 
          location you want to find within string1.

4 Example
 loc := INDEX ('1234567','67')

 This assignment statement stores an integer value of 6 in the
 variable loc, since the substring 67 is found starting at
 character position 6 within the string 1234567.
3 INT
 Converts a string that consists of numeric characters into an
 integer.  This built-in returns 0 if the string is not a number.

 Format
    integer := INT (string)

 string   A string that consists of numeric characters.
4 Example
 user_int := INT ('12345')

 This assignment statement converts the string "12345" into an
 integer value and stores it in the variable user_int.
3 JOURNAL_CLOSE
 Closes an open journal file (if one exists for your session) and
 saves the journal file.

 Format
    JOURNAL_CLOSE
3 JOURNAL_OPEN
 Opens a journal file and starts making a copy of your editing
 session by recording every keystroke and command that you execute.

 Format
    JOURNAL_OPEN (string)                             

 string   The name of the journal file that will be created for your 
          editing session. 
4 Example
 JOURNAL_OPEN ('test.fil')

 This statement causes VAXTPU to open a file named test.fil as
 the journal file for your editing session.  VAXTPU uses your
 current default device and directory to complete the file
 specification.
3 KEY_NAME
 Format
    keyword := KEY_NAME ({string|keyword} [,SHIFT_KEY])

 string     A string that is the value of a key from the keyboard.
 keyword    A VAXTPU keyname for a key.
 SHIFT_KEY  A keyword that refers to the VAXTPU shift key (PF1 by 
            default). Its use here indicates that the keyword returned 
            includes one or more shift keys.
4 Examples
 key1 := KEY_NAME ('Z')

 This assignment statement creates the keyname key1 for the
 keyboard key Z.


 key2 := KEY_NAME (KP5, SHIFT_KEY)

 This example uses KEY_NAME to create a keyname for a combination
 of keys.


 key3 := KEY_NAME (ASCII (10))

 This assignment statement creates the keyname key3 for the line
 feed control character.
3 LAST_KEY
 Returns a VAXTPU keyword for the last key you entered.  If you are
 replaying a learn sequence, it returns a keyword for the key that
 defines the learn sequence you replayed.

 Format
    keyword := LAST_KEY
4 Example
 keyz := last_key

 This assignment statement stores the keyword for the last key
 you typed in the variable name keyz.


 The following procedure prompts the user for input for key
 definitions:

 PROCEDURE user_define_key
    def := READ_LINE ('Definition: ');
    key := READ_LINE ('Press key to define.',1);
    IF LENGTH (key) > 0
       THEN key := KEY_NAME (key)
       ELSE key := LAST_KEY;
    ENDIF;
    DEFINE_KEY (def, key);
 ENDPROCEDURE
3 LEARN_BEGIN
 LEARN_BEGIN/LEARN_END

 These built-ins save all keystrokes typed between LEARN_BEGIN and
 LEARN_END.  LEARN_BEGIN starts saving all keystrokes that you
 type.  LEARN_END stops the "learn mode" of VAXTPU and returns a
 learn sequence that consists of all the keystrokes that you
 entered.

 Format
    LEARN_BEGIN (keyword)
                .
                .
                .
    learn := LEARN_END
3 LEARN_END
 LEARN_BEGIN/LEARN_END

 These built-ins save all keystrokes typed between LEARN_BEGIN and
 LEARN_END.  LEARN_BEGIN starts saving all keystrokes that you
 type.  LEARN_END stops the "learn mode" of VAXTPU and returns a
 learn sequence that consists of all the keystrokes that you
 entered.

 Format
    LEARN_BEGIN (keyword)
                .
                .
                .
    learn := LEARN_END
3 LENGTH
 Returns an integer that is the number of character positions in a
 string or a range.

 Format
    integer := LENGTH ({string|range})

 string   A string whose length you want to determine.
 range    A range whose length you want to determine.  
4 Example
 str_len := LENGTH ('Don Quixote')

 This assignment statement stores the number of characters in
 the string "Don Quixote" in the variable str_len.  In this
 example, the integer value is 11.


 user_how_long := LENGTH (my_range)

 This assignment statement stores the number of character
 positions (excluding line terminators) in my_range in the
 variable user_how_long.
3 LINE_BEGIN
 Returns a pattern that matches the beginning-of-line condition.

 Format
    pattern := LINE_BEGIN
4 Example
 The following procedure removes all runoff commands from a
 file by searching for a pattern that has a dot (.) at the
 beginning of a line and then removing the lines that match
 this condition.

 PROCEDURE user_remove_dsrlines
    LOCAL s1, pat1;

    pat1 := LINE_BEGIN & '.';
    LOOP
       s1 := SEARCH (pat1, FORWARD);
       EXITIF s1 = 0;
       POSITION (s1);
       ERASE_LINE;
    ENDLOOP
 ENDPROCEDURE
3 LINE_END
 Returns a pattern that matches the end-of-line condition.

 Format
    pattern := LINE_END
4 Example
 The following procedure moves the current character position
 to the end of the line, if you are not already at the end of
 the current line.

 PROCEDURE user_end_of_line
    eol_pattern := LINE_END;
    eol_range := SEARCH (eol_pattern, FORWARD);
    IF eol_range <> 0  
       THEN POSITION (eol_range);
    ENDIF;
 ENDPROCEDURE
3 LOOKUP_KEY
 Returns the executable code or the comment that is associated with
 the key you specify.  The code can be returned as a program or as
 a learn sequence.  The comment is returned as a string.

 Format
    {program|learn|integer|string} := LOOKUP_KEY (keyword1, keyword2)

 keyword1  A VAXTPU keyname for a key or a combination of keys. 
 keyword2  The valid keywords are PROGRAM and COMMENT: 
           PROGRAM - Specifies that either a program or a learn 
                     sequence will be returned if the key was defined. 
                     If the key was not defined, zero is returned.
           COMMENT - Specifies that the comment string will be returned. 
                     If no comment was given, a null string will  
                     be returned. 
4 Example
 programx := LOOKUP_KEY (key1, PROGRAM)

 This assignment statement returns the executable code that is
 associated with key1.  The second keyword PROGRAM indicates
 that the result will be returned in a program or a learn data
 type.


 The following procedure displays in the message area the
 comment that you included with your key definition for the
 last key that you typed:

 PROCEDURE user_what_is_comment
    MESSAGE (LOOKUP_KEY (LAST_KEY, COMMENT));
 ENDPROCEDURE
3 MAP
 Associates a buffer with a window and causes the window to become
 visible on the screen.  Before using MAP you must already have
 created the buffer and the window that you specify as parameters.
 See CREATE_BUFFER and CREATE_WINDOW.

 Format
    MAP (window, buffer)

 window   The window that you want to map to the screen.
 buffer   The buffer you want to associate with the window.


4 Example
 MAP (main_window, main_buffer)

 This command associates the main_buffer with main_window and
 maps the main window to the screen.  You must have
 established the main_buffer and the main window with
 CREATE_BUFFER and CREATE_WINDOW before you can use them as
 parameters for MAP.


 The following procedure creates a message buffer and a
 message window.  It then associates the message buffer with
 the message window and maps the message window to the screen.

 PROCEDURE user_message_window
     message_buffer := CREATE_BUFFER ("message");
     SET (EOB_TEXT, message_buffer, ");
     SET (NO_WRITE, message_buffer);
     SET (SYSTEM, message_buffer);
     message_window := CREATE_WINDOW (23, 2, OFF);
     SET (VIDEO, message_window, NONE);
     MAP (message_window, message_buffer);
 ENDPROCEDURE
3 MARK
 Returns a marker for the current character position in the current
 buffer.  You must specify how the marker is to be displayed on the
 screen (no special video, blinking, bolded, reverse video, or
 underlined).

 Format
    marker := MARK (keyword)

 keyword  The valid keywords are: NONE, BLINK, BOLD, 
          REVERSE, and UNDERLINE.


4 Example
 user_mark_under := MARK (UNDERLINE)

 This assignment statement places a marker at the row and
 column position that corresponds to the current character
 position.  The character tied to the marker will be
 underlined.
3 MATCH
 Returns a pattern that matches a sequence of characters starting
 at the current character position and continuing up to and
 including all the characters specified in the parameter string.
 For a string to match a pattern that is returned by the MATCH
 built-in, it must contain all of the characters that you specify
 as a parameter.  The pattern that MATCH returns does not cross
 record (line) boundaries.

 Format
    pattern := MATCH (string)

 string   A string that contains the characters that you want 
          to be the final part of the pattern.
4 Examples
 pat1 := MATCH ('abc')

 This assignment statement stores in pat1 a pattern that will
 match a string of characters starting with the current
 character position up to and including the characters "abc".


 The following procedure finds text within double parentheses.
 It moves the current character position to the beginning of
 the parenthetical text, if it exists.

 PROCEDURE user_double_parens
    paren_text    := '((' & MATCH ('))');
    found_range   := SEARCH (paren_text, FORWARD, NO_EXACT);
    IF found_range = 0   ! No match
       THEN MESSAGE  ('No match found.');
       ELSE POSITION (found_range);
    ENDIF
 ENDPROCEDURE
3 MESSAGE
 Puts the characters in the string or range that you specify into
 the message buffer, if one exists (by default, VAXTPU looks for a
 buffer that is named MESSAGE_BUFFER).  If there is no
 MESSAGE_BUFFER, VAXTPU displays the message at the current
 location on the device pointed to by SYS$OUTPUT (usually your
 terminal).

 Format
    MESSAGE ({string|range})

 string   A string that you want displayed in the message area.
 range    A range that you want displayed in the message area.
4 Examples
 MESSAGE ('Hello')

 This command writes the text "Hello" in the message area.


 The following procedure determines whether the cursor is at
 the end of the line.  It sends a text message to the message
 area on the screen about the position of the cursor.

 PROCEDURE user_on_eol 
    ! test if at eol, return true or false
    MOVE_HORIZONTAL (1);
    IF CURRENT_OFFSET = 0   !then we are on eol
       THEN 
          user_on_end_of_line := 1;   !return true
          MESSAGE ("Cursor at end of line");
       ELSE 
          user_on_end_of_line := 0;   !return false
          MESSAGE ("Cursor is not at the end of line");
    ENDIF;
    MOVE_HORIZONTAL (-1);   !move back
 ENDPROCEDURE
3 MOVE_HORIZONTAL
 Changes the current character position in the current buffer by
 the number of characters you specify.

 Format
      MOVE_HORIZONTAL (integer)

 integer  The signed (+/-) integer value that indicates the number 
          of characters the current character position should be 
          moved. A positive integer causes movement toward the end 
          of the buffer. A negative integer causes movement toward 
          the beginning of the buffer. 

4 Example
 The following procedure moves text by sections that are eight
 lines long, and uses MOVE_HORIZONTAL to put the current
 character position at the beginning of the line.

 PROCEDURE user_move_by_lines
    IF CURRENT_DIRECTION = FORWARD
       THEN
          MOVE_VERTICAL (8)
       ELSE
          MOVE_VERTICAL(- 8)
    ENDIF;
    MOVE_HORIZONTAL (-CURRENT_OFFSET);
 ENDPROCEDURE
3 MOVE_TEXT
 Moves the text you specify.  If the current buffer is in insert
 mode, the text you specify will be inserted before the current
 position in the current buffer.  If the current buffer is in
 overstrike mode, the text you specify will replace text starting
 at the current position and continuing for the length of the
 string, range, or buffer.  The text you specify is removed from
 its original location.

 Format
    MOVE_TEXT ({string|range|buffer})

 string   The text that you want to move.
 range    The range that contains the text you want to move.
 buffer   The buffer that contains the text you want to move.
4 Example
 MOVE_TEXT (main_buffer)

 If you are using insert mode for text entry, this command
 causes the text from main_buffer to be placed in front of the
 current position in the current buffer.  The text is removed
 from main_buffer.
3 MOVE_VERTICAL
 Changes the current character position in the current buffer by
 the number of characters you specify.

 Format
    MOVE_VERTICAL (integer)

 integer  The signed (+/-) integer value that indicates the number 
          of rows that the current position should be moved. A 
          positive integer causes movement toward the end of the 
          buffer. A negative integer causes movement toward the 
          beginning of the buffer. 


4 Example
 The following procedure moves text by sections that are eight
 lines long.

 PROCEDURE user_move_8_lines
    IF CURRENT_DIRECTION = FORWARD
       THEN
          MOVE_VERTICAL (8)
       ELSE
          MOVE_VERTICAL (- 8)
    ENDIF;
    MOVE_HORIZONTAL(- CURRENT_OFFSET);
 ENDPROCEDURE
3 NOTANY
 Returns a pattern that matches any single character not in the
 string that is used as a parameter.

 Format
    pattern := NOTANY (string)

 string  A string that contains characters that will cause a 
         match of the pattern to fail. 
4 Example
 pat1 := NOTANY ('XYZ')

 This assignment statement creates a pattern that will match
 the first character that is not an X, a Y, or a Z.  The match
 will fail if a character (other than X, Y, or Z) is not
 found.
3 POSITION
 Establishes the current character position in the editing context.
 You can position to a buffer, a marker, a range, or a window.

 Format
    POSITION ({buffer|marker|range|window})

 buffer   The buffer in which you want to place the current 
          character position; it becomes the last position you 
          occupied in the buffer. 
 marker   The marker to which you want to tie the current 
          character position. 
 range    The range in which you want to place the current 
          character position; it will be at the beginning 
          of the range. 
 window   The window in which you want to place the current 
          character position. The window must be mapped to 
          the screen. The current character position becomes
          the row and column on the screen that you occupied 
          the last time you were positioned in this window. 
4 Examples
 user_mark := MARK(NONE);
 POSITION (user_mark)

 These statements set the current character position to the
 marker associated with the variable user_mark.


 The following procedure changes position from one window to
 another.

 PROCEDURE user_change_windows
    IF CURRENT_WINDOW = main_window
       THEN POSITION (extra_window);
       ELSE POSITION (main_window);
    ENDIF;
 ENDPROCEDURE
3 QUIT
 Leaves the editor without writing to a file.  If you have modified
 any buffers that have not been SET (NO_WRITE,...), VAXTPU will
 tell you that you have modified buffers and will ask whether you
 want to quit.  Enter Y(es) if you want to quit without writing out
 any modified buffers.  Enter N(o) if you want to retain the
 modifications you have made and return to the editor.

 A special use of the QUIT built-in is at the end of your section
 file when you are compiling it for the first time.

 Format
    QUIT
4 Examples
 QUIT

 This command returns the editor to the caller.  If you have
 modified any buffers, you will see the following prompt:

 Buffer modifications will not be saved, continue quitting (Y or N)?

 Enter Y(es) if you want to quit and not save the
 modifications.  Enter N(o) if you want to return to the
 editor.


 The following example contains statements similar to those in
 the last part of the EDTSECINI.TPU file that creates the EDT
 Keypad Emulator.  The SAVE statement creates a section file
 that is saved in binary format.  The QUIT statement causes an
 exit from VAXTPU without any changes to the file
 EDTSECINI.TPU.

    .
    .
    .
 POSITION (main_window);
 tpu$local_init;
 edt$define_keys;  ! bind keys 
 SAVE (MY_EDTSECINI.GBL');
 QUIT;
3 READ_CHAR
 Stores the next character entered from the keyboard in a string
 variable.  The character read by READ_CHAR is not echoed on the
 screen; therefore, the cursor position does not move.  READ_CHAR
 does not process escape sequences.

 Format
    string := READ_CHAR
4 Examples
 new_char := READ_CHAR

 This assignment statement stores the next character that is
 entered on the keyboard in the string new_char.


 The following procedure enters the next character that is
 entered from the keyboard in the current buffer.  If a key
 that sends an escape sequence is pressed, the entire escape
 sequence is added to the buffer, as if it were regular text.

 PROCEDURE user_quote
    COPY_TEXT (READ_CHAR);
 ENDPROCEDURE
3 READ_FILE
 Reads a file and adds the contents of the file immediately before
 the current line in the current buffer.  READ_FILE optionally
 returns a string containing the file specification of the file
 read.  VAXTPU writes a message indicating how many records (lines)
 were read.

 Format
    [string2 :=] READ_FILE (string1)

 string1   A string that is the name of the file you want to read 
          and include in the current buffer. 


4 Examples
 READ_FILE ('login.com')

 This statement reads the file login.com from your current
 device and directory and adds it to your current buffer.


 The following procedure creates a second window and a second
 buffer and maps the window to the screen.  The procedure also
 prompts the user for a file name to include in the buffer and
 defines the editor SHIFT_KEY (PF1 by default) and W key
 combination as the key by which to move to the second window.

 PROCEDURE user_two_windows
    w2 := CREATE_WINDOW (1, 10, ON);
    b2 := CREATE_BUFFER ('buf2');
    MAP (w2, b2);
    READ_FILE (READ_LINE ('Enter file name for 2nd window : '));
    POSITION (BEGINNING_OF (b2));
    DEFINE_KEY ('POSITION (w2)', KEY_NAME ("W", SHIFT_KEY));
 ENDPROCEDURE
3 READ_KEY
 Waits for you to press a key and then returns the keyword for that
 key.  The key that is read by READ_KEY is not echoed on the
 terminal screen.  This built-in should be used rather than
 READ_CHAR when you are entering escape sequences, control
 characters, or any characters other than text characters.
 READ_KEY processes escape sequences and VAXTPU's SHIFT_KEY (PF1 by
 default).

 Format
    keyword := READ_KEY


4 Examples
 my_key := READ_KEY

 This assignment statement reads the next key that is entered
 and stores the keyword for that key in the variable my_key.


 The following procedure sets the SHIFT_KEY to the last (that
 is, current) key, reads in the next key, and returns the
 keyname for the shifted key.  VAXTPU does not save the
 SHIFT_KEY setting from session to session.  Use the
 DEFINE_KEY built-in with the variable key_to_shift that is
 returned if you want to save the SHIFT_KEY that you define
 from session to session.

 PROCEDURE user_get_shiftkey
    ! Keyword for key pressed after shift key
    LOCAL key_to_shift; 
    
    SET (SHIFT_KEY, LAST_KEY);
    key_to_shift := KEY_NAME (READ_KEY, SHIFT_KEY);
    RETURN (key_to_shift);
 ENDPROCEDURE
3 READ_LINE
 Displays the text that you specify as a prompt for input and reads
 the information entered in response to the prompt.  You can
 specify the maximum number of characters to be read.  READ_LINE
 returns a string that holds the data that is entered in response
 to the prompt.  By default, the text you specify as a prompt will
 be written in the PROMPT_AREA on the screen.

 If READ_LINE terminates because it reaches the limit of characters
 specified as the second parameter, the last character read becomes
 the last key.  Example 2 is a procedure that tests for the last
 key entered in a prompt string.



 Format
    string2 := READ_LINE [(string1 [,integer])]

 string1   A string that is the text to be used as a prompt for
           input. 
 integer   Indicates how many characters to read from the input
           entered in response to the prompt. The maximum number is 
           132.
4 Examples
 my_prompt := READ_LINE ('Enter key definition:', 1)

 This assignment statement displays the text "Enter key
 definition:" in the PROMPT_AREA, and stores the first
 character of the user's response in the variable my_prompt.


 The following procedure prompts for 3 characters and stores
 them in the variable my_input.  It then tests for the last
 key entered.

 PROCEDURE user_test_lastkey
 LOCAL my_key, lk;

    my_input := READ_LINE ('Enter 3 characters:', 3);
    !Press the keys 'ABC'
    my_key := LAST_KEY;
    IF my_key = KEY_NAME ('C') 
       THEN 
          MESSAGE ("C key") ELSE MESSAGE ('error') ENDIF;
 ENDPROCEDURE
3 REFRESH
 Repaints the whole screen.  It erases any extraneous characters,
 such as those caused by noise on a communication line, and
 repositions the text so that the screen represents the last known
 state of the editing context.  REFRESH causes a redrawing of every
 line of every window that is mapped to the screen.  The prompt
 area is erased.  This built-in causes the screen to change
 immediately.  Even if REFRESH is issued from within a procedure,
 the action takes place immediately; VAXTPU does not wait until the
 entire procedure is completed to execute the REFRESH built-in.

 Format
    REFRESH
4 Example
 REFRESH

 The following procedure removes the contents of the
 message_buffer and then repaints the whole screen.

 PROCEDURE user_repaint
    ERASE (message_buffer);
    REFRESH;
 ENDPROCEDURE 
3 REMAIN
 Returns a pattern that will match any string starting at the
 current character position and continuing to the end of the
 current line.  The pattern that is returned does not cross line
 boundaries.

 Format
    pattern := REMAIN
4 Example
 pat1 := LINE_BEGIN & '!' & REMAIN

 This assignment statement stores in the variable pat1 a
 pattern that will match all lines that have an exclamation
 point at the beginning of the line.
3 SAVE
 Writes the binary form of all currently defined procedures,
 variables, and key definitions to the VAXTPU section file you
 specify.  SAVE is used to add to or create VAXTPU section files.
 Section files enable VAXTPU interfaces to start up quickly because
 they contain the following items in binary form:
  o  All compiled PROCEDURE...ENDPROCEDURE statements.
  o  Every variable that has been created (only the variable's name
     is saved, not its contents).
  o  Every key definition that binds a statement, procedure,
     program, or a learn sequence to a key (this includes the
     comments that you add to key definitions).



 Format
    SAVE (string)

 string    A string that is a valid VMS file specification. You 
           should supply a full VMS file specification, including 
           device and directory.
4 Example
 SAVE ('SYS$LOGIN:mysection.GBL')

 This command, issued just before exiting from the editor,
 will add all of the procedure definitions, key definitions,
 and variables from your current editing session to the
 section file with which you invoked VAXTPU.  The new file
 that you specify, SYS$LOGIN:mysection.GBL, will contain
 initialization items from the original section file and from
 your editing session.

 To invoke VAXTPU with the new, combined section file, enter
 the following command at DCL level:

 $ EDIT/TPU/SECTION=SYS$LOGIN:mysection.GBL
3 SCAN
 Returns a pattern that matches the longest string of characters
 that does not contain any of the characters included in the
 parameter string.  The pattern that is returned does not cross
 record (line) boundaries.  The pattern starts at the current
 character position and continues to the end of the current line or
 until it finds one of the characters in the string used as a
 parameter.

 Format
    pattern := SCAN (string)

 string    A string that contains the characters that you do not want 
           to match. 
4 Examples
 pat1 := SCAN ('abc')

 This assignment statement stores a pattern that will match
 the longest string of characters that does not contain a, b,
 or c in pat1.


 The following procedure identifies parenthetical text within
 a single line.  It moves the current character position to
 the beginning of the parenthetical text, if it exists.

 PROCEDURE user_find_parens
    Paren_text    := ANY('(') & SCAN (')');
    found_range   := SEARCH (Paren_text, FORWARD, NO_EXACT);
    IF found_range = 0   ! No parentheses.
       THEN MESSAGE  ('No parentheses found.');
       ELSE POSITION (found_range);
    ENDIF
 ENDPROCEDURE
3 SCANL
 Returns a pattern that will match the longest string of characters
 that does not contain any of the characters included in the
 parameter string.  SCANL crosses record boundaries.

 Format
    pattern := SCANL (string)
4 Example
 pat1 := SCANL ('abc')

 This assignment statement stores in pat1 the longest string
 starting at the current character position that does not
 contain a, b, or c.
3 SCROLL
 Moves the lines of text in the buffer up or down on the screen by
 the number of lines you specify.  The cursor does not move but
 stays positioned at the same relative screen location.  The
 current character position will be different from the character
 position that was current before you issued the scroll command.

 If you omit the second parameter, the text will scroll
 continuously until it reaches a buffer boundary or until you press
 a key.  If the current direction of the buffer is FORWARD, the
 text will scroll to the end of the buffer.  If the current
 direction of the buffer is REVERSE, the text will scroll to the
 beginning of the buffer.  If you press a key that has commands
 bound to it, the scrolling will stop and VAXTPU will execute the
 commands bound to the key.

 Format
    SCROLL (window [,{+|-}integer])

 window   The window associated with the buffer whose text you 
          want to scroll.
 integer  The signed (+/-) integer value that indicates how many 
          lines you want the text to scroll. A positive integer 
          causes the text in the window to scroll up from the bottom 
          of the screen to the top. A negative integer causes the 
          text in the window to scroll down from the top of the screen 
          to the bottom. If you specify 0, no scrolling occurs. 
4 Examples
 SCROLL (main_window,+10)

 This command causes the text of the buffer that is mapped to
 the main_window to scroll up 10 lines.

 SET (FORWARD, my_buffer); SCROLL (my_window)

 These commands cause the text in my_buffer (that is mapped to
 my_window) to scroll up until the end of my_buffer is
 reached.
3 SEARCH
 Looks for a particular arrangement of characters and returns a
 range that contains the matching characters in the current buffer.
 If SEARCH fails to find a match, a 0 is returned and an error is
 signaled.

 Format
    range := SEARCH ({string|pattern}, keyword1 [,keyword2])

 string    A string that you want to match.
 pattern   A pattern that you want to match.
 keyword1  Indicates the direction of the search. The valid keywords 
           are FORWARD and REVERSE.
 keyword2  Indicates whether the matching characters must be the same 
           case. The valid keywords are EXACT and NO_EXACT.
4 Examples
 user_range := SEARCH ('Reflections of MONET', FORWARD, NO_EXACT)

 If you were searching a buffer in which the string
 "Reflections of Monet" appeared, this assignment statement
 would store the characters "Reflections of Monet" in the
 range user_range.  The search would find a successful match
 even though the characters in the word MONET do not match in
 case, because you specified NO_EXACT.




 The following procedure searches for the word "CHAPTER"
 appearing at the beginning of a line.  If it finds it, the
 procedure positions to the beginning of the string.  If it
 doesn't find it, it writes an appropriate message in the
 message buffer.

 PROCEDURE user_find_chap
    chap    := LINE_BEGIN & 'CHAPTER';
    found_range   := SEARCH (chap, FORWARD, NO_EXACT);
    IF found_range = 0   ! No match found.
       THEN MESSAGE  ('CHAPTER not found.');
       ELSE POSITION (found_range);
    ENDIF
 ENDPROCEDURE
3 SELECT
 Returns a marker for the current character position in the current
 buffer.  You must specify how the marker is to be displayed on the
 screen (no special video, reverse video, bolded, blinking, or
 underlined).

 The marker returned by SELECT indicates the first character in a
 select range.  The video attribute that you specify for the marker
 will apply to all the characters in a select range.  For
 information on creating a select range, see SELECT_RANGE.  Only
 one select marker per buffer can be active at any one time.  If a
 buffer is associated with more than one visible window, the select
 range will be displayed in only one window (the current or most
 recent window).


 Format
    marker := SELECT (keyword)

 keyword  Specifies how the marker is to be displayed. The valid
          keywords are NONE, BOLD, BLINK, REVERSE, and UNDERLINE.








4 Examples
 The following procedure creates a bold marker that is used as
 the beginning of a select region.  As you move the cursor,
 the characters that you select will be bolded.  To turn off
 the selection of characters set the variable
 user_g_beginning_of_select to 0.


 PROCEDURE user_start_select
    user_g_beginning_of_select := SELECT(BOLD);
 ENDPROCEDURE

3 SELECT_RANGE
 Returns a range that contains all the characters between the
 marker established with the SELECT built-in and the current
 character position.  SELECT_RANGE does not include the character
 at the position which ends the range in the selected range.

 The procedure for selecting a section of text is the following:
  o  Use the SELECT built-in to place a marker at the beginning of
     the section you want to select (for example, m1 := SELECT
     (NONE)).
  o  Mark the characters that you want in the select region by
     moving from character to character with the cursor.
  o  When all of the text is selected, create a range that contains
     the selected text (for example, r1 := SELECT_RANGE).
  o  Stop the selection of characters by setting the marker that
     marks the beginning of the range to null (m1 := 0).


 Format
    range := SELECT_RANGE
4 Example
 select_1 := SELECT_RANGE

 This assignment statement puts the range for the currently
 selected characters in the variable select_1.


 The following procedure shows the use of SELECT_RANGE
 multiple times in the same procedure.

 PROCEDURE user_select
 ! Start a select region
    user_select_position := SELECT (REVERSE);
    MESSAGE ("Selection started.");
 ! Move 5 rows and create a select region
    MOVE_VERTICAL (5);
    SR1 := SELECT_RANGE;
 ! Move 5 rows and create another select region
    MOVE_VERTICAL (5);
    SR2 := SELECT_RANGE;
 ! Stop the selection by setting the select marker to 0.
    user_select_position := 0;
 ENDPROCEDURE
3 SEND
 Passes data to a subprocess.  If you specify a buffer or a range
 as the data to pass to a subprocess, the lines of the buffer or
 range are sent as separate records.

 Format
    SEND ({buffer|range|string}, process)

 buffer   The buffer whose contents you want to send to the subprocess.
 range    The range whose contents you want to send to the subprocess.
 string   The string you want to send to the subprocess.
 process  The process to which you want to send data.

4 Example
 SEND ('DIRECTORY', user_process)

 This command sends the DCL DIRECTORY command to the
 subprocess named user_process.  The subprocess must have
 already been created with the CREATE_PROCESS built-in so that
 the output can be stored in the buffer associated with the
 subprocess.


 The following procedure uses the SEND built-in to pass a
 command to a subprocess in which the DCL MAIL utility is
 running.  The command to be sent to the subprocess is
 obtained by using the READ_LINE built-in.

 PROCEDURE mail_subp
 ! CREATE A BUFFER AND A WINDOW THAT A SUBPROCESS CAN RUN IN
    g:= CREATE_BUFFER ("mail_buffer");
    g:= CREATE_WINDOW (1, 22, ON);
    !Map the mail window to the screen
    UNMAP (MAIN_WINDOW);
    MAP (g_mail_window, g_mail_buffer);
 ! CREATE A SUBPROCESS AND SEND "MAIL" AS THE FIRST COMMAND
    p1 := CREATE_PROCESS (g_mail_buffer, "MAIL");
 ! POSITION TO THE SUBPROCESS AND USE READ_LINE FOR NEXT COMMAND
    POSITION (g_mail_window);
    s1 := READ_LINE ("mail_subp> ", 20);
    SEND (s1, p1);
 ENDPROCEDURE



3 SEND_EOF
 Uses features of the VAX/VMS Mailbox Driver to send an end-of-file
 message (IO$_WRITEOF) to a subprocess.  The end-of-file causes an
 outstanding read from a subprocess to be completed with an
 SS$_ENDOFFILE status.

 Format
    SEND_EOF (process)

 process  The process to which the end-of-file is being sent.
4 Example
 SEND_EOF (sub_proc1)

 This command sends an end-of-file to sub_proc1.
3 SET
 Allows you to establish or change certain features of a VAXTPU
 session.  SET requires a keyword as its first parameter.  The
 keyword indicates the feature being set.

 Format
    SET (keyword, parameter [,...])

 keyword    Indicates which feature is being set. The list
            of valid keywords follows: 





 For a Buffer
 -----------
 EOB_TEXT     FORWARD        INSERT        MARGINS       MAX_LINES    
 NO_WRITE     OUTPUT_FILE    OVERSTRIKE    PERMANENT     REVERSE        
 SYSTEM       TAB_STOPS     


 For a Window
 ------------
 PAD    SCROLLING   STATUS_LINE    TEXT    VIDEO    WIDTH         


 For the screen
 ---------------------
 AUTO_REPEAT     PROMPT_AREA      SCREEN_UPDATE 





 For the system
 --------------
 BELL            FACILITY_NAME    INFORMATIONAL    JOURNALING    
 MESSAGE_FLAGS   SHIFT_KEY        SUCCESS          TIMER              


 Misc
 ----
 DEBUG      


 parameter   The number of and type of parameters following the first 
             parameter varies according to the keyword you use. The 
             parameters are listed in the individual SET descriptions.






4 AUTO_REPEAT
 Refers to the repetition of keystrokes when you hold down a key.
 VAXTPU sends an escape sequence to the terminal to set AUTO_REPEAT
 on or off.

 Format
      SET (AUTO_REPEAT, keyword)

 AUTOREPEAT  This keyword refers to the repetition of keystokes.
 keyword     Indicates whether this feature is turned on. The valid 
             keywords are ON and OFF.

 EXAMPLE

 SET (AUTO_REPEAT, OFF)

 This statement turns AUTO_REPEAT off.
4 BELL
 VAXTPU turns the terminal bell off by default.  If you want the
 bell to ring when you receive broadcast messages such as those
 from the MAIL utility, use this built-in to turn the bell on.

 Format
      SET (BELL, keyword1, keyword2)

 BELL      This keyword refers to the terminal bell.
 keyword1  Indicates which messages keyword2 applies to. The valid 
           keywords are ALL or BROADCAST.
 keyword2  Indicates whether the terminal bell is on. The valid
           keywords are ON an OFF.

 EXAMPLE

 SET (BELL, BROADCAST, ON)

 This statement causes the terminal bell to ring when a broadcast
 message is being written to the message window.
4 DEBUG
 Allows you to use a user-written debugger program to help locate
 programming errors.

 Format
    SET (DEBUG, keyword1, [,{string|ALL}])

 DEBUG    This keyword refers to a program that helps you locate 
          VAXTPU programming errors. 

 keyword1 The valid keywords are ON, OFF, and PROGRAM:
          ON---Causes a debugger to do single-step debugging. Each 
               time the line number in a VAXTPU program changes, the 
               debugger is invoked. 
          OFF---Disables single_step debugging. 
          PROGRAM---Indicates that the user has written a program that 
                    will be used to locate TPU programming errors. 

 string   Either the name of a procedure or the name of a program.
          If the name of a procedure follows the keyword ON, the 
          debugger is invoked each time the procedure is called. 
          If the name of a procedure follows the keyword OFF, the 
          debugger removes the breakpoint that was set at the procedure. 
          If a program follows the keyword PROGRAM, the 
          program will be used as a user-written debugger. 

 ALL      The keyword ALL can be specified if keyword1 is OFF. The 
          statement SET (DEBUG, OFF, ALL) causes all breakpoints to be 
          removed. 

 EXAMPLE

 SET (DEBUG, ON, "user_remove")

 This statement causes the debugger to be activated each time the
 procedure user_remove is called.


 SET (DEBUG, PROGRAM, "user_debugger")

 This statement causes the user-written program user_debugger to be
 called as the program to help locate programming errors.
4 EOB_TEXT
 Allows you to specify the text that is displayed to indicate the
 end of a buffer.

 Format
      SET (EOB_TEXT, buffer, string)

 EOB_TEXT    This keyword refers to the text displayed at the 
             end of a buffer. 
 buffer      The buffer in which the text for the end-of-buffer 
             is being set.
 string      The text that will be displayed to indicate the 
             end-of-buffer.

 EXAMPLE

 SET (EOB_TEXT, main_buffer, "[END OF MAIN EDITING BUFFER]")

 This statement causes [END OF MAIN EDITING BUFFER] to be displayed
 as the end-of-buffer text for main_buffer.
4 FACILITY_NAME
 Allows you to control the facility name that is the first item in
 a message.  The maximum length of this name is 10 characters.

 Format
      SET (FACILITY_NAME, string)

 FACILITY_NAME  This keyword refers to the facility name that is 
                the first item in a message generated by VAXTPU. 
 string         The string that you specify as the facility name for 
                messages. The maximum length of this name is 10 
                characters. 

 EXAMPLE

 SET (FACILITY_NAME, "new_editor")

 This statement causes new_editor to be used as the facility name
 in messages.
4 FORWARD
 Allows you to set the direction of the buffer in a forward
 direction.  See SET (REVERSE,...).

 Format
      SET (FORWARD, buffer)

 FORWARD    FORWARD means to go toward the end of the buffer. 
 buffer     The buffer in which you are setting the direction.

 EXAMPLE

 SET (FORWARD, my_buffer)

 This statement causes the direction of the buffer to be toward the
 end of the buffer.
4 INFORMATIONAL
 Allows you to turn informational messages on or off.  When you are
 developing VAXTPU programs, the informational messages help you
 find errors in your program, so it is a good idea to use the SET
 (INFORMATIONAL, ...) built-in to cause the messages to be
 displayed.

 Format
      SET (INFORMATIONAL, keyword)

 INFORMATIONAL   Informational level messages
 keyword         The valid keywords are ON an OFF.

 EXAMPLE

 SET (INFORMATIONAL, ON)

 This statement causes the display of informational messages to be
 turned on.
4 INSERT
 Allows you to set the mode for text entry so that characters are
 added to the buffer in front of the current character position.
 See SET (OVERSTRIKE,...).

 Format
      SET (INSERT, buffer)

 INSET   A mode of text entry in which characters are inserted in
         front of the current character position.
 buffer  The buffer in which you are setting the mode of text entry.

 EXAMPLE

 SET (INSERT, my_buffer)

 This statement causes the characters that you add to the buffer to
 be added in front of the current character position.
4 JOURNALING
 Allows you to determine the frequency with which records are
 written to the journal file; the lower the integer you specify,
 the more often journal records are written to disk.

 A value of 1 causes a record to be written for approximately every
 10 keys pressed.  A value of 10 causes a record to be written for
 approximately every 125 keys.  If you are entering only text
 (rather than procedures that are bound to keys), the number of
 keystrokes included in a record is greater:  for a value of 1, a
 record will be written for approximately every 30 to 35
 keystrokes; for a value of 10, a record will be written for
 approximately every 400 keystrokes.

 Format
    SET (JOURNALING, integer)

 JOURNALING   This keyword refers to the journal file that enables 
              you to recover your editing session if it is interrupted 
              abnormally. 
 integer      The integer that you specify determines how frequently 
              records are written to the journal file. The value of 
              this integer must be between 1 and 10. 

 EXAMPLE

 SET (JOURNALING, 1)

 This statement causes records to be written to the journal file
 frequently.
4 MARGINS
 The margins for a buffer are set to 1 for the left margin and 80
 for the right margin when CREATE_BUFFER is used.  This built-in
 allows you to change the margin settings for a buffer.  The value
 of the left margin must be at least 1, and less than or equal to
 the right margin value.  The value of the right margin must be
 less than the maximum record size for the buffer.  You can use x
 := GET_INFO (buffer, "record_size") to obtain the maximum record
 size of a buffer.

 The FILL built-in uses the margin settings when it is filling the
 text of a buffer.

 Format
    SET (MARGINS, buffer, integer1, integer2)

 MARGINS    This keyword refers to the left and right margins of a 
            buffer.
 buffer     The buffer in which the margins are being set.
 integer1   The column at which the left margin is set.
 integer2   The column at which the right margin is set.

 EXAMPLES

 SET (MARGINS, my_buffer, 1, 132)

 This statement changes the left margin of my_buffer to 1 and the
 right margin to 132.


 SET (MARGINS, CURRENT_BUFFER, 10, 70)

 This statement causes the margins of the current buffer to be
 changed to left margin 10 and right margin 70.
4 MAX_LINES
 Allows you to set the maximum number of lines in a buffer.  If you
 exceed the maximum number of lines, VAXTPU deletes lines from the
 beginning of the buffer to make room for any lines that exceed the
 maximum.

 If you use 0 as the number of lines for the buffer, this feature
 is turned off and VAXTPU does not check for the maximum number of
 lines.

 Format
    SET (MAX_LINES, buffer, integer)

 MAX_LINES     This keyword refers to the maximum number of lines a 
               buffer can contain.
 buffer        The buffer for which you are setting the maximum number 
               of lines.
 integer       The maximum number of lines for the buffer.

 EXAMPLE

 SET (MAX_LINES, message_buffer, 20)

 This statement causes the maximum number of lines for the
 message_buffer to be 20.  Only the most recent lines of messages
 will be kept.
4 MESSAGE_FLAGS
 Allows you to specify how much of a message will be displayed.  If
 you do not set a value for the message flags from within VAXTPU,
 the default message flags for your process are used.  Message
 flags can be set at DCL level, by using the SET MESSAGE command.
 See the DCL Dictionary for information on the DCL command.

 Format
      SET (MESSAGE_FLAGS, integer)

 MESSAGE_FLAGS     This keyword refers to the message flags in the 
                   $PUTMSG System Service.
 integer           The value specified for the $PUTMSG Message Codes. 

 EXAMPLES

 SET (MESSAGE_FLAGS, 2)

 This statement causes the message identifier to be the only item
 included in VAXTPU messages.  The integer 2 sets bit 1.


 SET (MESSAGE_FLAGS, 5)

 This statement causes the message text (bit 0 = 1) and the
 severity level indicator (bit 2 = 4) to be included in VAXTPU
 messages.  The integer 5 sets bits 2 and 0.
4 NO_WRITE
 Allows you to specify that no output file should be created from
 the contents of a buffer upon exiting from VAXTPU.

 Format
      SET (NO_WRITE, buffer, [keyword])

 NO_WRITE   This keyword specifies that no output file should be 
            created from the contents of a buffer upon exiting from 
            VAXTPU even if the contents of the buffer have been 
            modified. 
 buffer     The buffer whose contents you do not want written out when 
            you exit from VAXTPU. 
 keyword    Allow you to turn the setting on or off. The keywords ON and 
            OFF are optional; if you don't use this keyword, the default
            is ON.


 EXAMPLE

 SET (NO_WRITE, my_buffer)

 This statement causes my_buffer not to be saved in a file upon
 exiting from VAXTPU.


 SET (NO_WRITE, my_buffer, OFF)

 This statement changes the state of my_buffer from no-write.  The
 contents of the buffer will be written out upon exiting from
 VAXTPU if the buffer has been modified.
4 OUTPUT_FILE
 Allows you to specify the name of the file that is to be created
 from the contents of a buffer.  If you do not modify the buffer
 for which you have specified an output file, that file will not be
 written out upon exiting from VAXTPU.

 The SET (OUTPUT_FILE, ...) built-in will work only if you did not
 set the NO_WRITE attribute for the buffer.

 Format
      SET (OUTPUT_FILE, buffer, string)

 OUTPUT_FILE    This keyword refers to the file specification that 
                is to be created from the contents of a buffer when 
                you exit from VAXTPU. 
 buffer         The buffer whose contents will be written to the file 
                you specify.
 string         The file specification for the file being written out.

 EXAMPLE

 SET (OUTPUT_FILE, paste_buffer, 'newfile.txt')

 This statement causes the output file for paste_buffer to be
 newfile.txt.
4 OVERSTRIKE
 Allows you to set the mode for text entry so that the characters
 you add to a buffer will replace characters in the buffer,
 starting at the current character position and continuing for the
 length of the text that you enter.  See SET (INSERT,...).

 Format
      SET (OVERSTRIKE, buffer)

 OVERSTRIKE   This keyword means that the characters that you add 
              to a buffer will replace the characters starting at 
              the current character position and continuing for the
              length of the text that you enter. 
 buffer       The buffer whose mode of text entry you want to set.

 EXAMPLE

 SET (OVERSTRIKE, my_buffer)

 This statement sets the mode for text entry in my_buffer to be
 overstrike.
4 PAD
 Allows you to fill in screen lines with blanks rather than ending
 a line at the end of a record.  When video attributes are applied
 to a padded window, the window has an even or "boxed" appearance
 on the right side.  The records in the buffer are not padded, only
 the display lines have the padding.

 By default, VAXTPU ends a line on the screen at the end of a
 record.  The default behavior of not padding the screen gives
 maximum editing performance.



 Format
    SET (PAD, window, keyword)

 PAD      This keyword refers to padding screen lines with blanks rather 
          than ending a line at the end of a record. 
 window   The window in which lines are padded.
 keyword  Indicates whether this feature is on or off.
          ON---Causes VAXTPU to display blanks after the last character 
               of a record.
          OFF---Causes the display of lines on the screen to stop at 
                the last character of a record. 

 EXAMPLE

 SET (PAD, second_window, ON);
 SET (VIDEO, second_window, REVERSE);

 The first statement causes second_window to be blank padded.  The
 second statement causes second_window to be displayed in reverse
 video.  The window will have an even right margin.
4 PERMANENT
 Allows you to set a buffer so that it cannot be deleted.  Once you
 use SET (PERMANENT, buffer) to make a buffer permanent, you cannot
 reset the buffer so that it can be deleted.

 Format
      SET (PERMANENT, buffer)

 PERMANENT    This keyword specifies that a buffer cannot be deleted.
 buffer       The buffer that is not to be deleted.



 EXAMPLE

 SET (PERMANENT, master_buffer)

 This statement causes master_buffer to be set to a permanent
 buffer.
4 PROMPT_AREA
 Allows you to set the area on the screen in which the prompts
 generated by the READ_LINE built-in are displayed.

 If the prompt area overlaps a line of a window that is visible on
 the screen, the line is erased when the READ_LINE built-in is
 executed.  When the execution of READ_LINE is completed, the line
 is restored.

 If you have a multiple line prompt area and your terminal has
 hardware scrolling capabilities, the first prompt appears on the
 last line of the prompt area and as new, continguous prompts are
 issued, the previous prompts scroll up to make room for new ones.
 If there are more prompts than there are prompt lines, extra
 prompts are scrolled out of the window.

 If your terminal doesn't have hardware scrolling capabilities,
 prompts are displayed starting at the first line down and start
 over at the first prompt line if the prompt area is filled.

 Format
    SET (PROMPT_AREA, integer1, integer2, keyword)

 PROMPT_AREA  This keyword refers to an area on the screen in which the 
              prompts generated by the READ_LINE built-in are displayed. 
 integer1     The screen line number at which the PROMPT_AREA starts.
 integer2     The number of screen lines in the PROMPT_AREA.
 keyword      You must use one of the following keywords
              NONE, BOLD, BLINK, REVERSE, or UNDERLINE.

 EXAMPLE

 SET (PROMPT_AREA, 24, 1, REVERSE)

 This statement causes the prompt area to be screen line number 24.
 It is one line and is displayed in reverse video.
4 REVERSE
 Allows you to set the direction of the buffer in a reverse
 direction.  See SET (FORWARD,...).

 Format
      SET (REVERSE, buffer)

 REVERSE     The keyword means that the direction of the buffer is 
             toward the beginning of the buffer. 
 buffer      The buffer whose direction you are setting.

 EXAMPLE

 SET (REVERSE, my_buffer)

 This statement causes the direction of the buffer to be toward the
 beginning of the buffer.
4 SCREEN_UPDATE
 Allows you to control when the screen manager sends characters and
 cursor movement sequences to update the screen.

 Format
    SET (SCREEN_UPDATE, keyword)

 SCREEN_UPDATE   This keyword refers to the process of sending 
                 characters and cursor movement sequences to the 
                 screen to ensure that the screen reflects the 
                 current internal state of any buffer displayed on 
                 the screen. The VAXTPU screen manager handles this 
                 function. 

 keyword         The valid keywords are ON and OFF:
                 ON---Causes the screen manager to send characters and 
                      cursor movement sequences to update the screen. 
                 OFF---Causes the screen manager to stop screen updating 
                       until SET (SCREEN_UPDATE, ON) is issued. 


 EXAMPLE

 SET (SCREEN_UPDATE, OFF)

 This statement causes screen updating to be turned off.  When you
 are designing an editing interface, you might want to use this
 statement to prevent some intermediate processing steps from
 appearing on the screen.
4 SCROLLING
 Allows you to control the movement of lines in a window to make
 room for new lines at the top or bottom of the window.

 This built-in is used to modify the scrolling action of a window.
 The default values are SET (SCROLLING, window, ON, 0, 0, 0,).

 Format
    SET (SCROLLING, window, keyword, integer1, integer2, integer3)

 SCROLLING  This keyword refers to the upward or downward movement of 
            existing lines in a window to make room for new lines at 
            the bottom or top of the window. When a window is scrolled, 
            the cursor position remains in the same column, but the
            screen line that the cursor is on may change. 

 window     The window in which the scrolling limits are being set.

 keyword    The valid keywords are ON or OFF:
            ON---Causes scrolling to be turned on.
            OFF---Causes scrolling to be turned off. The screen will be 
                  repainted each time a scroll would have taken place. 

 integer1   The offset from the top screen line of a window. The offset 
            identifies the top limit of an area in which the cursor can 
            move as it tracks the current character position. 

 integer2   The offset from the bottom screen line of a window. The 
            offset identifies the bottom limit of an area in which the 
            cursor can move as it tracks the current character 
            position. 

 integer3   The number indicating how many lines from the top or the 
            bottom of the cursor area the cursor should be positioned 
            when a window is scrolled. The cursor area is delimited by 
            integer1 and integer2. 

 EXAMPLES

 SET (SCROLLING, new_window, ON, 0, 0, 2)

 This statement causes new_window to scroll in the following
 manner:  when the cursor reaches either the top or the bottom of
 the window, lines will be moved off the screen to make room for
 new lines.  The cursor will be positioned on a line that is offset
 2 lines from either the top or the bottom of the window each time
 a scroll occurs.


 SET (SCROLLING, new_window, ON, 0, 0, 20)

 If new_window is 21 lines long, this command causes new_window to
 scroll in the following manner:  when the cursor reaches either
 the top or the bottom of the window, lines will be moved off the
 screen to make room for new lines.  The cursor will be positioned
 at the top of the window if you are scrolling forward and at the
 bottom of the window if you are scrolling backward.  This setting
 for scrolling presents an entire window of new text each time a
 scroll occurs.
4 SHIFT_KEY
 PF1 is VAXTPU's shift key by default.  If you want to use PF1 for
 another purpose, use this built-in to define a key other than PF1
 as VAXTPU's shift key.  Using a shift key for VAXTPU increases the
 number of keys and combinations of keys that can be used to bind
 procedures.  Only one VAXTPU shift key can be active at a time.

 Format
      SET (SHIFT_KEY, keyword)

 SHIFT_KEY    This keyword refers to VAXTPU's shift key 
              (by default PF1).
 keyword      A VAXTPU keyname for a key.

 EXAMPLE

 SET (SHIFT_KEY, PF4)

 This statement causes the keypad key PF4 to be defined as the
 shift key for the editor.
4 STATUS_LINE
 Allows you to control the display of a status line that was
 established with the CREATE_WINDOW built-in.  By default, a status
 line is displayed in reverse video, it contains the name of the
 buffer associated with the window and the name of the file
 associated with the buffer, if there is one.

 Format
      SET (STATUS_LINE, window, keyword, string)

 STATUS_LINE     The last line in a window. You can use this line to 
                 display text or to display status information about 
                 the window. 
 window          The window in which the status line is being modified.
 keyword         Specifies the video attribute for the STATUS_LINE. You 
                 must use one of the following keywords: 
                 NONE, BOLD, BLINK, REVERSE, or UNDERLINE.
 string          The text to be displayed on the STATUS_LINE. To remove
                 a status line, use a null string ("") as this 
                 parameter. 

 EXAMPLES

 SET (STATUS_LINE, my_window, REVERSE, "MAIN BUFFER - newfile.txt")

 This statement causes the status line in my_window to be displayed
 in reverse video with the buffer specified as MAIN BUFFER and the
 file specified as newfile.txt.


 SET (STATUS_LINE, my_window, NONE, ")

 Causes the status line in my_window to be removed by setting the
 final parameter to a null string.
4 SUCCESS
 Allows you to turn success messages on or off.

 Format
      SET (SUCCESS, keyword)

 SUCCESS         Success level messages.
 keyword         The valid keywords are ON an OFF.

 EXAMPLE

 SET (SUCCESS, OFF)

 This statement turns off the display of success messages.
4 SYSTEM
 Allows you to identify a buffer as a system buffer as opposed to a
 user buffer.  Programmers who are building an editing interface
 can distinguish their system buffers from buffers that the user
 creates.  Once you make a buffer a system buffer, you cannot reset
 the buffer.

 Format
      SET (SYSTEM, buffer)

 SYSTEM    This keyword specifies that a buffer is used by the system
           and that it is not for use by the user of the system.
 buffer    The buffer that is being set to a system buffer.

 EXAMPLE

 SET (SYSTEM, message_buffer)

 This statement causes message_buffer to be set as a system buffer.
4 TAB_STOPS
 Allows you to set tab stops in one of two ways.  If you use a
 string ("3 6 9"), VAXTPU uses these numbers as the actual tab stop
 values.  If you use an integer (4), VAXTPU uses the integer as an
 interval between tab stops.

 Format
      SET (TAB_STOPS, buffer, {string|integer})

 TAB_STOPS   This keyword refers to the tab stops in a buffer.
 buffer      The buffer in which the tab stops are being set.
 string      A string of numbers (each separated from the next by 
             a space), which will be considered actual tab stop 
             settings. The minimum value for a tab stop setting
             is 1 and the maximum value is 65535. The maximum 
             number of tab stops that you can include in the string
             is 100. You must list the tab stops in ascending order 
             ("3 6 9 12"). 
 integer     The integer that you enter is considered an interval 
             between tab stops rather than an actual tab stop 
             setting. If you enter the integer 4, tab stops occur 
             every 4 columns. The minimum value for the integer is 
             1 and the maximum value is 65535. 

 EXAMPLE

 SET (TAB_STOPS, CURRENT_BUFFER, 4)

 This statement causes the tab stops in the current_buffer to be
 set at intervals of 4.  SET (TAB_STOPS, CURRENT_BUFFER, "4 8 10
 18")

 This statement causes the tab stops in the current buffer to be
 set at columns 4, 8, 10, and 18.
4 TEXT
 Allows you to specify how the text in a window should be
 displayed.  BLANK_TABS displays tabs as blank spaces.
 GRAPHIC_TABS displays tabs as special graphic characters so that
 each tab stop is obvious.  NO_TRANSLATE causes every character
 that is read from the keyboard to be sent to the screen without
 any translation.  The default is BLANK_TABS.

 Format
    SET (TEXT, window, keyword)

 TEXT     This keyword refers to the way in which text will be 
          displayed.
 window   The window in which the mode of display is being set.
 keyword  The valid keywords are 
          BLANK_TABS-----Displays tabs as blank spaces.
          GRAPHIC_TABS---Displays tabs as special graphic characters 
                         so that the value of each tab stop is obvious. 
          NO_TRANSLATE---Causes every character that is read from the 
                         keyboard to be sent directly to the screen 
                         without any translation. Use this keyword with 
                         caution since it may cause unpredictable 
                         results if you do not fully understand the 
                         translations that are done by default. 

 EXAMPLE

 SET (TEXT, CURRENT_WINDOW, GRAPHIC_TABS)

 This statement causes the text in main_window to be displayed with
 special characters indicating tab characters.
4 TIMER
 Allows you to specify a message that is written to the prompt area
 at one-second intervals.  The timer puts out messages while you
 are executing procedures or editing actions that are bound to a
 key.  The message is written out to the prompt area and then
 erased to clear the prompt area for the next message.

 Format
      SET (TIMER, keyword, string)

 TIMER    This keyword refers to messages that are to be written to 
          the prompt area at one-second intervals. 
 keyword  The valid keywords are 
          ON---Causes the message that you specify to be written to 
               the prompt area. 
          OFF--Turns off the display of timed messages in the prompt 
               area.
 string   A string that will be displayed in the prompt area. The 
          maximum length of the message is 15 characters. The message
          is displayed in the last 15 character positions of the 
          prompt area. 

 EXAMPLE

 SET (TIMER, ON, "Executing")

 This statement causes the message <quote>(Executing) to be written
 to the prompt area while you are executing a VAXTPU procedure.
4 VIDEO
 Allows you to set the video attributes for a window.  The default
 video attribute for windows is NONE.  Video attributes for a
 window are cumulative.  The window will assume the video attribute
 of each video keyword that you use with SET (VIDEO, ...) during an
 editing session.  If you want to change the video attribute of a
 window and you do not want the cumulative effect of previous
 attributes, use SET (VIDEO, window, NONE) before specifying the
 new attribute.

 Format
      SET (VIDEO, window, keyword)

 VIDEO      This keyword refers to the video attributes of a window.
 window     The window in which a video attribute is being set. 
 keyword    You must use one of the following keywords:
            NONE, BOLD, BLINK, REVERSE, or UNDERLINE.

 EXAMPLE

 SET (VIDEO, CURRENT_WINDOW, REVERSE);
 SET (VIDEO, CURRENT_WINDOW, UNDERLINE);

 These statements cause the current window to be displayed in
 reverse video and with underlining.
4 WIDTH
 Allows you to specify the width of a window.  If a SET (WIDTH,
 ...) command causes a window to become wider than the screen,
 VAXTPU will change the screen width to 132 columns.  If the screen
 width is 132 columns and a SET (WIDTH, ...) command causes a
 window to be less than 81 columns, VAXTPU will change the screen
 size to 80 if all of the other windows are also less than 81
 columns wide.

 Format
    SET (WIDTH, window, integer)

 WIDTH    This keyword refers to the width of a window.
 window   The window in which the width is being set.
 integer  The value that specifies the width of the window.

 EXAMPLE

 SET (WIDTH, CURRENT_WINDOW, 132)

 This statement causes the current_window to be 132 columns wide.
3 SHIFT
 Changes the relative position of text that is displayed in a
 window on the screen.  The character position that is displayed in
 column 1 on the screen will be shifted to the right or to the
 left.  The shift applies to any buffer associated with the window
 that you specify.  SHIFT optionally returns an integer.

 Format
      [integer2 :=] SHIFT (window, integer1)

 window    The window in which the shift in the position of the text 
           will take place.
 integer1  The signed (+/-) integer that specifies how many columns to 
           shift the text. A positive integer causes the text to shift 
           from the right to the left so that you can see text beyond 
           the right edge of the window. 

           A negative integer causes the text to shift from the left to 
           the right so that you can see text beyond the left edge of 
           the window. If the first character in the line of text is 
           already in column 1, then using a negative integer to shift 
           to the right will have no effect. 

           If you specify 0 as the value, no shift takes place.
4 Examples
 SHIFT (user_window, +5)

 This statement causes the text displayed in user_window to be
 shifted 5 columns to the left.

 SHIFT (CURRENT_WINDOW, -5)

 This statement causes the text displayed in the current_window to
 be shifted 5 columns to the right as long as text exists beyond
 the left margin.
3 SHOW
 Displays information about keyword, data types, and the current
 settings of attributes that can be applied to certain data types.

 Format
      SHOW ({keyword|data type})

 keyword     The following are valid keywords:

             BUFFER[S]--Displays information about all buffers 
                        available to the editor. 
             KEYWORDS---Displays all items in the internal keyword table.
             PROCEDURES-Displays the names of all defined procedures. 
             SCREEN-----Displays information about the terminal.
             SUMMARY----Displays statistics about VAXTPU including the 
                        current version number. 
             VARIABLES--Displays the names of all defined variables. 
             WINDOW[S]--Displays information about all windows available 
                        to the editor. 


 data type   Enter the variable to which a VAXTPU data type is assigned 
             to get information on a particular item. You can use the
             following data types as parameters; buffer, window, and
             string.
4 Example
 SHOW (PROCEDURES)

 This statement displays on the screen a list of all the VAXTPU
 built-ins and the user-written procedures that are available to
 your editing interface.
3 SPAN
 Creates a pattern that will match the longest string of characters
 that contains only characters of the string specified as a
 parameter.

 Format
    pattern := SPAN (string)

 string   A string that contains the characters you want to include in
          the pattern.
4 Example
 pat1 := SPAN ('0123456789')

 This assignment statement creates a pattern that will match the
 longest sequence of digits starting at the current character
 position.






3 SPANL
 Returns a pattern that will match the longest string of characters
 that contains only characters specified in the string used as a
 parameter.  SPANL is similar to SPAN.  However, SPANL considers
 the end-of-line condition as a match and continues the pattern
 beyond the end-of-line.  It will continue the search for a pattern
 until it finds a character that does not appear in the string used
 as a parameter or until an end-of-search condition is found.

 SPANL must match at least one character or it fails.

 Format
    pattern := SPANL (string)

 string     A string that contains the characters you want to include in 
            the pattern.
4 Examples
 pat1 := SPANL (' ')

 This assignment statement stores a pattern in pat1 that will match
 the longest sequence of blank characters starting at the current
 character position and continuing to an end-of-search condition.


 pat2 := SPANL ('0123456789')

 This assignment statement stores in pat2 a pattern that will match
 the longest sequence of digits starting at the current character
 position and continuing to an end-of-search condition.


 pat3 := SPANL ('ABCDEFGHIJKLMNOPQRSTUVWXYZ')

 This assignment statement stores in pat3 a pattern that will match
 the longest sequence of the alphabetic characters listed in the
 parameter.  If you use this pattern with the SEARCH built-in,
 SEARCH starts at the current character position and continues to
 an end-of-search condition.  If you specify an EXACT search, the
 characters must be uppercase for a successful match.
3 SPAWN
 Suspends your VAXTPU process and spawns a VMS subprocess.  After
 completing work in the subprocess, you can return to your VAXTPU
 session with the DCL ATTACH or DCL LOGOUT command.  If you use the
 DCL ATTACH command, the subprocess is available for future use.
 If you use the DCL LOGOUT command, the subprocess is deleted.
 When you return to the VAXTPU session, the screen is repainted.

 If you specify a DCL command as the parameter for SPAWN, the
 command will be executed after the subprocess is created.  When
 the command completes, the subprocess terminates, and control is
 returned to the VAXTPU process.


 Format
    SPAWN [(string)]

 string     A command that you want to send to the subprocess.
4 Example
 SPAWN ('DIRECTORY')

 This command spawns a VMS subprocess and executes the DCL
 DIRECTORY command.  When the command completes, you are returned
 to your VAXTPU session.
3 SPLIT_LINE
 Breaks the current line at the current character position and
 creates two lines.

 Format

      SPLIT_LINE
3 STR
 Converts an integer to a string.

 Format
      string := STR (integer)

 integer    The integer you want to convert to a sting.
4 Examples
 new_numbers := STR (123)

 This assignment statement stores the string "123" in the
 variable new_numbers.


 The following procedure uses the STR built-in to convert the
 integer variable v1 to a string so that your column and row
 position can be displayed in the message area.

 PROCEDURE user_display_position
    v1 := GET_INFO (second_window, "current_column");
    MESSAGE ('Column: ' + STR (v1));
    v2 := GET_INFO (second_window, "current_row");
    MESSAGE ('Row: ' + STR (v2));
 ENDPROCEDURE
3 SUBSTR
 Returns a string that represents a substring of a string or a
 range.

 Format
      string2 := SUBSTR ({string1|range}, integer1, integer2)

 string1  The string that contains the substring.
 range    The range that contains the substring.
 integer1 The character position at which the substring starts. The 
          first character position is 1. 
 integer2 The number of characters to include in the substring.


4 Example
 file_type := SUBSTR ('login.com', 7, 3)

 This assignment statement returns the string "com" in the
 variable file_type.  The substring starts at the seventh
 character position "c" and contains 3 characters "com".  If
 you used a larger number for integer2, for example, 7, the
 variable file_type would still contain "com" and no error
 would be signaled.
3 TRANSLATE
 Invokes the RTL procedure STR$TRANSLATE.  This procedure takes
 three parameters.  Some of the characters in the first parameter
 will be replaced by the characters in the second parameter.  The
 third parameter is used as a match string to determine which
 characters from the first parameter will be replaced.  For more
 information on STR$TRANSLATE, see the VAX/VMS System Routines
 Volumes.

 Format
      TRANSLATE ({string1|range|buffer}, string2 , string3)

 string1   One or more of the characters in this string will be replaced 
           by characters in the translate string (string2). 
 range     One or more of the characters in the range will be replaced 
           by characters in the translate string (string2). 
 buffer    One or more of the characters in the buffer will be replaced 
           by characters in the translate string (string2). 
 string2   The string containing the characters that will be used to 
           replace one or more characters in the first parameter. 
 string3   The match string that determines how the replacement is to 
           be done. The character(s) in the first parameter with the same 
           index as character(s) in string3 will be replaced by string2. 
4 Example
 TRANSLATE (second_buffer, 'I','i')

 This command will replace all lowercase i's in the second buffer
 with uppercase I's.
3 UNDEFINE_KEY
 Removes the current binding from the key that you specify.

 Format
      UNDEFINE_KEY (Keyword)

 keyword   The name of a key or key combination that VAXTPU allows you 
           to define. See KEYNAME_TABLE for a list of valid keynames.
4 Example
 UNDEFINE_KEY (CTRL_Z_KEY)

 This command removes the association between the key
 combination CTRL/Z and the code that it previously executed.
3 UNMAP
 Disassociates a window from its buffer and removes the window from
 the screen.  The window that you unmap is not deleted from the
 list of available windows.  You can cause the window to appear on
 the screen again with MAP.  The screen area of the window you
 unmap is either erased or returned to any windows that had been
 occluded by the window you have unmapped.

 If you unmap the current window, VAXTPU tries to move the cursor
 position to another window that was most recently the current
 window.  The window in which VAXTPU positions the cursor becomes
 the new current window, and the buffer that is associated with
 this window becomes the current buffer.

 Format
      UNMAP (window)

 window   The window you want to remove from the screen.
4 Example
 UNMAP (main_window)

 This command removes the main_window from the screen and
 disassociates the buffer that was mapped to the main_window
 from it.
3 UPDATE
 Causes the screen manager to make a window reflect the current
 internal state of the buffer that is associated with the window.

 Format
      UPDATE (window)

 window    The window you are updating. The window must be mapped to 
           the screen for the update to occur. 




4 Example
 UPDATE (new_window)

 This command causes the screen manager to make new_window
 reflect the current internal state of the buffer associated
 with new_window.
3 WRITE_FILE
 Writes data to the file that you specify.

 Format
      [string2 :=] WRITE_FILE ({buffer|range} [,string1])

 buffer  The buffer whose contents you want to write to a file.
 range   The range whose contents you want to write to a file.
 string1 The file specification to which data is written. If you do not 
         specify a full file specification, VAXTPU uses the current 
         device and directory. This parameter is optional. If you omit 
         it, VAXTPU uses the associated output file name for the buffer. 
         If there is no associated file name, VAXTPU will prompt for one. 
4 Examples
 WRITE_FILE (paste_buffer, 'myfile.txt')

 This statement writes the contents of the paste_buffer to the
 file named myfile.txt.


 my_file := WRITE_FILE (select_range, 'myfile.txt')

 This assignment statement puts the file name to which the
 select_range is written in the string my_file.
2 DATA_TYPES
 Data types are used to interpret the contents of a variable; the
 data type of a variable determines the operations that can be
 performed on it.  Unlike many programming languages, VAXTPU
 permits any variable to have any type of data as a value.  VAXTPU
 has no declaration statement to enforce which data type can be
 assigned to a variable.  VAXTPU variables assume a data type when
 they are placed on the left hand side (LHS) of an assignment
 statement.  The right hand side (RHS) of the assignment statement
 determines the data type of the variable.


 The VAXTPU data types are the following:

  o  Unspecified
  o  Integer
  o  String
  o  Buffer
  o  Window
  o  Marker
  o  Range
  o  Pattern
  o  Program
  o  Process
  o  Learn


 In addition, VAXTPU uses keywords which are internally predefined
 integers.
2 DEBUGGER
 The installation of VAXTPU on your system will place DEBUG.TPU
 (the debugger source file) in SYS$LIBRARY:.  The debugger is
 intended to help new users debug user-written VAXTPU procedures.
 The following instructions explain how to use the VAXTPU debugger:


 1.  Invoke VAXTPU with EDIT/TPU/COMMAND=SYS$LIBRARY:DEBUG.TPU
     [filespec].

 2.  Type in or read in the procedure(s) you wish to debug.

 3.  Compile the procedure(s) (without compilation errors).

 4.  Type DEBUGON (the debugger's setup procedure) after the EDT
     Keypad Emulator's Gold KP7 command prompt or type TPU DEBUGON
     as a DO command from EVE.

 5.  Invoke the procedure that is to be debugged.

 6.  The VAXTPU debugger will prompt for a source file name (Press
     RETURN if the source is already in the current buffer).

 7.  If, while debugging the procedure, you detect an error and
     wish to change the program, exit the debugger (use a G command
     or X SET(DEBUG,OFF,ALL) followed by a G command), edit your
     program, and type DEBUGON again.



 The VAXTPU debugger has 5 basic commands (all single character
 commands):

  o  s - single step to next line

  o  g - go to next breakpoint (or stop debugging if no more
     breakpoints)

  o  h - help

  o  e - examine variable followed by name of variable

  o  x - Execute followed by TPU command to execute


 (Pressing the RETURN key at the prompt will also do a single step
 command)

3 EXAMPLES
 To debug the following procedure contained in the file TEST.TPU:

         PROCEDURE TEST
         var:='abc';
         var:=12;
         ENDPROCEDURE

 1.  Invoke TPU with the command EDIT/TPU/SECTION=EDTSECINI
     /COMMAND=SYS$LIBRARY:DEBUG test.tpu

 2.  Type Gold KP7 in the EDT interface

 3.  Type COMPILE(main_buffer) in response to the "TPU Command:"
     prompt

 4.  Type Gold KP7 in the EDT interface

 5.  Type DEBUGON in response to the "TPU Command:" prompt

 6.  Type TEST in response to the "Name of Procedure to Debug:"
     prompt

 7.  Type Gold KP7 in the EDT interface

 8.  Type TEST in response to the "TPU Command:" prompt

 9.  Type the return key in response to the "Need source (file
     spec):" prompt

10.  Type H to the debugger

11.  Type S to the debugger

12.  Type E var to the debugger

13.  Type S to the debugger

14.  Type E var to the debugger

15.  Type X MESSAGE("this is a test") to the debugger

16.  Type G to the debugger

2 KEYWORDS
 VAXTPU keywords are predefined integer values.  Keywords can be
 used as parameters for VAXTPU built-in procedures.  Keywords
 beginning with TPU$_ are used to report status conditions.  An
 alphabetic list of the VAXTPU keywords can be displayed on the
 screen by using the SHOW (KEYWORDS) command after the appropriate
 prompt from your editing interface.

 For a list of the keywords used to identify the keys of a terminal
 keyboard, see the HELP entry KEYNAME_TABLE.
2 KEYNAME_TABLE
 Keynames are VAXTPU keywords used to identify the keys of a
 terminal keyboard.  The following table shows the correspondence
 between VAXTPU keynames and the keys on the VT100 and VT200 series
 of keyboards:

   TPU KEYNAMES FOR THE EDITING AND AUXILIARY KEYPAD

 TPU Keyname             LK201           VT100-type
 -----------------------------------------------------------
 PF1                     PF1             PF1
 PF2                     PF2             PF2
 PF3                     PF3             PF3
 PF4                     PF4             PF4
 KP0,KP1,...,KP9         0,1,...,9       0,1,...,9
 PERIOD                  .               .
 COMMA                   ,               ,


 TPU Keyname (cont.)     LK201           VT100-type
 -----------------------------------------------------------
 MINUS                   -               -
 ENTER                   Enter           Enter
 UP                      Up-arrow        Up-arrow
 DOWN                    Down-arrow      Down-arrow
 LEFT                    Left-arrow      Left-arrow
 RIGHT                   Right-arrow     Right-arrow
 E1                      Find/E1
 E2                      Insert-here/E2
 E3                      Remove/E3
 E4                      Select/E4
 E5                      Prev-screen/E5
 E6                      Next-screen/E6
 HELP                    Help/F15
 DO                      Do/F16
 F6,F7,...,F20           F6,F7,...,F20


          TPU KEYNAMES FOR KEYS ON THE MAIN KEYBOARD

 TPU Keyname             LK201           VT100-type
 ---------------------------------------------------------
 TAB_KEY                 Tab             Tab
 RET_KEY                 Return          Return
 DEL_KEY                 <X]             Delete
 LF_KEY                                  Line-feed
 BS_KEY                                  Back-space
 CTRL_A_KEY              Ctrl/A *        CTRL/A *
 CTRL_B_KEY              Ctrl/B          CTRL/B
      .                    .               .
      .                    .               .
      .                    .               .
 CTRL_Z_KEY              Ctrl/Z          CTRL/Z

    * CTRL/A refers to the "A" key being pressed together with
      the CTRL key. "A" and "a" produce the same results. 
2 SYNTAX
 The syntax rules for writing VAXTPU programs are very simple.  You
 must separate each executable statement from other statements with
 a semicolon.  In a program, you must position all procedure
 definitions before any executable statements that are not part of
 a procedure definition.  The following example shows the correct
 syntax for a VAXTPU program:

  PROCEDURE...ENDPROCEDURE 
            .
            .
            .
  statement-1;
            .
            .
            .


 Following is a variety of syntactically correct VAXTPU programs:

 !Program 1
 !This program consists of a single VAXTPU built-in procedure.

    SHOW (KEYWORDS)


 !Program 2
 !This program consists of an assignment statement that 
 !gives a value to the variable edt$x_video.

    edt$x_video








 !Program 3
 !This program consists of a series of VAXTPU statements, 
 !including the LOOP statement (with a condition for exiting) 
 !and the VAXTPU built-in ERASE_LINE.

   x := 0; LOOP x :=x+1; EXITIF x > 100; ERASE_LINE; ENDLOOP


 !Program 4
 !This program consists of a single procedure that causes VAXTPU
 !to accept "qui" as the command that signals a quit operation. 

    PROCEDURE qui
    QUIT;         ! do VAXTPU quit operation
    ENDPROCEDURE




 !Program 5
 !This program is a collection of procedures that
 !causes VAXTPU to accept "e", "ex", or "exi" as 
 !the command for a VAXTPU exit operation. The procedures
 !are followed by a statement that is a key definition.
         
    PROCEDURE e
    EXIT         ! do VAXTPU exit operation
    ENDPROCEDURE

    PROCEDURE ex
    EXIT
    ENDPROCEDURE

    PROCEDURE exi
    EXIT
    ENDPROCEDURE

    DEFINE_KEY ('POSITION (my_window)', CTRL_E_KEY, 'pos_wind')

 The source code files that create EVE (SYS$LIBRARY:EVESECINI.TPU)
 and the EDT Keypad Emulator (SYS$LIBRARY:EDTSECINI.TPU) are also
 good examples of correct VAXTPU syntax.

