previous

DIX INTERACTIVE_COMMANDS DIRECTORY qualifiers /statistics


  Show some statistics after the command completes
  If you have a specified /SORT, DIX will display sort statistics too.

DIX INTERACTIVE_COMMANDS DIRECTORY qualifiers /symbols[=name]


  Define the result of the directory command in symbols

  Name if the first part of the symbolname, default is DIRECTORY$

  In interactive mode these will be DIX symbols, in all other cases
   DCL symbols

   The following symbols will be defined (assuming name=DIRECTORY$)

   DIRECTORY$FILES         Files found
   DIRECTORY$DIRECTORIES   Directories found
   DIRECTORY$MODULES       Modules found
   DIRECTORY$LIBRARIES     Libraries found
   DIRECTORY$SIZE_ALLOC    Total Allocated size (in the selected size mode)
   DIRECTORY$SIZE_EOF      Total END_OF_FILE size (in the selected size mode)

  The last two symbols are only defined it you specified the
   /size=(eof,alloc) qualifier.

DIX INTERACTIVE_COMMANDS DIRECTORY qualifiers /total


  Display a line containing the total (per directory), but no files

DIX INTERACTIVE_COMMANDS DIRECTORY qualifiers /trailer


  Display the headers (one for each directory)

DIX INTERACTIVE_COMMANDS DIRECTORY qualifiers /versions


  /versions=n

  Determines how many versions of a file DIX will show
  The default is /versions=1. DCL would print all versions by default.

DIX INTERACTIVE_COMMANDS DIRECTORY qualifiers /width


  /WIDTH=(field=value[,field=value...])

  Specify the file widths of the various parts
  Keywords are
    auto       : Let DIX compute the maximum width of each displayed field
               : All other keywords are ignored
  if auto not specified
    file       : The file name, default=20
    size       : The size, default=8
    date       : Date, default=23
    owner      : Owner, default=20
    id         : File id, default=15

  Specifying /width without values is the same as /width=auto

DIX INTERACTIVE_COMMANDS DISABLE


   DISABLE something

   For more help see also the SET xxx command

   Something can be

    AUTOSAVE                  Clear autosave mode
    CHECK_SYMBOL              Clear default extra command data
    COUNT                     Clear count mode
    DCL_COMPATIBLE            Clear DCL compatible mode and fallback
    DCL_FALLBACK              Clear DCL fallback mode
    MOUSE                     Clear mouse usage enabled
    LOW_FIRST                 Clear low dimension first
    OVERFLOW                  Clear overflow detection
    QUOTED                    Clear examine to quoted mode
    CASE_SENSITIVE            Clear case sensitive mode
    PIPE_MODE                 Set automatic pipe mode. If a ; is in the
                                  command line, DIX will assume piping.
    EXPRESSION_PARSE          Set parsing to try expression after
                                  command parsing error

DIX INTERACTIVE_COMMANDS DISPLAY

  Display is a synonym for EXAMINE

DIX INTERACTIVE_COMMANDS DO


   DO repeatcount [;] command [;command [;.,...]]

  DO the following command 'repeatcount' times
  If during the execution of a repeat DIX encounters an error or
  severe error, the repeat count is terminated.
  Multiple commands are enabled if you start the command list with a ;

  During the execution of this statement, the special symbol
  $DOINDEX contains the value of the loop index (1..repeatcount)

  i.e.  do 10 ;next rec ; exa field
        do 5 ; exam field($doindex)

DIX INTERACTIVE_COMMANDS DUMP

   DUMP [/qualifiers] [filetag]

  Dump one or more records. Can be used to display one or more records,
  and also to output data in CSV (Comma Separated Values) mode.

  By default the current file is dumped, but you may specify filetag to
   use a different file of even an file that is not open.

  If you specify an opened file, DIX will restore the file to the
   current position.

DIX INTERACTIVE_COMMANDS DUMP Qualifiers


DIX INTERACTIVE_COMMANDS DUMP Qualifiers /OUTPUT

 /OUTPUT=filename
 /OUTPUT=SYS$OUTPUT   (Default)

  Set the output file

DIX INTERACTIVE_COMMANDS DUMP Qualifiers /COUNT

 /COUNT=n

  determines the number of records displayed. The default is all records
  /count=0 will dump no block/records

DIX INTERACTIVE_COMMANDS DUMP Qualifiers /HEADER


  Display the file header blocks. You can also specify /raw[/hex]

DIX INTERACTIVE_COMMANDS DUMP Qualifiers /CSV

   /CSV=(Csv_option[,csv_option...])

  Csv_option can be
   HEADER    : Print a header line before all data
   NOQUOTES  : Do not 'quote' fields (see below)
   ALL_QUOTES: User quotes around all fields
   SEPARATOR=COMMA    : Use COMMA as separator     (Default)
   SEPARATOR=TAB      : Use TAB char as separator
   SEPARATOR=COLON    : Use COLON (:) a separator
   SEPARATOR=SEMICOLON: Use SEMICOLON (;) as separator
   SEPARATOR=BAR      : Use | as a separator
   SEPARATOR=CHARACTER=%Xdd : Use %Xdd as separator
   QUOTE=DOUBLEQUOTE   : Use the " character for quotes around fields (Default)
   QUOTE=QUOTE         : Use the ' character for quotes around fields
   QUOTE=CHARACTER=%Xdd: Use the %Xdd character for quotes around field

  If you want quoting (Default), DIX will insert the "quotecharacter"
  around text fields and field that contain the "separatorcharacter" or space

  If you specify ALL_QUOTES, DIX will insert the "quotecharacter"
  around all fields.

  If you specify NOQUOTES, DIX will never insert the "quotecharacter"

  The header fields are regarded as "text" fields.

  See also the /SELECT qualifier for help about selection of fields

  Example:

  DIX/FILE/CSV=(header,all_quotes,quote=quote,separator=semicolon) file
    Output is a file with all fields quoted, using ' as quote and ; as
    separator with a header line.

  DIX/FILE/CSV=(header,noquote,separator=char=32) file   or
  DIX/FILE/CSV=(noquote,separator=char=%X20) file
    Output is a file with no fields quoted, and SPACE as separator

DIX INTERACTIVE_COMMANDS DUMP Qualifiers /DISPLAY

  /DISPLAY=(displayitem[.,displayitem...])

  This qualifier decides what parts of the record are to be displayed

  Displayitem can be

  [NO]DATA    : Display the data part of the record
  [NO]VFC     : Display the VFC part of the record (if present)
  [NO]RECNR   : Display the record number (only if record not found via keyed access)
  [NO]RECLEN  : Display the record length
  [NO]RFA     : Display the RFA of the record
  ALL         : Print all parts
  WHOLE_RECORD: Do not try to format, just dump the whole record. In this case
                 all other flags are cleared, and the /FORMAT is ignored. You
                 may specify display=(whole,[recnr],[recsize],[rfa]) to add
                 an additional record with this info.

  The default is the current display setting (show display)

DIX INTERACTIVE_COMMANDS DUMP Qualifiers /FOLLOW


  /FOLLOW=None
  /FOLLOW=(end[,skipkeys])
  /FOLLOW=(field[,skipkeys])

  For file mode only (and also the dump command in interactive mode)

  If you have a file with a description that contains a link to another file
  DIX can automatically include the fields from that file.
  If you specify /FOLLOW=END, DIX will first display all fields of the
     current description, and then the follow fields.
  If you specify /FOLLOW=FIELD, DIX will follow the link directly after
     the follow field is found.
  If you ADD the skipkeys keyword, DIX will not print the keyfields of
     the followed file, since that value will probably also be a field
     in the follow field.

  Examples:
   This example is a set of the files that make a (simple) cross reference
   system

   File 1. name.CRF_CROSS
    Contains records with 2 numbers.
      First the module number of the caller
      And then the module number of the callee

        integer*2 /file=.CRF_MOD_NAMES caller_nr !link to mod_names
        integer*2 /file=.CRF_MOD_NAMES called_nr !link to mod_names

   File 2. name.CRF_MOD_NAMES
    Contains the module number and the name and a link to the filename
     There is a key on the mod_nr

        integer*2    mod_nr
        character*32 mod_name
        integer*2    /file=.CRF_FILE_NAMES file_nr !link to file_names

   File 3. name.CRF_FILE_NAMES
    Contains the file number and the file name
     There is a key on the file_nr

        integer*2    file_nr
        character*60 file_name

    DIX> open name.CRF_CROSS

    DIX> DUMP/COUNT=1/CSV=HEADER           !DIX will not follow the links
    "CALLER_NR","CALLED_NR"
    738,-262

    DIX> DUMP/COUNT=1/CSV=HEADER/FOLLOW=END
    "CALLER_NR","CALLED_NR",
       "MOD_NR","MOD_NAME","FILE_NR",
             "FILE_NR","FILE_NAME",
       "MOD_NR","MOD_NAME","FILE_NR",
             "FILE_NR","FILE_NAME"
    738,-262,                           !both caller and callee
       738,"CHECK_ALLOWED_USER",66,     !info about caller number
              66,"REM_SERVER_CHECK_ACCESS",  !and its file
       -262,"SYS$VERIFY_PROXY",69,      !info about callee
              69,"SYSTEM"                    !and its file

     The indentation is only to show the actions.

    DIX> DUMP/COUNT=1/CSV=HEADER/FOLLOW=FIELD
     "CALLER_NR",
       "MOD_NR","MOD_NAME","FILE_NR",
         "FILE_NR","FILE_NAME",
     "CALLED_NR",
       "MOD_NR","MOD_NAME","FILE_NR",
         "FILE_NR","FILE_NAME"
     738,                               !caller number
        738,"CHECK_ALLOWED_USER",66,     !its name
           66,"REM_SERVER_CHECK_ACCESS",  !and its file
     -262,                              !callee number
        -262,"SYS$VERIFY_PROXY",69,      !its name
           69,"SYSTEM"                    !and its file

     Again, the indentation is only to show the actions.

     You will see that the mod_nr and file_nr are specified twice
     If you had added a SKIPKEYS, the display would have been

    DIX> DUMP/COUNT=1/CSV=HEADER /FOLLOW=(FIELD,skip)
     "CALLER_NR",
       "MOD_NAME","FILE_NR",
         "FILE_NAME",
     "CALLED_NR",
       "MOD_NAME","FILE_NR",
         "FILE_NAME"
     738,                           !caller number
        "CHECK_ALLOWED_USER",66,      !its name
           "REM_SERVER_CHECK_ACCESS",  !and its file
     -262,                          !callee number
        "SYS$VERIFY_PROXY",69,        !its name
           "SYSTEM"                     !and its file

       The display of the MOD_NR/FILE_NR for the second and third
        level files are now gone, since they are the key values

DIX INTERACTIVE_COMMANDS DUMP Qualifiers /REWIND


  Only useful for currently opened files.
  If you specify /REWIND, DIX will rewind the file to the first record
  before dumping, allowing you to dump the whole file.
  After the DUMP DIX will restore the file to the current position.

DIX INTERACTIVE_COMMANDS ECHO


  Syntax:
  ECHO[/qualifier] textstring

  Display a text to the output file. This can be useful in batch-jobs.
  One qualifier is supported
    /CONSOLE  : Print the output to the terminal regardless of the
                /output setting.
    /UPDATE   : Only in screen/DECwindows mode: Overwrite the last message

 Example:

 DIX> ECHO We reached record 20
 ECHO:We reached record 20

DIX INTERACTIVE_COMMANDS EDIT


  Edit various items

   EDIT [/FILE] filename [/fdl=fdlname]] [/log] Edit a general file
                      The /file is optional
   EDIT/DESCRIPTION Edit the current description of the current file
   EDIT/VIEW        Edit the current view of the current file
   EDIT/SEARCH      Edit the search string(s)

    For the edit /description, /view and /file you can specify
    which editor you want to use
     /internal     A small SMG-based editor (native to DIX)
     /TPU          The normal EDIT/TPU
     /EDT          The normal EDIT/EDT
    If the terminal does not support SMG, editing is set to /EDT

   The EDIT/FILE has an additional qualifier /FDL
   This qualifier will be ignored for sequential files
   For all other files:

    Specifying /NOFDL will leave the edited file sequential

     If /FDL is specified without a value, DIX will
        make a temporary FDL file of the source file.
     If /FDL has a value, DIX will use that FDL file.

     After editing DIX will use one of the FDL files to
      convert the file. In this way you can edit an indexed
      file and leave it indexed.

DIX INTERACTIVE_COMMANDS ENABLE


   ENABLE something

   For more help see also the SET xxx command

   Something can be

    AUTOSAVE                  Set autosave mode
    COUNT                     Set count mode
    CHECK_SYMBOL              Set default extra command data
    DCL_COMPATIBLE            Set DCL compatible mode (not dcl_fallback)
    MOUSE                     Set mouse usage enabled
    LOW_FIRST                 Set low dimension first
    OVERFLOW                  Set overflow detection
    QUOTED                    Set examine to quoted mode
    CASE_SENSITIVE            Set case sensitive mode
    PIPE_MODE                 Set automatic pipe mode. If a ; is in the
                                  command line, DIX will assume piping.
    EXPRESSION_PARSE          Set parsing to try expression after
                                  command parsing error
    LAX_QUOTES                Set lax_quotes to allow symbol substitution
                                  without trailing ' . This can also be done
                                  via the set subs/[no]lax

DIX INTERACTIVE_COMMANDS EXAMINE


 EXAMINE[/qualifiers] [fieldmask]                !mode 1
 EXAMINE/RAW offset[:end_offset]                 !mode 2
 EXAMINE/RAW offset[;length]                     !mode 3
 EXAMINE[/RAW] offset.bit/bits=n                 !mode 4
 EXAMINE[/RAW] offset[.bit]/type=datatype[*size] !mode 5

 If a description is present and /RAW and /BITS are not used, DIX
  interprets the mask as a fieldname mask (mode 1).

   Display all fields with the name matching 'fieldmask'. By default
    all names match.
   Fieldmask can contain references to other files/descriptions.
   The full format is
    [FILEMASK\[DESCRIPTIONMASK\]]FIELDNAMEMASK.

   The filemask and descriptionmask are matched against the file
   and descriptions tags. (see the show file [/all][/full]

   The qualifiers MUST be entered before the fieldmask or the offset

  If no description is present or /RAW is used, and /BITS is not used and
   mask does not contain a ., mode 2 is used.

   In this mode, the data starting from byte 'offset' will be displayed.
   If offset is absent, the whole record is dumped in raw mode.
   If end_offset is not present, only the line containing 'offset'
    is displayed.

 Mode 4 is used if :

   a. If a description is present you need to specify the /RAW or the /BITS
   b. You typed a . in the offset or you specified the /BITS=nn

   In this case DIX will display the value of offset:offset+nbits-1.
   This allows you to examine any bitstring within the record
   If /BITS is not specified, DIX takes the current word size
    /BYTE, /WORD or /LONGWORD.

  Mode 5 allows you to force a specific datatype translation for a
   specific offset

  See also the FIND command.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS


DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /ALL

  Display the selected fields or offset with all data formats
  See examples below

  $ DIX/int sysuaf
  DIX> exa/all *byt*
  560|UAF$L_BYTLM |Raw data   |40 0D 03 00 00 00 00 00 00 10 00 00 00 00 00 00
                  |INTEGER*1  |64
                  |INTEGER*2  |3392
                  |INTEGER*4  |200000
                  |UINTEGER*1 |64
                  |UINTEGER*2 |3392
                  |UINTEGER*4 |200000
                  |REAL*4     |0.14791E-00030
                  |REAL*8     |0.18307E-00244
                  |REAL*16    |0.48925E-04942
                  |REALG*8    |0.18307E-00244
                  |REAL_IEEE*4|Overflow
                  |REAL_IEEE*8|Overflow
                  |LOGICAL*1  |False
                  |UIC        |[3,6500]
                  |CHARACTER*4|@...
                  |DATE*4     |4-APR-1859 21:20:00.00
                  |DATE*8     |17-NOV-1858 00:00:00.02
                  |PROTECTION |S:RWED, O:RWD, G:W, W:RWED
                  |RINTEGER   |222298115
                  |FILEID     |(3392,3,0)
                  |BITS       |BIT6
  564|UAF$L_PBYTLM|Raw data   |00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00
                  |INTEGER*1  |0
                  |INTEGER*2  |0
                  |INTEGER*4  |0
                  |UINTEGER*1 |0
                  |UINTEGER*2 |0
                  |UINTEGER*4 |0
                  |REAL*4     |0.0000
                  |REAL*8     |Overflow
                  |REAL*16    |0.11391E-04951
                  |REALG*8    |Overflow
                  |REAL_IEEE*4|0.0000
                  |REAL_IEEE*8|Overflow
                  |LOGICAL*1  |False
                  |UIC        |[0,0]
                  |CHARACTER*4|....
                  |DATE*4     |17-NOV-1858 00:00:00.00
                  |DATE*8     |7-DEC-1858 08:40:18.60
                  |PROTECTION |S:RWED, O:RWED, G:RWED, W:RWED
                  |RINTEGER   |0
                  |FILEID     |(1048576,0,0)
                  |BITS       |

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /BITS

  /BITS=n
  Force a bitstring examine. N can have any value between 1 and 64.

  Example:

  DIX> examine/bits=4 100.3  !examine 4 bits starting at byte offset 100
  100.3=2                    !bit 3, so but 3..6 are displayed

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /DESCRIPTION


 Display the description info after the field value.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /DISPLAY

  /DISPLAY=(displayitem[,displayitem...])

  This qualifier decides what parts of the record are to be displayed

  The default display is used (see set/show display).

  Displayitem can be

  [NO]DATA         : Display the data part of the record
  [NO]VFC          : Display the VFC part of the record (if present)
  [NO]RECNR        : Display the record number (only if record not found
                                               via keyed access)
  [NO]RECLEN       : Display the record length
  [NO]RFA          : Display the RFA of the record
  [NO]FIELDNAMES   : Display the field names
  [NO]NUMBER=value : Display the offset part : value can be hexadecimal or decimal
  [NO]ALL          : Print all parts
  [NO]WRAP         : If set, DIX will wrap output to the width of the terminal.
                     If clear, DIX will not wrap. The default is WRAP

  HEX              : Display in hexadecimal
  DECIMAL          : Display in decimal
  BINARY           : Display in binary
  OCTAL            : Display in octal
  OFFSET=HEX       : Display the offset field in hexadecimal
  OFFSET=DECIMAL   : Display the offset field in decimal
  OFFSET=NONE      : Do not display the offset part
  NOOFFSET         : Do not display the offset part
  [NO]RAW          : Set or clear RAW mode display
  BYTE             : Display raw data in byte mode
  WORD             : Display raw data in word mode
  LONGWORD         : Display raw data in longword mode
  UNSIGNED         : Display raw data (if not in HEX mode) as unsigned integers.
  [NO]EBCDIC       : Set the EBCDIC translation flag
  [NO]WRAP         : If set, DIX will wrap output to the width of the terminal.
                     If clear, DIX will not wrap. The default is WRAP
  [NO]BIT_OFFSET   : Force offsets to be displayed with the bit offset part.
                     Normally DIX displays bit_offsets only if somewhere in the
                     record a data field is not byte aligned.

  The separator is used between the offset/field/value

  SEPARATOR=NONE     : Do not use a separator
  SEPARATOR=BAR      : Use | as separator
  SEPARATOR=COMMA    : Use COMMA as separator
  SEPARATOR=TAB      : Use TAB char as separator
  SEPARATOR=COLON    : Use COLON (:) a separator
  SEPARATOR=SEMICOLON: Use SEMICOLON (;) as separator
  SEPARATOR=CHARACTER=%Xdd : Use %Xdd as separator

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /EBCDIC


 /EBCDIC
 /NOEBCDIC

  Override the /EBCDIC setting for a field (in description mode)
  or the file (in raw mode).

  So if the file was opened with /EBCDIC, (DIX would convert text fields
   to ASCII), you may still view the original data in EBCDIC via the
   EXAM/NOEBCDIC
  or if the /EBCDIC is not specified the file or field, you may want an
   explicit convert.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /EXPAND


  Force new expansion of the current description. If the description
  has conditional fields, and one of the symbols used as a condition
  has changed, you can force DIX to re-expand the description and
  therefore re-evaluate the conditions.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /FORMAT

  /FORMAT=option

  Normally all "character"-like fields will not contain unprintable data.
  These field types are CHARACTER, xSTRING.
  If the data does contain unprintables (hex 0:1f,7f,80:9f or ff) the
  /FORMAT qualifier determines how this data should be displayed.
  The default is the current format setting (set/show format)

   Option can be
    DOT   :All unprintables are replaced by a ".". This encoding is not
            reversible, after an unprintable value is replaced by a ".",
            DIX cannot know what the unprintable value was. This may
            be a problem in the screen mode.
    HEX   :All unprintable data is displayed as %Xdd, a hexadecimal display.
            A % in the data will be displayed as %%. This display is reversible,
            so DIX can reconstruct the original unprintable value.
            If you are in this mode, on input a % must be entered as %%
    PASSALL:DIX will not change the unprintable data. The data is displayed as
            it is. This mode will not work in screen mode, and maybe poorly
            when the output device is a terminal.
    DUMP   :Unprintable bytes are represented by a 2 or 3 letter mnemonic
            like <DEL> or <CR>. A < in the text will be displayed as <<.
            This display is reversible, so DIX can reconstruct the original
            unprintable value.
            If you are in this mode, on input a < must be entered as <<

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /HEADER

  In raw mode the /HEADER will output a line with the byte offsets
  of the data below.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /HIGHLIGHT


  /HIGHLIGHT=(token,token...)

  Used to highlight fields that are in the key

   The /HIGHLIGHT token can be
     any colour from (only one allowed)
      BLACK,BLUE,CYAN,GREEN,MAGENTA,RED,WHITE,YELLOW
     and any colour modifier (multiple allowed)
       BLINK,UNDERLINE,BOLD,REVERSE

      To display the colours the terminal must be able to display ansi colours


DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /OUTPUT

 /OUTPUT=filename
  Print the output to a file.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /SCREEN

 /SCREEN
 /NOSCREEN (Default)
  Display the data in an SMG window, that allows you to scroll through it.
  See also SET PAGED SCREEN

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /SEARCH

 /SEARCH=searchmask

  Display only fields that have a value that matches "searchmask"
  See also the FIND command

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /PAGED


 If the output is printed to the terminal, the output is printed
  per page, and the user must type a return to continue

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /ORIGINAL


 Do not display the data from the current (possibly modified) data in memory
 but use the original contents of this record.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /SAVE_AREA


 Do not display the data from the current (possibly modified) data in memory
 but use the save area (see also CUT and PASTE).

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /RAW


 Display data in raw (non description) mode. In this mode the qualifiers
  /WORD, /BYTE, /LONG, and /BITS are significant. The default is the
  value specified in the SET DISPLAY /long/word/byte value

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /WORD


  Display data in words. Valid only in /RAW mode.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /BYTE


  Display data in bytes. Valid only in /RAW mode.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /LONG


  Display data in longwords. This is the default for RAW mode.
  Valid only in /RAW mode.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /UNSIGNED


  Display integers as unsigned. Not used for /HEX.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /HEX


  Display the data in HEX. The default is decimal.
  If this qualifiers is specified in /RAW mode, the data is displayed in HEX.
  This qualifier can also be used in /NORAW mode (description mode). The
  data will be displayed in HEX. See also the /OFFSET qualifier
  /HEX is a shorthand for /RADIX=16

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /OCTAL


  Display the data in octal. The default is decimal/interpreted.
  If this qualifiers is specified in /RAW mode, the data is displayed in octal.
  This qualifier can also be used in /NORAW mode (description mode). The
  data will be displayed in octal. See also the /OFFSET qualifier
  /HEX is a shorthand for /RADIX=8

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /BINARY


  Display the data in binary. The default is decimal/interpreted.
  If this qualifiers is specified in /RAW mode, the data is displayed in binary.
  This qualifier can also be used in /NORAW mode (description mode). The
  data will be displayed in binary. See also the /OFFSET qualifier
  /HEX is a shorthand for /RADIX=2

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /RADIX

  /RADIX=nn

  Display the data in a given radix. nn must be between 2 and 36
  For /radix=16,8,2 are shorthand defined as /HEX,/OCTAL and /BINARY
  A radix which is not a power of 2 (so not 2,4,8,16,32) can only be
  used on [u]integer fields
  For radix 36 the characters 0..9 and A..Z will be used (so Z=35)

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /OFFSET

 /NOOFFSET

  /OFFSET=DECIMAL  (Default)
  /OFFSET=HEX
  /OFFSET=OCTAL
  /OFFSET=BINARY

 Display byte offsets for each field. This is the default.

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /COMPRESS

  /NOCOMPRESS

 Do not display empty fields (spaces for text, and nulls for binary).
  The default is /NOCOMPRESS.
 In /RAW mode a line will not be displayed if all values on that line are 0/blank

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /MARK

  /MARK=(option[,option...])

   Option can be BOLD,UNDERLINE,REVERSE,BLINK
   The default option is REVERSE

  /MARK         Is the default for output to terminals (/mark=reverse)
  /NOMARK       Is the default for output to files

  If you specify /MARK, DIX will display fieldnames, that are in
  the current key of an indexed file, in the specified mode

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /TAG

  /TAG
  /NOTAG

  Display data from multiple files with file\desc\ tag.
  The default value is taken from the default display setting
  See the SET DISPLAY and SHOW DISPLAY commands

  If tag is true, and the user examines multiple file/descriptions
   the display will prefix the fieldname with the file\description\ tag.

  If tag is false, fieldnames will be printed normally, and all
   files/descriptions are signaled. Only if no file\description\
   mask is present, there will be no display of file/description.

  Example:
   Assume we have 3 files opened (tags file1, file2 and file3) and
   on file1 there is a descr1 description etc...
   File2 is the current file

   DIX> examine/tag *\*\*txt*  !display all fields with the name containing
                              !txt if all files opened and all descriptions.
   18|file1\descr1\mytxting|My Text
   12|file2\descr4\yourtxtorso|Your test
   12|file3\descr1\histxtornot|His text

   If the /tag would not have been specified, the display would look like

   File:file1.dat
   Description:descr1
   18|mytxting|My Text
   File:file2.dat
   Description:descr4
   12|yourtxtorso|Your test
   File:file3.dat
   Description:descr1
   12|histxtornot|His text

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /QUOTED

   /QUOTED
   /NOQUOTED

   Temporary overrule the current quoted setting
   If quoted is set, DIX will enclose non-numeric fields in "",
   just as if you had set the set quoted enabled.
   See the help about DIX INTER SET QUOTED

DIX INTERACTIVE_COMMANDS EXAMINE QUALIFIERS /VERTICAL


  For raw mode, DIX will normally display data in OpenVMS-dump format.
  If you specify /VERTICAL, DIX will display data in one line per value.
  /vertical is automatic if the offset is not on a byte boundary or if
  the /bits is specified.

  Example:

  DIX> exa/raw/hex 404:416              !OpenVMS dump format
              31C2FF 00A7C639 A61DF700 .÷.¦9Ƨ..Â1        404

  DIX> exa/raw/hex/vert 404:416          !vertical format
  404.0=A61DF700
  408.0=00A7C639
  412.0=0031C2FF

  DIX> exa/raw/hex 404:410
   000000 0031C2FF 00A7C639 A61DF700 .÷.¦9Ƨ..Â1....    404  !OpenVMS dump format

  DIX> exa/raw/hex/vert 404:410                              !vertical format
  404.0=A61DF700
  408.0=00A7C639

DIX INTERACTIVE_COMMANDS EVALUATE


  Evaluate expression

  Syntax:
    EVALUATE[/qualifiers] expression[,expression...]

  Evaluate expression. An expression can contain integers, reals,
  character strings, field values and parameters.

  A synonym for EVALUATE is SAY

  See the help about [DIX/HELP] interactive expressions

![DIX inter expres]Help about expressions

  DIX supports a lot of functions, see the help about
    [DIX/HELP] interactive functions
  in "interactive_Commands functions"

 Normally DIX will evaluate the line and print the output directly
  but you can also build a line in multiple times using /noterminate
  and then print the total.
  See the /TERMINATE qualifier for more help

![function]DIX inter functions

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers


DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /OUTPUT

 /OUTPUT=filename

  Print the output to a file.

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /SCREEN

 /SCREEN
 /NOSCREEN (Default)

  Display the data in an SMG window, that allows you to scroll through it.
  See also SET PAGED SCREEN

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /PAGED


 If the output is printed to the terminal, the output is printed
  per page, and the user must type a return to continue

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /format

  /format=value

  How DIX should display unprintable characters for this evaluation only
  This will override the default format set via the SET FORMAT command.
  Be aware that the TAB character is regarded as unprintable.

  value can be DOT, HEX, DUMP, PASSALL or ANSI
  For more info see the SET FORMAT help

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /index


  eval/index indexed_symbol

  The argument must be an indexed symbol

  Display an indexed symbol with both index and value
  You can also specify /table, /right_justify, /vertical and /[no]header

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /hex


  Display the result in HEX.

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /octal


  Display the result in octal.

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /binary


  Display the result in binary.

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /CSV

  /CSV
   /CSV=(Csv_option[,csv_option...])

  Csv_option can be
   NOQUOTES  : Do not 'quote' fields (see below)
   ALL_QUOTES: User quotes around all fields
   SEPARATOR=COMMA    : Use COMMA as separator     (Default)
   SEPARATOR=TAB      : Use TAB char as separator
   SEPARATOR=COLON    : Use COLON (:) a separator
   SEPARATOR=SEMICOLON: Use SEMICOLON (;) as separator
   SEPARATOR=BAR      : Use | as a separator
   SEPARATOR=CHARACTER=%Xdd : Use %Xdd as separator
   QUOTE=DOUBLEQUOTE   : Use the " character for quotes around fields (Default)
   QUOTE=QUOTE         : Use the ' character for quotes around fields
   QUOTE=CHARACTER=%Xdd: Use the %Xdd character for quotes around field

  If you want quoting (Default), DIX will insert the "quotecharacter"
  around text fields and field that contain the "separatorcharacter" or space

  If you specify ALL_QUOTES, DIX will insert the "quotecharacter"
  around all fields.

  If you specify NOQUOTES, DIX will never insert the "quotecharacter"

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /interval


  /interval=n

  If you specify /interval=n, DIX will start printing at positions in the
  line that are a multiple of n. This can be used together with /noterm
  to print out a simple table format.
  If the resulting text is wider than the 'n', DIX will replace the text by ****

  You may combine this qualifier with the /right_just to right justify the text
   in the field

  Example:

  DIX> eval/noterm/inter=10 10  !store 10 in the buffer
  DIX> eval/noterm/inter=10     !append 20
  DIX> eval/noterm/inter=10 30  !and 30
  DIX> eval/inter=10  40        !and 40 and now print out the line
  10        20        30        40

   DIX> say/noterm/inter=10/right "aa"
   DIX> say/noterm/inter=10/right "bb"
   DIX> say/noterm/inter=10/right "12345678919011"      !too wide
   DIX> say ""                                          !and finish off
        aa        bb**********
   DIX> say/inter=10/right "aa","bb","cc"       !all in one statement
        aa        bb        cc

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /quoted


  Print output in a format that can be used for input again.
   So if a symbol has the type of string (characters), the default
    display is only the contents of the string.
    If you use the /quoted qualifier, the string is enclosed in "",
    and "'s within the string will be doubled.

  Examples:
   DIX> a="test"
   DIX> say a
   test
   DIX> say/quoted a
   "test"               !enclose in quotes

   DIX> a="te""st"
   DIX> say a
   te"st
   DIX> say/quoted a
   "te""st"             !enclose in quotes and double the " in the string

   DIX> a=#ACE"(ID=system,acc=r)"
   DIX> say a
   (IDENTIFIER=[SYSTEM],ACCESS=READ)
   DIX> say/quoted a
   #ACE"(IDENTIFIER=[SYSTEM],ACCESS=READ)"  !this layout can be used
                                            !for input

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /named


  For symbols/values of description or structures types only

  If you specify /named and evaluate a value DIX will include the
   fieldnames in the resulting output

  Example:

  DIX> load/structure def_main.struct    !load the structure
  DIX> sh struc/fu def_main               !what does it look like
  DEF_MAIN, level 1                      !
  File USER50:[STUBBF.PROGRAMS.DIX.SOURCE]DEF_MAIN.STRUCT;2
  INTEGER*4              INDEX
  CHARACTER*40           MYSTR
  REAL_X*16              REAL16VAL
  INTEGER*4              EXTRA_INT
  INTEGER*4              EXTRA2(2,3)
  DIX> decl/stru=def_main val             !declare a symbol of this type

  DIX> say val                           !normal evaluate, only values
  [0,,0.0,0,[[0,0][0,0][0,0]]]

  DIX> say/named val                        !eval with field names
  [INDEX=0,MYSTR=,REAL16VAL=0.0,EXTRA_INT=0,[[EXTRA2(1,1)=0,EXTRA2(2,1)=0]
  [EXTRA2(1,2)=0,EXTRA2(2,2)=0][EXTRA2(1,3)=0,EXTRA2(2,3)=0]]]

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /position

  /position=number

  If you use /position, DIX will insert the text at position 'number'
   in the line. This can also be combined with the /noterm qualifier

  Example:

  DIX> eval/noterm "Result:"    !Store Result: (and do not print yet)
  DIX> eval/positio=20 123      !and print 123 at pos 20 in the line
  Result:            123

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /right_justify


  if you print a table or index symbol you can specify the witch of each
  value/index. If the text does not fit in the field size, DIX will print *'s

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /table

  /table=width    The field width
  /table=8        (Default)

   If table is negative, the dimensions are reversed in the display
     The result is the same as when you change the LOW_FIRST setting

  If the value results in a table on screen
  If other values are present on the line, the output line
    is flushed before and after the tables(s)

  DIX> decl a(3,3)                      !declare a table
  DIX> a=[[1,2,3][4,5,6][7,8,9]]        !fill it
  DIX> say a                            !normal inline display
  [[1,2,3][4,5,6][7,8,9]]
  DIX> say/table  a                     !table display
  (x,y)
        x       1       2       3
       y+------------------------
       1|       1       2       3
       2|       4       5       6
       3|       7       8       9
  DIX> say/table=-8  a                  !reversed table display
  (y,x)
        x       1       2       3
       y+------------------------
       1|       1       4       7
       2|       2       5       8
       3|       3       6       9

  See also the /vertical qualifier and the /right_justify

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /terminate

  /terminate     (Default)
  /noterminate

  If you use the /noterminate, DIX will not print the expression directly
  but remember it for the next evaluate command. In this way you can
  buildup a whole line, and then finally print it

  Example:
  DIX> eval/noterm 10  !store 10 in the buffer
  DIX> eval/noterm 20  !append 20
  DIX> eval/noterm 30  !and 30
  DIX> eval  40        !and 40 and now print out the line
  10203040

  You can also use this with the /interval or the /position qualifier

  DIX> eval/noterm/inter=10 10  !store 10 in the buffer
  DIX> eval/noterm/inter=10  !append 20
  DIX> eval/noterm/inter=10 30  !and 30
  DIX> eval/inter=10  40        !and 40 and now print out the line
  10        20        30        40

  DIX> eval/noterm "Result:"    !Store Result:
  DIX> eval/positio=10 123      !and print 123 at pos 10 in the line
  Result:  123

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /vertical


  If you specify /vertical (and also /table), DIX will print each values
   on a new line. This is useful if the value is of type string.

  Example:
   DIX> a=f$read("test.txt",1,4)        !read the first 4 lines of test.txt
   DIX> say/table/vert a
   (1)=First line
   (2)=Second line
   (3)=Third line
   (4)=Fourth line

DIX INTERACTIVE_COMMANDS EVALUATE qualifiers /type

  /type=enum_type

   Try to display the output using the enumeration_type

  Example:
  DIX> ADD TYPE DAYS="0=sun,1=mon,2=tue,3=wed,4=thu,5=fri,6=sat"
  DIX> integer/type=#days weekday
  DIX> weekday=wed
  DIX> Show symbol weekday
  WEEKDAY=sat
  DIX> evaluate weekday         !the eval will always return the binary
  6
  DIX> evaluate/type=#days weekday
  sat                           !now display according to the enum type

DIX INTERACTIVE_COMMANDS EXIT

   EXIT [exit_status]

  Leave DIX or the current command level to a lower level.

  Qualifiers are
  /AUTO    Override the current auto setting
  /NOAUTO  "" ""

DIX INTERACTIVE_COMMANDS Expressions


  Expressions can use the following operators
  Arithmetic :    +,-,/,*,**(=exponentiation), //(string append)
  shift      :    >> (shift right), << (shift left) and >& (shift right arithmetic)
  Logical    :    &(=and),and,|(=or),^(xor) or,~(=not),not operator.
  Comparison :    <,<=,=,>=,> or <>
                  LT,LE,EQ,GE,GT,NE
                  In dcl_compat mode the following are also supported
                   .LT. ,.LE. ,.EQ. ,.GE. ,.GT. ,.NE.
                   .LTS.,.LES.,.EQS.,.GES.,.GTS.,.NES.

  Special    :    For character ranges like "A":"Z"

  Priority   : Character range (highest)
             **          8
             *,/         7
             +,-         6
             >>,<<,>&    5
             Comparison  4
             ~,not       3
             &,and,xor   2
             |,or        1

  Within a group parsing is done from left to right
  Brackets can be used to change priority of the operator.
  The operands can be

  1. Numbers (integer or real)
      Integers can be specified as just numbers
      or 'dddd'F with F=D(ecimal),H(ex),O(ctal),B(inary),or Rn[n]
              or %Rdddd with R as above except the Rn[n].

      Reals as [sign]dd.dd[Xexponent[sign]dd]
           X can be E(32 bits), D(64 bits) or Q(128 bits)
           example -1.0q-12   : 128 bits real
           If you do not specify a specific size (E,D,Q) DIX
            will use the best fitting real, so 1.2 will be real*4
            and 1.23456789 will be a real*8 (too many digits)

      Complex as (real_part,imaginary_part)
        The real and imaginary part must be specified as reals or integers

  2. Character strings. They start and end with a ". For the + operator all
       type of strings can be added, also [x]string, not only char
  3. Logical constants (true or false)
  4. Symbols (with their types)
  5. Parameters/values
  6. Special functions. See the help about [DIX/HELP] interactive functions

![DIX inter function]Help about functions
  7. All other data types #datatype[*size]"validstring"
     datatype can be any of the known types
     x=#ACE"(id=system,acc=r+w)"
     This syntax can also be used to select a field from a type definition

      Example:
       DIX> ADD TYPE DAYS="0=sun,1=mon,2=tue,3=wed,4=thu,5=fri,6=sat"
       DIX> monval = #days"mon"
  8. Fields of the record.
     The full syntax of the fieldname is
     filetag\descriptiontag\fieldname. The filetag defaults to the
                                       currentfile.
                                       The descriptiontag defaults to the
                                       current description of the selected file.
     If there is only one tag, it is regarded as a filetag, so
      name\fieldname searches for field "fieldname" in the current description
      of the file with tag "name".
     If there is no tag, the search will be for the fieldname in the current
      description of the current file.
     For some type of fields (i.e. bit values) a subfield({}) can be used
      See the help [DIX record_format field subfields]

  Names can refer to fieldnames, symbols, parameters, functions

  The normal order of evaluation is
     1. Functions
     2. Symbols
     3. Parameter/values
     4. Fieldnames

   But the order can be changed using the set evaluation_order command

  Preceding the name with a %F, %P, %S allows you to force a specific
  lookup. So if you have a fieldname, parameter and symbol with the name
  TEST:
   TEST will find the SYMBOL (or the function if TEST was a valid
                                   function name)
   %FTEST Will find the fieldname (and not the function, parameter or symbol)
   %PTEST will find the parameter (and not the function, parameter or fieldname)
   %STEST will find the symbol (and not the function, fieldname or symbol)

   If the result of all above is again a table, you may specify a dimension
       again to subset the result value

     Example:
       Suppose now is 2-APR-2009:10:11:12.13
       DIX> say f$numtim()       ! will deliver [2008,3,2,10,11,12,13] :
                                 ! a table of 7 integers
       DIX> say f$numtim()(3)    ! will deliver 2, the third element of the table
       DIX> say f$numtim()(1:3)  ! Will deliver [2008,4,2]
                                 ! a table of 3 integers (1..3)

  The operators have the normal meaning with some extensions
  for operations on some other datatypes

  1. integer*character   will result in a string that contains
                         integer times the source
                         e.g. 10*"A" => "AAAAAAAAAA"
                              5*"AB" => "ABABABABAB"
  2. character/character will remove all occurrences of the second
                         string from the first
                         e.g. "ABABABAB"/"A"   => "BBBB"
                              "ABABCABAB"/"AB" => "C"
  3. date1-date2         The result will be a delta time, and thus
                         date2 must be >date1, or date2 must be a delta time
                         and the result will be a delta time.
  4. date1+date2         Date1 or date2 (or both) must be delta times
  5. "A":"Z"             Character range: This delivers a string of 26
                         characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  6. integer*deltatime   A new deltatime
     Deltatime*integer   A new deltatime
  7. Deltatime/integer   A new deltatime
  8. ACE + ACE           Will make an ACL type
  9. acl1-ace or
     acl1-acl2           Will remove all ACEs in ACE or acl2 from acl1
 10. bits1-bits2         Remove all bits set in bits2 from bits1
 11. privs1-privs2       Remove all privileges set in privs2 from privs1

DIX INTERACTIVE_COMMANDS FASC


  Search for printable text in files. Printable means ASCII value 32..126
  If a string (of /length size) of bytes are printable (and the optional
  patterns match), DIX will print the string.

  syntax FASC filenamemask [patterns] [/qualifiers]

 Filenamemask is a mask to find files to process
  patterns is (a list of) patterns that must match before they are printed

  Example:

  FASC sys$system:sysman.exe bitmap,*public*

   Find all strings in sysman.exe equal to bitmap or match *public*
 the following qualifiers are supported

DIX INTERACTIVE_COMMANDS FASC /block


  If you specify /block  (Default) the file will be mapped in memory and
       all bytes are searched

  If you specify /noblock, the file will be processed by record
   and You cannot find strings that are split over multiple records

  For indexed and relative files you should specify /noblock, since
   records may/will not be adjacent anyway.

DIX INTERACTIVE_COMMANDS FASC /output

    /output=filename, default SYS$OUTPUT

  Print the output to a file

DIX INTERACTIVE_COMMANDS FASC /length

   /length=n.
    /length=5   (Default)

  The "readable" strings must be at least n long

DIX INTERACTIVE_COMMANDS FASC /statistics


  Print some extra info

DIX INTERACTIVE_COMMANDS FASC /vowel


  The string must contain vowels, but not all characters must be vowels.

DIX INTERACTIVE_COMMANDS FASC /offset

  /offset=byte                    nnnnn
  /offset=block_byte              nnn.mm  (where mm is 00..1ff)
  /offset=page                    nnn.mm  (where mm is 00..1fff (8291))

  How to print the offset where the string is found

DIX INTERACTIVE_COMMANDS FASC /hex


  If you specify /hex, the offset is printed in hexadecimal

DIX INTERACTIVE_COMMANDS FASC /hex /and


  If you specify patterns, the string will be printed if any of the patterns
  match. If you specify /and, all patterns must match

DIX INTERACTIVE_COMMANDS FASC /hex /case_sensitive


  If you specify /case_sens, the patterns must be in correct case.

DIX INTERACTIVE_COMMANDS FIND


  FIND[/qualifiers] searchmask

  Search data in record (not a record search).
  Display those fields that contain the search string. The compare is done
  in ASCII mode with the normal OpenVMS wildcards (* and %).

  The output is the same as examine/search=searchmask *

DIX INTERACTIVE_COMMANDS FIND qualifiers


DIX INTERACTIVE_COMMANDS FIND qualifiers /RAW


 Display data in raw (non description) mode. In this mode the qualifiers
  /WORD, /BYTE, /LONG, /HEX are significant. The default is the /LONG.
  Offset can be specified as byte_offset[.bit_offset]

DIX INTERACTIVE_COMMANDS FIND qualifiers /WORD


  Display data in words. Valid only in /RAW mode.

DIX INTERACTIVE_COMMANDS FIND qualifiers /BYTE


  Display data in bytes. Valid only in /RAW mode.

DIX INTERACTIVE_COMMANDS FIND qualifiers /LONG


  Display data in longwords. This is the default in /RAW mode.
  Valid only in /RAW mode.

DIX INTERACTIVE_COMMANDS FIND qualifiers /UNSIGNED


  Display integers as unsigned. Not used for /HEX.

DIX INTERACTIVE_COMMANDS FIND qualifiers /HEX


  Interpret the value in HEX mode.

DIX INTERACTIVE_COMMANDS FIND qualifiers /COMPRESS


  Do not display fields with "empty" values (0 for binaries and space for text)

DIX INTERACTIVE_COMMANDS FIND qualifiers /OUTPUT

 /OUTPUT=Filename

  Print the output to a file.

DIX INTERACTIVE_COMMANDS FIND qualifiers /SCREEN

 /SCREEN
 /NOSCREEN (Default)

  Display the data in an SMG window, which allows you to scroll through it.
  See also SET PAGED SCREEN

DIX INTERACTIVE_COMMANDS FIND qualifiers /PAGED


 If the output is printed to the terminal, the output is printed
  per page, and the user must type a return to continue

DIX INTERACTIVE_COMMANDS FOLLOW


   FOLLOW[/LOG][/automatic][/READ][/WRITE] fieldname

   This allows you to switch to a new record in a (new) file

   If you do not use any of the following qualifiers, the field has
    to defined with link info (/FILE,/KEY,/RECORD,/COMPUTE)

   You may override the values defined in the field by using any of
    the qualifier below
    /FILE="filename"  Or part of it, the current file is used as
                       a default filename
    /DESCRIPTION=name If you want to override the default description
                       to be used
    /COMP_LINE="expr" Computation done on the field value
    /IF_LINE="expres" Conditional string
    /KEY=keynr        Field value is keyvalue for key 'keynr'
    /MATCH=LT|LE|EQ|GE|GT Match for keyed searches
    /RECORD           Field value will be the record number of the file
    /RFA              Field value will be the RFA of the file
    /BYTEOFFSET       Field value will be a byetoffset in the file

   So either the field has link information or you override it,
    but the link information must be present.

   If that file is not already opened in DIX and you specified /AUTOMATIC,
   DIX will try to open the file. If you do not specify /AUTOMATIC, you will
   be asked if you want to open the file.

   If the file can be opened and the record can be found, DIX will display the
   new record. If the file cannot be opened or the record cannot be found
   DIX will signal the error, and you stay in the current file/record.
   DIX will open the file in the same mode (read/write) as the source file,
   unless you override with the /READ of /WRITE qualifier.

   See the help about [DIX/HELP] RECORD_FORMAT FIELD_DECL
   See also the [DIX/HELP] interactive BACK command

![DIX DISPLAY RECORD_FORMAT FIELD_DECL]Help about /file

DIX INTERACTIVE_COMMANDS FOR_ENDFOR


 For has two syntaxes
  case 1: The normal integer syntax
    FOR symbol=first,last[,increment]
    ENDFOR

      first,last and increment must be integer.
      last can be < first, but then increment must be negative.

      The local Symbol is initialized with 'first', and checked against 'last'
      If first <= last (and increment is >0) or
         first >= last (and increment is <0)

      The expressions first,last and increment are evaluated only once, at
      the FOR command. It is possible to execute the loop 0 times.

  Case 2: The enumeration variant
   FOR SYMBOL IN expression
   ENDFOR

     The expression may be a table of any kind.
     so you may specify
       FOR K IN [1,45,90]      Three iterations with K(integer)=1,45,90
       FOR K IN ["A","X"]      Two iteration with K(Char) = "A", "X"
       FOR K IN "TEST"{*}      Four iterations with K(char)="T","E","S","T"
                               See the help about subfields

  the statements up to the ENDFOR will be executed, and then
    Case 1: Increment will be added to first and the check repeated.
    Case 2: The next enumeration element will be used

  If the condition does not match, the statement following
  ENDFOR will be executed.

  See the help about [DIX/HELP] interact expressions
  After the for loop finishes, or if you jump out of the loop
  with a GOTO statement the symbol is no longer defined.

  It is not allowed to change the value of the FOR variable in
  the FOR loop (attempts are signaled and ignored).

  See also the help about the LEAVE and the CYCLE command

  If you type the command from the terminal (instead from a command file)
  DIX will prompt you for more lines until the ENDFOR command is found,
  and then will execute the commands.

![DIX inter expression]help about expressions

 Example for a FOR construct:

 FOR k=10,1,-2
  say "The value of K = ''k'"
 ENDFOR
 will deliver the output
  The value of K = 10
  The value of K = 8
  The value of K = 6
  The value of K = 4
  The value of K = 2

DIX INTERACTIVE_COMMANDS FUNCTIONS

  DIX supports functions during the evaluation of the input.

  Functions are defined with arguments.
  More info about these functions is in the deeper topics.
  The () are required, even if no arguments are present.
  Function names starting with F$ can be abbreviated if the name is unique
  other functionnames must be specified exactly.

  arithmetic functions

             arg1     Arg2      Arg3  Arg4 Output
  ABS     int/real/cpx                     Int/real : Absolute value
  AND         Int      Int                 Int : Anded value
  OR          Int      Int                 Int : Ored  value
  NOT         Log                          Log : Reverse logical value
  EVEN        Int                          Log : True if arg1 is even
  ODD         Int                          Log : True if arg1 is odd
  ASHIFT      Int      Int                 Int : arg1 shifted arithm arg2 to right
  RSHIFT      Int      Int                 Int : arg1 shifted arg2 to right
  LSHIFT      Int      Int                 Int : arg1 shifted arg2 to left
  CSHIFT      Int      Int     Int         Int : arg1 shift circular by arg2/arg3
  MOD         Int      Int                 Int : mod(arg1,arg2)
  MAX       Int/real Int/real  Int/real    Same: Max value
  MIN       int/real Int/real  Int/real    Same: Min value
  AVERAGE   Int/real Int/real  Int/real    Same: Average value
  SUM       Int/real Int/real  Int/real    Same: Sum value
  DOT_PRODUCT Int/real Int/real            Same: The dot_product
  MINIDX      all                          Int: Table with minimum index of arg1
  MAXIDX      all                          Int: Table with maximum index of arg1
  BTEST       Int      Int                 Log : Return true if bit 'arg2' of arg1 is set
  IBSET       Int      Int                 Int : arg1 with bit 'arg2' set
  ILEN        Int                          Int : Length in bits of value
  IBCLR       Int      Int                 Int : arg1 with bit 'arg2' cleared
  SQRT        Int/real/cmplx               Real/cplx: Square root
  SIN/COS/TAN
            Int/real/cpx                   Real : Trigonometric function
  TAN/ASIN/ACOS/ATAN/SINH/COSH/TANH
              Int/real                     Real : Trigonometric function
  LOG10     Int/real/cpx                     Real : The 10LOG value
  LOG       Int/real/xpc                     Real : The eLOG value
  FAC         Int                          Int/real: Faculty
  COMBINATIONS  Int    Int                 Int/real: #Combination
  PERMUATATIONS Int    Int                 Int/real: #permuntations
  EXP       Int/real/cplx                  Same: The exponent value e**arg

  Conversion functions

  INT      Int/real/char/date/cpx          Int : Converted to int
  LOGICAL  Int                             Log : Converted to Logical
  NINT     Int/real/char/cpx               Int : Nearest integer
  REAL     Int/real/cpx                    Real: converted to real
  IMAG     cpx                             Real: Get the imag part
  STRING   All        Log                  Char: Converted to char (in HEX mode)
  CONJG    cpx                             cpx : (a,b) returns (a,-b)
  CMPLX  Int/real Int/real                 cpx : The complex value

  Lexical functions
              arg1    arg2   arg3 arg4     Result

  F$ADD       Many    Many    Int          Char: Add text numeric string
  F$APPEND    Table   Table   ...          Table: Append two of more tables
  F$AREA      int     char    char         int/log: Info about an area
  F$BASE64    chr     many                 chr : Convert to/from base64
  F$BITS      int     char/log cjar        int : List of set/clear bits
  F$CHAR      int                          char: Make a string of 1 char
  F$CHECKSUM  int     int        char char Int : The checksum (4 args)
  F$COLLAPSE  char                         char: Remove all spaces
  F$COLOUR    char/none                    char: a string to set/clear colour
  F$CONCAT    Any                          char: Return a string of all values concatenated
  F$CONTEXT   char    symbol  char chr/int char
                                           Char: Empty string
  F$CONTROL   int                          int : Control-t data
  F$CONVERT   char    char                 any : Convert string to any other type
  F$CORRELATE int/real int/real            real: Correlation
  F$COUNT     int                          Int : number of bits needed 
  F$CRC       Int     Int     Char         Int : The computed CRC
  F$CRC_TABLE Int                          Int : The CRC table (16 INT*4)
  F$CSID      symbol log/char              int : Cluster node ID
  F$CUNITS    Int      char                int : Conversion blocks/bytes
  F$CVTIME    char     char      char      date/int: Date conversion

  F$DATE      int/real/date  String        date: Create a date symbol
  F$DCL_PRESENT Chr   Symbol               Int : Present/absent/negated
  F$DCL_GET_VALUE Chr Symbol               Chr : Get the value of a qualifier/parameter
  F$DECIMAL   Int/chr                      Deci: Convert data to decimal type
  F$DESCRIPTION Int                        char: Name of description file
  F$DEVICE    Char int int sym log         char: The f$device function of DCL
  F$DIRECTORY None                         Char: The current directory
  F$DIVIDE    char    char  int int        char: ASCII divide

  F$EDIT    String    String               char: Like DCL
  F$ELEMENT   int      char      char      char: Return the n'th element
                                                 if n <0 return the last+1+'n'
                                                 element
  F$ENUMERATE int     char                 char: Returns field/symbol/parameter names
  F$ENVIRON   char   int                   various : Info about the current environment
  F$EXISTS    char                         char: True or false for symbols
  F$EXTRACT   Int      Int      Char       char: Like DCL F$EXTRACT
                                                 if int<0 return data from the
                                                 end of the string
  F$EXTV      int    int       any         int : Extract some bits (sign ext) from p3
  F$EXTZV     int    int       any         int : Extract some bits (zero ext) from p3
  F$FAO       char    allsorts             char: F$FAO of DCL
  F$FEXISTS   char                         char: True or False for fields
  F$FFT       Int/real/cplx                int/real/cplx : Fast Fourier transform
  F$FID_TO_NAME Char  Char/FID             Char: Convert disk/fid to filename
  F$FIELD     char    char                 char: Return info about a field
  F$FILE      char                         chr/int: Attributes of the file
  F$FIS       char    char     char        int : First_in_set
  F$FLOAT     real   int     int    int    char: Convert a float to fixed format
  F$FNIS      char    char     char        int : First_not_in_set
  F$FTYPE     char                         char: The type of the field
  F$GETDVI    char    char                 various : See f$getdvi help
  F$GETJPI    Char/int Char/int            various : See the f$getjpi help
  F$GETQUI    Char   Char     Char chr/int Various : See the f$getqui help
  F$GETSYI    Char    int                  char/int
  F$GETUAI    Char    int                  char/int
  F$HASH_PASSWORD
              char  char int/char int char integer*8 : Hashed password
  F$HTONL/S   int                          Int : Convert integer to network byte order
  F$ICHAR     char                         Int : Return integer val of string of 1 length
  F$IDENTIFIER char/int char               int/char:Convert identifiers
  F$INDEX     any   any char char          any : Query indexed symbols
  F$INTEGER   char/real/date               int : Convert to integer
  F$INSV      int    int      int    any   any : Insert bits in arg4
  F$KEY       int     char    char  Int    int/log: Info about a key
  F$LEFT      char                         char: Left justify string
  F$LENGTH    char    [log]                Int : Length of string/other value
  F$LOCATE    char    char     Char  char  Int : Find char1 in char2
  F$LOWCASE   char                         Char: Return lowercase string
  F$MATCHWILD char    char     Char  char  log : Check if arg2 matches wild in
  F$MATCH_COND Int    Int   ...int         Int : Index of condition code matching
  F$MESSAGE   int     int/chr  char        char: The message text of operand
  F$MODE      None                         Char: Return the mode of the process
  F$MORSE     Char    char                 Char: Conversion to and from Morse code
  F$MUL       Many    Many    Int          Char: Multiply text numeric string
  F$NUMTIM    Date                         Inttable: The SYS$NUMTIM function
  F$PARSE     Char    Char    Char Char    Char: Like the DCL f$parse
  F$PID       symbol                       Char: Process id
  F$PRIVILEGE char                         log : Does the process have privileges
  F$RAD50     Int/chr/rad50                Char/int: Convert text to rad50 and vv
  F$RADIX     Int     Int     Char         Char: Convert integer to any radix
  F$RANDOM   int/real                      Int/real : A random value
  F$READ      Char    Int      Int         Chr table: Table of all records
  F$REPLACE   char    char    char  char   chr table: Replace text in string
  F$REVERSE   all                          All : Reverse byte order of values
  F$RFA       int                          RFA : Convert byteoffset to RFA
  F$RIGHT     char                         char: Right justify string
  F$SEARCH    Char    Char    Char         Char: Like the DCL f$search
  F$SETPRV    Char/priv                    Priv: Set/clear privileges
  F$SORT      ANY     int     char         any : Sort table
  F$SPLIT     Char                         Char: Table of partial char strings
  F$STRING    any                          char: Convert to text
  F$SUB       Many    Many    Int          Char: Subtract text numeric string
  F$SUM       int/real                     int/real: The sum of all elements of a table
  F$SYMBOL    char    char   int           any : Get info about symbol
  F$TABLE     char  int      int char      int : Table of record values
  F$TIME      char     Time                Char: See help about f$time
  F$TRANSLATE char   char     char         char: Translate (str$translate)
  F$TRIM      char                         Char: Delete trailing spaces
  F$TRNLNM    char    various              char/int: Like DCL
  F$TYPE      char                         char: The type of the symbol
  F$UPCASE    char                         Char: Return uppercase string
  F$USER      None                         Char: The UIC
  F$VECTIM    Int                          Date: The LIB$CVT_VECTIM
  F$VERIFY    int/log                      Log : Get and change the verify setting

  Data dependent functions

  FILECOUNT   None                         Int : Return the number of files open
  %DATA       char char                    Char: A string with the record contents
  %LOC        char char                    Int : The location of the field(s) in the data
  %BLOC       char char                    Int : The bit location of the field(s) in the data
  %RECORDSIZE char char                    Int : The current record size
  %EOF        char                         Log : Return true if file is at end of file

DIX INTERACTIVE_COMMANDS FUNCTIONS ABS


  result=ABS(input)

  Return the absolute value of input

  Input can be integer, complex or real, and result will have the same type

DIX INTERACTIVE_COMMANDS FUNCTIONS AND


  AND (Value1,value2) delivers the ANDed value

  All arguments are integer
  The result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS ASHIFT


  ASHIFT (Value1,value2) delivers value1 right shifted by value2
   the shift is an arithmetic shift, the sign bit will shifted in from the left.

  All arguments are integer
  The result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS AVERAGE


   result = average(arg1[,arg2[,arg3...]])

   argn   : (table) of (u)int or anyreal
   result : Real value containing the average of all values of argn
            If all argn are u(int), result will be real*4, else the
            data type is the same as the greatest real size of all argn

   So average(1,1q1) will be real*16 (since 1q1 is a real*16)

DIX INTERACTIVE_COMMANDS FUNCTIONS BTEST


  BTEST (intval,bitnr[,"all"|"any"])

  Return true if bit 'bitnr' of intval is set. The lowest bit is 0.
  Intval may be a table, the result is a logical table of the
    same dimension as intval

  Bitnr may be a table,
   If ALL is specified, the result is true if all bits from bitnr are set in intval
   If ANY is specified, the result is true if any bit from bitnr is set in intval
  ANY is the default

   Args are integer, result is logical

  Example:
   BTEST(2,1)           Will be True
   BTEST(2,3)           Will be false
   BTEST([4,2,1],1)     Will be [false,true,false]

   BTEST(6,[1,2])       Will be true (bit 1 and 2 are set)
   BTEST(6,[1,3])       Will be true (bit 1 is set)
   BTEST(6,[1,3],"ALL") Will be false, since bit 3 is not set

DIX INTERACTIVE_COMMANDS FUNCTIONS COMB


DIX INTERACTIVE_COMMANDS FUNCTIONS COMBINATION/PERMUTATION


   res=combinations(n,m)

   Returns the number of combinations with n and m
           result = n!/(m!*(n-m)!)
   Input : N,M : Integer, N must be >=0, M must be >=0 and <=N
   Output: Res : Integer (or real if number too large)

   res=permutations(n,m)

   Returns the number of permutations with n and m
           result = n!/(n-m)!
   Input : N,M : Integer, N must be >=0, M must be >=0 and <=N
   Output: Res : Integer (or real if number too large)

DIX INTERACTIVE_COMMANDS FUNCTIONS CMPLX


  Result=cmplx(real_value)              !imag will be 0
  Result=cmplx(,imag_value)           !real will be 0
  Result=cmplx(real_value,imag_value)   !both specified

  real_value, image_value may be real or integers
  The result will be a complex variable

  Real and imag values may be tables, but
   either Both tables have the same number of values
       or One table has only one element

DIX INTERACTIVE_COMMANDS FUNCTIONS CONJG


  Result=conjg(value)

  The conjugate function

  For complex values only
   if value = (val_real,val_imag), conjg(value) will be (val_real,-val_imag)

DIX INTERACTIVE_COMMANDS FUNCTIONS CSHIFT


  CSHIFT (Value1,value2[,size]) delivers value1 circular shifted by value2

  If value2 is >0, the shift is to the left else to the right
  Size is the number of bits involved.
  If not specified, it is the size of value1

  All arguments are integer
  The result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS DOT_PRODUCT


  The dot product operator on tables (matrices)

  result=dot_product(arg1,arg3)

  arg1 and arg2 are 1 or 2 dimensional table of reals/integers
  The result is
   if arg1 and arg2 have 1 dimension (simple tables):
    arg1(n) and arg2(m) then n must be equal to m
      and the result is scalar

    DIX> say dot([1,2,3],[4,5,6])
    32

   If arg1 and arg2 are 2 dimension tables:
    arg1(n,m) and arg2(m,q) then the m's must be the same
      and the result is a table (n,q)

    DIX> int a(2,3)=[[1,2][3,4][5,6]]
    DIX> int b(3,4)=[[1,2,3][5,6,7][9,10,11][13,14,15]]
    DIX> c=dot(a,b)
    DIX> sh symb c
    C=table(2,4)
    DIX> say c
    [[22,28][58,76][94,124][130,172]]

   If arg1 has one dimension and arg2 has two:
    arg1(m) arg2(m,q) then the m's must be equal
      and the result is a 1-dim table (q)

    DIX> int b(3,4)=[[1,2,3][5,6,7][9,10,11][13,14,15]]
    DIX> say dot([1,2,3],b)
    [14,38,62,86]

   If arg1 has two dimensions and arg2 has one
    arg1(n,m) arg2(m) then the m's must be equal
      and the result is a 1-dim table (n)

    DIX> int a(3,4)=[[1,2,3][5,6,7][9,10,11][13,14,15]]
    DIX> say dot(a,[1,2,3,4])
    [90,100,110]

DIX INTERACTIVE_COMMANDS FUNCTIONS EVEN


  EVEN (Value1) delivers true if value1 is EVEN

  The argument is integer
  The result is logical

DIX INTERACTIVE_COMMANDS FUNCTIONS EXP


  Syntax:  result=exp(input)

  The exponent function

  Input may be : Integer
                 Real
                 Complex

  Output will be Real (for integer and real input) or complex for complex input

DIX INTERACTIVE_COMMANDS FUNCTIONS FAC


   result = fac(n)

    Compute the faculty n*n-1*n-2*n-3....*1

   N must be (a table) of type integer

   Result is (a table) of

    Integer*4 if    n<13
    Integer*8 if 12<n<20
    Real*16   if    n>=20

DIX INTERACTIVE_COMMANDS FUNCTIONS FILECOUNT


  Filecount()

  Return the number of files opened. No arguments may be specified, but
  the () must be present.

DIX INTERACTIVE_COMMANDS FUNCTIONS HEX

   result = hex(input)

  Make a string containing the hexadecimal value of the input
  Input can be all formats, output is a string

DIX INTERACTIVE_COMMANDS FUNCTIONS IBCLR


  IBCLR (intval,bitnr)

  Return intval with bit 'bitnr' cleared

  intval may be a table, the result is a table of the same dimension
  bitnr may be a table, all bits from bitnr will be cleared

   Args are integer, result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS IBSET


  IBSET (intval,bitnr)

  Return intval with bit 'bitnr' set

  intval may be a table, the result is a table of the same dimension
  bitnr may be a table, all bits from bitnr will be set

  Args are integer, result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS ILEN


  ILEN(ival)

  Returns the length (in bits) of the integer
  The result type is integer

 Examples:

 ILEN (4) has the value 3.
 ILEN (-4) has the value 2.

DIX INTERACTIVE_COMMANDS FUNCTIONS IMAG


  value = imag(argument)

  Return the imaginary part of a complex variable.

  Argument is complex
  return value is real

DIX INTERACTIVE_COMMANDS FUNCTIONS INT


  INT(datatype[,"QUIET|SIGNAL"]) will return an integer value

  datatype can be

   Integer : Just a NOOP
   Real    : Any real
   Complex : Any complex
   Date    : Convert to integer
   Udate   : Convert to integer
   Char    : Convert to integer

   If QUIET is specified, an overflow will result in a return of the value 0.

DIX INTERACTIVE_COMMANDS FUNCTIONS LOGICAL


  Converts the integer to a logical (low bit)
  Argument is integer or logical, return value is logical
  You may abbreviate LOGICAL to LOGI

DIX INTERACTIVE_COMMANDS FUNCTIONS LOG


   result = LOG(value)

   Return the eLOG of the value

  Value can be
   INTEGER
     Result will be a REAL*4 (if less than 23 bits precision), or
                      REAL*8 (if integersize=4), or
                      REAL*16 (if integersize=8)
   Or any REAL type.
     Result is the same real type as value
     If the real type is not a native real type for the platform
     the output will be a native real with the same precision
   Or any COMPLEX type.
     Result is the same real type as value

DIX INTERACTIVE_COMMANDS FUNCTIONS LOG10


   result = LOG10(value)

   Return the 10LOG of the value

  Value can be
   INTEGER
     result will be a REAL*4 (if less than 23 bits precision), or
                      REAL*8 (if integersize=4), or
                      REAL*16 (if integersize=8)
   Or any REAL type.
     Result is the same real type as value
     If the real type is not a native real type for the platform
     the output will be a native real with the same precision
   Or any COMPLEX type.
     Result is the same real type as value

DIX INTERACTIVE_COMMANDS FUNCTIONS LSHIFT


  LSHIFT (Value1,value2) delivers value1 left shifted by value2
  All arguments are integer
  The result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS MAX


  MAX (Value1,value2[,value3]) delivers MAX of value1,2,3

  You may mix integer and reals, the min value determines the type
  for all other datatypes all value'n; must have the same type
  If one of the value'n' is a table, all elements are compared

  input : int/real/char/date
  Output : same type in input, except with the int/real rule (see above)

DIX INTERACTIVE_COMMANDS FUNCTIONS MIN


  MIN (Value1,value2[,value3]) delivers MIN of value1,2,3

  You may mix integer and reals, the min value determines the type
  for all other datatypes all value'n; must have the same type
  If one of the value'n' is a table, all elements are compared

  input : int/real/char/date
  Output : same type in input, except with the int/real rule (see above)

DIX INTERACTIVE_COMMANDS FUNCTIONS MINIDX


   MINIDX(arg)

   Will return a table with dimension 1..ndim(arg). Arg must be a table
   The result is a list of integers designating the index of the
    minimum value of arg

  input : int/real/char/date
  output: int

  Example:
    DIX> a=[[6,2][3,4]]
    DIX> say minidx(a)
    [2,1]                               !min idx is at element [2,1]

DIX INTERACTIVE_COMMANDS FUNCTIONS MAXIDX


   MAXIDX(arg)

   Will return a table with dimension 1..ndim(arg). Arg must be a table
   The result is a list of integers designating the index of the
    minimum value of arg

   input : int/real/char/date
   output: int

  Example:
    DIX> a=[[18,2][13,4]]
    DIX> say maxidx(a)
    [1,1]                               !max idx is at element [1,1]

DIX INTERACTIVE_COMMANDS FUNCTIONS MOD


  MOD (Value1,value2) delivers value1 MOD value2

  All arguments are integer.
  The result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS NINT


  NINT(real) will return an int value rounded

  Argument is character, real or complex
  return value is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS NOT


  NOT (Value1) delivers the negated value

  The argument is logical
  The result is logical

DIX INTERACTIVE_COMMANDS FUNCTIONS ODD


  ODD (Value1) delivers true if value1 is ODD

  The argument is integer
  The result is logical

DIX INTERACTIVE_COMMANDS FUNCTIONS OR


  OR (Value1,value2) delivers the ORed value

  All arguments are integer
  The result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS REAL


  REAL(input) will return a real value

  Argument is integer, complex, real or character, return value is real
  F$REAL is an alias for this function

DIX INTERACTIVE_COMMANDS FUNCTIONS RSHIFT


  RSHIFT (Value1,value2) delivers value1 right shifted by value2
   the shift is a Logical shift, 0s will shifted in from on the left.

  All arguments are integer
  The result is integer

DIX INTERACTIVE_COMMANDS FUNCTIONS SQRT


   SQRT(value)           Will return a real of the current real size

   The value returned is the square root of the input value (value**0.5)

   Value may be integer, complex or real

   If value is not complex, it must be >=0, so sqrt(-1) gives an error
   but sqrt((1,0)) does deliver the complex value

   DIX> say sqrt(-1)
   %DIX-E-SQROONEG, Square root of negative value
   DIX> say sqrt((-1,0))
   (0.0,1.0)

DIX INTERACTIVE_COMMANDS FUNCTIONS SUM


   result = sum(arg1[,arg2[,arg3...]])

   argn   : (table) of (u)int or anyreal
   result : Value containing the sum of all values of argn
            If all argn are u(int), result will be integer, else the
            data type is the same as the greatest real size of all argn

   If adding integers will result in an overflow, result will be real

   So sum(1,1q1) will be real*16 (since 1q1 is a real*16)

DIX INTERACTIVE_COMMANDS FUNCTIONS STRING


  STRING(allformats[,hex][,format]) will return a string value

  Argument can be of all defined symbol types.
  hex can be true or false (or not present)
  format can be used to override the default format for integer and real

  The return value is char

  Example:
  DIX> say string(10.2345)
  10.2345               !default format
  DIX> say string(10.2345,,"f10.2")
       10.23            !field width 10, with 2 decimal digits

DIX INTERACTIVE_COMMANDS FUNCTIONS TRIGONOMETRIC_functions


   result = function(value[,units])

  Units can be : DEGREES value is 0..360
                 RADIANS (Default) value is 0..2*pi

    Function can be : SIN,SINH,COS,COSH,TAN,TANH,ASIN,ACOS,ATAN

  Value can be (a table of)
    INTEGER
     result will be a REAL*4 (if value has <23 bits precision) or
                      REAL*8 (if integersize=4), or
                      REAL*16 (if integersize=8)
    Or any real type.
     Result is the same real type as value
     If the real type is not a native real type for the platform
     the output will be a native real with the same precision
      For example on the IA64 the input real_f (VAX float)
                       will have output real_s (IEEE float)

    Or a complex type

   Value is by default expression in radians. 360 degrees is 2*PI radians

   Hint: You can get the value of PI via
     PI=4*ATAN(1.0)    !32 bit real
     PI=4*ATAN(1D0)    !64 bit real
     PI=4*ATAN(1Q0)    !128 bit real

DIX INTERACTIVE_COMMANDS FUNCTIONS F$ADD


    F$ADD(str1,str2[,width])

   Str1 and str may be integer, real, string, decimal values, result is a string

  F$ADD will add str1 to str2 and return the result
  If width is not specified, the result will be as long as needed
  If width >0, the result will be blank filled in a string of length 'width'
  If width <0, the result will be zero filled in a string of length 'width'
  If width<>0 and the result does not match, result will be a string
    of 'width' *

  Example:
   SAY F$ADD("123","345")    ! Returns "468"
       F$ADD("123","345",6)  ! Returns "   468"
       F$ADD("123","345",-6) ! Returns "000468"
       F$ADD("123","345",2)  ! Returns "**"
       F$ADD(1,12.3)         ! Returns "13.3"

DIX INTERACTIVE_COMMANDS FUNCTIONS F$APPEND


   result = f$append(table,table...)

   Append the tables together

   The tables must have the same shape (equal number of dimensions, and
                                        equal number of elements/dimension)
     or differ only in one dimension (effectively one
        dimension is added with a value of 1 element (see below))

   The type of all tables must be the same.

   The setting of LOW_FIRST decides which dimension is taken for 1 if
   the dimensions are different

   If LOW_FIRST disabled : (dim1[,dim2)) will be seen as (1,dim1[,dim2])
                 enabled : (dim1[,dim2]) will be seen as (dim1[,dim2],1)

   Example:

    DIX> SAY F$APPEND([1,2,3,4,5],[6])  !equal dims
    [1,2,3,4,5,6]
    DIX> SAY F$APPEND([1,2,3,4,5],6)    !One less
    [1,2,3,4,5,6]
    DIX> say F$APPEND([[1,2,3][4,5,6]],[7,8])
    [[1,2,3,7][4,5,6,8]]
    DIX> say F$APPEND([[1,2,3][4,5,6]],[[7,8][9,10]])
    [[1,2,3,7,8][4,5,6,9,10]]
    DIX> A=[1,2,3]
    DIX> say F$APPEND(a,15)
    [1,2,3,4,15]
    DIX> say F$APPEND(4,5,[6,7],8)
    [4,5,6,7,8]

    A way to insert an element in the middle of a table

    DIX> a=[1,2,3,4,5,6,7,8,9,10]
    DIX> say f$append(a(1:5),20,a(6:10))
    [1,2,3,4,5,20,6,7,8,9,10]

DIX INTERACTIVE_COMMANDS FUNCTIONS F$AREA


   F$AREA(areanumber[,WHAT[,file]])

   Get info about an area
   Argument   type meaning
   areanumber Int  The area number (0..narea-1)
                   If areanumber not present, DIX will return a table
                   containing the requested value(s)
   WHAT       char What info do you want, defaults to PRESENT
   file       char Which file, default the current

   What             Type Result
    PRESENT         log  True or false  (areanumber must be present)

    ALLOCATED       Int  The initially allocated blocks for this area
    BUCKET_SIZE     Int  Bucket size
    EXTENSION       Int  Extension size for this area
    USED            Int  How many blocks are used
    RECLAIM         Int  Reclaim bucket number
    NEXT            Int  Next block
    CURRENT_START   Int  Current start block
    BLOCKS          Int  Size of extent

DIX INTERACTIVE_COMMANDS FUNCTIONS F$BASE64


   Result = F$BASE64(inp[,arg])

   inp  : must be a string expression (may be a table)
   arg  : Char : To or From convert from or to BASE64
          log  : To or From BASE64
         empty : To BASE64

   Result : Char a (table) of strings

  Examples:

    DIX> say f$base("DIX")                      !Encode to base64
    RElY                                        !the result
    DIX> say f$base(f$base("RElY"),"FROM")      !decode
    DIX                                         !or the orig string back
    DIX> say f$base(f$base("DIX"),"FROM")       !encode/decode
    DIX                                         !result is the same

DIX INTERACTIVE_COMMANDS FUNCTIONS F$BITS


   Result = F$BITS(inp[,setclr][,whattodo])

  Get a list of set or clear bits, or info about set/cleared bits

   inp     : must be an (u)integer value
   setclr  : Char  : SET to get the set bits, CLEAR to get the clear bits
             log   : True to get the set bits, false to get the clear bits
             empty : The default is set bits
   whattodo: char  : Table/First/Last/Count
                        Table : Make a table of set /cleared bits (the default)
                        First : Find the first set/cleared bit, or -1
                        Last  : Find the last set/cleared bit, or -1
                        Count : Count the number of set/cleared bits
  Example:
   DIX> say f$bits(334)
   [1,2,3,6,8]

   DIX> say f$bits(334,"C")
   [0,4,5,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]

   DIX> ; for k in f$bits(334) ; say "Bit ''k' is set" ;endfor
   Bit 1 is set
   Bit 2 is set
   Bit 3 is set
   Bit 6 is set
   Bit 8 is set

   DIX> say f$bits(334,,"FIRST")
   1        !bit 1 is the first bit set (we start at 0)
   DIX> say f$bits(334,,"LAST")
   8        !bit 8 is the last bit set
   DIX> say f$bits(334,"CLEAR","LAST")
   31       !bit 31 is the last bit CLEAR
   DIX> say f$bits(334,"CLEAR","COUNT")
   27       !27 bits are cleared
   DIX> say f$bits(-1,"CLEAR","LAST")
   -1       !all bits are set

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CHAR_OR_CHAR


  F$CHAR(integer) of CHAR(integer)

  Result is an character string with length 1 with the ASCII value of
  the argument.

  The argument is integer (must be between 0 and 255)
  The result is char

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CHECKSUM


   F$CHECKSUM(bpos,epos,[size],[alg],[filetag])  !for xor/sum checksum
   F$CHECKSUM([skip],[add],[flags],alg,filename/tag)  !for md5/sha* type

   alg  : char: Optional, XOR or SUM, MD5,
                          SHA1,SHA224,SHA256,SHA384,SHA512
                The default is SUM.
                The algorithm of the checksum

   if alg is XOR or SUM
     bpos : int : Starting position in data record (in bytes). The first
                byte in the buffer = 0
     epos : int : End position in the data buffer
     size : char: Optional, BYTE or WORD or LONGWORD, default is byte.
                The size of the data elements
                May also be specified as integer with value 1,2 or 4

   If alg is MD5 or SHA*

     skip : Optional : Characters to skip from checksum
             Skip can be CR, LF, BOTH. On OpenVMS DIX will only count the record
             data. On windows (i.e.) the record separators will also be
             check summed. By removing CRLF from each record you
             can compare the checksums.
     add  : Optional : Characters to add between records
             Add can be CR, LF, BOTH. On OpenVMS DIX will only count the record
             data. On Windows (i.e.) the record separators will also be
             check summed. By adding CRLF after each record you
             can compare the checksums.
     flags: Optional : (a list of) extra flags
             STRING : The filetag is a string to be check summed and not a file.
             DEBUG  : Add extra (debug) info
             FULL   : Add more (debug) info
             EXACT  : For fixed files only. The last record can have less than
                      the fixed record length. RMS will always report the
                      fixed record length. With this switch the checksum will
                      only be computed on the real file size.

     See also the help for the checksum command

   tag  : char: Optional file tag, default is current file
                or (for the md5 / sha*) a filename
                or (for the md5 / sha*) a string

   Result : For the XOR and SUM algorithm : Integer
            For the MD5 and SHA algorithm : String

  Examples:
   for the XOR / SUM algorithm
    the INDEXF.SYS file has a checksum at the end of the record
             it is the "SUM" of the previous 255 words.
    des record
     ...
     ...
     integer*2 checksum (at offset 510)
    end record

    Can be computed with
      F$CHECKSUM(0,509,"WORD")
    or even more sophisticated
      F$CHECKSUM(0,%LOC("CHECKSUM")-1,"WORD")

   For the MD5 or SHA algorithm
     say f$checksum(,,,"SHA",fname)             !print sha(256) checksum
     say f$checksum(,,"DEBUG","SHA512",fname)   !print sha512 checksum with
                                                 extra info
     say f$checksum(,,,"MD5",fname)             !print md5 checksum
     say f$checksum("LF",,,"SHA",fname)         !Exclude the LF characters
     say f$checksum(,"BOTH",,"SHA",fname)       !Add a CR LF after each record
     say f$checksum(,,"STRING","SHA","abcdefg") !show the checksum for
                                                 string abcdefg

DIX INTERACTIVE_COMMANDS FUNCTIONS F$COLLAPSE


  F$COLLAPSE(string) will remove all blanks

  Input and result are character

DIX INTERACTIVE_COMMANDS FUNCTIONS F$COLOUR

  
 Syntax : string=f$colour([colspec[,clear]])

  WIl return a string to set or clear a colour/modifier for an ANSI terminal.

  Colspec is a colour specification 
   If it is not present f$colour returns a string to clear all colour/modifiers
    and clear may not be present
   If it is present, the clear flag (Logical or integer) decides wheater
    the set or clear string will be returned


  F$COLOUR() of F$COLOUR(colspec,1) will set it to normal

  colspec is colourname[#modifier[#modifier...]]
          or colourname[:modifier[:modifier...]]

  the following colournames are supported
    WHITE,RED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,BLACK 
  and the supported modifiers are 
    BOLD, REVERSE, UNDERLINE and BLINKING

  There can be only one colour, but there may be multiple modifiers

  The first colourname can also be a modifier so exe:underline is valid

  Be aware that to print the string to the terminal with evaluate or say
   you need to have the format set to /format=passall or /format=ansi

  DIX will look at the device_type of SYS$COMMAND. It will use the 
   settings of VT200_series, VT300_series, VT400_series, VT500_series
   If the device type is not of them DIX will use settings of GENERIC_ANSI_CRT
   For details see the SYS$SYSTEM:SMGTERMS.TXT

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONCAT


   result = F$CONCAT(val[,val...])

   Return a string of all values concatenated.
   val can be any type. if val is a table, all fields of val are used.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTEXT


   Specifies selection criteria for use with the F$PID function.
   The F$CONTEXT function enables the F$PID function to obtain
   information about processes from any node in an OpenVMS Cluster
   system.

   Format

     F$CONTEXT(context-type,context-symbol,selection-item,

              selection-value,value-qualifier)

  Returns a null string ("").

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTEXT Arguments


DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTEXT Arguments context-type


   Specifies the type of context to be built.

   At present, the only context type available is PROCESS, which is
   used in constructing selection criteria for F$PID. Privileges
   are not required to see processes for the same UIC. To see
   processes for another UIC in the same UIC group, you need the
   GROUP privilege, and to see processes system-wide, you need the
   WORLD privilege.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTEXT Arguments context-symbol


   Specifies a symbol that DCL uses to refer to the context memory
   being constructed by the F$CONTEXT function. The function F$PID
   uses this context symbol to process the appropriate list of
   process identification (PID) numbers.

   Specify the context symbol by using a symbol. The first time you
   use the F$CONTEXT function in a command procedure, use a symbol
   that is either undefined or equated to the null string. The
   symbol created will be a local symbol of type "PROCESS_CONTEXT".
   When the context is no longer valid-that is, when all PIDs have
   been retrieved by calls to the F$PID function or an error occurs
   during one of these calls-the symbol no longer has a type of
   "PROCESS_CONTEXT". Then you can use the F$TYPE function in the
   command procedure to find out if it is necessary to cancel the
   context.

   After setting up the selection criteria, use this context symbol
   when calling F$PID.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTEXT Arguments selection-item


   Specifies a keyword that tells F$CONTEXT which selection
   criterion to use. Use only one selection-item keyword per call
   to F$CONTEXT.

                                  NOTE

      Do not use the NEQ selection value on a list of items
      because it causes the condition to always be true.

      For example:

      EXAMPLE=f$context("PROCESS",CTX,"USERNAME","A*,B*","NEQ")

      This equation is parsed as "if the user name is not equal
      to A* or the user name is not equal to B*, then return the
      process of the users that meet the criteria." Because the
      operand is a logical or, the conditions will always be true
      (any name will be found to be not equal to A* or B*; ALFRED
      will not be equal to B*; BOB will not be equal to A*).

   The following table shows valid selection-item keywords for the
   PROCESS context type:

   Selection  Selection Value
   Item       Value    Qualifiers Comments

   ACCOUNT    String   EQL, NEQ   Valid account name or list of
                                  names. The asterisk (*) and
                                  the percent sign (%) wildcard
                                  characters are allowed.

   AUTHPRI    Integer  GEQ,       On Alpha, valid authorized base
                       GTR,       priority (0-63). On VAX, valid
                       LEQ,       authorized base priority (0-31).
                       LSS,
                       EQL, NEQ

   CANCEL                         Cancels the selection criteria for
                                  this context.

   CURPRIV    Keyword  ALL,       Valid privilege name keyword
                       ANY,       or list of keywords. For more
                       EQL, NEQ   information, see the OpenVMS
                                  Guide to System Security.

   GRP        Integer  GEQ,       UIC group number.
                       GTR,
                       LEQ,
                       LSS,
                       EQL, NEQ

   HW_MODEL   Integer  EQL, NEQ   Valid hardware model number.

   HW_NAME    String   EQL, NEQ   Valid hardware name or a list of
                                  keywords. The asterisk (*) and
                                  the percent sign (%) wildcard
                                  characters are allowed.

   JOBPRCCNT  Integer  GEQ,       Subprocess count for entire job.
                       GTR,
                       LEQ,
                       LSS,
                       EQL, NEQ

   JOBTYPE    Keyword  EQL, NEQ   Valid job-type keyword. Valid
                                  keywords are DETACHED, NETWORK,
                                  BATCH, LOCAL, DIALUP, and REMOTE.
                                  For more information, see the
                                  OpenVMS User's Manual.

   MASTER_    String   EQL, NEQ   PID of master process.
   PID

   MEM        Integer  GEQ,       UIC member number.
                       GTR,
                       LEQ,
                       LSS,
                       EQL, NEQ

   MODE       Keyword  EQL, NEQ   Valid process mode keyword. Valid
                                  keywords are OTHER, NETWORK,
                                  BATCH, and INTERACTIVE. For more
                                  information, see the OpenVMS
                                  User's Manual.

   NODE_      Integer  EQL, NEQ   The node's cluster ID number.
   CSID

   NODENAME   String   EQL, NEQ   Node name or list of node names.
                                  The asterisk (*) and the percent
                                  sign (%) wildcard characters are
                                  allowed. The default is your local
                                  node. To request all nodes, use
                                  the value "*".

   OWNER      String   EQL, NEQ   PID of immediate parent process.

   PRCCNT     Integer  GEQ,       Subprocess count of process.
                       GTR,
                       LEQ,
                       LSS,
                       EQL, NEQ

   PRCNAM     String   EQL, NEQ   Process name or list of process
                                  names. The asterisk (*) and
                                  the percent sign (%) wildcard
                                  characters are allowed.

   PRI        Integer  GEQ,       Process priority level number
                       GTR,       (0-63, on Alpha), (0-31, on VAX).
                       LEQ,
                       LSS,
                       EQL, NEQ

   PRIB       Integer  GEQ,       Base process priority level number
                       GTR,       (0-63, on Alpha), (0-31, on VAX).
                       LEQ,
                       LSS,
                       EQL, NEQ

   STATE      Keyword  EQL, NEQ   Valid process state keyword.
                                  For more information, see the
                                  description of the $GETJPI service
                                  in the OpenVMS System Services
                                  Reference Manual.

   STS        Keyword  EQL, NEQ   Valid process status keyword.
                                  For more information, see the
                                  description of the $GETJPI service
                                  in the OpenVMS System Services
                                  Reference Manual.

   TERMINAL   String   EQL, NEQ   Terminal name or list of names.
                                  The asterisk (*) and the percent
                                  sign (%) wildcard characters are
                                  allowed.

   UIC        String   EQL, NEQ   User identification code (UIC)
                                  identifier (that is, of the form
                                  "[group,member]").

   USERNAME   String   EQL, NEQ   User name or list of user names.
                                  The asterisk (*) and the percent
                                  sign (%) wildcard characters are
                                  allowed.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTEXT Arguments selection-value


   Specifies the value of the selection criteria. For example, to
   process all the processes running on node MYVAX, specify "MYVAX"
   with the "NODENAME" keyword. For example:

   X = F$CONTEXT("PROCESS",ctx,"NODENAME","MYVAX","EQL")

   Values that are lists are valid with some selection items. If you
   specify more than one item, separate them with commas (,). The
   following example specifies a list of the nodes MYVAX, HERVAX,
   and HISVAX:

   X = F$CONTEXT("PROCESS",ctx,"NODENAME","MYVAX,HERVAX,HISVAX","EQL")

   You can use the asterisk (*) and the percent sign (%) wildcard
   characters for some values. Using wildcard characters for
   selection items is similar to using wildcard characters for file
   names.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTEXT Arguments value-qualifier


   Specifies qualifiers for selection values. You must qualify
   selection values.

   You can qualify a number, for example, by requesting that the
   selection be based on one of the following process values:

    o LSS - less than the value specified in the call to F$PID

    o LEQ - less than or equal to the value specified in the call to
      F$PID

    o GTR - greater than the value specified in the call to F$PID

    o GEQ - greater than or equal to the value specified in the call
      to F$PID

    o EQL - equal to the value specified in the call to F$PID

    o NEQ - not equal to the value specified in the call to F$PID

   You can qualify some lists with the ALL, ANY, EQL, or NEQ
   keywords. Such lists are usually masks such as the process
   privilege mask, which consists of the set of enabled privileges.

    o ALL - requires that all items in the list be true for a
      process

    o ANY - requests that any item in the list be part of the
      attributes of a process

    o EQL - requires the values to match exactly (that is, values
      not specified must not be true of the process)

    o NEQ - requires that the value must not match

   When using multiple selection values with a particular selection
   qualifier, a match on any one of the selection criteria is
   considered valid (as if an OR operand was in place); the
   selection values are not cumulative criteria (as if an AND
   operand was in place).

   The difference between ALL and EQL is that the values specified
   with ALL must exist, but other unspecified values can exist
   also. EQL requires that all values specified must exist, and
   all others may not. For example, to request those processes whose
   current privileges include TMPMBX (temporary mailbox) and OPER
   (operator), but may include other privileges, specify the ALL
   keyword. To request those processes whose current privileges are
   TMPMBX and OPER exclusively, specify the EQL keyword.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTEXT Examples


  1. !Establish an error and Ctrl/Y handler
     !
      ON ERROR THEN GOTO error
      ON CONTROL_Y THEN GOTO error
     !
      ctx = ""
      temp = F$CONTEXT("PROCESS",ctx,"NODENAME","*","EQL")
      temp = F$CONTEXT("PROCESS",ctx,"USERNAME","M*,SYSTEM","EQL")
      temp = F$CONTEXT("PROCESS",ctx,"CURPRIV","SYSPRV,OPER","ALL")
     !
     !Loop over all processes that meet the selection criteria.
     !Print the PID and the name of the image for each process.
     !
     loop:
      pid = F$PID(ctx)
      IF pid .EQS. ""
      THEN
          GOTO endloop
      ELSE
          image = F$GETJPI(pid,"IMAGNAME")
          SHOW SYMBOL pid
          WRITE SYS$OUTPUT image
          GOTO loop
      ENDIF
     !The loop over the processes has ended.
     !
     endloop:
     !
      EXIT
     !
     !Error handler. Clean up the context's memory with
     !the CANCEL selection item keyword.
     !
     error:
      IF F$TYPE(ctx) .eqs. "PROCESS_CONTEXT" THEN -
       temp = F$CONTEXT("PROCESS",ctx,"CANCEL")
     !
      EXIT

     In this example, F$CONTEXT is called three times to set up
     selection criteria. The first call requests that the search
     take place on all nodes in the cluster. The second call
     requests that only the processes whose user name either
     starts with an "M" or is "SYSTEM" be processed. The third
     call restricts the selection to those processes whose current
     privileges include both SYSPRV (system privilege) and OPER
     (operator) and can have other privileges set.

     The command lines between the labels "loop" and "endloop"
     continually call F$PID to obtain the processes that meet the
     criteria set up in the F$CONTEXT calls. After retrieving each
     PID, F$GETJPI is called to return the name of the image running
     in the process. Finally, the procedure displays the name of the
     image.

     In case of error or a Ctrl/Y operation, control is passed to
     error and the context is closed if necessary. In this example,
     note the check for the symbol type PROCESS_CONTEXT. If the
     symbol has this type, selection criteria must be canceled by
     a call to F$CONTEXT. If the symbol is not of the type PROCESS_
     CONTEXT, either selection criteria have not been set up yet
     in F$CONTEXT, or the symbol was used with F$PID until an error
     occurred or until the end of the process list was reached.

  2. f$context("process",ctx,"prcnam","symbiont*,mcote*","eql")

     f$context("process",ctx,"prcnam","symbiont*,mcote*","neq")

     f$context("process",ctx,"prcnam","mcote*","neq")
     f$context("process",ctx,"prcnam","symbiont*","neq")

     This example shows three sets of lexicals showing the
     difference between the EQL and the NEQ selection values. The
     first lexical function (with EQL) passes back all processes
     with symbiont and mcote in the process name. The second and
     third lexical functions (with NEQ) are equivalent in that they
     both will pass back all processes (processes that do not have
     symbiont in the process name, or processes that do not have
     mcote in the process name.)

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONTROL


   Get a 6 element table containing ELAPS,CPU,BUFIO,DIRIO,PAGEFLTS,COMMANDS

   res=F$CONTROL()       !return the data from the beginning of DIX
   res=F$CONTROL(b)      !return the data from b (must be a table of 6 integers)
   res=F$CONTROL(b,what) !return a specific field
         what
         ELAPS        An integer(*8) containing the elapsed time
         CPU          An integer containing the CPU time
         BUFIO        An integer containing the buffer I/Os
         DIRIO        An integer containing the direct I/Os
         PAGEFAULTS   An integer containing the page faults
         COMMANDS     An integer containing the number of commands executed
         ALL          A string containing
   Elaps=0 00:02:53.75 CPU=0 00:00:00.08 BIO=79 DIO=3 PGFL=253 CMNDS=10

  You can use this for performance measurements
  DIX> beg = f$control()
  DIX> !!do something
  DIX> diff = f$control() -beg
  DIX> say f$control(diff,"ALL")
  Elaps=0 00:00:08.44 CPU=0 00:00:00.01 BIO=9 DIO=0 PGFL=0 CMNDS=1

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CONVERT


    out_value=f$convert(inp_value,type)

     Convert a value (inp_value) to any type
     inp_value must be a character type

   Example:
    suppose we have a file (tab separated) with N lines containing
    1. a name
    2. a birth date
    3. A title
   And you want a list of all ages of the people

   You could do this as follows

   contents = f$read("file.txt")        !read the file contents in a table of N lines
   fields = f$split(contents)           !fields will be table of N*3 fields
   dates = fields(*,2)                  !dates is a table of N lines that contain dates
   bindates = f$convert(dates,"date")   !make it datatype "date"
   now = f$date("today")                !get today
   ages = now-bindates                  !the ages

   You could also have done it in one line:

   ages = f$date("today") - f$convert(f$read("tab.txt",,,"")(*,2),"date")

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CORRELATE


    result=f$correlate(v1,v2)

   Return the correlation between v1 and v2
   Input  : v1,v2  : A table of integers/reals/dates. Both table must have the
                     same number of elements
   Output : result : Real*4 the correlation coefficient

DIX INTERACTIVE_COMMANDS FUNCTIONS F$COUNT


  result = f$count(ival)

  Return the n ubner of bits needed to represent value ival

  DIX> say f$count(10)
  4

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CRC


   res = f$crc(crc_table,initial_value,string)

   crc_table     : A 16 int*4 table created by f$crc_table
   initial_value : Int*4 : The initial value for the CRC (normally 0)
   String        : Chr   : The string to be CRC'ed

   res : int*4 : The computed CRC

   This function makes the LIB$CRC function available

  Example:

    DIX> Table = f$crc_table(%xa001)    !create a table
    DIX> say f$crc(table,0,"TEST")
    59964

   Or in one line
    DIX> say f$crc(f$crc_table(%xa001),0,"TEST")
    59964

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CRC_TABLE


  crc_table=f$crc_table(poly_coefficient)

   Poly_coefficient : Int*4
     A bit mask indicating which polynomial coefficients are to be
     generated by LIB$CRC_TABLE.

   Crc_table : a 16 int*4 table that can be used by f$crc to compute CRCs

   See the examples in f$crc
   This function makes the LIB$CRC_TABLE function available

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CSID


   Return the node IDs of all node in the cluster. The output may be used
   in the f$getsyi

    a=f$csid(ctx[,val])

    ctx is a symbol name
    val is a DIX extension
        Either a logical
        or a text string TABLE or LIST

   If val not present, or false or "list", ctx must be present and
                          f$csid must be called in a loop to return a value
   If val is true or "TABLE" ctx may not be present, and the result is a
                          table containing all CSIDs in the cluster

   If DIX is in dcl_compat mode, the result is a string
   If DIX is not in DCL mode, the result is integer

  Example:
   lp:a=f$csid(ctx)
   if a<>"" then
     say f$getsyi("nodename",,a)
     goto lp
   endif

   a=f$csid(,true)      !make a table
   for k in a           !go through all elements
     say f$getsyi("nodename",,k)
   end for

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CUNITS


    Number = f$cunits(value,src,trg)

   Convert a value from and to blocks and bytes

   Value       : integer or char : The value to be converted
   src and trg : one of the following
       blocks      integer  Size in blocks)
       bytes       string   "abc[.def]Q" Q may be K or M or G or not present
       exact       integer  Size in bytes
       exstring    string   Size in bytes nn.mm.dd, no Q present

DIX INTERACTIVE_COMMANDS FUNCTIONS F$CVTIME


    Value = f$cvtime(time,type,field)

   Time is a character or a date time variable
    if type is character it can be a
          absolute date
          Delta time
          abs+delta
          abs-delta

   Type
       Absolute   : Output is string in absolute time format
       Comparison : Output is string in comparison format
       Delta      : Output is string in delta time
       DCL        : The same as absolute but with a : between the date and time
       Binary     : Output is date in "date" type
   Field :

 Return value is character

  Empty       Date/time
  DATETIME    The date/time
  DATE        The date
  TIME        The time
  MONTHASC    The name of the month

  Return value is integer for

  YEAR          The year
  MONTH         The month
  DAY           The day
  HOUR          The hour
  MINUTE        The minute
  SECOND        The seconds
  HUNDREDTH     The hundredth

  MONTHOFYEAR   Month of the year
  DAYOFYEAR     Day of the year
  HOUROFYEAR    Hour of the year
  MINUTEOFYEAR  Minute of the year
  SECONDOFYEAR  Second of the year

  DAYOFMONTH    Day of the month
  HOUROFMONTH   Hour of the month
  MINUTEOFMONTH Minute of the month
  SECONDOFMONTH Second of the month

  DAYOFWEEK     Day of the week  (1..7 - Sunday to Saturday)
  WEEKDAY       Day of the week in text
  HOUROFWEEK    Hour of the week
  MINUTEOFWEEK  Minute of the week
  SECONDOFWEEK  Second of the week

  HOUROFDAY     Hour of the day
  MINUTEOFDAY   Minute of the day
  SECONDOFDAY   Second of the day

  MINUTEOFHOUR  Minute of the hour
  SECONDOFHOUR  Second of the hour

  SECONDOFMINUTE Second of the minute
  JULIANDATE    The Julian date

  DELTAWEEKS    Delta weeks
  DELTADAYS     Delta days
  DELTAHOURS    Delta hours
  DELTAMINUTES  Delta minutes
  DELTASECONDS  Delta seconds

DIX INTERACTIVE_COMMANDS FUNCTIONS F$DATE

  Syntax

   F$DATE(value[,what])

  Value can be
  1. a string containing a valid OpenVMS date-time
  2. an integer or real (table) and "what" decides what this value means.
     "what" can be
       Weeks,days,hours,minutes,seconds,hundredths,cputicks : Deltatime
       ticks : The 100nsec units, converted to a deltatime
       raw   : The 100nsec units, but not converted, so the result can
                be a deltatime(value<0) or a normal time (val>=0)
  3. A date/Udate (table) :
      what can be DATE   : Return a date value (the default)
                  INTEGER: Return an integer value

  4. Nothing : This returns the current time/date

   F$DATE returns a symbol of type DATE, except in the case of the
     INTEGER tag in case 3. In that case F$DATE will be an integer(*8).

  Examples:

  DIX> A=F$DATE("TODAY")
  DIX> SHO SYMB A
  A=23-OCT-2003 00:00:00.00

  DIX> A=F$DATE(1.3,"HOURS")
  DIX> SHOW SYMB A
  A=0 01:17:59.99

DIX INTERACTIVE_COMMANDS FUNCTIONS F$DCL_PRESENT/GET_VALUE


   ival = f$dcl_present("tag"[,symbolname][,slack])
   result = f$dcl_get_value("tag"[,symbolname][,slack])

   After a command has been parsed using the PARSE command
    you can inquire if the qualifier/parameter is present
    and get the value of the qualifier/parameter

   Tag is the name of the qualifier/parameter.
   Symbolname is the name of the symbol used to parse the command
   ival : dix$_clipresent    : Value is present
          dix$_cliabsent     : Value is not present
          dix$_clinegated    : Value is negated
     For positional qualifiers, DIX may also return
          dix$_clilocpresent : Value is locally present (after a parameter)
          dix$_clilocnegated : Value is locally negated (after

    These parameters can be defined via the load/message command
    Slack : if the tag is not present and the parsing is done in strict mode
            it will prevent a message

   Example:

   DIX> LOAD/message  !define the dix$_* parameter values
   DIX> VERB/COMPILE[/SYMBOL=symbolname] sys$update:acc.cld   !compile the .CLD file

   DIX> PARSE[/SYMBOL=symbolname][/STRICT] ACC x.dat,y.dat/full

   DIX> if f$match_c(f$dcl_present("FULL"),DIX$_CLIPRESENT) then say "Full present"
   DIX> say f$dcl_get_value("INPUT")
   DIX> say f$dcl_get_value("input")  !get the value of parameter p1 (label=input)
   X.DAT                  !first value of parameter
   DIX> say f$dcl_get_value("input")  !get the next value, it is a list type
   Y.DAT                  !second value of parameter
   DIX> say f$dcl_get_value("input")  !get the next value, it is a list type
                          !third value is empty

   For more info see the command definition manual, and the cli_routine help
   and the DIX help about the "verb/compile" and the "parse" commands

DIX INTERACTIVE_COMMANDS FUNCTIONS F$DECIMAL


   F$DECIMAL(stringvalue)
   F$DECIMAL(realvalue)
   F$DECIMAL(intvalue[,sign][,exponent])

   Convert an integer or string to the "decimal" type.
   If value is a string or a real, sign and exponent are not allowed

   If value is an integer, you may specify
           sign     : Character string containing + or -
           Exponent : An integer containing the exponent

   The decimal type is a fixed decimal string

   Result: Decimal type

DIX INTERACTIVE_COMMANDS FUNCTIONS F$DESCRIPTION

  F$DESCRIPTION(index)

  Return info about the loaded descriptions
  Index is an integer
  Return value is the name of the loaded description (char)

DIX INTERACTIVE_COMMANDS FUNCTIONS F$DEVICE


   result  = f$device([namemask],[devclass],[devtype],[stream],[flag])

  namemask : A mask of device names e.g. *DSA*
  devclass : char : The device class like "DC$_DISK" or "DISK"
             DIX has predefined DISK,TAPE,SCOM,TERM,MAILBOX,WORKSTATION
             int  : The value of DC$_.. (see below)
  devtype  : Special device type (the value of e.g. DT$_RA82, see below)
  stream   : In DCL mode a positive integer
             In non-DCL mode the name of a (non-existing) symbol
  flag     : If flag is specified (and stream is not present) DIX will
             return all matching values in a table.
             flag may be a logical or a string containing "TABLE"

  If you want to use the integer variants of devclass and devtype
  you can load the definitions via LOAD/MODULE=$DCDEF
  Now you have defined all parameters from the $DCDEF module and you
  can use them.

  Examples:
    DIX> say f$device("*DSA*")
    _DSA0:                      !the first match
    DIX> say f$device("*DSA*")
    _DSA50:                     !the second match
    DIX> say f$device("*DSA*")
    _DSA500:                    !the first match
    DIX> say f$device("*DSA*")
                                !no more

    DIX> say f$device("*DSA*",,,,true)
    [_DSA0:,_DSA50:,_DSA500:]
    DIX> devs = f$device("*DSA*",,,,true)
    DIX> show symb/all devs
    DEVS(1)="_DSA0:"             !all 3 elements of the table devs(1..3)
    DEVS(2)="_DSA50:"
    DEVS(3)="_DSA500:"

DIX INTERACTIVE_COMMANDS FUNCTIONS F$DIRECTORY


    Name = F$DIRECTORY()

    Return the name of the current directory

DIX INTERACTIVE_COMMANDS FUNCTIONS F$DIVIDE

    F$DIVIDE(str1,str2[,width],[ndigits])

   Str1 and str may be integer, real, string, decimal values, result is a string

   F$DIVIDE will divide str1 by str2 and return the result. The result
      will be rounded.
  If width is not specified, the result will be as long as needed
  If width >0, the result will be blank filled in a string of length 'width'
  If width <0, the result will be zero filled in a string of length 'width'
  If width<>0 and the result does not match, result will be a string
    of 'width' *

  If ndigits is >0, F$DIVIDE will insert 'ndigits' fractional digits. The
  default value is the current setting of the set decimal/digits

  Example:
   SAY F$DIVIDE("1234","2")    ! Returns "617"
       F$DIVIDE("1234","2",6)  ! Returns "   617"
       F$DIVIDE("1234","2",-6) ! Returns "000617"
       F$DIVIDE("1234","2",2)  ! Returns "**"
       F$DIVIDE("12","5")      ! Returns "2.4000000000"  !the default setting of
                                                         !set decimal/digits
       F$DIVIDE("12","5",,2)   ! Returns "2.40"          !overrule
       F$DIVIDE(12,3.2)        ! Returns "3.7500000000"

DIX INTERACTIVE_COMMANDS FUNCTIONS F$EDIT


   F$EDIT(string,"WHAT[,WHAT...]")
   Argument 1 : string  : The string to be edited
   Argument 2 : string  : The control string containing
                          COM[press]    replace all multiple blanks/tabs by one
                          COL[lapse]    Remove all blanks
                          T[rim]        Remove trailing blanks
                          UP[percase]   Make all chars uppercase
                          L[owercase]   Make all chars lowercase
                          UN[comment]   Remove comment "!" char
   If the string contains "s, then the part within "s is untouched.

   Result : string : The edited string

DIX INTERACTIVE_COMMANDS FUNCTIONS F$ELEMENT


   F$ELEMENT(number,char,string)

  Return the 'number'th part of string "string" separated by "char"
  If number<0 the result will be the last but 'number'th part
  The first element of the string has number 0.

  Example:

  F$ELEMENT( 2,"|",A|B|C|D|E") returns C
  F$ELEMENT(-2,"|",A|B|C|D|E") returns D

  arg1 is integer
  arg2 is character (only first char used)
  arg3 is character
  Result is character

DIX INTERACTIVE_COMMANDS FUNCTIONS F$ENUMERATE

   F$ENUMERATE(index[,mask],[where],[level])

  index : Integer  : The index'th match is returned
  mask  : Character: Pattern match for the name
                       Supports * and %.
  Where : Character: DATA,VFC,BOTH(Default),SYMBOL,PARAMETER,VALUE

  Returns the 'index'th  field/symbol/parameter/value name that matches "mask"

  If the index is larger than the number of items, an empty string is returned

  For parameters and values you can also specify the command level where the
   parameter/value is defined. If you do not specify is, the current level
   is used. level=0 means the bo0lbal level
            level>0 is the absolute command level
            level<0 is the relative command level (-1 is one level up)

  Example:
  return a list of fields matching *BYT*

   DIX> index = 1
   DIX> loop:value = F$ENUMERATE(index,"*BYT*")
   DIX> if (value <> "") then
   DIX> say "Found name ",value
   DIX> index = index + 1
   DIX> goto loop
   DIX> endif

  Return a list of all symbols

   DIX> index = 1
   DIX> loop
   DIX> value = F$ENUMERATE(index,,"SYMBOL")
   DIX> testloop value<>""
   DIX> say "Found symvol name ",value
   DIX> index = index + 1
   DIX> endloop

DIX INTERACTIVE_COMMANDS FUNCTIONS F$ENVIRONMENT

  F$ENVIRONMENT("What"[,level])

  Report some environment info

  What             Type   Meaning
  CASE_SENSITIVE   Log    Case sensitive mode enabled
  DEBUG            Log    True if in debug mode
  DEPTH            Int    Command procedure depth
  DEFAULT          Char   The current default disk/directory
  PROCEDURE        Char   Name of command procedure
  PROMPT           Char   The current Prompt string
  DCLCOMPAT        Log    The current value of the DCL compatible flag
  EVALUATION_ORDER Char   The current evaluation order
  INTERACTIVE      Log    Interactive mode
  MESSAGE          Char   The current message mode
  ON_SEVERITY      Char   The current on level
  ON_ACTION        Char   The current on action
  ON_OVERFLOW      Char   The current overflow action
  ON_CONTROLC      Char   The current control_c action
  OUTPUT_FILTER    Char   The current setting of the output filter (or empty)
  PRCNAM           Char   The current process name
  STRICT           Char   The current strict mode
  SUBSTITUTIONS    Char   The current substitutions settings
  VERIFY_PROCEDURE Log    The current procedure verify setting
  VERIFY_IMAGE     Log    The current image verify setting
  VERIFY_ALL       char   The current verify settings, can be used with set
                            set ver='f$envi("verify_all")'
  VERIFY_PREFIX    char   The current prefix setting
  VERSION          Char   The current version of DIX
  WILDCARD         Char   The current (Default) wildcard settings
  SYMBOL_SCOPE     Char   The current setting of the symbol_scope
  MAX_DEPTH        Int    The maximum command depth (65535)

  For most of the values the results can vary per level (@procedure level)
  If you do not specify level, the current level values will be returned,
   You may specify level as an absolute level (positive value) or a relative
   value (negative value)

  Example:

   Suppose we are 3 deep nested
    f$envi("PROC")     ! returns the current procedure name
    f$envi("PROC",-1)  ! returns the procedure name of my caller
    f$envi("PROC",2)   ! returns the procedure name of level 2 (my caller)

DIX INTERACTIVE_COMMANDS FUNCTIONS F$EXISTS

  F$EXISTS(name)

  Name can be specified with or without quotes

  Deliver true if name is an existing symbol

DIX INTERACTIVE_COMMANDS FUNCTIONS F$EXTRACT


  F$EXTRACT(bpos,nkar,string)

  Extract part of the string (like DCL F$EXTRACT)
  If bpos is <0 the bpos will be taken from the end of the string
  The first char of the string is at position 0 (and the last -1).

  Examples:
  F$EXTRACT(2,3,"ABCDEF")   => CDE
  F$EXTRACT(-2,1,"ABCDEF")  => E

  arg1 is int
  arg2 is int
  arg3 is character
  result is character

DIX INTERACTIVE_COMMANDS FUNCTIONS F$EXTV

   F$EXTV(pos,size,base)

   Extract some bits (sign extended) from a source
   pos (integer): The position from the base
   size (integer): Maximum number of bits (no more than 32)
   base (any)    : Source
   The result is an integer

DIX INTERACTIVE_COMMANDS FUNCTIONS F$EXTZV

   F$EXTZV(pos,size,base)

   Extract some bits (zero extended) from a source
   pos (integer): The position from the base
   size (integer): Maximum number of bits (no more than 32)
   base (any)    : Source
   The result is an integer

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FAO

  F$FAO(controlstring[,parameter[,parameter...]])

  Like the DCL F$FAO, format a string
  controlstring : Char
  parameter     : Either integer, character or date.
  Output        : Char

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FEXISTS

  F$FEXISTS(name[,where])

  Name can be specified with or without quotes, but if name contains
  dimensions, name must be enclosed in quotes

  Deliver true if name is an existing field
  Where can be
    NORMAL  : Check the normal fields only
    VFC     : Check the VFC fields only
    BOTH    : Check both normal fields and VFC fields (Default)

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FFT


   Result = F$FFT(table[,DIRECTION],[RESULT][,METHOD])

   Compute a (Fast) Fourier Transform of table
   Input : TABLE      : An integer/real or complex table
           DIRECTION  : A character string specifying the direction
                        FORWARD (Default) or REVERSE
           RESULT     : A character string specifying the output
              BOTH    : Return a 2 dim table with REAL and IMAG data
                         (default for a 2 dim or complex input table)
                         if input is complex, the output will be complex
              REAL    : Return a 1 dim table with the real data
              IMAG    : Return a 1 dim table with the imaginary data
              ABS     : Return a 1 dim table with the absolute data
                         =sqrt(real**2+imag**2) (default for a 1 dim
                         input table)
           METHOD     : A character string specifying the algorithm
              FAST    : Use the FFT algorithm. The number of elements in table
                        must be a power of 2.
              DISCRETE: Use the discrete algorithm. The number of elements
                        is not restricted (default for a not power of 2 table)
                        This method is much more CPU intensive.
              AUTO    : Take the fast if input has power of 2 size, else take
                        the discrete method (this is the default setting)

   Table can be an integer, real table with one or two dimensions
     The first dimension is the number of data elements. If the
     count is not a power of 2, DIX will switch to DFT (Discrete Fourier
     Transform). This will take a "little" longer to compute.

     If table has one dimension, it is assumed to be a real value only.
       F$FFT will by default return the absolute of the FFT data
        =SQRT(REAL**2+IMAG**2)

     If table has two dimensions, the second dimension must have 2 values
        Table(*,1) must contain the real data.
        Table(*,2) must contain the imag data.
       F$FFT will by default return a 2 dimensional table containing the
        real and imaginary part of the result.

   Examples:
    REAL data(1024)  !Only real data supplied
    !fill data with the values wanted
    RES=F$FFT(data)  !Return the absolute FFT values. Res is a table (1024)

    REAL data(512,2) !Real and imaginary data supplied
    !fill data with the values wanted
    RES=F$FFT(data)  !Return real/imag values, RES is a table (512,2)
                     !res(*,1) is the real data, res(*,2) the imag part

    REAL data(600)
    !fill data with the values wanted
    res=F$fft(data)  !do a DFT, since 600 is not a power of 2.
    res=f$fft(data,,,"FAST") !Returns an error, cannot perform an FFT on
                             ! a table with #elements not a power of 2

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FID_TO_NAME


   filename = F$FID_TO_NAME(devnam,fid)

   Convert devnam/fid to filename
   devnam : char string containing the disk device name
   fid    : Either a Fileid type or a character string including () (ddd,dd,dd)

   Result is char

   You need read access to the INDEXF.SYS of the device

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FIELD


  F$FIELD(name,what,[idx],["where"])

  Return info about a fieldname

  Name can be specified with or without quotes, but if name contains
  dimensions, name must be enclosed in quotes

  what can be
  EXISTS    : Return true or false whether the fieldname exists
  SIZE      : Returns the size (IN BITS) of the field
  OFFSET    : Return the byte offset
  BITOFFSET : Return the bit offset
  TYPE      : The type of the field
  FIELD     : Return true if the field is in a bit-range.
  NDIM      : Number of dimensions
  NAME      : The name of the 'idx' element

  Where can be
    NORMAL  : Check the normal fields only
    VFC     : Check the VFC fields only
    BOTH    : Check both normal fields and VFC fields (Default)

  For the next two items, a 3rd parameter can be used (the dimension index)
  F$FIELD(fieldname,what,idx[,"where"])

  LOWDIM    : The low value for dimension 'idx'
  HIGHDIM   : The high value for dimension 'idx'
  INCREMENT : The increment value for dimension 'idx'

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FILE


  F$FILE("arg"[,index]) or F$FILE([index],"arg")

  Return info file 'index'
   Index can be : Not specified: DIX will use the current file
                : Integer      : The 'index'th opened file
                : Char         : DIX will first try to locate an opened
                                  file with a tag 'index'. If that fails
                                  DIX will try to open file 'index' (and
                                  close it after the f$file)

  Arg can be:

  arg             Meaning          Result  Value
  ORG             File organization Char   IDX REL SEQ
  BLK             Open mode        Log     True or False
  KEY             Current key      Int     Current key    (0 for nonindexed files)
  NAME            Filename         Char    Filename
  NOK             Number of keys   Int     Number of keys (0 for nonindexed files)
  TAG             Filenametag      Char    The tag of this file
  RFA             RFA          Char/RFA    "(blocknr,byte)" in DCL mode or
                                           RFA (DIX mode)
  RFABLOCK        RFA               Int    The VBN part of the RFA
  RFAOFFSET or
  RFARECID        RFA               Int    The OFFSET/RECID part of the RFA
  RECORDLENGTH    File record length Int   The value of the fab.fab$w_mrs
  MAXRECORDLENGTH File record length Int   The value of the fab.fab$w_mrs
  MINRECORDLENGTH File record length Int   The value of XABKEY.XAB$W_MRL or 0
  EXACTSIZE       File size         Int    Exact file size in bytes including FFB
  FID             File id           Fid    The file id of the file
  DEVNAM          Device name       Char   The device name of the file
  PARFILEID       File id of parent FID    The file id of the file's directory
  PARNAME         Name of parent    Char   The name of the file's directory

  NB_ACL          Byte size of ACL  Int    Number of bytes in ACEs
  ACLS            ACL list          Acl    A list of ACEs. This may generate
                                           an error if no ACLs are present
  HEADERS         Header count      Int    Number of file headers
  EXTENTS         File extents      Int    Number of file extents (may be 0)
  EXTLIST         File extents      Int    Table of n*2 elements.
                                           The first is the logical blnr
                                           The second is the count
                                           This may generate an error if the
                                           file has no extents.
  If the file is opened with /memory
   NRECORD        Number of records Int    Number of records in the mem file

  For indexed files the following extra can be specified
  F$FILE("arg"[,index],[keyindex]) info for the 'keyindex'th key, default is
                                   the current

    KNAME       Char   Name of the key
    KASCENDING  Log    Key is ascending
    KVALUE      Char   The value of the string type key
                [U]INT Value for integer type keys
    KSTRING     LOG    Key is string type
    KSEGMENT    Int    Number of key segments
    KTYPE       Char   Key type
    KLENGTH     Int    Total key size

  For keysegments there is a fourth parameter (the segment index)

    F$FILE("arg"[,index],[keyindex],[keysegment]) info for the 'keyindex'th key,
                                                the 'keysegment'th segment

    KSPOS       Int    The position of the segment (or 0)
    KSSIZE      Int    The size of the segment (or 0)

  DESCRIPTION Description info

  For the description info two more arguments are allowed

  F$FILE("DESCRIPTION",[fileindex],[what],[desindex])
   what     : What information is returned
              NAME : The full name of the description
              TAG  : The tag of the description
   desIndex : The index of the description (default=current).
              Desindex is either a number, or a string that will be matched
              against the tag of the description

  Also all the DCL F$FILE arguments are supported

   Item       Type     Information Returned
   AI         Log/chr  TRUE if after-image (AI) journaling is
                       enabled; FALSE if disabled.
   ALQ        Integer  Allocation quantity.
   BDT        Date/chr Backup date/time.
   BI         Log/chr  TRUE if before-image (BI) journaling is
                       enabled; FALSE if disabled.
   BKS        Integer  Bucket size.
   BLS        Integer  Block size.
   CBT        Log/chr  TRUE if contiguous-best-try; otherwise FALSE.
   CDT        Date/chr Creation date/time.
   CTG        String   TRUE if contiguous; otherwise FALSE.
   DEQ        Integer  The default extension quantity.
   DID        Fileid   Directory ID string.
   DIRECTORY  Log/chr  Returns TRUE or FALSE. Returns TRUE if it is
                       a directory.
   DVI        String   Device name string.
   EDT        Date/chr Expiration date/time.
   EOF        Integer  Number of blocks used.
   ERASE      Log/chr  TRUE if a file's contents are erased before a
                       file is deleted; otherwise FALSE.
   FFB        Integer  First free byte.
   FID        Fileid   File ID string.
   FILE_      String   Record count and data byte count in the form
   LENGTH_             (n,m), where n is the record count and m is
   HINT                the data byte count. An invalidated count is
                       specified by a -1 for n or m.
   FSZ        Integer  Fixed control area size.
   GBC        Integer  Global buffer count.
   GBC32      Integer  Enhanced longword version of global buffer
                       count with a per-file maximum size of about
                       2.1 billion for indexed files.
   GBCFLAGS   String   Per-file management flags for sizing of
                       global buffer cache. Returns PERCENT if
                       global buffer count is expresses as a
                       percent, DEFAULT if global buffer size is
                       determined at runtime by an algorithm using
                       two global buffer SYSGEN parameters (GB_
                       CACHEALLMAX and GB_DEFPERCENT); or NONE if no
                       per-file management flags are enabled for the
                       file.
   GRP        Integer  Owner group number.
   JOURNAL_   Log/chr  TRUE if the file is a journal; otherwise
   FILE                FALSE.
   KNOWN      Log/chr  Known file; returns TRUE or FALSE to
                       indicate whether file is installed with the
                       Install utility (INSTALL). However, returns
                       NOSUCHFILE if a file does not exist (for
                       example, the file has been installed but
                       subsequently deleted).
   LOCKED     Log/chr  TRUE if a file is deaccessed-locked;
                       otherwise FALSE.
   LRL        Integer  Longest record length.
   MBM        Integer  Owner member number.
   MOVE       Log/chr  TRUE if movefile operations are enabled;
                       otherwise FALSE.
   MRN        Integer  Maximum record number.
   MRS        Integer  Maximum record size.
   NOA        Integer  Number of areas.
   NOBACKUP   Log/chr  FALSE if the file is marked for backup; TRUE
                       if the file is marked NOBACKUP.
   NOK        Integer  Number of keys.
   ORG        String   File organization; returns SEQ, REL, IDX.
   PRESHELVED Log/chr  TRUE if the file is preshelved; otherwise
   (Alpha/I64          FALSE.
   only)
   PRO        Protect  File protection string.
   PVN        Integer  Prolog version number.
   RAT        String   Record attributes; returns CR, PRN, FTN, "".
   RCK        Log/chr  TRUE if read check; otherwise FALSE.
   RDT        Date/chr Revision date/time.
   RFM        String   Record format string; returns the values VAR,
                       FIX, VFC, UDF, STM, STMLF, STMCR.
   RU         Log/chr  TRUE if recovery unit (RU) journaling is
                       enabled; returns TRUE or FALSE.
   RVN        Integer  Revision number.
   SHELVABLE  Log/chr  TRUE if the file is shelvable; otherwise
                       FALSE.
   SHELVED    Log/chr  TRUE if the file is shelved; otherwise FALSE.
   STORED_    Log/chr  ASCII string that represents stored
   SEMANTICS           semantics.
   UIC        UIC      Owner user identification code (UIC) string.
   VERLIMIT   Integer  Version limit number. The value 32767
                       indicates that no version limit was set.
   WCK        Log/chr  TRUE if write check; otherwise FALSE.

   In DCL mode the log/chr and the date/chr will return a string,
    in DIX mode a logical or date
   this makes DIX more DCL compatible

  Examples:

  $ DIX/int sysuaf/des=(sysuaf,.dir),alpha.dir/des=(.dir,profile)/mul
  %DIX-I-USINGFIL, Using file SYS$COMMON:[SYSEXE]SYSUAF.DAT;1/NOMOD
  %DIX-I-USINGDES, Using description DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;88(SYSU
  DIX> sh file/all/des
  C TAG      Type    Filename                                       Size
  * SYSUAF   IDX     SYS$COMMON:[SYSEXE]SYSUAF.DAT;1                  48
   * SYSUAF  Descr   DIX_SYS(SYSUAF)
     DIR     Descr   DIX_SYS(.DIR)
    ALPHA    SEQ     SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]ALPHA.DIR;1   15
   * DIR     Descr   DIX_SYS(.DIR)
     PROFILE Descr   DIX_SYS(PROFILE)
  * means the current file or description
  DIX> say f$file("NAME")         !returns the current file name
  SYS$COMMON:[SYSEXE]SYSUAF.DAT;1
  DIX> say f$file("NAME",2) or
      say f$file("NAME","ALPHA")  !both return the name of the second file
  SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]ALPHA.DIR;1

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FIS


  pos = F$FIS(string,setofchars[,"CASE_BLIND"])

  Get the first position of a character in string that
  matches any of the chars in setofchars. The first pos is 0.
  If all characters in string are not in setofchars
  F$FIS will return the length of STRING.
  See also the help about STR$FIRST_IN_SET
    Only the result is one off to be more DCL compliant

  F$FIS("TESTSTRING","SR") will return 2.
  F$FIS("TESTSTRING","XYZ") will return 10 (not found)
  F$FIS("TESTSTRING","s")   will return 10 (not found)
  F$FIS("TESTSTRING","s","CASE_BLIND") will return 2

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FLOAT


   result=f$float(real_val,width,decimals[,exponent])

   Convert a real value/table to a fixed format
   This can be used in printing a table of real values.

   Input : real_val : Any (table of) real type
           width    : Total width of the output value
           decimals : How many digits after the .
           exponent : How wide is the exponent part (optional)

   Output: a (table of) character*(width)

   say f$float(12.34,10,3)
       12.340
   say f$float(12.34,10,0)
           12
   say f$float(1234.0,4,0)
   ****                        !does not fit

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FNIS


  pos = F$FNIS(string,setofchars[,"CASE_BLIND"])

  Get the first position of a character in string that
  does not match any of the chars in setofchars. The first pos is 0.
  If all characters in string match setofchars
  F$FNIS will return the length of STRING.
  See also the help about STR$FIRST_IN_SET
    Only the result is one off to be more DCL compliant

  F$FNIS("TESTSTRING","TE") will return 2.
  F$FNIS("TESTSTRING","TESTSTRING") will return 10 (not found).
  F$FNIS("TESTSTRING","t") will return 0.
  F$FNIS("TESTSTRING","te","CASE_BLIND") will return 2.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$FTYPE

  F$FTYPE(name[,WHERE"])

  Name can be specified with or without quotes, but if name contains
  dimensions, name must be enclosed in quotes

  Where can be
   NORMAL : Look in the normal data
   VFC    : Look in the VFC data
   BOTH   : Look in both (Default)

  Deliver the type of an existing field
    many possibilities (see the help about [DIX/HELP] record field)

  This statement looks like the DCL F$TYPE, but it's argument may also be
  a string between quotes.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$GETDVI


  Result = F$GETDVI(device,what,[fnr])
  Device : char string containing the device name
  what   : The item you want

  Result is depending on the what

   If you load the $DVIDEF module, you can ask any known device parameter
   You may then specify item as a name from one of these parameters
   See also the help about the LOAD command

  If what is a character string, DIX will always have the following
   items defined

    What      Resulttype Explanation
    ACP       Char       The ACP type f11v1,f11v2,11v5
    MAXBLOCK  Integer    The size of the disk
    MAXFILES  Integer    Maximum number of files
    EXISTS    Logical    If the device exists TRUE else FALSE
    BLNRFILE  Integer    The record number of the file header-entry of the file
                          with fileid 0 in INDEXF.SYS. The record number in
                          INDEXF.SYS of a file with fileid (12345,5,6) =
                          F$GETDVI("disk","BLNRFILE") + 12345
                          You must have READ access to the index file.
    FIDRECORD Integer    Is the same as BLNRFILE but the fnr is added to the
                          result. This allows you to return the recordnr
                          in the INDEXF.SYS of the file with file "fnr"
                          fnr is the first number if the fileid (fnr,rev,volnr)
                          You must have READ access to the index file.

   If you have $DVIDEF loaded via the load/mod=$dvidef

   If what is text, DIX will try to find a parameter with the name text,
   or if that fails the parameter with the name "DVI$_text".

   If what is integer, DIX will use that value to query $GETDVI

   DIX> LOAD/MODU=$DVIDEF            !this will read the $JPIDEF module from
                                     !STARLET.MLB and define the parameters
   DIX> SAY F$GETDVI("SYS$SYSDEVICE","DVI$_UNIT")  !parameter found via text
   13600
   DIX> SAY F$GETDVI("SYS$SYSDEVICE","UNIT")       !parameter DVI$_* is
                                                     found via text
   13600
   DIX> SAY F$GETDVI("SYS$SYSDEVICE",JPI$_UNIT)    !the parameter is used
   13600

DIX INTERACTIVE_COMMANDS FUNCTIONS F$GETJPI


  Result = F$GETJPI([pid],what)

  PID is the pid
           either an integer (probably expressed as %x20200101),
           or a string containing the PID in hex

  what   : The item you want
           BUFIO         : The buffered I/O
           DIRIO         : The direct I/O
           CPUTIM        : The CPU time
           PAGEFLTS      : The page faults
           PID           : The process id
           PRCNAM        : The process name
           PRI           : The current priority
           PRIB          : The base priority
           USERNAME      : The username
           UIC           : The UIC

  Returns a value of various types (char/int/date/cpu)

  If you load the $JPIDEF module, you can ask any known system parameter
  you may then specify WHAT as a name from one of these parameters.
  See also the help about the LOAD command

  If WHAT is a string (and not one of the above), DIX will search for
  the parameter JPI$_'what' and if that fails for 'what'
  If one the parameter searches succeeds, DIX will use the value.

   DIX> LOAD/MODU=$JPIDEF            !this will read the $JPIDEF module from
                                     !STARLET.MLB and define the parameters
   DIX> SAY F$GETJPI(,"JPI$_WSSIZE")  !parameter found via text
   13600
   DIX> SAY F$GETJPI(,"WSSIZE")       !parameter JPI$_* is found via text
   13600
   DIX> SAY F$GETJPI(,JPI$_WSSIZE)    !the parameter is used
   13600

   You can see which items are defined by loading the JPI* parameters and
   displaying them
    DIX> LOAD/MOD=$JPIDEF
    DIX> SHOW PARAM JPI$*

DIX INTERACTIVE_COMMANDS FUNCTIONS F$GETQUI


  Result = F$GETQUI(Function,[item],[object_id],[flags])

  Function is : Cancel_operation         Cancel context
                 Display_characteristics  Display a characteristic
                 Display_entry            Display things about an entry
                 Display_file             Display things about a file
                 Display_form             Display things about a form
                 Display_job              Display things about a job
                 Display_manager          Display things about a queue manager
                 Display_queue            Display things about a queue

  Item :        The following items are always defined
                 QUEUE_NAME
                 FORM_NAME
                 FILE_NAME
                 MANAGER_NAME
                 JOB_NAME

   If you load the $QUIDEF module, you can ask any known system parameter
   You may then specify item as a name from one of these parameters.
   See also the help about the LOAD command

   If ITEM is a string (and not one of the above), DIX will search for
   the parameter QUI$_'what' and if that fails for 'item'
   If one the parameter searches succeeds, DIX will use the value.

  Object_id :   A specification of what to be searched

  Flags     :   Specific flags for the command

   ALL_JOBS         DISPLAY_JOB         Requests that F$GETQUI
                                        search all jobs included
                                        in the established queue
                                        context. If you do not
                                        specify this flag, F$GETQUI
                                        returns information only
                                        about jobs that have the
                                        same user name as the
                                        caller.

   BATCH            DISPLAY_QUEUE       Selects batch queues.
                    DISPLAY_ENTRY

   EXECUTING_JOBS   DISPLAY_ENTRY       Selects executing jobs.
                    DISPLAY_JOB

   FREEZE_CONTEXT   DISPLAY_            When in wildcard mode,
                    CHARACTERISTIC      prevents advance of wildcard
                    DISPLAY_ENTRY       context to the next object.
                    DISPLAY_FILE        If you do not specify
                    DISPLAY_FORM        this flag, the context is
                    DISPLAY_JOB         advanced to the next object.
                    DISPLAY_MANAGER
                    DISPLAY_QUEUE

   GENERIC          DISPLAY_ENTRY       Selects generic queues for
                    DISPLAY_QUEUE       searching.

   HOLDING_JOBS     DISPLAY_ENTRY       Selects jobs on
                    DISPLAY_JOB         unconditional hold.

   PENDING_JOBS     DISPLAY_ENTRY       Selects pending jobs.
                    DISPLAY_JOB

   PRINTER          DISPLAY_QUEUE       Selects printer queues.
                    DISPLAY_ENTRY

   RETAINED_JOBS    DISPLAY_ENTRY       Selects jobs being retained.
                    DISPLAY_JOB

   SERVER           DISPLAY_QUEUE       Selects server queues.
                    DISPLAY_ENTRY

   SYMBIONT         DISPLAY_QUEUE       Selects all output queues.
                    DISPLAY_ENTRY       Equivalent to specifying
                                        "PRINTER,SERVER,TERMINAL".

   TERMINAL         DISPLAY_QUEUE       Selects terminal queues.
                    DISPLAY_ENTRY

   THIS_JOB         DISPLAY_ENTRY       Selects all job file
                    DISPLAY_FILE        information about the
                    DISPLAY_JOB         calling batch job (entry),
                    DISPLAY_QUEUE       the command file being
                                        executed, or the queue
                                        associated with the calling
                                        batch job.

   TIMED_RELEASE_   DISPLAY_ENTRY       Selects jobs on hold until a
   JOBS             DISPLAY_JOB         specified time.

   WILDCARD         DISPLAY_            Establishes and saves a
                    CHARACTERISTIC      context. Because the context
                    DISPLAY_ENTRY       is saved, the next operation
                    DISPLAY_FORM        can be performed based on
                    DISPLAY_MANAGER     that context.
                    DISPLAY_QUEUE

  For further see the help for the DCL lexical f$getqui

DIX INTERACTIVE_COMMANDS FUNCTIONS F$GETSYI


  Result = F$GETSYI(what[,size])               !for the real_format
  Result = F$GETSYI(what[,"node",[cluster_id]) !for all others

  what   : The item you want
            the following are always defined
             ARCHITECTURE  : The current architecture, i.e. VAX/Alpha/IA64
             HW_NAME       : The hardware name
             NODENAME      : The SCS node name
             VERSION       : The OpenVMS version
             REAL_FORMAT   : The floating point format used on this
               size=4/8/16  bytes  architecture for the specified precision
               or 32/61/128 bits   (size defaults to 4 bytes/32 bits)

  If you load the $SYIDEF module, you can ask any known system parameter
  You may then specify WHAT as a name from one of these parameters.
  See also the help about the LOAD command

  If WHAT is a string (and not one of the above), DIX will search for
  the parameter SYI$_'what' and if that fails for 'what'
  If one the parameter searches succeeds, DIX will use the value.

   DIX> LOAD/MODU=$SYIDEF              !this will read the $SYIDEF module from
                                       !STARLET.MLB and define the parameters
   DIX> SAY F$GETSYI("SYI$_BALSETCNT")  !parameter for via text
   351
   DIX> SAY F$GETSYI("BALSETCNT")      !parameter SYI$_* is found via text
   351
   DIX> SAY F$GETSYI(SYI$_BALSETCNT)   !the parameter is used
   351

   You can see which items are defined by loading the SYI* parameters and
   displaying them
    DIX> LOAD/MOD=$SYIDEF
    DIX> SHOW PARAM SYI$*

DIX INTERACTIVE_COMMANDS FUNCTIONS F$GET_SYMBOL

   result = f$get_symbol(name[local/global])

  Get the value of a dcl symbol either local of global

DIX INTERACTIVE_COMMANDS FUNCTIONS F$GETUAI


  Result = F$GETUAI(USERNAME,what)

  Username : A character string containing the username.
             If this argument is not specified, or contains only spaces,
             DIX will use the current user. Asking information of other
             users may require privileges.
  what     : The item you want
              the following are always defined

               UIC       : The UIC of the user
               DEVICE    : The default device of the user
               DIRECTORY : The default directory of the user
               HOME      : DEVICE+DIRECTORY

  If you load the $UAIDEF module, you can ask any known UAI parameter
  You may then specify WHAT as a name from one of these parameters.
  See also the help about the LOAD command

  If WHAT is a string (and not one of the above), DIX will search for
  the parameter UAI$_'what' and if that fails for 'what'
  If one the parameter searches succeeds, DIX will use the value.

   DIX> LOAD/MODU=$UAIDEF              !this will read the $UAIDEF module from
                                       !STARLET.MLB and define the parameters
   DIX> SAY F$GETUAI("SYSTEM","UAI$_DEFDEV") !parameter found via text
   SYS$SYSROOT:
   DIX> SAY F$GETUAI("SYSTEM","DEFDEV")      !parameter UAI$_* is found via text
   SYS$SYSROOT:
   DIX> SAY F$GETUAI("SYSTEM",UAI$_DEFDEV)   !the parameter value is used
   SYS$SYSROOT:

   You can see which items are defined by loading the JPI* parameters and
   displaying them
    DIX> LOAD/MOD=$UAIDEF
    DIX> SHOW PARAM UAI$*

DIX INTERACTIVE_COMMANDS FUNCTIONS F$HASH_PASSWORD


   Result = F$HASH_PASSWORD(password,[algorithm],[salt],username)

   Password   : char : The password to be hashed
   algorithm  : char : AD_II, PURDY, PUDRY_S, PURDY_V, PREFERRED
                int  : A byte value
                The default is the PREFERRED algorithm (127)
   salt       : Int  : The salt to be used
                The default is 0
   username   : char : The username to be used in the password hash
                       Trailing spaces are ignored.

   Result is an INTEGER*8 containing the hashed password

  Be aware that DIX will not change the case of any of the strings, and
  $HASH_PASSWORD is case-sensitive. So you will get different answers
  if the case is different.

  For more info see the system_service documentation on $HASH_PASSWORD

 Example:

 DIX/INT SYSUAF
 DIX> read/eq="MYNAME"
 DIX> say/hex F$HASH("MYPWD",,UAF$W_SALT,UAF$T_USERNAME)
 0F1025C0275A1D7A

DIX INTERACTIVE_COMMANDS FUNCTIONS F$HTONL/S


   oval=F$HTONL(ival)
   oval=F$HTONS(ival)

   Convert integers to network byte order (big endian)
   The byte order of all bytes is reversed
   This is a specific version (for integers only) of the F$REVERSE
    functions

   DIX> SAY/HEX F$HTONS('01020304'X)
   04030201

DIX INTERACTIVE_COMMANDS FUNCTIONS F$ICHAR_OR_ICHAR


  F$ICHAR(character)  or ICHAR(character)

  The argument must be exactly one character.
  Result is an integer with the ASCII value of the argument.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$IDENTIFIER


    int = f$identifier("NAME","NAME_TO_NUMBER")
    chr = f$identifier(65540,"NUMBER_TO_NAME")

   Convert id names to binary and reverse

DIX INTERACTIVE_COMMANDS FUNCTIONS F$INDEX


   value=F$INDEX(indexed_symbol,search,how,flag)

   Find values in indexed symbols

    search : The value to be searched
    how    : LT,LE,GE,GT (symbol must be sorted)
             EQ
             RECORD : search is record number
             ALL    : Return all values as a table
    flag   : DATA|INDEX : return the data (Default) or the index

    If the value is not found a zero-length string will be returned
    and the $STATUS will be set to error

    If you do not specify the search/how, DIX will return the next
    entry after the last search

  Example:
   DIX> integer/ind=char/sort jan
   DIX> jan("A")=1
   DIX> jan("Q")=2
   DIX> jan("Z")=3
   DIX> say f$index(jan,"K","EQ")  !not present
                                  !return empty string
   DIX> show symb $STATUS          !status is %RMS$E_RNF
   $STATUS=000182B2
   DIX> say f$index(jan,"K","GE")
   2
   DIX> say f$index(jan,"K","GE","I")
   Q
   DIX> say f$index(jan,"K","LE")
   1
   DIX> say f$index(jan,"K","LE","I")
   A
   DIX> say f$index(jan,2,"rec","I")
   Q

   DIX> say f$index(jan)
   3
   DIX> say f$index(jan)                  !read the next (not present)
                                  !Return the empty string
   DIX> show symb $STATUS          !status is %SYSTEM-W-ENDOFFILE
   $STATUS=00000870

   DIX> say f$index(jan,,"ALL")         !return all data values
   [1,2,3]
   DIX> say f$index(jan,,"ALL","INDEX")  !return all index values
   [A,B,Z]

DIX INTERACTIVE_COMMANDS FUNCTIONS F$INSV


    F$INSV(source,pos,size,base)

  Insert bits from source into base and return the changed value
  (base is unchanged)
    source (integer) : The source of the bits
    pos  (integer)   : The position from the base
    size (integer)   : Maximum number of bits. There is no limit on the size,
                       only the size of the source (pos+siz>=0 and
                       pos+siz<sizeof(source)

    base (any)       : Original source (may be a table)

   The result is a the same type as base.

 Example:
  k = 15
  newval = f$insv(15,4,4,k)
  Returns the value (type integer like k) of 255

DIX INTERACTIVE_COMMANDS FUNCTIONS F$INTEGER


   int = f$integer(char[,quiet])
   int = f$integer(real[,quiet])
   int = f$integer(date[,quiet])

  Convert other type to integer

  quiet :
    true/false          True is quiet mode
    "QUIET"/"SIGNAL"    "Quiet" is quiet mode

   If quiet is true/"QUIET" DIX will not signal conversion errors and
    return 0 (like DCL). In DCL compatible mode QUIET is default
    In normal mode SIGNAL is default

DIX INTERACTIVE_COMMANDS FUNCTIONS F$KEY

   F$KEY(keynumber[,WHAT],[file],[segmentidx])
   Get info about a key
   Argument   type meaning
   keynumber  Int  The key number (0..nkey-1) (or not present)
                   If not present, DIX will generate a table with the
                    requested info for all keyvalues.
   WHAT       char What info do you want, defaults to PRESENT
   file       char Which file (file tag), default the current
   segmentidx Int  For SEGPOS,SEGSIZ the key segment (default=0)

   What             Type Result
    PRESENT         log  True or false  (keynumber must be present)

    ASCENDING       log  True if ascending key
    DATACOMPRESSED  log  True if the data in the data bucket is compressed
    DUPLICATE       Log  Does this key allowed duplicates
    INDEXCOMPRESSED log  True is the keys in the key buckets are compressed
    KEYCOMPRESSED   log  True if the index in the data bucket is compressed
    NULL            Int  Null key value (-1 is no NULL key value)
    ROOT_LEVEL      Int  Depth of the index tree
    SEGPOS          Int  Start of keysegment segmentidx
    SEGSIZ          Int  Size of keysegment segmentidx
    SIZE            Int  The total keysize
    STRING          log  True is string type key
    TYPE            Chr  Key type
    VBNDATA         Int  The VBN of the data for this key (data or SIDR)
    VBNROOT         Int  The VBN of the root key bucket

DIX INTERACTIVE_COMMANDS FUNCTIONS F$LEFT

  F$LEFT(STRING) : Result is a left justified string
  Argument and result are character

DIX INTERACTIVE_COMMANDS FUNCTIONS F$LENGTH


  size=F$LENGTH(symbol[,what])
   What
    If what is not present or logical false or string "CHARACTER"
     "symbol" must be of type character
    If what is logical true or string "ALL"
     "symbol" can be any type

  F$LENGTH(string) will return the length of the symbol in bytes

DIX INTERACTIVE_COMMANDS FUNCTIONS F$LOCATE


  F$LOCATE(substring,sourcestring[,wildalgorithm][,case])

  Find a substring in a string
   Wildalgorithm can be STANDARD or EXTENDED or NONE
     NONE : No wildcard match
     STAN : *     : Matches all substrings (0 or more chars)
            %     : Matches exactly one char
     EXTE : *     : Matches all substrings (0 or more chars)
            %     : Matches exactly one char
            [abc] : Matches a "a" or a "b" or a "c"
            [-abc]: Matches anything except a,b,c
            [a-z] : Matches all letters (a-z)
            [-a-z]: Matches anything except letters
            'a    : Char "a" is no longer a special char ([*%' etc.)
            ~     : If in front of the search string, the search string must be in the
                    beginning of the line, if at the end of the search string,
                    the search string must be at the end of the line
            !     : Matches one or more whitespace chars
  Case can be CASE_SENSITIVE or NOCASE_SENSITIVE

  sourcestring, substring and algorithm are strings
  Result is integer. The first position is 0.
                     If substring is not found F$LENGTH(sourcestring) is returned

DIX INTERACTIVE_COMMANDS FUNCTIONS F$LOWCASE


  F$LOWCASE(STRING) Result is a string with all letters (a-z) lowercased.

  argument and result are character

DIX INTERACTIVE_COMMANDS FUNCTIONS F$MATCHWILD


   F$MATCHWILD(Candidatestring,patternstring[,algorithm][,case])

   F$MATCH_WILD is an alias

   Algorithm can be STANDARD or EXTENDED
     STAN : *     : Matches all substrings (0 or more chars)
            %     : Matches exactly one char
     EXTE : *     : Matches all substrings (0 or more chars)
            %     : Matches exactly one char
            [abc] : Matches a "a" or a "b" or a "c"
            [-abc]: Matches anything except a,b,c
            [a-z] : Matches all letters (a-z)
            [-a-z]: Matches anything except letters
            'a    : Char "a" is no longer a special char ([*%' etc.)
            ~     : If in front of the search string, the search string must be in the
                    beginning of the line, if at the end of the search string,
                    the search string must be at the end of the line
            !     : Matches one or more whitespace chars

  Case can be CASE_SENSITIVE or NOCASE_SENSITIVE

   See if candidatestring matches patternstring

   arguments are character, return value is logical

   Since there is also a F$MATCH_COND, the minimum length for the
   function is F$MATCHW

DIX INTERACTIVE_COMMANDS FUNCTIONS F$MATCH_COND


   idx = f$match_cond(match_cond_code,compare_cond_code,..)

  Check if match_cond_code matches any of the compare_cond_codes
  Input   : 2 or more integers
  Output  : Integer 0 is no match, 1..n is compare_con_code 1..m

  For more help see the help for the LIB$MATCH_CODE routine

   Since there is also a F$MATCHWILD, the minimum length for the
   function is F$MATCH_C

DIX INTERACTIVE_COMMANDS FUNCTIONS F$MESSAGE

   F$MESSAGE(integer[,fields],[filemask])

   Returns the message text from the integer
   The fields parameter is optional and selects the specific parts
   of the message. It defaults to the current message mask.
   It may be specified as a bitmask

     bit 0  [1]: Text part
     bit 1  [2]: Identification
     bit 2  [4]: Severity
     bit 3  [8]: Facility
     bit 4 [16]: Executable specification if filemask is specified
     The value must be between 0 and 31.

   or as a (list of) text fields
     TEXT,IDENTIFICATION,SEVERITY,FACILITY,EXECUTABLE

   See also the "set message" and "show message" command for interactive mode.
     EXECUTABLE can only be specified if filemask is present
   On startup the message mask is set to 31.

   If files is not specified, DIX will search in its own message tables and
   the standard system messages. If the filemask is specified, DIX will
   search all files specified in filemask (default file specification SYS$MESSAGE:*.EXE)
   for the message code and return the text from that file.

   Example:

    DIX> SAY F$MESSAGE(%XF98088)
    %DIX-W-NOMSG, Message number 00F98068       !message could not be found
    DIX> say f$message(%xF98088,,"*")           !default flag=31
    RPG-W-NONASCKEY The record being written has a nonascending primary key
    value(in SYS$COMMON:[SYSMSG]RPG$MSG.EXE;1)  !message is found in rpg$msg.exe
    DIX> say f$message(%xF98088,15,"*")         !do not display image
    RPG-W-NONASCKEY The record being written has a nonascending primary key
    value

  Examples:
    DIX> say f$message(12)      !take the default mask
    %SYSTEM-F-ACCVIO, access violation, reason mask=!XB, virtual address=!XH,
    PC=!XH, PS=!XL
    DIX> say f$mess(12,"se,id") !include severity and identification
    %F-ACCVIO
    %SYSTEM-F-ACCVIO, access violation, reason mask=!XB, virtual address=!XH,
    DIX> say f$mess(12,3)               !include text and identification
    %ACCVIO, access violation, reason mask=!XB, virtual address=!XH, PC=!XH, PS=!XL

DIX INTERACTIVE_COMMANDS FUNCTIONS F$MODE


   F$MODE()
   Deliver the mode of the current process

   INTERACTIVE/BATCH/NETWORK/OTHER

DIX INTERACTIVE_COMMANDS FUNCTIONS F$MORSE


  result = f$morse(string,"TO")   Convert text-string to Morse code
  result = f$morse(string,"FROM") Convert Morse code string to characters

  The input string may contain only A-Z or 0-9.
  Output string is a Morse for each character, separated by spaces
  A space in the "TO" is translated to 4 spaces.
  Multiple spaces in the "FROM" are translated to 1 space.
  the "TO" field is optional so f$morse(string) is the same as
                                f$morse(string,"TO")
 Example:
  DIX> say f$morse("sos help","to")
  ... --- ...     .... . .-.. .--.
  DIX> Say f$morse("... --- ...     .... . .-.. .--.","from")
  SOS HELP

  DIX> ;for kar in ("A":"Z" + "0":"9"){*} ; say kar," : ",f$morse(kar);endfor
  A : .-
  B : -...
  C : -.-.
  ....
  7 : --...
  8 : ---..
  9 : ----.

  DIX> say f$replace(f$morse("SOS"),[".","-"],["bep ","beeeeep "])
  bep bep bep  beeeeep beeeeep beeeeep  bep bep bep

DIX INTERACTIVE_COMMANDS FUNCTIONS F$MUL

    F$MUL(str1,str2[,width],[ndigits])

   Str1 and str may be integer, real, string, decimal values, result is a string

  F$MUL will multiply str1 by str2 and return the result
  If width is not specified, the result will be as long as needed
  If width >0, the result will be blank filled in a string of length 'width'
  If width <0, the result will be zero filled in a string of length 'width'
  If width<>0 and the result does not match, result will be a string
    of 'width' *

  Example:
   SAY F$MUL("123","12")    ! Returns "1476"
       F$MUL("123","12",6)  ! Returns "  1476"
       F$MUL("123","12",-6) ! Returns "001476"
       F$MUL("123","12",2)  ! Returns "**"
       F$MUL(1012.3)        ! Returns "123"

DIX INTERACTIVE_COMMANDS FUNCTIONS F$NUMTIM


   F$NUMTIM()
   F$NUMTIM(date)
   F$NUMTIM(string)

   Convert the date (or the current date) to an integer table of 7 values
   Input is a date (or nothing) or a character string containing a valid date
   Output is an integer table (7 long) containing year, month,day,hour,...

   Example:

   DIX> A=F$NUMTIM(#DATE"1-JAN-1008")
   DIX> SH SYMB/FU A
   A(Integer*4,Level=1.0)= table(7)
   DIX> SAY A
   [2008,1,1,0,0,0,0]

DIX INTERACTIVE_COMMANDS FUNCTIONS F$PARSE


   res = f$parse(fnam,[defnam],[relnam],[what],[parsetype])

   fnam     : Char : A filename mask optionally containing * and %
   defnam   : Char : The default filename
   relnam   : Char : The related filename string
   what     : Char : What item : Node/device/directory/name/type/version
                     Multiple items may be present, comma separated
                     If one of the items is preceded by a -, all fields
                     except the named ones will be present
                     i.e. -version will return the complete filename without the
                     version
   parsetype: Char : Topic[,topic...]
                     Where topic can be
                      NO_CONCEAL : Do not conceal device names
                      SYNTAX_ONLY: Perform parse without I/O
                      PASSWORD   : Do not conceal password
                      NICE       : Transform ODS-5 names to readable
   Res : char : The found filename or the empty string

DIX INTERACTIVE_COMMANDS FUNCTIONS F$PID


   Returns a process identification (PID) number and updates the
   context symbol to point to the current position in the system's
   process list.

   Format

     F$PID(context-symbol)

  Returns

   In normal mode the return value is an integer containing the pid

   In DCL mode the return value is a string containing the PID of a
   process in the system's list of processes.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$PID Argument


 context-symbol

   Specifies a symbol that DCL uses to store a pointer into the
   system's list of processes. The F$PID function uses this pointer
   to return a PID.

   Specify the context symbol by using a symbol. The first time you
   use the F$PID function in a command procedure, you should use
   a symbol that is either undefined or equated to the null string
   ("") or a context symbol that has been created by the F$CONTEXT
   function.

   If the context symbol is undefined or equated to a null string,
   the F$PID function returns the first PID in the system's process
   list that it has the privilege to access. That is, if you have
   GROUP privilege and if the context symbol is null or undefined,
   the F$PID function returns the PID of the first process in your
   group. If you have WORLD privilege, the F$PID function returns
   the PID of the first process in the list. If you have neither
   GROUP nor WORLD privilege, the F$PID returns the first process
   that you own. Subsequent calls to F$PID return the rest of the
   processes on the system you are accessing.

   If the context symbol has been created by the F$CONTEXT function,
   the F$PID function returns the first process name in the
   system's process list that fits the criteria specified in the
   F$CONTEXT calls. Subsequent calls to F$PID return only the PIDs
   of those processes that meet the selection criteria set up by
   the F$CONTEXT function and that are accessible to your current
   privileges.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$PID Example


  CONTEXT = ""
  START:
      PID = F$PID(CONTEXT)
      IF PID .EQS. "" THEN EXIT
      SHOW SYMBOL PID
      GOTO START

     This command procedure uses the F$PID function to display a
     list of PIDs. The assignment statement declares the symbol
     CONTEXT, which is used as the context-symbol argument for the
     F$PID function. Because CONTEXT is equated to a null string,
     the F$PID function returns the first PID in the process list
     that it has the privilege to access.

     The PIDs displayed by this command procedure depend on the
     privilege of your process. When run with GROUP privilege, the
     PIDs of users in your group are displayed. When run with WORLD
     privilege, the PIDs of all users on the system are displayed.
     Without GROUP or WORLD privilege, only those processes that you
     own are displayed.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$PRIVILEGE


   logical=F$PRIVILEGE(priv_status)

   Returns a string value of either TRUE or FALSE, depending on
   whether your current process privileges match those specified
   in the argument. You can specify either the positive or negative
   version of a privilege.

   DIX> SAY F$PRIVILEGE("OPER,GROUP,TMPMBX,NONETMBX")
   False

     The F$PRIVILEGE function is used to test whether the process
     has OPER, GROUP, and TMPMBX privileges and not NETMBX privileges.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$RAD50


   Convert text to rad50 numbers and vice versa

   ival = f$rad50(text) or text = f$rad50(number)

   If argument is text (case 1) ival will be a rad50 number (0..63999)
    If the length of text is >3, ival will be a table of rad50 numbers
    each containing 3 characters. If the string length is not a multiple
    of 3, the string is padded with spaces.

   If argument is a (table of) number(s) or rad50's, these numbers
    will be converted to the original text (always padded with blanks
    to a multiple of 3 characters).

   Examples:

    DIX> say f$rad50("AB")       !string with length <=3
    1680                        !returns a single number
    DIX> say f$rad50(1680),":"   !and back to the source
    AB :                        !string length is 3

    DIX> say f$rad50("ABCD")          !string length >3, will return
    [1683,6400]                      !a table of numbers
    DIX> say f$rad50([1683,6400]),":" !and back
    ABCD  :                          !string length is 6

DIX INTERACTIVE_COMMANDS FUNCTIONS F$RADIX


  F$RADIX(value,radix[,separator])

  Convert an integer value to any radix

  Argument value    : Integer
           radix    : Integer
           separator: The string to insert between the "digits", default is .
           Result   : String

  If separator is not specified (or is blank)
    If radix <=36, each "digit can be 0..9,a..z
    if radix  >36, each "digit" will be expressed as decimal numbers
                       separated by "separator"

  If radix is specified <> " " then
    All "digits" will be expressed as decimal numbers separated by "separator"

  Example:
  f$radix(33,16) will deliver "21"
  f$radix(37,37) will deliver "1.0"

  f$radix(33,16,".") will deliver "2.1"
  f$radix(37,37,"|") will deliver "1|0"

DIX INTERACTIVE_COMMANDS FUNCTIONS F$RANDOM

   F$RANDOM([argument])
   Return a random number

   Argument : integer : Return an integer value 0..argument-1
              Real    : Return a real value 0<=result<argument
   If argument is not specified it is defaulted as 1.0

DIX INTERACTIVE_COMMANDS FUNCTIONS F$REAL


  F$REAL is an alias for the function REAL

DIX INTERACTIVE_COMMANDS FUNCTIONS F$READ

    F$READ(file[,beginrec][,endrec][,separation][,how][,csvchar])

   Read all (or a subset of the records of file 'file' into a table
   Input
    file     : char: The name of a file handle or a filename
    beginrec : int : The starting record, default is the current (or the first)
    endrec   : int : The ending record, default is the last
                     If either recnr is negative, it will be counted
                     from END_OF_FILE backward (so -2 is the one but last record)

    You may want to split the read lines like in the F$SPLIT function
       for more info see the F$SPLIT function help

    Separation : Separation char/table
    how        : How to align fields
    csvchar    : Character to use in CSV file (default=,)

   Output : A table of character elements. If separation or how
            is specified the result is a two-dimensional table.

   If file is the name of a file handle, the current file record will be
    restored

  Example:
  If you want all usernames from SYSUAF:

  DIX> users= f$read("SYSUAF",,,[-4,12],"COMPRESS")
        Read SYSUAF (all records)
        Skip the first 4 bytes and take the next 12
        Will deliver a table of (compressed) usernames

DIX INTERACTIVE_COMMANDS FUNCTIONS F$REPLACE


   result=f$replace(input,search,[replace],[count],[case],[wildflag])

   input  : Character (may be table)
   search : Character (may be table), the string to be found
   replace: Character (may be table), the string to replace search
             may be empty or not specified
   count  : The number of replacements in each element of input
             The default is all occurrences of search.
             If count is negative, the last -count are replaced
   case   : case_sens or nocase_sens : Is the search case sensitive
             The default is case_sensitive
   wildflag: STANDARD or EXTENDED. Determines how search string is found

   If search is a table (of string), replace must be
    1. A single value: all search strings are replaced by replace
    2. A table, the number of strings must be the same as search
    3. not present, all search strings are removed

  Examples:
   DIX> say f$replace("XYZXYZ XYZ","X","x")           !replace X by x
   xYZxYZ xYZ
   DIX> say f$replace("XYZXYZ XYZ",["X","Y"],"x")     !Replace X and Y by x
   xxZxxZ xxZ
   DIX> say f$replace("XYZXYZ XYZ",["X","Y"],["x","y"])  !replace X by x
                                                         !and Y by y
   xyZxyZ xyZ
   DIX> say f$replace("XYZXYZ XYZ",["X","Y"])         !replace X and Y by nothing
   ZZ Z
   DIX> say f$replace("XYZXYZ XYZ","x")               !replace X by nothing
   XYZXYZ XYZ                                         !nothing happens, case_sens
   DIX> say f$replace("XYZXYZ XYZ","x",,,"NOCASE")    !replace X by nothing
   YZYZ YZ                                            !all X are removed
   DIX> say f$replace("XYZXYZ XYZ","X","x",2)         !replace X by x,
                                                      !only the first 2
   xYZxYZ XYZ

   DIX> say f$replace("axbx1111xc","*x","y",,,"STAND") !*x is used as a wildcard
   yyyc       !ax is replaced by y, and then bx by y, and then 1111x by y

  search and replace may be tables:

DIX INTERACTIVE_COMMANDS FUNCTIONS F$REVERSE


   outputval=F$REVERSE(inputval)

   Reverse the order of all bytes of the arguments. This may be used
   for little/big endian conversion (see also the F$HTONS function)

   DIX> SAY/HEX F$REVERSE('01020304'X)
   04030201
   DIX> SAY/HEX F$REVERSE("ABCD")
   DCBA

DIX INTERACTIVE_COMMANDS FUNCTIONS F$RFA


   rfa=F$RFA(integer)

  Convert an integer (byteoffset) to an RFA (blocknumber,byteoffset)

   DIX> say f$rfa(518)   !convert byteoffset 518
   (2,6)                !block 2, byte offset (in block) 6

DIX INTERACTIVE_COMMANDS FUNCTIONS F$RIGHT

  F$RIGHT(STRING) : Result is a right justified string

  Argument and result are character

DIX INTERACTIVE_COMMANDS FUNCTIONS F$SEARCH


   result = F$SEARCH(mask[,context][,defaultfile],[relatedname],[flags],
                     [select_file])

   mask is a (wildcard) specification of the file(s) to be searched.
    Mask can also be specified as libmask(modmask) or modmask(libmask) to
    search modules in libraries

   If flags is present if must be
     1. A character string containing one or more tokens
            a. ALL
            b. NOWILD   | Signal error if a wildcard is present
            c. MULTIPLE | perform temp defaulting, see help on LIB$FIND_FILE
            d. LONG     | Return long filenames (not on VAX)
     2. A logical

    If flags is true or contains "ALL" DIX will return one value
     containing a table of all files found. In this case context is ignored.

   In normal mode : context is the name of a symbol (must not exist)
                            or not present (the default symbol)
   In DCL mode    : context is an integer (or not present)

  Like the DCL f$search, but with a default/related file and flags

  The select_file tag can be used to finetune the search. The select_file
    name must be defined first via the add select_file command.
    For more info see the help about add select_file

   Example:

   lp:res = f$search("*.exe",test)     ! or ("*.exe",1) in DCL mode
      if (res <> "")
       then
        say res
        goto lp
       endif

   The symbol test saves the context. If you want to delete this symbol
   specify x=f$search(,test)

   If no more files can be found, DIX will automatically delete test.

 Example in ALL mode:

   DIX> result = F$SEARCH("*.EXE",,,true)
   DIX> show symb/fu result
   RESULT(Character,Level=1.0)=table(3)
   DIX> sh symb/all result
   RESULT(1)="USER50:[STUBBF.PROGRAMS.DIX]DIX_ALPHA.EXE;2504"
   RESULT(2)="USER50:[STUBBF.PROGRAMS.DIX]DIX_IA64.EXE;21"
   RESULT(3)="USER50:[STUBBF.PROGRAMS.DIX]DIX_VAX.EXE;69"
   DIX> ;FOR NAM IN RESULT; say nam ; end for
   USER50:[STUBBF.PROGRAMS.DIX]DIX_ALPHA.EXE;2504
   USER50:[STUBBF.PROGRAMS.DIX]DIX_IA64.EXE;21
   USER50:[STUBBF.PROGRAMS.DIX]DIX_VAX.EXE;69

  Example for library support:
  DIX> s= f$sear("starlet(*uai*)",,,,"ALL")
  DIX> sh symb/all s
  S(1)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($GETUAI)"
  S(2)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($GETUAIDEF)"
  S(3)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($GETUAI_G)"
  S(4)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($GETUAI_S)"
  S(5)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($SETUAI)"
  S(6)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($SETUAIDEF)"
  S(7)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($SETUAI_G)"
  S(8)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($SETUAI_S)"
  S(9)="SYS$COMMON:[SYSLIB]STARLET.MLB;1($UAIDEF)"

  DIX> s= f$sear("*uaid*@starlet",,,,"ALL")     !and the other syntax
  DIX> show symb/all s
  S(1)="$GETUAIDEF@SYS$COMMON:[SYSLIB]STARLET.MLB;1"
  S(2)="$SETUAIDEF@SYS$COMMON:[SYSLIB]STARLET.MLB;1"
  S(3)="$UAIDEF@SYS$COMMON:[SYSLIB]STARLET.MLB;1"

DIX INTERACTIVE_COMMANDS FUNCTIONS F$SELECT_FILE


  Result = f$select_file(filename,selectfilename)

  Does the file 'filename' match all conditions defined in select_file
   pattern 'selectfilename'. This patterns must be define first via the
   add select_file command. For more info see the hep about add select_file

DIX INTERACTIVE_COMMANDS FUNCTIONS F$SETPRV


   old=f$setprv(newprivs)

   Newprivs : String containing the privileges names
              expression of type privilege

   Old : Old privileges of type "privilege"

DIX INTERACTIVE_COMMANDS FUNCTIONS F$SORT


   F$SORT(TABLE[,index],direction)

   Sort a table in memory, return a table of the same size

  Input : Table : A table of elements, can have any type
          Index : The element to sort on (for a multidimensional table
                   Index must have any dimension less than the table itself
          Direction: char: Either Reverse or forward (Default)

  Output : A table of the same size and type as 'table' sorted on the
            required field in the required direction

  Examples:

  DIX> say f$sort([[3,1][2,2][1,3]])    !sort on index 1
  [[1,3][2,2][3,1]]
  DIX> say f$sort([[3,1][2,2][1,3]],2)   !sort on index 2
  [[3,1][2,2][1,3]]
  DIX> say f$sort([[3,1][2,2][1,3]],1,"REV")    !sort on index 1 (reversed)
  [[3,1][2,2][1,3]]

DIX INTERACTIVE_COMMANDS FUNCTIONS F$SPLIT


  result = F$SPLIT(line[,separator],[option],[csvchar])

   Split a character line in substrings separated by
   Arguments

    Line : A (table of) character strings

    Separator:
     If separator is not present or contains "WHITESPACE" or is empty
                                       : whitespace (one or more space/tab)
     If separator contains "CSV"        : CSV file with csvchar as separator
                                         (default ,)
     If separator is present (type char) : if the length=1 : use
                                         separator as a split-character
     If separator is an integer, the line is split in 'value' size fields
     If separator is a table of integers, line is split in 'table' size fields
                  negative values are used to define fields that will not be
                  included in the result (see example)
    Option: A string
      LEFT     : Left justify the string
      RIGHT    : Right justify the string
      COMPRESS : Remove leading and trailing blanks
      KEEP     : Just leave it
     The default for option is
       COMPRESS For whitespace
       KEEP     For all other cases.

    csvchar: A string of 1 or 2 characters, only used if separator contains CSV
     first character  : The character to delimit the CSV fields, default is ,
     second character : The string terminator, default is "

  Examples:
    DIX> say/quoted f$split(" a   b     c  ")   !split by whitespace
    ["a","b","c"]

    DIX> say/quoted f$split("a,b,c",",")         !split by ,
    ["a","b","c"]

    DIX> say/quoted f$split("1234567890",4)      !split in 4 char parts
    ["1234","5678","90"]

    DIX> say/quoted f$split("1234567890",[4,2,4])  !split in 4,2,4 char parts
    ["1234","56","7890"]

    DIX> say/quoted f$split("1234567890",[4,-2,4])  !split in 4,-2,4 char parts
    ["1234","7890"]                         !but do not include the second field

    DIX> say/quoted f$split("12  56  90",[4,2,4])
    ["12  ","56","  90"]

    DIX> say/quoted f$split("12  56  90",[4,2,4],"C")
    ["12","56","90"]               !remove lead/trail spaces

    DIX> say/quoted f$split("12  56  90",[4,2,4],"L")
    ["12  ","56","90"]             !remove lead spaces

    DIX> say/quoted f$split("12  56  90",[4,2,4],"R")
    ["12","56","  90"]             !remove trail spaces

    DIX> say/quo f$split("|ab|;4;|cd|","CSV",,";|")
    ["ab","4","cd"]

DIX INTERACTIVE_COMMANDS FUNCTIONS F$STRING


   value=F$STRING(anyvalue[,hex][,format])

  Convert any type to a string
  F$string is a synonym for string.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$SUBTRACT

    F$SUBTRACT(str1,str2[,width])

   Str1 and str may be integer, real, string, decimal values, result is a string

  F$SUB will subtract str2 from str1 and return the result
  If width is not specified, the result will be as long as needed
  If width >0, the result will be blank filled in a string of length 'width'
  If width <0, the result will be zero filled in a string of length 'width'
  If width<>0 and the result does not match, result will be a string
    of 'width' *

  Example:
   SAY F$SUB("123","345")    ! Returns "-222"
       F$SUB("123","345",6)  ! Returns "  -222"
       F$SUB("123","345",-6) ! Returns "-00222"
       F$SUB("123","345",2)  ! Returns "**"
       F$SUB(1,12.3)         ! Returns "-11.3"

DIX INTERACTIVE_COMMANDS FUNCTIONS F$SUM


   F$SUM(table)

    Return the sum of all elements
    table can be a table of int or a table of real
    result has the same type as table

DIX INTERACTIVE_COMMANDS FUNCTIONS F$SYMBOL


  F$SYMBOL(name,what,[dimidx])

  Return info about a fieldname

  Name can be specified with or without quotes, but if name contains
  dimensions, name must be enclosed in quotes

  what can be
  EXISTS    : Return true or false whether the fieldname exists
  SIZE      : Returns the size (IN BITS) of the field
  TYPE      : The type of the field
  NDIM      : Number of dimensions

  For the next two items, a 3rd parameter can be used (the dimension index)
  F$FIELD(fieldname,what,dimidx)

  LOWDIM    : The low value for dimension 'dimidx'
  HIGHDIM   : The high value for dimension 'dimidx'
  INCREMENT : The increment value for dimension 'dimidx'

DIX INTERACTIVE_COMMANDS FUNCTIONS F$TABLE

    Value=f$table([TYPE],[bpos],[epos],[file])

   Return a one-dimensional table containing the element of the data record

   type : Char: The value BYTE (Default), WORD, LONGWORD
          Int : May also be specified as integer with value 1, 2 or 4
   bpos : int : Starting position (default 0)
   epos : int : End position (default reclen-1)
   file : char: The file, default the current

   If bpos or epos are negative, the value is considered to be relative
   to the end of the record, so f$table(,,-2) means the bytes 1..reclen-2
   (since we start at 0, the -1 is needed)

DIX INTERACTIVE_COMMANDS FUNCTIONS F$TIME


  The argument selects the part of the date/time to select.
  Syntax
   F$TIME([what[,time])

  Time can be either a string containing a valid OpenVMS date-time
  or a date type symbol. It time is not specified, the current date/time
  is used.

  Return value is character for

  F$TIME()           Date/time
  F$TIME("DATETIME") The date/time
  F$TIME("DCLDATE")  The date but the space between date and time is now a :
  F$TIME("DATE")     The date
  F$TIME("TIME")     The time
  F$TIME("MONTHASC") The name of the month

  Return value is integer for
  F$TIME("YEAR")           The year
  F$TIME("MONTH")          The month
  F$TIME("DAY")            The day
  F$TIME("HOUR")           The hour
  F$TIME("MINUTE")         The minute
  F$TIME("SECOND")         The seconds
  F$TIME("HUNDREDTH")      The hundredth

  F$TIME("MONTHOFYEAR")    Month of the year
  F$TIME("DAYOFYEAR")      Day of the year
  F$TIME("HOUROFYEAR")     Hour of the year
  F$TIME("MINUTEOFYEAR")   Minute of the year
  F$TIME("SECONDOFYEAR")   Second of the year

  F$TIME("DAYOFMONTH")     Day of the month
  F$TIME("HOUROFMONTH")    Hour of the month
  F$TIME("MINUTEOFMONTH")  Minute of the month
  F$TIME("SECONDOFMONTH")  Second of the month

  F$TIME("DAYOFWEEK")      Day of the week
  F$TIME("HOUROFWEEK")     Hour of the week
  F$TIME("MINUTEOFWEEK")   Minute of the week
  F$TIME("SECONDOFWEEK")   Second of the week

  F$TIME("HOUROFDAY")      Hour of the day
  F$TIME("MINUTEOFDAY)     Minute of the day
  F$TIME("SECONDOFDAY")    Second of the day

  F$TIME("MINUTEOFHOUR)    Minute of the hour
  F$TIME("SECONDOFHOUR")   Second of the hour

  F$TIME("SECONDOFMINUTE") Second of the minute
  F$TIME("JULIANDATE")     The Julian date

  F$TIME("DELTAWEEKS")     Delta weeks
  F$TIME("DELTADAYS")      Delta days
  F$TIME("DELTAHOURS")     Delta hours
  F$TIME("DELTAMINUTES")   Delta minutes
  F$TIME("DELTASECONDS")   Delta seconds

DIX INTERACTIVE_COMMANDS FUNCTIONS F$TRANSLATE


    F$TRANSLATE(source,translation,match)

 All inputs are character strings
 The result is a character string

  Translate all chars in source that are found in match to the
  corresponding char in translate. If translate is shorted than
  match, spaces are used. See the help about STR$TRANSLATE

  Example:

   DIX> say f$trans("kdjfkjasd","b","ak")
    djf jbsd

   All a's are replaced by "b"
   All k's are replaced by SPACE (since translate is shorted than match

DIX INTERACTIVE_COMMANDS FUNCTIONS F$TRIM

  F$TRIM(string) will remove all trailing blanks
  Argument and result are character

DIX INTERACTIVE_COMMANDS FUNCTIONS F$TRNLNM

   Translates a logical name and returns the equivalence name string
   or the requested attributes of the logical name specified.
   Format

     F$TRNLNM(logical-name [,table] [,index] [,mode] [,case] [,item])
   See the DCL help about this function

DIX INTERACTIVE_COMMANDS FUNCTIONS F$TYPE

  F$TYPE(name)

  Deliver the symbol type of an existing symbol

    (integer/real/character/logical/decimal/date)

  This statement looks like the DCL F$TYPE, but it's argument may also be
  a string between quotes.

DIX INTERACTIVE_COMMANDS FUNCTIONS F$UPCASE


  F$UPCASE(STRING)  Result is a string with all letters (a-z) uppercased.

  argument and result is character

DIX INTERACTIVE_COMMANDS FUNCTIONS F$USER

   F$USER() Result is a string with the UIC converted to ASCII

    DIX> say f$user()
    [BEHGROUP,STUBBF]

DIX INTERACTIVE_COMMANDS FUNCTIONS F$VECTIM


  Convert an integer to a date (like the LIB$CVT_VECTIM)

  F$VECTIM(table)                   Use a table of 7 words for all the
                                    fields (see the F$NUMTIM)
  F$VECTIM([year],[month],[day]...) Specify each field as integer
                                    The default is today 00:00:00.00

  Examples:

  DIX> A=F$NUMTIM(#DATE"1-JAN-2008")
  DIX> SAY F$VECTIM(A)          !format 1, use a 7 word integer table
  DIX> SHOW SYMB/FULL a
  A(Integer*4,Level=1.0)= table(7)

  DIX> show time                !format 2, specify normal integers
   2-APR-2008 16:18:18.02       !the default will be 2-APR-2008 00:00:00.00
  DIX> say f$vectim(,,30)       !replace the day
  30-APR-2008 00:00:00.00
  DIX> say f$vectim(,2,)        !replace the month
   2-FEB-2008 00:00:00.00
  DIX> say f$vectim(2010,,1)    !replace year and day
  1-APR-2010 00:00:00.00

DIX INTERACTIVE_COMMANDS FUNCTIONS F$VERIFY

  F$VERIFY([new_setting])

  Change the verify setting and return the old value (like DCL)

  New_setting : Integer or logical the new setting
                If new_setting is not specified, the VERIFY
                setting is not changed
  Returns     : Logical the old setting

  Example:

  old_setting = f$verify(true)
  ....
  ....  ! Statements with verify on
  ....
  k = f$verify(old_setting)

DIX INTERACTIVE_COMMANDS FUNCTIONS %BLOC


  %BLOC("fieldname"[,"where"])
  Gives the offset of a field in the data record in bits.
  Where can be
   NORMAL : Look in the normal data
   VFC    : Look in the VFC data
   BOTH   : Look in both (Default)

  Example:
  des record for sysuaf
    ...
    ...
    integer*2 uaf$w_logfails
    ...
  end record
   %BLOC("UAF$W_LOGFAILS") will return 2848 (8*356)

DIX INTERACTIVE_COMMANDS FUNCTIONS %DATA

   %DATA([where],[tag])

   Returns a string value containing the current record.
   This value can be saved in a symbol to perform a CUT/PASTE
   function.
   Arguments
     where : char : The part of the file DATA, SAVE, VFC, VIEW
     tag   : char : The tag of the file. The default is the current file

   Example:

   DIX> a=%DATA()        !Save the current record contents
   DIX> .. modify record  !do a log modifications
   DIX> PASTE/SYMBOL=a    !Returns the record to its previous state

DIX INTERACTIVE_COMMANDS FUNCTIONS %EOF


   %EOF([tag])

   Return true if file is at End_of_file. Tag is default the current file.

   DIX> open tag sysuaf
   DIX> while not %eof()     ! Or %eof("TAG")
   DIX> say uaf$t_username
   DIX> next rec
   DIX> end while

DIX INTERACTIVE_COMMANDS FUNCTIONS %LOC/%BLOC


  %LOC("fieldnamemask"[,"where"])
  Gives the offset of a field in the data record in bytes.

  %BLOC does the same, but now returns the value in bits, this may be needed
        for fields in bitmode.

  Where can be
   NORMAL : Look in the normal data
   VFC    : Look in the VFC data
   BOTH   : Look in both (Default)

  Example:
  the record for sysuaf
    ...
    ...
    integer*2 uaf$w_logfails
    ...
  end record
   %LOC("UAF$W_LOGFAILS")  ! Will return 356
   %BLOC("UAF$W_LOGFAILS") ! Will return 2848

DIX INTERACTIVE_COMMANDS FUNCTIONS %RECORDNUMBER


  %RECORDNUMBER([tag])

  Return the current record number of a file

  tag is the optional filetag, default is the current file

  The record number is unknown after a keyed read, DIX will return a -1.

DIX INTERACTIVE_COMMANDS FUNCTIONS %RECORDSIZE


  %RECORDSIZE([what],[tag])

  Return the record size of the data in what
  If what is
    "DATA"  Data buffer
    "SAVE"  Save buffer
    "VFC"   VFC buffer
    "VIEW"  View buffer

    The default is data buffer if the file has no views
            or view buffer if the file has views
  tag is the optional filetag, default is the current file

DIX INTERACTIVE_COMMANDS GOMARK


  GOMARK markname

  Return to a previous mark set by MARK.

DIX INTERACTIVE_COMMANDS GREP


    GREP[/qualifiers] MASK "command"
  Execute command and display only those lines that match 'mask'

  Qualifier can be
   /WILDCARD=value
     This qualifier decides how 'mask' should match the output line
     /WILDCARD=none
     /WILDCARD=standard
     /WILDCARD=extended
     If you only specify /wildcard, the /wild=standard is default
     If you do not specify /wildcard, 'mask' must occur in the line

   /REVERSE           Print only the line that do not match 'mask'

   /HIGHLIGHT=(flag[,flag...])
   /CASE_SENSITIVE    'mask' is matched in a case sensitive way

   The /HIGHLIGHT can be
     any colour from (only one allowed)
      BLACK,BLUE,CYAN,GREEN,MAGENTA,RED,WHITE,YELLOW
     and any colour modifier (multiple allowed)
       BLINK,UNDERLINE,BOLD,REVERSE

      To display the colours the terminal must be able to display ansi colours
  This is a one line "set output_filter" command

 Examples:
  Suppose we have a SYSUAF record present
  DIX> grep acco examine                !display lines that have acco
  52.0 |UAF$T_ACCOUNT     |AP_HTTPD    !in them
  576.0|UAF$W_ACCOUNT_LIM |0
  578.0|UAF$W_ACCOUNTS    |0

  DIX> grep *user* examine             !display lines that have *user* in them
                                       !no match
  DIX> grep/wild *user* examine        !display lines that match *user*
  4.0|UAF$T_USERNAME      |APACHE$WWW  !this matches

DIX INTERACTIVE_COMMANDS HELP


  HELP[/QUALIFIERS] [HELPTOPIC[/QUALIFIERS] [HELPTOPIC...]]

  Display help, you are doing it now.
   This will the commands available in interactive mode.

  The following qualifiers are supported with the HELP command

   /TOP   Display help about all DIX functionality, not
           just the interactive commands.
   /DCL   Display the contents of SYS$HELP:HELPLIB.HLB
           instead of the DIX help library.
   /DECW  Display the help in a DECwindow window.
           This requires the availability of DECwindows
           and a freeware package FSHELP (see below)

  DIX will use the LBR$OUTPUT_HELP routine. If you also have the
  FSHELP freeware package installed (available on the same website),
  DIX will use the FSHELP_SHR inclusive a DECwindows interface.

DIX INTERACTIVE_COMMANDS IF

  Syntax
  The IF command is present in the following formats

  1. IF logical_expression command
        If the expression evaluates to true, execute command.
  2. IF logical expression THEN command
        If the expression evaluates to true, execute command.
  3. IF logical expression [THEN] 
     [ELIF logexpression [command] 
      command
     [ELIF logexpression [command]
      command ]
     [ELSE [command]
      command]
     ENDIF
       If the expression evaluates to true, execute the IF part
       if one of the ELIF expressions is true, execute that part
       else execute the (optional) ELSE part
     The ELSE part does not need to be the last , but it is is more 
       efficient to place it there
   
  4. IF logical expression            !now else not the last, also works
     THEN [command]
      [command]
     [ELSE [command]
      command]
     [ELIF logexpression [command]
      command]
     ENDIF
       If the expression evaluates to true, execute the IF part
       if one of the ELIF expressions is true, execute that part
       
       else execute the (optional) ELSE part

  If you type the command format 3 or 4 from the terminal
  (instead from a command file) DIX will prompt you for more lines
  until the ENDIF command is found, and then will execute the commands.

  See the help about [DIX/HELP] interact expressions

![DIX inter expression]help about expressions
  See also the help about the LEAVE command

DIX INTERACTIVE_COMMANDS INQUIRE

  INQUIRE symbol [prompt] [qualifiers]

   Read a value from the terminal, and assign it to the symbol.
   The value of the expression determines the type of the symbol.

   Prompt is the (optional) prompt string, default "Data"

   Qualifiers can be
   /[NO]PUNCTUATION (Default) : Add a ": " to the prompt string.

   /EXPRESSION : The input will be evaluated as an expression
                 By default the input will be returned as a string

DIX INTERACTIVE_COMMANDS INTEGER-UINTEGER

   INTEGER[*size] [/type=enum_type][/level=n][/global] name[dimensions][=value]
   UINTEGER[*size] [/type=enum_type][/level=n][/global] name[dimensions][=value]

   Declare a new symbol of type "[U]INTEGER" and optionally give a value.
   The value must be of type "integer"
   See the help about [DIX/INT] interact declaration for the enum_type

   /LEVEL=n  : Declare symbols at level n (0=global,1..depth=absolute level
                                           -1..-depth) is relative level

   If size is specified (in the format bytes[.bits]), the symbol is
    limited to this size, the default size=4[.0]

  Example:
   INTEGER counter=10
  See the help about [DIX/HELP] interactive declaration

   DIX> INTEGER*0.4 count    !declare a 4 bits integer.
                             !It can only have values 7..-8
                             !an uinteger*0.4 may have values 0..15
   DIX> count=7              !this fits
   DIX> count=17             !this does not fit
   %DIX-E-TOOBIG, Data does not fit in 4 bits(signed)

DIX INTERACTIVE_COMMANDS LEAVE


  Leave the current block (IF,FOR,REPEAT,WHILE) and
  start with the statement just after this block.
  The LEAVE command can only be executed within a block.

DIX INTERACTIVE_COMMANDS LIBRARY


  LIBRARY/LIST[=filename]/[/ONLY=(mask[,mask...])]  [libnam]    List topics
  LIBRARY/EXTRACT[=(modname[,modname...])]  [libnam]            Extract topics

  The libraryname can either be specified in the libnam parameter (p1)
  or via the qualifiers.
  /MACRO   Libraryname = SYS$LIBRARY:STARLET.MLB
  /OBJECT  Libraryname = SYS$LIBRARY:IMAGELIB.OLB
  /TEXT    Libraryname = SYS$LIBRARY:SYS$STARLET_C.TLB
  /HELP    Libraryname = SYS$HELP:HELPLIB.HLB

DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers


DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers /date


  For the /LIST only.

  Print the insertion date after the name.

DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers /size


  /SIZE
  /SIZE=bytes
  For the /LIST only.

  Print the module size after the name.
  If /SIZE=bytes print the size in bytes, else in blocks

DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers /full


  For the /LIST only.
  Print the size and insertion date after the name
  If you want the size in bytes, add the /size=bytes

DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers /output


  /output=filename
  /output=sys$output (Default)

  Redirect the output to file 'filename'
  If you have and .OLB library, this qualifier should be present.

DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers /header


 If you specify the /header, DIX will add extra info to the output
 For the /list command extra info about the library itself will be printed
   (like the DCL library/list) and a total count.
 For the /extract each module will be preceded by a line that contains
   the module name, and a total count.

DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers /paged


  If output to screen, do it by page

DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers /screen


  Display the data in screen mode

DIX INTERACTIVE_COMMANDS LIBRARY Qualifiers /width


 Set the width of the output. The default is the size of the terminal (SYS$OUTPUT)
  or 80.

DIX INTERACTIVE_COMMANDS LOAD


   LOAD filename [/log]
   LOAD library /module=name [/log]

   LOAD/MESSAGE [leadin]
   LOAD/FUNCTION filename[/module=name]
   LOAD/DESCRIPTION description[/log]
   LOAD/STRUCTURE description[/log]

  If no qualifier is specified (or only the /module)

    Load all parameter definitions from a file or a module in a .TLB/.MLB
    file. DIX recognises 3 formats in the file or module

     a. The Fortran type : PARAMETER name=value
     b. the macro type   : $EQU name value
     c. The C type       : #define name value

   Filename may also be specified as
    module@[library] or as [library](module)
    In this case do not specify the /module qualifier

    The default for the filename is:
                     [].TXT
    The default for the library is:
           first try using a default file
              SYS$LIBRARY:STARLET.MLB and
           then try using a default file
              SYS$LIBRARY:FORSYSDEF.TLB

    Example:
    DIX> LOAD FORSYSDEF/MODULE=$SYIDEF     !load all (Fortran) definitions from SYIDEF
    DIX> LOAD SYS$STARLET_C/MODULE=$ACCDEF !the same from the C definitions file
    DIX> Load mydefs                       !load the file mydefs.txt
    DIX> load /module=$SYIDEF              !load from STARLET.MLB

    /LOG will report the number of symbols loaded from each module
    /LOG=FULL will report all symbols loaded

DIX INTERACTIVE_COMMANDS LOAD LOAD_MESSAGE


   LOAD/MESSAGE[/LEVEL=level][/GLOBAL] [leadin]

   If the /message is given, DIX will create parameters for
   all the dix_messages. You can use the parameter names
   with a F$MATCH_COND to determine the actual error
   The name of the message is used, prefixed by leadin (default to DIX$_)

   /LEVEL=n  : Load parameters at level n (0=global,1..depth=absolute level
                                           -1..-depth) is relative level
   /GLOBAL   : Load at level 0 (the global level)

   The default is the current level

    DIX> LOAD/MESSAGE
    DIX> some illegal command
    DIX> if F$MATCH_COND($STATUS,DIX$_FILNOTF) goto someplace

   The messages are loaded with a severity of 0 (warning). You may also use
    the message codes in an exit statement, and add the severity

   Example (after a LOAD/MESSAGE is executed):

     DIX> exit DIX$_CLINOCMND   !will return the warning severity
     %DIX-W-CLINOCMND, No command on line - reenter with alphabetical first character
     DIX> exit DIX$_CLINOCMND +4  !will return the fatal severity
     %DIX-F-CLINOCMND, No command on line - reenter with alphabetical first character
     DIX> exit DIX$_CLINOCMND +1  !will return the success severity
     %DIX-S-CLINOCMND, No command on line - reenter with alphabetical first character

DIX INTERACTIVE_COMMANDS LOAD LOAD_FUNCTION


  LOAD/FUNCTION filename[/module=name] [/log][/level=n][/global]

   If /module is not present, filename must be a file (default .DIX)
   If /module is present will look up a text module in filename (.TLB)

   Load (user-written) function definitions. They can be used in
    expression in the same way as the built-in functions (F$...)

   Functions are defined at the current command_file level, unless
    /global   : Define at level 0 (global)
    /level=n  : Define at level n (if n positive) or level+n (if n negative)
   If a level is closed (exit statement), DIX will delete all functions
    for that level.

  The file/module must have the following contents
  All comments (after the !) are ignored
  Empty lines are ignored

  FUNCTION name[/type] [argument[/type]...
  statements
  END FUNCTION

  There may be more than one function in a file/module

  The first line must contain the function definition

  name     : The name of the function, with optionally the type
  argument : A list of argument names, split by, or space
              and optionally followed by a type

   If the arguments are typed, DIX will check if the
    calling parameter has the same type. If the argument is not
    typed, DIX will accept all types, and the function can
    ask the type of the argument via F$TYPE() and act on it.

  Somewhere in the function there must be an assignment to the
  function name

  Example:

   DIX> LOAD/FUNC SYS$INPUT             !load the function
   DECK
   !Comment
   FUNCTION MYFUNC/INTEGER arg1/INT arg2/CHAR    !name/args
   if arg2 = "-" then                            !start of code
     myfunc = arg1 - 10                          !assign value (of type integer)
   else
     myfunc = arg1 + 10
   endif
   end function                                  !end of function
   EOD
   DIX> SHOW function myfunc/fu/source           !display it
   MYFUNC/INTEGER (Level 1, 2 parameters, 5 lines, used 0 times)
    Parameters
     ARG1/INTEGER
     ARG2/CHARACTER
    Source file SYS$COMMAND:.;
        !Comment
        FUNCTION MYFUNC/INTEGER arg1/INT arg2/CHAR
        if arg2 = "-" then
          myfunc = arg1 - 10
        else
          myfunc = arg1 + 10
        endif
        end function
   DIX> say myfunc(10,"+")                       !and use it
   20
   DIX> say myfunc(10,"-")
   0
   DIX> say myfunc(10,true)
   %DIX-E-WRARGTYP, Wrong argument type for function MYFUNC, argument 2
   %DIX-E-INVELEM, Invalid element "MYFUNC(10,TRUE"

DIX INTERACTIVE_COMMANDS LOAD LOAD_DESCRIPTION


   Load/description descriptname

   Normally a description is loaded as soon as a file needs it.
   You can also load a description explicitly. This might be useful
   if you want to declare a description type symbol. For more info
   see the help about symbols

DIX INTERACTIVE_COMMANDS LOAD LOAD_STRUCTURE

   LOAD/STRUCTURE [/quals] name[,name...]

   Load one or more structures into memory. These structures can be used to
   declare symbols (of the structured type).

   Name is a (mask of) filenames or modules in one of the DIX_DES.TLB files
        or any .MLB or .TLB file.

   Qualifiers can be
      /PARAMETERS  : All parameter statements in the structure file/module
                     Will be stored in the parameter table.
      /LOG         : Log the addition of the structures (and the parameters)
      /LEVEL=n     : Load parameter at the command level n.
                     n>0 is absolute level, n<0 relative to the current
                     n=0 the global level
      /GLOBAL      : Load at global level is the same as /level=0
      /INTEGER_SIZE: For Fortran files, the default integer size
                       4,8,32,64, default is 4 on VAX, 8 on Alpha, IA64
      /REAL_SIZE   : For Fortran files, the default real size
                       4,8,16,32,64,128 default is 4

   In the .TLB files the module name is STRU#name
   For filenames the default file type is .STRUCT
   All text after a ! is seen as a comment, and completely blank lines are ignored.

   A structure file/module has 2 formats

   1. Contains only the following statements
      a. data defintions (including dimensions)
      b. RECORD /struct_name/ prefix
         Include an already loaded structure "struct_name"
   2. Each structure is enclosed between
        STRUCTURE /NAME/          NAME is used as structure name
        END STRUCTURE
      In this case all lines before the first STRUCTURE
      and between ENDSTRUCTURE and the following STRUCTURE are ignored.
      In this format you can define multiple structures in one file

   Example for format 1:
    $ type mystruct.struct : The structurename will be mystruct
     !
      integer*4 index
      character*40 mystr
      real*16 real16val
      integer extra_int
      integer*4 extra2(2,3)

   Example for format 2:
   $ type multstructs.struct
    !
    structure /def_main/    !define structure def_main
     integer*4 index
     character*40 mystr
     real*16 real16val
     integer extra_int
     integer*4 extra2(2,3)
    !
    end structure
    !
    structure /def_deep/   !define structure def_deep
      integer*4 i4val
      record /def_main/ mystruct !it includes a reference to def_main
      real*4 real4val
    end structure

DIX INTERACTIVE_COMMANDS LOGICAL

   LOGICAL[/level=n][/global] name[=value]

   Declare a new symbol of type "LOGICAL" and optionally give a value.
   The value must be of type "logical"

  Example:
   LOGICAL debug=false

  See the help about [DIX/HELP] interactive declaration

DIX INTERACTIVE_COMMANDS LOOP_TESTLOOP_ENDLOOP


  The more general form of the while/endwhile and the repeat/until.
  This allows the test to occur at any place in the repeat loop.

  LOOP
    [statement1(s) ]
  TESTLOOP logical_expression
    [statement2(s) ]
  ENDLOOP

  The loop/endloop is a block of statements. The TESTLOOP decides
  whether the loop will be exited. If the logical_expression evaluates
  to false, the loop is exited.

  Example:

  $ DIX/INT SYSUAF
  SET NOON
  NREC=0
  LOOP
    NEXT RECORD
  TESTLOOP LOGICAL($STATUS)
    SAY "Username = ",uaf$t_username
    NREC = NREC + 1
  ENDLOOP
  SAY "#Records = ",nrec
  EXIT

  See also the help about the LEAVE and the CYCLE command
  If you type the command from the terminal (instead from a command file)
  DIX will prompt you for more lines until the ENDLOOP command is found,
  and then will execute the commands.

DIX INTERACTIVE_COMMANDS MARK


  MARK [markname]

  Place a marker on this record. You can return to this record via the
  GOMARK command. The default markname is DIXMARK

  Example:

  MARK this_rec

  command
  command
  ...

  GOMARK this_rec               !return to the record of the MARK

DIX INTERACTIVE_COMMANDS MOVE


   MOVE file1[\descr_tag] file2[\descr_tag] [/field=mask] [/log]

   Move the contents of fields in file1 to fields with the same name
   in file2. file1 and file2 are file tags. By default the current
   description is used, but you may override it with the \descr_tag.

   If the fields have the same type and size, this is a binary move,
   else the data will be converted to ASCII and back to binary
   this allows you to move a text field (with digits) to a binary integer

   By default, all the fields from the file1 with a matching name in file2 are
   copied, but you may restrict it using the /field=mask.
   If you specify /LOG, DIX will display the fields moved.

  Example:

   Suppose file1 has a current description like

    CHARACTER*10 name
    CHARACTER*2  tag
    INTEGER*4    field1
    INTEGER*4    field2

  And file2 has a description of
    CHARACTER*20 name
    INTEGER*4    field2
    CHARACTER*2  tag
    INTEGER*8    rest

   the command "MOVE file1 file2"

  Will result in
    file2\name will be filled with file1\name via conversion
    file2\field2 will be filled with file1\field2 via binary copy
    file2\tag will be filled with file1\tag via binary copy
    file2\rest will be initialized to 0

   So you could write a conversion script

      open file1 [/des=des1]    !open source
      open file2/create/modify [/des=des2]   !create target
      cnt=0                     !initialize counter
  lp: crea/ record file2        !create new empty record
      move file1 file2          !move the common fields
      cnt=cnt+1                 !update count
      file2\rest = cnt          !fill the count field
      update file2              !write to file2 (target)
      read file1/end=done       !read the next record from source
      goto lp                   !keep going
  done:
      close file2               !close both files
      close file1

DIX INTERACTIVE_COMMANDS NEXT


  Syntax : NEXT [what]
  Via the NEXT command you can select the NEXT record, file or description.

  NEXT [RECORD]        : Read the next record of the current file
  NEXT FILE            : Select next file
  NEXT DESCRIPTION     : Select next description of the current file.
  NEXT RECORD Tag      : Read the next record of file with tag 'tag'
  NEXT RECORD /[NO]FAST: Read the next record using Fast I/O. This overrides
                         the default of Fast I/O mode for the file
                         See the help for SET FILE/FAST/DEFAULT=FAST

  If you use the next [record] command, and the file has an associated
  search pattern, DIX will find the next record matching this search pattern

DIX INTERACTIVE_COMMANDS ON

 
  On condition [then] command

  Execute the command if condition is found (mostly in procedures)

  The them part is optional

  Condition can be
   Warning
   Error
   Severe_error
   control_y 

DIX INTERACTIVE_COMMANDS OPEN


  Open more files.
  The open command has two syntaxes

  1. OPEN[/qualifiers] file[/qualifiers]
  2. OPEN[/qualifiers] tag file[/qualifiers]

  Tag is a symbol that can be used to reference the file to.
  Most file commands use the current file, but if you specify a tag
  you can execute the command for a non-current file. DIX will append
  a sequence number to the tag if it is not unique.
  If you do not specify a tag, DIX will assume tag FILE, and append
  a sequence number to make it unique.

  In DIX mode
    Open will automatically read the first record, so there is a current
    record, unless the user specifies a record selection qualifier.
  In dcl_compat mode
    Open does not read the first record in case 2.
    In case 1 DIX WILL read the first record (NOT DCL compatible anyway)

  Example:

  $ DIX/INTERACTIVE
  DIX> OPEN vaxdir vax.dir      !open the file vax.dir and make it current
  DIX> OPEN alphadir alpha.dir  !open the file alpha.dir, but vax.dir will
                                !remain the current
  DIX> NEXT RECORD alphadir     !read the next record of alpha.dir, but
                                !vax.dir will remain the current file
  DIX> SELECT FILE alphadir     !now alpha.dir is the current
  DIX> CLOSE vaxdir             !close vax.dir
  DIX> CLOSE                    !close the current file (alpha.dir)

  DIX> OPEN test test.dat/ge="Test"/key=1
      Open the file test.dat and (try to) read record with key GE "Test" on key 1

DIX INTERACTIVE_COMMANDS OPEN Qualifiers


DIX INTERACTIVE_COMMANDS OPEN Qualifiers /APPEND


  Opens an existing file for writing and positions the record
   pointer at the end-of-file (EOF). New records are added to the
   end of the file.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /BLOCKED

  /BLOCKED[=blocksize]
  /BLOCKED[=blocksize.bytesize]

  If the /BLOCK qualifier is specified, the file is accessed via block I/O.
  You can either specify a number, this will interpreted as a number of
  disk blocks, or a block.byte where you can specify part of one or more
  blocks. The total size cannot exceed 65535.

  The data transfer to and from the file is done via a blocksize bytes, and
  no record structure is assumed. This method can destroy file/record
  integrity and should only be used if you know what you are doing.
  Blocksize is default 1 (512 bytes if you specify /BLOCKED).
  It can be useful for files with undefined record type (as the DUMP file).

  Examples:

  DIX> OPEN filename/block=4     !use a block size of 4*512 bytes
  DIX> OPEN filename/block=0.32   !Use a blocksize of 32 bytes
  DIX> OPEN filename/block=2.32   !Use a lblocksize of 1056 (2*512+32)
  DIX> OPEN filename/block=0.1056 !the same as above

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /CREATE

  Used to create the file. For extra security you must also specify the
  /modify qualifier. You may specify an FDL file via the /FDL=file
  qualifier. If you do not specify /FDL, a variable length sequential
  file will created.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /DEFAULT

  /NODEFAULT   (Default)
  /DEFAULT
  /DEFAULT=filename

  Use 'filename' as default name for the file to be opened
  If /default is specified without a value, the name of the
   current file is used
  If you do not specify /default (or specify /nodefault) the default will
   be SYS$DISK:[CURRENT_DIRECTORY].DAT

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /DESCRIPTION

  /DESCRIPTION[=name[,name]]
  Give the name of a record description file(s) or module.
  For more help see the DIX /DESCRIPTION help

![DIX DESCRIPTION]DIX /description help

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /ERROR

  /ERROR=label

  If the OPEN results in an error, DIX will jump to the label.
  If the /ERROR qualifier is not specified, DIX will look for the ON condition.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /FDL

  /FDL=filename
  Used with the /CREATE option. DIX will create the file using the FDL file
  for a specification. See the /CREATE qualifier

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /GLOBAL

  Open the file at global level. This is the default.
  You may open the file at any (procedure) level via the /LEVEL qualifier

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /KEY

  /KEY=nr

  Look for the keyvalue on the specified key. The default is the
  primary key (0).
  If none of the LT,LE,EQ,GE,GT options is specified, the program
  will start with the first record on the specified key.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /LEVEL


  /LEVEL              !open at this level
  /LEVEL=n            !open at level 0 (global) .. n (the current level)
  /LEVEL=-n           !open at level -1 (the previous level)..-n (max=depth)

   Open the file at a specific level.
   If you open a file at a specific level, DIX will close the file if that
   level is closed. It is good programming practice to close all files
   that are opened in a procedure, but this is the easy way.

  Examples:
    DIX> @myproc

  And myproc.dix contains the following statements
   OPEN LUN FILE/LEVEL    !open at this procedure level
   EXIT                   !and exit to the previous level. At this point
                          !the file is closed.

  If the /LEVEL would not have been specified, the file would
   have been opened at global level at thus would remain open.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /LT

  /LT=value

  Look for a record with keyvalue LT the specified value.
  This qualifier is valid for descending keys. Information about the
  key types can be obtained via the /INFO qualifier.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /LE

  /LE=value

  Look for a record with keyvalue LE the specified value.
  This qualifier is valid for descending keys. Information about the
  key types can be obtained via the /INFO qualifier.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /EQ

  /EQ=value

  Look for a record with keyvalue EQ the specified value.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /GE

  /GE=value

  Look for a record with keyvalue GE the specified value.
  This qualifier is valid for ascending keys. Information about the
  key types can be obtained via the /INFO qualifier.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /GT

  /GT=value

  Look for a record with keyvalue GT the specified value.
  This qualifier is valid for ascending keys. Information about the
  key types can be obtained via the /INFO qualifier.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /LOG


  Display a message when opening the file.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /LOCKING

  /LOCKING=(val,val...)

  Val can be
  RRL      : Read all record with the RAB$M_RRL option. This means that even
             if the record is locked by another stream, DIX can read it.
             The usage is at your own risk, since any other user can
             modify the data you are looking at (and possibly change).

 OPTIMISTIC: DIX will read the record with the RAB$M_NLK option. The record
             is read, but not locked. Other streams can read the data.
             When you want to update a modified record, DIX will check if
             the record still contains the original data, and if not
             warn you, and give you the option to not modify the record.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /MEMORY


  Load the file in a memory table (readonly)
  You can still read all records as if it a normal file

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /MODIFY


  If the /MODIFY qualifier is specified, you are allowed to modify
  /delete/insert records, Either in raw mode (BYTE_OFFSET=VALUE) or
  in interpreted mode (file_name=value). If /MODIFY is present
  /INTERACTIVE is assumed.

DIX INTERACTIVE_COMMANDS OPEN Qualifiers /RECORD

  /RECORD=number

  Give the record number to read.
  If the number is negative, start at 'number' before EOF.

DIX INTERACTIVE_COMMANDS Overflow_detection-signaling


  If DIX encounters an arithmetic overflow, DIX will output the
  message %DIX-E-AROVERFL, Arithmetic overflow occurred
  and stops processing the command. So if you were multiplying
  a table with a scalar, and one of the elements overflowed,
  DIX will not process the following elements, and return the error
  and not the result.

  You may enable or disable the overflow detection via the
   "set overflow en|disabled" command

  If you have overflow disabled, and you are processing a table a
  table, DIX will continue after one of the elements overflowed,
  but is unpredictable which element overflowed

  You can also set a trap on overflow detection with the
   "ON OVERFLOW 'command' "

  You can also test if the previous command had an overflow via
  the %OVERFLOW special symbol

  Examples:
  DIX> say 1000000*1000000              !overflow detection on
  %DIX-E-AROVERFL, Arithmetic overflow occurred
  DIX> say %overflow
  True
  DIX> set over disabled
  DIX> say 1000000*1000000      !overflow detection off
  -727379968                    !DIX return an answer (but it overflowed)
  DIX> say %overflow
  True

  DIX> ON OVERFLOW goto ov_detected
  DIX> a=100000*100000
  DIX> say "No overflow detected, value=",a
  DIX> exit
  DIX> ov_detected:
  DIX> say "Overflow was detected"

DIX INTERACTIVE_COMMANDS PARAMETER


   PARAMETER[/log] name=value
   PARAMETER[/log][/delete] mask

   Define (or delete) a global parameter.
   Since the value can contain /'s the qualifiers must be specified
   before the name or mask

   See also the help about LOAD (load the parameters from a .TLB/.MLB file)

DIX INTERACTIVE_COMMANDS PARSE


  Parse a line using a CLD table. This is the CLI$DCL_PARSE function.

  PARSE[/symbol=symbolname][/strict]/[address=number] Command

  Parse a command according a CLD table.
  You can specify the CLD table in 3 ways:

   /symbol[=symbol]: This symbol must be filled by a compile[/table=symbol]
                     command first. Symbol defaults to DEFAULT_CLDTABLE.
   /address=nnnn   : Give the memory address of a CLD table. You can specify
                     the DCL Tables in p1 space. You can find the address using
                     $ ANALYZE/SYSTEM
                     SDA> show symb CTL$AG_CLITABLE        !find DCL Tables in P1 space
                     CTL$AG_CLITABLE = 00000000.7FFCD810 :  7AEF35FF.7AE40000
                     $ DIX
                     DIX> PARSE/ADDRESS=%X7AE40000 COPY    !Parse the copy command
    /DIX           : Use the DIX command tables.

   If you specify /strict, DIX will complain if you inquire about tokens that
    are not defined in this command via the F$DCL_PRESENT or the F$DCL_GET_VALUE
    function (unless you specify the Slack parameter with these functions)

   If you do not specify /strict, DIX will return false / empty string and
    not signal an error.

DIX INTERACTIVE_COMMANDS PASTE

  PASTE[/qualifiers] [TAG][/symbol=symbolvalue]

  Restore current record values from save area (clipboard) or from a
  symbol, where it is placed with the CUT or COPY command.

  Qualifiers can be
  /SYMBOL=expression  Read the data from an expression. This expression
                      must return a value of the type char.
  /DCL          The symbol name is a DCL symbol. There are limitations on DCL
                symbols, and if you exceed them, you will see an error
  /GLOBAL       The DCL symbol is a global.

  If the file is a VFC file, and the /symbol is present, 2 symbols are used
  1. symbolname     : containing the record data value
  2. symbolname_VFC : containing the VFC data
  If either of them is not present, the command will fail

  Normally you would use this command with
  PASTE/SYMBOL=symbolname, where the symbol was previously filled with
  CUT/SYMBOL=symbolname.

  TAG is optional. If not specified the current file is used, otherwise
  the file specified by 'TAG' is used.

  Be careful: The value of /symbol is an expression, and all qualifiers
              in the string after the /symbol are considered a part
              of the expression.
    paste/symbol=symbol/dcl     Will not work.
    paste/dcl/symbol=symbol     Will work.

DIX INTERACTIVE_COMMANDS PLOT


   PLOT[/qualifiers] yvalue[/qualifiers][,yvalue[/qualifiers...]
   PLOT/PIE[/qualifiers] yvalue[/qualifiers][,yvalue]/qualifiers...]
   PLOT/T4[/qualifiers] filenamemask[,filenamemask]/qualifiers...]
   PLOT/CSV[/qualifiers] filenamemask[,filenamemask]/qualifiers...]

  PLOT can display data in a DECwindows display (this requires DECwindows),
       and also output to a Postscript file, that can be printed.

  yvalue(s) must be an expression of type integer or real or delta times/dates
   If there are more than one, they all must have the same number of
   values in the first dimension. If they are multidimensional,
   DIX will process this as more than one plot dataline.
    So if y=table(10,3), plot y will result is 3 datalines of 10 points each.

   You can mix real and integers, but not deltatimes. All expressions must
   be EITHER a mix of real and integer OR delta times.
   A datatype of date is also allowed as long as all elements are delta times.

  yvalue can also be a filename, preceded by an @. In this case
   DIX will open the file (default file type .CSV) and process the contents
   See the help about file_format for the syntax.

  For the PLOT/PIE all values must be integer or real (and not negative).
   DIX will plot a pie chart using the /legend expression to specify the
   data labels. The 9 largest items will be plotted, all others will be
   totaled in a total pie. You can specify more than one pie chart in a
   window, DIX will choose the distribution in the screen depending on the
   size of the window.

  If you specify the /CSV qualifier, DIX will assume that the data file(s)
   is a CSV file. You can use the /FLAG qualifier to specify some CSV
   specific values.Filenamemask can result in multiple files, DIX will
   read and process them all.

  If you specify the /T4 qualifier, DIX will read the T4 filenamemask and
   plot that data (like TLVIZ on windows). Filenamemask can result in multiple
   files, DIX will read and process them all. The filename can also point to
   a .ZIP file and optionally files in the .ZIP. For this to work the UNZIP
   utility must be present, and the symbol UNZIP pointing to it
   see the /T4 help for more info

  DIX will plot all values (or T4 or CSV files) in the same DECwindows display
   unless you specify /new_window or /separate.

  In each window up to 32 data windows can be displayed in up to 4 columns,
   although the reasonable limit is also defined by the screen height/width.
   See the /data_windows qualifier.
   In each data window you can display any number of data-items.

  The following qualifiers are supported

DIX INTERACTIVE_COMMANDS PLOT Examples


  DIX> y=[10,20,30,40,50,10,20]   !create a table of 7 values
  DIX> plot y                     !draw a DECwindow plot with equidistant
                                  ! x values
  DIX> x=[2,5,7,8,10,30,60]       !make an x table
  DIX> plot y/x=symbol=x          !draw a plot with x as the x values, and
                                  ! y as the y values (they must have an equal number
                                  ! of values
  DIX> PLOT @filename             !open filename[.csv] and read the contents

  DIX> y=[[2,5,7,8,10,30,60][2,5,7,8,10,30,60]]  !create a 2-dimensional value
  DIX> plot y                     !plot y (this will generate 2 lines)

  DIX> y=[2,5,7,8,10,30,60]       !create a table
  DIX> y2=[10,20,30,40,50,10,20]  !create a table
  DIX> plot y/attr=label=val1,y2/attr=label=val2
                                  !plot 2 lines, and the legend now displays val1/val2
                                  !instead of y,y2
  DIX> plot y/attr=(label=val1,colour=gray20),y2/attr=(label=val2,colour=gray10)
                                  !plot 2 lines, and set the colours explicitly
  DIX> PLOT/T4 t4filemask         !Plot a T4 file

  DIX> PLOT/PIE [10,20,30,5,10]   !Plot a pie chart of 5 values, Val 1..Val 5
  DIX> PLOT/PIE [10,20,30,5,10]/legend=["v10","v20"] !the same plot, but now
                                  !the first two values (10 and 20) are named
                                  !v10 and v20
  DIX> PLOT/PIE [[10,20,30,5,10][76,43,23,12,34]]/label=(p1,p2)
                                  !plot two pie charts in one window, named
                                  !p1 and p2. The values have the name
                                  !value_1..value_5
  DIX> PLOT/PIE @filename         !open filename[.csv] and read the contents

DIX INTERACTIVE_COMMANDS PLOT file_format


  DIX can open a file to read the data instead of the command line
  The default file type is .CSV

 DIX/plot @filename
  DIX/PLOT/PIE @filename

  In the file DIX supports the following lines

  :WMy Title               !Start a new window, and name it "My Title"
  :Xxval1,xval2,xval3...   !Give the x-values. Valn can be date, int or real
                           !not supported in PLOT/PIE
  :Llabel1,label2,label3.. !Give the label names for the pies in the pie chart
                           !not supported in PLOT [/NOPIE]
  [label],val1,val2...     !Add a data line containing values valn. Valn can be
                           !integer or real. If the first element is not a
                           !valid number, DIX will assume it to be a label.

  In a file you can have multiple windows, xvalues, labels, dataline
  The default separator is ",", but may be overruled by the /FLAG=SEP=nn

  If there is no :W line, DIX will name the plot "Pie Plot" or "Data Plot"
  If there is no :X line, DIX will assume an equidistant x value e.g.
                          !X1,2,3,4,5...
  If there are more values than x-values, DIX will
    in pie mode     : add extra tags value_n
    in non-pie mode : give a warning and skip extra data values
  If there are less values than x-values, DIX will
    in pie mode     : Ignore it
    in non-pie mode : add 0 values

  Example (not pie plot):

  :WFirst window                !declare new window
  :X1.0,2.0,5.0,20.0            !set x values
  34,23,89,12                   !add a dataline
  -20,-49,49,20                 !add another dataline
  :WSecond window               !make a second window
  12,34,67,89,76                !add a dataline

  Pie plot

  :WPie window                  !declare new window
  :LCust1,cust2,cust3,cust4     !set pie labels
  34,23,89,12                   !add a pie

  34,23,89,12                   !Make a pie plot of 4 values. The title
                                !is Pie Plot, and the pies are named
                                !value_1..value_4

DIX INTERACTIVE_COMMANDS PLOT usage


  In DECwindows mode, click on of the HELP buttons for more info.
  If you are entering a string the pf2/help key will display a help
  window about inputting strings.

DIX INTERACTIVE_COMMANDS PLOT qualifiers


DIX INTERACTIVE_COMMANDS PLOT qualifiers /ALL

  /ALL
  /ALL=progress

  Only in postscript output mode.

  DIX will plot the first "n_datawindow" datalines in the first page.
  If there are more datalines, DIX will continue on the next page,
  until all datalines are plotted.
  Note: For a T4 file there can be hundreds of datalines, so be
  careful, this can generate a lot of plot pages.
  You may reduce the number of datalines using the /FIELDS qualifier.

  If you specify the "progress" value, DIX will print the progress
  on the terminal.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /ANGLE

  /ANGLE=degrees

 Set the aspect angle of the pie chart. The default is 0 degrees (vertical)
 degrees must be >=0 and <=80 (almost horizontal)

DIX INTERACTIVE_COMMANDS PLOT qualifiers /BACKGROUND


   /BACKGROUND=(colourname[,colourname2])

  Define the colour for the background using DECwindows. This is ignored for
  the postscript output.
  The default background colour is gray60
  The optional colourname2 is the background of the button/axis part of the display

DIX INTERACTIVE_COMMANDS PLOT qualifiers /BEFORE

  /BEFORE=date

   T4 files only. Select only files from date<=date
   The selection is done via the day part in the filename
      T4_NODE_DAY_TIMB_TIME.CSV

DIX INTERACTIVE_COMMANDS PLOT qualifiers /COLOUR


 /colour=(colourname[,colourname...])

  The colour for each drawing. By default DIX will generate
  unique colours. If a data value contains more than one dataitem,
  you can specify a colour for each dataitem

 Example:
  DIX> y=[[1,2,3,4,5,6,7][11,12,13,14,15,16,17]] !Make a two dim table
                                                 !each with 7 elements

  DIX> Plot y   !two lines will be draw with DIX generated colours
  DIX> Plot y/colour=(red,blue) !colour red is used for 1,2,3,4,5,6,7
                                !and blue for 11,12,13,14,15,16,17

DIX INTERACTIVE_COMMANDS PLOT qualifiers /COMMON_x


  In a T4 file data lines can have (slightly) different x values (times).
  If you plot 2 data lines with different x values in different data windows
   each data window will have its own x labels (and they may be different).
  If you specify /COMMON_X, all data windows will have the same x-axis values.
  Also if you enable a cursor (by clicking in a data window), the cursor
   line will be drawn over all data windows.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /CONFIRM

  For T4 files. If you specify a filename that matches multiple files, or
  a .ZIP file, you can select specific files to be loaded
  DIX will prompt you with (i.e.)
  Process file t4_node_22feb2015_0000_2359_comp.csv ([Y]/N/A/Q):

  You can answer with
  Y : Select the file
  N : Do not select the file
  A : Select this file, and all subsequent matches will be processed
  Q : Do not select the file, and all subsequent matches will not be processed
  ^Z is the same as Q

DIX INTERACTIVE_COMMANDS PLOT qualifiers /DATA_WINDOWS

  /DATA_WINDOWS=number          ! one column
  /DATA_WINDOWS=ncol*nrow       ! #data windows is nrow*ncol

  The number of data windows in a plot-window. Number must be between 1 and 32.
  The default is 1.
  The number of columns must be between 1 and 8. The default is 1

DIX INTERACTIVE_COMMANDS PLOT qualifiers /FLAG

  /FLAG=(flag_topic[,flag_topic...])

  Specify CSV specific topics. This qualifier is only used for CSV plotting
   and ignored for normal or T4 plots.

  flag_topic can be
  HEADER      : The first line is a header line, and will be uses to identify
                 the data streams.
  REVERSE     : The data is in the file in reverse order.
  X_VALUE=val : The first row is the x-value. If X_VALUE is not specified DIX
                 will assume an equidistant x-value (1..n)
                Val can be
                 date   : The x_value must be a valid date
                 time   : The x_value must be a valid time
                 number : The x_value is a (real or integer) number
  SEPARATE=val: Set the separating character.
                  val can be:
                   SEPARATOR=BAR      : Use | as separator
                   SEPARATOR=COMMA    : Use COMMA as separator
                   SEPARATOR=TAB      : Use TAB char as separator
                   SEPARATOR=COLON    : Use COLON (:) a separator
                   SEPARATOR=SEMICOLON: Use SEMICOLON (;) as separator
                   SEPARATOR=CHARACTER=%Xdd : Use %Xdd as separator
                   SEPARATOR=AUTO     : DIX will try to find the separator
                                        this is not foolproof, but may work.
                 AUTO is the default

DIX INTERACTIVE_COMMANDS PLOT qualifiers /FIELDS

  /FIELDS=(pattern[,pattern...])
  /FIELDS="@filename"

  Used in the T4 plots to select a subset of all datalines matching
  the pattern(s). A pattern can be preceded by a -, signaling that
  the fields matching 'mask' will not be selected.

  Instead of listing all fields, you can specify a filename. In this file
  you can specify the patterns. The default file type is .LST

 Examples:

  DIX> plot /t4 file /fields=*MON*
    Will select only the datalines with names matching *MON*
  DIX> plot /t4 file /fields=([MON.SYST]*,-*BUFFER*)
    Select all fields matching [MON.SYST]*, but excludes the
    *BUFFER* fields.

  DIX> plot /t4 file /fields="@FIELDLIST"
   Open the file FIELDLIST.LST to get the fieldlist to be
    enabled/disabled.

  The selection can be changed in the DECwindows mode in the
  options button.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /FONT

  /FONT=fontname

  Change the font DIX uses for the DECwindows display
  DIX has partial support for proportional fonts.

  See also the /small_font qualifier

DIX INTERACTIVE_COMMANDS PLOT qualifiers /FOREGROUND

   /FOREGROUND=colourname

   The colour used as foreground in the message window

DIX INTERACTIVE_COMMANDS PLOT qualifiers /FORMAT

 used for output to file. Determines the "paper" size

  /format=a3        : Select a3 format
  /format=a4        : Select a4 format
  /format=fullhd    : Select 1920*1080 (better viewable on a PC)

DIX INTERACTIVE_COMMANDS PLOT qualifiers /GRID

  /grid=(token[,token...])

  Draw a grid over the plotted area.
  Token can be:
   x=n               : Draw n vertical lines.
   y=n               : Draw n horizontal lines
   colour=colourname : Use colourname for the grid. The default is the x-axis colour
                       for the x lines, and the y-axis colour for the y lines.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /INFO


  In the plot/pie mode.
  Show all data values (labels and values) in the top left/right part of the
   plot. This feature can also be enabled or disabled in the options menu

DIX INTERACTIVE_COMMANDS PLOT qualifiers /LABEL

 /label=(labelname[,labelname...])

  The text to identify the drawing. The default is the symbol name
  If a data value contains more than one data item, you
  can specify a label for each data item

  In a pie plot, the labelname will be printed under the pie.

 Example:
  DIX> y=[[1,2,3,4,5,6,7][11,12,13,14,15,16,17]] !Make a two dim table
                                                 !each with 7 elements

  DIX> Plot y  !two lines will be draw with labels y and y_1
  DIX> Plot y/label=(l1,l2) !label l1 is used for 1,2,3,4,5,6,7
                            ! and l2 for 11,12,13,14,15,16,17

DIX INTERACTIVE_COMMANDS PLOT qualifiers /LANDSCAPE

  If you want output to a postscript file, the default page-orientation is
  portrait. If you specify /landscape, DIX will plot the data in landscape mode.
  This qualifier is ignored in DECwindows mode.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /LEGEND

  /legend="character table"

  You can specify a list of text to be used on as labels for the data.

  suppose you have a table y(100,2)

  you can do :
  DIX> plot y/legend=["lab1","lab2"]
   and two datalines will be processed, labelled lab1 and lab2, each containing
   100 datapoints.

  If you specify a /y_axis=label=value, this overrides the legend qualifier

   In a pie plot, legend will give a name to each datapoint. You do not need
   to specify a legend name for all values, DIX will append he list with
   names "Val n" for missing legend names.

  PLOT/PIE [10,20,40,4,43]/legend=["v10","v20","v40"]
   Will mark value "10" with name "v10"
             value "20" with name "v20"
             value "40" with name "v40"
             and value "4", and "43" with names "Val 4" and "Val 5"

DIX INTERACTIVE_COMMANDS PLOT qualifiers /MARKER

  /MARKER=filenamemask          Plot/T4 only

  In a T4 plot you can add markers to the plot. This may be useful if you
  i.e. changed a system at a certain time and want to see the effects in a
  T4 file. This filenamemask has as default filename 'datafilename'.MRK
  In this file you specify a number of lines in the following syntax
  date,text
  The date fields year,month,day are defaulted from time of the first
  data file, and seconds, ticks are defaulted to 0, so you must specify
  hour:minutes at a minimum. The text after the comma is free format.
  the ! mark is used to signal comments, and blank lines are ignored.

  Example:
  Suppose at 11:13 you changed the setting of fastpath for the PE driver,
  and at 14:25 you changed it back. You could then create a file
  PECHANGED.MRK with the following contents

  !effects of changing pe driver
  11:13, PE to CPU5 !test to see if it works
  14:25, PE to CPU3

  and plot the T4 file with plot/t4 t4file/mark=pechanged
  DIX will plot the contents and two marker lines at the 11:13 and 14:25
  time point. This will help you to see the effect of the change.
  You can also read in .MRK files in the display under the file menu.
  You can also specify a single marker in the file menu.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /MERGE

  /MERGE   (Default)
  /NOMERGE

  T4 files only. If you specify more than one file (or the filename mask
   results in more than one file), DIX will combine all datalines with
   the same name as a single entity. So moving to and from the data windows
   will be done with the datalines (with the same name) of all files together.

  If you specify /NOMERGE all datalines will be seen separately.
   The flag can also be toggled via the Options menu.

  Examples:

   $ DIX/PLOT/T4 *comp*.csv/sinc=date/bef=date/field="[mon.syst]cpu busy"

   Will plot the CPU usage of all files in file selection in one window.
   In combination with the /post=file.ps, you can make a plot of
   i.e. the CPU usage of the last week

   $ DIX/PLOT/T4 *comp*.csv/sinc=date/bef=date/field="[mon.syst]cpu busy" -
        /NOMERGE/DATA_WINDOW=7

    Will plot each file in a separate data window

DIX INTERACTIVE_COMMANDS PLOT qualifiers /MODULE

  /MODULE=mask
   plot/t4 only

  If you want to plot files from a .ZIP file you can select which module
   you want to use without unpacking the .ZIP file. You need to have
   the UNZIP program available and the symbol UNZIP pointing to it.
  This can also be achieved by specifying zip_file (mask)

DIX INTERACTIVE_COMMANDS PLOT qualifiers /NEW_WINDOW


  If you specify more than one plot item, DIX will display them in the
  same window, unless you specify the /NEW_WINDOW. In this case the
  expression/filename will be displayed in a new window

  /NEW_WINDOW is a positional qualifier

  Example:

  plot/t4 a.csv,b.csv,c.csv/new_window,d.csv

  a and b will be displayed in the same window, and c and d in another one.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /OFFSET

   /OFFSET=value

  You can specify an offset to the x-values in the file. This might be
  useful if you read two T4 files from two different OpenVMS machines
  that have a (slightly) different local time. In this way can plot
  data lines from both files at exactly the same x position.

  Examples:
   Suppose we have two OpenVMS machines in different time zones. Each is
   collecting T4 files, and we want to see a correlation between events
   both machines.

   DIX/PLOT T4file_node1,t4file_node2/offset=1:00:00 or

   DIX/PLOT T4file_node1,t4file_node2/offset=-1:00:00

   You can also set an offset to each individual data line in the
   display.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /PDF

  /pdf=filename
  /pdf=dix_plot.pdf  (Default)

  Do not plot to a DECwindows display, but make a PDF file, that
  can be printed later. The default is portrait page orientation, but you can
  change that via the /landscape qualifier
  By default the background colour will be white, but you can change it
  with the /background=colour qualifier

DIX INTERACTIVE_COMMANDS PLOT qualifiers /POSTSCRIPT

  /postscript=filename
  /postscript=dix_plot.ps  (Default)

  Do not plot to a DECwindows display, but make a postscript file, that
  can be printed later. The default is portrait page orientation, but you can
  change that via the /landscape qualifier
  By default the background colour will be white, but you can change it
  with the /background=colour qualifier

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SETUP

  /setup[=filename]

  If you previously saved the plot setup via the save setup button
  you can use this file (by default SYS$LOGIN:DIX_PLOT.SETUP) to
  restore settings.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SELECT


  If you have more than one dataline, DIX will plot all lines in
  the available data windows. If you specify /select (default for T4)
  DIX will only plot the first "n_datawindow" datalines. You can
  click in the legend display to plot more or less datalines.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SEGMENTS

  /SEGMENTS=nn

  For a pie plot set the number of distinct pies. The default is
  the minimum of 10 and the number of data items

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SEPARATE


  If you specify more than one plot item, DIX will display them in the
  same window, unless you specify the /SEPARATE. In this case each
  expression/filename(s) will be in a new window.
  This is the same as specifying /NEW_WINDOW with each parameter value.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SINCE

  /SINCE=date
   T4 files only. Select only files from date>=date
   The selection is done via the day part in the filename
      T4_NODE_DAY_TIMB_TIME.CSV

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SIZE

  /SIZE=xsize[*ysize]

   The size in pixels for the DECwindow display. It is ignored
   for postscript printing. If ysize is not specified, ysize will be the same
   as xsize.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SKIP_ZERO


  Only useful for T4 files. Skip all data lines that contain only 0 values.
  This can also be done (or undone) later via the options button.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SMALL_FONT


  By default DIX will use a 140 points font
        '-*-terminal-medium-*-normal--*-140-*-*-c-*-iso8859-*',

  Or if the -terminal- fonts are not installed the
        '-*-courier-medium-*-normal--r-140-*-*-m-*-iso8859-*',

  If you specify /SMALL_FONT, DIX will use a 100 points font
        '-*-terminal-medium-*-normal--*-100-*-*-r-*-iso8859-*',

  Or if the -terminal- fonts are not installed the
        '-*-courier-medium-*-normal--r-100-*-*-m-*-iso8859-*',

  Small font is default for displays with less than 1024 pixels

  See also the /FONT qualifier

DIX INTERACTIVE_COMMANDS PLOT qualifiers /LARGE_FONT


  By default DIX will use a 140 points font
        '-*-terminal-medium-*-normal--*-140-*-*-c-*-iso8859-*',

  Or if the -terminal- fonts are not installed the
        '-*-courier-medium-*-normal--r-140-*-*-m-*-iso8859-*',

  If you specify /SMALL_FONT, DIX will use a 100 points font
        '-*-terminal-medium-*-normal--*-180-*-*-r-*-iso8859-*',

  Or if the -terminal- fonts are not installed the
        '-*-courier-medium-*-normal--r-180-*-*-m-*-iso8859-*',

  Small font is default for displays with less than 1024 pixels

  See also the /FONT qualifier

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SMOOTH

  /smooth=n

  If you specify /smooth=n, you set the default smooth points
  for the window to n.
  If you right click on a legend name in the data windows,
   DIX will add a new dataline, smoothed over "n" points.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /SORTED


  For pie plots

  /[NO]SORTED, /SORTED is default

    Normally DIX will sort the input value from high to low.
    If you specify /nosorted, DIX will use the order of the values

   Example:

    DIX/PLOT/PIE [2,1,3]/sorted    Will plot the values in order 3,2,1
    DIX/PLOT/PIE [2,1,3]/nosorted  Will plot the values in order 2,1,3

  For T4 plots
   /sort=flag
    flag can be
     name   : Sort on field names
     readin : Sort on order in T4 file (so no sort actually)
     fields : Sort on order of specified fields

DIX INTERACTIVE_COMMANDS PLOT qualifiers /STACKED


  If you specify /stacked, DIX will stack the successive y-values.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /T4


  The parameter must be a filename mask that matches one or more
  .CSV files generated by T4. DIX will read the file and generate a
   plot containing the data (like TLVIZ).
  DIX can also process the .ZIP files as delivered by the T4 product,
   but you must have an UNZIP utility present and the UNZIP symbol
   pointing to it.

  Example:

  In interactive mode

 DIX> PLOT/T4 T4_CSV036_26FEB2011_0001_2359_COMP.CSV

  From the DCL command line

  $ DIX/COMMAND PLOT/T4 *.CSV                 !all .CSV files in 1 window
                                              !may be more than one

  $ DIX/COMMAND PLOT/T4 *.CSV;4,*.csv;5/new_w !*.csv;4 in one window, and
                                              !*.csv;5 in another one

  $ DIX/PLOT T4_NODE_20150222_0000_2359.ZIP;1/conf   !get files from .ZIP file
  Process file t4_node_22feb2015_0000_2359_comp.csv ([Y]/N/A/Q):y
  Process file t4_node_22feb2015_0000_2359_disk.csv ([Y]/N/A/Q):n
  Process file t4_node_22feb2015_0000_2359_fcm.csv ([Y]/N/A/Q):y

  Or even with filename specification in the .ZIP file
  $ DIX/PLOT T4_NODE_20150222_0000_2359.ZIP;1(*comp*)   !get files from .ZIP file
                                                        !that match *comp*

   Read files from a standard T4 .ZIP file.
    To get the data from the .ZIP file, DIX will spawn a subprocess
    to do the real UNZIPs. You must have a symbol UNZIP defined that
    points to an UNZIP utility that supports the following commands:
    $ UNZIP -l zipfile     !make a listing
    $ UNZIP zipfile csvfile -d tempdir

DIX INTERACTIVE_COMMANDS PLOT qualifiers /TIME_ONLY


  If the x-value is of type date, and you specify /time_only, DIX will only
  display the time and not the date on the x-axis. If you have multiple T4
  file of different dates, DIX will plot the values on the same x-axis values.
  /time_only is default for T4 plots, but may be negated. You can also change
  the flag in the options menu items.

  Example:
 plot/t4 *26feb*,*27feb*        : Plot the data of the 26 and the 27feb on the
                                  same x-values, so the datalines will be above
                                  each other, and the x-axis will go
                                  from 00:00 up to 24:00 (in total 1 day)

 plot/t4 *26feb*,*27feb*/notime : Plot the data of the 26-feb on the left side
                                  and the 27th on the right side of the plot,
                                  so the datalines will be next to each other,
                                  and the x-axis will be from 26-feb:00:00 up to
                                  27-feb:240:00 (in total 2 days)

DIX INTERACTIVE_COMMANDS PLOT qualifiers /TITLE

  /TITLE=text

  The text plotted above the plot (the plot header).

DIX INTERACTIVE_COMMANDS PLOT qualifiers /TWO_Y_AXIS


  Draw the plots with a separate y_axis on both sides of the plot

DIX INTERACTIVE_COMMANDS PLOT qualifiers /TYPE=plot_type


  Define the plot_type.
  plot_type can be :
   Normal  : All points are connected via a line
   Filled  : All points are connect via a line, and DIX will fill all
             points between the line and the y=0
             (or previous line if stacked)
   Scatter : Only the data point are drawn. In this mode DIX will only
             accept one y-value, and the x-value symbol must be present
             DIX will also print a line on top with the correlation
             between x and y.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /USE_DATE

  /USE_DATE Default
  /NOUSE_DATE

   T4 files only. If you specify more than one file, DIX will append
   the name of the datalines with a #NN (filenumber) or with dd-mmm
   (date of the T4 file).
  You can also change this setting in the Options menu.

DIX INTERACTIVE_COMMANDS PLOT qualifiers /X_AXIS

  /X_AXIS=(token[,token...])

   Define x-axis attributes

  Token can be:

    symbol=expression. If expression contains special characters
                       it must be enclosed in quotes

       If you do not specify symbol, DIX will
       plot the y values equidistant. the expression must be a
       one-dimensional table with the same number of values as
       the y-values. The datatype of the x symbol must be
       integer, real or date.

    label=string
       The text drawn below the x-axis.
    colour=colourname
        The colour of the x-axis fields. See the help about colournames.
    min=min_value
        Normally DIX will auto scale the x-axis, but you may overrule
        the min value. The min_value must be of the same datatype as the
        x-symbol (or integer if x_symbol is not specified)
    max=max_value
        See above, but now for the maximum x-value

DIX INTERACTIVE_COMMANDS PLOT qualifiers /Y_AXIS

  /Y_AXIS=(token[,token...])

   Define y-axis attributes

  Token can be:
    label=string
       The text drawn left of the y-axis.
    colour=colourname
        The colour of the y-axis fields. See the help about colournames.
    min=min_value
        Normally DIX will auto scale the y-axis, but you may overrule
        the min value. The min_value must be of the same datatype as the
        y-value(s)
    max=max_value
        See above, but now for the maximum y-value

DIX INTERACTIVE_COMMANDS PLOT qualifiers /ZOOM

  /ZOOM=(x=[begin]-[end],y=[begin]-[end])
  You may specify x and y or any of them

  This qualifier is supported for T4 plots only

  Set a zoom value from the start. Can be useful if you want to plot to a
  file. You can always set/clear the zoom interactively.

  Begin and end can be specified in two ways
  1. As percentages of the axis. The format is nn or nn%
  2. As hh:mm

  Examples:
   /zoom=x=12:00-18:00  !zoom in to 12:00 up to18:00
   /zoom=x=50-75        !zoom in to 12:00 up to 18:00 (half and three quarters)
   /zoom=x=-9:00        !Zoom in to 00:00 up to 9:00
   /zoom=x=12:00        !zoom is to 12:00 up to 24:00

DIX INTERACTIVE_COMMANDS PREVIOUS


  Via the PREVIOUS command you can select the PREVIOUS record, file or description.

  PREVIOUS FILE         : Select PREVIOUS file

  PREVIOUS DESCRIPTION  : Select PREVIOUS description of the current file.

  PREVIOUS [Record]     : Select the previous record.
  PREVIOUS Record tag   : Select the previous record for file with tag 'tag'

  If you use the previous [record] command, and the file has an associated
  search pattern, DIX will find the previous record matching this search pattern

   Be aware that backspacing for a large sequential (non-fixed record length)
    file can be very time and I/O consuming, since it is done via
    rewind + read n-1 records.

DIX INTERACTIVE_COMMANDS PUSH


  PUSH dix_command

  This allows you to create a DIX command and let DIX execute it.

  Examples:

  DIX> k=1
  DIX> command = "EXA XY_''k'"
  DIX> PUSH 'command'
  And DIX will execute the command exa xy_1

  This gives exactly the same result as

  DIX> 'command'

DIX INTERACTIVE_COMMANDS QUIT


  Abort DIX. All open command levels will be closed. All changes to
  the current record will be discarded (at least if you did not yet
  save the changes with the DO command)

  AUTO mode will be disabled, unless you explicitly specify /AUTO

DIX INTERACTIVE_COMMANDS REAL

   REAL[*size][/level=n][/global] name[dimensions][=value]
   REAL[*size][/level=n][/global] name[=value]

   Declare a new symbol of type "REAL" and optionally give a value.
   The value must be of type "real"

   Size must be 4,8 or 16, the default is 4.

  Example:
   DIX> REAL limit=10.0 !declare a real with size=4
   DIX> SHOW SYMBOL/FU LIMIT
   LIMIT(Fixed,Real_f*4,Level=1.0)=10.000000 !It is a real*4
   DIX> limit=1.0q20                         !try to store a real*8
   LIMIT(Fixed,Real_f*4,Level=1.0)=0.999999993E20 !It is still real*4
   DIX> limit=1.0q200                        !try to store a big value real*8
   %DIX-E-AROVERFL, Arithmetic overflow occurred !too big

   DIX> real*16 test=1q2000             !declare a real*16
   DIX> show symb test/fu
   TEST(Fixed*16,Real_x,Level=1.0)=0.1E2001

  See the help about [DIX/HELP] interactive declaration

DIX INTERACTIVE_COMMANDS RECALL

   RECALL/ERASE
  Clear recall buffer

   RECALL/ALL Mask

   Make a list of commands that start with "mask"

   RECALL/SEARCH Mask

   Make a list of commands that match with "mask"

   RECALL Mask

   Recall the statement, and let you modify it.
   Mask can be
    - a number   : Recall 6 (recall the 6'th previous command)
    - A text     : Recall open (recall the last command that started with open)

DIX INTERACTIVE_COMMANDS READ


  READ [/qualifiers]                     Read from the current file
  READ [/qualifiers] tag [/qualifiers]   Read from file tag
  READ tag symbol                        Read from file tag and create a
                                         character-type symbol with the contents
                                         of the record (like DCL)

 Via the READ command, you can read a record.
 
 For indexed files, 

  If in dix_mode the selection is via the /KEY,/EQ,/GE,/GT,/LE,/LT
   and the /key=keynumber qualifiers.

  If in dcl_mode the keyvalue is specified with the /key, 
                 the keynumber is speified via the /index
                 and the mode via the /match qualifiers

 For all other files, the selection is via the /RECORDNUMBER qualifier

 If for an indexed file neither /EQ,/GE,/GT,/LE,/LT or, for
 a sequential file /RECORD, is not given, DIX performs a sequential read.

 For unit record devices you may specify
   /prompt=Promptstring
   /timeout=n

 If the file has a description loaded, the symbol can also be a description
  type symbol, see the /description qualifier

 DIX will not upcase , so the keyvalues must be in the correct case.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS


DIX INTERACTIVE_COMMANDS READ QUALIFIERS /RECORDNUMBER


  /RECORDNUMBER=number

  Select the record to be manipulated. For direct access files or relative
  files, the record can be read direct. For sequential files, the record
  will be found by rewinding and skipping 'number'-1 records.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /KEY

  /KEY=nr      Dix mode
  /KEY=value   Dcl mode

 In dix mode, the /key is the key number
  Look for the keyvalue on the specified key. The default is the
  primary key (0).
  This qualifier is not allowed for non-indexed files.

 In dcl_mode, key is the value of the key , the keynumber is specified 
    via the /index

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /MATCH

  /match=how how is LT,LE,EQ,GE,GT

  In dcl mode, the /match determines the matching of the keyvalue
   

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /INDEX

  /INDEX=keynumber

  In DCL mode, the keynumber is specified via the /index

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /LT

  /LT=value

  Look for a record with keyvalue LT the specified value.
  If none of the LT,LE,EQ,GE,GT options is specified, and the
  /KEY is given, DIX will the first record of the specified key.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /LE

  /LE=value

  Look for a record with keyvalue LE the specified value.
  If none of the LT,LE,EQ,GE,GT options is specified, and the
  /KEY is given, DIX will the first record of the specified key.
  This qualifier is not allowed for non-indexed files.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /EQ

  /EQ=value

  Look for a record with keyvalue EQ the specified value.
  If none of the LT,LE,EQ,GE,GT options is specified, and the
  /KEY is given, DIX will the first record of the specified key.
  This qualifier is not allowed for non-indexed files.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /GE

  /GE=value

  Look for a record with keyvalue GE the specified value.
  If none of the LT,LE,EQ,GE,GT options is specified, and the
  /KEY is given, DIX will the first record of the specified key.
  This qualifier is not allowed for non-indexed files.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /GT

  /GT=value

  Look for a record with keyvalue GT the specified value.
  If none of the LT,LE,EQ,GE,GT options is specified, and the
  /KEY is given, DIX will the first record of the specified key.
  This qualifier is not allowed for non-indexed files.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /ERROR

  /ERROR=label

  If the READ results in an error (or an END_OF_FILE and /END
  is not specified), DIX will jump to the label.
  If the /ERROR qualifier is not specified, DIX will look for the ON condition.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /END

  /END=label

  If the READ results in an END_OF_FILE and, DIX will jump to the label.
  If the /END is not specified, and an END_OF_FILE occurs, DIX will jump
  to the label in the /ERROR statement (if it is specified).
  If neither qualifier is specified, DIX will look for the ON condition.

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /DESCRIPTION


  If you specify /description the symbol (must be f the correct type) will
  be filled.

  Example:

  DIX> Open sysuaf
  %DIX-I-USINGFIL, Using file ...
  %DIX-I-USINGDES, Using description ...tlb(SYSUAF)
  DIX> decl/descr=sysuaf val            !Create a description type symbol
                                        !using description SYSUAF
  DIX> read/eq=system sysuaf /descr val !fill val with a description
  DIX> show symb/all val
  VAL=86 descriptions,75 expanded
  VAL.UAF$B_RTYPE=1
  VAL.UAF$B_VERSION=1
  VAL.UAF$W_USRDATOFF=0
  VAL.UAF$T_USERNAME=SYSTEM
  VAL.UAF$W_MEM=000004
  VAL.UAF$W_GRP=000001
  ......
  VAL.UAF$W_ACCOUNTS=0
  VAL.UAF$R_DEF_CLASS=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  DIX> say val.uaf$t_username
  SYSTEM

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /TRANSLATE

  /TRANSLATE   (Default)
  /NOTRANSLATE
  If a read is done with a /KEY=string, the string is checked for the
  occurrence of %DD where DD is a valid hexadecimal number. In this way you
  can enter binary numbers in a string. %% is translated to one %.
  This behaviour is the default, but can be disabled by /NOTRANSLATE

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /FAST

  Read the file using Fast I/O (if the file is opened "fast")
  This overrides the default of Fast I/O mode for the file
  See the help for SET FILE/FAST/DEFAULT=FAST

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /PROMPT

  For unit record devices you may specify

  /prompt=Promptstring default is DATA:

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /TIMEOUT

  For unit record devices you may specify

   /timeout=n  : Wait maximum n seconds

DIX INTERACTIVE_COMMANDS READ QUALIFIERS /NOECHO


  For unit record devices you may specify

   /NOECHO  : Do not echo the typed text

DIX INTERACTIVE_COMMANDS REMOVE


  REMOVE description mask
  REMOVE view mask

  Remove all descriptions/views that match 'mask'.
    The descriptions/view are not deleted, only the link to the current file.

   Since you can have descriptions from multiple sources (even with the
     same name) you may limit your removal to a specific source.
      Supported qualifiers
     /SYSTEM_LIBRARY
       Remove only the description(s) that came from the system library
     /USER_LIBRARY
       Remove only the description(s) that came from the user library
     /FILE
       Remove only the description(s) that came from file(s)

  REMOVE parameter mask [/log]  Remove parameters
  REMOVE value mask     [/log]  Remove values
  REMOVE type mask      [/log]  Remove types

  For the last 3 you can also specify

  /GLOBAL  : Remove item from global table
  /LEVEL=n : Remove item from a specific level table
     n can be 1..current command level
          or -1..-n N levels up

   The default level is the current command level

DIX INTERACTIVE_COMMANDS REPEAT_UNTIL


  syntax : REPEAT
            statement
            statement
            ...
           UNTIL logicalexpression

 Repeat the statements as long as "logicalexpression" evaluates to true.
 See also the examples

  If you type the command from the terminal (instead from a command file)
  DIX will prompt you for more lines until the UNTIL command is found,
  and then will execute the commands.

  See also the help about the LEAVE and the CYCLE command

  Example for a repeat construct:

  k = 10
  REPEAT
    say "The value of K = ''k'"
    k = k -2
  UNTIL k<=1

  Delivers the same output as the FOR example

  K = 10
  WHILE k<=1
    say "The value of K = ''k'"
    k = k -2
  ENDWHILE

  Delivers the same output as the FOR example

DIX INTERACTIVE_COMMANDS REREAD


  REREAD DESCRIPTION mask

  Force a reread of the description from the file/userlib/systemlib.
  This may be useful if the description depends on symbol substitution, since
  this substitution is done only at read time of the description.
  during the execution of the "OPEN file/des" or the "ADD des" commands.

  Example:

   Below is an excerpt of the .AUDIT$JOURNAL description

    ...
    structure 'full_name' (nsa$w_packet_count)
     #ifdef full_name
       integer*2 nsa$w_packet_size
       integer*2 nsa$w_packet_type [#nsa_packet_types]
     #else
       integer*2/nodisp nsa$w_packet_size
       integer*2/nodisp nsa$w_packet_type [#nsa_packet_types]
     #endif
     union
       map
        switch nsa$w_packet_type [#nsa_packet_types]
        case ACCESS_DESIRED
          bits*4 ACCESS_DESIRED [read,write,execute,delete,control]
        case ....
       end map
     end union
     .....
    end structure

   If on open time of this description the symbol 'full_name' has a value
   DIX will have a name for the structure, and so deeper values will be
   prefixed with the 'full_name'(index).access_desired

   If full_name is not defined, the structure does not have a name, so
   all deeper fields will be displayed with their own name access_desired only

   If after the description is opened, you change the value of "full_name"
   DIX will not change the fieldnames display, until you use the
   "REREAD DESCRIPTION AUDIT$JOURNAL. During the read the symbol-substitution
   will be executed, and the new value of "full_name" will take effect.

  See also the "set/show substitution" command.

DIX INTERACTIVE_COMMANDS REWIND

    REWIND                      Current file
    REWIND /KEY=keynumber       Current file, Indexed file only
    REWIND tag                  File with tag "tag"
    REWIND tag /key=keynumber   File with tab "tag", indexed file only
    REWIND /[NO]FAST            Rewind the file using Fast I/O. This overrules
                                the default of Fast I/O access
                                See the help for SET FILE/FAST/DEFAULT=FAST

  Rewind the file and read the first record. For indexed files you can
  specify the key to rewind on.

DIX INTERACTIVE_COMMANDS SAY

   SAY is a synonym of EVALUATE.
   See the help of [DIX/HELP] interactive EVALUATE

DIX INTERACTIVE_COMMANDS SEARCH


  In normal mode
     DIX> SEARCH string[/qualifiers] [,string[/qualifiers...]] [string..]
          !Redefine a search pattern and search
     Search the current file for the first match
   or
     DIX> SEARCH/file=filemask string[/qualifiers] [,string[/qualifiers...]]  -
              [string...] [/output=outputfile]
     Search a list of files for all matches

  In DCL compatible mode

     DIX> SEARCH filemask string[/qualifiers] [,string[/qualifiers...]] -
                [string...] [/output=outputfile]
     Search a list of files for all matches

  SEARCH  !Next search

  Search the current file (or a list of files) for a (list of) string(s).
  The first match will stop the search.
   See also the help about [DIX/HELP] record_searches

  Supported qualifiers are
   /REWIND    : If it is specified, DIX will search from the beginning
                of the file, otherwise the next record.
   /PROGRES=n : Display the progress of search every n seconds
                The default value for n is 10 seconds
   /NAME=name : Use search pattern 'name' instead of the default
                 search pattern
   /OUTPUT=name : For dcl_compat mode or when /files is specified
                  Set outputfile, default is SYS$OUTPUT

  If you specify a filemask (via /file or in dcl_compat mode)
  and you specify the filename as module@[library] or as [library](module),
  DIX will read the module "module" from the (.TLB or .MLB) file "library".
  Both module and library may contain wildcards.
  If no library is specified, DIX will search SYS$LIBRARY:STARLET.MLB
   and SYS$LIBRARY:FORSYSDEF.TLB (if present) by default.

  If you specify the /Statistics, DIX will report about the number of
   searched files, record, character, just like OpenVMS search
   DIX will also define the SEARCH$ symbols

  Example:
   DIX> sea/file=*.txt hlp/out=nl:/stat
   Files searched:                 6     Buffered I/O count:        47
   Records searched:            1111     Direct I/O count:          22
   Characters searched:        74527     Page faults:               11
   Records Matched:                3     Elapsed CPU Time :   0 00:00:00.11
   Lines printed:                 12     Elapsed Time :       0 00:00:00.12
   DIX> show symbol search*
   SEARCH$CHARACTERS_SEARCHED=74527
   SEARCH$FILES_SEARCHED=6
   SEARCH$LINES_PRINTED=12
   SEARCH$RECORDS_MATCHED=3
   SEARCH$RECORDS_SEARCHED=1111

DIX INTERACTIVE_COMMANDS SELECT

  SELECT thing name

  SELECT FILE name
  Make the first file that matches 'name' to the filename or that has a tag
  'name' the current file

  SELECT DESCRIPTION name
  Make the first DESCRIPTION that matches 'name' the current description for
  the current file

DIX INTERACTIVE_COMMANDS SET


  Set some things

  syntax : set something enabled|disabled|on|off|yes|no

  An alternative way of setting flags is
  DIX> enable something
  DIX> disable something

DIX INTERACTIVE_COMMANDS SET AUTO


  SET AUTO enabled|disabled|on|off|yes|no

  Change the AUTO setting.
  This setting decides if you will save the current settings
  (and open files/record and recall buffer) when you exit DIX.
  The EXIT/QUIT command also has the /[NO]AUTO to override this setting

DIX INTERACTIVE_COMMANDS SET CASE_SENSITIVE


  SET CASE_SENSITIVE enabled|disabled|on|off|yes|no

  If case_sensitive mode is enabled,
   Symbol/parameter/value/type/function/fieldnames
     names are case sensitive.
  If the mode is not case-sensitive, names will match in all cases.

  If you enter a name both in upper and lower case (in case sensitive mode)
  and then switch back to not case-sensitive mode, the lower case name is
  unreachable (the upper case will match).

  If you do an direct assignment to a fieldname with the wrong case, DIX
   will create a symbol (no match in fieldnames, so it must be a symbol)

  Example:
  DIX> enable case
  DIX> ab=10            !define 2 symbols with the same name
  DIX> AB=20
  DIX> xy=30            !and another one in lower case
  DIX> say AB
  20
  DIX> say ab
  10
  DIX> say xy
  30
  DIX> show symbols
  ...
  AB=20
  ab=10
  xy=30
  DIX> say XY
  %DIX-E-INVELEM, Invalid element "XY"
  DIX> disable case
  DIX> say ab  !the lower case will be matched by the upper case first
  10
  DIX> say AB
  10
  DIX> say XY  !XY=xy=Xy=xY
  30

  Examples for fieldnames:
   in this example the SYSUAF.DES contains a
    uaf$t_defcli in lower case and a UAF$T_CLITABLES in uppercase

  DIX> enable case              !set to case sensitive
  DIX> exa *cli*                !show lowercase
  276|uaf$t_defcli|DCL          !the value
  DIX> exa *CLI*                        !Try the uppercase CLI
  308|UAF$T_CLITABLES|DCLTABLES !and see its value

  DIX> disa case                 !set to case insensitive
  DIX> exa *cli*                        !show *cli*
  276|uaf$t_defcli   |DCL       !displays both fields
  308|UAF$T_CLITABLES|DCLTABLES

  DIX> enab case
  DIX> uaf$t_defCLI="DCL"    !will generate a symbol with the name uaf$t_defCLI
  DIX> disab case
  DIX> uaf$t_defCLI="DCL"    !will modify the field uaf$f_defcli

DIX INTERACTIVE_COMMANDS SET CHECK_SYMBOL


  If check_symbol is set, DIX will check if there is a symbol
   DIX_COMMAND_'verb' . If so the contents of that symbol is inserted
   in the command just after the verb

  Example:
  $DIX_SYMBOL_DIRECTORY="/size"
  DIX> dire          !does a normal directory without the /size
  DIX> enable check_symbol
  DIX> dire          !does a directory/size
  DIX> dire/nosize   !overrule the /size
  DIX> disable check_symbol

  The verb is the symbol must be the full name of the command so
    directory and not dire

DIX INTERACTIVE_COMMANDS SET CLITABLE_ADDRESS


  syntax : Set clitable_address address

   Make the address of the CLI table in p1 space known to DIX

   DIX cannot determine the value, because that would need a link/exec
    and that would make DIX very OpenVMS version dependent.
   You can (if you have privileges) find the symbolvalue via :
   $ ANALYZE/SYSTEM
   SDA> show symbol CTL$AG_CLITABLE
    and take the address after the second .

   For example on a OpenVMS 8.4 system:
   ----------------------
   CTL$AG_CLITABLE                 = 00000000.7FFCD810 :  7AEF43FF.7AE78000
                                                                   ^^^^^^^^
   You would need the 7AE78000 value

   DIX> set clitable %x7AE78000

   If you have set this value (can be in the .INI file) you can use
   the VERB/DCL to show the CLDs for the commands stored in DCL tables.

   If you do not have enough privileges, you can also use the macro code below
   (the macro assembler/compiler is always present and needs no license)

 $ CREATE GET_CLITABLE.MAR
        .title get_clitable

        .PSECT  RWDATA,WRT,NOEXE,QUAD

 STR_DESC:
        .WORD   32                      ; Fixed length string descriptor
        .BYTE   DSC$K_DTYPE_T
        .BYTE   DSC$K_CLASS_S
        .ADDRESS string
  string: .blkb 80
 ;
        .extrn  ctl$ag_clitable
 ;
 faostr: .ascid "CLItable address : %X!XL"
 ;
        .PSECT CODE,NOWRT,EXE,LONG

        .entry main,^M<>
 ;
        pushl ctl$ag_clitable
        pushab  str_desc
        pushab  str_desc
        pushal  faostr
        calls   #4,SYS$FAO
        pushaq  str_desc
        calls   #1,lib$put_output
        $exit_s
        .end main

 $ macro get_clitable
 $ link get_clitable/sysexe               ! (on Alpha/IA64)
 $ link get_clitable,sys$library:sys.stb  ! (on VAX)
 $ run get_clitable
 CLItable address : %X7AE78000

 It will show you the address of CTL$AG_CLITABLE that you can use in the
  set_clitable command. You may want to put this statement in the
  the DIX initialization file (by default SYS$LOGIN:DIX_INI.INI)

DIX INTERACTIVE_COMMANDS SET COMMAND


  Set command file[/symbol=symbolname]][/log] 

   Parse cldfile to a symbol
   This symbol can be used later by the PARSE statement
   and the lexical functions F$DCL_GET_VALUE and F$DCL_PRESENT
   and the "VERB[/symbol=symbolname] mask" statement
   "Symbolname" is used to store the compiled CLD info and has a
   default value of DEFAULT_CLDTABLE

  This can also be done via verb/compile

DIX INTERACTIVE_COMMANDS SET DEBUG-NODEBUG

   SET DEBUG debugitems

   SET NODEBUG

   Mainly meant as a development aid. The output may change at any new
   version.
   This allows you to print out (a lot of) debug info
   See also the help about SETUP for the /DIX_DEBUG symbol

   debugitems can be
   NONE    : All items off
   ALL     : Enable all items
   LEVEL=n : The higher the number, the more output
   OUTPUT=filename : Output to a file, default is sys$output
   TIME    : Insert the time in the debug output line

   All following tokens can be negated and also have a level

   fp_conversions  Floating point conversion actions
   descriptions    Description processing
   keys            Key mapping (SMG mode)
   symbols         Symbols
   command_file    Command file processing
   expand          Description expansion
   file            File related actions
   find            Character string matching
   vm              Virtual Memory actions
   fastio          Fast I/O file actions
   decw            DECwindow events
   rms             RMS commands
   expression      Expression evaluation
   parameter       Parameter statements
   search          Searching data
   readin          Reading description files/modules
   view            View processing
   buffers         Buffer management
   strings         String management
   sort            Sorting table elements
   functions       User defined function management
   parse           Command line parsing
   value           All events regarding to values
   structure       Debug for structures
   memtab          Debug for memory tables
   lbr             Debug for library operations
   directory       Directory (sort) operations
   decent          Decent actions

 example
  
   DIX>set debug  level=2,command, parse
   DIX>show debug
   ...
   Debug : command=2,parse=2   !both set to level 2

   DIX>set debug command=2,parse
   DIX>show debug
   Debug : command=2,parse     !Command to level 2, parse to none

   DIX>set debug command,output=a.a  !debug output to file a.a
   DIX>set nodeb               !alldebug off, and debugfile closed(if open)


DIX INTERACTIVE_COMMANDS SET DECIMAL


   SET decimal/[qualifiers]

  Change the settings for the decimal strings

  /DIGITS=n   : The number of digits in the number
  /ROUNDED    : Set to round mode
  /TRUNCATE   : Set to truncate mode

DIX INTERACTIVE_COMMANDS SET DECWINDOWS


  SET DECWINDOWS [/qualifiers]
  Change the settings for the DECwindows mode
  See also the qualifier /ATTRIBUTES

  If you do not specify any qualifiers, DIX will switch to
  DECwindows mode

  /HEIGHT=n       : The height of the main display in pixels,
                    The default is 80 characters, so it depends on the font
  /WIDTH=n        : The width of the main display in pixels
                    The default is 30 lines, so it depends on the font
  /FONT=name      : Name can be Small, Medium, Large, name=fontname
                    The default is medium on display with more than 1024
                    pixels, and small for smaller ones.
  /COLOUR=display=(fore=colour,back=colour,High=colour)
                  : Change the colours for the various displays
                    The default colours are
                     background=gray50, foreground=white, high=red

    Display can be
         main       The main display
         offset     The offset part of the main display
         field      The field part of the main display
         value      The value part of the main display
         bar        The scroll bars
         menu       The menu
         message    The message display
         alldisplay The all-format display
         desdisplay The description display

DIX INTERACTIVE_COMMANDS SET DEFAULT


   Set default [device:][directory]

   Change the current default setting

DIX INTERACTIVE_COMMANDS SET DISPLAY

  Set default display parameters
  These setting can be overruled by qualifiers in the EXAMINE command.

   Syntax : SET DISPLAY par[,par...]

  Where par can be

  HEX           : Set HEX display mode for the data
  DECIMAL       : Set Decimal display for the data
  BINARY        : Set Binary display for the data
  OCTAL         : Set Octal display for the data
  OFFSET=HEX    : Set the offset field to hexadecimal in the raw display
  OFFSET=DECIMAL: Set the offset field to decimal in the raw display
  OFFSET=NONE   : Do not display the offset part in the raw display
  NOOFFSET      : Do not display the offset part in the raw display
  [NO]RAW       : Set or clear RAW mode display
  BYTE          : Display raw data in byte mode
  WORD          : Display raw data in word mode
  LONGWORD      : Display raw data in longword mode
  UNSIGNED      : Display raw data (if not in HEX mode) as unsigned integers.
  [NO]TAG       : Display data from multiple files with file\desc\ tag, see
                  the help at examine/tag
  [NO]RECNR     : Display the record number
  [NO]RECLEN    : Display the record length
  [NO]RFA       : Display the RFA of the record
  [NO]FIELDNAME : Display the fieldnames
  [NO]EBCDIC    : Set the EBCDIC translation flag
  [NO]WRAP      : If set, DIX will wrap output to the width of the terminal.
                  If clear, DIX will not wrap. The default is WRAP
  [NO]BIT_OFFSET: Force offsets to be displayed with the bit offset part.
                   Normally DIX displays bit_offsets only if somewhere in the
                   record a data field is not byte aligned.
  [NO]HIGHLIGHT : Data values in current key (IDX files) will be highlighted or not
  WHOLE_RECORD  : Do not try to format, just dump the whole record. In this case
                  all other flags are cleared, and the /FORMAT is ignored. You
                  may specify set display=(whole,[recnr],[recsize],[rfa]) to add
                  an additional record with this info.
  The separator is used in interactive mode between the offset/field/value

  SEPARATOR=NONE     : Do not use a separator
  SEPARATOR=BAR      : Use | as separator
  SEPARATOR=COMMA    : Use COMMA as separator
  SEPARATOR=TAB      : Use TAB char as separator
  SEPARATOR=COLON    : Use COLON (:) a separator
  SEPARATOR=SEMICOLON: Use SEMICOLON (;) as separator
  SEPARATOR=CHARACTER=%Xdd : Use %Xdd as separator

DIX INTERACTIVE_COMMANDS SET EDITOR


  SET EDITOR whichone

  Define your editor for editing description records

  Possible options are
   EDT      Use EDIT/EDT
   INTERNAL Use an internal editor (simple but fast)
   TPU      Use EDIT/TPU

DIX INTERACTIVE_COMMANDS SET EVALUATION_ORDER


   SET EVALUATION_ORDER name[,name...]

   Name can be : PARAMETER,FIELD,SYMBOLS

   When locating a name, DIX can search through various lists.

    1. The list of symbols
    2. The list of all values/parameters
    3. The list of fieldnames (if a file is open)

   Normally DIX will search the lists in above order, but you can change
   it. The SHOW EVALUATION_ORDER will display the current order

   If you do not specify all names, the rest will remain in the original
    order

  Example:
   SHOW EVA
    DIX> sh eva         !show the current setting
    Evaluation order set to :Symbol,Parameter,Field
    DIX> set eval p,s,f !change the order
    DIX> sh eval
    Evaluation order set to :Parameter,Symbol,Field
    DIX> set eval f     !make sure field is in front
    DIX> sh eva          !symbol and field remain in the same order
    Evaluation order set to :Field,Parameter,Symbol

DIX INTERACTIVE_COMMANDS SET Extra_devices

   set extra_devices [/dcl=name ] [/mem=name]

   Change the names for the Memory/dcl 'files' device names.
   This might be useful if the default (logical) names MEM: and DCL:
   are already in use.

   'name' is the new name of the devices. If it is not terminated with a
    colon, DIX will append one.
   The first character must be a letter, the following must be either
    letters or digits.

  Example:
   Set extra/dcl=mydcl:   ! the new name is mydcl:

DIX INTERACTIVE_COMMANDS SET FILE

   SET FILE [mask] [qualifiers]

  Change the attributes for one or more opened files.
  If you do not specify [mask], only the attributes of the current file
  are changed.

  Supported qualifiers are
  /LOCKING=(value[,value...])
   And value
    [NO]RRL        : Change the RRL setting for this file
    [NO]OPTIMISTIC : Change the optimistic locking flag
    See the help about [DIX/HELP] interactive /locking

  /[NO]MODIFY      : Change the modify setting of the file,
                      The current record remains the same.
  /[NO]FAST        : Open/close the file for Fast I/O. This can only be
                     done for files that are open for READONLY.
                     If the file is changed to /MODIFY, the file
                     is automatically closed for Fast I/O.
  /[NO]USE_VIEW    : Toggle usage of view (if view loaded)
  /[NO]BLOCKED[=n.m]: Re-open the file in [non]blocked mode. See the help about
                     /blocked
  /DEFAULT=FAST    : Set the default file access to Fast I/O (if the file
                     is opened for Fast I/O and access was RMS)
  /DEFAULT=RMS     : Set the default file access to RMS I/O (if the file
                     is opened for Fast I/O and access was Fast I/O)
    See also the /FAST qualifier
  /LIMIT

     /LIMIT=value=(string,key=nn)       !limit to key value
     /LIMIT=value=(number,string)       !limit to record number

    See also the DIX/LIMIT qualifier

  /MAX_BYTES
     /MAX_BYTES=n               !limit the record size
     /NOMAX_BYTES               !Clear the limit
    If the record size is larger than 'n' DIX will only display the bytes
     up to 'n'.

  /SEARCH[=name]  !Attach a search pattern to a file. See also the help about
                  !set search

  Example:
   Set file *TEST*/locking=RRL
     Set all files with tag matching *TEST* to RRL locking mode.

   Set file /modify
     Set the current file to modify.

  Example for file search:

    $ DIX/INT SYSUAF
    DIX> SET SEARCH TCPIP[/NAME=MYNAME]    !Define a search pattern
    DIX> SET FILE [SYSUAF]/SEARCH[=MYNAME] !attach the search pattern to the file
    DIX> NEXT RECORD                       !search the next record containing TCPIP

DIX INTERACTIVE_COMMANDS SET FORMAT

  SET FORMAT option
  SET FORMAT DOT     (Default)

  Normally all "character"-like fields will not contain unprintable data.
  These field types are CHARACTER,xSTRING.
  If the data does contain unprintables (hex 0:1f,7f,80:9f or ff) the
  /FORMAT qualifier determines how this data should be displayed.

   Option can be
    DOT   : All unprintables are replaced by a ".". This encoding is not
            reversible, after an unprintable value is replaced by a ".",
            DIX cannot know what the original unprintable value was. This may
            be a problem in the screen mode.
    HEX   : All unprintable data is displayed as %Xdd, a hexadecimal display.
            A % in the data will be displayed as %%. This display is reversible,
            so DIX can reconstruct the original unprintable value.
            If you are in this mode, on input a % must be entered as %%
    PASSALL: DIX will not change the unprintable data. The data is displayed as
            it is. This mode will not work in screen mode, and maybe poorly
            when the output device is a terminal.
    DUMP  : Unprintable bytes are represented by a 2 or 3 letter mnemonic
            like <DEL> or <CR>. A < in the text will be displayed as <<.
            This display is reversible, so DIX can reconstruct the original
            unprintable value.
            If you are in this mode, on input a < must be entered as <<
    ANSI  : Leave ansi escape sequences in the string
             These sequences have the format esc[kar..terminator
             kar can be a digit or a ; to allow for parameters
             terminator is a letter (a..z or A..Z)
             f.e. esc[10;20H set cursor to position row 10, col 20
             For more info see the file sys$system:smgterms.txt

DIX INTERACTIVE_COMMANDS SET INTEGER


  SET INTEGER commands

   SET INTEGER FORMAT /size=n new_format

    Change the conversion format for integers
    /size=n(n=4,8): For what integer size the format is changed
    new_format    : The new format string : see the Fortran manual for defaults
                     but the most useful will be Inn, where nn the maximum text
                     size for conversion.
    /default      : Change back to default
                     size=4 : I10
                     size=8 : I20

DIX INTERACTIVE_COMMANDS SET DCL_COMPATIBLE


  SET DCL_COMPATIBLE compatible|fallback

   Since the DIX syntax looks very much the same as the DCL syntax, you may
   want to use DCL procedures. But in those procedures each command starts with
   a $. If you set DCL_COMPATIBLE to compatible, DIX will remove the first $
   from each line (if it is there), and replace the DCL comparison operators
   (.eq(s)., .gt(s). .not. .and. .or. etc.) by the DIX equivalents (=,> etc.)
   allowing you to use the DCL file as a DIX command file.
   Not all DCL commands are supported of course, but maybe enough.

  If you set dcl_compatible to fallback, DIX will try all commands that
   fail to be processed by DIX via a spawn of a subprocess.
   This will not always work (i.e. if the spawned command defines logs/symbols)
   but maybe it is good enough.

  The default setting is nodcl_compatible

DIX INTERACTIVE_COMMANDS SET KEYBOARD

  SET KEYBOARD value
   Define the input keyboard. Value can be
    Normal : The LK45X keyboard layout
    PC     : The normal PC-type keyboard. Since the PC-keyboard
             misses some keys, those keys are redefined. This is
             visible in the help.
             f13..f20 are displayed as Shift-F3..Shift-f10
             Find                      Home
             Select                    End
             Next_screen               PageDown
             Prev_screen               Pageup
    LAPTOP : The normal LAPTOP misses also the PF1-PF4 keys, they
             are redefined to ^F,^G,^K and ^L as well as the PC
             keyboard modifications.

DIX INTERACTIVE_COMMANDS SET LAX_QUOTES


  SET LAX_QUOTES enabled/disabled/yes/no

  If lax_quotes are set, DIX allows symbol substitution without the
   trailing quote, like DCL. In DCL mode lax_quotes are enabled.

  Example:
    DIX> a=10
    DIX> say 'a'
    10
    DIX> say 'a
    %DIX-E-INVRADEXP, Invalid radix expression a
    DIX> Enable lax
    DIX> say 'a
    10
    DIX> say "''f$time()ab"
     5-SEP-2016 22:55:42.13ab
    DIX> say "''f$time()'ab"
     5-SEP-2016 22:55:42.13ab
    DIX> disable lax
    DIX> say "''f$time()'ab"
    ''f$time()ab

DIX INTERACTIVE_COMMANDS SET LIBRARY


  SET LIBRARY libname [/write]

  Set user library filename for the descriptions.
  The library must be a text library and exist.

DIX INTERACTIVE_COMMANDS SET LOW_FIRST


   SET LOW_FIRST ENABLED|YES|ON
   SET LOW_FIRST DISABLED|NO|OFF     (Default)

   When a table has more than one dimension, DIX will vary the
   lowest dimension first. So if you have a symbol a(2,2), DIX will
   display A(1,1),   A(1,2),   A(2,1),   A(2,2)

   If you disable LOW_FIRST, DIX will display
   display A(1,1),   A(2,1),   A(2,1),   A(2,2)

   More interesting, this also affects fields in records.

DIX INTERACTIVE_COMMANDS SET MESSAGE


  Change the way DIX displays error messages

DIX INTERACTIVE_COMMANDS SET MESSAGE qualifiers


DIX INTERACTIVE_COMMANDS SET MESSAGE qualifiers /FACILITY

  /FACILITY
  /NOFACILITY

  Set or clear the facility part

DIX INTERACTIVE_COMMANDS SET MESSAGE qualifiers /IDENT


  /IDENT
  /NOIDENT

  Set or clear the ident part

DIX INTERACTIVE_COMMANDS SET MESSAGE qualifiers /SEVERITY

  /SEVERITY
  /NOSEVERITY

  Set or clear the severity part

DIX INTERACTIVE_COMMANDS SET MESSAGE qualifiers /EXECUTABLE

  /EXECUTABLE
  /EXECUTABLE

  Set or clear the executable part.
   If you search messages in images, DIX will append the image name if
   /executable is set. See the F$MESSAGE function

DIX INTERACTIVE_COMMANDS SET MESSAGE qualifiers /TEXT

  /TEXT
  /NOTEXT

  Set or clear the text part

DIX INTERACTIVE_COMMANDS SET MESSAGE qualifiers /NONE

  Clear all message flags

DIX INTERACTIVE_COMMANDS SET MESSAGE qualifiers /ALL

  Set all message flags

DIX INTERACTIVE_COMMANDS SET MOUSE

  SET MOUSE ON|ENABLED|YES
  SET MOUSE OFF|DISABLED|NO

  Enable or disable the MOUSE usage in screen mode
  If enabled, DIX will interpret the mouse clicks, if disabled SMG
  will not interpreted the clicks, so you can select/copy text.
  This mouse flag can also be changed in screen mode via the pf4-m command.

DIX INTERACTIVE_COMMANDS SET ON


  SET ON
  SET NOON

   Like DCL, the SET NOON ignores errors, and let the user check these
   errors by examining $STATUS.

DIX INTERACTIVE_COMMANDS SET OUTPUT_FILTER


   Set output_filter[/qualifier] text
   set nooutput_filter

  Qualifier can be
   /WILDCARD=value
     /WILDCARD=none
     /WILDCARD=standard
     /WILDCARD=extended
     This qualifier decides how 'mask' should match the output line
     If you only specify /wildcard, the /wild=standard is default
     If you do not specify /wildcard, 'mask' must occur in the line

   /REVERSE           Print only the line that do not match 'mask'

   /HIGHLIGHT=(flag[,flag...])
   /CASE_SENSITIVE    'Mask' is matched in a case sensitive way

   The /HIGHLIGHT can be
     any colour from (only one allowed)
      BLACK,BLUE,CYAN,GREEN,MAGENTA,RED,WHITE,YELLOW
     and any colour modifier (multiple allowed)
       BLINK,UNDERLINE,BOLD,REVERSE

      To display the colours the terminal must be able to display ansi colours

  If an output filter is set, only text that match "text" (or not if /reverse)
    will be printed

  See also the GREP command

DIX INTERACTIVE_COMMANDS SET OVERFLOW


  Set overflow enabled|on|disabled|off

   Set or clear the overflow enable flag
   If the flag is cleared, DIX will not abort on overflow detection
   You will still be able to test for overflow via the
   %overflow special symbol, or via the ON OVERFLOW command

DIX INTERACTIVE_COMMANDS SET PAGED_MODE

   SET PAGED NO
   SET PAGED YES
   SET PAGED SCREEN

   Set/clear the paged mode for output. Paged_mode screen will display
   the text in a window to allow easy scrolling (Uses SMG)

DIX INTERACTIVE_COMMANDS SET PIPE_MODE

  SET PIPE_MODE ON|ENABLED|YES
  SET PIPE_MODE OFF|DISABLED|NO

   If you start a line with a ; DIX will assume there are multiple
   commands on the command line, separated by ;.

   If you enable PIPE_MODE, you need not start the command line with
   a ;. The occurrence of a ; somewhere in the command line will
   automatically start piping commands. Since ; can also occur in
   filenames, there is a bit of ambiguity. DIX will check if the next
   character after the ; is a - or a 0..9. If that is true DIX will
   assume the ; to be a part of the filename. Specifying a filename
   with an empty version line type a.a; will be seen as a pipe command.

DIX INTERACTIVE_COMMANDS SET EXPRESSION_PARSE

  SET EXPRESSION_PARSE ON|ENABLED|YES
  SET EXPRESSION_PARSE OFF|DISABLED|NO

  If you enable expression_parse, and you type a command that does
  not have a valid syntax, DIX will try to evaluate it as an expression.

  Example:
  DIX> DISABLE expre   !is the default
  DIX> 10*10
  syntax error
  DIX> ENABLE expre    !set the flag
  DIX> 10*20  !just type an expression, DIX will first try to parse as a
  200        !command, and if that fails, it will evaluate the value.

DIX INTERACTIVE_COMMANDS SET PREFIX


  SET PREFIX Prefixstringexpression

  The prefix for the verify mode of scripts.
  See also the f$environment("verify_prefix") function

DIX INTERACTIVE_COMMANDS SET PROCESS


  Set process/name=Newname
     Change the process name. This can be useful during a long script
     to show the world how far we are.

  Set process/priority=Newprio
     Change the process priority. The original process priority will be
     restored when DIX exits.

  Set process/privileges=(name[,name...])
     Change the process privileges
      name can be any of the normal privilege names or ALL, and may be negated
     DIX will change the "image"-privileges, so the original privileges will
     be restored when DIX exits.

  Set process/units=(blocks|bytes|exact)
     Set the display method for files. On startup of DIX the process setting
     of units (blocks or bytes) will be used the set the DIX style
     Blocks and bytes are the same as under DCL, exact will show the
     exact filesize in bytes as a number.

  Set process/case_lookup=(blind|sensitive)
     Set the way name matching is done. On startup of DIX the process
     setting of case_lookup will be used the set the DIX style.
     Case_sensitivity is still under development and may not work everywhere.
     This can also be set via enable/disable case_sens

DIX INTERACTIVE_COMMANDS SET PROMPT

  Change the default prompt.

  SET PROMPT string
   If the string contains a # sign, this # will be replaced by _level
   if the commandfile depth is >1
   The default prompt is DIX#>, which will be
     DIX> at level 1
     DIX_1> at level 2, etc.

DIX INTERACTIVE_COMMANDS SET QUOTED

   SET QUOTED ENABLED|YES|ON
   SET QUOTED DISABLED|NO|OFF     (Default)

   Sets the way DIX will output strings.
   By default DIX will only print the contents of the string, but
   if you enable the setting, DIX will put quotes around the contents

   Example:

   DIX> a="new string"                  !fill a string
   DIX> say a                           !evaluate it
   new string                           !no quotes
   DIX> sh quo                          !show the quote setting
   Print quoted set to : No(disabled)   !it is disabled
   DIX> set quoted ena                  !set to enabled
   DIX> say a                           !and evaluate again
   "new string"                         !and now with quotes

   And now (a maybe more useful) example for a table of strings

   DIX> a=["f","b"]                     !now for a table
   DIX> say a                           !and eval
   ["f","b"]                            !with quotes
   DIX> set quoted dis                  !disable quote setting
   DIX> say a                           !and again
   [f,b]                                !now only the contents

DIX INTERACTIVE_COMMANDS SET REAL


   SET REAL commands
   SET REAL FORMAT/SIZE=n[/default] format
   SET REAL SKIP_TRAIL [/NOSKIP_TRAIL]
   SET REAL FIXED [/NOFIXED]

  SET REAL FORMAT[/size=n] [/default] format

    Set the format for conversion. This format is the normal Fortran
    real format specification, (Fn.m, En.mEe, Gn.mEe).

    n is maximum field width
    m is the number of digits after the decimal.
    e is the number of digits in the exponent (default 2).

    See the Fortran manual for more detail.

    /SIZE=n : set the format for size=n (n=4,8,16)
    /DEFAULT: set the format back to the default

    The default formats are
     size
      4   g20.8
      8   g25.10e3
      16  g30.15e4

  SET REAL [NO]SKIP_TRAIL /SIZE=n
    /SIZE=n : set/clear the SKIP_TRAIL flag for size=n (n=4,8,16), if you
              do not specify /size, all sizes are changed

   By default DIX will remove trailing zeros in the reals (at least
    after the decimal point) and the leading zeros in the exponent.
    This means that the text size may be shorter than the size specified
    by the format (but it is more readable).
   Specifying SET REAL NOSKIP_TRAIL/size=n will stop this.

  SET REAL [NO]FIXED /SIZE=n
    /SIZE=n : set/clear the FIXED flag for size=n (n=4,8,16), if you
              do not specify /size, all sizes are changed

   By default DIX will remove spaces.
    This means that the text size may be shorter than the size specified
    by the format (but it is more readable).
   Specifying SET REAL FIXED/size=n will stop this.

   Example:
    DIX> REAL*16 test=1.0q20
    DIX> say test
    0.1E21
    DIX> Set real noskip/size=16
    0.100000000000000E+0021

DIX INTERACTIVE_COMMANDS SET SCREEN_MODE


   Change mode to full-screen mode. DIX will be using SMG routines
   to display data.

DIX INTERACTIVE_COMMANDS SET SEARCH


   Set search[/name=patternname] search_options

   Change the search flags.
   You can specify more than one search_patterns. If you do not
    specify the /name, DIX will use a default search_pattern (Default).
    The name can be used in the search/name command.

   You can also attach a search pattern to a file (set file/sear=name).
    After attaching a search pattern, any record selection command like
    NEXT RECORD or PREV record or READ/KEY/REC will only find records
    matching the search pattern.

   The search flags can be set like the settings on the command line.
   See the help about [DIX/HELP] Record_searches

  Example for file search:

  $ DIX/INT SYSUAF
  DIX> SET SEARCH TCPIP[/NAME=MYNAME]    !Define a search pattern to look for
                                         ! records containing TCPIP
  DIX> SET FILE [SYSUAF]/SEARCH[=MYNAME] !attach the search pattern to the file
  DIX> NEXT RECORD                       !search the next record containing TCPIP
  DIX> NEXT RECORD                       !search the next record containing TCPIP
  DIX> PREV RECORD                       !search the previous record containing TCPIP

DIX INTERACTIVE_COMMANDS SET SELECT_FILE


  Set select_file pattern [/qualifiers]

   Change the settings for an existing select_file pattern
  For the qualifiers see the help about add select command
  with one extra /reset. If you specify /reset, the select pattern is
  cleared before parsing the rest

DIX INTERACTIVE_COMMANDS SET STATISTICS


  Set statistics/[no]usage

  Set DIX to display a control_t like statistics line after each command.

  Example:
    DIX> set stat/usage
    ELAPSED:    0 00:00:00.00  CPU: 0:00:00.00  BUFIO: 0  DIRIO: 0  FAULTS: 0
    DIX> sh symb a
    ELAPSED:    0 00:00:00.00  CPU: 0:00:00.00  BUFIO: 0  DIRIO: 0  FAULTS: 9
    DIX> Set stat/nousage

DIX INTERACTIVE_COMMANDS SET STRICT


  Normally DIX is not very strict in the symbol handling.
  You can define new symbols by typing
  1. a=10 (define the symbol a, type integer, value 10)
  and then say
  2. a="SKLFG" (redefine a to type character, value "SKLFG"

  DIX has two levels of more strict behaviour
  /TYPING      : Once a symbol is created, you cannot change the type anymore
                  In the example above you can do 1. but not 2.
  /DECLARATIONS: All symbols have to be declared before usage
                 This also disallows calling subroutines or @ files
                   and not having the same number of arguments
                   defined and declared. See the ENTRY statement.
  /LOCAL       : Even with /DECLARATIONS, symbols from an outer level
                  can be used. With /LOCAL this is not allowed.

DIX INTERACTIVE_COMMANDS SET SUBSTITUTION


  Set substitution [/qualifiers]

  Change the way how DIX uses substitution

   /none               : Disable all symbol substitutions

   /[no]VERB           : Try to substitute the verb (like DCL does)

  The /SYMBOL defines the symbol substitution in the command line

   /NOSYMBOLS          : Do not substitute 'text' to the value of symbol text
   /SYMBOLS=QUIET      : Try to substitute 'text' to the value of symbol text
                         If it fails, remove the '' part and do not signal
   /SYMBOLS=SIGNAL     : Try to substitute 'text' to the value of symbol text
                         If it fails, signal an error
   /SYMBOL=TRY         : Try to substitute 'text' to the value of symbol text
                         If it fails, do not remove the '' part and do not signal

   If you enter /SYMBOL without a value, DIX will
    use /SYMBOL=SIGNAL in DIX mode
    and /SYMBOL=QUIET in DCL mode

  The /DESCRIPTION defines the symbol substitution in the descriptions

   /NODESCRIPTIONS     : Do not substitute 'text' to the value of symbol text
   /DESCRIPTIONS=QUIET : Try to substitute 'text' to the value of symbol text
                         If it fails, remove the '' part and do not signal
   /DESCRIPTIONS=SIGNAL : Try to substitute 'text' to the value of symbol text
                         If it fails, signal an error
   /DESCRIPTIONS=TRY   : Try to substitute 'text' to the value of symbol text
                         If it fails, do not remove the '' part and do not signal

   If you enter /DESCRIPTIONS without a value DIX will use /DESCRIPTIONS=SIGNAL

  The default setting is

  /VERB/SYMBOL[=SIGNAL]/DESCRIPTIONS=QUIET in DIX mode and
  /VERB/SYMBOL=QUIET/DESCRIPTIONS=QUIET in DCL mode

  You can also enable the symbol substitution is the trailing quote is missing
   (like DCL). For more info see help about "set lax_quotes"

  set subs/[no]lax_quotes

DIX INTERACTIVE_COMMANDS SET SYMBOL


    SET SYMBOL/DCL NAME VALUE[/LOCAL] [/GLOBAL]

    SET SYMBOL /scope=([no]local,[no]global)
     Set symbol scoping (like DCL)

    SET SYMBOL mask/[no]readonly        Set or Reset readonly flag

    SET symbol mask/type=[#]typename

  Associate a symbol with a fieldname string
  fieldnamestring is
    1. a string containing a valid fieldname list
    2. a string containing #TYPENAME
        where TYPENAME is a type containing a valid fieldnames list
  This allows you to input values with names see example

   DIX> set symbol test/type="0=NULL,255=ALL"
   DIX> sh symb/fu test
   TEST(Integer*4,Level=1.0)=5
     Type : #MYNAMES (0=NULL,255=ALL)

   A more useful examples
   DIX> ADD TYPE Weekdays="0=sunday,1=monday,2=tuesday,3=wednesday,"+-
                      "4=thursday,5=friday,6=saturday"
   DIX> set symbol day/type=#weekdays
   DIX> day = saturday
   DIX> sh symb day
   DAY=saturday
   DIX> say day
   6

DIX INTERACTIVE_COMMANDS SET SUBFIELD_SEPARATORS

   set subfield_separators xy

   Set the characters for subfield specification
   x is the opening character, y is the closing character
   The default is {}
   x and y must be different and not be any of a-z or, or 0-9 or /

  Example:
   DIX> a=12
   DIX> say a{*}
   [0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
   DIX> set subfield=[]
   DIX> say a[*]
   [0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

DIX INTERACTIVE_COMMANDS SET TABLE_SEPARATORS

   set table_separators xy

   Set the characters for table displays
   x is the opening character, y is the closing character
   The default is []
   x and y must be different and not be any of a-z or, or 0-9 or /

  Example:
   DIX> a=[1,2,3]
   DIX> say a
   [1,2,3]
   DIX> set table={}
   DIX> say a
   {1,2,3}

DIX INTERACTIVE_COMMANDS SET TERMINAL


   SET terminal /[no]line_editing
      Enable/disable line editing. In line_editing mode the function keys
      F6-F14 cannot be used for key definitions.

   SET terminal /[no]broadcast            Set /clear the broadcast flag
   SET terminal /[no]application_keypad   Set keypad state
   SET terminal /[no]insert               Set/clear insert mode
   SET terminal /[no]overstrike           Set the default insert/overstrike flag

   SET terminal /width=nn   (nn must be between 40 and 132)
      Change the terminal width

   SET terminal/page=nn
      change the page size of the terminal

  Normally DIX will use SMG$ routines to read input.
  DIX has two more enhanced input methods (on terminal input only)

  a./EXTENDED_INPUT : Allows you to edit your command line over more than
                      one line on the terminal.
  b./AUTO_INPUT     : Uses the DIX CLD tables to automatically expand
                      verbs, qualifier and values.

DIX INTERACTIVE_COMMANDS SET TERMINAL EXTENDED_INPUT


   SET TERMINAL/[NO]EXTENDED_INPUT/[NO]ARROW_RECALL

     Switch to (or from) extended input mode.
     In normal mode, DIX will use the SMG$READ_COMPOSED_LINE routine to
      handle input.
     In extended input mode, DIX will process input itself, and allows you
      to edit a command line even if it stretches along multiple lines
      on the screen. You may use the Up/Down arrow to move between the lines
      on the screen. If you want to use command recall you must use
      PF1-Up/Down arrow (first press pf1, and then up/down arrow).

      You can even search in the DIX help for the first keyword

      If you specify /ARROW_RECALL, DIX will inverse the usage
        of the up/down arrows.
         Without pf1 : Command line recall
         With pf1    : Positioning within the current input line(s)

    Supported keys during line editing

          Right arrow/^F : Go 1 position to the right
      PF1-Right arrow/^F : Go 1 word to the right
          Left arrow/^D  : Go 1 position to the left
      PF1-Left arrow/^D  : Go 1 word to the left
          Up arrow       : If arrow_recall: Recall the previous line
                           else : Go to the previous line on this input
      Pf1-Up arrow       : If arrow_recall: Go to the previous line on this input
                                      else: Recall the previous line
          Down arrow     : If arrow_recall: Go to the next line on this input
                                      else: Recall the next line
      Pf1-Down arrow     : If arrow_recall: Recall the next line
                                      else: Go to the next line on this input
      Enter/Return       : Accept input
     ^Z/ F10             : Abort input
      PF2/HELP(F15)      : Display help about the first word on the line
      ^R/^W              : Reprint the line (i.e. after broadcast)
      ^L                 : Toggle the arrow_recall flag
      ^A/F14             : Toggle between insert/overstrike
      ^H/F12             : Go to the beginning of the line
      ^E                 : Go to the end of the line
      ^X/^U              : Erase line from cursor position to beginning of line
      ^J/F13             : Delete word to the left
      PF1-^J/F13         : Delete word to the right

    Note:
      PF1-xx means : First type PF1 and then the xx key
      The Fnn keys cannot be used if line_editing is disabled
        set term/noline_editing

DIX INTERACTIVE_COMMANDS SET TERMINAL AUTO_INPUT


  SET TERMINAL/AUTO_INPUT

  DIX will check on the typed characters to check if the built up line
  is a valid command. It makes use of the DIX CLD tables to check
  for each VERB, QUALIFIER, PARAMETER and VALUE if the string entered is
  correct and possible helps you complete it.

  The following control_inputs are supported

^L/F8 : Display a list of possible inputs for the current token.
       i.e. If you are entering a VERB (the first part of the command)
       DIX will display a list of all possible verbs that match the
       current part of a VERB.

       The same will work for qualifiers.

       For parameters and values DIX has some nice enhancements
       a. If the value must be an input file, DIX will print a list of
          file names matching the current string
       b. If the value must be a directory, DIX will print a list of
          directory names matching the current string
       c. If the input is a list of privileges, DIX will print a list of
          privilege names

   ^V       : Switch to extended input mode for this command. In AUTO_INPUT
               you can only enter commands, but i.e. not assignments.
               Typing ^V disables the checking for this line.

   TAB      : Replace the current string with the next match of a value
   PF1-TAB  : Replace the current string with the previous match of a value

   HELP     : DIX will show the help about the current (partial) verb

   DELETE   : Delete the character to the left of the cursor
   ^J/F13   : Delete the current token
   ^U       : Delete the whole command line
   ^A/F14   : Toggle insert/overstrike
   Left/Right Arrow
            : Move the cursor within the last token

  Since each qualifier or value can provoke a syntax change (see the OpenVMS manual
   "Command definition, Librarian and Message Utilities manual" for the
   meaning of a syntax switch), you cannot move the cursor to a position
   before the current token. You can of course delete characters/tokens.

DIX INTERACTIVE_COMMANDS SET VERIFY-NOVERIFY


  Set verify    Set verify mode on for image and procedure data
   set verify=([no]procedure,[no]image)
                set / clear verify settings for image/procedure

  Set noverify  Clear verify mode (is the same as set ver=(noprocedure,noimage)

  In verify mode all (data) lines read from the command procedure are echoed to
  the terminal.

  See also the f$environment("verify_..") function

DIX INTERACTIVE_COMMANDS SET WILDCARD


  SET WILDCARD NONE
  SET WILDCARD STANDARD
  SET WILDCARD EXTENDED

  Set the default wildcard setting.

   WILDCARD NONE     No wildcard matching is used.
   WILDCARD STANDARD The following wildcard characters can be used
            *     : Matches all substrings (0 or more chars)
            %     : Matches exactly 1 char
   WILDCARD EXTENDED The Following extended wildcard characters can be used
            [abc] : Matches a "a" or a "b" or a "c"
            [-abc]: Matches anything except a,b,c
            [a-z] : Matches all letters (a-z)
            [-a-z]: Matches anything except letters
            'a    : Char "a" is no longer a special char ([*%' etc.)
            ~     : If in front of the search string, the search string must be in the
                    beginning of the line, if at the end of the search string,
                    the search string must be at the end of the line
            !     : Matches one or more whitespace chars

DIX INTERACTIVE_COMMANDS SHOW


  Show all kind of things.

  SHOW File[/all][/full][/description]
                          Show file information
  SHOW FILE/PPF           Show PPF files (SYS$OUTPUT, SYS$INPUT, SYS$COMMAND)
  SHOW FILE/MEM[/full]    Show memory files (from /output=mem:...)

  SHOW All                Show a lot of things

  SHOW Description        Show current description from internal data structure
  SHOW Description/SOURCE Show current description from source file/module
  SHOW Description/EXPAND Show current expanded description

  SHOW View               Show current view from internal data structure
  SHOW View/SOURCE        Show current view from source file/module
  SHOW View/EXPAND        Show current expanded view
  SHOW default            Show the current default directory
  SHOW Parameter [mask]   Show parameters

  SHOW Symbols [mask]     Show defined symbols
  SHOW Display            Show default display parameters (HEX,Number,raw etc.)
  SHOW Terminal           Show the terminal setting inclusive /[no]extended input
  SHOW Keyboard           Show current keyboard setting
  SHOW LIBRARIES          Show the current libraries (system and user)

  SHOW CHARACTERS[/unprint]  Show the (unprintable) character table
  SHOW CLITABLE_address[/HEX]
                           Show the value for CTL$AG_CLITABLE, after you set it
                           with set clitable (see the help about "set clitable")

  SHOW DCL_COMPATIBLE     Show the current setting of the DCL_COMPATIBLE
                          setting (see the help about SET DCL_COMPATIBLE)
  SHOW EVALUATION_ORDER   Show the current evaluation order.
  SHOW FORMAT             Show the current binary translation mode

  SHOW LOGICAL            Show logical names
  SHOW SEARCH             Show the current record search string(s)
  SHOW SELECT_FILE[/full] Show the select_file definitions
  SHOW PROCESS            Show current or other process characteristics
  SHOW SUBSTITUTION       Show the current symbol substitution flag

  SHOW STRUCTURES         Show the current loaded structures
  SHOW Message            Show the current message settings
  SHOW Paged              Show the current paged mode
  SHOW Decimal            Show the settings for decimal arithmetic

  SHOW quoted             Show the current quote setting
  SHOW statistics         Show the current state of the statistics flag
                              (see "set statistics")
  SHOW version            Show the current version of DIX
  SHOW real               Show the size/formats for the real symbols
  SHOW real/layout        Show the bit layout for the various real formats
  SHOW integer            Show the size/formats for the integer symbols

  SHOW Release_notes      Show the release notes

  SHOW functions          Show defined functions

  SHOW SEARCH_PATTERNS    Show the defined search patterns

  
  SHOW system             Like the dcl show system but with extras

    For more info also see the set 'xxx' help.

DIX INTERACTIVE_COMMANDS SHOW All

   Show a lot of the show things

DIX INTERACTIVE_COMMANDS SHOW AUTO


  SHOW the AUTO setting.
  This setting decides if you will save the current settings
  (open files/record and recall buffer) when you exit DIX.
  The EXIT and QUIT command also has the /[NO]AUTO to override this setting

DIX INTERACTIVE_COMMANDS SHOW Characters


  show characters

  Show the character table

  DIX> Show char
      00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F
  00  NUL SOH STX ETX EOT ENQ ACK BEL BS  HT  LF  VT  FF  CR  SO  SI
  01  DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM  SUB ESC FS  GS  RS  US
  02      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /
  03  0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?
  04  @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
  05  P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _
  06  `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
  07  p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~   DEL
  08  128 129 130 131 IND NEL SSA ESA HTS HTJ VTS PLD PLU RI  SS2 SS3
  09  DCS PU1 PU2 STS CDh MW  SPA EPA 152 153 154 CSI ST  OSC PM
  ....

DIX INTERACTIVE_COMMANDS SHOW CLITABLE_ADDRESS


   Show clitable_address [/hex]

   Show the address of the clitable (in p1 space).

   You must set the value via the "set clitable value" command.
   See the help of "set clitable" for more information

DIX INTERACTIVE_COMMANDS SHOW DECIMAL


   Show decimal setting

DIX INTERACTIVE_COMMANDS SHOW DECWINDOWS


  Show DECwindow setting

DIX INTERACTIVE_COMMANDS SHOW description_view


  Show the description or view information

  show descr [/qualifiers]

  show view [/qualifiers]

DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers


DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers /all

  show description/all [mask]

  Display a list of descriptions in the current library(s) (matching mask)
  If the /source is also specified, DIX will display the source of the
  module(s).

DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers /expanded

  show description/expanded

  Show the expanded descriptors for this record.
  You can use /FULL to display more info.

DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers /loaded

  show description/loaded

  Show all loaded descriptions. If more than one file uses the same
  description, this description is loaded only one.

DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers /full

  show description/full

  Show all info about the description. See the /source qualifier.

DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers /source


  Show the original source of the description, instead of the
  interpreted one.

DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers /paged

  Display the data per page (on terminal only)

DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers /output

  /output=filename
  Print the output to the file "filename"

DIX INTERACTIVE_COMMANDS SHOW description_view qualifiers /SCREEN

 /SCREEN
 /NOSCREEN (Default)
  Display the data in an SMG window, that allows you to scroll through it.
  See also SET PAGED SCREEN

DIX INTERACTIVE_COMMANDS SHOW DISPLAY_MODE


  SHOW DISPLAY_MODE

  Show the current setting of the display mode.

DIX INTERACTIVE_COMMANDS SHOW EDITOR


  SHOW EDITOR

  Show the current setting of the editor type.

DIX INTERACTIVE_COMMANDS SHOW EVALUATION_ORDER


   SHOW EVALUATION_ORDER

   Show the current setting of the evaluation order

   When locating a name, DIX can search through various lists.

    1. The list of symbols
    2. The list of all values/parameters
    3. The list of fieldnames (if a file is open)

   Normally DIX will search the lists in above order, but you can change
   it. The SHOW EVALUATION_ORDER can change the order

  Example:
   SHOW EVA
    DIX> sh eva         !show the current setting
    Evaluation order set to :Parameter,Field,Symbol
    DIX> set eval s,f,p !change the order
    DIX> sh eva
    Evaluation order set to :Symbol,Field,Parameter
    DIX> set eval p     !make sure parameter is in front
    DIX> sh eva          !symbol and field remain in the same order
    Evaluation order set to :Parameter,Symbol,Field

DIX INTERACTIVE_COMMANDS SHOW FILE


  Show file [/qualifiers] [mask]

  Show the file information

DIX INTERACTIVE_COMMANDS SHOW FILE qualifiers


DIX INTERACTIVE_COMMANDS SHOW FILE qualifiers /all

  show file/all

  Display a list of all opened files. The current file
  is signaled by an * in the first column.

DIX INTERACTIVE_COMMANDS SHOW FILE qualifiers /file

  Normally the mask is matched against the tag of the opened files.
  If you specify /file, DIX will match the mask against the files on disk.

  Examples:

$ DIX/INT SYSUAF

  DIX> show file
  C TAG    Type    Filename                                   Size
  * SYSUAF IDX     KXSYS_DISK:[VMS_COMMON.SYSEXE]SYSUAF.DAT;2   72
  * means the current file

  DIX> show file sysuaf/file
  Type    Filename                                   Size
  IDX     KXSYS_DISK:[VMS_COMMON.SYSEXE]SYSUAF.DAT;2   72

  In the second example there is no tag, indicating that the file in
  not a DIX opened file, but found on via LIB$FIND_FILE

DIX INTERACTIVE_COMMANDS SHOW FILE qualifiers /full

  show file/full

  Show all info about the file(s).

  Below is an example for SYSUAF:
 DIX> sh file/fu
 C TAG    Type    Filename                                   Size
 * SYSUAF IDX     KXSYS_DISK:[VMS_COMMON.SYSEXE]SYSUAF.DAT;2   72
 Information about file KXSYS_DISK:[VMS_COMMON.SYSEXE]SYSUAF.DAT;2
 File
  Opened for       : Normal I/O,Fast I/O(Default)
   Fast Blocksize  : 1024
   Fast Multibuffer: 4
  Organization     : Indexed
  Lock mode        : Normal
  Record format    : Variable
  Creation   date  : 25-NOV-2003 17:01:26.28
  Expiration date  :  5-FEB-2007 08:15:44.15
  Backup     date  : <No backup recorded>
  Revision   date  :  9-AUG-2006 08:15:44.15
  File id          : (66004,27,0)
  File owner       : [SYSTEM] = [1,4]
  File protection  : S:RWED, O:RWED, G:RE, W:
  Globalbuffercount:          0
 Record
  Record attribute : NONE
  Max record size  :       1412
  Longest record   :          0
 Allocation
  EOF block        :         72 (FFB =    0)
  Allocated blocks :         72
  Bucketsize       :          3
 Areas
  Area Allocation bucketsize  extension
     0         72          3         10
 Keyinformation
            D C I K D  N               ..INDEX. ..DATA..
   Nr Type  u h c c c  u Lvl   Pos Siz Area Bkt Area Bkt Field
            p g p p p  l                 Nr siz   Nr siz
    0 STG   N N Y Y Y NO   1     4  32    0   3    0   3 UAF$T_USERNAME
    1 BIN4  Y Y N N N NO   1    36   4    0   3    0   3 UAF$W_MEM,UAF$W_GRP,UAF
                                                         $L_UIC
    2 BIN8  Y Y N N N NO   1    36   8    0   3    0   3 UAF$W_MEM,UAF$W_GRP,UAF
                                                         $L_UIC,UAF$L_SUB_ID
    3 BIN8  Y Y N N N NO   1    44   8    0   3    0   3 UAF$Q_PARENT_ID(1),UAF$
                                                         Q_PARENT_ID(2)
 * means the current file

  The tags in the keyinformation are
    Nr  : The key number
    Type: The key type (Descending keys have D in front)
    Dup : This key allows duplicate
    Chg : This key is changeable
    Icp : Key values are compressed in index buckets
    Kcp : Key values are compressed in data buckets
    Dcp : Data values are compressed (in data buckets)
    Lvl : The tree depth for index buckets
    Pos : The starting position of the key (multiple lines if more segments)
    Siz : The size of the key (multiple lines if more segments)
    Index:
     Area_nr : The area for the index buckets
     Bktsize : The bucket size for the index buckets
    Data:
     Area_nr : The area for the data buckets
     Bktsize : The bucket size for the data buckets

    Field : Description fieldnames that overlap with this key.

DIX INTERACTIVE_COMMANDS SHOW FILE qualifiers /limit

  Show the limit value/record number for this file
  See the DIX/LIMIT qualifier for more info

DIX INTERACTIVE_COMMANDS SHOW FILE qualifiers /paged

  Display the data per page (on terminal only)

DIX INTERACTIVE_COMMANDS SHOW FIND


  Show find
   Display the find/search settings
   This is an alias for show search

DIX INTERACTIVE_COMMANDS SHOW FORMAT


  show format

  Show the way DIX will display binary data in strings

DIX INTERACTIVE_COMMANDS SHOW FUNCTIONS


  Show functions [mask] [qualifiers]

  Show the defined functions matching mask

  Supported qualifiers are

   /FULL   : Display more info about the function
   /SOURCE : Display the source code

DIX INTERACTIVE_COMMANDS SHOW DCL_COMPATIBLE


  Show the current setting for DCL_COMPATIBLE

   Since the DIX syntax looks very much the same as the DCL syntax, you may
   want to use DCL procedures. But in those procedures each command starts with
   a $. If you set DCL_COMPATIBLE to enable, DIX will remove the first $ from
   each line (if it is there), and also replace the DCL comparison operators
   by the DIX equivalents, allowing you to use the file as DIX command file.
   Also the DCL comparison operators (.eq(s)., .gt(s) etc.) are replaced by
   the DIX versions =,> etc.

DIX INTERACTIVE_COMMANDS SHOW KEYBOARD


  Show the keyboard setting
    Normal/pc/laptop

DIX INTERACTIVE_COMMANDS SHOW KEYS


  SHOW KEYS [key] [/STATE=state]
   Display the (interactivemode) key definitions or
           the definition for key "key"
           [with state="state"]

  SHOW KEYS/DIRECTORY
   Display all IF_STATES

  show keys/binary

   Lets you type keys, and print out what really entered the system in binary

  show keys/binary/smg
   Lets you type keys, and print out what really entered the system in SMG keys

DIX INTERACTIVE_COMMANDS SHOW LOGICAL


   show logical [name] [/qualifiers]

    Supported qualifiers
     which table
       /cluster
       /system
       /group
       /job
       /process
       /table=tablename

    /access_mode=(executive,supervisor,user)
   /structure
   /descendants

   /output=file
   /screen
   /width=nn

   If name is specified and does not contain a wildcard, and table does
   not contain a wildcard and not descendants and not structure
   DIX can display the logicals. If any of the above is not valid, DIX
   will spawn a subprocess to display the logicals. In this case the
   following is true
      For now the executive mode logicals from a process private logical name
      table cannot be displayed, since inner mode logicals are not copied
      to the subprocess

   If mylog is defined in the process table with executive mode:
         DIX> SHOW LOG mylog   ! display the logical correctly
         DIX> SHOW LOG mylog*  ! DIX will spawn a subprocess and will not
                                 display mylog

DIX INTERACTIVE_COMMANDS SHOW MESSAGE


  Show the message settings

DIX INTERACTIVE_COMMANDS SHOW MOUSE


  Show the state of the mouse for screen (SMG) displays.

  If the state is ON, DIX will interpreted the mouse, and so disallowing
   the mouse to select a piece of text on the screen.

  if the state is off, DIX (SMG) will use it to position in a window

DIX INTERACTIVE_COMMANDS SHOW OVERFLOW


  Show overflow

  Show the current setting for the overflow flag

DIX INTERACTIVE_COMMANDS SHOW PAGE_MODE


  SHOW PAGE_MODE

  Show the current setting of the paging mode.

DIX INTERACTIVE_COMMANDS SHOW PARAMETERS


  Show parameters [mask] [/hex] [/name_only] [/statistics]
                  [/level=n][/global][/all]

  Show all parameters of the current description.
  global  : Show global parameters
  all     : Show parameters for all levels
  level=n : Show parameters for level n
     n can be  1..current command level
       or     -1..-n  N levels up

   The default command level is the current command level

DIX INTERACTIVE_COMMANDS SHOW PROCESS

   Show process [qualifiers] [/IDENT=PID] [name]

   Show process info. Either by PID or by name
   If neither is specified, the current process is used

  Qualifiers can be

   /ALL        : Show all info
   /[no]name   : Show process name/user/node/pid
   /privileges : Show process privileges
   /priority   : Show process priority
   /quota      : Show process quota
   /case_lookup: Show the case sensitivity mode
   /units      : Show the current filesize display method (blocks/bytes/exact)

   /continuous : Use a SMG display to continuously show a
                 lot of process information.

   In the /continuous mode you can specify none of the
   qualifiers above, but you can use the following
    /INTERVAL=nseconds : May be specified as 0 (default is 1)
    /COLOURS=ncol      : Highlight the values with a different colour
                         if changed in the last 'ncol' intervals.
                         The default is 1 (bolding)

DIX INTERACTIVE_COMMANDS SHOW PREFIX


  Show the current prefix setting
  See also the f$environment("verify_prefix") function

DIX INTERACTIVE_COMMANDS SHOW REAL


  Show real size, skip_trail flag, type and format for real conversions.
  The skip_trail flag and formats can be changed via the SET REAL command.

  The datatypes depends on the architecture (see table)
         Size
   Arch   4         8     16
   VAX    REAL_F REAL_D REAL_H
   Alpha  REAL_F REAL_G REAL_X
   IA64   REAL_S REAL_T REAL_X

  Example:

  DIX> show real
   Size  4 SKIP   type REAL_F format (G20.8)
   Size  8 SKIP   type REAL_G format (G25.10E3)
   Size 16 SKIP   type REAL_X format (G30.15E4)

DIX INTERACTIVE_COMMANDS SHOW Release_notes


  Display the release notes

  show release_notes [/page]

   Show all release notes

  show release_notes/version

   Show all versions with their release dates without the contents

  show release_notes/version=d.d-d

   Show the release_notes for version
   The version can be entered as d     (Only major version)
                              or d.d   (major.minor version)
                              or d.d-d (major,minor,patch release)

DIX INTERACTIVE_COMMANDS SHOW SEARCH


  Show search
   Display the find/search settings
   This is an alias for show find

DIX INTERACTIVE_COMMANDS SHOW SKEYS


  Show the key definitions for the screen mode.
  They can be defined with the define/skey command.
  The default key setting is described in the help about key_mapping.

DIX INTERACTIVE_COMMANDS SHOW STRICT


  SHOW STRICT

  Show the current setting of the strict setting.

DIX INTERACTIVE_COMMANDS SHOW STRUCTURES

   show structures [/quals] [mask]

  Show the loaded structure definitions.
  By default all structure definitions are shown that are reachable.
  A structure definition with the same name as a definition at a deeper level
  will not be shown (unless the /ALL qualifier is specified).

  Mask is a wildcard match (default is *)
  qualifiers are

  /GLOBAL : Only show globally loaded structures
  /LEVEL=n: Show structures loaded at level n
            n can be 1..n   Absolute level 1..n
                     -1..-n n levels up
  /ALL    : Show structures at all levels

  /FULL   : Show more info: All declared fields
  /SOURCE : Show the source of the structure file/module

next