.lm 0 .rm 76
1 ALPHA
.br
The ALPHA command is used to display in either ASCII or EBCDIC
depending on the current SET CHARSET mode.  Operation is identical
to the ASCII and EBCDIC commands in all other respects.  The default
mode is ASCII.
.bl
Format:
.bl .lm +3
   A(LPHA)[/P(ASTE)]  [range]
.bl .lm +3
      See ASCII or EBCDIC for parameter specification.
.br .lm -6
1 ASCII
.br
The ASCII command is used to display the contents of the current
buffer (plus following blocks/records, if specified) in ASCII.
Non-printing characters are shown as periods.  There are 64 or 96
characters/line.  Output is aligned on quadword boundaries.
.bl
Format:
.bl .lm +3
   AS(CII)[/P(ASTE)]  [range]
.bl .lm +3
      [range] must begin within the limits of the current buffer.  If it
      overflows beyond the current buffer, subsequent blocks/records are
      displayed, and the user is positioned at the last block/record read.
.bl
      If [range] is omitted, the current buffer is dumped in its entirety.
.bl
      If the /PASTE qualifier is used, the paste buffer is displayed.  In
      this case, [range] must not overflow the size of the paste buffer.
      If omitted, the entire paste buffer is displayed.
.br .lm -6
1 ADD
.br
The ADD command is used to add one or more signed numbers (longwords)
and display the result in decimal and hex.  The numbers can be given
in hex, decimal, or octal.  Decimal output is normally signed unless
the SET#NOSIGN command has been given.
.br
Format:
.bl .lm +3
   AD(D)  number1[,number2,...,numbern]
.lm +12
.p -9;[number] can optionally have a leading + or - sign and can
               have one of the following formats:
.bl .lm -6
         nnnnnnnnn - Decimal
.bl
         0nnnnnnnnnn - Octal
.bl
         Hnnnnnnnn - Hex ("H" must be used regardless of the current radix)
.br .lm -9
1 BINARY
.br
This command is used to display the contents of the current buffer (plus
following blocks/records, if specified) in binary format.  There are 8 or
12 bytes/line.  Output is nonaligned (starts at the first address given).
.bl
Format:
.bl .lm +3
   B(INARY)[/P(ASTE)]  [range]
.bl .lm +3
      [range] must begin within the limits of the current buffer.  If it
      overflows beyond the current buffer, subsequent blocks/records are
      displayed, and the user is positioned at the last block/record read.
.bl
      If [range] is omitted, the current buffer is dumped in its entirety.
.bl
      If the /PASTE qualifier is used, the paste buffer is displayed.  In
      this case, [range] must not overflow the size of the paste buffer.
      If omitted, the entire paste buffer is displayed.
.br .lm -6
1 CHANGE
.br
The CHANGE command is used to modify the current buffer.  This does not
alter the file unless the changed buffer is written back to the file (via
PUT, WRITE or UPDATE).  If the change-string would overflow the buffer,
nothing is changed.  This command can only be used when writing is enabled.
If using record access, the record must also be locked first (see LOCK).
.bl .lm +3
   C(HANGE)  [begin[,change-string]]
.lm +11
.p -8;[begin] if numeric, is the first byte to change.  An asterisk (*) can
              be used if the current buffer contains a found target of a
              previous LOCATE, in which case the target address is used.
.p -8;[change-string] can have one of the following formats:
.lm +3
.p -8;   nnnnn - Unsigned hex string of numbers.  These are placed in
                 the buffer in the order given, right-justified to the
                 nearest byte.  Any number of leading zeroes and up to
                 8 significant digits may be used.
.p -8,0; +nnnn
.p -8;   -nnnn - Signed decimal.  Can be byte, word, or longword.  Context
                 is determined by the size of the number, including leading    
                 zeroes.  Stored in normal (reversed) format.
.p -8,1; "xxx" - Character string.  Single or double quotes are permitted.
                 The character set used is specified by SET CHARSET.  ASCII
                 is assumed if none is specified.
.bl .lm -11
      If [change-string] is omitted, the previous change string is used.  If
      both parameters are omitted, the previous string is used at the last
      found target address within the current buffer.
.br .lm -6
1 CREATE
.br
The CREATE command is used to set up the current buffer for creation of a
new record.  It can only be used when a file is accessed in record mode and
when writing is enabled.  The current buffer is dissociated with a record
in the file and the record number is replaced with the symbol *NR* in the
command prompt, which indicates a new record.  When the buffer contents are
correct, the PUT command can be used to write the new record to the file.
If a file positioning command is given before the PUT, operation reverts
to normal and a new record is not created.  CREATE can be used with
sequential files only if positioned at the end of the file.
.bl
Formats:
.bl .lm +3
   CR(EATE) [size]
.br
   CR(EATE)/P(ASTE) [size]
.br
   CR(EATE)/N(ULL) [size]
.bl .lm +3
      [size] specifies the size of the new record.  It must be less than
      or equal to the maximum record size for the file.  If editing an
      indexed file, [size] must be large enough to contain the primary
      key and the current key of reference.  If not specified, [size]
      defaults to the size of the previous record.
.bl
      By default, the current buffer remains filled with the contents of
      the previous record, truncated or zero-filled if [size] is different.
      If the /PASTE option is specified, the paste buffer contents are
      used to fill the buffer, and [size] defaults to the paste buffer size.
      If the /NULL option is specified, the entire buffer is cleared.
.br .lm -6
1 CUT
.br
The CUT command copies all or part of the current buffer into the paste buffer.
This is secondary buffer which can be recopied into the current buffer at any
time via the PASTE command or compared with it via the DIFFERENCES command.
See HELP BUFFERS for more information.
.bl
Format:
.bl .lm +3
   CU(T)  [range]
.bl .lm +3
      [range] must be entirely within the current buffer.  If only the
      beginning byte is specified, that address thru the end of the current
      buffer is copied.  If [range] is omitted, the entire contents of the
      current buffer are copied.
.bl
      Data within the paste buffer always begins at byte 0.  The range used
      with the last CUT command is saved, however, and used as a default for
      subsequent uses of the data (DIFFERENCES and PASTE).
.br .lm -6
1 DIFFERENCES
.br
This command compares all or part of the paste buffer, beginning at the first
byte, with the specified range within the current buffer.  If differences are
found, the contents of the current buffer are printed (in hex) with the
corresponding contents of the paste buffer directly below.  32 or 48 sequential
bytes are displayed per line.  Matching paste buffer bytes on the second line
are displayed as periods.  Output is longword-aligned.
.bl
Format:
.bl .lm +3
   D(IFFERENCES)  [range]
.bl .lm +3
      [range] must be entirely within the current buffer.  If only the
      beginning byte is specified, the comparison count defaults to the
      smaller of the paste buffer size or the remaining bytes of the
      current buffer.
.bl
      If [range] is omitted, the range given with the last CUT command which
      moved data into the paste buffer is used.
.br .lm -6
1 DATE
.br
The DATE command displays one or more sequential quadwords from the
current buffer in system date format.  Only date values which exist
entirely within the buffer can be displayed.
.bl
Format:
.bl .lm +3
   DA(TE)[/P(ASTE)]  range
.bl .lm +3
      The beginning byte of [range] must be specified.  If no count
      or ending byte is given, a single date value is displayed.
.bl
      If the /PASTE qualifier is given, data from the paste buffer
      is displayed.
.br .lm -6
1 DELETE
.br
The DELETE command deletes the current record.  It can only be used when
an indexed or relative
file is accessed in record mode and when writing is enabled.  The record
must also be locked prior to using this command.  If successful, the user
is positioned at the preceding record or top of file after deletion.
.bl
Format:
.bl .lm +3
   DE(LETE)
.br .lm -3
1 EBCDIC
.br
The EBCDIC command is used to display the contents of the current
buffer (plus following blocks/records, if specified) in EBCDIC.
Non-printing characters are shown as periods.  There are 64 or 96
characters/line.  Output is aligned on quadword boundaries.
.bl
Format:
.bl .lm +3
   EB(CDIC)[/P(ASTE)]  [range]
.bl .lm +3
      [range] must begin within the limits of the current buffer.  If it
      overflows beyond the current buffer, subsequent blocks/records are
      displayed, and the user is positioned at the last block/record read.
.bl
      If [range] is omitted, the current buffer is dumped in its entirety.
.bl
      If the /PASTE qualifier is used, the paste buffer is displayed.  In
      this case, [range] must not overflow the size of the paste buffer.
      If omitted, the entire paste buffer is displayed.
.br .lm -6
1 EOF
.br
This command is useful when editing most VMS files in block mode.  The
software EOF block and EOF byte are displayed and the user is positioned
at the EOF block.  When editing files in record mode or devices, this
command operates the same as the LAST command.
.bl
Format:
.bl .lm +3
   EO(F)
.br .lm -3
1 EXIT
.br
The EXIT command terminates VFE.
.bl
Format:
.bl .lm +3
   E(XIT)
.br .lm -3
1 FILE
.br
This command specifies the name of the next file or device to edit.
.bl
Format:
.bl .lm +3
   F(ILE)  [name][/qualifier(s)]
.bl .lm -3
The name can be any valid file/device name.  If not given on the command
line, the name is solicited.  If a single asterisk (*) is specified, the
previous file or device is re-opened for edit with new qualifiers as desired.
If [name] is a device, block access is required.  If [name] contains a
network specification, record access is required.  Either access mode will
operate with a local VMS file on disk.
.bl
When a valid file/device name is supplied, the previous file/device is closed
and the new one is opened for edit.  If a VMS disk file name is given, the
user is positioned at virtual block 1 (or record 1) of the new file and its
contents are read into the current buffer.  If a disk device is specified,
the user is positioned at logical block 0.  LOG__IO privilege is required
to edit a disk device.  If a tape device is specified, the tape is rewound
and the user is positioned at the first block of the tape.  The tape must be
mounted FOREIGN.
.br .rm -2
2 /BLOCK
.br
This qualifier specifies block-mode access, which is the default unless
record access was used with the previous file.
.br
2 /RECORD
.br
This qualifier specifies record access.  This access mode is valid only
for VMS user files which reside on disk.  Once specified, record access
will be used for all subsequent files until the /BLOCK qualifier is given.
.br
2 /KEY=keyid
.br
This qualifier is used to specify the key of reference when editing an
indexed file in record mode.  If used, [keyid] is required, with zero
indicating the primary key or a higher number indicating a secondary
key.  If this qualifier is not specified, the key of reference defaults
to the primary key.
.br
2 /NOREWIND
.br
This qualifier can be used to specify that the tape being edited should
not be rewound.  A single read operation is performed at the current
tape position and the block number is set to zero.
.br
2 /OVERRIDE
.br
This qualifier is used to override a file interlock when editing a VMS
disk file.  It cannot be used in conjunction with /WRITE.  When using
block mode, SYSPRV is required and all interlocks are bypassed.  When
using record mode, any additional access granted is usually very
limited regardless of user privilege.
.br
2 /POSITION
.br
This qualifier is used  to pre-specify a tape position.  The /NOREWIND
qualifier is assumed when /POSITION is given when editing a tape.
.bl .lm +3
   /POSITION=([file:]block)
.bl .lm +3
      [file] is optional.  If not given, it defaults to one.
.bl
      [block] must be specified.  The tape is backspaced one block
      and a single read is done.  In this way, the tape remains
      positioned at the same location as it was before.  When editing
      a tape that was previously examined with VFE and the position
      is unchanged, use the same file and block numbers that were last
      shown for the tape.
.bl
      Parenthesis are used only if both parameters are given.
.br .lm -6
2 /WRITE
.br
This qualifier allows subsequent use of the WRITE command.  If not given
when the file is opened, the file will be in read-only mode and no changes
will be allowed.  Only VMS disk files and disk devices which are mounted
FOREIGN can be modified with VFE.  Tapes and XQP-managed disk devices can
only be edited in read-only mode.  Use of the /OVERRIDE qualifier is not
allowed when /WRITE is specified.
.br .rm +2
1 GET
.br
This command positions the user at a desired block/record.  The data
from the file is read into the current buffer.  See HELP POSITIONING
for an abbreviated form of GET.  More information is available for
either of the two access modes.
.br .rm -2
2 block-mode
.br
For disk files or devices, this command reads one or more blocks (depending
on the setting of SET BUFF) into the current buffer, beginning at the block
specified, and positions the user at that block.  If the block selected is
outside the limits of the current file, the user will be left positioned
at the same block and the current buffer will remain unaffected.  For tape
files, the read will always be attempted.  Tape movement stops when an
end-of-file mark is encountered in either the forward or reverse direction.
.bl
Format:
.bl .lm +3
   G(ET)  block
.bl .lm +3
      [block] is specified in decimal numeric.
.br .lm -6
2 record-mode
.br
This command reads the selected record into the current buffer, and
positions the user at that record.  There are three different ways to
obtain the record, depending on the type of file being edited.
.bl
Formats:
.bl .lm +3
   G(ET)  record
.br
   G(ET)/K(EY)  key
.br
   G(ET)/R(FA)  num1:num2
.bl .lm +3
      The first form of this command sequentially reads the record with
      the number specified by [record] (unsigned decimal numeric).  This
      is relative to the first record in the file or the most recent keyed
      or RFA record lookup, with 1 being the first record.
.bl
      The second form of this command is available only for random access
      files.  It reads the first record in the file with the current key
      of reference greater than or equal to the key specified (or less than
      or equal to it if editing a file sorted in descending key sequence).
      [key] can be specified in any of the formats available with the
      LOCATE command.  After a successful keyed lookup, all record numbers
      become relative to this record, and the user cannot sequentially
      read those records which precede it without first doing another
      keyed or RFA lookup, or positioning at top of file (TOP command).
.bl
      The third form reads the record with the RFA (record file address)
      as specified by the two numbers, both of which are required.  When
      editing a sequential file, the first part if the RFA is the block
      containing the start of the record and the second part is the
      offset within the block of the start of the record.  For other
      file organizations, RFA determination is more complex.  The RFA
      of the current record can be displayed by using the SHOW FILE
      command.  After a successful RFA lookup, record positioning
      operates the same as after a keyed lookup.
.br .lm -6 .rm +2
1 HEX
.br
The HEX command is used to display the contents of the current buffer
(plus following blocks/records, if specified) in hexadecimal.  There are
32 or 48 bytes/line.  Display output is aligned on longword boundaries.
Bytes are dumped in the order in which they occur in the file, from
left to right.
.bl
Format:
.bl .lm +3
   H(EX)[/P(ASTE)]  [range]
.bl .lm +3
      [range] must begin within the limits of the current buffer.  If it
      overflows beyond the current buffer, subsequent blocks/records are 
      displayed, and the user is positioned at the last block/record read.
.bl
      If [range] is omitted, the current buffer is dumped in its entirety.
.bl
      If the /PASTE qualifier is used, the paste buffer is displayed.  In
      this case, [range] must not overflow the size of the paste buffer.
      If omitted, the entire paste buffer is displayed.
.br .lm -6
1 IBYTE
.br
This command is used to display the contents of the current buffer (plus
following blocks/records, if specified) in integer byte format.  Values are
signed unless the SET NOSIGN command has been given.  There are 16 or 24
bytes/line.  Output is nonaligned (starts at the first address given).
.bl
Format:
.bl .lm +3
   I(BYTE)[/P(ASTE)]  [range]
.bl .lm +3
      [range] must begin within the limits of the current buffer.  If it
      overflows beyond the current buffer, subsequent blocks/records are 
      displayed, and the user is positioned at the last block/record read.
.bl
      If [range] is omitted, the current buffer is dumped in its entirety.
.bl
      If the /PASTE qualifier is used, the paste buffer is displayed.  In
      this case, [range] must not overflow the size of the paste buffer.
      If omitted, the entire paste buffer is displayed.
.br .lm -6
1 IWORD
.br
This command is used to display the contents of the current buffer (plus
following blocks/records, if specified) in integer word format.  Values are
signed unless the SET NOSIGN command has been given.  There are 8 or 16
words/line.  Words are displayed in normal (reverse) order - the first
byte of each 2-byte word pair is assumed to be least significant.
.bl
Format:
.bl .lm +3
   IW(ORD)[/P(ASTE)]  [range]
.bl .lm +3
      [range] must begin within the limits of the current buffer.  If it
      overflows beyond the current buffer, subsequent blocks/records are 
      displayed, and the user is positioned at the last block/record read.
      Words which span blocks are printed as if they were contained in
      the first block.  Words which span records are ignored.
.bl
      If [range] is omitted, the current buffer is dumped in its entirety.
.bl
      If the /PASTE qualifier is used, the paste buffer is displayed.  In
      this case, [range] must not overflow the size of the paste buffer.
      If omitted, the entire paste buffer is displayed.
.br .lm -6
1 ILONG
.br
This command is used to display the contents of the current buffer (plus
following blocks/records, if specified) in integer longword format.  Values
are signed unless the SET NOSIGN command has been given.  There are 4 or 8
longwords/line.  Longwords are displayed in normal (reverse) order - the
first byte of each 4-byte longword is assumed to be least significant.
.bl
Format:
.bl .lm +3
   IL(ONG)[/P(ASTE)]  [range]
.bl .lm +3
      [range] must begin within the limits of the current buffer.  If it
      overflows beyond the current buffer, subsequent blocks/records are 
      displayed, and the user is positioned at the last block/record read.
      Longwords which span blocks are printed as if they were contained
      in the first block.  Longwords which span records are ignored.
.bl
      If [range] is omitted, the current buffer is dumped in its entirety.
.bl
      If the /PASTE qualifier is used, the paste buffer is displayed.  In
      this case, [range] must not overflow the size of the paste buffer.
      If omitted, the entire paste buffer is displayed.
.br .lm -6
1 LOCATE
.br
This command is used to find the next occurrence of a target string
or number within the file being edited.
.bl .lm +3
   L(OCATE)  [target]
.lm +12
.p -9;[target] is the target string or number.  If not specified, the
               previous target is used.  The following formats are allowed:
.lm +2
.p -8;   nnnnn - Unsigned hex string of numbers.  These are searched for
                 in the order given, right-justified to the nearest byte.
                 Any number of leading zeroes and up to 8 significant
                 digits may be used.
.p -8,0; +nnnn
.p -8;   -nnnn - Signed decimal.  Can be byte, word, or longword.  Context
                 is determined by the size of the number, including leading    
                 zeroes.  Searched for in normal (l.s.#to m.s.) format.
.p -8,1; "xxx" - Character string.  Single or double quotes are permitted.
                 The character set used is specified by SET CHARSET.  ASCII
                 is the default.  String locate operations are case sensitive
                 unless the SET NOCASE command has been given.
.br .lm -17
1 LGLOBAL
.br
This command finds all of the remaining occurrences of the target number
or string within the file being edited.
.bl
Format:
.bl .lm +3
   LG(LOBAL)  [target]
.bl .lm +3
      [target] is specified exactly as with LOCATE.
.bl
      When an entire disk file or device has been searched, the user is
      repositioned at the block/record where the search began.  When using 
      tape, the position is left at the last block within a logical file.
.br .lm -6
1 LAST
.br
In record access mode, this command positions the user at the last record
in the file.  In block access mode, the user is positioned at the highest
allocated block of the file.   Due to minimum extent granularity, this may
be higher than the last block currently storing user data.  As a result,
its contents may be meaningless - this should not be taken as a sign of
file corruption.
.bl
When using tape, the user is positioned at the last block within the
current logical file.
.bl
Format:
.bl .lm +3
   LA(ST)
.br .lm -3
1 LOCK
.br
This command can only be used when editing in record access mode and when
writing is enabled.  The record is reread with the record lock option and
changes are allowed.  This command is required before the CHANGE, SUBSTITUTE,
PASTE, SET LENGTH, UPDATE or DELETE commands can be used.  The lock is
released whenever an UPDATE or DELETE command, or any command that reads the
same or a different record, is given.
.bl
Format:
.bl .lm +3
   LOCK
.br .lm -3
1 MULTI
.br
This command is used to display the contents of the current buffer (plus
following blocks/records, if specified) in hex and character format.
The character set used is determined by SET CHARSET (ASCII is the default).
Non-printing characters are shown as periods.  There are 32 or 48 bytes
displayed per line, with the hex values displayed beneath and aligned with
the characters.  Output is aligned on longword boundaries.
.bl
Format:
.bl .lm +3
   M(ULTI)[/P(ASTE)]  [range]
.bl .lm +3
      [range] must begin within the limits of the current buffer.  If it
      overflows beyond the current buffer, subsequent blocks/records are 
      displayed, and the user is positioned at the last block/record read.
.bl
      If [range] is omitted, the current buffer is dumped in its entirety.
.bl
      If the /PASTE qualifier is used, the paste buffer is displayed.  In
      this case, [range] must not overflow the size of the paste buffer.
      If omitted, the entire paste buffer is displayed.
.br .lm -6
1 MOVE
.br
This command moves a tape in the forward or reverse direction past a
specified number of end-of-file marks.
.bl
Format:
.bl .lm +3
   MO(VE)  [offset]
.lm +12
.p -9;[offset] is a decimal numeric with optional + or - sign.  If omitted,
               the number one (1) is assumed, which will position forward
               to the next end-of-file mark on the tape.  Reverse direction
               is indicated by a negative offset.
.br .lm -15
1 NEXT
.br
This command positions the user to a block/record with a relative offset to
the current one.  Contents of the requested block/record are read into the
current buffer.  When using tape, tape movement stops when an end-of-file
marker is encountered prior to locating the requested block.
.bl
Format:
.bl .lm +3
   N(EXT)  [offset]
.lm +12
.p -9;[offset] is a decimal numeric with optional + or - sign.  If omitted,
               the number one (1) is assumed, which will position to the
               block/record immediately following the current one.
.bl .lm -15
When editing a disk file or device in block mode, the value of [offset] is
usually multiplied by the value determined by SET BUFF.
.bl
See HELP POSITIONING for abbreviated forms of NEXT.
.br
1 PASTE
.br
The PASTE command writes all or part of the paste buffer to the current
buffer.  File positioning is not affected, and if a WRITE, PUT or UPDATE
command is issued before another command causes a read, the positioned
record or block(s) within the file will be overwritten.  Judicious use of
the CUT and PASTE commands can be used to transfer entire or partial
records (record mode) or "chunks" of data (block mode) within a single file
or between files.  EXTREME CAUTION is advised for users of this command!
.bl
Format:
.bl .lm +3
   P(ASTE)  [range]
.bl .lm +3
      Data is transferred serially from the first byte of the paste
      buffer into the specified area of the current buffer.  [range] must
      be entirely within the current buffer.  If a range exceeds the size
      of the paste buffer, the remainder is zero-filled.  If it is smaller,
      only that many bytes are transferred.
.bl
      If only the beginning byte of [range] is given, the transfer count
      is taken to be the size of the paste buffer.  If [range] is omitted
      entirely, the range given with the last CUT command is used.
.bl
      The size of the current buffer is never changed by the PASTE command.
.br .lm -6
1 PUT
.br
The PUT command is used to write the new record created by the CREATE
command to the file.  It can only be used in record mode editing and
only after a CREATE.  After the new record is written successfully, it is 
assigned the next highest record number for sequential files or assigned
record number 1 for indexed files.  In the latter case, records which
precede it in the defined sort order of the current key of reference
cannot be read sequentially until a keyed or RFA read is done or the
TOP command is used to position to the top of the file.
.bl
Format:
.bl .lm +3
   PU(T)
.br .lm -3
1 RECORD
.br
The RECORD command is used to display one or more records of a file
in character format, as determined by SET CHARSET.  ASCII is the default.
Nonprinting characters are printed as periods.  The file can be either
fixed, variable, or VFC formatted.  There are two display modes, as
determined by SET HEADER.  More information is available depending on
the access mode of the file being edited.
.br .rm -2
2 block-mode
.br
The RECORD command can be used in block mode only when editing a disk 
file that is organized sequentially.  In this case, VFE will evaluate the
file structure and print the records in sequential order.  When using
this command in block mode with HEADER mode on, the numbers preceding
the records in the display are byte offsets within the current block.
.bl .lm +3
   R(ECORD)  [begin][,count]
.bl .lm +3
      [begin] for fixed length records is the byte offset within the current
      buffer of the first record to print.  For variable/VFC records, it is
      the address of the record length word for that record.  Since all
      records begin on a word boundary, if [begin] is odd, it will round up.
.bl
      If [begin] is omitted and the user is positioned at the same block
      where a previous RECORD command was given, the address of the following
      record is used.  Otherwise, if [begin] is omitted, the current buffer
      is searched for the first likely record start address and that is used.
      (This process is not 100% accurate, but works well with short records.)
.bl
      [count] is the count of records to be printed.  If [count] and/or the
      record lengths are sufficiently large, processing may continue into
      blocks following the current buffer.  When processing is completed,
      the user is positioned at the last block read.  If not specified,
      [count] defaults to the previous value used.
.br .lm -6
2 record-mode
.br
The RECORD command can be used with any type of file organization when
the file is accessed in record mode.  When used with HEADER mode on, the
numbers preceding each record in the display are the record numbers
within the file.
.bl
Format:
.bl .lm +3
   R(ECORD)  [begin][,count]
.bl .lm +3
      [begin] is the first record number to print.  If omitted, the
      current record is printed first, unless it had just been printed
      by a previous RECORD command, in which case the following record
      is the first one to print.
.bl
      [count] is the count of records to print.  If omitted, it defaults
      to the previous value used, or one.  When processing is completed,
      the user is positioned at the last record printed.
.br .lm -6 .rm +2
1 REWIND
.br
This command rewinds the tape being edited and positions the user at the
first block of the first file.
.bl
Format:
.bl .lm +3
   RE(WIND)
.br .lm -3
1 SET
.br
This command is used to set/clear various modes and indicators.
.br .rm -2
2 BUFF
.br
This option determines the size of the current buffer for block mode
disk operations.  It has no effect when editing tape or record mode disk.
.bl
Format:
.bl .lm +3
   SE(T)  B(UFF)=count
.bl .lm +3
      The [count] parameter is a decimal numeric in the range of 1-50 and
      must be specified.  This determines the block count for each read
      operation.  Large buffer sizes can be used to transfer data that
      crosses block boundaries with CUT and PASTE, and to compare large
      areas with the DIFFERENCES command.  The default value of [count] is
      one (1), and it is recommended that this value be used for most VFE
      operations.  When a large buffer size is used, addressing is relative
      to the first block read, and this can be confusing when data is
      displayed from subsequent blocks which reside in the same buffer.
.bl
      Note that if [count] exceeds the block size of the current buffer,
      the size will not be expanded until the next read is performed.
.bl
      The setting of this parameter has no effect on the efficiency of
      LOCATE or LGLOBAL, which always use a 50-block buffer for disk searches.
.br .lm -6
2 CASE
.br
This option determines whether character string search operations
(LOCATE, LGLOBAL) are case-sensitive.  Case-sensitive searches require
less than 50% of the CPU time required by case-insensitive searches.
The default mode is case-sensitive.  Operation is valid for either
supported character set (ASCII or EBCDIC).  The setting of this option
can also affect the operation of the SUBSTITUTE command.
.bl
Format:
.bl .lm +3
   SE(T)  [NO]C(ASE)
.bl .lm +3
      CASE mode is case-sensitive, NOCASE is case-insensitive.
.br .lm -6
2 CHARSET
.br
This option is used to determine the character set used for display,
change, and search operations.  The default character set is ASCII.
.bl
Format:
.bl .lm +3
   SE(T)  CH(ARSET)=A(SCII)
.br
   ###############=E(BCDIC)
.br .lm -3
2 DISPLAY
.br
This option is used to enable or disable local printing at the terminal.
The standard mode is DISPLAY.  If logging is enabled (see SET LOG) and
the SET NODISPLAY command has been given, only command solicitation and
single-line output (such as error messages) is displayed at the terminal.
Other output is written only to the log file.
.bl
Format:
.bl .lm +3
   SE(T)  [NO]D(ISPLAY)
.br .lm -3
2 HEADER
.br
This option controls buffer contents when editing a VFC file in record
mode, and also affects the printed output of the RECORD command.
.bl
Format:
.bl .lm +3
   SE(T)  [NO]H(EADER)
.bl
   HEADER mode is the default.
.br .lm -3 .rm -2
3 buffer-contents
.br
When HEADER mode is set and a VFC file is being edited in record mode,
the VFC contents are included at the beginning of the current buffer.
The buffer size is therefore the VFC length plus the record length, and
the VFC is displayed and is available for modification.  When HEADER mode
is disabled (SET NOHEADER) the VFC is not included in the buffer contents,
and will be unchanged if the record is modified.  HEADER mode must be
on when a new record is created (CREATE command).  If it is not on when
this command is given, it will be turned on.
.br
3 RECORD-output
.br
When HEADER mode is set, each record displayed is preceded by its
byte offset (block mode) or record number (record mode).  Up to
8 bytes of the VFC field are displayed (in hex) for VFC files.
Nonprinting characters are replaced with periods.  If editing in
block mode, each new block number is shown as the block is read.
.bl
NOHEADER mode produces output similar to the VMS TYPE command.
Addresses, VFCs, and block numbers are suppressed.  Nonprinting
characters are replaced with periods, except for tabs, which are
replaced with the correct number of spaces.
.br .rm +2
2 KEY
.br
This option is used to select the key of reference when editing
an indexed file in record mode.
.bl
Format:
.bl .lm +3
   SE(T)  K(EY)=keyid
.bl .lm +3
      [keyid] is the desired key of reference with zero being the
      primary key.  If [keyid] is different than the current key of
      reference, the file is repositioned at the top according to
      the defined sort order of the new key of reference.
.br .lm -6
2 LENGTH
.br
This option is used to change the size of the current buffer.  It
can only be used when an indexed file is accessed in record mode and
when writing is enabled.  If positioned at an existing record within
the file, the record must be locked.  A subsequent UPDATE will then
change the length of the record in the file.
.bl
Format:
.bl .lm +3
   SE(T) LE(NGTH)=size
.bl .lm +3
      [size] is required.  It is specified in decimal numeric.  It must
      be less than or equal to  the maximum record size for the file, and
      must be large enough so the current buffer can contain the primary
      key and the current key of reference.
.br .lm -6
2 LOG
.br
This option is used to enable or disable logging of VFE output to a user
file.  All output and input is written to the file.  The log file is
closed when another SET LOG command is given or when VFE terminates.
.bl
Formats:
.bl .lm +3
   SE(T)  L(OG)[=filename]
.br
   SE(T)  NOL(OG)
.lm +14
.p -11;[filename] is any legitimate VAX file descriptor.  Device and
                 directory are optional.  If this parameter is omitted
                 entirely, the file VFE.LOG is created in the current
                 default directory.  A new version is created each time
                 the SET LOG command is used.
.br .lm -17
2 POSITION
.br
This option is used to change the indicated position of a tape file.
It does not change the physical position of the tape or do any I/O to
the tape device.
.bl
Format:
.bl .lm +3
   SE(T)  P(OSITION)=([file:]block)
.lm +10
.p -7;[file] if specified, is a decimal numeric which replaces the
             current file number.
.lm +1
.p -8;[block] is required.  It is a decimal numeric, and replaces the
              current block number.
.bl .lm -8
      Parenthesis are used only if if both parameters are given.
.br .lm -6
2 RADIX
.br
This option determines the base of all byte addresses given on command
lines and shown in display output.  The [begin] and [end] fields of
all range specifications and the [begin] field of the CHANGE command
are affected.  Block addresses and the [count] field of ranges are
not affected - these are always input and displayed in decimal.  The
initial radix is DECIMAL.
.bl
Format:
.bl .lm +3
   SE(T)  R(ADIX)=D(ECIMAL)
.br
   #############=H(EX)
.br .lm -3
2 SIGN
.br
This option is used to enable or disable signed decimal output with
the ADD, IBYTE, IWORD, and ILONG commands.  The default mode is
SET SIGN.
.bl
Format:
.bl .lm +3
   SE(T)  [NO]S(IGN)
.br .lm -3
2 SKIP
.br
This option can be used to compensate for a bug in VMS which causes
incorrect block indication when using tape files.  It is known to occur
under VMS 4.1 and 4.2 when using the TA78 tape drive.  Simply put, when
an IO$__SKIPRECORD encounters an EOF mark, the number of blocks skipped
before the EOF was found is not returned in the IOSB.  This means that
if the tape encounters an EOF while skipping in the forward direction
and the user backs up over the EOF, the absolute block number is unknown.
Note that IO$__SKIPRECORD is only used with block positioning within a
single file (GET, NEXT, TOP, LAST, EOF).  When using the MOVE command,
the setting of SKIP has no effect.
.bl
Format:
.bl .lm +3
   SE(T)  SK(IP)=option
.bl .lm +3
      If [option] is NORMAL, VFE uses its standard skip-ahead count of
      up to 50 blocks when skipping over blocks.  When moving back over
      an EOF, block numbering can be unpredictable if operating on a
      system and device on which this bug exists.  This is the default
      option.
.bl
      If [option] is FAST, the skip-ahead count is still up to 50 blocks,
      but movement backwards over an EOF will set the block number to -1
      and decrement from there if the bug could have caused erroneous
      position indication.
.bl
      If [option] is SLOW, all skip-aheads are done one block at a time.
      This preserves position indication but operates considerably
      slower than either of the above.
.br .lm -6
2 WIDTH
.br
This option can be used to change the output width of the terminal
device.  Display output has a wide and a narrow setting,
and the size is dependent on the terminal output width.  Output to a
log file when NODISPLAY is set, and all batch output, is always in
wide format.  If the width is changed during a VFE session, it is reset
to the original size when the session terminates.
.bl
Format:
.bl .lm +3
   SE(T)  W(IDTH)=size
.bl .lm +3
      [size] is a decimal numeric and can be either 80 or 132.
.br .lm -6 .rm +2
1 SHOW
.br
The SHOW command is used to display various aspects of the current
VFE environment.
.br .rm -2
2 ALL
.br
This displays all of the SHOW options with one command.
.bl
Format:
.bl .lm +3
   SH(OW)  A(LL)
.br .lm -3
2 CHANGE
.br
Displays the current change-string, and most recently changed file, block
and byte address.
.bl
Format:
.bl .lm +3
   SH(OW)  C(HANGE)
.br .lm -3
2 DEVICE
.br
Displays the name of the file or device being edited, and current block
or record number.  Same as SHOW FILE.
.bl
Format:
.bl .lm +3
   SH(OW)  D(EVICE)
.br .lm -3
2 FILE
.br
Displays the name of the file or device being edited, and current block
or record number.  If editing in record mode, the RFA of the current
record is also displayed.
.bl
Format:
.bl .lm +3
   SH(OW)  F(ILE)
.br .lm -3
2 LOCATE
.br
Displays the current locate target and most recently located file, block,
and byte address for the target.
.bl
Format:
.bl .lm +3
   SH(OW)  L(OCATE)
.br .lm -3
2 MODES
.br
Displays status of the SET modes (BUFF, CASE, CHARSET, DISPLAY, HEADER,
LOG, RADIX, SIGN, SKIP, WIDTH).
.bl
Format:
.bl .lm +3
   SH(OW)  M(ODES)
.br .lm -3
2 PASTE
.br
Displays the size of the paste buffer, and the file, block, and offset
from which the data was transferred.
.bl
Format:
.bl .lm +3
   SH(OW)  P(ASTE)
.br .lm -3 .rm +2
1 SUBSTITUTE
.br
This command is used to replace one character string with another in the
current buffer.  The same restrictions apply to this command as to CHANGE.
.bl
Format:
.bl .lm +3
   S(UBSTITUTE) [d]string1[d]string2[d]
.bl .lm +3
      [d] is a single character delimiter which must be specified three
      times in the order shown and may not occur in either string.
      Any character can be used.
.bl
      [string1] is the target string.  The character set is determined
      by SET CHARSET (ASCII is the default).  Case sensitivity is
      determined by SET CASE.  The string must occur entirely in the
      current buffer in order for the substitution to occur.
.bl
      [string2] is the replacement string.  The character set is the same
      as the first string.  Characters in [string2] overlay those
      in the buffer beginning at the first match of [string1].
      Unlike similar commands in other editors, the size of the current
      buffer will not be changed if the two strings are of unequal length.
.bl
      If the entire parameter sequence is omitted, that from the previous
      SUBSTITUTE command is used.
.br .lm -6
1 TOP
.br
This command positions the user at the top of the file.  When used in block
mode, the contents of virtual block 1 are read into the current buffer
(logical block zero for disk devices).  When editing tape, the tape file
is moved in the reverse direction until an end-of-file mark is found, and
then the data which follows the EOF mark in the forward direction is read
into the current buffer.
.bl
In record mode, the user is positioned at the top of the file and the first
record is read into the current buffer.  If editing an indexed file, record
selection is based on the lowest (ascending) or highest (descending) value
of the current key of reference.
.bl
Format:
.bl .lm +3
   T(OP)
.br .lm -3
1 UPDATE
.br
The UPDATE command is used to update the positioned record in the file
with the contents of the current buffer.  It can only be used in record
mode editing and only after the record has been locked.  If editing an
indexed file and the size of the current buffer has been changed with
SET LENGTH, the length of the file record is modified also.
.bl
Format:
.bl .lm +3
   U(PDATE)
.br .lm -3
1 WRITE
.br
This command is only operational when editing a disk file or device in
block mode, and only if the file has been accessed with the /WRITE
qualifier.  The current buffer is written to the file block(s) at which the
user is positioned.  The current buffer will always contain the contents
of the positioned block(s) except when the CHANGE, SUBSTITUTE or PASTE
commands have been used and no repositioning has occurred.  The amount of
data written depends on the size of the current buffer, which is usually
512 times the value determined by SET BUFF.  See HELP BUFFERS for more
information.
.bl
Format:
.bl .lm +3
   W(RITE)
.br .lm -3
1 access-modes
.br
There are two major file access modes available to users of VFE.  The
access mode is determined by the use of the /BLOCK or /RECORD qualifier
as documented with the FILE command.  Block mode is the initial default.
Subsequent uses of the FILE command to change the file in use will
assume the current access mode unless the other is specified.
Access modes are mutually exclusive; only one can be in operation at
one time.  It is possible, however, to transfer data through the paste
buffer from one mode to the other.
.br .rm -3
2 block-mode
.br
BLOCK mode is used with local disk files or disk/tape devices.  Data
is transferred from/to the storage device on block boundaries, regardless
of format.  The XQP-QIO interface is used for the transfers.  There is
a very limited facility in VFE to interpret sequential files read in
block mode (RECORD command) but beyond this there is no attempt made
to operate on the data itself.  Block mode is most useful when attempting
to display or change data which is not easily obtainable through standard
VMS utilities.  The LOCATE/LGLOBAL commands will operate in either mode,
but the search is much faster when done in block mode.
.br
2 record-mode
.br
RECORD mode is used with local or remote disk files.  Data is transferred
on record boundaries.  The RMS interface is used for the transfers.
In this mode it is possible to examine data as it would be available
to a user program (for example, an uncompressed indexed file record).
All three RMS formats (sequential, relative, indexed) are permitted,
although most testing and development has been geared towards use with
indexed and sequential files.  Record mode is most useful for displaying
and modifying record-oriented information which is not as easily accessed
through standard VMS editors.
.br .rm +3
1 buffers
.br
VFE operates with two variable-length buffers.
.bl .lm +3
   The CURRENT buffer is filled with the contents of the positioned
   block(s) or record.  The buffer is filled whenever a file is
   initially opened for edit and whenever a read operation is performed
   on the current file or device.  Commands which always cause a read
   operation are DELETE, EOF, FILE, GET, LAST, LOCK, MOVE, NEXT, PUT,
   REWIND and TOP.  (This happens even if the same block is selected,
   as in NEXT 0).  Commands which can cause file reads if multiple
   blocks/records are displayed or searched are ALPHA, ASCII, BINARY,
   EBCDIC, HEX, IBYTE, IWORD, ILONG, LOCATE, LGLOBAL, MULTI and RECORD.
   The UPDATE command can cause a read if the field containing the
   current key of reference is modified.
.bl
   Contents of the current buffer can be modified with the CHANGE, PASTE
   and SUBSTITUTE commands, and these modifications remain until the next
   read operation.  If a PUT, WRITE or UPDATE is done before the next read,
   the modifications are written to the file and become permanent.
.bl
   The PASTE buffer is user-controlled.  It is filled by using the CUT
   command.  Unlike the current buffer, the paste buffer remains unaltered
   when a read operation occurs or when a new file is edited.  The paste buffer
   has two primary uses:  First, to allow data to be compared with the
   DIFFERENCES command, and second, to permit data to be transferred within
   a file or between files.
.br .lm -3
1 positioning
.br
The following sequences are abbreviated formats of the GET and NEXT
commands.  They are useful for fast block/record positioning.  Note that
a positioning command will always cause the contents of the positioned
block(s) or record to be read into the current buffer.
.bl .lm +3
   <CR>###### advances one block/record.  Same as NEXT 1.
.br
   +######### advances one block/record.  Same as NEXT 1.
.br
   -######### backs up one block/record.  Same as NEXT -1.
.br
   [number]## positions to the block/rec specified.  Same as GET [number].
.br
   +[number]# advances [number] blocks/records.  Same as NEXT [number].
.br
   -[number]# backs up [number] blocks/records.  Same as NEXT -[number].
.br
   "[key]"#or# performs the same function as GET/KEY.  The key is translated
.br
   '[key]'#### to upper case when the abbreviated form is used.
.bl .lm +3
      In all cases above, [number] represents a decimal numeric, and [key]
      represents a character string.  For numeric or lower case keys, the
      long form of GET/KEY must be used.
.bl .lm -6
See HELP PROMPT for information on position indication.
.br
1 prompt
.br
The user prompt has several different formats.
.br .rm -3
2 block-mode-prompt
.br
When using block mode, the prompt format depends on the type of file or
device being edited and on the SET BUFF value.  The general format is:
.bl .lm +3
   [file:]block[(size)]>
.bl .lm +3
      [file] represents the current logical file number and is always
      present for tapes, never for disk.  When the tape is rewound and
      the file position is known, the first logical file is numbered 1
      and the number is increased each time an EOF mark is crossed.
      When the tape position is unknown, the file number can be zero
      or negative.
.bl
      [block] is always present.  For disk files, it represents the current
      VBN (virtual block number), for disk devices, the current LBN.
      For tape, it represents the logical block number that has been most
      recently read within the current logical file.  When the tape
      position is known, blocks begin at 1 with zero indicating that an
      EOF mark has just been crossed but no data has been read.  When the
      tape position is unknown, the block number can go negative.
.bl
      [size] is used to show the size of the current buffer.  For disk,
      this indicator is omitted if the value of SET BUFF is one.  In this
      case, the current buffer contains 512 bytes.  For tape, this shows
      the size of the block just read, and is always present except when
      the last tape positioning produced no data, as is the case when an
      EOF mark has been crossed or if the system returns an error status
      with zero bytes transferred.
.br .lm -6
2 record-mode-prompt
.br
When using record mode, the format of the prompt is as follows:
.bl .lm +3
   record[* ](size)>### or:
.br
   *NR* (size)>
.bl .lm +3
      In the first form, [record] is always present and indicates the
      record number.  This is normally relative to the top of the file
      and represents an absolute record number.  Records are numbered
      sequentially from one.  If the asterisk (*) appears in the prompt,
      this indicates the records are being numbered relative to the last
      non-sequential read of the file.  This is usually caused by a
      GET/KEY or GET/RFA, but can also be the result of a PUT, or an
      UPDATE that modified the key of reference.  Once relative record
      numbering has started, there is no way to position to records
      which precede relative record one except by doing another
      non-sequential read or going to the top of file (TOP command).
.bl
      The second form of the prompt only occurs after the CREATE
      command is used.  It indicates that the current buffer is not
      attached to any record in the file and represents a new record
      which is to be added to the file.  This record will only be
      added to the file if the PUT command is used before the next
      read operation is performed.
.bl
      In both forms of the prompt, [size] is always present and indicates
      the size of the current buffer.  In the first form, this is the
      record size, unless the SET LENGTH command has been used after the
      last read.  In the second form, this will be the record size when
      the new record is written via the PUT command.
.br .lm -6 .rm +3
1 range
.br
Many of the commands use a [range] specification.  The format of the range
is as follows:
.bl .lm +3
   [begin][,count]  or:
.br
   [begin][:end]
.lm +11
.p -8;[begin] specifies the address within the buffer of the first byte to
              process.  It is supplied in unsigned decimal or hex, depend-
              ing on the setting of SET RADIX.  The default is decimal.
              [begin] must always be within the address range of the cur-
              rent or paste buffer, whichever is being used in the command.
              If not specified, [begin] defaults to the first byte (0).
.p -8;[count] specifies the count of items to process.  This is the byte
              count for all commands except for DATE, IWORD, and ILONG,
              where it it the count of date quadwords, words, and longwords,
              respectively.  [count] is always specified in unsigned decimal
              numeric.  Some commands allow [begin+count] to exceed the
              range of the current buffer.
.p -8;[end]## specifies the address of the last byte to process.  It can be
              supplied in unsigned decimal or hex, depending on SET RADIX.
              Decimal is the default.  [count] and [end] cannot be used
              together on the same command.  Some commands allow [end] to
              exceed the range of the current buffer.
.bl .lm -8
      If both [count] and [end] are omitted, a single item is processed,
      except where indicated differently for specific commands.  Most com-
      mands allow [range] to be omitted entirely.  See specific command
      documentation for more information.
.br .lm -6
1 signon
.br
If you have the symbol VFE defined correctly as specified in the release
documentation, following is the full format of the signon sequence:
.bl .lm +3
   $ VFE[/set-options...]  [filename][/file-qualifiers...]
.bl .lm +3
      [set-options] are optional, and can be any one or more of the valid
      SET options (except LENGTH) less the SET command itself.
.bl
      [filename] is the name of the file or device to edit.  If not given
      on the command line, it will be solicited.
.bl
      [file-qualifiers] are optional, and can be one or more of the options
      described with the FILE command.
.bl .lm -6
For example:
.bl .lm +3
   $ VFE/NOCASE/RADIX=HEX/LOG=FILEX.LOG  FILEX.DAT/WRITE
.br .lm -3
