Show some statistics after the command completes If you have a specified /SORT, DIX will display sort statistics too.
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.
Display a line containing the total (per directory), but no files
Display the headers (one for each directory)
/versions=n Determines how many versions of a file DIX will show The default is /versions=1. DCL would print all versions by default.
/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
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
Display is a synonym for EXAMINE
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)
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.
/OUTPUT=filename /OUTPUT=SYS$OUTPUT (Default) Set the output file
/COUNT=n determines the number of records displayed. The default is all records /count=0 will dump no block/records
Display the file header blocks. You can also specify /raw[/hex]
/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
/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)
/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
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.
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
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.
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
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.
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 |
/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
Display the description info after the field value.
/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
/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.
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.
/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 <<
In raw mode the /HEADER will output a line with the byte offsets of the data below.
/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
/OUTPUT=filename Print the output to a file.
/SCREEN /NOSCREEN (Default) Display the data in an SMG window, that allows you to scroll through it. See also SET PAGED SCREEN
/SEARCH=searchmask Display only fields that have a value that matches "searchmask" See also the FIND command
If the output is printed to the terminal, the output is printed per page, and the user must type a return to continue
Do not display the data from the current (possibly modified) data in memory but use the original contents of this record.
Do not display the data from the current (possibly modified) data in memory but use the save area (see also CUT and PASTE).
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
Display data in words. Valid only in /RAW mode.
Display data in bytes. Valid only in /RAW mode.
Display data in longwords. This is the default for RAW mode. Valid only in /RAW mode.
Display integers as unsigned. Not used for /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
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
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
/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)
/NOOFFSET /OFFSET=DECIMAL (Default) /OFFSET=HEX /OFFSET=OCTAL /OFFSET=BINARY Display byte offsets for each field. This is the default.
/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
/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
/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
/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
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
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
/OUTPUT=filename Print the output to a file.
/SCREEN /NOSCREEN (Default) Display the data in an SMG window, that allows you to scroll through it. See also SET PAGED SCREEN
If the output is printed to the terminal, the output is printed per page, and the user must type a return to continue
/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
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
Display the result in HEX.
Display the result in octal.
Display the result in binary.
/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"
/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
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
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]]]
/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
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
/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
/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
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
/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
EXIT [exit_status] Leave DIX or the current command level to a lower level. Qualifiers are /AUTO Override the current auto setting /NOAUTO "" ""
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
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
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.
/output=filename, default SYS$OUTPUT Print the output to a file
/length=n. /length=5 (Default) The "readable" strings must be at least n long
Print some extra info
The string must contain vowels, but not all characters must be vowels.
/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
If you specify /hex, the offset is printed in hexadecimal
If you specify patterns, the string will be printed if any of the patterns match. If you specify /and, all patterns must match
If you specify /case_sens, the patterns must be in correct case.
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 *
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]
Display data in words. Valid only in /RAW mode.
Display data in bytes. Valid only in /RAW mode.
Display data in longwords. This is the default in /RAW mode. Valid only in /RAW mode.
Display integers as unsigned. Not used for /HEX.
Interpret the value in HEX mode.
Do not display fields with "empty" values (0 for binaries and space for text)
/OUTPUT=Filename Print the output to a file.
/SCREEN /NOSCREEN (Default) Display the data in an SMG window, which allows you to scroll through it. See also SET PAGED SCREEN
If the output is printed to the terminal, the output is printed per page, and the user must type a return to continue
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
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 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
result=ABS(input) Return the absolute value of input Input can be integer, complex or real, and result will have the same type
AND (Value1,value2) delivers the ANDed value All arguments are integer The result is integer
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
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)
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
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)
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
Result=conjg(value) The conjugate function For complex values only if value = (val_real,val_imag), conjg(value) will be (val_real,-val_imag)
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
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]
EVEN (Value1) delivers true if value1 is EVEN The argument is integer The result is logical
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
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
Filecount() Return the number of files opened. No arguments may be specified, but the () must be present.
result = hex(input) Make a string containing the hexadecimal value of the input Input can be all formats, output is a string
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
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
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.
value = imag(argument) Return the imaginary part of a complex variable. Argument is complex return value is real
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.
Converts the integer to a logical (low bit) Argument is integer or logical, return value is logical You may abbreviate LOGICAL to LOGI
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
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
LSHIFT (Value1,value2) delivers value1 left shifted by value2 All arguments are integer The result is integer
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)
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)
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]
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]
MOD (Value1,value2) delivers value1 MOD value2 All arguments are integer. The result is integer
NINT(real) will return an int value rounded Argument is character, real or complex return value is integer
NOT (Value1) delivers the negated value The argument is logical The result is logical
ODD (Value1) delivers true if value1 is ODD The argument is integer The result is logical
OR (Value1,value2) delivers the ORed value All arguments are integer The result is integer
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
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
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)
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)
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
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
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"
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]
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
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
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
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
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
F$COLLAPSE(string) will remove all blanks Input and result are character
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
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.
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 ("").
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.
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.
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.
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.
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.
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.)
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
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")
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
result = f$count(ival) Return the n ubner of bits needed to represent value ival DIX> say f$count(10) 4
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
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
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
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
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
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
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
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
F$DESCRIPTION(index) Return info about the loaded descriptions Index is an integer Return value is the name of the loaded description (char)
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:"
Name = F$DIRECTORY() Return the name of the current directory
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"
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
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
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
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)
F$EXISTS(name) Name can be specified with or without quotes Deliver true if name is an existing symbol
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
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
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
F$FAO(controlstring[,parameter[,parameter...]]) Like the DCL F$FAO, format a string controlstring : Char parameter : Either integer, character or date. Output : Char
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)
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
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
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'
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
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
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
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.
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.
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
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$*
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
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$*
result = f$get_symbol(name[local/global]) Get the value of a dcl symbol either local of global
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$*
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
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
F$ICHAR(character) or ICHAR(character) The argument must be exactly one character. Result is an integer with the ASCII value of the argument.
int = f$identifier("NAME","NAME_TO_NUMBER") chr = f$identifier(65540,"NUMBER_TO_NAME") Convert id names to binary and reverse
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]
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
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
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
F$LEFT(STRING) : Result is a left justified string Argument and result are character
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
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
F$LOWCASE(STRING) Result is a string with all letters (a-z) lowercased. argument and result are character
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
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
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
F$MODE() Deliver the mode of the current process INTERACTIVE/BATCH/NETWORK/OTHER
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
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"
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]
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
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.
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.
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.
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.
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
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"
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
F$REAL is an alias for the function REAL
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
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:
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
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
F$RIGHT(STRING) : Result is a right justified string Argument and result are character
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"
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
old=f$setprv(newprivs) Newprivs : String containing the privileges names expression of type privilege Old : Old privileges of type "privilege"
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]]
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"]
value=F$STRING(anyvalue[,hex][,format]) Convert any type to a string F$string is a synonym for string.
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"
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
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'
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)
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
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
F$TRIM(string) will remove all trailing blanks Argument and result are character
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
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.
F$UPCASE(STRING) Result is a string with all letters (a-z) uppercased. argument and result is character
F$USER() Result is a string with the UIC converted to ASCII DIX> say f$user() [BEHGROUP,STUBBF]
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
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)
%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)
%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
%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
%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
%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.
%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
GOMARK markname Return to a previous mark set by MARK.
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
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.
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
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
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)
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.
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
For the /LIST only. Print the insertion date after the name.
/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
For the /LIST only. Print the size and insertion date after the name If you want the size in bytes, add the /size=bytes
/output=filename /output=sys$output (Default) Redirect the output to file 'filename' If you have and .OLB library, this qualifier should be present.
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.
If output to screen, do it by page
Display the data in screen mode
Set the width of the output. The default is the size of the terminal (SYS$OUTPUT) or 80.
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
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
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"
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
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
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
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.
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
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
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
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
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
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.
/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
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.
/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
/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
/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.
/FDL=filename Used with the /CREATE option. DIX will create the file using the FDL file for a specification. See the /CREATE qualifier
Open the file at global level. This is the default. You may open the file at any (procedure) level via the /LEVEL qualifier
/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.
/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.
/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.
/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.
/EQ=value Look for a record with keyvalue EQ the specified value.
/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.
/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.
Display a message when opening the file.
/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.
Load the file in a memory table (readonly) You can still read all records as if it a normal file
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.
/RECORD=number Give the record number to read. If the number is negative, start at 'number' before EOF.
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"
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)
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.
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.
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> 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 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
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.
/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.
/ANGLE=degrees Set the aspect angle of the pie chart. The default is 0 degrees (vertical) degrees must be >=0 and <=80 (almost horizontal)
/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
/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
/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
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.
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
/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
/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
/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.
/FONT=fontname Change the font DIX uses for the DECwindows display DIX has partial support for proportional fonts. See also the /small_font qualifier
/FOREGROUND=colourname The colour used as foreground in the message window
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)
/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.
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
/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
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.
/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"
/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.
/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
/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)
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.
/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.
/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
/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
/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.
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.
/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
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.
/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
/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.
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.
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
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
/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.
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
If you specify /stacked, DIX will stack the successive y-values.
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
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)
/TITLE=text The text plotted above the plot (the plot header).
Draw the plots with a separate y_axis on both sides of the plot
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.
/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.
/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
/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
/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
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.
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'
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
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
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)
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.
/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.
/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
/match=how how is LT,LE,EQ,GE,GT In dcl mode, the /match determines the matching of the keyvalue
/INDEX=keynumber In DCL mode, the keynumber is specified via the /index
/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.
/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.
/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.
/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.
/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.
/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.
/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.
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
/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
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
For unit record devices you may specify /prompt=Promptstring default is DATA:
For unit record devices you may specify /timeout=n : Wait maximum n seconds
For unit record devices you may specify /NOECHO : Do not echo the typed text
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
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
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.
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.
SAY is a synonym of EVALUATE. See the help of [DIX/HELP] interactive EVALUATE
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
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
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
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
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
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
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)
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
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)
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
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
Set default [device:][directory] Change the current default setting
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
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
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
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:
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
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
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
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
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.
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
SET LIBRARY libname [/write] Set user library filename for the descriptions. The library must be a text library and exist.
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.
Change the way DIX displays error messages
/FACILITY /NOFACILITY Set or clear the facility part
/IDENT /NOIDENT Set or clear the ident part
/SEVERITY /NOSEVERITY Set or clear the severity part
/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
/TEXT /NOTEXT Set or clear the text part
Clear all message flags
Set all message flags
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.
SET ON SET NOON Like DCL, the SET NOON ignores errors, and let the user check these errors by examining $STATUS.
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
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
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)
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.
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.
SET PREFIX Prefixstringexpression The prefix for the verify mode of scripts. See also the f$environment("verify_prefix") function
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
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.
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
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
Change mode to full-screen mode. DIX will be using SMG routines to display data.
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
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
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
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.
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
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
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]
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}
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.
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
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.
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
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
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.
Show a lot of the show things
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
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 ....
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
Show decimal setting
Show DECwindow setting
Show the description or view information show descr [/qualifiers] show view [/qualifiers]
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).
show description/expanded Show the expanded descriptors for this record. You can use /FULL to display more info.
show description/loaded Show all loaded descriptions. If more than one file uses the same description, this description is loaded only one.
show description/full Show all info about the description. See the /source qualifier.
Show the original source of the description, instead of the interpreted one.
Display the data per page (on terminal only)
/output=filename Print the output to the file "filename"
/SCREEN /NOSCREEN (Default) Display the data in an SMG window, that allows you to scroll through it. See also SET PAGED SCREEN
SHOW DISPLAY_MODE Show the current setting of the display mode.
SHOW EDITOR Show the current setting of the editor type.
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
Show file [/qualifiers] [mask] Show the file information
show file/all Display a list of all opened files. The current file is signaled by an * in the first column.
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
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.
Show the limit value/record number for this file See the DIX/LIMIT qualifier for more info
Display the data per page (on terminal only)
Show find Display the find/search settings This is an alias for show search
show format Show the way DIX will display binary data in strings
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
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.
Show the keyboard setting Normal/pc/laptop
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
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
Show the message settings
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
Show overflow Show the current setting for the overflow flag
SHOW PAGE_MODE Show the current setting of the paging mode.
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
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)
Show the current prefix setting See also the f$environment("verify_prefix") function
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)
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)
Show search Display the find/search settings This is an alias for show find
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.
SHOW STRICT Show the current setting of the strict setting.
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