1 ALPHA
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.

Format:

   A(LPHA)[/P(ASTE)] [range]

      See ASCII or EBCDIC for parameter specification.
1 ASCII
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.

Format:

   AS(CII)[/P(ASTE)] [range]

      [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.

      If [range] is omitted, the current buffer is dumped in its entirety.

      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.
1 ADD
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.
Format:

   AD(D) number1[,number2,...,numbern]

      [number] can optionally have a leading + or - sign and can have one of
               the following formats:

         nnnnnnnnn - Decimal

         0nnnnnnnnnn - Octal

         Hnnnnnnnn - Hex ("H" must be used regardless of the current radix)
1 BINARY
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).

Format:

   B(INARY)[/P(ASTE)] [range]

      [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.

      If [range] is omitted, the current buffer is dumped in its entirety.

      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.
1 CHANGE
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).

   C(HANGE) [begin[,change-string]]

      [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.

      [change-string] can have one of the following formats:

         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.
         +nnnn
         -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.

         "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.

      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.
1 CREATE
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.

Formats:

   CR(EATE) [size]
   CR(EATE)/P(ASTE) [size]
   CR(EATE)/N(ULL) [size]

      [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.

      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.
1 CUT
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.

Format:

   CU(T) [range]

      [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.

      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).
1 DIFFERENCES
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.

Format:

   D(IFFERENCES) [range]

      [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.

      If [range] is omitted, the range given with the last CUT command which
      moved data into the paste buffer is used.
1 DATE
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.

Format:

   DA(TE)[/P(ASTE)] range

      The beginning byte of [range] must  be  specified.   If  no  count  or
      ending byte is given, a single date value is displayed.

      If the /PASTE qualifier is  given,  data  from  the  paste  buffer  is
      displayed.
1 DELETE
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.

Format:

   DE(LETE)
1 EBCDIC
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.

Format:

   EB(CDIC)[/P(ASTE)] [range]

      [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.

      If [range] is omitted, the current buffer is dumped in its entirety.

      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.
1 EOF
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.

Format:

   EO(F)
1 EXIT
The EXIT command terminates VFE.

Format:

   E(XIT)
1 FILE
This command specifies the name of the next file or device to edit.

Format:

   F(ILE) [name][/qualifier(s)]

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.

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.
2 /BLOCK
This qualifier specifies block-mode access, which is  the  default  unless
record access was used with the previous file.
2 /RECORD
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.
2 /KEY=keyid
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.
2 /NOREWIND
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.
2 /OVERRIDE
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.
2 /POSITION
This qualifier is used to pre-specify  a  tape  position.   The  /NOREWIND
qualifier is assumed when /POSITION is given when editing a tape.

   /POSITION=([file:]block)

      [file] is optional.  If not given, it defaults to one.

      [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.

      Parenthesis are used only if both parameters are given.
2 /WRITE
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.
1 GET
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.
2 block-mode
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.

Format:

   G(ET) block

      [block] is specified in decimal numeric.
2 record-mode
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.

Formats:

   G(ET) record
   G(ET)/K(EY) key
   G(ET)/R(FA) num1:num2

      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.

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

      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.
1 HEX
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.

Format:

   H(EX)[/P(ASTE)] [range]

      [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.

      If [range] is omitted, the current buffer is dumped in its entirety.

      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.
1 IBYTE
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).

Format:

   I(BYTE)[/P(ASTE)] [range]

      [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.

      If [range] is omitted, the current buffer is dumped in its entirety.

      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.
1 IWORD
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.

Format:

   IW(ORD)[/P(ASTE)] [range]

      [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.

      If [range] is omitted, the current buffer is dumped in its entirety.

      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.
1 ILONG
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.

Format:

   IL(ONG)[/P(ASTE)] [range]

      [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.

      If [range] is omitted, the current buffer is dumped in its entirety.

      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.
1 LOCATE
This command is used to find the next  occurrence  of  a  target  string  or
number within the file being edited.

   L(OCATE) [target]

      [target] is the target  string  or  number.   If  not  specified,  the
               previous target is used.  The following formats are allowed:

         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.
         +nnnn
         -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.

         "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.
1 LGLOBAL
This command finds all of the remaining occurrences of the target number  or
string within the file being edited.

Format:

   LG(LOBAL) [target]

      [target] is specified exactly as with LOCATE.

      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.
1 LAST
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.

When using tape, the user is positioned at the last block within the current
logical file.

Format:

   LA(ST)
1 LOCK
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.

Format:

   LOCK
1 MULTI
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.

Format:

   M(ULTI)[/P(ASTE)] [range]

      [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.

      If [range] is omitted, the current buffer is dumped in its entirety.

      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.
1 MOVE
This command moves a tape  in  the  forward  or  reverse  direction  past  a
specified number of end-of-file marks.

Format:

   MO(VE) [offset]

      [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.
1 NEXT
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.

Format:

   N(EXT) [offset]

      [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.

When editing a disk file or device in block mode, the value of  [offset]  is
usually multiplied by the value determined by SET BUFF.

See HELP POSITIONING for abbreviated forms of NEXT.
1 PASTE
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!

Format:

   P(ASTE) [range]

      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.

      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.

      The size of the current buffer is never changed by the PASTE command.
1 PUT
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.

Format:

   PU(T)
1 RECORD
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.
2 block-mode
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.

   R(ECORD) [begin][,count]

      [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.

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

      [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.
2 record-mode
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.

Format:

   R(ECORD) [begin][,count]

      [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.

      [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.
1 REWIND
This command rewinds the tape being edited and positions  the  user  at  the
first block of the first file.

Format:

   RE(WIND)
1 SET
This command is used to set/clear various modes and indicators.
2 BUFF
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.

Format:

   SE(T) B(UFF)=count

      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.

      Note that if [count] exceeds the block size of the  current  buffer,
      the size will not be expanded until the next read is performed.

      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.
2 CASE
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.

Format:

   SE(T) [NO]C(ASE)

      CASE mode is case-sensitive, NOCASE is case-insensitive.
2 CHARSET
This option is used to determine  the  character  set  used  for  display,
change, and search operations.  The default character set is ASCII.

Format:

   SE(T) CH(ARSET)=A(SCII)
                  =E(BCDIC)
2 DISPLAY
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.

Format:

   SE(T) [NO]D(ISPLAY)
2 HEADER
This option controls buffer contents when editing a  VFC  file  in  record
mode, and also affects the printed output of the RECORD command.

Format:

   SE(T) [NO]H(EADER)

   HEADER mode is the default.
3 buffer-contents
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.
3 RECORD-output
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.

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.
2 KEY
This option is used to select the key of reference when editing an indexed
file in record mode.

Format:

   SE(T) K(EY)=keyid

      [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.
2 LENGTH
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.

Format:

   SE(T) LE(NGTH)=size

      [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.
2 LOG
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.

Formats:

   SE(T) L(OG)[=filename]
   SE(T) NOL(OG)

      [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.
2 POSITION
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.

Format:

   SE(T) P(OSITION)=([file:]block)

      [file] if specified, is a decimal numeric which replaces the current
             file number.

      [block] is required.  It is a  decimal  numeric,  and  replaces  the
              current block number.

      Parenthesis are used only if if both parameters are given.
2 RADIX
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.

Format:

   SE(T) R(ADIX)=D(ECIMAL)
                =H(EX)
2 SIGN
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.

Format:

   SE(T) [NO]S(IGN)
2 SKIP
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.

Format:

   SE(T) SK(IP)=option

      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.

      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.

      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.
2 WIDTH
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.

Format:

   SE(T) W(IDTH)=size

      [size] is a decimal numeric and can be either 80 or 132.
1 SHOW
The SHOW command is used to display  various  aspects  of  the  current  VFE
environment.
2 ALL
This displays all of the SHOW options with one command.

Format:

   SH(OW) A(LL)
2 CHANGE
Displays the current change-string, and most recently changed file,  block
and byte address.

Format:

   SH(OW) C(HANGE)
2 DEVICE
Displays the name of the file or device being edited, and current block or
record number.  Same as SHOW FILE.

Format:

   SH(OW) D(EVICE)
2 FILE
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.

Format:

   SH(OW) F(ILE)
2 LOCATE
Displays the current locate target and most recently located file,  block,
and byte address for the target.

Format:

   SH(OW) L(OCATE)
2 MODES
Displays status of the SET modes (BUFF, CASE,  CHARSET,  DISPLAY,  HEADER,
LOG, RADIX, SIGN, SKIP, WIDTH).

Format:

   SH(OW) M(ODES)
2 PASTE
Displays the size of the paste buffer, and the  file,  block,  and  offset
from which the data was transferred.

Format:

   SH(OW) P(ASTE)
1 SUBSTITUTE
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.

Format:

   S(UBSTITUTE) [d]string1[d]string2[d]

      [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.

      [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.

      [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.

      If the entire parameter sequence is omitted, that  from  the  previous
      SUBSTITUTE command is used.
1 TOP
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.

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.

Format:

   T(OP)
1 UPDATE
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.

Format:

   U(PDATE)
1 WRITE
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.

Format:

   W(RITE)
1 access-modes
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.
2 block-mode
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.
2 record-mode
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.
1 buffers
VFE operates with two variable-length buffers.

   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.

   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.

   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.
1 positioning
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.

   <CR>       advances one block/record.  Same as NEXT 1.
   +          advances one block/record.  Same as NEXT 1.
   -          backs up one block/record.  Same as NEXT -1.
   [number]   positions to the block/rec specified.  Same as GET [number].
   +[number]  advances [number] blocks/records.  Same as NEXT [number].
   -[number]  backs up [number] blocks/records.  Same as NEXT -[number].
   "[key]" or  performs the same function as GET/KEY.  The key is translated
   '[key]'     to upper case when the abbreviated form is used.

      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.

See HELP PROMPT for information on position indication.
1 prompt
The user prompt has several different formats.
2 block-mode-prompt
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:

   [file:]block[(size)]>

      [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.

      [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.

      [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.
2 record-mode-prompt
When using record mode, the format of the prompt is as follows:

   record[* ](size)>    or:
   *NR* (size)>

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

      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.

      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.
1 range
Many of the commands use a [range] specification.  The format of  the  range
is as follows:

   [begin][,count] or:
   [begin][:end]

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

      [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.

      [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.

      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.
1 signon
If you have the symbol VFE defined correctly as  specified  in  the  release
documentation, following is the full format of the signon sequence:

   $ VFE[/set-options...] [filename][/file-qualifiers...]

      [set-options] are optional, and can be any one or more  of  the  valid
      SET options (except LENGTH) less the SET command itself.

      [filename] is the name of the file or device to edit.  If not given on
      the command line, it will be solicited.

      [file-qualifiers] are optional, and can be one or more of the  options
      described with the FILE command.

For example:

   $ VFE/NOCASE/RADIX=HEX/LOG=FILEX.LOG FILEX.DAT/WRITE
