Q DIX,Utilities,A program to read/modify records in any RMS (seq/relative/idx) file    Version 5.0 : This program lets you view/modify records in any RMS file.   Dix can work in four modes  H a. Full screen mode. DIX uses SMG to display the data on the screen and E    allows you to modify it (if you specify /MODIFY (not the default)) *    This mode is the default on a terminal.;    You enter this mode by specifying the /SCREEN qualifier.   I b. Interactive mode. DIX will prompt you for commands. This mode can also @    be used in batch with command files. If you specified /MODIFY4    the file can also be modified (not the default). )    You also have scripting possibilities. :    You enter this mode by specifying the /INTER qualifier.:    See the help with DIX/HELP INTER for possible commands.  I c. File mode. DIX will display one or more records and returns to DCL. No     interaction is possible. 9    You enter this mode by specifying the /FILE qualifier.   > d. Demo mode. In this mode DIX will demonstrate how to use it.:    You enter this mode by specifying the /DEMO qualifier.   ? In the first three modes the data can be displayed in two ways.   9 a. Interpreted. You need a record description to do this. P    The description file syntax looks like fortran record definitions(structures)L    and the descriptions can be in a file or in the DIX_DES.TLB text library.>    The layout of the description files is described in the DIX     help library under the topic )    DISPLAY_MODES INTERPRETED /DESCRIPTION   #    See DIX/HELP DISPL INTERP /DESCR   E    DIX delivers (in DIX_DES.TLB) descriptions for the following files      SYSUAF.DAT     RIGHTSLIST.DAT     INDEXF.SYS       VMS$PASSWORD_HISTORY     VMSMAIL_PROFILE      DIRECTORY files      Some ALL-IN-1 files.  D    And you can add any file you like, if you know the record layout.   < b. Raw dump. The program displays the data like VMS DUMP and    you can modify any byte.     $   See the help via the HELP command.   usage: Define DIX as a foreign command   1 DIX:=$'directory'dix_alpha or DIX_VAX or DIX_IA64    DIX filename /qualifiers  ; For the qualifiers see the help via DIX/HELP, but one very  C one important one is the /MODIFY. If you do not specify /MODIFY the / file is opened readonly and cannot be modified.   A You can also get some idea about the possibilities of DIX via the 1 demo mode DIX/DEMO, and select one of the demo's.    Note: G The files DIX.HLB and DIX_DES.TLB and DIX_DEMO.TLB must be in the same  A directory as DIX, or you must define the logical DIX_HELP and/or  ( DIX_DES and/or DIX_DEMO to another file.  	 Building: L The executables and objects for Vax,Alpha and IA64 are skipped with the kit,N as well as the sources. If you want to rebuild DIX, goto the dix directory andF use the command procedure @create_dix. This will compile (fortran) and	 link DIX.   	 Examples:   ' $DIX SYSUAF[/SCREEN]/EQ=smith [/MODIFY] D   Will display the SYSUAF record of user "SMITH" using SMG, and letsE   you scroll though this data. If you specified /MODIFY, you can also G   modify entries (When you type any character on that field, you enter  E   modify mode for that field (this is signalled by an underline under G   the text)). You leave modify mode for that field when you type ENTER. J   The (modified) data is not written to the file until you type DO or PF4.   F10 or ^Z returns you to DCL.   $ $DIX SYSUAF/INTER/EQ=smith [/MODIFY]I   Will enter interactive mode (non-smg), and allows you to inspect/modify <   fields of the current record. It also contains a scripting@   language. Type help in this mode to see the possible commands.   $DIX SYSUAF/FILE/EQ=smith I   Will display the data on the terminal, but will not allow you to modify    the record (DUMP command).   $DIX datafile/FILE/REC=10 I   Will display the data on the terminal, but will not allow you to modify =   the record (DUMP command). Only record 10 will be displayed   $ $DIX datafile/FILE/RECORD=10/COUNT=5I   Will display the data on the terminal, but will not allow you to modify I   the record (DUMP command). The records 10 upto 14 (5) wil be displayed.   	 $DIX/DEMO B   Will start a demo session. You will be given a choise of variousD   demo modes. They look like the real thing, but do NOT open/change    any file.   D Example of a (complicated) description record of the INDEXF.SYS file    the (n) are explained below  ( 	ubyte		id_offset	! Offset to Ident area( 	ubyte		map_offset	! Offset mapping area' 	ubyte		acl_offset	! Offset to ACL area , 	ubyte		res_offset	! Offset to reserved area. 	integer*2	seg_num		! Extension seqment number/ 	byte struct_lev_min		! On disk structure level / 	byte struct_lev_maj		! On disk structure level # 	fileid          file_id		! File id 4 	fileid          ext_fid		! File id extension header8         structure       rec_attr	! RMS record attributes          byte rectyp          byte recattr           integer*2 recsiz           rinteger*4 hblk          rinteger*4 eofblk          integer*2 eofbyte          byte bucketsize          byte vfcsize           integer*2 maxrec           integer*2 defext           integer*2 globbuf          integer*2 %fil3(4)           integer*2 verslim 	end structure 	bits*4		file_char -		(1) 6 		[Wascontig,Nobackup,Writeback,Readcheck,Writecheck,-2                  Contigb,Locked,Contig,,,,Badacl,-< 		 Spool,Directory,Badblock,Markdel,Nocharge,Erase,alm_aip,->                  shelved,scratch,nomove,noshelvable,shelv_res]! 	character*2	%res_1		! reserved 1 ' 	ubyte		map_in_use	! # map words in use 0 	byte		acc_mode	! File accessor priv mode needed 	uic		owner		! Owning UIC ( 	protection	protection	! File protection% 	fileid		backl_fid	! Backlink file id % 	bits*2		journal		! Journalling flags 3 	integer*2	ru_active	! Recover facility unit number 1 	integer		highwater	! Highest blocknr written + 1  	union. 	 map struct_lev_maj=5                     (2). 	  byte FI5$B_CONTROL    [0=ODS-2,1=ODS-5] (3) 	  byte FI5$B_NAMELEN    	  integer*2 FI5$W_REVISION    	  date FI5$Q_CREDATE  	  date FI5$Q_REVDATE  	  date FI5$Q_EXPDATE    	  date FI5$Q_BAKDATE      	  date FI5$Q_ACCDATE      	  date FI5$Q_ATTDATE    	  integer*8 FI5$Q_EX_RECATTR " 	  integer*8 FI5$Q_LENGTH_HINT_LOW# 	  integer*8 FI5$Q_LENGTH_HINT_HIGH 0 	  character*(fi5$b_namelen) FI5$S_FILENAME  (7)	 	 end map  	 map struct_lev_maj=2/ 	  character*20	fnam		! Variable mapped entries  	  integer*2         revnr 	  date*8            cdat  	  date*8            rdat  	  date*8            edat  	  date*8            bdat  	  character*66	rest_fnam 	 	 end map 
 	 map *			(4)  	  integer*4 data(20) 	 	 end map 
 	end union3 	range (map_offset*2:map_offset*2+map_in_use-1) (5)             diskmap maps(256)	 
 	end range$ 	range (acl_offset*2:res_offset*2-1) 	   acl acls(50)	 
 	end range- 	position (min(510,max(0,recordsize)))    (6)  	integer*2/hex checksum   : (1) is an example for a bits type. The part between the [],     gives an more friendly view of the bits.4     For example bit3 will be displayed as "readonly"G     Any bit not described will be displayed as BITnn (for example bit8) @ (2) is an example of a union/map structure. A union contains oneD     or more maps. This part is selected if the field STRUCT_LEV_MAJ      contains 5. See also (4)> (3) This is an example for an integer (byte). The part between:     the [] gives a list of possible values of the integer.9     For example : if the value of FI5$B_CONTROL is 1, the ?     text displayed is ODS-5. If is is 0 the text displayed will D     be ODS-2. Anly other value than 0 or 1 will be displayed as the      normal numeric value. @ (4) The rest of the union/map. If none of the map statements hasB     matched, this one will. If you do not specify a map with an *,G     the first map will be taken (in this case the map struct_lev_maj=5  A (5) This is an example for the RANGE statement. A RANGE defines a      part of the record. B     In this case the field diskmap map(256) in contained in a partJ     of the record between bytes map_offset*2:map_offset*2 and map_in_use-1/     The length 256 is choosen to be big enough. C (6) A example of a Position statement. This set the offset for the  7     next field to an absolute value (in this case 510). 4     The next field (checksum) will be at offset 510.B (7) The length of the character string depends on a previous field     (fi5$b_namelen).    H All fieldsizes are in bytes, except within a bitfield/endbitfield range.N In this bitfield_mode only (u)integer, (r)bits and logical fields are allowed.    ) Another example of files that are linked    J   The example is about 3 RMS indexed files that form a simple sourcemodule   cross_reference system  D   The first 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 modulename K           integer*2    called_nr /file=.crf_mod_names   !link to modulename   I   The second file (CROSS_REF.CRF_MOD_NAMES) has the following description 4   (.CRF_MOD_NAMES in the system or user textlibrary)D           integer*2    mod_nr                           !primary key           character*32 mod_name M           integer*2    file_nr/file=.crf_file_names     !link to the filename   I   The third file (CROSS_REF.CRF_FILE_NAMES) has the following description 5   (.CRF_FILE_NAMES in the system or user textlibrary) D           integer*2    file_nr                          !primary key            character*60 file_name           integer*2    %filler  6   When you now (dix-)edit the CROSS_REF.CRF_CROSS file"     $DIX/INTER CROSS_REF.CRF_CROSS>     %DIX-I-USINGFIL, Using file DSA40:[DIR]CROSS_REC.CRF_CROSS9     %DIX-I-USINGDES, Using description SYSLIB(.CRF_CROSS)      DIX> EXA *I      0|CALLER_NR>|738             !the > tells us there is a link present       2|CALLED_NR>|-262  )  You can follow the link to the next file   :     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?B     %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  |738!     2|MOD_NAME|CHECK_ALLOWED_USER I    34|FILE_NR>|66                 !and this field also has a link defined   7  Now follow the link to the third file (open automatic)   !     DIX> Follow/automatic file_nr C     %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   2  Now backtrace to the CROSS_REF.CRF_MOD_NAMES file  
     DIX> BACK B     %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  |738!     2|MOD_NAME|CHECK_ALLOWED_USER     34|FILE_NR>|66      L For a complete list of directives see the help in the DIX_HELP.HLB under theE topic "DISPLAY_MODES INTERPRETED_DUMP/DESCRIPTION RECORD_FORMAT". Use  DIX/HELP to display this help.   Note:   I Be careful when modifying datafiles. DIX is very powerful and has no UNDO I function after you update the record. If you modify the record, there is  I no way back except the backup (if you have one). /BLOCK mode is even more 6 powerful (and also dangerous), since it bypasses RMS.   ) This package contains the following files    In the main directory   !  DIX_VAX.EXE			The Vax executable &  DIX_ALPHA.EXE			The Alpha Executable $  DIX_IA64.EXE			The IA64 Executable   DIX.HLB			The help library :  DIX_DES.TLB			The file containing the description records.  DIX_DEMO.TLB			The file containing the demo's<  MAKE_DIX_VAX.COM		The command procedure to compile/link VAX@  MAKE_DIX_ALPHA.COM		The command procedure to compile/link Alpha>  MAKE_DIX_IA64.COM		The command procedure to compile/link IA64!  FREEWARE_README.FIRST		This file '  RELEASE_NOTES.TXT   		The releas notes    In the [.SRC] directory     The FORTRAN sources  !   DIX_MAIN.FOR			The main program E   DIX_CON_LIBRARY.FOR           The conversion routines ascii<>binary C   DIX_CON_LIBRARY_VAX.FOR       The conversion routines for the VAX J   DIX_CON_LIBRARY_NOT_VAX.FOR   The conversion routines for the alpha/ia64D   DIX_DCL_PARSE_VAX.FOR         The CLD parsing routines for the VAXK   DIX_DCL_PARSE_NOT_VAX.FOR     The CLD parsing routines for the Alpha/IA64 2   DIX_DEMO_LIBRARY.FOR		The Demonstration routines4   DIX_DES_LIBRARY.FOR		The description file routines@   DIX_DUMP_FILE_LIBRARY.FOR	The dump to file (noscreen) routinesG   DIX_DUMP_INTERACTIVE_LIBRARY.FOR The dump to file (noscreen) routines E   DIX_DUMP_INTER_RECALL.FOR	The recall functions for interactive mode *   DIX_DUMP_LIBRARY.FOR 		The dump routines?   DIX_DUMP_SCREEN_LIBRARY.FOR	The dump to screen (SMG) routines ,   DIX_EDIT_LIBRARY.FOR		The editor functions:   DIX_EVAL_LIBRARY.FOR		The expression evaluation routinesB   DIX_EVAL_LIBRARY_VAX.FOR 	The expression evaluation routines VAXL   DIX_EVAL_LIBRARY_NOT_VAX.FOR	The expression evaluation routines Alpha/ia64G   DIX_GET_VERSION.FOR		The (generated) source to return the DIX version C   DIX_HELP_LIBRARY.FOR		The interface to the help (FSHELP) program  :   DIX_KEYDEFS.FOR               The key-definition library1   DIX_LBR_LIBRARY.FOR		The LBR interface routines *   DIX_MEMTAB.FOR		The memory-file routines4   DIX_RMS_LIBRARY.FOR		The interface to RMS routinesE   DIX_RMS_LIBRARY_VAX.FOR	The Extra interface to RMS routines for VAX P   DIX_RMS_LIBRARY_NOT_VAX.FOR	The Extra interface to RMS routines for Alpha/ia64:   DIX_SEARCH_LIBRARY.FOR        The Record search routines4   DIX_SMG_LIBRARY.FOR		The interface to SMG routines4   DIX_STARTUP_LIBRARY.FOR       The Startup routinesE   DIX_SYMBOL_LIBRARY.FOR        The routines for symbol manipulation. J   DIX_SYMBOL_LIBRARY_VAX.FOR    The routines for symbol manipulation.(VAX)Q   DIX_SYMBOL_LIBRARY_NOT_VAX.FOR The routines for symbol manipulation. Alpha/ia64 +   DIX_UTIL_LIBRARY.FOR		The utility library K   DIX_CREATE_OPT_FILE.COM	THe command file to generate the DIX.OPT file and >                                        the dix_get_version.for    DIX.VERSION			The version file       The include files  /   DIX_DEF.INC			The general include definitions *   DIX_DEMO_DEF.INC		The defs for demo mode7   DIX_INTERACTIVE_DEF.INC	The defs for interactive mode *   DIX_KEYDEFS.INC		THe keydefs definitions(   DIX_MEMTAB.INC		The MEMTAB definitions*   DIX_SCREEN_DEF.INC		The screen mode defs%   DIX_SEARCH_DEF.INC		The search defs 0   DIX_SIZE_DEF.INC		The general size definitions)   DIX_SYMBOL.INC  		The symbol table defs   The Help file     DIX_HELP.HLP    The CLD files  ,   DIX_CLD.CLD			The command line definitions7   DIX_INT_CLD.CLD	   	The commands for interactive mode     The Message file(s)   DIX_MESSAGE.MSG   + In the [.VAX]   directory the VAX   objects + In the [.ALPHA] directory The Alpha objects + In the [.IA64]  directory The IA64  objects   
 Instructions:     Unpack the save set#  If you want to rebuild the program   "    If you have a fortran compiler 0      @make_dix_'architecture'   (vax/alpha/ia64)    otherwise, just link 4      @make_dix_'architecture' link  (vax/alpha/ia64)  @  DIX was linked with VMS-VAX 7.3, VMS-Alpha 8.2, VMS-IA64 8.2-1.  B  If you have older versions (specifically VMS-Alpha below 7.3) you>  may have to relink. I included all objects so you can relink.  B The most recent version can be downloaded from oooovms.dyndns.org.   Author: Fekko Stubbe  L If you have questions or suggestions, please mail to the mail address below:' Email : dixdev (at) oooovms.dyndns.org                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  