DIX 6.0
FREEWARE_README
DIX,Utility,A program to read/modify records in any RMS (seq/relative/idx) file
Version 6.0
This program lets you view/modify records in any RMS file.
Dix can work in four modes
a. Full screen mode. DIX uses SMG to display the data on the screen and
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.
b. Interactive mode. DIX will prompt you for commands. This mode can also
be used in batch with command files. If you specified /MODIFY
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.
c. File mode. DIX will display one or more records and returns to DCL. No
interaction is possible.
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.
a. Interpreted. You need a record description to do this.
The description file syntax looks like fortran record definitions(structures)
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
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.
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
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
one important one is the /MODIFY. If you do not specify /MODIFY the
file is opened readonly and cannot be modified.
You can also get some idea about the possibilities of DIX via the
demo mode DIX/DEMO, and select one of the demo's.
Note:
The files DIX.HLB and DIX_DES.TLB and DIX_DEMO.TLB must be in the same
directory as DIX, or you must define the logical DIX_HELP and/or
DIX_DES and/or DIX_DEMO to another file.
Building:
The executables and objects for Vax,Alpha and IA64 are skipped with the kit,
as well as the sources. If you want to rebuild DIX, goto the dix directory and
use the command procedure @create_dix. This will compile (fortran) and
link DIX.
Examples:
$DIX SYSUAF[/SCREEN]/EQ=smith [/MODIFY]
Will display the SYSUAF record of user "SMITH" using SMG, and lets
you scroll though this data. If you specified /MODIFY, you can also
modify entries (When you type any character on that field, you enter
modify mode for that field (this is signalled by an underline under
the text)). You leave modify mode for that field when you type ENTER.
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]
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
Will display the data on the terminal, but will not allow you to modify
the record (DUMP command).
$DIX datafile/FILE/REC=10
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=5
Will display the data on the terminal, but will not allow you to modify
the record (DUMP command). The records 10 upto 14 (5) wil be displayed.
$DIX/DEMO
Will start a demo session. You will be given a choise of various
demo modes. They look like the real thing, but do NOT open/change
any file.
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
fileid ext_fid ! File id extension header
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)
[Wascontig,Nobackup,Writeback,Readcheck,Writecheck,-
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
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
integer*2 ru_active ! Recover facility unit number
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
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 union
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.
For example bit3 will be displayed as "readonly"
Any bit not described will be displayed as BITnn (for example bit8)
(2) is an example of a union/map structure. A union contains one
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.
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
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 has
matched, this one will. If you do not specify a map with an *,
the first map will be taken (in this case the map struct_lev_maj=5
(5) This is an example for the RANGE statement. A RANGE defines a
part of the record.
In this case the field diskmap map(256) in contained in a part
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.
(6) A example of a Position statement. This set the offset for the
next field to an absolute value (in this case 510).
The next field (checksum) will be at offset 510.
(7) The length of the character string depends on a previous field
(fi5$b_namelen).
All fieldsizes are in bytes, except within a bitfield/endbitfield range.
In this bitfield_mode only (u)integer, (r)bits and logical fields are allowed.
Another example of files that are linked
The example is about 3 RMS indexed files that form a simple sourcemodule
cross_reference system
The first file (CROSS_REF.CRF_CROSS) has the following description
(.CRF_CROSS in the system or user textlibrary)
integer*2 caller_nr /file=.crf_mod_names !link to modulename
integer*2 called_nr /file=.crf_mod_names !link to modulename
The second file (CROSS_REF.CRF_MOD_NAMES) has the following description
(.CRF_MOD_NAMES in the system or user textlibrary)
integer*2 mod_nr !primary key
character*32 mod_name
integer*2 file_nr/file=.crf_file_names !link to the filename
The third file (CROSS_REF.CRF_FILE_NAMES) has the following description
(.CRF_FILE_NAMES in the system or user textlibrary)
integer*2 file_nr !primary key
character*60 file_name
integer*2 %filler
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_CROSS
%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
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?
%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 !and this field also has a link defined
Now follow the link to the third file (open automatic)
DIX> Follow/automatic file_nr
%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
Now backtrace to the CROSS_REF.CRF_MOD_NAMES file
DIX> BACK
%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
For a complete list of directives see the help in the DIX_HELP.HLB under the
topic "DISPLAY_MODES INTERPRETED_DUMP/DESCRIPTION RECORD_FORMAT". Use
DIX/HELP to display this help.
Note:
Be careful when modifying datafiles. DIX is very powerful and has no UNDO
function after you update the record. If you modify the record, there is
no way back except the backup (if you have one). /BLOCK mode is even more
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
DIX_BUFFER_LIBRARY.FOR The buffer handler
DIX_CON_LIBRARY.FOR The conversion routines ascii<>binary
DIX_CON_LIBRARY_VAX.FOR The conversion routines for the VAX
DIX_CON_LIBRARY_NOT_VAX.FOR The conversion routines for the alpha/ia64
DIX_DCL_PARSE_VAX.FOR The CLD parsing routines for the VAX
DIX_DCL_PARSE_NOT_VAX.FOR The CLD parsing routines for the Alpha/IA64
DIX_DEMO_LIBRARY.FOR The Demonstration routines
DIX_DES_LIBRARY.FOR The description file routines
DIX_DUMP_DECW_LIBRARY.FOR The dump to decwindows routines
DIX_DUMP_DECW_UTIL_LIBRARY.FOR The dump to decwindows utility routines
DIX_DUMP_FASTIO_LIBRARY.FOR The fastio (non rmsio) library
DIX_DUMP_FILE_LIBRARY.FOR The dump to file (noscreen) routines
DIX_DUMP_INTERACTIVE_LIBRARY.FOR The dump to file (noscreen) routines
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 routines
DIX_EVAL_LIBRARY_VAX.FOR The expression evaluation routines VAX
DIX_EVAL_LIBRARY_NOT_VAX.FOR The expression evaluation routines Alpha/ia64
DIX_GET_VERSION.FOR The (generated) source to return the DIX version
DIX_HELP_LIBRARY.FOR The interface to the help (FSHELP) program
DIX_KEYDEFS.FOR The key-definition library
DIX_LBR_LIBRARY.FOR The LBR interface routines
DIX_MEMTAB.FOR The memory-file routines
DIX_RMS_LIBRARY.FOR The interface to RMS routines
DIX_RMS_LIBRARY_VAX.FOR The Extra interface to RMS routines for VAX
DIX_RMS_LIBRARY_NOT_VAX.FOR The Extra interface to RMS routines for Alpha/ia64
DIX_SEARCH_LIBRARY.FOR The Record search routines
DIX_SMG_LIBRARY.FOR The interface to SMG routines
DIX_STARTUP_LIBRARY.FOR The Startup routines
DIX_SYMBOL_LIBRARY.FOR The routines for symbol manipulation.
DIX_SYMBOL_LIBRARY_VAX.FOR The routines for symbol manipulation.(VAX)
DIX_SYMBOL_LIBRARY_NOT_VAX.FOR The routines for symbol manipulation. Alpha/ia64
DIX_UTIL_LIBRARY.FOR The utility library
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_DECWDEF.INC The defs for decwindows mode
DIX_DEMO_DEF.INC The defs for demo mode
DIX_FASTIO_DEF.INC The defs for fastio
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
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 definitions
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
@make_dix_'architecture' (vax/alpha/ia64)
otherwise, just link
@make_dix_'architecture' link (vax/alpha/ia64)
DIX was linked with VMS-VAX 7.3, VMS-Alpha 8.3, VMS-IA64 8.2-1.
If you have older versions (specifically VMS-Alpha below 7.3) you
may have to relink. I included all objects so you can relink.
The most recent version can be downloaded from oooovms.dyndns.org.
Author: Fekko Stubbe
If you have questions or suggestions, please mail to the mail address below:
Email : dixdev (at) oooovms.dyndns.org
RELEASE_NOTES
V0600 28-nov-2006
1. Added a decwindow interface to DIX.
2. If you changed data in the "all_formats" display and then returned,
the screen was not updated. This has been fixed.
3. Fixed a bug in fastio, when searching for multiple-records, FASTIO
could not correctly reset the RFA.
4. Changed the "all_format" display to allow a discard of changes via the
F10 key or an accept of changes via the Do key.
5. Included the current key of indexed files in the header in screen mode
6. Add the the /keyboard=keyboardtype and the "set keyboard keyboardtype"
command, added the ^F,^G, ^K,^L as pf1..pf4 for keyboard=laptop
7. Allow the /record=-10 : Start 10 records before EOF
8. Added the /LIMIT qualifier for a file. Record beyond the limit
will return the limitreached message.
9. Added the /progess qualifier for interactive search
10. Added the ^T for search progress
11. For fastio and stream-files the VT and FF were not recognized as
terminators. This has been solved.
12. Fixed a bug on reading previous records when the key has duplicate keys.
13. Fixed an ACCVIO in dix/inter file/nodes/raw : examine command
14. Changed the fastio option to be more general. You can now also open
"locked" files. DIX will open the file in fastio mode (ignoring
RMS locks) and allow you to read records (keyed, relative, sequential)
15. IN raw mode in the ascii part the moving around went wrong. THis has
been solved.
16. If Recordsize >32767 we now return rms$_IRC in fastio mode
17. In interactive mode the WRITE function has been enhanced to write
more than one record
18. DIX now saves the byte offset and the binary/ascii setting over
switching to different (screen-) display modes. The setting is also
saved over record switching.
19. Added a RMS analyze option for indexed files. THis gives a lot of detail
about rms internal structures. See the "DIX/help modes info/analyze"
v0510 8-jun-2006
1. Added the #IFDEF function for conditional expansion of descriptions
2. Fixed a problem with "fixed" symbols. If you explicitly declare a
symbol with a type, DIX did not always forbid you to change the type.
3. Added the /FAST qualifier for the search commands. If you use this
qualifier, DIX will bypass RMS, and it may be faster. See the help
dix/help record_search/fast
4. Allow /record on indexed files, together with the /key, you now can
read record "n" on key "key"
5. Allow search selection on record_length with lt,le,eq,ge,gt and range.
6. Included a /rfa= qualifier to select a specific record.
the previous /rfa qualifier is replaced with the /mark. See the help
V0500 1-may-2006
1. Enhanced the wrap. Sometimes DIX would wrap output lines when not necessary.
2. Enhanced qualifiers for the DUMP command.
3. Changed the record header for dump/file to a one line display containing
recordlength,recordnumber,vfc_record size and RFA. The output to symbols
is still separated.
4. Fixed some integer*8 problems
5. Added the FILECOUNT() function.
6. Enhanced the values for /FIELD and /SELECT to optionally include a
filenamemask and descriptionmask
7. Changed the name of the BINASC key (TAB) to NEXT_WINDOW.
8. Fixed a small problem with the /next_record search qualifier.
9. Added the /FORMAT qualifier and the SET/SHOW format command, to allow
the display of unprintable data in character strings.
10. Fixed a bug in the raw screen display with scrolling. If the data contained
more than one screen, the display went wrong.
11. Inluded the MOUSE-usage on a decwindows-terminal, and menu_key in screenmode.
12. Included the context for a key definition. This allow you to define
keys with different meaning in different screens.
13. Added funtions BTEST, IBSET and IBCLR (bit manipulation)
14. There was a problem with hex input for character fields, that has been solved
15. Fixed some (non-)alignment problems on VAX
16. Fixed the (signed) display of bytes and words. They were converted as unsigned data
17. Included the DEMO mode
18. Added the RFA of the current record to the header in screen mode (thanks to Hein)
19. Fixed an error when doing screen_print and leaving the filename empty.
20. Added binary and octal display in all modes
21. Added support for previous record for an indexed and a relative file
22. Changed the key PF1-H to PF4-H and v.v.
23. Changed the search order for .des files, first currentdir, then filedir
then userlib and finally systemlib
24. Added fieldnames for dates (none, expired etc). If you have your own descriptions
with date types, make sure you add the [0=none] to the description line
25. Added new datatype deltatime
26. Added symbol substitution for verbs.
27. Added the f$mode and the f$radix function
28. Added the decimal symbol type and the [u]decimal datatype.
29. The set strict command is now per level. Each @file can set its own.
30. Added the f$verify function.
31. Removed the "onelinecommand" from interactive mode, but added a
/command=("command1","command2",..) qualifier.
V0430 21-jan-2006
1. Greatly enhanced the record search. You can now search in (fields of)
multiple records with a lot of compare options. See the help about
record_seaches.
2. In the interactive mode , the FIND and SEARCH commands have be changed.
THe FIND now searches data in the record, the SEARCH records in the file.
3. Added the SHOW SEARCH, SET SEARCH and the EDIT SEARCH commands.
4. Added the set integer size 8 on alpha and ia64 (sorry not on vax)
This allows symbols with 64 bit integers and all operations on them.
Fields with 64 bit integers have always been supported.
5. Enhanced the CSV in dump/file.
6. Included a DUMP command in interactive mode (including a CSV qualifiers)
7. There was a problem with the make-file. The procedure used an undefined
symbol SAY. This problem is solved.
8. There was a link problem with older (pre 7.3 Alpha) versions of VMS.
DIX used the routines OTS$CVT_T_S (concert text to bin for REAL*4 IEEE)
and OTS$CVT_T_T (convert text to bin for REAL*8(IEEE). I replaced
these routines, and this problem should no longer occur.
V0421 1-jan-2006
1. Added the %Recordnumber() function
2. Fixed a bug in the create record when no description available
3. Fixed a bug in the control code for exit with modified data
4. Added show release_notes command
V0420 16-nov-2005
1. Added contional statements #IF,#ELSE,#ELSEIF,#ENDIF in descriptions
2. Fixed a bug in delete/symbol
3. Allow symbols to start with an _
4. Added #MESSAGE in descriptions
6. Enhanced the find options (record search)
7. Added the set file/[no]modify in interactive mode
8. Added the /relative qualifier for the position in the descriptions
I have access to an IA64 machine now, so the kit now again includes
the IA64 objects and binaries
V0412 28-oct-2005
1. Added f$add, f$sub, f$mul and F$divide
2. Added recall statement in the interactive mode
V0411 13-sep-2005
1. Added set process/name= command and the F$environment("PRCNAM")
V0410 8-jul-2005
1. Added the /LIMIT qualifier to stop a repeat sequence
2. Added the POINTER statement to allow pointer in records
See the help about pointer_syntax
3. Added support for IEEE reals. We now accept the real types
REAL_F,REAL_G,REAL_D,REAL_H,REAL_S,REAL_T,REAL_X
REAL*nn are accepted as aliases, with different policies for
the different platforms (see the help).
4. Added the SET REAL FORMAT, and SET REAL SIZE command to
allow the real symbols in any (supported) precision.
5. Changed the EXIT command to do the exit dependend on data.
6. Leave the text on screen after EXIT (screen mode).
7. Better support for VFC files. In screen mode the screen will display
two displays (one for the data and one for the VFC data).
8. The /EQ,/LT,/LE,/GE,/GT,/RECORD are now position dependend
So you can now open mulitple files, each with their own record specification.
9. Added the /locking qualifier . See the help
10. Major rewrite for the RMS library
11. Added /CSV in file mode, This allows you to generate a CSV
(comma separated values) file for import to excell
12. Fixed a bug for the RBITS value. This conversion did not function
correctly when you specified field=+value (addition of one bit).
Since I no longer have access to an IA64 machine, I cannot compile the
newer versions. I successfully compiled the 4.0 version to IA64, so it should
be possible to build dix0410 and later on IA64, if you have the fortran compiler.
V0400 13-sep-2004
1. Added user defined types. See help about user defined types.
This allowes the user to define his own datatypes.
2. Added function NOT, ODD, EVEN
3. Fixed bug in label accessibility. Sometimes lables could not
be found, while they should have been found.
4. Fixed bug in interactive mode. When depositing text all text was
uppercased.
5. Added /UPPERCASE and /LOWERCASE to descriptor entries
6. Added the reference to fields from non-current file/descriptions
e.g. filetag\descriptiontag\fieldname
7. Added unsigned qualifier for examine in raw mode
V0351 1-jun-2004
1. Added a show version command
2. Updated the show file /all command.
3. Added the oneline command to interactive mode
4. Restored the /MUTI_FILE functionality
5. Added function(s) F$INSV,F$EXTZV,F$EXTV
6. Fixed a bug when changing length of fields in screen mode
Data was not correctly copied.
7. Fixed a bug when changing length of fields in interactive mode
Record length was not adapted for idx/rel (not fixed) files.
V0350 1-mar-2004
1. Added commands LOOP/TESTLOOP/ENDLOOP
CYCLE
ENTRY
declaration statements (REAL/LOG/CHARACTER/DATE/INTEGER)
2. Added functions F$ENVIRONMENT
F$FAO
LOGICAL
3. Changed the maximum stringlength from 255 to 65535
4. Fixed some bugs in output handling
5. Added UNIX wildcard matches
6. Added define/key for interactive mode and startup
Changed the keydefinitions for screen mode to define/skey
7. Added display of VFC data from the file mode, and include /display qualifier
8. Added strict mode for explicit declaration
9. Added screen-mode display in interactive mode (SMG)
V0340 1-oct-2003
1. Added IF()THEN/ELSE/ENDIF,
FOR K=BEG,END[,INTERVAL]/ENDFOR
REPEAT/UNTIL
CALL,SUBROUTINE,ENDSUBROUTINE
LEAVE
2. Fixed GOTO problem
3. Added functions F$ENUMERATE
F$GETDVI with some fields
F$FILE to get file information about the open file.
F$FIELD to get field information
F$TRNLNM
F$ENUMERATE to list all descriptor entries
F$DATE
F$RANDOM
4. Added parameters for @ and call
5. Added local symbols, see help in dix/help.
6. Added new symbol type "date"
V0330 1-sep-2003
1. Added support for fields that contain links to other files
2. Enhanced parsing of expressions
3. Support for user textlibrary for description records.
4. New functions (%(B)LOC, F$(F)TYPE, F$(F)EXISTS, F$CHECKSUM
5. Support for while/endwhile in scripts
Known problem: While it is possible to "GOTO" into or out of a
while/endwhile structure, this is not supported , and will be disallowed
in a next version.
V0321 1-jul-2003
1. Added support for logical symbols and & (and) and | (or) operator
2. Enhanced parsing of expressions
3. Fixed stackdump on help function in screen mode
V0320 1-jun-2003
1. Added open/close/add/remove command in interactive mode
2. Fixed a bug in all_display modes when asking for record-offset.
The previous version crashed the second time this procedure was called
3. Updated the display_all mode to make it more readable
4. Fixed a filesize error in display files.
5. Added support for user definable keys. See the help for more info
V031 1-apr-2003
Initial distributed release
V0100 1-jan-1991
First release, it was a long time ago
V9999
Known restrictions.
1.
When using GOSUB, the RETURN statement must be at the same syntax level
as the entry point. This is NOT checked, and violation will result in
strange behaviour. This problem does not exist with the CALL statement.
Example
IF (exp) THEN
Statement
WHILE (expr)
Statement
GOSUB test
ENDWHILE
test: -
Statement |
ENDIF | Gosub/return block runs into an endif
statement | Not supported
RETURN -
IF (exp) THEN
Statement
WHILE (expr)
Statement
GOSUB test
ENDWHILE
goto lab1 Do not runinto, since RETURN will be unexpected
test: -
statement | Gosub/return block at the same syntax level
Statement | This is supported
RETURN _
lab1:
ENDIF
2. For the not-native real values
a.REAL_S, REAL_T and REAL_H on VAX
b.REAL_H on Alpha/IA64
c.REAL_F, REAL_G and REAL_D on IA64
Conversions are done via tranformations to the other equivalent types
a. REAL_S via REAL_F, REAL_T via REAL_G, REAL_X via REAL_H on VAX
b. REAL_H via REAL_X on Alpha/IA64
c. REAL_F via REAL_S, REAL_G and REAL_D via REAL_X on IA64
Since not all types have exactly the same range, some data will convert
to overflow on one platform, and not on the other. This will only happen
on data near the edge of the range, and should not make a difference
for normal values.
Use it at your own risk, because we cannot take responsibility for crashes, dumps or even worse: loosing data.
Here is the dix 6.0 package ( 7.2MB zip file).
Please give your feedback to dixdev@oooovms.dyndns.org.