%ģ Librarian T09-20ĀfŽ®­n„¢ś’®­n„–—5 DIX ­¢ś’®­n„1 DIX) DIX[/qualifiers] filename [/qualifiers]G This is a program to dump/display/edit records in all types of files.C -You can select records by keyvalue and number(indexed files) or 7 recordnumber (sequential files or relative files).C -You can display the record-data in raw format (like VMS DUMP) orI interpreted format. For the interpreted mode you need a description.9 See the help about "display_modes interpreted_dump".< -You can dump/displa y/edit the record data in three modes.G 1. Screen oriented (using SMG) (See help about "modes screen_mode").E 2. Dump records to a file (See help about "modes file_mode").= 3. Interactive mode using powerful scripting possibilitiesL (See help about "modes interactive_mode"). M The program supports INDEXED, RELATIVE, DIRECT ACCESS and SEQUENTIAL files.I The program can open multiple files and multiple descriptions per file.L A fieldname in a record can contain a pointer to (a key in) another file, 1 and you can follow that link to the other file. 9 Files are opened READ-ONLY, unless you specify /MODIFY. 2 PARAMETERD The filename to be "DIX"ed. The filename can contain wildcards. If2 you specify /MULTI_FILE DIX will open all files.F If you do not specify /MULTIFILE and more than one files matches the4 filename, you will be prompted to select one file.B If file_meode there is a second parameter, that contains r ecord 9 selection criteria (see the help on "modes file_mode").2 MODES Dix can operate in 3 modes, J SCREEN_ORIENTED : DIX will display data full screen via the SMG routinesK and lets you look at the record and possibly modify it.F FILE_ORIENTED : DIX will behave like DUMP, no interaction possibleI INTERACTIVE : DIX enter interactive (line) mode. This mode can also) be used in BATCH.: depending on the /SCREEN, /FILE, /INTERACTIV E qualifier E The qualifiers /SCREEN, /FILE and /INTERATIVE must be entered just  after the DIX verb.5 Three more major-qualifiers qualifiers can be given /HELP : display help /DEMO : Display demo pages# /FILE : Display file information 3 SCREEN_MODEE If you specify /SCREEN (default), the program will work full screenD using the SMG routines, and you can look at the data, and possibly$ modify it (see /MODIFY qualifier).# If you have a description presentK 1. You can modify fields (if in modify mode) by entering a right arrow, N Enter, or any printable character. You are in fieldmodifying mode until L you enter an Enter. After you type Enter DIX checks if the typed data L is valid for that field(-type) and restores the original value if not.? The record will not be updated until you type the DO key.M 2. For fields that contain field-names, you can also enter a key_getfieldsM key (default PF1-G) and modify/enter the fieldvalue through a SMG-menu.K 3. If you type a key_contdis (default F8) DIX will open a popup-display K containing information about the description of the current line, andJ update it when you move between lines. If you type key_contdis again" DIX will remove the display.4 And lots more, see the help (Default PF2 or Help) SyntaxK DIX[/SCREEN] filespec[/qualifiers] [searchparameter] [searchparameter] ..C The searchparameter is optional, see the help about record_searchH Upto 7 (search) parameters are supported. DCL allows 8 parameters, and the first one is the filename. 3 FILE_MODEG If you specify /FILE the program will dump the data to a file or the J terminal (see /OUTPUT qualifier) in either interpreted or raw dump mode. SyntaxD DIX/FILE filespec[/qualifiers] [searchparameter] [searchparameter]C The searchparameter is optional, see the help about record_searchH Upto 7 (search) parameters are supported. DCL allows 8 parameters, and the first one is the filename.3 INTERACTIVE_MODE> If you specify /INTERACTIVE, DIX will enter interactive modeC and lets you display/modify fields. This mode works in BATCH too,G so you can create command-files and use DIX to display/modify fields.& See also the /INTERACTIVE qualifier.#![Interactive mode]DIX /INTERACTIVE Syntax: DIX/INTER [filespec] [/qualifiers] [searchparameter] ..G Filespec is optional. If you do not specify a filespec DIX will startF without any file open. You can then later open/close files with the & interactive commands OPEN and CLOSE. Example:, DIX/INTER SYSUAF/MODIFY /script=mycommands9 Will execute the commands in mycommands[.dix] and exit.C The searchparameter is optional, see the help about record_searchH Upto 7 (search) parameters are supported. DCL allows 8 parameters, and the first one is the filename.2 FILETYPE_SUPPORT) The following file types are supported. 3 SEQUENTIAL D For SEQUENTIAL or RELATIVE files the record selection is based on C the /RECORD qualifier. If the start record is nn, the first nn-1 4 records will be skipped, this may take some time. I If the record format is fixed, DIX can read the record directly without! skipping the previous records. 4 /RECORD /RECORD=nr G You can specify the starting record number. For indexed files you can; also use the /key to go to the 'n'th record on key 'key'.: If not specified the program starts at the first record.3 INDEXED_FILES9 For INDEXED files the record selection is based on the 9 /EQ or /GE or /GT or /LE or /LT and the /KEY qualifier.F If the key has Ascending attributes, the /EQ, /GE or /GT qualifiers M must be used, and if the key is descending, the /EQ, /LE or /LT qualifiers.I Information about the keytypes can be obtained via the /INFO qualifier. 4 /RECORD /RECORD=nr H You can specify the starting record number. You can also use the /key ) to go to the 'n'th record on key 'key'.4 /KEY /KEY=nr< Look for the keyvalue on the specified key. Default is the primary key (0).A If none of the LT,LE,EQ,GE,GT options is specified, the program8 will start with the first record on the specified key.4 /LT /LT=value9 Look for a record with keyvalue LT the specified value.I Information about the keytypes can be obtained via the /INFO qualifier.F The values will be converted by DCL to Uppercase, unless enclosed in, quotes. See also the help about keyvalues.4 /LE /LE=value9 Look for a record with keyvalue LE the specified value.I Information about the keytypes can be obtained via the /INFO qualifier.F The values will be converted by DCL to Uppercase, unless enclosed in, quotes. See also the help about keyvalues.4 /EQ /EQ=value9 Look for a record with keyvalue EQ the specified value.F The values will be converted by DCL to Uppercase, unless enclosed in. quotes. See also the help about keyvalues.4 /GE /GE=value9 Look for a record with keyvalue GE the specified value.I Information about the keytypes can be obtained via the /INFO qualifier.F The values will be converted by DCL to Uppercase, unless enclosed in, quotes. See also the help about keyvalues.4 /GT /GT=value9 Look for a record with keyvalue GT the specified value.I Information about the keytypes can be obtained via the /INFO qualifier.F The values will be converted by DCL to Uppercase, unless enclosed in, quotes. See also the help about keyvalues. 4 KeyvaluesA When specifying a keyvalue with /lt,/le,/eq,/ge,/gt the program? will check for the keytype (in the file). For binary keytypes9 the program will convert the data from ASCII to binary.A For string types you can enter binary values via the %DD syntax8 where DD are hexadecimal digits (%% will enter one %)." See the conversion options below5 INT2_conversion0 INT2 values can only be specified as integers.5 INT4_conversion( INT4 values can be specified in 3 ways 1. A normal integer.C 2. A number with another RADIX in two formats 'DDDD'R or %Rddddd= Radix can be X (headecimal), O(Octal) or D(decimal) or: %Xddd (hexadecimal), %Oddd (octal), %Dddd (decimal)6 3. A Date which will be converted to DATE*4 format. 4. A VMS Identifier 5. A UIC e.g. [SYSTEM] 6. An Ascii string "ABCD"5 INT8_conversion+ INT8 keyvalues can be specified in 3 ways) 1. One big integer up to 18 charactersH 2. Two INT4 values separated by a . (e.g. 10.20, see INT4 conversion) (e.g. SYSTEM.1-jan-1991)& 3. A date string( e.g. 1-apr-1991). 3 VFC_FILESH A VFC file is a sequential file with a fixed prefix. You will normallyG see this type of file form the DCL OPEN statement. This will generateD a VFC file with a 2 byte header, that is used for carriagecontrol.F But you can als create your own VFC file with other sizes (upto 25 5) and other meanings.C DIX will display the data from the normal record in one window, ; and the VFC data in another (in screen mode), or lets you9 display the data via EXAMINE/VFC (in interactive mode).9 The filemode can also display the data when you specify> /DISPLAY=(all) or /DISPLAY=VFC (see the help about /DISPLAY)F The DEPOSIT/VFC will change data in VFC buffer (in interactive mode)M and the PF1-Y command switches from normal data to VFC data in screen mode.2 DISPLAY_MODES8 DIX can work either in RAW dump format or INTERPRETED # (see the /DESCRIPTION qualifier). 3 RAW_DUMP A In the RAW dump mode the dump is equal to the VMS DUMP format. @ It is used if no description file can be found, or if the /RAW qualifier is specified.' The display is split into two parts. L The left part is the data (byte,word,longword) in decimal or hexadecimal. 5 The right part is the data in ASCII (if printable). 8 In RAW dump mode the following qualifiers can be used.4 /BYTEO The data will be dumped in bytes. See also the /WORD and /LONG and /UNSIGNED.4 /WORDO The data will be dumped in words. See also the /BYTE and /LONG and /UNSIGNED.4 /LONGS The data will be dumped in longwords. See also the /BYTE and /WORD and /UNSIGNED. This is the default. 4 /UNSIGNED@ The data (if not in HEX mode) will be interpreted as unsigned.4 /HEX, Display the data in HEXadecimal (default).6 See also the /HEX,/BINARY,/OCTAL,/DECIMAL qualifier. 4 /DECIMAL  Display the data in DECIMAL- See also the /HEX,/BINARY,/OCTAL qualifier.4 /OCTAL Display the data in OCTAL./ See also the /HEX,/BINARY,/DECIMAL qualifier. 4 /BINARY Display the data in BINARY. . See also the /HEX,/OCTAL,/DECIMAL qualifier.3 INTERPRETED_DUMP E In the interpreted mode, the program will try to display the fieldsK of a record. This mode requires a description file (see the /DESCRIPTION)4 This is the default if  a description can be found.J Descriptions can be in files (default 'filename'.DES) or a text library.M DIX will look for a description file in the same directory as the data file4 DIX will look for a file in the current directory.F DIX will look for a module in the DIX_DES .TLB file (system_library)5 (see the help for the /SYSTEM_LIBRARY qualifier)H DIX will look for a module in the DIX_DES_USER .TLB file(user_library)3 (see the help for the /USER_LIBRARY qualifier) For details see /DESCRIPTION.L If no description can be found (or if /RAW is specified), DIX will display in RAW mode.4 /ALL @ If the /ALL is given, all matching descriptions will be used.; If /ALL is not given, only the first match will be used. The search order is9 1. The .DES file in the same directory as the datafile, 2. The .DES file in the current directory) 3. Entries in USERlibrary (if present)+ 4. Entries in SYSTEMlibrary (if present)4 /DESCRIPTION /DESCRIPTION[=name[,name]]; Give the name of a record description file(s) or module. O The format of description file/module is described in the RECORD_FORMAT help.P If the /DESCRIPTION qualifier is given without the filename, the program will L look for a file with a filename as the input file, but with the extension F .DES. DIX also searches the Text library DIX_DES (with default file = "IMAGE_DIRECTORY".TLB), so the textlibrary will be searchedC in the same directory as the DIX i !mage, but you can redefine the J logical name DIX_DES to any textlibrary) for a module with the name thatL matches the filename of the datafile. A match can be on device, directory, name and extension. D DIX also supports a userdefined library. DIX searches for the file, DIX_DES_USER with default SYS$LOGIN:.TLB.J Normally DIX will stop as soon as a match is found, but if /ALL is given) all matching descriptions will be used. Example:- DIX MYDEV:[MYDIR]MYDATA.MYEXTENSION [/DE"S] C 1. DIX searches in the current directory for the file MYDATA.DESA 2. DIX searches for a description file MYDEV:[MYDIR]MYDATA.DESG 3. DIX searches DIX_DES_USER.TLB for a module that matches the name L mydev:[mydir]mydate.myextension. Empty parts of the module name match.M So a module with the name *MY* , .MYEXTENSION, *:[*]*.* will all match.B 4. DIX searches DIX_DES.TLB for a module that matches the name L mydev:[mydir]mydate.myextension. Empty parts of the modu #le name match.M So a module with the name *MY* , .MYEXTENSION, *:[*]*.* will all match. K The first or all (/ALL specified) matches will be loaded and can be used.2 RECORD_FORMAT_FOR_DESCIPTIONSE The description records are in normal ASCII, and can be edited with< a normal editor. Lines starting with C,c or * are skipped E (fortran comment lines) and data after the ! (comment) is skipped. H Continuation lines are not like the normal FORTRAN syntax but use the ' DCL synt$ax (- at the end of the line)H Spaces are ignored, except within names and types and between the type and its qualifier.J Single lines can be upto 255 chars, and the total line length (including- continuation lines) can be upto 4096 chars. There are 3 types of lines  -Parameter definition -Conditional statements -Field Declarations. 3 PARAMETER_DEFINITIONSA With the parameter definition, you can define parameter values,> that can be used later in other parame%ter definitions, or in field declarations. Syntax:  1 PARAMETER [(]name=expression[,name=expr] [)]@ The expression is evaluated at read time, so its value cannot% depend on data in the data-record. examples :  PARAMETER VALUE1 = 121" PARAMETER VALUE2 = (VALUE1*4+12)N DIX supports the +,-,*,/ and () operators with normal precedence. ; DIX also supports some integer functions, see extra info 3 in the help about "interactive_commands function",![&functions]DIX INTERACTIVE_COMMAND FUNCTION3 Other_statements!4 #IF_#IFDEF_#ELSEIF_#ELSE_#ENDIF@ You can use the symbol table to conditionally use parts of theB description. The #IF, #ELSE, #ELSEIF and #ENDIF are available to& dis/enable parts of the description. The syntax is #IF Logical-statement #IFDEF symbolname #ELSEIF Logical-statement #ELSE #ENDIFH The Logical-statement is evaluated using the available DIX-symbols and field variables.@ You can defi'ne the symbols in interactive mode via the normal A assignments and in other modes via the /DEFINE=symbol qualifier2 Example (the indentation is just for visibility) #IF F$EXISTS("LANGUAGE") #IF LANGUAGE="DUTCH" CHARACTER*20 DUTCH_NAME# #MESSAGE "The dutch version" #ELSEIF LANGUAGE="GERMAN" CHARACTER*20 GERMAN_NAME$ #MESSAGE "The german version" #ELSE CHARACTER*20 DEFAULT_NAME% #MESSAGE "The default version" #ENDIF( #ELSE CHARACTER*20 DEFAULT_NAME# #MESSAGE "The default version" #ENDIFD If you change a symbol that would affect the #IF/#ELSEIF clauses,7 you need to force DIX to reevaluate the description.& You can do that via EXAMINE/EXPAND 4 #MESSAGE; You can include the #MESSAGE statement in the description #MESSAGE textB The text will be displayed via a message when the expander finds= this statement. This can be useful with the #IF constructs  see exampl)e below.  declaration statement declaration statement ... #IF F$EXISTS("_DEBUG") #MESSAGE Debug variant integer*4 temp #ELSE integer*4 temp /nodisplay #ENDIFD IF the symbol debug is defined the value of temp will be displayedJ and during the expansion of the descriptions the message "Debug variant"# will be displayed on the terminalD If the symbol debug is not defined, the value of temp will NOT be & displayed and no message will occur.3 Field_de*clarationB You can use any normal fortran declaration, with some extensions General format9 TYPE*(SIZE)[qualifiers] fieldname[(dim1[,dim2[,dim3]])] ; Where size, dim1,dim2,dim3 can be expressions containing -Numbers -Parameter values1 -Fieldvalues of previously defined field_names.7 -Operators +,-,*,/ and () with the normal precedence.= -DIX also supports some integer functions , see extra info 3 in the help about "interactive_commands function"D Fieldnames+ are strings upto 32 characters. They must start with a G letter (a-z), and the following character may contain a letter (a-z), a digit (0-9) , a $ or an _. !![functions]DIX INTERACT FUNCTION Qualifiers can beB /HEXADECIMAL Always display data in hexadecimal format= /BINARY Always display data in binary format< /OCTAL Always display data in octal formatI /RANGE=min_val:max_val For integer values, limit the range of the value@ /NOD,ISPLAY Do not display data (can be referenced)L /USER The type is a user defined type. See the help about# user typesL /UPPERCASE Force conversion to uppercase on field modificationL /LOWERCASE Force conversion to lowercase on field modificationO /LIMIT=value If the value is reached, the repeat loop is terminatedN /LIMIT=>value If the field has a repeat, this will terminate, elseF /LIMIT= DIX allows you to mark a field as an index into another fileI To do this you need to specify at least one of the following qualifiersF /FILE=filename Specifies that th .is field is a key into file > or 'filename'. Default is the same file.C /FILE="expression" If you specify the name in "", it will be I interpreted as a string to be evaluated. In this6 way you can compute the name.< /KEY=keynumber Specifies the keynumber (default=0)H /RECORD Specifies that the value is a recordnumber into# 'filename'8 /MATCH=LT,LE,EQ,GE,GT Keymatch, D /efault is EQ search.L /COMPUTE="computestring" Allows you to do computation on the fieldcontentsJ /IF="ifstring" If specified the IFstring expression must be TRUE+ to take this link.E During the evaluation of the IF, COMPUTE and FILE string the normal; symbol substitution is active, and so the special symbols% $FILE (the current file), $DESCRIPTION (The current description)6 $FIELD (The contents of the current field), can 0be used (as any other symbol/function) See the examples for this( See also the radix_override help below Supported data types areG The {*n} means an implied size. You may specify the size, but if youE do not, this size is assumed. You cannot specify a different size.1 REAL_F{*4},REAL_D{*8},REAL_G{*8},REAL_H{*16} 9 The data types are the VAX realtypes$ REAL_S{*4}, REAL_T{*8},REAL_X{*16}: The data types are the IEEE realtypes 1 REAL*4,REAL*8,REAL*16F These are aliases, the actual datatype depends onI the size and the architecture. The default size = 4.A Replacement according to the following table# Size1 Arch 4 8 163 Vax REAL_F REAL_D REAL_H3 Alpha REAL_F REAL_G REAL_X3 IA64 REAL_S REAL_T REAL_X 2 ; LOGICAL*nn (nn=1..64 in bitfieldmode , 1..8 in byte mode)> The date types are the logical data types> Default size = 4(bytes) in normal mode, < 8(bits) in BITFIELDMODE; RLOGICAL*nn (nn=1..64 in bitfieldmode, 1..8 in byte mode)H The date types are the logical data types, only the& value is reversed> Default size = 4(bytes) in normal mode, < 3 8(bits) in BITFIELDMODE CHARACTER*NN or CHARACTER*(NN)? The data types are the character datatypes- Default size = 1 (byte)= [U]INTEGER*nn (nn=1..64 in bitfieldmode, 1..8 in byte mode)8 The data type is [un]signed integer> Default size = 4(bytes) in normal mode, < 8(bits) in BITFIELDMODED [U]BYTE is accepted as 4 alias for [U]INTEGER*1,+ but only in byte mode7 BITS*NN (nn=1..64 in bitfieldmode, 1..8 in byte mode)D The data structure is a bit stream, nn<=8 Bytes> Default size = 4(bytes) in normal mode, < 8(bits) in BITFIELDMODE8 RBITS*NN (nn=1..64 in bitfieldmode, 1..8 in byte mode)D The data structure is a bit stream, nn<=8 BytesG This is the same as BITS, 5but the meaning of each7 bit is reversed (0 means active).> Default size = 4(bytes) in normal mode, < 8(bits) in BITFIELDMODEF For the integer and bits fields, you may add a list of names to make; the display more readable, see the name_syntax help belowD DATE*4 The data structure is an internal date format =I #minutes since 1857 e.g. VMSdate/(10*1000*1000*60)E DATE*8 6 The data structure is a VMS date format. This is- the default data type.0 UIC{*4} The data structure is a UICH CPUTIME{*4} The data is a 32 bits integer containing cputicks. = This will be displayed as a deltatime.< IDENTIFIER{*4} The data structure is an VMS-identifier> PROTECTION{*2} The data structure is a Protection stringG RINTEGER{*4} The data is a INTEGER*4 with low and high 16 bits 7= swapped (PDP-11 compatible format)? FILEID{*6} The data is a Fileid (filenr,revnr,volnr) ? DISKMAP The data is an ODS-2/5 storage description; ACL The data is the binary ACL description E VFC{*1} The data is interpreted as a carriagcontrol byteJ in a DCL VFC file. See the VMS docs about the layout. String typesD STRING [*NN] The data is a counted ascii string (count=byte)D 8 WSTRING[*NN] The data is a counted ascii string (count=word)H LSTRING[*NN] The data is a counted ascii string (count=longword)7 ZSTRING[*NN] The data is zero terminated string< HSTRING[*NN] The data is terminated by any char >127L If *NN is specified, the strings are variable in a fixed allocation size.* The total allocation is NN (HSTRING)2 NN+1(STRING,ZSTRING) , NN+2(WSTRING) * 9 NN+4(LSTRING)< If *NN is not specified the allocation is variable also. G DIX can handle display and modification of variable fields, but onlyO if the recordlength can be changed (indexed or relative files and not fixed) DECIMAL stringsL [U]DECIMAL The data is an (unsigned) decimal string. Depending on G some qualifiers the allowed data is 0..9,".",E,+,-C 0..9 are always allowed. If the type is signed> : (DECIMAL) the +/- sign are also accepted.< For this datatype there are some extra qualifiers definedG /ZERO_FILL The field is filled with leading zeros. All spaces, will be replaced by 0.D /FRACTION Allow the string to contain a decimal fraction.J This qualifier adds the "." character to the allowed$ character set.= /EXPONENT Allow the string to contain an exponent.E This q ;ualifier adds the E/e and the +/- for theG exponent (E+12 or e-12) characters to the allowed$ character set.G /LEFT_JUST IF the /ZERO_FILL is not specified, this qualifierF decides if a short string must be left or right justified.1 DIX also supports a number of control statementsH STRUCTURE,ENDSTRUCTURE After the structure statement follows a nameO optionally f <ollowed by a dimension (dim1,dim2,dim3)F If the name is specified the fieldname is P extended by .structurename. if no name is specified,9 the fieldname is not extended  UNION,ENDUNION2 MAP,ENDMAP See MAP_SYNTAX below.  2 RANGE,ENDRANGE See RANGE_SYNTAX belowH POSITION[/RELATIVE] (value) Set the bit/byte offset to the value. ThisD can be useful =in some overlay structuresK See also the example in RANGE_SYNTAX. The valueK is the new byte position, unless in a bitfield.P If the /relative is given (or the value is negative)N the value is added/subtracted to/from the current = offset, else it new offset=value.D POINTER Temporary override the bitoffset for theI > following structure. See pointer_syntax below J PAD[*NN] Round up bit/byte-offset to NN fold. nn=2,4,8 F default in bitmode 8 (align to next byte)F else 2 (align to next word)? Rounding takes 0..NN-1 bytes/bits.? The verb ALIGN is a synonym for PADO EXIT [condition] If condition is not specified, it will be evaluatedN ? true. If condition is true, skip the repeat of theA current structure (there must be one)1 See exit_syntax belowI ABORT reason [condition] If the abort statement is seen, DIX checks ifL condition evaluates to TRUE (or is not present).L If this is the case, the description is regardedJ as not valid. This statement can be used to doG @ some sanity checking. See the examples help+ for an example.C You can also define your own types. See the help about usertypes. M Any variable can be followed by a dimension description up to 3 dimensions.5 Dimension are specified as Low:high or high (low=1)G The sizes and dimensions can expressions with numbers, parameters or I other fieldnames in the description. If fieldnames are used, they must 6 appeAar before the line in which they are referenced. BITFIELD ENDBITFIELDC Normally the number after the * will be interpreted as bytes, butG between a BITFIELD and an ENDBITFIELD the numbers will be interpretedM as bits. Only (U)INTEGER,(R)BITS,LOGICAL and PAD fields are allowed betweenI BITFIELD and ENDBITFIELD. After an ENDBITFIELD the record pointer will  be padded to the next byte. Example:= INTEGER*4 value value contains 4 bytes = 32 bits BITFIELD3 B integer*4 first_nibble value contains 4 bits." logical*1 first_bit[0=no,1=yes]1 value contains 1 bitD PAD 2 Align to even bit (so this takes 1 bit)1 integer*1 second_bit value contains 1 bitD ENDBITFIELD aligns on byte boundary (so 1 pad bits)3 LOGICAL*1 temp value contains 1 byte.# CHARACTER*12/FILE=SYSUAF UsernameH You can follow this link to the file SYSUAFG C keyvalue the contents of "USERNAME", KEY=0? INTEGER*4/FILE=DATAFILE/RECORD/COMPUTE="'thisfield'+10" indexJ You can follow this link to the file DATAFILEC with the recordnumber the contents of L the field "index" + 10 ; INTEGER*4/FILE=SYSUAF/KEY=1/IF="'thisfield'>0" identifierJ Follow the identifier to the SYSUAF file, butJ D only if the identifier is >0 (UIC identifier)K Field names starting with a % and PAD fields are not displayed (fillers).> These fields cannot be used for field-dependend computation.H The display can also be disabled with the /NODISPLAY option, and these fields CAN be used. 4 Name_syntaxC With the (R)BITS*(*),(U)INTEGER*(*),LOGICAL*(*) and the DATE*(*) C declarations you can append a list of names to the description.  There are two formats EI 1. [field,field,,field...] A list of fields numbered from 0 up to nnF Fields may be omitted, but comma's areF significant. Mostly used for bits. A #L means do never display this bit even if set.E 2. [idx=name,idx=name,...] A list of numbered names, the indexesG do not have to be in order. Mostly usedK for integers. The idx's ar Fe integer*4 only,N if the values are 8 bytes wide, DIX will checkO if the high longword is a sign extension of the. low longword. / Example for case 1 (the privileges in SYSUAF)! BITS*8 UAF$Q_DEFPRIV -E [CMKRNL,CMEXEC,SYSNAM,GRPNAM,ALLSPOOL,IMPERSONATE,DIAGNOSE,-F LOG_IO,GROUP,NOACNT,WORLD,MOUNT,OPER,EXQUOTA,NETMBX,VOLPRO,-C PHY_IO,BUGCHK,PRMGBL,SYSGBL,PFNMGAP,SHMEM,GRPPRV,READALL,-1 IMPORT,AUDIT,SECURITY,,,ACNT,,,,ALTPRI] ) bit(0) = CMKRNL, bit(1)= CMEXEC ...F Bits are named in order, but some bits are skipped (see the ,,,,E just before ther ALTPRI). If the non-named bits are in the maskI they will be displayed with text "BITnn". If any bit has the name #* it will not be displayed (see below)   Example for case 22 INTEGER*2 type [1=special,4=normal,10=fatal] G Field values H 1,4,10 will be by displayed as a name, all others in numeric % Example for not displayable fieldsF The file_char bits in the indexf.sys contain 2 bits that define theH caching attributes (bit 8 and 9). Since the names for these bits are) a #, DIX will not display these bits.A The POSITION (-24) : reposition the byte_offset by 24 (bits).H The INTEGER*2 : define a 2 bits integer with 4 possible values.M The POSITION/RELATIVE (22) : Sets the byte_offset back I to where we were. # bits*4 file_char -D [Wascontig,Nobackup,Writeback,Readcheck,Writecheck,-4 Contigb,Locked,Contig,#,#,,Badacl,-J Spool,Directory,Badblock,Markdel,Nocharge,Erase,alm_aip,-> shelved,scratch,nomove,noshelvable,shelv_res]H bitfield !start in bits mode, the next 2 bits define the cachingH position/relative (-24) !skip back 24 bits, the /relative N J !is optional since the value is negativeK integer*2 caching [writethrough,writeback,flush_on_clos,no_cache]G posision /relative (22) !skip the next 22 bits(in total 3 bytes)2 end bitfield !back to non field mode again* This could also have been achieved by6 structure !no name atttached union map) bits*4 file_char -D [Wascontig,Nobackup,Writeback,Readcheck,Writecheck,-4 K Contigb,Locked,Contig,#,#,,Badacl,-J Spool,Directory,Badblock,Markdel,Nocharge,Erase,alm_aip,-> shelved,scratch,nomove,noshelvable,shelv_res] end map map byte %temp1 bitfieldQ integer*2 caching [writethrough,writeback,flush_on_clos,no_cache]5 end bitfield !will align back to the next byte end map end union end structure 4 USERTYPESG The user can define his own types. L The translations between ascii and= binary must be programmed in the DIX interactive language. ? This translation script can be defined in the following ways. 1. In the .des fileH Somehwere in the .DES file there must be a section the contains theO script code. This section must begin with #TYPE name and end with #ENDTYPED 2. In a module in the dix_des.tlb (either user or system) library.? The module name must be USERTYPE_'name'. In this case the / #TYPE and #ENDTYP ME tags are not necessary.. This script is called with 4 symbols definedL 1. ACTION : a string symbol that defines the action to take, values can beD SIZE : Return the size (in bits) of the binary data.: (only used in variable length data)3 ASCBIN : Convert from ascii to binary3 BINASC : Convert from binary to ascii@ 2. DATA : A string variable containing the the source data. G In case "SIZE" and "BINASC" DATA N contains the binary data< In case "ASCBIN" DATA contains the ascii text.I In all cases the length of the string is the size in bytes.L 3. BITSIZE: An integer value that contains the size in bits. Normally this7 is 8*length(data), but not for bitfields.A 4. FIELDS : The fields as defined in the declaration statement.+ The script must set the following symbolsA Case "SIZE" : SIZE , an integer containing the size in BITS.G case "ASCBIN" : RE OSULT, a string variable containing the binary data.G SIZE , an integer value containing the size in BITS.F case "BINASC" : RESULT, a string variable containing the ascii text.M Also the script must finish with an EXIT statement that returns the status.M For BINASC 0 means the text will be suppressed by the /compress qualifier.: 1 means is is not regarded as "suppressable" For others 1=oke, 2=error. Example:, You have a line in theP description record:? mytype*8/user fieldname !user type mytype , size=fixed to 8. G Now we must have either a section in the description record enclosed  in the following statements: #type usertype ... #endtypeO Or a module in the DIX_DES or DIX_DES_USER file with the name USERYTPE_MYTYPE7 In this case the #type and #endtype are not needed.H Below an example of a script that will work. It will convert a 8 byte 2 string to a sequence like 12,34,56,43,12Q3,0,56,9 #type mytype> if (action = "SIZE") then !return symbol SIZE (size in bits)5 size = 8*8 !will not be called since the size is- stat = 1 !fixed at 8 bytes (is 8*8 bits) endif3 if (action = "BINASC") then !return symbol RESULT nk = f$length(data)( stat = 0 !assume all bytes are ZERO result = "" for k=1,nk kar = f$extract(k-1,1,data) byt = f$extzv(0,8,kar). if (byt <> 0) stat = 1 !not all bytes ZERO' result = result + "," + stringR(byt) endfor" result = f$extract(1,-1,result) endif< if (action = "ASCBIN") then !return symbol RESULT and SIZE set noon result = "" k = 0* stat = 2 !assmume error in conversion# lp2: part = f$element(k,",",data) if (part <> ",") then byt = int(part) if (even($status)) goto err% if (byt < 0 | byt > 255) goto err! result = result + f$char(byt) k = k + 1 goto lp2 endif5 size = f$length(result)*8 !return length in bits!S stat = 1 !successful convert err: endif* exit 'stat' !return conversion result #endtype 4 RADIX_OVERRIDE7 Normally all fields are displayed in decimal or text.D If the fieldtype is followed by the a radix qualifier the display 0 (and also the input is in the requested radix) % The following radices are supported /HEXADECIMAL /OCTAL /BINARY exampleC INTEGER*4 FIELD Will be displayed and modified in decimalB INTEGER*2/BIN DATA T Will be displayed and modified in Binary? INTEGER*2/OCT DATA Will be displayed and modified in OCT? CHARACTER*3/HEX TMP Will be displayed and modified in HEX4 RANGE_SYNTAX9 The record descriptions can contain one or more RANGES  RANGE (min_offset:max_offset) field field ... END RANGE The () are required syntax.G The fields start at offset "min_offset" and continue until the offsetF "max_offset". If the byte_offset exceeds the max_offset,U the rest of> the RANGE is ignored. An example is in the ODS2 File headers' byte id_offset ! Offset to Ident area' byte map_offset ! Offset mapping area& byte acl_offset ! Offset to ACL area& byte res_offset ! Offset to ACL area. integer*2 seg_num ! Extension seqment number ....$ range (map_offset*2:acl_offset*2-1) diskmap maps(256) !enough end range ..... position (510) integer*2/hex checksumJ The DISKMAP entries start at byte offset MAP_OFFSET*2 (MVAP_OFFSET is in , words) and continues until ACL_OFFSET*2-1.( The checksum is at fixed location 510 4 MAP_syntaxL The MAP command has a special syntax. It is included in a UNION statement. UNION MAP [selectionstring] END MAP MAP [selectionstring] END MAP .. END UNIONF If there is no selectionstring specified, DIX will show the mapping.C If there is a selection string, DIX will show the map only if theC selection string matches. The format forW the selection string is: % Expression=sel_value[,sel_value...] And sel_value is > 1. expresion Just a single (integer) expression< 2. expression:expression A range of (integer) expressions6 At this moment only integer expressions are allowed.@ You can specify a dependency on a previously defined variable. SYNTAX:6 integer*4 sel !any field will do (dependency field) UNION> MAP SEL=value !Display this map if SEL has value "value" END MAP? X MAP SEL=VALUE1 !Display this map if SEL has value "value1" END MAP .. END UNIONJ If all maps have a dependency and none of them is used, DIX will always L use the last one, unless one of the MAP entries has a depandancy-fieldname of * Example6 integer*4 sel !any field will do (dependency field) UNION0 MAP SEL = 0,10:12 !case for sel=0 and 10:12 character*4 valuec END MAP' MAP SEL = 1 !case for sel=1 integer*4 value4 YEND MAP9 MAP * !case for all other values of sel logical*4 valuel END MAP' MAP SEL = 2 !case for sel=2 integer*2 value2(2) END MAP END UNIONM If SEL has value 0 or is betwwe 10 and 12 the character VALUEC is displayed6 If SEL has value 1 the INTEGER*4 VALUE4 is displayed9 If SEL has value 2 the INTEGER*2 VALUE2(2) is displayed> If SEL has any other value the LOGICAL*4 VALUEL is displayedJ IF the MAP * had not existed, and SE ZL would not have been 0 or 10-12 or B 1 or 2 the last map (SEL=2 : = VALUE2(2)) would have been used.4 POINTER_syntaxH The pointer statement allows you to decode a piece of data in an otherH place in the record. An example is the PENDING structure (pending.dat  for Allin1/Office serverF character*64 pending_key !MAIL + the name of the userD character*1 record_code !continuation record indexB character*1 cont_flag ! flag for contin [recordK integer*2 total_attr_size !total size of the pointers+data C ! of all records togetherN integer*2 this_rec_attr !size of pointer+data in this recordH character*2 usage_count !how often is this record usedF character*5 new_mail_count !new mail count for the user. character*3 padding I structure pointers(100) [1] !start of pointer/data 3 \ integer*2 type [7=mail] !type of field integer*2 %dummyP pointer*4 offs [pointers] [2] !offset to the "pointer" fieldC structure work [3] !the data sectionC integer*2 length !length of string byte %unknown(6)= character*(length-6) test !the stringM end structure [4] !end of the data definitionA exit [offs+lengt ]h+2>=this_rec_attr] [5] !exit statement end structure% The record is build up as follows a. 80 bytes of fixed data/ b. a pointer section containing an array of 1. TYpe@ 2. Offset to a position in the record after the pointers- c. the text area pointed to by the offset J The statement pointer*4 offset[pointers] at [2] must be followed by a structure statement [3].J DIX will take the value from the record at the position of the point ^erH statement [2] (the length contains the size of the field), adds the B location of "POINTERS" [1], and uses that offset to expand theG statements in the structure "work" [3]. When the end structure [4] ? is found, DIX will resume processing the next statement [5] with the saved offset.H At the end [5] is the exit test. If the offs > cur rec length : exitG This means : leave the "pointers" structure. since there is no more+ data available, the display is stopped._ See the display below+ 0|PENDING_KEY |MAIL JOHN.DOE 64|RECORD_CODE | 65|CONT_FLAG |. 66|TOTAL_ATTR_SIZE |86 68|THIS_REC_ATTR |82 70|USAGE_COUNT | 72|NEW_MAIL_COUNT |3 77|PADDING |" 80|POINTERS(1).TYPE |MAIL 84|POINTERS(1).OFFS |16 96|POINTERS(1).WERK.LENGTH|317 104|POINTERS(1).WERK.TEST |OA$SHARA7718:IFQ3FORG.TXT" 88|POINTERS(2).TYPE |MAIL` 92|POINTERS(2).OFFS |49 129|POINTERS(2).WERK.LENGTH|317 137|POINTERS(2).WERK.TEST |OA$SHARE2664:IFR1XUY1.TXT 96|POINTERS(3).TYPE |31F You could suppress the display of pointers(1).offs, by changing the  definition of pointer to :( pointer*4/nodisplay offs [pointers] 4 EXIT_syntaxH The pointer statement allows you to terminate a structure repeat count character*64 test* structure pointers(100) [1] integer*4 type [7=mail] a integer*4 value* exit [type=10] [2]' end structure  character*10 rest% The record is build up as follows$ a. 64 bytes of fixed data (test)1 b. a structure section containing an array of 1. TYpe 2. value c. 10 bytes trailer (rest) K The statement "exit [type=10]" at [2] will exit the *100 repeat for [1]" if the contents for type = 10. + 0|TEST |MAIL 01CURSISbT! 80|POINTERS(1).TYPE |MAIL8 96|POINTERS(1).VALUE |20 ! 88|POINTERS(2).TYPE |MAIL 92|POINTERS(2).VALUE |25A 96|POINTERS(3).TYPE |10 <- this terminates with the exit 100|POINTERS(3).VALUE |25% 104|REST |The rest  If the description had been character*64 test* structure pointers(100) [1] integer*4 type [7=mail]* exit [type=10] [2] integer*4 vaclue' end structure  character*10 restI The result would have been (POINTERS(3).VALUE at 100 is not displayed)' and so the offset for REST is 4 lower+ 0|TEST |MAIL 01CURSIST! 80|POINTERS(1).TYPE |MAIL8 96|POINTERS(1).VALUE |20 ! 88|POINTERS(2).TYPE |MAIL 92|POINTERS(2).VALUE |25A 96|POINTERS(3).TYPE |10 <- this terminates with the exit% 100|REST |Tdhe rest 4 Examples5 EXAMPLE_for_ABORT? The following description is from the SYSUAF description. The" UAF$B_RTYPE is expected to be 1. BYTE UAF$B_RTYPE$ ABORT wrongtype [UAF$B_RTYPE <> 1] .... rest of desciptionE If the UAF$B_RTYPE is <> 1, DIX will assume that the current recordC cannot be described by this description. Dix will issue a warning? "description is aborted wrongtype. The desciption will remainI open for the file, so if another record does have the eright UAF$B_RTYPE6 this record will be displayed using this desciption.5 EXAMPLE_for_MAP  PARAMETER REP_BITS=2 INTEGER*4 RECNR STRUCTURE DATUSRE DATE*4 DATTIM !internal date format #minutes since 1857G UIC*4 UIC !standard VMS UIC format (group,member) END STRUCTURE? INTEGER*2 type - !1,4,10 will be by name, all others in> [1=special,4=normal,10=fatal] !decimal format INTEGER*2 COUNTf INTEGER*4 RESCHEDW STRUCTURE BITS(REP_BITS) !2 structures, with both bits*1 flag=1 byte longR BITS*1 FLAGS [mon,tue,wed,thu,fri,sat,sun] !the total is 2 bytes END STRUCTURE UNION@ MAP TYPE=Special !this case is valid if type=1 (special)# INTEGER*2 time(2) END MAPF MAP * !this case is valid for any other field value CHARACTER*2 dunnow ! ENDMAP ? MAP type=normal g !this case is value if type=4 (normal)# INTEGER*4 time ENDMAP? MAP Type=fatal !this case is valid if type=10 (fatal)( ENDMAP !No allocation is this typeE ENDUNION !total structure length is dependend on typeM WSTRING*60 MESSAGE !word counted ASCII string with 60 bytes room INTEGER*4 FIELD(1:COUNT)8 !field has COUNT members5 EXAMPLE_for_FIELD_FOLLOW2 An example about field_fol hlowing to another fileJ The example is about 3 RMS indexed files that form a simple sourcemodule cross_reference systemI The first file (CROSS_REF.CRF_FILE_NAMES) has the following description5 (.CRF_FILE_NAMES in the system or user textlibrary)D integer*2 file_nr !primary key character*60 file_name integer*2 %fillerI The second file (CROSS_REF.CRF_MOD_NAMES) has the following description4 (.CRF_MOD_NAMES in the syste im or user textlibrary)D integer*2 mod_nr !primary key character*32 mod_nameI integer*2 file_nr/file=.crf_file_names !link to the filenameD The third file (CROSS_REF.CRF_CROSS) has the following description0 (.CRF_CROSS in the system or user textlibrary)K integer*2 caller_nr /file=.crf_mod_names !link to modulenameK integer*2 called_nr /file=.crf_mod_names !link to modulename, Now if you open a rejcord in the third file $DIX CROSS_REF.CRF_CROSS< %DIX-I-USINGFIL, Using file DSA40:[DIR]CROSS_REC.CRF_CROSS7 %DIX-I-USINGDES, Using description SYSLIB(.CRF_CROSS) DIX> EXA *< 0|CALLER_NR>|738 !the > tells us there is a link present 2|CALLED_NR>|-262 DIX> EXA/DES * 0|CALLER_NR>|738 Type :INTEGER*2 Linenumber:0 Variable :False Dependency:False? Link file :.CRF_MOD_NAMES !and yes there is a link defined Link field:0 Match k :EQ 2|CALLED_NR>|-262 Type :INTEGER*2 Linenumber:1 Variable :False Dependency:False Link file :.CRF_MOD_NAMES Link field:0 Match :EQ1 DIX> Follow CALLER_NR !try to follow this link[ File .CRF_MOD_NAMES not (yes) opened, open it (y/[n]):Y !do you want to open the file@ %DIX-I-USINGFIL, Using file DSA40:[DIR]CROSS_REF.CRF_MOD_NAMES; %DIX-I-USINGDES, Using description SYSLIB(.CRF_MOD_NAMES) DIX> Exa * 0|MOD_NR |738l 2|MOD_NAME|CHECK_ALLOWED_USER4 34|FILE_NR>|66 !and this field has a link defined DIX> Follow file_nr: File .CRF_FILE_NAMES not (yes) opened, open it (y/[n]):yA %DIX-I-USINGFIL, Using file DSA40:[DIR]CROSS_REF.CRF_FILE_NAMES< %DIX-I-USINGDES, Using description SYSLIB(.CRF_FILE_NAMES) DIX> Exa * 0|FILE_NR |66% 2|FILE_NAME|REM_SERVER_CHECK_ACCESS DIX> Back !now backtrace@ %DIX-I-USINGFIL, Using file DSA40:[DIR]CROSS_REF.CRF_MOD_NAMES; %DIX-I-USINGDES, Using desmcription SYSLIB(.CRF_MOD_NAMES) DIX> Exa * 0|MOD_NR |738 2|MOD_NAME|CHECK_ALLOWED_USER 34|FILE_NR>|66 $ DIX> Back !and again a backtrace< %DIX-I-USINGFIL, Using file DSA40:[DIR]CROSS_REC.CRF_CROSS7 %DIX-I-USINGDES, Using description SYSLIB(.CRF_CROSS) DIX> EXA *E 0|CALLER_NR>|738 !the > tells us the is a link present 2|CALLED_NR>|-262K As you see, you can jump around an look at the recordstructures and links) Another example nis the .DIR description0 integer*2 verslim [32767=None] !version limit: bits*1 flags !flag byteN string name !bytecounted string (variable)$ pad*2 !align to word boundary& structure v(64) !n*version,fileid integer*2 version4 fileid fileid/file=[000000]indexf.sys/record-N /comp="f$getd($file,""blnr"")+int(f$extr(1,-1,f$elem(0,"","",$FIELD)))" end structure  L The fileid has a link to the o corresponding indexf.sys with a record numberJ equal to the first number in the fileid (layout = (filenr,revnr,volume))D + the record number in indexf.sys of the fileheader with fileid 0.1 You need read access to the index file for this $ dix somedir.dir/intM %DIX-I-USINGFIL, Using file USER50:[STUBBF.PROGRAMS.DIX]SOMEDIR.DIR;1/NOMODT %DIX-I-USINGDES, Using description DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;54(.DIR) DIX>exa * 0|VERSLIM |NONE 2|FLAGS | 3|NpAME |Q.Q 8|V(1).VERSION|1 10|V(1).FILEID>|(63474,3,0)2 DIX>foll v(1).fileid !follow link to fileheader= File [000000]INDEXF.SYS not (yet) opened, open it (y/[n]):y? %DIX-I-USINGFIL, Using file USER50:[000000]INDEXF.SYS;1/NOMODV %DIX-I-USINGDES, Using description DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;54(INDEXF) DIX>exa * 0|ID_OFFSET |40 ...% 8|FILE_ID |(63474,3,0) ...% 66|BACKL_FID >|(62674,1,0) 80|FNAM q |Q.Q;1 ...8 DIX>Follow backl_fid !follow link to parent directory 0|ID_OFFSET |40 ...% 8|FILE_ID |(62674,1,0) ...% 66|BACKL_FID >|(44986,1,0) ...' 80|FNAM |SOMEDIR.DIR;1 ...# DIX>back !back to the fileheader DIX>exa * 0|ID_OFFSET |40 ...% 8|FILE_ID |(63474,3,0) ...% 66|BACKL_FID >|(62674,1,0) 80|FNAM |Q.Q;1 ...8 DIX>barck !back to the entry in the somedir.dir file M %DIX-I-USINGFIL, Using file USER50:[STUBBF.PROGRAMS.DIX]SOMEDIR.DIR;1/NOMODT %DIX-I-USINGDES, Using description DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;54(.DIR) DIX>exa * 0|VERSLIM |NONE 2|FLAGS | 3|NAME |Q.Q 8|V(1).VERSION|1 10|V(1).FILEID>|(63474,3,0)5 EXAMPLE_for_LIMIT_QUAL! Example for the /LIMIT qualifier Description CHARACTER*10 TEXT STRUCTURE data(100) INTEGER*4 flag/lismit=>100 CHARACTER*20 what END STRUCTURE@ If the field limit contains a value > 100, the repeat for the ) structure data(100) will be terminated. CHARACTER*10 TEXT STRUCTURE data(100)! INTEGER*4 flag(5)/limit=>100 CHARACTER*20 what END STRUCTURE@ If the field limit contains a value > 100, the repeat for the < structure flags (5) will be terminated, but the repeat for! the structure will be continued2 Record_searchesE Dix has a powerful recor td search function. You can look for text in; records, but also in fields (if you have a description). J If the fields are not text-fields but binary data, dix will do a convert: of the search string to binary and then do the compare. I Dix also allows you to seaerch data in more than one record, so a queryG like "search record that contain A and the next record contains B" is6 possible, and this is not limited to just 2 records.F The search can be a simple locate, or a wildcardu match, or a compareC (le,le,eq,ge,gt), and the compares can be done in any known type. The searchsyntax is: Parameter [parameter] [parameter..] Upto 6 parameters.H If more than one parameter is given, parameter2 must match data in theA following record, parameter3 is the then next record and so on.A Each parameter has the syntax (a list of values and qualifiers)% string1[/qual],string2[/qual],.. Search can be used in 4 placesP Interactive mode : Entered on th ve command line or in the interactive commands:D Will set the record pointer to the first matchC Screen mode : Will set the record pointer to the first matchB File mode : Will display all records matching the search - (unless /count is given) 3 ExamplesE All these examples are for the DIX/FILE mode. They can also be usedN for the screen and interactive mode. The file mode will display all matches,G the interactive and screen w will select the first record that matches. 1.DIX/FILE data.dat TEST H Display all records that contain TEST (/MATCH=LOCATE). The search is NOT case sensitive.4 2.DIX/FILE data.dat TEST,12/FIELD=FOR*MAT/MATCH=GE; Display all records that contain TEST (/MATCH=LOCATE), @ OR have the value in any field that matches "FOR*MAT" >=12= 3.DIX/FILE data.dat TEST/LOGIC=AND,12/FIELD=FORMAT/MATCH=GE; Display all records that contain TEST (/MATCH=LOCATE), / AND have thex value of field "FORMAT" >=127 4.DIX/FILE data.dat TEST/WINDOW=(position=10,size=40)A Display all records that contain TEST (/MATCH=LOCATE) in the @ byte 10..49 of the record. The search is NOT case sensitive. 5.DIX/FILE data.dat *XYZ/MATCH? Display all records that match *XYZ (so the XYZ must be at the end of the record., 6. DIX/FILE data.dat "TesT"/case_sensitive8 Display all records that contain TesT is this case.@ 7. DIX/FILE data.dat string1,string2/n yext_record/wild=extendedB Display the records that contains string1 and the next record6 matches string2 (with extended wild characters). ( Only the first record is displayed.8 8. DIX/FILE data.dat 123:456/match=range/field=myfieldC Displays the records that contain a value between 123 and 456 ! (including) in field myfield> 9. DIX/FILE data.dat 123/field=myfield/type=integer*2/mat=eq> Displays the records that contain an value of 123 in the H first two byt zes (converted as integer*2) of the field field myfield7 Field myfield does not have to be of type integer.L 10. DIX/FILE data.dat 123/field=myfield/type=integer*2/wind=(pos=10)/mat=eq> Displays the records that contain an value of 123 in the E bytes 10,11 (converted as integer*2) of the field field myfield.G If bytes 10-11 do not exist in the field, the match returns false.J 11. DIX/FILE data.dat 123:456/field=myfield/wind=(pos=10,siz=4)/mat=RangeK Displays the record {s that contain an value between 123 and 456 in the N bytes 10-13 (converted as integer*4 (size=4)) of the field field myfield.G If bytes 10-13 do not exist in the field, the match returns false. K 12. dix/file data.dat *str*ing1*/mat=match/wild 1234/matc=eq/field=myfieldF Display the record that match *str*ing1* AND the following record. contains the value 1234 in field myfield.. 13. DIX/FILE data.dat string1 string2 string3M Will search for for a record that conta |ins "string1" AND the next record@ contain "string2" AND the next record containing "string3".4 Record 1 will be displayed, record 2 and 3 not.8 14. DIX/FILE data.dat string1 string2/show string3/showM Will search for for a record that contains "string1" AND the next record@ contain "string2" AND the next record containing "string3".< Record 1 will be not be displayed, record 2 and 3 will.3 SEARCH_Qualifiers/CASE_SENSITIVEE The text in STRING is to be matched }case sensitive. DCL will changeA all parameters to uppercase unless within quotes. So if you use5 /case_sensitive, make sure STRING is within quotes.K This qualifier is positional, so each search item can have its own value./EXISTSA If the /field is specified, DIX checks if the field is present.A If the /WINDOW is also used, DIX checks if the ranges specified/ is in the record (no /FIELD) or in the field.2 The search string will not be used in this case. /FAST /FAST= ~number  /FAST=1024 (default) F If you specify /FAST, DIX will search the file bypassing RMS, usingC SYS$QIOW to access the datablocks. This may speed up searches forE indexed files, skipping the overhead for RMS-locking. This does notC always speed things, depending on how the buckets are distributedC over the file. If the buckets are mostly sequential in the file,@ DIX can use large buffers, and read many buckets in one IO. IfD buckets are scattered over the file, these large reads will not beA benificial, and a normal search with the SYS$GET may be faster.E The qualifier is supported for all types of files, but the gain for! non-indexed files may be small. ; The value is the number of disk-blocks readin in one IO.  /FIELD /FIELD=NAMEMASK namemask is fieldnamemask+ descriptionmask\fieldnamemask8 filenamemask\descriptionmask\fieldnamemaskJ If filename mask is present, the pattern is matched against the €filename/ if no match is found, this entry is skipped.I If descriptionname mask is present, the pattern is matched against the < description. If no match is found, this entry is skipped.A Normally DIX will search the string in the whole record. If you? enter /FIELD only the field(s) that match the "fieldnamemask"@ are searched. This match uses the normal VMS wildcard * and %.3 See the examples, see also the /WINDOW qualifier.G The type of the field (integer,character etc.) determines the way theG compares are done. For examples, for INTEGERS the compare is done in binary etc.J This qualifier is positional, so each search item can have it own value. /LOCATION /LOCATION=location_value$ Where should the data be searched. location_value van be# data : the normal data (default) vfc : the vfc data/ both : in the vfc as well in the normal dataH recl : Special value for comparing record_length. In the cas only the8 /matc=lt,l‚e,eq,ge,gt and randge can be used./LOGIC /LOGIC=AND /LOGIC=OR !DefaultL If you specify /LOGIC=AND, this string must match as well as the the next.J This qualifier is positional, so each search item can have it own value. Example STRING1/LOGIC=AND,STRING25 Matches only if both STRING1 and STRING2 are found.7 STRING1/LOGIC=OR,STRING2 (the /logic=or is default)6 Matches only if either STRING1 or STRING2 are found." STRING/LOGIC=AND,STRING2,STRING3C Matcheƒs only if either (STRING1 and STRING2) or STRING3 is found. /MATCH /MATCH=LOCATE Default /MATCH=MATCH /MATCH=LT /MATCH=LE /MATCH=EQ /MATCH=GE /MATCH=GT /MATCH=RANGE  Defines the match.J This qualifier is positional, so each search item can have it own value.# See also the /wildcard qualifier G LOCATE : The string must occur somewhere in the (part of the) record 1 MATCH : The string must match the whole record LE,LE,EQ,GE,GT :O The va „lue is compared with the STRING. This can be used with a /FIELDO If the fieldvalue is a numeric value, compares are done in the normalK numeric way. If the fieldvalue is a STRING, compares are done as J strings. See also the /TYPE comand to overrule the default type.J RANGE : The searchstring is LOW:HIGH. A match will be found it the value? is between LOW and HIGH (including the boundaries). ExampleE 123/FIELD=UAF$L_TQENT/MATCH=GE (binary… (integer*2) field)P Will display all records with the UAF$W_BYTLM value >=123. (binary conmpare)E XYZ/FIELD=UAF$T_USERNAME/MATCH=LT (ascii (character*12) field)N Will display all records with the UAF$T_USERNAME value records . If number is omitted, DIX will default to /COUNT=1I if aŽ record is specified via the /LT,../GT or the /RECORD qualifier and& to /COUNT=0 (all records) otherwise., This will only work in FILE_ORIENTED mode./CSV /CSV$ /CSV=(Csv_option[,csv_option...]) Csv_option can be2 HEADER : Print a header line before all data0 NOQUOTES : Do not 'quote' fields (see below), ALL_QUOTES: User quotes around all fields; SEPARATOR=COMMA : Use COMMA as separator (default)1 SEPARATOR=TAB : Use TAB char as separator1 SEPARATOR =COLON : Use COLON (:) a separator6 SEPARATOR=SEMICOLON: Use SEMICOLON (;) as separator3 SEPARATOR=CHARACTER=%Xdd: Use %Xdd as separatorO QUOTE=DOUBLEQUOTE : Use the " character for quotes around fields (default)E QUOTE=QUOTE : Use the ' character for quotes around fieldsG QUOTE=CHARACTER=%Xdd: Use the %Xdd character for quotes around fieldG If you want quoting (DEFAULT) , DIX will insert the "quotecharacter" M around text fields and field that contain the "separatorcharacter" or spaceA If you specify ALL_QUOTES, DIX will insert the "quotecharacter" around all fields.E If you specify NOQUOTES, DIX will never insert the "quotecharacter"2 The header fields are regarded as "text" fields.C See also the /SELECT qualifier for help about selection of fields ExampleG DIX/FILE/CSV=(header,all_quotes,quote=quote,separator=semicolon) fileF Output is a file with all fields quoted, using ' as quote and ; as! separator with a hea‘der line.; DIX/FILE/CSV=(header,noquote,separator=char=32) file or1 DIX/FILE/CSV=(noquote,separator=char=%X20) fileB Output is a file with no fields quoted, and SPACE as separator/DECIMALG If the /DECIMAL qualifier is given, the program will display the data in decimal. Default /HEX in raw dump mode.' Default /DECIMAL in interpreted mode.2 See also the /HEX, /BINARY and /OCTAL qualifier./DEFINE& /DEFINE=(definition[,definition...]) A definition can be’F 1. name : this will deliver an integer symbol with the value 1C 2. name=value : Dix will try to convert value to integer. If thisE succeeds an integer symbol will be defined. If this; fails a character symbol will be defined. See also the /script qualifier/DEMO DIX/DEMO [demoname]7 The [demoname] is a mask for the selection of demo's.C Start a demonstration. If you do not specify the demoname, or theH mask matches more than o“ne demo DIX will display a screen with a list F of demo's. You can then select one and a demo slide-show will begin./DISPLAY* /DISPLAY=(displayitem[,displayitem...]) /DISPLAY=ALL Default C Valid with /FILE only. This qualifier defines which parts of the , record are printed. Valid displayitems are' [NO]RECNR : Print the record number% [NO]RECSIZE : Print the record sizeP [NO]VFC : Print the VFC part of the record (If the file contains vfc_d”ata)1 [NO]DATA : Print the data part of the record+ [NO]RFA : Print the RFA of the record ALL : Print all parts /FILEI DIX will dump the record(s) like VMS dump, or if a description is givenE is description format. If you do not specify /COUNT DIX will output all records of the file.< The /FILE qualifier must be the first on the command line./FORMAT /FORMAT=option /FORMAT=DOT (default)I Normally all "character"-like fields will not cont •ain unprintable data.* These field types are CHARACTER,xSTRING.E If the data does contain unprintables (hex 0:1f,7f,80:9f or ff) theA /FORMAT qualifier determines how this data should be displayed. Option can beG DOT :All unprintables are replaced by a ".". This encoding is notI reversible, after an unprintable value is replaced by a ".", D DIX cannot know what the unprintable value was. This may, be a problem in the screen mode.L HEX :A–ll unprintable data is displayed as %Xdd, a hexadecimal display.P A % in the data will be displayed as %%. This display is reversible,B so DIX can reconstruct the original unprintable value.G If you are in this mode, on input a % must be entered as %%N PASSALL:Dix will not change the unprintable data. The data is displayed asK it is. THis mode will not work in screen mode, and maybe poorly1 when the output device is a terminal.I DU —MP :Unprintalbe bytes are represented by a 2 or 3 letter mnemonicH like or . A < in the text will be displayed as <<.L This display is reversible, so DIX can reconstruct the original  unprintable value.G If you are in this mode, on input a < must be entered as <</HEX C If the /HEX qualifier is given, the program will display the data in Hexadecimal.@ In interpreted mode the CHARACTER*(*) fields will be dumped inF ascendin˜g order separated by spaces. All other fields will be dumped. in descending byte order (the VMS standard). Default /HEX in raw dump mode.' Default /DECIMAL in interpreted mode.2 See also the /HEX, /BINARY and /OCTAL qualifier./INFOK The /INFO qualifier will display information about the file(s), including0 information about the keys of an indexed file.@ This information includes name,position,size and type of keys.< The /INFO qualifier must be the first on the command lin™e. Example: $DIX/INFO SYSUAF8 Keyinformation on file SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 File Organization : Indexed Record format: Variable- Creation date : 24-MAR-2000 14:47:46.41& Expiration date : - Backup date : 20-APR-2003 18:12:43.19- Revision date : 21-APR-2003 09:40:36.09 File id : (17,1,0)# File owner : [1,1] = [1,1] Record& Record attribute : NoBlockspan,NONE Max record size : 1412 Longešst record : 0 Allocation- EOF block : 49 (FFB = 0) Allocated blocks : 48' Area Allocation bucketsize extension" 0 48 3 10 Keyinformation0 ..INDEX.. ..DATA...3 Nr Type Pos Siz Area Bkt Area Bkt Keyname+ Nr siz Nr siz+ 0 STG 4 32 0 3 0 3+ 1 BIN4 36 4 0 3 0 3+ 2 BIN8 36 8 0 3 0 3+› 3 BIN8 44 8 0 3 0 3 1 Descending keys would have a D before the type. /INTERACTIVEH Enters INTERACTIVE mode. This is a commandline mode that allows you toG enter commands at the prompt. This mode us useful for DCL procedures.; See the INTERACTIVE_COMMANDS help for possible commands. < This mode also supports scripting commands (IF, GOTO etc).C The /INTERACTIVE qualifier must be the first on the command line. Example:$ $ DIX/INTERACTIVE SYSUAFœ/EQ=SYSTEM8 Processing file :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1/NOMOD< Using description:DSA0:[PROGRAMS.DIX]DIX_DES.TLB;9(SYSUAF) DIX>disp *pwd*# 340.0|UAF$Q_PWD(1) |22B619B5# 344.0|UAF$Q_PWD(2) |E19FAE22# 348.0|UAF$Q_PWD2(1) |00000000# 352.0|UAF$Q_PWD2(2) |00000000 362.0|UAF$B_PWD_LENGTH |8) 372.0|UAF$Q_PWD_LIFETIME|30 00:00:00.002 380.0|UAF$Q_PWD_DATE |17-MAY-2002 18:34:12.002 388.0|UAF$Q_PWD2_DATE |17-NOV-1858 00:00:00.00 DIX>EXIT8 You can ty pe HELP at the prompt to obtain online help./LOCKING /LOCKING=(val,val...) Val can beL RRL : Read all record with the RAB$M_RRL option. This means that evenH if the record is locked by another stream, DIX can read it.D The usage is at your own risk, since any other user canF modify the data you are looking at (and possibly change).K OPTIMISTIC: Dix will read the record with the RAB$M_NLK option. The recordF is read, but not lo žcked. Other streams can read the data.I When you want to update a modified record, DIX will check ifD the record still contains the original data, and if notH warn you, and give you the option to not modify the record.H If the file is opened with /nomodify (default) records will4 never be locked (the file is readonly)./MARKE If you leave the program DIX will define a symbol DIXRFA containingC the filename and RFA of the currenŸt record. If you start DIX at aJ later moment with the same file and the /RFA qualifier, DIX will return  to the same record as before. Example $DIX/INTER SYSUAF/EQ=SYSTEM= Dix>EXA * Will display all data of the SYSTEM record< Dix>READ Will read the next record from the sysuaf Dix>Exit Leave DIXD $DIX/RFA SYSUAF Will return you to the record in sysuaf following% the SYSTEM record. /MODIFYB If the /MODIFY qualifier is specif ied, you are allowed to modifyC /delete/insert records, Either in interactive or screen mode, andL in raw (DEP BYTE_OFFSET=VALUE) or description mode (DEP field_name=value)./MOUSE /MOUSE (default) /NOMOUSE+ Enable the usage of the decwindows mouse.H Default mouse_usage is enabled, but if you want, you can disable it to% allow the mouse for selecting text.I In the interactive mode the mouse usage can be enabled/disabled via the set mouse command. /MULTI_FILE@ No”rmally DIX will open only one file. If you specify more thanD one file (via wildcard or list), the program will prompt you whichB file to use. If you specify /MULTI_FILE, DIX will open all files# and lets you switch between them./NUMBER /[no]Number1 /NUMBER=DECIMAL (default for interpreted mode) /NUMBER=HEX H If the /NONUMBER qualifier is given, the program will not display the 8 byte offsets of the data. Default is /NUMBER(=decimal)/OCTALE If the /OCTAL qualif¢ier is given, the program will display the data in octal. Default /HEX in raw dump mode.' Default /DECIMAL in interpreted mode.4 See also the /HEX, /DECIMAL and /BINARY qualifier./OUTPUT /OUTPUT=FilenameJ Give an alternative output file. This qualifier will only be used if you7 specify the /FILE qualifier. Default is the terminal./ If you specified /WIDE the width will be 132.> If you specified /WIDTH=nn, the width will be nn (upto 4095)/RAWE If DIX can find a £description, DIX will use it. If you specify /RAWA DIX will display in RAW mode even if it can find a description./RFA /RFA=(rfaval)1 Can be used to select a specific record by rfa6 rfaval is either a 3 16bits number value (like dump) bucketnrl,bucketnrh,offset2 or a 32 bits bucketnr, floowed by a 16bit offset example9 $ DIX FILE.DAT/RFA=(100,12) !Bucket=100, offset=12 A $ DIX FILE.DAT/RFA=(100,3,12) !Bucket=3*65536+100, offset=12 /SCREEN /SCREEN ¤@ If the /SCREEN qualifier is given, the program will display a : record, (either interpreted or raw) and lets you specify= editing(only in /MODIFY mode) or display commands . You can- 1. Alter display formats (raw/interpreted) 2. Modify description files 3. Create description files8 4. Modify/insert/delete records (only in modify mode)2 Press the PF2/HELP key for info in screen mode.> The /SCREEN qualifier must be the first on the command line./SCRIPT /SCRIPT=file „nameH If interactive mode, if you enter /script=file, DIX will take commands; from that file (defaultfilename=.DIX), and return to DCL.; See also the /define qualifier and the /command qualifier /SELECT /SELECT=(name[,name..])N In the /FILE mode, DIX will print all fields (of all desriptions) to a file. N If you specify /SELECT, DIX will display only fields with a name that matchesD one of the name(s) of the /SELECT. Wildcards (* and %) can be used.L The value is [description ¦mask\]fieldmask. If no description mask is given, 2 all descricption (for the current file) are used. Examples:K DIX/FILE SYSUAF/EQ=SYSTEM will display all the known fields.E DIX/FILE SYSUAF/EQ=SYSTEM/SELEC=*PWD* will display only the fieldsB with PWD in the name.E DIX/FILE SYSUAF/EQ=SYSTEM/SELEC=UAF$P* will display only the fieldsA beginning with UAF$P( DIX/FILE SYSUAF/des=(sysua §f,special) -. /EQ=SYSTEM/SELEC=(SYS*\UAF$P*,SPE*\TEMP*)J will display only the fields thatO match UAF$P* in the description SYSUAFK or TEMP* in the desciption SPECIAL( DIX/FILE SYSUAF/des=(sysuaf,special) - /EQ=SYSTEM/SELEC=(TEMP*)J will display only the fields thatN match TEMP* in thØe description SYSUAFK or TEMP* in the desciption SPECIAL! The select is case insensitive./STARTUP /STARTUP=filename /STARTUP=DIX_INI DefaultO Process commands from a startup file. The default filename is SYS$LOGIN:.INI > See the topic about the startup_file about allowed commands./STRICT /STRICT=(mode[,...])D Sets the STRICT mode for DIX for this level. Deeper levels inherit( the strict mode from the outer levels.9 Normal ©ly DIX is not very strict in the symbol handling.& You can define new symbols by typing8 1. a=10 (define the symbol a , type integer, value 10) and then say; 2. a="SKLFG" (redefine a to type character, value "SKLFG"M TYPING : Once a symbol is created, you cannot change the type anymore> In the example above you can do 1. but not 2.= DECLARATION : All symbols have to be declared before usageC This also disallows calling subroutines or @ filesŖ? and not having the sume number of arguments & given and declared.D LOCAL : Even with /DECLARATION, symbols from an outer level> can be used. With /LOCAL this is not allowed./SYMBOL /SYMBOL=symbolname < If you specify /SYMBOL and DIX operates in /FILE mode, theC result is printed to the output file, and symbols are defined for each fieldname. for example5 $ DIX/FILE sysuaf/eq=system/select=*pwd*/symb=test « will display %Recordsize = 644' 340.0|UAF$Q_PWD(1) |22B619B5' 344.0|UAF$Q_PWD(2) |E19FAE22' 348.0|UAF$Q_PWD2(1) |00000000' 352.0|UAF$Q_PWD2(2) |00000000 362.0|UAF$B_PWD_LENGTH |8- 372.0|UAF$Q_PWD_LIFETIME |30 00:00:00.006 380.0|UAF$Q_PWD_DATE |17-MAY-2002 18:34:12.006 388.0|UAF$Q_PWD2_DATE |17-NOV-1858 00:00:00.00. But also the following symbols will be set $show symbol test* TESTUAF$B_PWD_LENGTH = "8" TEST¬UAF$Q_PWD(1) = "22B619B5" TESTUAF$Q_PWD(2) = "E19FAE22" TESTUAF$Q_PWD2(1) = "00000000" TESTUAF$Q_PWD2(2) = "00000000"1 TESTUAF$Q_PWD2_DATE = "17-NOV-1858 00:00:00.00"0 TESTUAF$Q_PWD_DATE = "17-MAY-2002 18:34:12.00"+ TESTUAF$Q_PWD_LIFETIME = "30 00:00:00.00"6 This makes it easy to use DIX in command procedures. /USER_LIBRARY  /USER_LIBRARY=usertlbfile& /USER_LIBRARY=DIX_DES_USER (default)E If you specify /USER_LIBRARY (default), DIX will use this .TLB file! fo­r extra description records. 1 The default filespecification is SYS$LOGIN:.TLB/SYSTEM_LIBRARY  /SYSTEM_LIBRARY=systemtlbfile# /SYSTEM_LIBRARY=DIX_DES (default)G If you specify /SYSTEM_LIBRARY (default), DIX will use this .TLB file& for systemwide description records. ; The default filespecification is dix-image-directory:.TLB/WIDE/ Set the output width (/INFO en /FILE) to 132.% This is a shorthand for /WIDTH=132./WIDTH /WIDTH=nn. Set the output wid®th (/INFO and /FILE) to nn9 nn will be clipped between minimum 80 and maximum 4095.2 STARTUP_FILED When DIX is started DIX will try to open a startupfile and process? commands in it. THe name of file is entered with the /STARTUPL qualifier and is default DIX_INI with a default filespec of SYS$LOGIN:.INI1 In this file the following commands are allowed3 DEFINE Used to define keys? Keys can be defined for screen mode or for interactive mode. 4 DEFINE/KEY ( DEFINE/KEY kÆeyname string[/qualifiers] / Define keys for the INTERACTIVE mode of DIX.E See also the RTL SCreen Management (SMG) manual about the possible keys. 5 Qualifiers /SET_STATE /SET_STATE=name , DEFINE/KEY keyname string /SET_STATE=NAME.$ Sets the key driver to state NAME. /IF_STATE /IF_STATE=name* DEFINE/KEY keyname string /IF_STATE=NAME I If the user enters "keyname", the string "string" will only be returned? if a previous key has put the key driver i°n the "NAME" state. /TERMINATE 8 After the /TERMINATE, the result will be given to DIX./ECHO Echo the translated strings /LOCK_STATE. DEFINE/KEY keyname string/SET_STATE=NAME/LOCK A Normally the state is removed after the typing of the next key.E If you define the key (and the SET_STATE) with the /LOCK, the state4 will remain "NAME" until another state is entered. 4 DEFINE/SKEY* DEFINE/SKEY skey function [/qualifiers]7 Define a key combination for th±e screen mode of DIX.P skey : the keyboard key : Almost all keys can be used for keydefinitions. function : the DIX function 9 See the help about DIX_functions for allowed functions 5 qualifiers /SET_STATE /SET_STATE=nameA The parameter "" must be present but the contents are not used.I SMGKEY will set a new state (GOLD and BLUE are used by default, but you3 may redefine the states if you redefine all keys)) Statenames may not contain a - (hyphen) example² DEFINE/SKEY PF1/SET=GOLD ""1 DEFINE/SKEY UPPERCASE_A/IF_STATE=GOLD key_print? If the user enters PF1-A, the function key_print is executed. A For a list of allowed functions, see the help about KEY_MAPPING /IF_STATE /IF_STATE=NAME C Specifies a state that must be in effect for the key definition A to work. The state name is an alphanumeric string. States are , established with the /SET_STATE qualifier* Statenames may not contain a - (hyphen) DEFINE/SKEY PF³1/SET=GOLD "") DEFINE/SKEY F20/IF_STATE=GOLD key_print DEFINE/SKEY F20 key_swap_disA If the user enters PF1-F20, the function key_print is executed.A It ths user enters F20, the function key_swap_dis is executed.A For a list of allowed functions, see the help about KEY_MAPPING/CONTEXT_SCREEN /CONTEXT_SCREEN=Screen_contextA Define this key only for a specific screen. Default is that the key is valid in all screens. Valid screens are. DISPLAY_ALL Display d “ata in all formats; SELKEY Select data for a key value1 EDIT Edit description I SELFILES Select one file when mulitple files match: EDITFILES Select a file (or add one)A SELDESCRIPTIONS Select a description (or add one)- YESNO Yes/No screen6 VIEW View all kinds of data. HELP Help screen(s)I EDITMULTIPµLE Edit multiple lines (in show description)2 EDITLINE Edit a single line. SELFIELD Select a field7 SHOWRAW Show data in raw format? SHOWDES Show data in description format2 Define/skey F20 key_print/context_screen=showrawD Will define key F20 as print key, but only in the showraw screen3 DELETE : DELETE/SKEY/ALL Delete all (default)screenkeydefinitions DELETE/SKEY skey [¶/STATE=NAME]O Delete the key definition for skey (possibly with state NAME)3 SET Various set options4 BINARY SET BINARY optionI Normally all "character" like fields will not contain unprintable data.* These field types are CHARACTER,xSTRING.E If the data does contain unprintables (hex 0:1f,7f,80:9f or ff) the> /BINARY qualifier decides how this data should be displayed. Option can beF DOT :All unprintables are replces by a ".". This encoding ·is notI reversible, after an unprintable value is replaced by a ".", D DIX cannot knwo what the unprintable value was. This may, be a problem in the screen mode.L HEX :All unprintable data is displayed as %Xdd, a hexadecimal display.O A % in the data will be displayed as %%. This display is reversible? DIX can reconstruct the original unprintable value.M BINARY:Dix will not change the unprintable data. The data is displayed asK ø it is. THis mode will not work in screen mode, and maybe poorly1 when the output device is a terminal.H FANCY :Unprintalbe bytes are represented by a 2 or 3 letter mnemonicH like or . A < in the text will be displayed as <<.I This display is reversible, DIX can reconstruct the original  unprintable value. 4 DECIMAL* SET DECIMAL/DIGITS=n /ROUNDED /TRUNCATEO Normally DECIMAL type data will use the number of dig¹its needed. But if you O do a divide of two decimal strings, the "n" will define the number of digits after the ".".4 So if "n" = 0, F$DECIMAL(20)/F$DECIMAL(3) = 0.2 ? The /ROUND or /TRUNCATE decides wheather the divide must be  rounded or truncated Default = /DIGITS=10/ROUND4 EDITOR SET EDITOR which5 Define your editor for editting description records Possible options are EDT Use EDIT/EDT4 INTERNAL Use an internal editor (simple but fast) TŗPU Use EDIT/TPU 4 INTEGER SET INTEGER commands SET INTEGER SIZE=n SET INTEGER SIZE=n7 Set the size for the real symbols. Value can be 4, 8.A The size 8 is only supported in alpha and IA64 (sorry not vax).C If you set the size to 8, all integer symbols use 64bit integers,/ and also all computations use 64bit integers. 4 MESSAGE Set the message display wanted. /[NO]FACILITY Sets/clears the facility part+ /[NO]IDENT Sets/clears the Ident part. /[NO]S»EVERITY Sets/clears the severity part* /[NO]TEXT Sets/clears the text part /ALL Sets all parts /NONE Clear all pars4 MOUSE SET MOUSE ON SET MOUSE OFF2 Enable or disable the MOUSE usage in screen modeH If enabled, DIX will interpret the mous clicks, if disabled DECWINDOWS? will use interpreted the clicks, so you can select/copy text.4 PROMPT Change the default prompt. SET PROMPT stringE 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.4 PROCESS_NAME Change the processname.K If you have a script that modifies a lot of records, this can take while.F If this happens in BATCH, it is difficult to see how far the processH has completed. By changing the processname, you can see on the outside2 (via show system/batch) the progress of the job. Example: ½count = 0 loop: modify rec count = count + 1> if mod(count,1000) then set process/name="At_''count'" next rec goto loopA This will change the processname to At_nnnn every 1000 records.4 REAL SET REAL commands SET REAL SIZE=n+ SET REAL FORMAT/SIZE=n[/default] format  SET REAL SIZE=n= Set the size for the real symbols. Value can be 4, 8 or 16.= The actual datatype 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, SET REAL FORMAT[/size=n] [/default] formatB Set the format for conversion. This format is the normal fortran4 real format specification, (Fn.m, En.mEe, Gn.mEe). n is maximum field width. m is the number of digits after the decimal.7 e is the numer of digits in the exponent (default 2). ) See the Fortran manual for more detail.0 /SIZE=n : set the format for size=4 æ(n=4,8,16). /DEFAULT: set the format back to the default The defaults are  size 4 g20.8 8 g25.10e3 16 g30.15e44 SEARCH SET SEARCH string[/quals]....J Set the search string for the next search (without executimg the search)3 See the help about record_searches for the syntax4 STRICT SET STRICT [qualifiers]9 Normally DIX is not very strict in the symbol handling.& You can define new symbols by typing8 1. a=10 (define the symbol a , type inte Ąger, value 10) and then say; 2. a="SKLFG" (redefine a to type character, value "SKLFG"- DIX has two levels of more strict behaviourM /TYPING : Once a symbol is created, you cannot change the type anymoreJ In the example above you can do 1. but not 2, unless you . delete the symbols inbetween.= /DECLARATION : All symbols have to be declared before usageC This also disallows calling subroutines or @ files? and nĮot having the same number of arguments & given and declared.D /LOCAL : Even with /DECLARATION, symbols from an outer level> can be used. With /LOCAL this is not allowed. Example SET STRICT/LOCAL INTEGER a=10,b=20 CALL test 20,b EXIT$ TEST: SUBROUTINE loc1,loc2/symbol; SHOW SYMB A !A is undefined with /LOCAL 4 SHOW SYMB loc1 !has the value of 103 loc1= 20 !this changed loĀc1.L LOC2=20 !this changes loc2 AND b, so output variables can be used. ENDSUBROUTINE 4 SUBSTITUTION, Set or clear the symbol substitution flags: /[NO]VERB Enable/disable the substitution of verbs< /[NO]SYMBOLS Enable/disable the substitution of symbols Default both flags are enabled2 INTERACTIVE_COMMANDSE If you specify /INTERACTIVE the program will enter commandline mode.C It will prompt you for commands. Lines can be continuated with a -- on Ćthe last position of the line (like DCL). G Blanks are not significant, except in symbol names, verbs and strings.2 Dix is NOT case sensitive, except within strings.N Dix has a powerful set of commands to enable scripting inside a command file./ See the @file_and_commands_in_file help topic.3 @file_and_commands_in_file Format: @filename[/output=filename] [expression[,expression...]@ Take the commands from a command file. The default filespec is 'this_directory'.dixF ÄThe expressions will be available in the subroutine as local symbolsH with the names Pn (As DCL) or any name the ENTRY statement gives them./ There is no limit to the number of arguments.G There is also a symbol $NRARGS that contains the number of arguments., See also the help about the ENTRY command.G The file is read into memory before any statement is executed. At thisA point all loop-structures are checked for correct overlap (f.e.  FOR IF ENDFOR ENDIF is not Åacccepted.; Inside this file you can use the following extra commands.4 CALL( Call label [expression[,expression...]/ Call to a subroutine with optional parameters/ There is no limit to the number of arguments.% See help about SUBROUTINE statement G The parameters will be local symbols for the SUBROUTINE, see the help about symbols.4 CYCLEJ Skip the rest of the for, repeat, while, loop block and resume executionE at the corresponding ENDxxx statement to start tĘhe next iteration. F This command does not exit the current block (as the LEAVE command). Example nrec = 0 REPEAT# read !read next recordC if (fieldname=5) cycle !if a fieldname = 5, skip the rest 1 fieldname = fieldname+1 !update the fieldname3 UPDATE !and write out to the file nrec = nrec + 1 !and count ) UNTIL nrec=10 !when 10 processed stop4 ENTRY@ ENTRY parametername[qualifiers][,parametername[qualifiers]...]-Ē Declare names for parameters on @ed files.( must be the first command in the fileF If a call is make to a command file, the (optional) parameters are E evaluated, and the resulting value is placed in the (local) symbolC with the name "parametername" or Pn if there are more parameters then parameternames. Qualifiers can be /REAL /INTEGER /DATE /CHARACTERB /LOGICAL The expression given at the @ line must match the* type given to tČhis symbol /SYMBOLF If the parametername has a /SYMBOL qualifier, the parameter will beI an alias to the original expression parameter (which must be a symbol)E so that modifications to the parameter will be done to the symbol.7 This is a way to let the @file return output values.C If DIX is in STRICT/DECLARATIONS mode, the number of defined and# actual parameters must be equal. Example  integer x=10 @mysub 10*4,"TExt",x,415 and the file mysub.dix contaÉins the following lines( entry count/integer,name,xparam/symbol ... ... exit5 In the file "mysub" there will be 5 symbols definedF COUNT : integer with the value 40 (the expression MUST be integer).* NAME : character with the value "TExt"$ XPARAM : Integer with the value 10J and modifications are done to the X symbol is the calling file.$ P4 : integer with the value 411 $NRARGS: Integer with the value 4 (4 arguments)E If there are more parameternamŹes then parameters, the parameternameB will be defined as a character string with the value "" (empty).? If there are more parameters than parameternames, the symbols5 P* are defined with the same type as the parameter.H Both possibilities are not allowed with the STRICT/DECLARATION mode. 4 IF Syntax( The IF command is present in 2 formats$ 1. IF (logical expression) command; If the expression evaluates to true, execute command.! 2. IF (logical expression) THEN Ė [ELSE] ENDIF? If the expression evaluates to true, execute the IF part, else execute the (optional) ELSE part See the help about expressions-![dix inter expression]help about expressions+ See also the help about the LEAVE command 4 FOR_ENDFOR# FOR symbol=first,last[,increment] ENDFOR, first,last and increment must be integer. ; last can be < first, but then increment must be negative. The normal FOR construct. J 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) F The expressions first,last and increment are evaluated only once, at the FOR command.< the statements up to the ENDFOR will be executed, and then: increment will be added to first and the check repeated.: If the condition does not match, the statement following ENDFOR will be executed. See the help about expressions? After the for loop finishes, the symĶbol is no longer defined.> It is not allowed to change the value of the FOR variable in4 the FOR loop (attempts are signalled and ignored).: See also the help about the LEAVE and the CYCLE command -![dix inter expression]help about expressions4 GOTO Syntax: Goto Label? Goto the line with this label. If the label cannot be found, B DIX will close this command file (and possibly its parent) until9 the input comes from a terminal or (in BATCH) exit DIX.B The label must bĪe visible from the current context level, so forG example "LAB" will not be found, because "LAB" is in the repeat/until7 structure, and you cannot jump into a loop structure. x=1 repeat lab : x=x+1 until x>5 goto lab4 GOSUB  Syntax: GOSUB label? Goto the line with this label. If the label cannot be found, B DIX will close this command file (and possibly its parent) until9 the input comes from a terminal or (in BATCH) exit DIX.D The return address will Ļbe stacked, and the RETURN command returns you to the next line. The maximum depth is 10.B The label must be visible from the current context level, so forG example "LAB" will not be found, because "LAB" is in the repeat/until7 structure, and you cannot jump into a loop structure. x=1 repeat lab : x=x+1 until x>5 gosub lab4 Labels& Each line can be preceded by a label / The label can be any string terminated by a :H Labelnames are notr case-sensitive and cŠan have upto 32 chararacters. : The first must be a-z, and the remaining a-z 0-9 $ or _. Example This_label12 : statement 4 LEAVE 4 Leave the current block (IF,FOR,REPEAT, WHILE) and1 start with the statement just after this block.8 The LEAVE command can only be executed within a block.4 LOCAL, syntax : LOCAL symbolname[,symbolname...]]> Declare local symbols in blocks. See the help about symbols.D This command is obsolete and replaced by the declarations commŃand.! See the help about declarations4 LOOP_TESTLOOP_ENDLOOP C The more general form of the while/endwhile and the repeat/until.A This allowes the test to occur at any place in the repeat loop. LOOP [statement1(s) ] TESTLOOP logical_expression [statement2(s) ] ENDLOOPA The loop/endloop is a block of statements. The TESTLOOP decidesG 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 4 ON On option command Option can be Warning Error Severe Control_c & And can be abbreviated to one letterF if an error occurs, DIX will execute 'command' for the errorlevel or a lower level. Ó Example ON error goto label_error.J Any error and severe will jump to label_error. Warnings will be ignored. 4 RETURN$ Will return from a previous GOSUB.I Return without an open GOSUB is NOT signalled as an error. DCL does not signal it, and so does DIX.4 REPEAT_UNTIL syntax : REPEAT  statement statement ..." UNTIL logicalexpressionG Repeat the statements as log as "logicalexpression" evaluates to true. See aŌlso the examples9 See also the help about the LEAVE and the CYCLE command4 SUBROUTINE_ENDSUBROUTINE FormatP label: SUBROUTINE [parametername[/qualifiers][,parametername[/qualifiers]..]]D Defines the beginning of a subroutine in a command procedure. TheA SUBROUTINE command must be the first executable statement in aG subroutine. The subroutine must be terminated with an ENDSUBROUTINE.D If a call is make to a subroutine, the (optional) parameters are E evaluated, and Õthe resulting value is placed in the (local) symbolC with the name "parametername" or Pn if there are more parameters then parameternames. Qualifiers can be /REAL /INTEGER /DATE /CHARACTERB /LOGICAL The expression given at the @ line must match the* type given to this symbol /SYMBOLF If the parametername has a /SYMBOL qualifier, the parameter will beI an alias to the original expression parameter (which must be a symbol)E so thatÖ modifications to the parameter will be done to the symbol.7 This is a way to let the @file return output values.C If DIX is in STRICT/DECLARATIONS mode, the number of defined and# actual parameters must be equal. Example  integer x=10 Call mysub 10*4,"TExt",x,46 mysub: subroutine count,name/character,xparam/symbol ... ... endsubroutine; In the subroutine "mysub" there will be 5 symbols defined$ COUNT : integer with the value 40J NAME : chara×cter with the value "TExt" (must be a charcter expression)$ XPARAM : Integer with the value 105 and modifications are done to the X symbol# P3 : integer with the value 41 $NRARGS: Integer with the value 3 (3 arguments)E If there are more parameternames then parameters, the parameternameA will be defined as a character string with the value "" (empty) 4 WHILE_ENDWHILE" syntax : WHILE logicalexpression statement statement Ų... ENDWHILEG Repeat the statements as log as "logicalexpression" evaluates to true. See also the examples9 See also the help about the LEAVE and the CYCLE command 4 Examples# k = 1 !define symbol k value 1? Loop: k = k + 1 !label + increment of symbol3 Examine field_'k' !exam with symbol substitution/ IF (2*(k+10) < 20) goto loop !test for repeatG This following script will increment BYTLM by 1000 for all users withJ a name that maŁtches *A*, and have a bytlm of >=50000 and a jtquota >4000C (maybe not a very useful example, but is shows the possibilities) nmod = 0 nfnd = 0 on error goto done loop: nfnd = nfnd + 11 if (f$matchwild(uaf$t_username,"*A*")) goto next$ echo "Found user ''uaf$t_username'"< if (uaf$l_bytlm < 50000 | uaf$l_jtquota <= 4000 ) goto next) deposit uaf$l_bytlm='uaf$l_bytlm + 1000' nmod = nmod + 1 update/quiet3 echo "Updated ''uaf$t_username' to ''uaf$l_bytlm'" next:  rŚead goto loop done:4 echo "Found ''nfnd' users , modified ''nmod' users" Example for while constructs a = 10 while a>0 b = 2 repeat  say "a = ''a' b = ''b'" b = b - 1 until b=0 a = a-1 endwhile Example for a FOR contruct 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 Example for a repeat conŪstruct 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: See also the help about the LEAVE and the CYCLE command 3 ADD ADD DESCRIPTION name[,name...]H Add new descriptions to the current file. See also the remove command. example  Add description exteÜnsion.dir3 Will add the .dir description to the current file3 BACK Syntax BACK [/LOG]? This command allows you to return to the file from which you E followed a link to this file. Up to 10 jumps are saved in a history buffer. See also the FOLLOW command 3 CHARACTER CHARACTER name[=value]H Declare a new symbol of type "CHARACTER" and optionally give a value.( The value must be of type "character" Example$ CHARACTER mystring="Heading line" See thŻe help about declaration3 CLOSE2 CLOSE[/qualifiers] close the current fileM CLOSE[/qualifiers] mask close file with tag=mask or filename matches mask6 mask can contain wildcardsI Will close the file(s) that match 'mask'. If the current file is closed: the first file in the list will become the current file. 4 qualifiers/ERROR /ERROR=label? If the CLOSE results in an error, DIX will jump to the label.O If the /ERROR qualifier is not sŽpecified, DIX will look for the ON condition.3 CREATE  Create somethingC CREATE DESCRIPTION new_description !create new description record+ CREATE !create new record in the file4 CREATE CREATEB Create a new record. The record will be filled with default data$ - binary null for non-text fields - Spaces for text fieldsG and then allow you to modify this record, and eventually write it out via the Update command.4 CREATE_DESCRIPTION  CREATE DESßCRIPTIONI Create a new description. This can be in the system_library(if you have/ write access), the user_library or in a file.H If you specify /SYSTEM_LIBRARY , the new description will be placed in the system_libraryF If you specify /USER_LIBRARY , the new description will be placed in the user_libraryE If you specify /FILE or nothing, the new description will be in the file in the current directory. 3 COPY  is an alias for CUT3 CUT CUT[/qualifiers] [TAG] ą COPY is an alias for the wordE Save current record values to save area (clipboard) or to a symbol.H TAG is optional. If not specified, the current file is used, otherwise& the file specified by 'TAG' is used.C The PASTE command can be used to restore data from the save area. See the help about PASTE Qualifiers can be0 /SYMBOL=symbolname save the data to a symbolM You can use the PASTE command to restore the record from this save-area  or symbol.D /DCL The sįymbol name is a dcl symbol. There are limitations on DCL; symbols, and it you exceed them, you will see an error% /GLOBAL The dcl symbol is a global.3 DATE DATE name[=value]C Declare a new symbol of type "DATE" and optionally give a value.# The value must be of type "date" Example' DATE start_date=f$date("1-JAN-2004") See the help about declaration 3 DECIMAL DECIMAL name[=value]F Declare a new symbol of type "DECIMAL" and optionally give a valuāe.& The value must be of type "decimal" Example( DECIMAL counter=f$decimal("12345e12") See the help about declaration3 DECLARATIONS Syntax) 'type' name[=value][,name[=value]...] where> type : REAL, CHARACTER, LOGICAL ,INTEGER or DATE, DECIMAL( name : The name of the local symbolC value : An expression that returns a value of the correct type C Symbols declared cannot be declared again, and cannot be assigned? another value than the declarećd type. See also the help about SET STRICT Example 4 INTEGER a=10 !declare an integer a with value 10G INTEGER a=20 Will result in an error "symbol A is already defined."K a=20 Is allowed, change the value to 20 (value must be integer)R a="XYZ" Will result in an error "Symbol A has other type than expression"3 DEFINE Used to define keys? Keys can be defined for screen mode or for interactive mode. 4 DEFINE/KEY ( DEFINE/KEY keyname string[/qäualifiers] / Define keys for the INTERACTIVE mode of DIX.E See also the RTL SCreen Management (SMG) manual about the possible keys. 5 Qualifiers /SET_STATE /SET_STATE=name , DEFINE/KEY keyname string /SET_STATE=NAME.$ Sets the key driver to state NAME. /IF_STATE /IF_STATE=name* DEFINE/KEY keyname string /IF_STATE=NAME I If the user enters "keyname", the string "string" will only be returned? if a previous key has put the key driver in the "NAME" staåte. /TERMINATE 8 After the /TERMINATE, the result will be given to DIX./ECHO Echo the translated strings /LOCK_STATE. DEFINE/KEY keyname string/SET_STATE=NAME/LOCK A Normally the state is removed after the typing of the next key.E If you define the key (and the SET_STATE) with the /LOCK, the state4 will remain "NAME" until another state is entered. 4 DEFINE/SKEY) DEFINE/KEY skey function [/qualifiers]7 Define a key combination for the screen mode ofę DIX.P skey : the keyboard key : Almost all keys can be used for keydefinitions. function : the DIX function 9 See the help about DIX_functions for allowed functions 5 qualifiers /SET_STATE /SET_STATE=nameA The parameter "" must be present but the contents are not used.I SMGKEY will set a new state (GOLD and BLUE are used by default, but you3 may redefine the states if you redefine all keys)) Statenames may not contain a - (hyphen) example DEFINE/SKEY PFē1/SET=GOLD ""1 DEFINE/SKEY UPPERCASE_A/IF_STATE=GOLD key_print? If the user enters PF1-A, the function key_print is executed. A For a list of allowed functions, see the help about KEY_MAPPING /IF_STATE /IF_STATE=NAME C Specifies a state that must be in effect for the key definition A to work. The state name is an alphanumeric string. States are , established with the /SET_STATE qualifier* Statenames may not contain a - (hyphen) DEFINE/SKEY PF1/SET=GOLD "")č DEFINE/SKEY F20/IF_STATE=GOLD key_print DEFINE/SKEY F20 key_swap_disA If the user enters PF1-F20, the function key_print is executed.A It ths user enters F20, the function key_swap_dis is executed.A For a list of allowed functions, see the help about KEY_MAPPING/CONTEXT_SCREEN /CONTEXT_SCREEN=Screen_contextA Define this key only for a specific screen. Default is that the key is valid in all screens Valid screens are. DISPLAY_ALL Display data in all forma éts; SELKEY Select data for a key value1 EDIT Edit description I SELFILES Select one file when mulitple files match: EDITFILES Select a file (or add one)A SELDESCRIPTIONS Select a description (or add one)- YESNO Yes/No screen6 VIEW View all kinds of data. HELP Help screen(s)I EDITMULTIPLE źEdit multiple lines (in show description)2 EDITLINE Edit a single line. SELFIELD Select a field7 SHOWRAW Show data in raw format? SHOWDES Show data in description format6 SELDEMO The select demo screen3 DELETE  DELETE/KEY name[/state=name]A Delete SMG key definitions for interactive modeD DELETE/SKEY/ALL Delete all (default)keydefinitions for screen ėmode! DELETE/SKEY skey [/STATE=NAME] O Delete the key definition for skey (possibly with state NAME)$ DELETE/SYMBOL/LOG Delete symbol/ DELETE/SYMBOL/LOCAL Only delete local symbolK DELETE/RECORD Delete the current record (if the file is indexed orD relative and you have opened it with /MODIFY)J This will set the record context to the next record 3 DEPOSIT  DEPOSIT fieldname=value. DEPOSIT offset=vaģlue 4 Modify a field to the given value.  DEPOSIT fieldname = value) DEPOSIT/RAW offset[.bit_offset] = value2 DEPOSIT/VFC Deposit data in VFC buffer or record = The entered data is first 'unsymbolized' (see substitution)C and then translated to the field definition, and deposited in the data-record.A The value specified is converted to the binary equivalent. This9 will do what you expect, but there are some extensions  See the CONVERSION subtopic.ķ 4 Qualifiers/RAWH Display data in raw (non description) mode. In this mode the qualifiersB /WORD, /BYTE, /LONG, /HEX are significant. Default is the /LONG.5 Offset can be specified as byte_offset[.bit_offset] /WORD1 Display data in words. Valid only in /RAW mode./BYTE2 Display data in bytes. Valid only in /RAW mode./LONG> Display data in longwords. This is the default in /RAW mode. Valid only in /RAW mode. /UNSIGNED2 Display integers as unsigned. Not used forī /HEX./BITS /BITS=number_of_bitsK For field_mode you can set any bitsize up to 32. Valid only in /RAW mode./BINARY# Interpret the data in binary mode/DECIMAL% Interpret the data in decimal mode./HEX" Interpret the value in HEX mode./OCTAL" Interpret the value in OCTAL mode 4 CONVERSION? Normally the value will be converted to binary, but for some 3 field-types more options are available. See below (R)BITS fields> DEPOSIT field=name1,name2, ļname3 Set bits name1,name2,name3E DEPOSIT field=+name4 Leave the original value, and add) name4G DEPOSIT field=-name1 Leave the original value, and clear) name1 INTEGER*n with n=1,2+ Only normal integer conversion is tried INTEGER*4,*8! First try integer conversion.; Then try %Xnnnn, the %Onnnn, %Bnnnn, %Dnnnn conversions# (hex,octal,binary,decimal); Then try 'ddšdd'X, 'dddd'O, 'dddd'B 'ddddd'D conversions# (hex,octal,binary,decimal) Try to convert as date*4,*8 Try to convert as IDENTIFIER Try to convert as UIC! Try to convert as 'xxxx ascii? On VAX INTEGER*8 is only partial supported and is expressed  as INT*4.INT*4 VFC The format is "DD text"C The DD are 2 hexdecimal chars. Not all combinations are valid.  The text field is ignored." Only 0..7F : 0.127 linefeeds* 80..9F : C0 cońntrol codes 00..1f# E0..EF : VFU codes 00..0F+ See the VMS-manuals about VFC formats. 3 DISPLAY" Display is a synonym for EXAMINE3 DUMP DUMP [/qualifiers]I Dump ine ore more records. Can be used to display one or more records, ? and also to output data in CSV (comma Seperater Values) mode. 4 Qualifiers/OUTPUT /OUTPUT=filename /OUTPUT=sys$output (default) Set the output file/COUNT /COUNT=n E determines the number of records displayed. De ņfault is all records /CSV$ /CSV=(Csv_option[,csv_option...]) Csv_option can be2 HEADER : Print a header line before all data0 NOQUOTES : Do not 'quote' fields (see below), ALL_QUOTES: User quotes around all fields; SEPARATOR=COMMA : Use COMMA as separator (default)1 SEPARATOR=TAB : Use TAB char as separator1 SEPARATOR=COLON : Use COLON (:) a separator6 SEPARATOR=SEMICOLON: Use SEMICOLON (;) as separator3 SEPARATOR=CHARACTER=%Xdd: Use %Xdd as se óparatorO QUOTE=DOUBLEQUOTE : Use the " character for quotes around fields (default)E QUOTE=QUOTE : Use the ' character for quotes around fieldsG QUOTE=CHARACTER=%Xdd: Use the %Xdd character for quotes around fieldG If you want quoting (DEFAULT) , DIX will insert the "quotecharacter" M around text fields and field that contain the "separatorcharacter" or spaceA If you specify ALL_QUOTES, DIX will insert the "quotecharacter" around all fields.E If you specify NōOQUOTES, DIX will never insert the "quotecharacter"2 The header fields are regarded as "text" fields.C See also the /SELECT qualifier for help about selection of fields ExampleG DIX/FILE/CSV=(header,all_quotes,quote=quote,separator=semicolon) fileF 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 or1 DIX/FILE/CSV=(noquote,separator=char=%X20) fileB Output iõs a file with no fields quoted, and SPACE as separator/DISPLAY* /DISPLAY=(displayitem[.,displayitem...]) /DISPLAY=ALL (default)E This qualifier decides what parts of the record are to be displayed Displayitem can be2 [NO]DATA : Display the data part of the record> [NO]VFC : display the VFC part of the record (if present)T [NO]RECNR : Display the recordnumber (only if record not found via keyed access) ' [NO]RECLEN : Display the recordlength, [NO]RFA : Display töhe RFA of the record ALL : Print all parts3 ECHO$ ECHO[/qualifier] modify record xyzF Display a text to the output file. This can be useful in batch-jobs. One qualifier is supported C /CONSOLE : Print the output to the terminal regardless of the /output setting.3 EDIT' EDIT The default is descriptionC EDIT DESCRIPTION Edit the description with the current defined .- EDIT SEARCH Edit the search string(s) 3 EXAMINE! E÷XAMINE[/qualifiers] [fieldmask] EXAMINE/RAW offset[:end_offset]B Display all fields with the name matching 'fieldmask' . 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]D The qualifiers MUST be entered before the fieldmask or the offsetI In ųthe RAW 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. 4 QUALIFIERS/ALL= Display the selected fields or offset with all data formats See examples below $dix/int sysuaf DIX>exa/all *byt*O 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|@...5 |DATE*4 |4-APR-1859 21:20:00.006 |DATE*8 |17-NOV-1858 00:00:00.029 |PROTECTION |S:RWED, O:RWD, G:W, W:RWED( |RINTEGER |222298115) |FILEID |(3392,3,0)# |BITS |BIT6O 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]# |CHARACTüER*4|....6 |DATE*4 |17-NOV-1858 00:00:00.005 |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 | /DESCRIPTION4 Display the description info after the field value./DISPLAY) /DISPLAY=(displayitem[,displayitem...]) /DISPLAY=DATA (default)E This qualifier decides what parts of the record are toż be displayed Displayitem can be2 [NO]DATA : Display the data part of the record> [NO]VFC : display the VFC part of the record (if present)T [NO]RECNR : Display the recordnumber (only if record not found via keyed access) ' [NO]RECLEN : Display the recordlength, [NO]RFA : DIsplay the RFA of the record ALL : Print all parts/EXPANDD Force new expansion of the current description. If the descriptionD has conditional fields, and one of the symbols used as a cžondition@ has changed, you can force DIX to reexpand the description and& therefore reevaluate the conditions./HEADERA In raw mode the /HEADER will output a line wit the byte offsets of the data below./OUTPUT /OUTPUT=filename Print the output to a file./SCREEN /SCREEN /NOSCREEN (Default)J Display the data in an SMG window, that allows you to scroll through it. See also SET PAGED SCREEN/PAGED@ If the output is printed to the terminal, the output is printer7 ’per page, and the user must type a return to continue /ORIGINALL Do not display the data from the current (possibly modified) data in memory. but use the original contents of this record. /SAVE_AREAL Do not display the data from the current (possibly modified) data in memory0 but use the save area (see also CUT and PASTE)./RAWH Display data in raw (non description) mode. In this mode the qualifiersB /WORD, /BYTE, /LONG, /HEX are significant. Default is the /LONG. /WORD1 Display data in words. Valid only in /RAW mode./BYTE2 Display data in bytes. Valid only in /RAW mode./LONG> Display data in longwords. This is the default for RAW mode. Valid only in /RAW mode. /UNSIGNED2 Display integers as unsigned. Not used for /HEX./HEX. DIsplay the data in HEX. Default is decimal.M If this qualifiers is specified in /RAW mode, the data is displayed in HEX.H This qualifier can also be used in /NORAW mode (description mode). The? data will be displayed in HEX. See also the /NUMBER qualifier/NUMBER /NONUMBER /NUMBER=DECIMAL (default) /NUMBER=HEX : Display byte offsets for each field. This is the default. /COMPRESS /NOCOMPRESSE Do not display empty fields (spaces for text, and nulls for binary). Default is /NOCOMPRESS. + This command is valid only in /NORAW mode./MARK /MARK DefaultJ If you specify /MARK (default), DIX will display fieldnames, that are in6 the current key of an indexed file, in bold/reverse./TAG /TAG /NOTAG 7 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 commandsC IF tag is true, and the user examines multiple file/desctriptionsG the display will prefix the fielname with the file\description\ tag.@ If tag is false, fieldnames will be printed normally, and all @ files/desciptions are signalled. Only if no file\description\A mask is present, there will be no display of file/description. ExampleB Assume we have 3 files opened (tags file1, file2 and file3) and0 on file1 there is a descr1 description etc... File2 is the current fileJ DIX>examine/tag *\*\*txt* !display all fields with the name containingL !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 textI 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 3 EVALUATE Evaluate expression B Evaluate expression. An expression can contain integers, reals, 0 character strings,field values and parameters. See the help about expressions)![dix inter expres]Help about expressions; Dix supports some functions, see the help about functions% in "interactive_Commands functions"![function]dix inter functions 4 qualifiers/hex Display the result in HEX./octal Display the result in octal. 4 qualifiers/binary Display the result in binary.3 EXIT Leave DIX. 3 Expressions- Expressions can use the following operators Arithmetic : +,_,/,* ' Logical : & (and) | (or) operator. Comparison : <,<=,=,>=,> or <> ! Priority : Comparison (highest) &,| *,/ +.- (lowest) : 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 numbers8 or 'dddd'R with R=D(ecimal),H(ex),O(ctal),B(inary)! or %Rdddd with R as above.3 2. character strings. They start and end with a "& 3. Logical constants (true or false) 4. Symbols (with their types)  5. Parameters4 6. Special functions. See the help about functions)![dix inter function]Help about functions: 7. Fields of the record. It a field type in not logical,> integer or real, it will translated# to text.( The full syntax of the fieldname isB filetag\descriptiontag\fieldname. The filetag defaults to the3 currentfile.I The descriptiontag defaul ts to theP current description of the selected file.> If there is only one tag, it is regarded as a filetag, soN name\fieldname seaches for field "fieldname" in the current description " of the file with tag "name".L If there is no tag, the search will be for the fieldname in the current& description of the current file. < The operators have the normal meaning with some extensions% for operations on character strings> 1. i nteger*character will result in a string that contains1 integer times the source4 e.g. 10*"A" => "AAAAAAAAAA"4 5*"AB" => "ABABABABAB"B 2. character/character will remove all occurrences of the second. string from the first8 e.g. "ABABABAB"/"A" => "BBBB"5 "ABABCABAB"/"AB" => "C"= 3. date1-date2 The result must be a delta time,  so L date2 must be >date1, or date2 must be a delta time> and the result must bne a delta time.E 4. date1+date2 Date1 or date2 (or both) must be delta times3 FIND FIND[/qualifiers] searchmask. Search data in record (not a record search).H Display those fields that contain the sear-string. The compare is done8 in ascii mode with the normal VMS wildcards (* and %). 4 qualifiers/RAWH Display data in raw (non descriptio n) mode. In this mode the qualifiersB /WORD, /BYTE, /LONG, /HEX are significant. Default is the /LONG.5 Offset can be specified as byte_offset[.bit_offset] /WORD1 Display data in words. Valid only in /RAW mode./BYTE2 Display data in bytes. Valid only in /RAW mode./LONG> Display data in longwords. This is the default in /RAW mode. Valid only in /RAW mode. /UNSIGNED2 Display integers as unsigned. Not used for /HEX./HEX" Interpret the value in HEX mode. /COM PRESSO Do not display fields with "empty" values (0 for binaries and space for text)/OUTPUT /OUTPUT=Filename Print the output to a file./SCREEN /SCREEN /NOSCREEN (Default)J Display the data in an SMG window, that allows you to scroll through it. See also SET PAGED SCREEN/PAGED@ If the output is printed to the terminal, the output is printer7 per page, and the user must type a return to continue 3 FOLLOW  4 FOLLOW[/LOG][/automatic][/READ][/WRITE] fieldna meE If the fielddefinition in the description file contains info about8 a link to another file (/FILE,/KEY,/RECORD,/COMPUTE) - you can follow this link to another file. J If that file is not already opened in DIX and you specified /automatic,L DIX will try to open the file. If you do not specify /AUTOMATIC, you will) be asked if you want to open the file.N If the file can be opened and the record can be found, DIX will display theI new record. If the file cannot be opened or the record cannot be foundF DIX will signal the error, and you stay in the current file/record.J DIX will open the file in the same mode (rad/write) as the source file,9 unless you overide with the /READ of /WRITE qualifier.F See the help about DIX DISPLAY INTER/DESCR RECORD_FORMAT FIELD_DECL See also the BACK commandC![DIX DISPLAY INTER/DESCR RECORD_FORMAT FIELD_DECL]Help about /file 3 FUNCTIONS@ Dix supports some function during the evaluation of the input.G Functi ons are defined with up to 10 arguments. The functionnames can G be abbreviated to the point described in the help about the function.: More info about these functions is in the deeper topics.8 The () are required, even if no arguments are present. arithmetic functions1 arg1 Arg2 Arg3 Arg4 Output< AND Int Int Int : Anded value< OR Int Int Int : Ored valueF NOT Log Log : Reverse logical valueE EVEN Int Log : True if arg1 is evenC ODD Int Log : True if arg1 is oddH LSHIFT Int Int Int : arg1 shift arg2 to leftI RSHIFT Int Int int : arg1 shift arg2 to right? MOD Int Int Int : mod(arg1,arg2)J MAX Int/real Int/real Int/real same: max value (up to 10 args)J MIN int/real Int/real Int/real s ame: min value (up to 10 args)Y BTEST Int Int Log : Return true if bit 'arg2' of arg1 is setI IBSET Int Int Int : arg1 with bit 'arg2' setM IBCLR Int Int Int : arg1 with bit 'arg2' cleared Conversion functionsA INT Int/real/char Int : Converted to intE LOGICAL Int Log : Converted to Logical@ NINT Int/real/char Int : Nearest i ntegerB REAL Int/real Real: converted to realB STRING All Log Char: Converted to char Lexical funtionsH F$CHAR int char: make a string of 1 charF F$CHECKSUM int int char char Int : The checksum (4 args)B F$COLLAPSE char char: remove all spacesE F$DATE int String date: Create a date symbol: F$EDIT String String char: Like DCL H F$ELEMENT int char char char: Return the n'th elementN if n <0 return the last+1+'n'8 elementB F$ENUMERATE int char char: Returns filenamesJ F$EXISTS char char: True or false for symbolsC F$EXTRACT Int Int Char char: Like DCL F$EXTRACTN if int<0 return data fr om theB end of the stringI F$FEXISTS char char: True or False for fields= F$FAO char allsorts char: F$FAO of DCLJ F$FIELD char char char: return info about a fieldF F$FTYPE char char: The type of the fieldF F$GETDVI char char various : See f$getdvi help2 F$ENVIRON char variousU F$EXTV int  int any int : Extract some bits (sign ext) from p3U F$EXTZV int int any int : Extract some bits (zero ext) from p3J F$FILE char chr/int: Attributes of the fileY F$ICHAR char Int : Return integer val of string of 1 lengthD F$INSV int int int any any : Insert bits in arg4H F$LOCASE char Char: Return lowercase stringD F$LOCATE char char Char  char Int : Find char2 in char1O F$MATCHWILD char char Char char log : Check if arg1 matches wild in L F$MESSAGE int char: The message text of operandA F$LENGTH char Int : Length of stringD F$RANDOM int/real Int/real : A random valueG F$TIME String Time Char: See help about f$time G F$TRIM char Char: Delete trailing spaces= F$TRNLNM char various char/int: Like DCLG F$TYPE char char: The type of the symbolR F$VERIRY int/log Log : Get and change the verify settingH F$UPCASE char Char: return uppercase stringH F$ADD char char int int Char: add text numeric stringM F$SUB char char int int Char: subtract text numeric stringM F$MUL char char int int Char: multiply text numeric stringK F$DIVIDE char char int int Char: divide text numeric stringS F$MODE None Char: The current mode (interactive/...)M F$RADIX Int Int Char Char: Convert integer to any radixM F$DECIMAL Int/chr Deci: Convert data to decimal type Data dependend functionsP FILECOUNT None Int : Return the number of files openR %DATA None Char: A string with the record contentsV %LOC char Int : The location of the field in the dataY %BLOC char Int : The bitlocation of the field in the dataG %RECORDSIZE None Int : The current recordsize4 AND. AND (Value1,value2) delivers the ANDed value All arguments are integer The result is integer4 OR, OR (Value1,value2) delivers the ORed value All arguments are integer The result is integer4 NOT) NOT (Value1) delivers the negated value The argument is logical The result is logical4 ODD- ODD (Value1) delivers true if value1 is ODD The argument is integer The result is logical4 EVEN/ EVEN (Value1) delivers true if value1 is EVEN The argument is integer The result is logical4 LSHIFT? LSHIFT (Value1,value2) delivers value1 left shifted by value2 Can be abbreviated to LSHI All arguments are integer The result is integer4 RSHIFT@ RSHIFT (Value1,value2) delivers value1 right shifted by value2 Can be abbreviated to RSHI All arguments are integer The result is integer4 MOD0 MOD (Value1,value2) delivers value1 MOD value2-  All arguments are integer. The result is integer4 MAXG MAX (Value1,value2[,value3]) delivers MAX of value1,2,3 (max 10 args)% All arguments are integer or real. E The result will be integer if all elements are integer, or real if  one of them is real.4 MING MIN (Value1,value2[,value3]) delivers MIN of value1,2,3 (max 10 args) All arguments are integerE The result will be integer if all elements are integer, or real if  one of them is real.4 REAL( REAL(integer) will return a real value 3 Argument is integer or real, return value is real 4 LOGICAL- Converts the integer to a logical (low bit)9 Argument is integer or logical, return value is logical4 INT/ INT(real) will return an int value, truncated+ Argument is real, return value is integer4 NINT- NINT(real) will return an int value rounded6 Argument is character, real, return value is integer4 STRING5 STRING(allformats[,hex]) will return a string value. Argument can be of all defined symbol types.+ hex can be true or false (or not present) The return value is char4 BTEST BTEST (intval,bitnr)- Return true if bit 'bitnr' of intval is set& Args are integer, result is logical4 IBSET IBSET (intval,bitnr)" Return ival with bit 'bitnr' set& Args are integer, result is integer4 IBCLR IBCLR (intval,bitnr)& Return ival with bit 'bitnr' cleared& Args are integer, result is integer 4 FILECOUNT Filecount()G Return the number of files opened. No arguments may be specified, but the () must be present.4 F$ADD F$ADD(str1,str2[,width])> Str1 and str must contain string values, result is a string8 F$ ADD will will add str1 to str2 and return the resultA If width is not specified, the result will be as long as neededM If width >0, the result will be blank filled in a string of length 'width' L If width <0, the result will be zero filled in a string of length 'width' D 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) R eturns "000468") F$ADD("123","345",2) Returns "**"4 F$CHAR F$CHAR(integer) E Result is an character string with length 1 with the ascii-value of the argument. The argument is integer The result is char 4 F$CHECKSUM. F$CHECKUM(bpos,epos,[type],[alg],[filetag]) Can be abbreviated to F$CHECF bpos : int : starting position in data record (in bytes). The first& byte in the buffer = 0. epos : int : end position in the databufferE typ!e : char: Optional, BYTE or WORD or LONGWORD, default is byte. - The size of the data elementsG alg : char: Optional, XOR or SUM, default is SUM. The algorithm of  the checksum: tag : char Optional file tag, default is current fileB example: the indexf file has a checksum at the end of the record5 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") 4 F$COLLAPSE+ F$COLLAPSE(string) will remove all blanks Can be abbreviated to F$COLL Input and result are character4 F$DATE Syntax  F$DATE(value[,what]) Value can be. 1. a string containing a valid VMS date-timeA 2. an integer or real and "what" decides what this value means.I "what" can be Weeks,days,hours,minutes,seconds,hundredth or cputicks#' F$DATE returns a symbol of type DATE examples DIX>A = F$DATE("TODAY") DIX>SHO SYMB A A == "23-OCT-2003 12:23:51.09" DIX>A = F$DATE(1.3,"HOURS") DIX>SHOW SYMB A A == "0 01:17:59.99" 4 F$DECIMAL F$DECIMAL(value)6 Convert an integer or string to the "decimal" type.- The decimal type is a fixed decimal string0 Parameter : value : Integer or Character vlue# Result: Decimal type 4 F$DIVIDE) F$DIVIDE(str1,str2[,width],[nd $igits])> Str1 and str must contain string values, result is a stringJ F$DIVIDE will will divide str1 by str2 and return the result. The result will be rounded.A If width is not specified, the result will be as long as neededM If width >0, the result will be blank filled in a string of length 'width' L If width <0, the result will be zero filled in a string of length 'width' D If width<>0 and the result does not match, result will be a string of 'width' * I 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 "**"N F$DIVIDE("12","5") Returns "2.4000000000" !the default setting ofJ !set decimal/digits@ F$DIVID &E("12","5",,2) Returns "2.40" !overrule4 F$EDIT! F$EDIT(string,"WHAT[,WHAT..]")1 Argument 1 : string : The string to be edited7 Argument 2 : string : The control string containingL COM[press] replace all multiple blanks/tabs by one9 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 "!" charC If the string contains "", then the part within "" is untouched.' Result : string : The edited string 4 F$ELEMENT F$ELEMENT(number,char,string) Can be abbreviated to F$ELEMC 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 4 F$ENUMERATE F$ENUMERATE(index[,mask])3 index : Integer : the index'th match is returned/ mask : Character: Pattern match for the name( Supports * and %.0 Returns the next fieldname that matches "mask" Example 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 4 F$EXISTS F$EXISTS("name") Can be abbreviated to F$EXIS , Deliver true if name is an existing symbol4 F$FAO0 F$FAO(controlstring[,parameter[,paramter...]])% Like the DCL F$FAO, format a string controlstring : char4 parameter : either integer, character or date. Output : char 4 F$EXTRACT F$EXTRACT(bpos,nkar,string*) Can be abbreviated to F$EXTR1 Extract part of the string (like DCL F$EXTRACT)A If bpos is <0 the bpos will be taken from the end of the string0 The first char of the string is at position 0. Examples" F$EXTRACT(2,3,"ABCDEF") => CDE F$EXTRACT(-2,1,"ABCDEF") => E arg1 is int arg2 is int arg3 is character result is character4 F$EXTV F$EXTV(pos,size,base)2 Extract some bits (sign extended) from a source- pos (integer): the position from the b+ase7 size (integer): Max number of bits (no more than 32) base (any) : Source The result is an integer 4 F$EXTZV F$EXTZV(pos,size,base)2 Extract some bits (zero extended) from a source- pos (integer): the position from the base7 size (integer): Max number of bits (no more than 32) base (any) : Source The result is an integer 4 F$FEXISTS F$FEXISTS("name") Can be abbreviated to F$FEXI+ Deliver true if name is an existing field 4 F$FI,ELD F$FIELD(fieldname,what) Return info about a fieldname what can be? EXISTS : Return true or false whether the fieldname exists5 SIZE : Returns the size (IN BITS) of the field$ OFFSET : Return the byte offset$ BITOFFSET : Return the bit offset # TYPE : The type of the field9 FIELD : Return true if the field is in a bit-range.# NDIM : Number of dimensions K For the next two items, a 3rd parameter can be used (the dimension index) -F$FIELD(fieldname,what,dimidx) 2 LOWDIM : the low value for dimension 'dimidx'3 HIGHDIM : The high value for dimension 'dimidx' 4 F$FTYPE F$FTYPE("name") Can be abbreviated to F$FTYP' Deliver the type of an existing field6 many possibilities (see the help about file types)E This statement looks like the DCL F$TYPE, but it's argument must be a string between quotes. 4 F$GETDVI Result = F$GETDVI(device,what)1 Device : char string containing the device nam .e what : The item you want ! Result is depending on the what What Resulttype * MAXBLOCK Integer The size of the disk- MAXFILES Integer Maximum number of files: EXISTS Logical If the device exists TRUE else FALSEJ BLNRFILE Integer The record number of the fileheaderentry of the fileH with fileid 0 in INDEXF.SYS. The record number in E INDEXF.SYS of a file with fileid (12345,5,6) = : F$GETDVI("/disk","BLNRFILE") + 12345 C You muset have READ access to the index file.4 F$ENVIRONMENT F$ENVIRONMENT("What") Report some environment info What Type Meaning, DEPTH Int Command procedure depth. PROCEDURE Char Name of command procedure. PROMPT char The current Prompt string% INTERACTIVE Log Interactive mode- MESSAGE Char The curtent message mode) ON_SEVERITY Char The current on level* ON_ACTION Char The0 current on action, PRCNAM Char The current processname, STRICT Char The current strict mode/ VERIFY Log The current verify setting4 F$FILE F$FILE("arg"[,index])A Return info about the 'indexth' file. If index is not specifiedE the current file is used. Index is either a number of a string that. will be matched against the tag of the file.+ arg Meaning Result Value@ ORG Fileorganization Char IDX REL SEQ BLK(blockmode)M KE 1Y Currentkey Int Current key (0 for nonindexed files). NAME Filename Char FilenameM NOK Numberofkeys Int Number of keys (0 for nonindexed files)8 For indexed files the following extra can be specifiedL F$FILE("arg"[,index],[keyindex]) info for the 'keyindex'th key, default is. the current5 KNAME Name of the key Char NAme of the key" KASCENDING Key is ascending Log# KVALUE Keyvalue 2 Char" KSTRING Is key string LOG< KSEGMENT Segments in key Int Number of key segments% KTYPE The keytype Char A For keysegments there is a fourth parameter (the segment index)O F$FILE("arg"[,index],[keyindex],[keysegment]) info for the 'keyindex'th key, J the 'keysegment'th segmentH KSPOS Segment position Int The position of the segment (or 0)D KSSIZE Segment size Int The size 3 of the segment (or 0) DESCRIPTION Description info9 For the description info two more arguments are allowed5 F$FILE("DESCRIPTION",[fileindex],[what],[desindex])* what : What information is returned5 NAME : The full name of the description/ TAG : The tag of the description> desIndex : The index of the description (default=current). L Desindex is either a number, or a string that will be matched / agains the tag of the 4description Examples D $dix/int sysuaf/des=(sysuaf,.dir),alpha.dir/des=(.dir,profile)/mulC %DIX-I-USINGFIL, Using file SYS$COMMON:[SYSEXE]SYSUAF.DAT;1/NOMODR %DIX-I-USINGDES, Using description DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;88(SYSU DIX>sh file/all/desH C TAG Type Filename SizeH * SYSUAF IDX SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 48# * SYSUAF Descr SYSLIB(SYSUAF)! DIR Descr SYSLIB(.DIR)H 5ALPHA SEQ SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]ALPHA.DIR;1 15! * DIR Descr SYSLIB(.DIR)$ PROFILE Descr SYSLIB(PROFILE) * means the current file9 DIX>say f$file("NAME") !returns the current file name! SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 DIX>say f$file("NAME",2) orJ say f$file("NAME","ALPHA") !both return the name of the second file0 SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]ALPHA.DIR;1 DIX>4 F$DESCRIPTION F$DESCRIPTION(index) + Return info about the 6loaded descriptions Index is an integer; Return value is the name of the loaded description (char) 4 F$ICHAR F$ICHAR(character)  Can be abbreviated to F$ICHA. The argument must be exactly one character. < Result is an integer with the ascii-value of the argument.4 F$INSV F$INSV(source,pos,size,base)A Insert bits from source into base and return the changed value  (base is unchanged)- source (integer) : the source of the bits1 pos (integer) : the p7osition from the baseI size (integer) : Max number of bits. There is no limit on the size,B only the size of the source (pos+siz>=0 and- pos+sizMUL& F$MUL(str1,str2[,width],[ndigits])> Str1 and str must contain string values, result is a string= F$MUL will will multiply str1 by str2 and return the resultA If width is not specified, the result will be as long as neededM If width >0, the result will be blank filled in a string of length 'width' L If width <0, the result will be zero filled in a string of length 'width' D 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 "**" 4 F$LENGTHJ F$LENGTH(string) will return the length of the string (including blanks) Can be abbreviated to F$LENG* argument is character, result is integer 4 F$RADIX " F$RADIX(value,radix[,separator])' Convert an integer value to any radix Argument value : integer radix : integer@? separator: the string to insert between the "digits" Result : string. If separator is not specified (or is blank) / If radix <=36, each "digit can be 0..9,a..zE if radix >36 each "digit" will be expressed as decimal numbers % separated by .# If radix is specified <> " " thenN All "digits" will be expressed as decimal numbers separated by "separator" Example " f$radix(33,16) will deliver "21"# f$radix(37,37) will deAliver "1.0"' f$radix(33,16,".") will deliver "2.1"' f$radix(37,37,"|") will deliver "1|0" 4 F$RANDOM F$RANDOM([argument]) Return a random number= Argument : integer : Return an integer value 0..argument-1> Real : Return a real value 0<=result Str1 and str must contain string values, result is a string? F$SUB will will subtract str2 from str1 Band return the resultA If width is not specified, the result will be as long as neededM If width >0, the result will be blank filled in a string of length 'width' L If width <0, the result will be zero filled in a string of length 'width' D 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$SUBC("123","345",2) Returns "**"4 F$TIME; The argument selects the part of the date/time to select. Syntax F$TIME([what[,time])= Time can be either a string containg a valid vms date-time H 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("DATE") The date F$TIME("TIME") The time* F$TIME("MONTHASC") The name of the month Return value is integer forD 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 4 F$TRIM0 F$TRIM(string) will remove all trailing blanks# Argument and result are character 4 F$TRNLNMD Translates a logical name and returns the equivalence name string= or the requested attributes of the logical name specified. FormatE FE$TRNLNM(logical-name [,table] [,index] [,mode] [,case] [,item])' See the DCL help about this function4 F$TYPE F$TYPE("name")/ Deliver the symbol type of an existing symbol1 (integer/real/character/logical/decimal/date)E This statement looks like the DCL F$TYPE, but it's argument must be a string between quotes. 4 F$VERIFY F$VERIFY([new_setting])? Change the verify setting and return the old value (like DCL) 3 New_setting : Integer or logical the new seFtting< 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) 4 F$UPCASEF F$UPCASE(STRING) Result is a string with all letters (a-z) upcased. Can be abbreviated to F$UPCA" argument and result is character  4 %BLOC  %BLOC("fieldname") 8 Gives the offsetG of a field in the datarecord in bits. Example des record for sysuaf ... ... integer*2 uaf$w_logfails ... end record 3 %BLOC("UAF$W_LOGFAILS") will return 2848 (8*356) 4 %DATA %DATA([tag]) 6 Returns a string value containg the current record.= This value can be saved in a symbol to perform a CUT/PASTE function. @ The optional tag parameter is the tag of the file. Default is the current file Example 5 DIX>a = %DATAH() !Save the current record contents0 DIX>.. modify record !do a log modificationsB DIX>PASTE/SYMBOL=a !Returns the record to its previous state4 %LOC  %LOC("fieldname") 9 Gives the offset of a field in the datarecord in bytes. Example des record for sysuaf ... ... integer*2 uaf$w_logfails ... end record ) %LOC("UAF$W_LOGFAILS") will return 356 4 %RECORDSIZE  %RECORDSIZE([what],[tag]) + Return the recordsize of the dIata in what If what is "DATA" Databuffer "SAVE" Save buffer "VFC" VFC buffer Default is databuffer: tag is the optional filetag, default is the current file3 GOMARK  GOMARK markname( Return to a previous mark set by MARK.3 HELP% Display help, you are doing it now. 3 INQUIRE - INQUIRE symbol [promptstring] [/qualifiers]? Lets the user give a value to a symbol (like the DCL inquire) promptstring is default Data Qualifiers can beJB /PUNCTATION (default) append a colon and a space to promptstring O The string will be evaluated, and the symbol will be defined with the result. 3 INTEGER INTEGER name[=value]F Declare a new symbol of type "INTEGER" and optionally give a value.& The value must be of type "integer" Example INTEGER counter=10 See the help about declaration 3 INQUIRE& INQUIRE symbol [prompt] [qualifiers]? Read a value from the terminal, and assign it to the symbol.A K The value of the expression determines the type of the symbol.9 Prompt is the (optional) prompt string, default "Data" Qualifiers can beA /[NO]PUNCTUATION (default) : add a ": " to the prompt string.  3 LOGICAL LOGICAL name[=value]F 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 declaration3 MARK MARK marknameG Place a marker on thLis record. You can return to this record via the 2 RETURN command. THe default markname is DIXMARK example MARK this_rec command command ... 4 GOMARK this_rec !return to the record of the MARK3 NEXTC Via the NEXT command you can select the NEXT file or description.& NEXT FILE : Select next fileB NEXT DESCRIPTION : Select next description of the current file.> NEXT [RECORD] : Read the next record of the current fileA NEXT RECORD Tag : MRead the next record of file with tag 'tag'3 OPEN  Open more files.# The open command has two syntaxes ) 1. OPEN[/qualifiers] file[/qualifiers]- 2. OPEN[/qualifiers] tag file[/qualifiers]< Tag is a symbol that can be used to reference the file to.C Most file commands use the current file, but if you specify a tagE you can execute the command for a non-current file. DIX will append3 a sequence number to the tag if it is not unique.C If you do not specify a tag, D NIX will assume tag FILE, and append& a sequence number to make it unique.F Open will automatically read the first record, so there is a currentA record, unless the user specifies a record sslection qualifier. example $DIX/INTERACTIVEI DIX> OPEN vaxdir vax.dir !open the file vax.dir and make it currentI DIX> OPEN alphadir alpha.dir !open the file alpha.dir, but VAX.dir will3 !remain the currentG DIX> NEXT RECORD alphadir !read the neOxt record of alpha.dir, butE !vax.dir will remina the current file= DIX> SELECT FILE alphadir !now alpha.dir is the current. DIX> CLOSE vaxdir !close vax.dirC DIX> CLOSE !close the current file (alpha.dir)) DIX> OPEN test test.dat/ge="Test"/key=1P Open the file test.dat and (try to) read record with keyge "Test" on key 1 4 Qualifiers/BLOCKED /BLOCKED[=blocksize]J If the /BLOCK qualifier is specified, thPe file is accessed via BLOCK IO.H The data transfer is done via a multiple(blocksize) of 512 bytes, and D no recordstructure is assumed. This method can destroy file/recordC integrity and should be used only if you know what you are doing.@ Blocksize is default 1 (/BLOCKED), and can have a value 1..63.J It can be useful for files with undefined recordtype (as the DUMP file)./LOG* Display a message when opening the file./LOCKING /LOCKING=(val,val...) Val can beL RRL Q : Read all record with the RAB$M_RRL option. This means that evenH if the record is locked by another stream, DIX can read it.D The usage is at your own risk, since any other user canF modify the data you are looking at (and possibly change).K OPTIMISTIC: Dix will read the record with the RAB$M_NLK option. The recordF is read, but not locked. Other streams can read the data.I When you want to update a modified record, DIX will checkR ifD the record still contains the original data, and if notH warn you, and give you the option to not modify the record./MODIFYB If the /MODIFY qualifier is specified, you are allowed to modifyC /delete/insert records, Either in raw mode (BYTE_OFFSET=VALUE) or> in interpreted mode (file_name=value). If /MODIFY is present /INTERACTIVE is assumed. /DESCRIPTION /DESCRIPTION[=name[,name]]; Give the name of a record description file(s) or module. - For Smore help see the DIX /DESCRIPTION help'![DIX DESCRIPTION]Dix /description help/ERROR /ERROR=label> If the OPEN results in an error, DIX will jump to the label.O If the /ERROR qualifier is not specified, DIX will look for the ON condition./KEY /KEY=nr< Look for the keyvalue on the specified key. Default is the primary key (0).A If none of the LT,LE,EQ,GE,GT options is specified, the program8 will start with the first record on the specified key./LT /LT=valueT9 Look for a record with keyvalue LT the specified value.D This qualifier is valid for descending keys. Information about the3 keytypes can be obtained via the /INFO qualifier./LE /LE=value9 Look for a record with keyvalue LE the specified value.D This qualifier is valid for descending keys. Information about the3 keytypes can be obtained via the /INFO qualifier./EQ /EQ=value9 Look for a record with keyvalue EQ the specified value./GE /GE=value9 Look fUor a record with keyvalue GE the specified value.C This qualifier is valid for ascending keys. Information about the3 keytypes can be obtained via the /INFO qualifier./GT /GT=value9 Look for a record with keyvalue GT the specified value.C This qualifier is valid for ascending keys. Information about the3 keytypes can be obtained via the /INFO qualifier./RECORD /RECORD=number? For sequential/relative files give the record number to read.3 REAL REAL name[=vaVlue]C Declare a new symbol of type "REAL" and optionally give a value.# The value must be of type "real" Example REAL limit=10.0 See the help about declaration3 RECALL RECALL/ERASE Clear recall buffer RECALL/ALL Mask 1 Make a list of commands that start with "mask" RECALL/SEARCH Mask1 Make a list of commands that match with "mask" RECALL Mask / Recall the statement, and let you modify it. Mask can be ? - a number W : recall 6 (recall the 6'th previous command)O - A text : Recall open (recall the last command that started with open)3 PASTE PASTE[/qualifiers] [TAG]D Restore current record values from save area(clipboard) or from a 2 symbol, where it is placed with the CUT command. Qualifiers can beG /SYMBOL=expression Read the data from an expression. This expression; must return a value of the type char.D /DCL The symbol name is a dcl symbol. There are Xlimitations on DCL; symbols, and it you exceed them, you will see an error% /GLOBAL THe dcl symbol is a global.* Normally you would use this command withF PASTE/SYMBOL=symbolname, where the symbol was previously filled with CUT/SYMBOL=symbolname.G TAG is optional. If not specified the current file is used, otherwise& the file specified by 'TAG' is used. H Be careful : the value of /symbol is an expression, and all qualifiersD in the string after the /symbYol are considered a part" of the expression. : so : paste/symbol=symbol/dcl Will probable not work.- and : paste/dcl/symbol=symbol Will work. 3 PREVIOUS K Via the PREVIOUS command you can select the PREVIOUS file or description.. PREVIOUS FILE : Select PREVIOUS fileJ PREVIOUS DESCRIPTION : Select PREVIOUS description of the current file.H PREVIOUS [Record] : Select the previous record. This is not (yet) 7 supported fo Zr relative files.L PREVIOUS Record tag : Select the previous record for file with tag 'tag'C This is not supported for relative files.3 READC READ [/qualifiers] read from the current file; READ [/qualifiers] tag [/qualifiers] Read from file tag- Via the READ command, you can read a record.E For indexed files, the selection is via the /KEY,/EQ,/GE,/GT,/LE,/LT qualifiers.F For all other files, the selection is via the /RECORDNUMB[ER qualifier< If for an indexed file neither /EQ,/GE,/GT,/LE,/LT or, for I a sequential file /RECORD, is not given, DIX performs a sequential read. 4 QUALIFIERS /RECORDNUMBER /RECORDNUMBER=number J Select the record to be manipulated. For direct access files or relativeH files, the record can be read direct. For sequential files, the record= will be found by rewinding and skipping 'number'-1 records. /KEY /KEY=nr< Look for the keyvalue on the specified key. Defa\ult is the primary key (0).6 This qualifier is not allowed for non indexed files./LT /LT=value9 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 /LE=value9 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 specifie]d key.6 This qualifier is not allowed for non indexed files./EQ /EQ=value9 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.6 This qualifier is not allowed for non indexed files./GE /GE=value9 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.6 This qualifier is not allowed for non indexed files./GT /GT=value9 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.6 This qualifier is not allowed for non indexed files./ERROR /ERROR=label= If the READ results in an error (or an EOF_OF_FILE and /END0 is not specified), DIX will jump to the label.O _ If the /ERROR qualifier is not specified, DIX will look for the ON condition./END /END=labelI If the READ results in an EOF_OF_FILE and , DIX will jump to the label.H 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).H If neither qualifier is specified, DIX will look for the ON condition. /TRANSLATE /TRANSLATE Default /NOTRANSLATEE If a read is done with a /KEY=string, the string is checked `for theC occurrence of %DD where DD is a valid HEX number. In this way youB can enter binary numbers in a string. %% is translated to one %.D This behaviour is the default, but can be disabled by /NOTRANSLATE 3 REMOVE  Remove description mask A Remove all descriptions that match 'mask'. After this the first7 description is made the current one (if one is left).F The descriptions are not deleted, only the link to the current file. 4 qualifiers/SYSTEM_LIBRARY8 Remove oanly the description(s) from the system library /USER_LIBRARY6 Remove only the description(s) from the user library/FILE- Remove only the description(s_ from file(s)3 REWIND, REWIND current file9 REWIND /KEY=keynumber current file, Indexed file only3 REWIND tag file with tag "tag"F REWIND tag /key=keynumber file with tab "tag", indexed file onlyH Rewind the file and read the first record . For indexed files you can  specify bthe key to rewind on.3 SEARCH@ SEARCH string[/qualifiers] [,string[/qualifers...]] [string..] SEARCHF Search the file for a (list of) string(s). The first match will stop0 the search. See the help about record_searchesC One extra qualifier is allowed : /REWIND. If it is specified, DIXH will search from the beginning of the file, otherwise the next record.3 SELECT SELECT thing name SELECT FILE nameK Make the first file that matches 'name' to the filename or that chas a tag 'name' the current file  SELECT DESCRIPTION nameL Make the first DESCRIPTION that matches 'name' the current description for the current file3 SET  Set some things 4 DISPLAY Set default display parametersF These setting can be overruled by qualifiers in the EXAMINE command. $ Syntax : SET DISPLAY par[,par...] Where par can be / [NO]HEX : Set or clear HEX display mode. [NO]OFFSET : Set or clear display offsets5 [NO]HEXOFF dSET : Set or clear HEX display of offsets, [NO]COMPRESS : Set or clear compress mode/ [NO]RAW : Set or clear ROW mode display/ BYTE : display raw data in byte mode/ WORD : display raw data in word mode3 LONGWORD : display raw data in longword modeM UNSIGNED : display raw data (if not in hex mode) as unsigned integers.K [NO]TAG : Display data from multiple files with file\desc\ tag, see) the help at examine/tag4 EDITORe SET EDITOR which5 Define your editor for editting description records Possible options are EDT Use EDIT/EDT4 INTERNAL Use an internal editor (simple but fast) TPU Use EDIT/TPU4 FILE SET FILE [mask] [qualifiers] 6 Change the attributes for one or more opended files.H If you do not specify [mask], only the attributes of the current file  are changed.  Supported qualifiers are /LOCKING=(value[,value...]) And value9 [NO]RRL : Changfe the RRL setting for this file7 [NO]OPTIMISTIC : Change the optimistic locking flag See the help about /locking : /[NO]MODIFY : Change the modify setting of the file,: The current record remains the same. 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.4 FORMAT SET FORMAT option SET FORMAT DOT (default)I Normally all " gcharacter"-like fields will not contain unprintable data.* These field types are CHARACTER,xSTRING.E If the data does contain unprintables (hex 0:1f,7f,80:9f or ff) theA /FORMAT qualifier determines how this data should be displayed. Option can beG DOT :All unprintables are replaced by a ".". This encoding is notI reversible, after an unprintable value is replaced by a ".", M DIX cannot know what the original unprintable value was. This may, hbe a problem in the screen mode.L HEX :All unprintable data is displayed as %Xdd, a hexadecimal display.P A % in the data will be displayed as %%. This display is reversible,B so DIX can reconstruct the original unprintable value.G If you are in this mode, on input a % must be entered as %%N PASSALL:Dix will not change the unprintable data. The data is displayed asK it is. THis mode will not work in screen mode, and maybe poorly1 iwhen the output device is a terminal.I DUMP :Unprintable bytes are represented by a 2 or 3 letter mnemonicH like or . A < in the text will be displayed as <<.L This display is reversible, so DIX can reconstruct the original  unprintable value.G If you are in this mode, on input a < must be entered as << 4 MESSAGE - Change the way dix displays error messasges 5 qualifiers /FACILITY /FACILITY /NOFACILITY Set jor clear the facility part/IDENT /IDENT /NOIDENT Set or clear the ident part /SEVERITY /SEVERITY /NOSEVERITY Set or clear the severity part/TEXT /TEXT /NOTEXT Set or clear the text part/NONE Clear all message flags/ALL Set all message flags4 MOUSE SET MOUSE ON SET MOUSE OFF2 Enable or disable the MOUSE usage in screen modeH If enabled, DIX will interpret the mous clicks, if disabled DECWINDOWS? will use interpreted the cklicks, so you can select/copy text.4 ON SET ON SET NOON F Like DCL, the SET NOON ignores errors, and let the user check these errors by examining $STATUS. 4 PAGED_MODE SET PAGED NO SET PAGED YES SET PAGED SCREENE Set/clear the paged mode for output. Page_mode screen will display: the text in a window to allow easy scrolling (Uses SMG)4 PROMPT Change the default prompt. SET PROMPT stringE If the string contains a # sign, this # will bel 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. 4 REAL SET REAL commands SET REAL SIZE=n+ SET REAL FORMAT/SIZE=n[/default] format  SET REAL SIZE=n= Set the size for the real symbols. Value can be 4, 8 or 16.= The actual datatype depends on the architecture (see table) Size Arch 4 8 16 Vax REAL_F REAL_D REAL_H Alpha REALm_F REAL_G REAL_X IA64 REAL_S REAL_T REAL_X, SET REAL FORMAT[/size=n] [/default] formatB Set the format for conversion. This format is the normal fortran4 real format specification, (Fn.m, En.mEe, Gn.mEe). n is maximum field width. m is the number of digits after the decimal.7 e is the numer of digits in the exponent (default 2). ) See the Fortran manual for more detail.0 /SIZE=n : set the format for size=4 (n=4,8,16). /DEFAULT: set the format back to the defaultn The default formats are  size 4 g20.8 8 g25.10e3 16 g30.15e4 4 SCREEN_MODE# Change mode to full-screen mode.4 STRICT9 Normally DIX is not very strict in the symbol handling.& You can define new symbols by typing8 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 behaviourM /TYPING : Once a symbol is created, you cannot change the o type anymore? In the example above you can do 1. but not 2.= /DECLARATIONS: All symbols have to be declared before usageC This also disallows calling subroutines or @ files? and not having the same number of arguments B defined and declared. See the ENTRY statement. E /LOCAL : Even with /DECLARATIONS, symbols from an outer level? can be used. With /LOCAL this is not allowed. 4 TERMINAL ! p SET terminal /[no]line_editingF Enable/disable line editing. In line_editing mode the function keys- f6-f14 cannot be used for key definitions. SET terminal /[no]insert SET terminal /[no]overstrike ) Set the default insert/overstrike flag; SET terminal /width=nn (nn must be between 40 and 132) CHange the terminal width4 VERIFY ! Set verify Set verify mode on! Set noverify Clear verify modeH In verify mode all lines read from the command proqcedure are echo'd to the terminal.3 SHOW Show all kind of things.& SHOW File[/all][/full][/description]/ Show file information N SHOW Description Show current description from internal datastructureJ SHOW Description/SOURCE Show current description from source file/module< SHOW Description/EXPAND Show current expanded description ) SHOW Parameter [mask] Show parameters- SHOW Symbols [mask] Show defined symbolsN SHOW Display r Show default display parameters (HEX,Number,raw etc)E SHOW Terminal Show the terminal setting /[NO]LINE_EDITING B SHOW FORMAT SHow the current binary translation mode B SHOW SEARCH Show the current record search string(s)C SHOW SUBSTITUTION Show the current symbol substitution flag; SHOW Message Show the current message settings5 SHOW Paged Show the current paged modeB SHOW Decimal Show the ssettings for decimal arithmetic9 SHOW version Show the current version of DIXE SHOW real Show the size /formats for the real symbolsH SHOW integer Show the size /formats for the integer symbols0 SHOW Release_notes Show the release notes4 Release_notes Display the release notes show release_notes [/page] Show all release notes show release_notes/versionA Show all version with their release dates without the contentst " show release_notes/version=d.d-d% Show the release_notes for version< The version can be entered as d.d (major.minor version)B or d.d-d (major,minor,patch release) 4 description" Show the description information 5 qualifiers/all show description/all B Display a list of descriptions of the current file. The current 6 description is signaled by an * in the first column. /expanded show description/expanded/ Show the expanded udesciptors for this record.+ You can use /FULL to display more info. /loaded show description/loaded  C Show all loaded descriptions. If more then one file uses the same3 description, this description is loaded only one./full show description/full A Show all info about the description. See the /source qualifier./source= Show the original source of the description, instead of the interpreted one./paged. Display the data per page (on terminal only)v/output /output=filename) Print the output to the file "filename"/SCREEN /SCREEN /NOSCREEN (Default)J Display the data in an SMG window, that allows you to scroll through it. See also SET PAGED SCREEN4 DISPLAY_MODE SHOW DISPLAY_MODE/ Show the current setting of the display mode.4 EDITOR SHOW EDITOR. Show the current setting of the editor type.4 FILE Show file [/qualifiers]  Show the file information 5 qualifiers/all show file/allw 6 Display a list of all opened files. The current file* is signaled by an * in the first column./full show file/full " Show all info about the file(s)./paged. Display the data per page (on terminal only)4 KEYS SHOW KEYS [key] [/STATE=state]4 Display the (interactivemode) key definitions or ' the definition for key "key" [with state="state"] SHOW KEYS/DIRECTORY Display all IF_STATES 4 PAGE_MODE SHOW PAGE_MODE. Show the currexnt setting of the paging mode. 4 PARAMETERS Show parameters [mask] [/hex]1 Show all parameters of the current description.4 REAL7 Show real size, type and format for real conversions.G The default size and formats can be changed via the SET REAL command.7 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 exampley DIX> show real Current real_size = 4% Size 4 type REAL_F format (G20.8)& Size 8 type REAL_G format (G25.10)( Size 16 type REAL_X format (G30.15E5)4 SKEYS/ Show the key definitions for the screen mode.3 They can be defined with the define/skey command.E The default key setting is described in the help about key_mapping. 4 symbols Show symbols [mask] /hex& Display all defined symbols [in hex]' Show symbols/statistics[/full[/all]] 5 Show statisticalz information about the symbol table4 STRICT SHOW STRICT0 Show the current setting of the strictsetting. 4 TERMINAL SHOW TERMINAL4 Show the current setting of the terminal settings.3 SPAWN SPAWN [Commandline]H Create a subprocess, and execute 'commandline'. If commandline is notF present, you can enter commands interactively until you type LOGOUT.3 SUBSTITUTIONS) DIX will try to do symbol-substitution.K If a line contains a name enclosed in ''s, DIX w{ill substitute the symbolI by its value. If the symbol is not found, DIX will substitute an empty string.J In a String enclosed by "" the first ' must be a double one (as in DCL). Example cnt = 0 Loop: examine field_'cnt' cnt = cnt + 1 if (cnt < 10) goto loop' Will display field_1 up to field_10 7 Symbol substitution can be turned on or off with the 2 "set substitution /[no]verb/[no]symbols" command 3 SYMBOLS You can define symbols. Sy|ntax symbolname = expression symbolname := stringvalue= Symbolname can have upto 32 chararacters. The first must be, a-z or _, and the remaining a-z 0-9 or $ .L DIX will do symbol-substitutions with the ' character. (See SUBSTITUTIONS)E DIX will also try to do symbol-substitution on the verb (like DCL)' so a symbol exa*mine:=exa/display and a later usage like 4 exa *user* will translate into  exa/display *user* 7 Symbol subst }itution can be turned on or off with the 2 "set substitution /[no]verb/[no]symbols" command/ Dix will define four/five predefined symbols.8 $STATUS Containing the status of the last commandA $SEVERITY Containing the severity status of the last command9 $FILE Containing the current file (can be empty)@ $DESCRIPTION Containing the current description (can be empty)< Inside a SUBROUTINE or @'ed' file there is one more symbol1 $NRARGS Containing the number o~f arguments- $Pn Containing the 'n'th parameter Symbols can have six types Logical true/false, Integer signed values of 4/8 bytes long* Character strings upto 65535 characters. Real Real (native) format of 4/8 bytes- Date The VMS date structure (8 bytes)! Decimal Fixed decimal stringD If you create a symbol without declaring it, the symbol is visible? at all all levels (global). If you declare a symbol (via the H INTEGER/REAL/CHARACTER .. command), the symbol will be visible from theJ level is was declared, and all deeper levels, but not the upper levels. I You can declare symbols at any @file level and within any loopstructure" (FOR/ENDFOR,WHILE/ENDWHILE etc.)H The symbols are local to that level (and all levels included) and will; be deleted when the level (@file or loopstructure) exits.K If a local symbol has the same name as a global symbol, the global symbol will be inaccessible.* Symbol declaration c€an be done with the : INTEGER,REAL,CHARACTER,LOGICAL,DATE and DECIMAL command.! See the help about declarationsD The setting of the STRICT mode influences the way symbols are seenF f.e. with strict/local, symbols from outer levels are NOT seen. This6 forces you to declare all symbols before using them.+ See the help about the SET STRICT command Example  a = 10 k = 128 for k=1,10 !K is also a local symbol in the for blockC integer a=40 !declare an integer local symbol a (with value 40)% a = 20 !a(local) has the value 20. say "a=''a'" !a has the value 20 2 say "k=''k'" !will have the value 1..10 endfor4 say "a=''a'" !a still has the value 10 1 say "k=''k'" !k still has the value 12 3 TRUNCATE2 TRUNCATE newreclength set recl for current file< TRUNCATE tag newreclength set recl for fiel with tag "tag"J Set new recordsize. Allowed only for Indexed and relative files, if they( do not have the ‚recordattribute FIXED.3 UNDO, UNDO Undo changed for current file3 UNDO tag Undo changed for file with tag "TAG". Undo all changes made to the current record.3 UPDATE UPDATE [tag]H Save changed record to file. If no parameter is specified, the current/ file is updated, else the file with tag "tag" 3 WAIT  WAIT expressionA Wait for a specific time, the expression can be integer or real% and will be interpreted as seconds.3 WRITE WRITEƒ filename[/APPEND]G Write the current record to the file "filename". If /append is given,2 the record will be appended to an existing file. 2 KEY_MAPPINGB Dix uses key mapping. In the Screenmode (SMG)Keys are mapped to C dix_functions. DIX has a default map, but you can override it in  the startup_file.K As you can see below, this mapping is not very nice so you can adapt this@ mapping to your own needs. See the help about the STARTUP file3 DIX_functions! Dix has th„e following functions Move functions key_up one line up key_down one line down key_left one pos left key_right one pos right key_prev screen up key_next screen down key_top first line key_bot last line+ key_set_forw set forward mode on find, key_set_backw set backward mode on findI key_page page command either forw or backward depending on mode4 key_find search in display … for text string5 key_find1 Ask search string and the key_find7 key_next_window toggle ascci/bin display in raw_mode7 key_prev_window toggle ascci/bin display in raw_mode) key_do save changes to record$ key_save Save to save area0 key_restore Restore record from save area2 key_contdis continously display description7 key_getfields get data through menu for bit-fields' key_viewvfc View/modify vfc data key_help display help† Field modify functions; key_enter enter and terminate input in field input9 key_first goto first char in line in field input) key_last goto last char in line$ key_erase erase input field, key_delete delete character on input+ key_toggle toggle insert/overstrike General) key_cancel cancel (search) action7 key_dispall display all descriptions of the data( key_editdes edit description file* key_prev_field pre ‡vious field on input" key_fileinfo file (RMS) info( key_print print display to fileE key_select select a field from the (file of description) list; key_swap_num Toggle offset display (none/hex/decimal)3 key_byte Display data in bytes (raw mode)3 key_word Display data in words (raw mode)7 key_long Display data in longwords (raw mode)F key_compres Toggle compres mode (do not display "empty" fields)# key_displ_hex HEx data displa ˆy% key_displ_oct Octal data display& key_displ_bin Binary data display' key_displ_dec Decimal data display4 key_nexdec_offs Toggle offset display hex/decimal$ key_newreclen Set record length- key_viewdes View description from file! key_repaint repaint screen- key_viewdesc View description in memory. key_swap_dis toggle description/raw mode* key_abort Abort changed to record= key_remove Delete current record (idx /rel file only)( ‰ key_nextdes Next description file( key_prevdes Prev description file- key_dirdes Directory description file6 key_ask_key Ask for new key in the current file* key_next_rec Next record in the file" key_prev_rec Previous record$ key_put Insert new record0 key_find_rec Find data in in file (search)F key_find_rec1 find data in file , but ask for search string first4 key_next_file next file (if in multi_file mode)7 key_prev_file previ Šous file(if in multi_file mode)4 key_dir_file dir file (if in multi_file mode) key_exit Exit program- key_rfa_restore return to previous set rfa, key_modechange toggle screen/interactive2 key_follow_link Follow the link to another fileF key_back_link Retrun to the original file after a key_Follow_linkD key_ch_width Toggle screen width between 80 and 132 characters5 key_menu Display a menu and let user choose Editing key key_delete_line Del‹ete line# key_delete_word Delete word# key_delete_char Delete char% key_undelete_line Undelete line% key_undelete_word Undelete word% key_undelete_char Undelete char; key_next_line Goto the beginning of the next line3 Default keymappingC DIX is NOT case sensitive, so all keys are defined in uppercase The default keymapping is : # define/skey pf1/set_state=GOLD ""# define/skey pf4/set_state=BLUE ""E define/skey pf4 key_delete Œ_line /context=editE define/skey pf4 key_undelete_line/IF_STATE=GOLD /context=edit# define/skey up key_up # define/skey down key_down # define/skey left key_left # define/skey right key_right# define/skey prev_screen key_prev 8 define/skey up key_prev /IF_STATE=GOLD # define/skey next_screen key_next 8 define/skey down key_next /IF_STATE=GOLD 8 define/skey prev_screen key_top /IF_STATE=GOL D 8 define/skey next_screen key_bot /IF_STATE=GOLD " define/skey kp8 key_page# define/skey pf3 key_find 8 define/skey pf3 key_find1 /IF_STATE=GOLD ) define/skey ht key_next_window7 define/skey ht key_prev_window/IF_STATE=GOLD% define/skey f8 key_contdis" define/skey f9 key_save# define/skey do key_do " define/skey help key_help" define/skey pf2 key_help$ define/skey ctrla Ž key_toggle$ define/skey f14 key_toggle8 define/skey f14 key_modechange /IF_STATE=GOLD " define/skey ctrle key_last# define/skey ctrlh key_first# define/skey f12 key_first# define/skey cr key_enter# define/skey enter key_enter# define/skey ctrlx key_erase# define/skey f13 key_erase# define/skey lf key_erase$ define/skey ctrlc key_cancel& define/skey kp4 key_set_forw8 define/skey kp 4 key_set_forw /IF_STATE=GOLD ' define/skey kp5 key_set_backw8 define/skey kp5 key_set_backw /IF_STATE=GOLD $ define/skey select key_select8 define/skey uppercase_s key_dispall /IF_STATE=GOLD $ define/skey delete key_delete8 define/skey uppercase_e key_editdes /IF_STATE=GOLD 8 define/skey uppercase_f key_fileinfo /IF_STATE=GOLD 8 define/skey uppercase_z key_follow_link/IF_STATE=GOLD 8 define/skey uppercase_z key_back_link /IF_STATE=BLUE 8 define/skey uppercase_m key_menu /IF_STATE=GOLD % define/skey ctrlr key_repaint% define/skey ctrlw key_repaint8 define/skey uppercase_g key_getfields /IF_STATE=GOLD 8 define/skey uppercase_p key_print /IF_STATE=GOLD 8 define/skey uppercase_y key_viewvfc /IF_STATE=GOLD 8 define/skey uppercase_o key_swap_num /IF_STATE=GOLD & define/skey f20 key_swap_num8 define/skey uppercase_b key_byte /IF_STATE=GOLD 8 define/skey uppercase_w key_word ‘ /IF_STATE=GOLD 7 define/skey uppercase_w key_ch_width /IF_STATE=BLUE8 define/skey uppercase_l key_long /IF_STATE=GOLD 8 define/skey uppercase_c key_compres /IF_STATE=GOLD 7 define/skey uppercase_h key_displ_hex /IF_STATE=BLUE7 define/skey uppercase_o key_displ_oct /IF_STATE=BLUE7 define/skey uppercase_b key_displ_bin /IF_STATE=BLUE7 define/skey uppercase_d key_displ_dec /IF_STATE=BLUE7 define/skey uppercase_h key_hexdec_offs/IF_STATE=GOLD8 define/skey upperc ’ase_t key_newreclen /IF_STATE=GOLD 8 define/skey uppercase_v key_viewdes /IF_STATE=GOLD 8 define/skey uppercase_v key_viewdesc /IF_STATE=BLUE 8 define/skey ctrlw key_repaint /IF_STATE=GOLD 8 define/skey ctrlr key_repaint /IF_STATE=GOLD 8 define/skey uppercase_a key_swap_dis /IF_STATE=GOLD & define/skey f19 key_swap_dis8 define/skey do key_abort /IF_STATE=GOLD $ define/skey remove key_remove8 define/skey uppercase_r key_remove / “IF_STATE=GOLD 8 define/skey uppercase_x key_nextdes /IF_STATE=GOLD 8 define/skey uppercase_x key_prevdes /IF_STATE=BLUE 8 define/skey uppercase_d key_dirdes /IF_STATE=GOLD 8 define/skey f9 key_restore /IF_STATE=GOLD % define/skey f17 key_ask_key8 define/skey uppercase_k key_ask_key /IF_STATE=GOLD & define/skey f18 key_next_rec8 define/skey f18 key_prev_rec /IF_STATE=GOLD 8 define/skey uppercase_n key_next_rec /IF_STATE=GOLD 8 de ”fine/skey uppercase_n key_prev_rec /IF_STATE=BLUE ! define/skey insert_here key_put8 define/skey uppercase_i key_put /IF_STATE=GOLD & define/skey find key_find_rec8 define/skey find key_find_rec1 /IF_STATE=GOLD 8 define/skey uppercase_j key_next_file /IF_STATE=GOLD 8 define/skey uppercase_j key_prev_file /IF_STATE=BLUE 8 define/skey uppercase_q key_dir_file /IF_STATE=GOLD " define/skey f10 key_exit" define/skey ctrlz key_exit) define/skey •PF4 key_delete_line7 define/skey PF4 key_delete_line/IF_STATE=GOLD) define/skey MINUS key_delete_word9 define/skey MINUS key_undelete_word/IF_STATE=GOLD) define/skey COMMA key_delete_char9 define/skey COMMA key_undelete_char/IF_STATE=GOLD2 DIX_parameters$ The following limits apply to DIX., Number of open files : Unlimited*, Number of descriptions/file : Unlimited* Interactive mode( Number of commmandfile levels– : 65535( Number of if/for/while levels : 327670 Symbolnames : 32 characters0 Labelname length : 32 characters% Follow history : 16 Screen mode) Number of screen key definitions : 200 Descriptions- Fieldnames : 32 characters/level Total name length :512 Number of dimensions : 3  Structure levels : 10 Union levels : 47 *Unlimited means : limited by process quota, not DIX.ww