% Librarian A09-30¾2ܫ63NTQT<U  k_lo(aU CREATE_DES| DIX_GENERAL GENERAL_DESm GENERAL_RAW MODIFYBSEARCH q7-#HD:Example how to modify data in screen mode #CH:IntroM#SC:MAIN:Main displayp T  a, This is a demo for modification of data in 6 SCREEN mode, in RAW as well as in INTERPRETED display b' As an example I take the SYSUAF file. i#VI:BRA Be careful in real life. DIX can easily modify, but has no UNDO C$ after the data is written to disk. #VI:6 Default DIX will start in READONLY mode, you need the? /MODIFY qualifier on the comand line, or change the filestatus , in interactive mode with "set file /modify"5 The start command is $DIX SYSUAF/EQ=DEFAULT/MODIFY. B= This will readin the default record, ready for modification. &#CH:Modify in screen interpreted mode #SC:MODSCRINT:Start screen#VI:BRW #CU:4,30LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1) ;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF) #VI: 0.0|UAF$B_RTYPE |1 1.0|UAF$B_VERSION |1 2.0|UAF$W_USRDATOFF |0$ 4.0|UAF$T_USERNAME |DEFAULT#VI:BR#PO:7,7 UAF$T_USERNAME #VI:# 36.0|UAF$W_MEM |000200b# 38.0|UAF$W_GRP |000200d 40.0|UAF$L_SUB_ID |0 44.0|UAF$Q_PARENT_ID(1) |0 48.0|UAF$Q_PARENT_ID(2) |0 ... #DV:4,6,12 #DV:4,29,120#KP:10L Suppose we want to modify the default for the BIOLM. Of course we could do, this with AUTHORIZE, but this is more fun.2 After 3 times #KEY_NEXT , we get the next screenJ n.b. the field UAF$T_USERNAME is highlighted, because that field is part$ of the (current) key of the record#KEY:KEY_NEXT:MODSCRINT1 a#KEY:ENTER:MODSCRINT1 '#SC:MODSCRINT1:Selecting the right line #CU:5,30#VI:BRW^LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)r;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)R#VI:524.0|UAF$W_PRCCNT  |8 526.0|UAF$W_BIOLM |150 528.0|UAF$W_DIOLM |150.... #DV:4,6,7h #DV:4,29,7BThe cursor is now at the line with UAF$W_BIOLM, the value is 150. 'Suppose we want to change that to 2000.Hit the #KEY_ENTER key!#SC:MODSCRINT2:Modifying the data4#VI:BRWX#CU:5,30LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)%;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)0#VI:524.0|UAF$W_PRCCNT |8 526.0|UAF$W_BIOLM |150 528.0|UAF$W_DIOLM |150.... #DV:4,6,7. #DV:4,29,7#PO:5,30#VI:U 150C#VI:#PO:10,1GThe field is underlined, this signals that you are in Fieldmodify mode. )You can now change the field as you like.g?Initially the terminal is in overstrike mode,you can toggle it eAwith the key #KEY_TOGGLE , Als type the #KEY_HELP key to get helpe)Change the first character to 2, type a 2 #KEY:2:MODSCRINT3S6#SC:MODSCRINT3:Modifying the data after 1 char changed#CU:5,31#VI:BRWELFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)0;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)0#VI:524.0|UAF$W_PRCCNT |8 526.0|UAF$W_BIOLM |250 528.0|UAF$W_DIOLM |150.... #DV:4,6,7 #DV:4,29,7#PO:5,30#VI:Ud250o#VI:#PO:10,15The first digit has changed, and the cursor has moved *Now change the next digit to 0, type the 0#KEY:0:MODSCRINT4 7#SC:MODSCRINT4:Modifying the data after 2 chars changed #CU:5,32#VI:BRWgLFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)t;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)C#VI:524.0|UAF$W_PRCCNT |8 526.0|UAF$W_BIOLM |200 528.0|UAF$W_DIOLM |150.... #DV:4,6,7c #DV:4,29,7#PO:5,30#VI:UE200 #VI:#PO:10,1JNow we need one more 0. If you type it now, the third digit will change to;0, als it already was. You can also use the #KEY_RIGHT key..#KEY:0:MODSCRINT5 #KEY:RIGHT:MODSCRINT507#SC:MODSCRINT5:Modifying the data after 3 chars changed6#CU:5,33#VI:BRW0LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1) ;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF) #VI:524.0|UAF$W_PRCCNT |8 526.0|UAF$W_BIOLM |200 528.0|UAF$W_DIOLM |150.... #DV:4,6,7 #DV:4,29,7#PO:5,30#VI:Uo200s#VI:#PO:10,1#Now type the last digit the last 0.e#KEY:0:MODSCRINT6 <#SC:MODSCRINT6:Modifying the data after adding then 4th char#CU:5,33#VI:BRWrLFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)E;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)C#VI:524.0|UAF$W_PRCCNT |8!526.0|UAF$W_BIOLM |2000- 528.0|UAF$W_DIOLM |150.... #DV:4,6,7 #DV:4,29,7#PO:5,30#VI:U 2000#VI:#PO:10,16The change is complete. The data is still underlined. DIf you now hit the #KEY_ENTER key, the text will be checked against Ithe type (INTEGER*2). If this conversion fails, DIX will given a message,_+and restore the data to the original value.c#KEY:ENTER:MODSCRINT7 #CH:Writing to the filem2#SC:MODSCRINT7:Modifying the data after completion#CU:5,30#VI:BRWALFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)T;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF) #VI:524.0|UAF$W_PRCCNT |8!526.0|UAF$W_BIOLM |2000s 528.0|UAF$W_DIOLM |150.... #DV:4,6,7 #DV:4,29,7CNow the data is back to normal again. We can now move between linesAagain. remember #KEY_ENTER will enter field-modify mode, and the p0same #KEY_ENTER will return back to normal mode.0Now lets see what happened if you made a mistake/hit #KEY_ENTER again to enter field modify mode '#SC:MODSCRINT8:Modifying the data againv#CU:5,30#VI:BRW LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1);Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)R#VI:524.0|UAF$W_PRCCNT |8!526.0|UAF$W_BIOLM |2000c 528.0|UAF$W_DIOLM |150.... #DV:4,6,74 #DV:4,29,7#PO:5,30#VI:UV2000#VI:#PO:10,1Now type the letter XO#KEY:X:MODSCRINT984#SC:MODSCRINT9:Modifying the data after illegal char#CU:5,31#VI:BRW0LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)r;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)e#VI:524.0|UAF$W_PRCCNT |8!526.0|UAF$W_BIOLM |X000: 528.0|UAF$W_DIOLM |150.... #DV:4,6,7: #DV:4,29,7#PO:5,30#VI:U[X000#VI:#PO:10,1/Now hit the #KEY_ENTER to establish the change. #KEY:KEY_ENTER:MODSCRINT10*#SC:MODSCRINT10:Recovered from wrong input#CU:5,30#KP:15#VI:BRW9LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:526.0 Data:Norm Recnr:Unknown RFA:(4,1) ;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)t#VI:524.0|UAF$W_PRCCNT |8!526.0|UAF$W_BIOLM |2000n 528.0|UAF$W_DIOLM |150530.0|UAF$W_TQCNT |10F 532.0|UAF$W_ASTLM |250...G #DV:4,6,8 #DV:4,29,8EDix signals the error in the bottom message display, and restores the:data back to the original 2000.D#ME:Illegal integer value x50e0#CH:Modify in screen interpreted mode field mode&#SC:MODSCRINTFLD:Modify via field mode#CU:5,30#VI:BRW7LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1  Var/Idx/MODARecsiz:644 Offs:526.0 Data:Norm Recnr:Unknown RFA:(4,1) ;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)e#VI:524.0|UAF$W_PRCCNT |8!526.0|UAF$W_BIOLM |2000a 528.0|UAF$W_DIOLM |150530.0|UAF$W_TQCNT |10o 532.0|UAF$W_ASTLM |250...g #DV:4,6,8s #DV:4,29,8CIf you now scoll back to the field UAF$L_FLAGS. Hit #KEY_PREV twiceIto get to that field#KEY:KEY_PREV:MODSCRINTFLD1 ;#SC:MODSCRINTFLD1:Modifying via fieldmode on the right lineE#CU:5,30#VI:BRW5LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:526.0 Data:Norm Recnr:Unknown RFA:(4,1).;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF) #VI:1448.0 UAF$R_MAX_CLASS ....................e=468.0 UAF$L_FLAGS LOCKPWD,DISMAIL,NOMAIL,DISREPORTt!472.0 UAF$B_NETWORK_ACCESS_P %ALLr...k #DV:4,6,8 #DV:4,29,8JYou can change that field just as the BIOLM field abov e, but for this kind2of fields (list of values) there is another optionType the #KEY_GETFIELDS key.+You will get the display on the next screenP #KEY:KEY_GETFIELDS:MODSCRINTFLD2'#SC:MODSCRINTFLD2:Displaying the fields #CU:5,30#VI:BRW1$File :SYS$COMMON:[SYSEXE]SYSUAF.DAT;$Recsiz:644 Offs:526.0 Data:Nor$Des file :DSA0:[STUBBE.PROGRAMS.DIX]#VI:#PO:2,37+ DISCTLY EXTAUTH 0#PO:3,37+ DEFCLI MIGRATEPWD DO448.0 UAF$R_MAX_CLASS ! ....... *LOCKPWD VMSAUTH lO468.0 UAF$L_FLAGS LOCKPWD RESTRICTED DISPWDSYNCH iO472.0 UAF$B_NETWORK_ACCESS_P %ALL DISACNT PWDMIX IO475.0 UAF$B_NETWORK_ACCESS_S %ALL DISWELCOME O478.0 UAF$B_BATCH_ACCESS_P *DISMAIL O481.0 UAF$B_BATCH_ACCESS_S *NOMAIL F...... #DH:1,37,805#PO:1,60 Selectin"g9 #DV:1,37,9 #DV:1,80,9 #DV:4,6,93 #DV:4,29,9#CU:2,38#PO:12,1FYou now see a popup window with all possible fields. The ones that areHactive are preceeded by an *. Using the #DOWN , #UP , #LEFT , #RIGHT keyHyou can go to the field you want. Suppose you want to change the DISACNT4flag. Use the #DOWN key 4 times to go to that field.#KEY:DOWN:MODSCRINTFLD3*#SC:MODSCRINTFLD3:Going to the right field#CU:5,30#VI:BRW $File :SYS$COMMON:[SYSEXE]SYSUAF.DAT;$Recsiz:644 Offs:526.0 Da #ta:Nor$Des file :DSA0:[STUBBE.PROGRAMS.DIX]#VI:#PO:2,37+ DISCTLY EXTAUTH 0#PO:3,37+ DEFCLI MIGRATEPWD 6O448.0 UAF$R_MAX_CLASS ....... *LOCKPWD VMSAUTH .O468.0 UAF$L_FLAGS LOCKPWD RESTRICTED DISPWDSYNCH O472.0 UAF$B_NETWORK_ACCESS_P %ALL DISACNT PWDMIX KO475.0 UAF$B_NETWORK_ACCESS_S %ALL DISWELCOME RO478.0 UAF$B_BA$TCH_ACCESS_P *DISMAIL LO481.0 UAF$B_BATCH_ACCESS_S *NOMAIL Y...... #DH:1,37,80#PO:1,60 Selectingg #DV:1,37,9 #DV:1,80,9 #DV:4,6,9T #DV:4,29,9#CU:6,38#PO:12,14If you hit the #ENTER key, this field will be marked%#SC:MODSCRINTFLD4:Changing that fieldI#CU:5,30#VI:BRW $File :SYS$COMMON:[SYSEXE]SYSUAF.DAT;$Recsiz:644 Offs:526.0 Data:Nor$Des file :DSA0:[STUBBE.PROGRAMS.DIX]#VI:#PO:2,37%+ DISCTLY EXTAUTH 0#PO:3,37+ DEFCLI MIGRATEPWD 0O448.0 UAF$R_MAX_CLASS ....... *LOCKPWD VMSAUTH 0O468.0 UAF$L_FLAGS LOCKPWD RESTRICTED DISPWDSYNCH eO472.0 UAF$B_NETWORK_ACCESS_P %ALL *DISACNT PWDMIX KO475.0 UAF$B_NETWORK_ACCESS_S %ALL DISWELCOME KO478.0 UAF$B_BATCH_ACCESS_P *DISMAIL & DO481.0 UAF$B_BATCH_ACCESS_S *NOMAIL e...... #DH:1,37,80:#PO:1,60 SelectingL #DV:1,37,9 #DV:1,80,9 #DV:4,6,9H #DV:4,29,9#CU:6,38#PO:12,1ENow that field has been marked. If you hit the #ENTER again, the mark:+is removed. So the #ENTER toggles the mark.DEIf all fields are oke, you can type the #DO key to accept the changes 6See also the #KEY_HELP for more options (in real life)#KEY:ENTER:MODSCRINTFLD3#KEY:DO:MODSCRINTFLD5#SC:MO'DSCRINTFLD5:#CU:5,30#VI:BRW4LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:526.0 Data:Norm Recnr:Unknown RFA:(4,1)D;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF)e#VI:1448.0 UAF$R_MAX_CLASS ....................nE468.0 UAF$L_FLAGS LOCKPWD,DISACNT,DISMAIL,NOMAIL,DISREPORTY!472.0 UAF$B_NETWORK_ACCESS_P %ALLt...a #DV:4,6,8Y #DV:4,29,8-Now you have seen another way to modify data. CAll modification (s are still in memory, the file is not updated yet.hCIf you want, you can undo all changes by typing the #KEY_ABORT key.N?Dix will restore the record (in memory) to the original values. 7If you want to accept the changes type the #KEY_DO key.aLAt that moment the file is updated, and DIX can no longer UNDO your changes.#KEY:ABORT:MODSCRINT#KEY:DO:MODSCRINTDONEr#CH:Writing to diskf"#SC:MODSCRINTDONE:Changes accepted#CU:5,30#VI:BRW:LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 ) Var/Idx/MODARecsiz:644 Offs:526.0 Data:Norm Recnr:Unknown RFA:(4,1)0;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF).#VI:1448.0 UAF$R_MAX_CLASS ....................0E468.0 UAF$L_FLAGS LOCKPWD,DISACNT,DISMAIL,NOMAIL,DISREPORT !472.0 UAF$B_NETWORK_ACCESS_P %ALLh...l #DV:4,6,8t #DV:4,29,8,Now the record has been written to the file.6Dix signals that in the message display at the bottom.KDIX can no longer UNDO your changes, but maybe you c*an, IF you remember the changes (good luck).##ME:Changed record has been updated #KP:15&#CH:Modifying via the RAW display mode#SC:MODSCRRAW:IntroKAThe next few pages describe how data can be modified in RAW mode. GIf you do not have a dessciption or if you explicitly ask for RAW mode,&DIX will display the data in RAW mode.IIn RAW mode the screen is split in two parts. THe left part is the binaryOJdata. Here are data is displayed in HEX,OCTAL,BINARY or (un)signed-DecimalHTHe right +part is the ASCII representation of the same data. Unprintable characters are displayed as ".".9Lets look at a raw dump. DIX SYSUAF/EQ=DEFAULT/RAW/MODIFY0#VI:B0!Again be careful with the modify.0#VI:#SC:MODSCRRAW1:Display the data3#VI:BRW.#CU:4,35LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)E4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 0000010",1 ....DEFAULT 0#VI:BR#PO:4,1i 20202020 K#PO:4,1020544C55#PO:4,1941464544#PO:4,41 DEFAULT #PO:5,1e20202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48HHere also part of the displayed bytes are bolded, since they are part ofthe cu-rrent key.GIn BINARY, OCTAL and HEX mode, bytes in the binary data can be modified7Jby just typing the character. There is no need to go into FIELDMODIFY modeJas it is in INTERPRETED mode. In hex mode the characters 0..9 and A..F areIallowed, in Octal mode 0..7 (and for the highest digit 0..3 or 0..1), and Jfor the binary mode 0..1. Other characters are signalled and not accepted.HIn decimal mode, you must enter FIELDMODIFY mode, just as in INTERPRETED:mode, since there is no (or a very difficu.lt) way to check:for allowed characters in that mode. Now suppose you want5to change the 4 onder the position 4 to 5. Go to the %correct position, with the #LEFT key.B$#SC:MODSCRRAW2:On the right position#VI:BRWL#CU:4,26LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)E4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....DEFAULT 0#VI:$/BR#PO:4,1a 20202020 c#PO:4,1020544C55#PO:4,1941464544#PO:4,41 DEFAULT #PO:5,1020202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48,No type the 5, the display wil be changed to#KEY:5:MODSCRRAW30 #SC:MODSCRRAW3:Modified the data#VI:BRW0#C0U:4,26LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)p4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....EEFAULT 0#VI:BR#PO:4,1L 20202020 n#PO:4,1020544C55#PO:4,1941464545#PO:4,41 EEFAULT #PO:5,1S20202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<000000001 00000000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48;Note that in the ASCII part the name has changed to EEFAULTRFNow again we can restore to the original record via the #KEY_ABORT keyor accept via the #KEY_DO keyF#KEY:KEY_ABORT:MODSCRRAW13#KEY:KEY_DO:MODSCRRAW4#CH:Writing to disk ##SC:MODSCRRAW4:Warning about update0#VI:BRW1#CU:4,26LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 2 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)04 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....EEFAULT 0#VI:BR#PO:4,10 20202020 0#PO:4,1020544C55#PO:4,1941464545#PO:4,41 EEFAULT #PO:5,1020202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 00800080 20202020 ............ 3 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48JNow DIX is telling us that this change cannot be done via a normal $UPDATELfunction, since that would modify the key. DIX now asks you if it should tryKto Delete the record, and than insert it again. SInce there is a small risko%DIX warns you. You must type a Y or NS0n.b. This will happen from interpreted mode also>#QU:$Update cause illegal key change ; Try delete/write [y]/n:4#KEY:Y:MODSCRRAW5R#KEY:N:MODSCRRAW4 $#SC:MODSCRRAW5:Accepted delete/write#VI:BRWN#CU:4,35LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)14 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....DEFAULT 0#VI:BR#PO:4,11 20202020 .#PO:4,1020544C55#PO:4,1941464544#PO:4,41 DEFAULT #PO:5,1020202020#PO:5,1020202020#PO:55,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48...w,Now DIX tells you the Delete/Write went oke.KIt is possible that this failes, because the changed key is now a duplicateYKone. DIX will tell you so. You can then change the keyvalue to a decent one&and use a #KEY_PUT to insert a record.6#ME:Delete/Write record ok.o#CH:Modify from the ASCII mode>#SC:MODSCRRAWASC:Demo how to modify the data on tha ascii side#VI:BRWR#CU:4,35LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1) 4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....DEFAULT 0#VI:BR#PO:4,1B 20202020 #PO:4,1020544C55#PO:4,1941464544#PO:4,41 DEFAUL7T #PO:5,1020202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48FFirst switch to the ASCII side, type #KEY_NEXT_WINDOW. The cursor willmove to the ASCII side.r#KEY:NEXT_WINDOW:MODSCRRAWASC1.#SC:MODSCRRAWASC1:Positioned on the ASCII side#VI:BRWr#CU:4,837LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....DEFAULT 0#VI:BR#PO:4,1R 20202020 #PO:4,1020544C55#PO:4,1941464544#PO:4,41 DEFAULT #PO:5,1720202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 000900000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48MSuppose we want to make the same change as before the "D" must become an "E".N"Move 4 to the right ( #KEY_RIGHT )LAny character will be accepted. Be careful, a "." can be a real . (ascii 2E)Gor an unprintable. In the latter case you should modify the data on them6binary side, the #KEY_NEXT_WINDOW will bring you there#KEY:RIGHT:MODSCRR:AWASC23#SC:MODSCRRAWASC2:Modify the data on the ascii sideT#VI:BRWg#CU:4,41LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)a4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....DEFAULT 0#VI:BR#PO:4,14 20202020 4#PO:4,1020544C55#PO:4,1941464544#PO:4,41 DEFAULT #PO:5,1F20202020#PO:5,1020202020#PO:5,1920202020#P;O:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48(Now type the letter E to change the dataKEY:E:MODSCRRAWASC3O#SC:MODSCRRAWASC3:Data changed#VI:BRWY#CU:4,26LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)H4 F!< E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....EEFAULT 0#VI:BR#PO:4,1T 20202020 #PO:4,1020544C55#PO:4,1941464545#PO:4,41 EEFAULT #PO:5,1 20202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... = 485Note that in the binary part the 4 has chaneg to a 5.oFNow again we can restore to the original record via the #KEY_ABORT keyor accept via the #KEY_DO keyX#KEY:KEY_ABORT:MODSCRRAWASC1#KEY:KEY_DO:MODSCRRAWASC4w#CH:Writing to fileS*#SC:MODSCRRAWASC4:Writing the data to file#VI:BRWm#CU:4,41LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1) 4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123#>456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....DEFAULT 0#VI:BR#PO:4,1: 20202020 B#PO:4,1020544C55#PO:4,1941464545#PO:4,41 EEFAULT #PO:5,1s20202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 00800080 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48JNow DIX is telling us that? this change cannot be done via a normal $UPDATELfunction, since that would modify the key. DIX now asks you if it should tryKto Delete the record, and than insert it again. SInce there is a small risk %DIX warns you. You must type a Y or Nr #DH:20,1,60Y #DH:22,1,60R #DV:20,60,22 #PO:20,20BQuestions-answersd#PO:21,1:$Update cause illegal key change ; Try delete/write [y]/n:#KEY:Y:MODSCRRAWASC5#KEY:N:MODSCRRAWASC4'#SC:MODSCRRAWASC5:Accepted delete/write #VI:BRWt#CU:4,37LFile :SY@S$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)T4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<20202020 20544C55 41464544 00000101 ....DEFAULT 0#VI:BR#PO:4,1 20202020 #PO:4,1020544C55#PO:4,1941464544#PO:4,41 DEFAULT #PO:5,1 20202020#PO:5,1020202020#PO:5,1920202020#PO:5,2820202020#PO:5,37 #VI:#PO:5,5916<00000000 00000000 008000A80 20202020 ............ 32#VI:BR#PO:6,2820202020#PO:6,37 #VI:<20202020 20202020 20202020 00000000 .... 48...a,Now DIX tells you the Delete/Write went oke.KIt is possible that this failes, because the changed key is now a duplicatetKone. DIX will tell you so. You can then change the keyvalue to a decent one &and use a #KEY_PUT to insert a record.#ME:Delete/Write record ok.h#CH:Last display#SC:LAST:Last screen This is the last screen0 Hit #KEY_PREV to go back to the previous screen of #KEY_EXIT to exit this demoaww mode to Word Octal#SC:SCREEN_BLU#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:BINARYRecnr:1 RFA:(1,0) #CU:4,32% 3 2 1 0 01230#VI:-00000101000000000111111111111111 .... 00000001-01001111010000110010111001000001 A.CO 00000041-00000000000001010000000001001101 M... 00000081-000000000011000100011100111101CC/+7 #HD:Demo for search capabilities #CH:Intro0#SC:MAIN=This demo demonstrates the (record)search capabilities of DIX0CDix can find multiple data in multiple records. We will demonstratethis in the next few pagesCYou can use the search either from the command line, or from within0"DIX in interactive or Screen mode.On the command linei1$DIX/FILE filename [searchparam[/searchqual]] ... In interactive modee(DIX>search [searchparam[/searchqual]]...In screen modeEDvia the #KEY_FIND_REC key. You will get a popup screen to fill in theOsearch parameters/optionsSHFrom now on we will describe the SEARCH command in the interactive mode,all others are simular.h#CH:Single item search##SC:SEARCHSINGLE:Search of one item The simplest form of a search isDIX>SEARCH searchtext[/rewind]IDIX will search from the next record (or from the beginning if /rewind isRFspecified) for the first record that contains the string "searchtext".,Seachtext is expecteEd to be an ASCII string.IIf you want searchtext to be something different than an ASCII string youV&can add the qualifier /TYPE=anydixtypeJSuppose you want DIX to search for records that contains a binary integer value 1234. DIX>SEARCH 1234/type=INTEGER*4;DIX will convert the text 1234 to a (4 byte-)binary value, 8and will find the first record that contains that value.:Type #KEY_FIND_REC for a list of supported types and sizes#0#KEY:KEY_FIND_REC:LISTOFTYPES0#KEY:ENTER:SEARCHS FINGLE1,#SC:LISTOFTYPES:A list of valid search types#KP:13IBelow is a list of valid types. the *n designates the number of bytes theT5binary data takes. See the help in DIX for more info. LThe default searchtype = CHARACTER*length_of_search_string (see next screen)A[U]INTEGER*1 LOGICAL*1 REAL*4 The reals are platform dependendTG[U]INTEGER*2 LOGICAL*2 REAL*8 On VAX *4=REALF, *8=REALD, *16=REALHKG[U]INTEGER*4 LOGICAL*4 REAL*16 On Alpha *4=REALF, *8=REALG, *16=REALXeG[U]INTEGER*8 GLOGICAL*8 On IA64 *4=REALS, *8=REALT, *16=REALXg<the [U]INTEGER*n is: INTEGER (signed) or UINTEGER(unsigned)and the binary size is n bytes.E<BITS*n The allocation is n bytes, the text value is a list < of numbers separated by , f.e. "4,8,15"/type=bits*2 7 will deliver a binary (2-byte) value with bits ' 4,8,15 set and all others clear1EDATE The string is a valid vmsdate (8 bytes binary)0EPROTECTION The string is a valid protection stHring (2 bytes binary)0EIDENTIFIER The string is a valid identifier string (4 bytes binary)0EFILEID The stirng is a valid file-id (6 bytes binary)2EUIC The string is a value UIC (4 bytes binary)Hit #KEY_ENTER for more types0#KEY:PREV:SEARCHSINGLE(#SC:LISTOFTYPES1:More valid search typesCharacter types1,CHARACTER*n A fixed length character stringCSTRING*n A character string preceeded by a bytesize count fieldeCWSTRING*n A character str Iing preceeded by a wordsize count field GLSTRING*n A character string preceeded by a longwordsize count fieldSEZSTRING*n A Character string terminated by a NULL byte (C strings)DEHSTRING*n A character string of 7 bits ascii, terminated by a byte:# with the high bit set.hGFor the xSTRINGS, if the *n is given, ths string is variable in a fixed Dlength allocation. For example STRING*10 (byte counted string) takesC11 bytes in the file, but the bytecount field (0..10) will gKive theIKactual length. If you do not specify, the allocation is variable also, so aGOLSTRING will allocate "contents of longword count"+4 bytes (length of longword) #KEY:ENTER:SEARCHSINGLE:#KEY:PREV:SEARCHSINGLE)#SC:SEARCHSINGLE1:SUbset of record search0LIf you want to restrict the search in the record to a specific of the recordyou can use the 4DIX>search searchtext /WINDOW=position=bpos,size=n)  GYou restrict the search to the part of the record starting at byte bposaand a K#KEY:KEY_DISPL_HEX:SCREEN_HLUP5 #KEY_DISPL_HEX to change the mode to Longword Hexs#KEY:KEY_DISPL_BIN:SCREEN_BLUG8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLU77 #KEY_DISPL_OCT to change the mode to Longword Octal #KEY:KEY_WORD:SCREEN_DWU0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_BYTE:SCREEN_DBU0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES to change the mode to signed , decimal2Llength of n. e=The first byte of the record is byte 0. length defaults to 1. JIf the length of the binary data is longer than the 'size' value, DIX willnot find the search string.h#KEY:PREV:SEARCHSINGLE&#CH:Search multiple data in one record;#SC:SEARCHMULTONE:Searching more than one item in a record.Y8If you want to search more than one item in ONE record, use the following syntax.C8DIX>SEARCH sear1[/type=sear1type],sear2[/type=sear2type]+DIX will search for a record that contaiMns 6sear1 (of type sear1type) OR sear2 (of type sear2type)EIf you want the search to be for records that contain BOTH string use the following syntax DIX>SEARCH SEAR1/LOGIC=AND,SEAR26This means find records that contain : SEAR1 AND SEAR2E#SC:SEARCHMULTONE1:Searching more than one item in a record enhanced. +You can combine the OR and the AND as below2<DIX>search sear1/logic=and,sear2,sear3,sear4/logic=and,sear5Search for record that contain1. sear1 AND sear2 OR 2. sear3N OR93. sear4 AND sear4 #SC:SARCHHOW:How a match is madeCUpto now we saw a search type that succeeded if the searchitem was h9anyhwere in the (or part of the with the /WINDOW) record.X:DIX has other ways to locate data via the /MATCH qualifier,This qualifier can have the following values8/MATCH=LOCATE (Default) Find the searchitem the record;/MATCH=MATCH The whole record must match the searchitem r;/MATCH=EXISTS In combination with field names (see later)h6/MATCH=LT O The found value must be < search item6/MATCH=LE The found value must be <= search item6/MATCH=EQ The found value must be = search item6/MATCH=GE The found value must be >= search item6/MATCH=GT The found value must be > search item</MATCH=RANGE The searchitem is expressed as BEGIN:END and; the found value must between BEGIN and END5%#SC:SARCHHOW2:Other search qualifiers</CASE_SENSITIVE The strings will be matched case sensitive. ; P Since DCL uppercases, you must enclose your ' searchstring in quotes. =/LOGIC=AND Multiple searches must both match (see later) 0/NOT Reverse the result of the search(#SC:SARCHHOW1:How a (wild) match is madeEFor the /MATCH=LOCATE and /MATCH=MATCH a further qualifier determinesdhow to to this match/WILD=NONE No wildcardKA/WILD=STANDARD * and % are supported like the VMS filewildcardsR5/WILD=EXTENDED the * and % are supported as well as ( Q [abc] Match a or b or c8 [-abc] match anyting except a or b or c8 [c-f] Match a character between c and f@ [-c-f] Match any character not between c and f I 'a : Char "a" is not longer a special char ([*%' etc)h? ~ : If in front of the searchstring , the SH searchstring must be in the beginning of the E record, if at the end of the searchstringR, L the searchstring must be at the end of the record= ! : Matches one or more whitespace chars #CH:Search in multiple records#SC:MATCHMULT:Basic F Upto now we only searched data in one record. DIX has the possibilityHto search data in multiple records, and find a match only if all recordsmatch.DIX> search search1 search2i;Will match is a record matches search1 and the next search2eHThe difference with the previous layout is that we nSow have 2 parameters>and in the previous example one paramter with multiple values.(DIX> search seach1,search2)IAnd each of the parameters can still be a combined search of ANDs and ORsDJas explained before. So now the following search command must be "easy" to understand'#SC:MATCHMULTC:Complex search operationY#KP:3C(DIX>search "SeAr1"/logic=and/case_sens,- "[10,20]"/type=uic,-S "1,2"/type=bits*2,- sear4/logic=and,e sear5/NOT -' } sear6/wind=(pos=10,size=4),-06 *XYZ*/match=mATCH/wild=STANDARD/logic=and,- %X1234/type=integer*4Will find the record in which 61. (SeAr1 is found as text string (case sensitive) AND42. uic [10,20] is found somewhere in the record) ORL3. an INTEGER*2 with only bits 1 and 2 set (so the value 6) in the record OR4. (sear4 is found AND5 sear5 is NOT found).AND the next record matches -1. Sear6 in position 10..13 of the record OR.A2. (*XYZ* matches the compj1N!#HD:Example key usage in raw mode-#PA:FI:USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 e#PA:DA:05007FFF,4F432E41,0005004D,00311CF6,0004000,00161CF1,00030000,00081BD8,00020000,00131D2D,0000 a#PA:RT:V#PA:FT:S #PA:RF:1,0#PA:HF:Y #CH:Introd#PA:AS:N#SC:MAIN:Main display  i s4 This is a demo for display modes in raw screen mode: First the header line will he explained, and later on the basic usage of keys? The start command is $DIX/RAW test.dir. The first file in t V+l8%#HD:Demo how to develop a descriptionm #CH:Startn#SC:MAIN:Start screenp1In this document I give an examplehow to use DIX. II start with an "unknown" file and describe a way to create a descriptionaNfor it. After the description has been created I give some examples how to useDIX with this new description.LThe example I give is the .DIR files. Of course we all know what the layout Iof these files is, but for this example I assume I know nothing about it.RGI know that Wa directory file contains records, and in each record therershould be at least a file name.:"I start with the following commandJ$DIX TEST.DIR/RAW (the /RAW forces dix to a dump-format display. Since I H assume DIX does not know the .DIR files, this is notL necessary, but since DIX does know the layout we need it here)|The result is :|-#PA:FI:USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1s;#PA:DA:0B007FFF,504D4F43,2E455241,00584944,3X5D80005,0000007I#PA:RT:V#PA:FT:S#PA:RE:1 #PA:RF:1,0 #PA:OF:4.0#SC:DISPNAME01:DIx output (raw) #PA:AS:Y#HX:#DA:Looking at this data4We can easily recognize the filename in this record.FIt starts at byte 4 (0 is the first byte) and has a length of 11 bytesL(COMPARE.DIX). We then try the next record. This record can be read by usingIthe #KEY_NEXT_REC (PF1-x means PF1 first and then x). The display is then.#KEY:KEY_NEXT_REC:DISPNAME1 #V#SC:DISPNAME1:Next record03#PA:DA:0Y7007FFF,2E524F46,00584944,35790008,00000018i#PA:AS:Y#PA:RE:2 #PA:RF:1,20X#HX:#DA:JLine 1 is unchanged, line 2 the recordnumber changed, line 3 is unchanged.7But line 4/5 now displayes the data of the next record. DAnd again at position 4 we see a file name of 7 bytes long (FOR.DIX)EWe can repeat this for some more records, but the result is the same.9Hat position 4 the filename starts. SO we have a start of the description byte dontknow(4)  character*? filename ;The dontknow(4Z) means that dontknow consists of 4 elements s5dontknow1(1) upto donwknow(4), each of one byte long. *The ? should be the length of the filename #SC:DISPNAME2:Length of filename#PA:AS:N#PA:OF:3#HX:#DA:GYes, what will be the length of the filename. Looking at the records wetKcan see that the byte just in front of the filename (to the right) containsfIthe length of the filename. In the first record the length was 11 (B hex)s.and just before the name is indeed a 0b(hex).' [ VFHrecord 1: 00584944 2E455241 504D4F43 0B007FFF ....COMPARE.DIX. 0000000Hrecord 2: 35790008 00584944 2E524F46 07007FFF ....FOR.DIX...y5 00000008So now the filename is a byte counted string. DIX has a 5special type for this kind of (byte counted-)strings.eThe type is called "STRING"D$So now we change the description to: byte dontknow1(3) STRING filename byte unknown(???);Looking again at record 1 (in integer-word mode display) , so after #KEY_DISPL_HE\X we seeD#KEY:KEY_WORD:DISPNAME3E#KEY:KEY_DISPL_HEX:DISPNAME3$#SC:DISPNAME3:comparing to directory#PA:RE:1 #PA:RF:1,1 #PA:RF:1,0#PA:MO:D#PA:WO:2 #PA:OF:18O;#PA:DA:0B007FFF,504D4F43,2E455241,00584944,35D80005,0000007T#HX:#DA:Doing a directory of the file$DIR [.TEST]COMPARE.DIR/FU2Directory SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX.TEST]3COMPARE.DIX;5 File ID: (13784,7,0)R0Size: 3/4 Owner: [STUBBE]......JAnd notice the FILEID (13784,7],0). We also see the 13784 and the 7 in the Mdisplay and also the 0. So bytes 18..23 are probably the fileid. We can check1-that for the next record, type #KEY_NEXT_REC 7#KEY:NEXT_REC:DISPNAME4O%#SC:DISPNAME4:Displaying next record 4#PA:RE:2 #PA:RF:1,20I3#PA:DA:07007FFF,2E524F46,00584944,35790008,000000183#KP:9e #DA:OF:145#HX:#DA:$ dir [.test]for.dix/fu.2Directory SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX.TEST]4FOR.DIX;8 File ID: (13689,24,0)....2And indeed^ we see the 13689,24 and 0 in the record(SO now the description can be changed to byte dontnkow(3)V STRING filename  INTEGER*2 dontknow4D integer*2 fileid(3) the syntax (3) means there a three elements< The INTEGER*2 is an (signed)integer field of 2 bytes long. #SC:DISPNAME5:Datatype FILEID #PA:OF:12K#KP:8V#HX:#DA:4But DIX has a datetype FILEID, so we can cange it to# byte dontknow1(3) Still unknown7 STRING filename The name INTEGER*2 dontknow4 Unknown6 F _ILEID FILEID The fileid|8And the word at pos C (the 8) is the version of the fileJCheck again for record 1, and the 5 is the version of the COMPARE.DIX file1So now we know another element of the descriptione# byte dontknow1(3) Still unknown# STRING FILENAME The name9 INTEGER*2 VERSION The version of the file (in binary)- FILEID FILEID The fileid @ The definition for the VERSION is INTEGER (this is signed). We ?could also have choosen the UINTEGER*2 (unsigned), b`ut versions-/are limited to 32767, so it makes no difference #SC:DISPNAME6:The remaining data#PA:OF:0#HX:#DA:HThe first 3 bytes are a little harder to find, but I will help you there"The complete record description is@ INTEGER*2 VERSIONLIMIT And %X7fff=32767 means no version limit$ byte flags A flag byte! STRING FILENAME The nameh< INTEGER*2 VERSION The version of the file (in binary)" FILEID FILEID The fileidE The definition for the VERSIONLaIMIT is INTEGER (this is signed). We ?could also have choosen the UINTEGER*2 (unsigned), but versionso/are limited to 32767, so it makes no differenced#SC:DESFILE:First desfilen#PA:DE:#HX:#DA:ASo now we create a file DIRECTORY.DES that contains the following lines5$CREATE DIRECTORY.DES ? INTEGER*2 VERSIONLIMIT !And 7fff=32767 means no version limito% byte flags !A flag byte " STRING FILENAME !The name= INTEGER*2 VERSION !The version of the file (in bibnary)# FILEID FILEID !The fileida^Z=You need the ! to signal that the rest of the line is commentdAnd try again with DIX&$DIX TEST.DIR/DESCRIPTION=DIRECORY.DES#CH:First descriptiona&#SC:DISPDES:displayed with description#PA:RE:1 #PA:RF:1,0;#PA:DA:0B007FFF,504D4F43,2E455241,00584944,35D80005,00000079#PA:DE:SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;2 #PA:OF:0#HX:#KP:7,#CU:4,17 0|VERSIONLIMIT|32767a 2|FLAGS |0n 3|FILENAME |COMPARE.DIX#15|VERSIcON |128017|FILEID |(55296,1845,0) #DV:4,3,8 #DV:4,16,8FWhow, now we have a readable display. Note that the third header line Dchanged, it now contains the name of the description file. Also the 9Mode field in line 2 has changed from RAW to Interpreted. IBut: it is not correct, the fileid should be (13784,7,0) and DIX tells us Kit is (55296,1845,0). If we look carefully we see the offset of the version,Hto be 15 and it in the raw display is at position 16. And indeed : after d<the filename COMPARE.DIX we notice a binary 0 at position 0.JSo there is another byte beyond the filename. So now try to insert anotherline in the description|#KEY:UP:DESFILE|##SC:DISPNAME8:Inserted another byte ? INTEGER*2 VERSIONLIMIT !And 7fff/32767 means no version limit % byte flags !A flag bytee" STRING FILENAME !The name' BYTE dunnow !the unknown byte <---(= INTEGER*2 VERSION !The version of the file (in binary)R# FILEID FILEID !The fileiedzAnd try the command againr&$DIX TEST.DIR/DESCRIPTION=DIRECORY.DES#SC:DISPNAME9:Now it look ok;#PA:DA:0B007FFF,504D4F43,2E455241,00584944,35D80005,0000007F#HX:#CU:4,17 0|VERSIONLIMIT|327670 2|FLAGS |02 3|FILENAME |COMPARE.DIX815|DUNNOW |0016|VERSION |5,18|FILEID |(13784,7,0)8 #DV:4,3,9D #DV:4,16,9And yes, this time it is ok.MWe hit the F18 (or PF1-N) next_record key twice and get the following displayy#KEY:KEY_NEXT_REC:DISPNAME10#SC:DISPNAfME10:But not yet/#PA:DA:06007FFF,442E4649,00145849,00045091,0000I9#PA:DE:SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;2O#PA:RE:3 #PA:RF:1,44#HX:#CU:4,17 0|VERSIONLIMIT|32767F 2|FLAGS |0D 3|FILENAME |IF.DIX10|DUNNOW |2011|VERSION |-2841613|FILEID |(1104,0,0) #DV:4,3,9i #DV:4,16,9>Wait a moment , a negative version??. Lets see the raw display Hit PF1-HE#KEY:KEY_DISPL_HEX:DISPNAME20 #SC:DISPNAME20:raw display#PA:DE:1#PA:MO:D#PA:WO:4#HX:g#DA:And a PF1-W to display words#KEY:KEY_WORD:DISPNAME21$#SC:DISPNAME21:Raw display in words#PA:DE:|#PA:MO:D#PA:WO:2 #PA:OF:10O#KP:9,#HX:#DA:and also the file itself$DIR [.TEST]IF.DIX/FILE 2Directory SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX.TEST] IF.DIX;20 (20625,4,0)IThe file version is 20, we see that at offset A(=10). In the description nIdisplay the offset for the version was 11. So now the extra byte "dunnow" Iis not present. This must be an alignment byte h. SInce the version and thewHfileid are WORD data, they are aligned. So if the filename length is ODD@we need an alignment byte, and if it is EVEN, we do not need it.;Dix has a special keyword to force alignment ALIGN (or PAD)8FALIGN [1/2/4], default ALIGN = ALIGN 2 means align to the next WORD (2bytes."#SC:DISPNAME24:Revised description;#PA:DA:0B007FFF,504D4F43,2E455241,00584944,35D80005,0000007h$If we now change the description to ? INTEGER*2 VERSIONLIMIT !And 7fff/32767 means no vers iion limitg% byte flags !A flag byted" STRING FILENAME !The name: ALIGN !We force alignment here, so the next word will0 ! be at an even address= INTEGER*2 VERSION !The version of the file (in binary)O# FILEID FILEID !The fileid @And now this desciption works for EVEN and ODD filename lengths.NBut there is one more problem. In the [.TEST] there is only one version of the1COMPARE.DIX file. What happens if there are more.PB$COPY [.TEST]COMPARE.DIX [.TEST]COMPARE.DIX !create a new version&$DIX TEST.DIR/DESCRIPTION=DIRECORY.DES#SC:DISPNAME25:Record too longM#PA:DA:0B007FFF,504D4F43,2E455241,00584944,65EB0006,00000009,35D80005,000000719#PA:DE:SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;2 #PA:RE:1 #PA:RF:1,1#HX:#CU:4,17 0|VERSIONLIMIT|32767  2|FLAGS |0a 3|FILENAME |COMPARE.DIXl16|VERSION |6 18|FILEID |(26091,9,0)f #DV:4,3,8d #DV:4,16,8PDix tells you that the record is longehisE directory has the name a.com #CH:Header line explanationS#SC:HEADER:Header line 1#HX:#DA:This tells us the followingLine 1:SHFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqE ^ ^E The file we look at has the name |6E USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 |K and is a sequential variable recl STUBBF SEARCHu!6 STUBBE MODIFYkn7 STUBBF MODIFY7 STUBBF MODIFYSgΐ7 STUBBF MODIFY#m57 STUBBF CREATE_DES$鴗7 STUBBF GENERAL_DES$:\7 STUBBF GENERAL_RAWVt7 STUBBF MODIFYF:,7 STUBBF SEARCH$,6W8 STUBBF GENERAL_RAW$0hW8 STUBBF GENERAL_RAW$!H^8 STUBBF GENERAL_DES#;.l8 STUBBF CREATE_DES$m'<9 STUBBE DIX_GENERAL$Fh: STUBBF DIX_GENERAL$k&$< STUBBF GENERAL_DES$.]< STUBBF GENERAL_DES$pgA STUBBF GENERAL_DES$vTA STUBBF GENERAL_DES$H1N STUBBF GENERAL_RAW$]C1N STUBBF GENERAL_RAW$ז63N STUBBF GENERAL_RAWnܫ63N!#HD:Example key usage in raw modei-#PA:FI:USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1Se#PA:DA:05007FFF,4F432E41,0005004D,00311CF6,00040000,00161CF1,00030000,00081BD8,00020000,00131D2D,0000:#PA:RT:V#PA:FT:S #PA:RF:1,0#PA:HF:Y #CH:Introa#PA:AS:N#SC:MAIN:Main display  i s4 This is a demo for display modes in raw screen mode: First the header line will he explained, and later on the basic usage of keys? The start command is $DIX/RAW test.dir. The first file in tohiso directory has the name a.come#CH:Header line explanationD#SC:HEADER:Header line 1#HX:#DA:This tells us the following Line 1:SHFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqE ^ ^hE The file we look at has the name |SE USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 | K and is a sequential variable recpord file.S#P#SC:DISP3:Header line 2D#HX:#DA:Line 2:4ARecsiz:42 Offs:0.0 Data:Hex Recnr:1 RFA:(1,0) @ ^ ^ ^ ^ ^HThis record The cursor The data is The current Rfa of the current IHas a is now at displayed record is record Block/bucket,eHRecordlength offset 0.0 in hex Record 1 offset of 42 bytes The part after  the dot is the  bit offqsetf=The offsets in the header are displayed in decimal (and also s<the offset of the data line). You can change this offset to )hex and back via the #KEY_HEXDEC_OFFS keyE#KEY:ENTER:DISP4#KEY:HEXDEC_OFFS:HEADERHEX#D#SC:HEADERHEX:header line 3Y#PA:NH:Y#HX:#DA:A Hit #KEY_HEXDEC_OFFS key again to return to the original displayY Or #KEY_ENTER to continue#KEY:KEY_HEXDEC_OFFS:DISP3 #SC:DISP4N#PA:NH:N#HX:#DA:Line 3:C4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDrEFEThe line contains the byte offsets that should be added to the offsetdAon the data line. The left part is the diplay of the data in HEX, %and the right part the data in ASCII.tANote that the ascii data offset increases from left to right, andaDthe binary data from right to left. This is consistent with the DUMPDformat display, and although it looks strange, it is handy when data5is more than 1 byte long (little endian data format).I#SC:DISP5:Data lines#HX:#DA: Line 4,5,6:6<00t311CF6 0005004D 4F432E41 05007FFF ....A.COM....1. 0<00081BD8 00030000 00161CF1 00040000 .............. 16< 0000 00131D2D 00020000 ....-..... 32< ^ ^ ^IThe record data in HEX. The same data in The offset of the H16 bytes/line ASCII, beginning of this; Unprintables are line 7 presented t.Using the #KEY_LEFT ,#KEY_RIGHT or #KEY_NEXT ,) #KEY_PREV you can move around. Type the 42 #KEY_HELP key for help. You get a pop-up display ! describing the keys you can use.)#KEY:HELP:DISPHELP#KEY:ENTER:DISPMOV#t#SC:DISPHELP:Help page display#CU:2,5eN +-------------------Help on dump screen--------------------------------+N |Moves |N |UP : 1 line up DOWN : 1 line down uas . .Using the #KEY_LEFT ,#KEY_RIGHT or #KEY_NEXT ,) #KEY_PREV you can move around. Type the P2 #KEY_HELP key for help. You get a pop-up display ! describing the keys you can use. #KEY:HELP:DISPHELP#KEY:ENTER:DISPMOV#o#SC:DISPHELP:Help page display#CU:2,5iN +-------------------Help on dump screen--------------------------------+N |Moves |N |UP : 1 line up DOWN : 1 linwe down |N |LEFT : 1 pos to left RIGHT : 1 pos to right |N |Prev_Screen,PF1-UP: 1 page up Next_Screen,PF1-DOWN: 1 page d|N |PF1-Prev_Screen: Top of data PF1-Next_Screen: Bottom of dat|N |PF3 : Find string in record PF1-PF3 : Ask string and f|N |KP8 : Next or prev screen KP4,PF1-KP4 : Set forward |N |KP5,PF1-KP5 : Set backward TAB : Toggle bin/asc |N |Displw#KEY:ENTER:MODSCRINT7u2#SC:MODSCRINT7:Modifying the data after completion#CU:5,30#VI:BRW LFile :SYS$COMMON:[SYSEXE]SYSUAF.DAT;1 Var/Idx/MODARecsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)a;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;144(SYSUAF) #VI:524.0|UAF$W_PRCCNT |8!526.0|UAF$W_BIOLM |2000 528.0|UAF$W_DIOLM |150....CNow the data is back to normal again. We can now move between linesnAagain. remembe {ay options |N |PF1-B : Display byte PF1-W : Display word |N |PF1-L : Display longword PF1-S : Show all formats|N |PF1-Y : View/mod VFC data PF1-O,F20 : No-display offse|...... #DH:1,7,78 #DV:1,7,13 #DV:1,78,13 @The PF1-B notation means : Type the PF1 key, and then the B key.KYou can move around in this screen by using the #LEFT, #RIGHT, #PREV, #NEXT:KHit #K{ENote the offset changed to 0.4, (byte 0, bit 4).The cursor is at the >position of the second nibble in the first byte in the record.Try #KEY_LEFT again #KEY:LEFT:DISPMOV2#KEY:RIGHT:DISPMOV#KEY:ENTER:DISPTAB# !#SC:DISPMOV2: Moved to offset 1.0| #PA:OF:1.0#HX:#DA:INote the offset changed to 1.0, (byte 1, bit 0). The cursor is now at the:data byte with offset 1 /Try #KEY_RIGHT to return to the previous offseti#KEY:RIGHT:DISPMOV1F#e#CH:Toggle binary/asciiD#SC:DISPTAB:z;The order of the various value=name parts is not important.+so [1=onlyone,32767=Nolimit] is the same as [32767=Nolimit,1=onlyone] #SC:DISPENH20A further enhancement is a more complicated one.MThe fileid is pointer to a record in the [000000]indexf.sys file of the disk.GDIX knows the layout of the indexf file, and we can tell DIX, that thisJfileid is a link to the [000000]indexf.sys, by changing the FILEID line to1 FILEID FILEID/FILE="""[000000]INDEXF.SYS"""-' {8And the word at pos C (the 8) is the version of the fileJCheck again for record 1, and the 5 is the version of the COMPARE.DIX file1So now we know another element of the description # byte dontknow1(3) Still unknown  STRING FILENAME The name9 INTEGER*2 VERSION The version of the file (in binary)4 FILEID FILEID The fileidC@ The definition for the VERSION is INTEGER (this is signed). We ?could also have choosen the UINTEGER*2 (unsigned), but versions/are limited to 327EY_ENTER to return to the previous screen. ON all screens you can gety:help by using the #KEY_HELP key to see the allowable keys.#p#CH:Move explanation!#SC:DISPMOV:Start screen for moveh#HX:#DA:EA #KEY_RIGHT in the ascii part will increase the bit-offset, as will SNa #KEY_LEFT in the binary mode, and a #KEY_RIGHT in ascii part or a #KEY_LEFT -in the binary part will decrease the offset. n#KEY:ENTER:DISPTAB#KEY:LEFT:DISPMOV1#f #SC:DISPMOV1:Moved to offset 0.4 #PA:OF:0.4#H^h:(#HD:How to start up DIX in various modes#CH:Allowed modes=#SC:Main:Introductionl)Dix must be defined as a foreign command:,$DIX:=$'device''directory'dix_'platform'.exe" Platform = VAX,Alpha or IA64Dix makes use of 3 filesDIX.HLB The help filedDDIX_DES.TLB The (text-)library file that contains the descriptionsBDIX_DEMO.TLB The (text-)library file that contains the demo pagesMAls these files must be in the same directory as DIX or a logical must poi~lete record as a standard wild card ANDm$3. %X1234 is found as in integer*4)<Mark the space between sear5 and sear6, this is the step to the next record.0n.b. don't ask for the usefulness of this query.#CH:Search with fieldnames#SC:SEARCHFIELD:BasicFUpto now we only did search the whole record (or part via the /WINDOW)FIf the file has a desciption, we can also search in the file using the fieldnames DIX> search text/field=fieldmaskIWill search the record in all fields thet match fieldmask (STANDARD wild)tFfor "text". The type of the field determines the translation of "text"!SO if we have a directory examplee 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COMd10|V(1).VERSION|5N12|V(1).FILEID>|(7414,49,0):18|V(2).VERSION|4M.....Ewe can search something likeDIX> search 5/field=*version*z6Will find all the records that have a field *VERSION* .that contains the INTEGER*2 binary value of 5.#SC:SEARCHFIELD1:continued+Now the /MATCH=EXISTS ma†TA)#HD:Example key usage in description moden-#PA:FI:USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1I7#PA:DE:DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;115(.DIR)0#PA:RT:V#PA:FT:S #PA:RF:1,0 #CH:Intro,#SC:MAIN:Main displayT  : 1< This is a demo for display modes in description screen mode: First the header line will he explained, and later on the basic usage of keys; The start command is $DIX test.dir. The first file in thisi2 directory has the name a.com and has version 2.r than the description. If we switch back 4to RAW WORD (PF1-A, PF1-W) mode we see the following9#ME:Description file DIRECTORY.DES;4 too small for record#KEY:KEY_SWAP_DIS:DISPNAME30#KEY:KEY_WORD:DISPNAME30#SC:DISPNAME30:Data in raw#PA:DE:0 #PA:OF:16a#HX:#DA:>DIX no longer complains, since the desciption is not used now.LBut the recordlength is 32 now, instead of the 24. If we do a DIRECTORY/FILE"$DIRECTORY [.TEST]COMPARE.DIX/FILE COMPARE.DIX;6 (26091,9,0) COMPARE. DIX;5 (13784,7,0)JWe see that there is another VERSION,FILEID pair 6,(26091,9,0) at positionN16, inserted just before the 5,(13784,7,0) we saw before. So there can be moreMthan one version,fileid pair in the record. We could change the desciption tod%#SC:DISPNAME40:Option for descriptionH? INTEGER*2 VERSIONLIMIT !And 7fff/32767 means no version limiti% byte flags !A flag byteR" STRING FILENAME !The name: ALIGN !We force alignment here, so the next word will 0 ! be at an even address9 INTEGER*2 VERSION1 !The version of the file (in binary)$ FILEID FILEID1 !The fileid= INTEGER*2 VERSION2 !The version of the file (in binary)1$ FILEID FILEID2 !The fileid= INTEGER*2 VERSION3 !The version of the file (in binary)0$ FILEID FILEID3 !The fileid ...!#SC:DISPNAME41:Better description1IBut that is not the nicest display. There is a table of VERSION,FILEID's. DDIX has the concept of STRUCTURE . This is a group of datacells that 1are handled as a whole. See the description belowK9 INTEGER*2 VERSIONLIMIT !And 7fff means no version limiti% byte flags !A flag byten" STRING FILENAME !The name: ALIGN !We force alignment here, so the next word will0 ! be at an even address STRUCTURE COUPLE(64):9 INTEGER*2 VERSION !The version of the file (in binary)7$ FILEID FILEID !The fileid END STRUCTUREAThis means the are upto 64 set s (named COUPLE(1)..COUPLE(64)) of KVERSION,FILEID pairs. THe 64 is chosen to be big enough to map all possible.IVERSION,FILEID pairs. The maximum recordsize of a DIRECTORY record is 512,Jbytes, so divide this by 8 (the length of VERSION,FILEID tegether) and youPget 64. If the description is longer than the recordsize, DIX does not complain.#So now using this desciption we getp&$DIX TEST.DIR/DESCRIPTION=DIRECORY.DES#CH:Correct descriptiono#SC:DISPNAME42:finally#VI:RBWD#co:4,22HFile :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:32 Offs:0 Data:Norm Recnr:1 RFa:(1,0)t<Des file :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;5#VI: 0|VERSIONLIMIT |32767 2|FLAGS |0 3|FILENAME |COMPARE.DIX16|COUPLE(1).VERSION|6 18|COUPLE(1).FILEID |(26091,9,0)24|COUPLE(2).VERSION|5 26|COUPLE(2).FILEID |(13784,7,0) #DV:4,3,10 #DV:4,21,10 FCongratulations, you just created your first description file for DIX. #CH:Enhancements*#SC:DISPENH:First enhancement, fieldvaluesBNow we can enhance this display a little. The value of 32767 for aHversionlimit means "no limit",. We can tell DIX to display "Nolimit" if@the value of the versionlimit is 32767. Change the desciption toJ INTEGER*2 VERSIONLIMIT [32767=Nolimit] !And 32767 means no version limit% byte flags !A flag byte." STRING FILENAME !The name: ALIGN !We force alignment here, so the next word will0  ! be at an even address STRUCTURE COUPLE(64)A9 INTEGER*2 VERSION !The version of the file (in binary) $ FILEID FILEID !The fileid END STRUCTURENThe syntax [value1=name1,value2=name2...] tells DIX to insert the name1 if theNinteger value is equal to value1 and name2 if equal to value2, and the integertext if otherwise. And try again &$DIX TEST.DIR/DESCRIPTION=DIRECORY.DES$#SC:DISPENH11:Display of fieldvalues#VI:RBW #CU:4,22HFile :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:32 Offs:0 Data:Norm Recnr:1 RFa:(1,0) <Des file :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;5#VI: 0|VERSIONLIMIT |NOLIMIT 2|FLAGS |0 3|FILENAME |COMPARE.DIX16|COUPLE(1).VERSION|6 18|COUPLE(1).FILEID |(26091,9,0)24|COUPLE(2).VERSION|5 26|COUPLE(2).FILEID |(13784,7,0) #DV:4,3,10 #DV:4,21,10 ;You could also change the value of one to the text onlyone. 2 INTEGER*2 VERSIONLIMIT [1=onlyone,32767=Nord file.s#n#SC:DISP3:Header line 2l#HX:#DA:Line 2:EARecsiz:42 Offs:0.0 Data:Hex Recnr:1 RFA:(1,0)e@ ^ ^ ^ ^ ^HThis record The cursor The data is The current Rfa of the current IHas a is now at displayed record is record Block/bucket, HRecordlength offset 0.0 in hex Record 1 offset of 42 bytes The part after  the dot is the  bit offset=The offsets in the header are displayed in decimal (and also <the offset of the data line). You can change this offset to )hex and back via the #KEY_HEXDEC_OFFS key #KEY:ENTER:DISP4#KEY:HEXDEC_OFFS:HEADERHEX# #SC:HEADERHEX:header line 3u#PA:NH:Y#HX:#DA:A Hit #KEY_HEXDEC_OFFS key again to return to the original displaye Or #KEY_ENTER to continue#KEY:KEY_HEXDEC_OFFS:DISP3 #SC:DISP44#PA:NH:N#HX:#DA:Line 3: 4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEFEThe line contains the byte offsets that should be added to the offset Aon the data line. The left part is the diplay of the data in HEX,e%and the right part the data in ASCII.SANote that the ascii data offset increases from left to right, and:Dthe binary data from right to left. This is consistent with the DUMPDformat display, and although it looks strange, it is handy when data5is more than 1 byte long (little endian data format).E#SC:DISP5:Data lines#HX:#DA: Line 4,5,6:<00311CF6 0005004D 4F432E41 05007FFF ....A.COM....1. 0<00081BD8 00030000 00161CF1 00040000 .............. 16< 0000 00131D2D 00020000 ....-..... 32< ^ ^ ^Ibyte 0-15 of the record in HEX The same data in The offset of the mH ASCII, beginning of this; Unprintables are linea7 presented as . F.Using the #KEY_LEFT ,#KEY_RIGHT or #KEY_NEXT ,) #KEY_PREV you can move around. Type the 2 #KEY_HELP key for help. You get a pop-up display ! describing the keys you can use. #KEY:HELP:DISPHELP#KEY:ENTER:DISPMOV##SC:DISPHELP:Help page display#CU:2,5 N +-------------------Help on dump screen--------------------------------+N |Moves |N |UP : 1 line up DOWN : 1 lin.Using the #KEY_LEFT ,#KEY_RIGHT or #KEY_NEXT ,) #KEY_PREV you can move around. Type the 2 #KEY_HELP key for help. You get a pop-up display ! describing the keys you can use.#KEY:HELP:DISPHELP#KEY:ENTER:DISPMOV#.#SC:DISPHELP:Help page display#CU:2,5DN +-------------------Help on dump screen--------------------------------+N |Moves |N |UP : 1 line up DOWN : 1 line down e down |N |LEFT : 1 pos to left RIGHT : 1 pos to right |N |Prev_Screen,PF1-UP: 1 page up Next_Screen,PF1-DOWN: 1 page d|N |PF1-Prev_Screen: Top of data PF1-Next_Screen: Bottom of dat|N |PF3 : Find string in record PF1-PF3 : Ask string and f|N |KP8 : Next or prev screen KP4,PF1-KP4 : Set forward |N |KP5,PF1-KP5 : Set backward TAB : Toggle bin/asc |N |Display options |N |PF1-B : Display byte PF1-W : Display word |N |PF1-L : Display longword PF1-S : Show all formats|N |PF1-Y : View/mod VFC data PF1-O,F20 : No-display offse|...... #DH:1,7,78 #DV:1,7,13 #DV:1,78,13-@The PF1-B notation means : Type the PF1 key, and then the B key.KYou can move around in this screen by using the #LEFT, #RIGHT, #PREV, #NEXTYKHit #KEY_ENTER to return to the previous screen. ON all screens you can get :help by using the #KEY_HELP key to see the allowable keys.#e#CH:Move explanation!#SC:DISPMOV:Start screen for moveD#HX:#DA:EA #KEY_RIGHT in the ascii part will increase the bit-offset, as will LNa #KEY_LEFT in the binary mode, and a #KEY_RIGHT in ascii part or a #KEY_LEFT -in the binary part will decrease the offset. E#KEY:ENTER:DISPTAB#KEY:LEFT:DISPMOV1#P #SC:DISPMOV1:Moved to offset 0.4 #PA:OF:0.4#HENote the offset changed to 0.4, (byte 0, bit 4).The cursor is at the ->position of the second nibble in the first byte in the record.Try #KEY_LEFT again #KEY:LEFT:DISPMOV2#KEY:RIGHT:DISPMOV#KEY:ENTER:DISPTAB#D!#SC:DISPMOV2: Moved to offset 1.0 #PA:OF:1.0#HX:#DA:INote the offset changed to 1.0, (byte 1, bit 0). The cursor is now at the:data byte with offset 1_/Try #KEY_RIGHT to return to the previous offset #KEY:RIGHT:DISPMOV1 #1#CH:Toggle binary/asciia#SC:DISPTAB:X:#DA:ENote the offset changed to 0.4, (byte 0, bit 4).The cursor is at the e>position of the second nibble in the first byte in the record.Try #KEY_LEFT againg#KEY:LEFT:DISPMOV2#KEY:RIGHT:DISPMOV#KEY:ENTER:DISPTAB#o!#SC:DISPMOV2: Moved to offset 1.0X #PA:OF:1.0#HX:#DA:INote the offset changed to 1.0, (byte 1, bit 0). The cursor is now at theadata byte with offset 1/Try #KEY_RIGHT to return to the previous offseth#KEY:RIGHT:DISPMOV1i#h#CH:Toggle binary/asciit#SC:DISPTAB:Start screen #PA:OF:0.0#HX:#DA:TTry the #KEY_NEXT_WINDOW key, and notice that the cursor is now in the ASCII part ofPthe display. Hit the #KEY_NEXT_WINDOW again and you are back in the HEX display./During this switch the offset remains the same.#KEY:NEXT_WINDOW:DISPTAB1T#KEY:ENTER:SCREEN_HLSa#KEY:PREV:DISP4 #S%#SC:DISPTAB1:In ascii part of displayP#PA:AS:Y#HX:#DA:DIf you now use the #KEY_RIGHT key, you will see the offset increase.BHit the #KEY_NEXT_WINDOW again to go back to the previous screen, or the #KEY_ENTER to continue#KEY:RIGHT:DISPTAB2h#KEY:NEXT_WINDOW:DISPTAB#KEY:ENTER:SCREEN_HLSO(#SC:DISPTAB2:In ascii part as offset 1.0#PA:OF:1#HX:#DA:0Hit the #KEY_LEFT key to go back to the offset 0#KEY:LEFT:DISPTAB1#KEY:ENTER:SCREEN_HLS#CH:Data formats hex mode #SC:SCREEN_HLS:Hex longwords#PA:AS:N#PA:MO:H#MO:SI:Y#PA:WO:4#PA:OF:0#HX:#DA: - This is an example of a Hex logword display:6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BLSs8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLSE7 #KEY_DISPL_OCT to change the mode to Longword Octala#KEY:KEY_DISPL_DEC:SCREEN_DLSW9 #KEY_DISPL_DEC to change the mode to Longword DecimalK#KEY:KEY_WORD:SCREEN_HWS, #KEY_WORD to change the mode to Word Hex#KEY:KEY_BYTE:SCREEN_HBS, #KEY_BYTE to change the mode to Byte Hex#SC:SCREEN_HWS:Hex words#PA:MO:H#MO:SI:Y#PA:WO:2#PA:OF:0#HX:#DA: e* This is an example of a Hex word display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BWS 4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWS3 #KEY_DISPL_OCT to change the mode to Word Octaly#KEY:KEY_DISPL_DEC:SCREEN_DWS 5 #KEY_DISPL_DEC to change the mode to Word Decimal#KEY:KEY_LONG:SCREEN_HLS0 #KEY_LONG to change the mode to Longword Hex#KEY:KEY_BYTE:SCREEN_HBS, #KEY_BYTE to change the mode to Byte Hex#SC:SCREEN_HBS"HEX bytes#PA:MO:H#MO:SI:Y#PA:WO:1#PA:OF:0#HX:#DA: d* This is an example of a Hex byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BBSn4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_OCT:SCREEN_OBSe3 #KEY_DISPL_OCT to change the mode to Byte OctalD#KEY:KEY_DISPL_DEC:SCREEN_DBSL5 #KEY_DISPL_DEC to change the mode to Byte DecimalD#KEY:KEY_LONG:SCREEN_HLS0 #KEY_LONG to change the mode to Longword Hex#KEY:KEY_WORD:SCREEN_HWS, #KEY_WORD to change the mode to Word Hex#CH:Data formats octal mode #SC:SCREEN_OLS:Octal longwords#PA:MO:O#MO:SI:Y#PA:WO:4#PA:OF:0#HX:#DA: h0 This is an example of a Octal longword display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLSo5 #KEY_DISPL_HEX to change the mode to Longword Hexe#KEY:KEY_DISPL_BIN:SCREEN_BLSH8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_DEC:SCREEN_DLSR9 #KEY_DISPL_DEC to change the mode to Longword Decimala#KEY:KEY_WORD:SCREEN_OWS. #KEY_WORD to change the mode to Word Octal#KEY:KEY_BYTE:SCREEN_OBS. #KEY_BYTE to change the mode to Byte Octal#SC:SCREEN_OWS:Octal words#PA:MO:O#MO:SI:Y#PA:WO:2#PA:OF:0#HX:#DA: y, This is an example of a Octal word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWSy1 #KEY_DISPL_HEX to change the mode to Word Hexd#KEY:KEY_DISPL_BIN:SCREEN_BWSR4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_DEC:SCREEN_DWSE5 #KEY_DISPL_DEC to change the mode to Word Decimali#KEY:KEY_LONG:SCREEN_OLS2 #KEY_LONG to change the mode to Longword Octal#KEY:KEY_BYTE:SCREEN_OBS. #KEY_BYTE to change the mode to Byte Octal#SC:SCREEN_OBS:Octal bytes#PA:MO:O#MO:SI:Y#PA:WO:1#PA:OF:0#HX:#DA: o, This is an example of a Octal byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBSi1 #KEY_DISPL_HEX to change the mode to Byte Hex #KEY:KEY_DISPL_BIN:SCREEN_BBSh4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_DEC:SCREEN_DBSm5 #KEY_DISPL_DEC to change the mode to Byte Decimal #KEY:KEY_LONG:SCREEN_OLS2 #KEY_LONG to change the mode to Longword Octal#KEY:KEY_WORD:SCREEN_OWS. #KEY_WORD to change the mode to Word Octal#CH:Data formats binary mode W#SC:SCREEN_BLS:BInary longwordsn#PA:MO:B#MO:SI:Y#PA:WO:4#PA:OF:0#HX:#DA:1 This is an example of a Binary longword displayo6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLSa5 #KEY_DISPL_HEX to change the mode to Longword Hex #KEY:KEY_DISPL_OCT:SCREEN_OLSD7 #KEY_DISPL_OCT to change the mode to Longword Octald#KEY:KEY_DISPL_DEC:SCREEN_DLSO9 #KEY_DISPL_DEC to change the mode to Longword Decimalr#KEY:KEY_WORD:SCREEN_BWS/ #KEY_WORD to change the mode to Word Binarym#KEY:KEY_BYTE:SCREEN_BBS/ #KEY_BYTE to change the mode to Byte Binary #SC:SCREEN_BWS:binary wordsY#PA:MO:B#MO:SI:Y#PA:WO:2#PA:OF:0#HX:#DA: t- This is an example of a Binary word displayP6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWS 1 #KEY_DISPL_HEX to change the mode to Word Hexn#KEY:KEY_DISPL_OCT:SCREEN_OWSL3 #KEY_DISPL_OCT to change the mode to Word Octald#KEY:KEY_DISPL_DEC:SCREEN_DWSO5 #KEY_DISPL_DEC to change the mode to Word Decimalo#KEY:KEY_LONG:SCREEN_BLS3 #KEY_LONG to change the mode to Longword Binarym#KEY:KEY_BYTE:SCREEN_BBS/ #KEY_BYTE to change the mode to Byte Binary #SC:SCREEN_BBS:binary bytesY#PA:MO:B#MO:SI:Y#PA:WO:1#PA:OF:0#HX:#DA: t- This is an example of a Binary byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBS1 #KEY_DISPL_HEX to change the mode to Byte Hexl#KEY:KEY_DISPL_OCT:SCREEN_OBS_3 #KEY_DISPL_OCT to change the mode to Byte Octalr#KEY:KEY_DISPL_DEC:SCREEN_DBSR5 #KEY_DISPL_DEC to change the mode to Byte Decimalw#KEY:KEY_LONG:SCREEN_BLS3 #KEY_LONG to change the mode to Longword Binaryd#KEY:KEY_WORD:SCREEN_BWS/ #KEY_WORD to change the mode to Word Binaryh#CH:#SC:SCREEN_HLU#PA:MO:H#MO:SI:N#PA:WO:4#PA:OF:0#HX:#DA: e* This is an example of a Hex long display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BLU 8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLUK7 #KEY_DISPL_OCT to change the mode to Longword OctalD#KEY:KEY_DISPL_DEC:SCREEN_DLUD9 #KEY_DISPL_DEC to change the mode to Longword DecimalD#KEY:KEY_WORD:SCREEN_HWU, #KEY_WORD to change the mode to Word Hex#KEY:KEY_BYTE:SCREEN_HBU, #KEY_BYTE to change the mode to Byte Hex#SC:SCREEN_HWU#PA:MO:H#MO:SI:N#PA:WO:2#PA:OF:0#HX:#DA: e* This is an example of a Hex word display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BWU 4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWUK3 #KEY_DISPL_OCT to change the mode to Word OctalK#KEY:KEY_DISPL_DEC:SCREEN_DWUK5 #KEY_DISPL_DEC to change the mode to Word DecimalY#KEY:KEY_LONG:SCREEN_HLU0 #KEY_LONG to change the mode to Longword Hex#KEY:KEY_BYTE:SCREEN_HBU, #KEY_BYTE to change the mode to Byte Hex#SC:SCREEN_HBU#PA:MO:H#MO:SI:N#PA:WO:1#PA:OF:0#HX:#DA:  d* This is an example of a Hex byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BBU 4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_OCT:SCREEN_OBUe3 #KEY_DISPL_OCT to change the mode to Byte Octale#KEY:KEY_DISPL_DEC:SCREEN_DBUL5 #KEY_DISPL_DEC to change the mode to Byte Decimali#KEY:KEY_LONG:SCREEN_HLU0 #KEY_LONG to change the mode to Longword Hex#KEY:KEY_WORD:SCREEN_HWU, #KEY_WORD to change the mode to Word Hex#SC:SCREEN_OLU#PA:MO:O#MO:SI:N#PA:WO:4#PA:OF:0#HX:#DA: a h0 This is an example of a Octal longword display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLU5 #KEY_DISPL_HEX to change the mode to Longword Hexy#KEY:KEY_DISPL_BIN:SCREEN_BLUW8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_DEC:SCREEN_DLU 9 #KEY_DISPL_DEC to change the mode to Longword DecimalY#KEY:KEY_WORD:SCREEN_OWU. #KEY_WORD to change the mode to Word Octal#KEY:KEY_BYTE:SCREEN_OBU. #KEY_BYTE to change the mode to Byte Octal#SC:SCREEN_OWU#PA:MO:O#MO:SI:N#PA:WO:2#PA:OF:0#HX:#DA: t y, This is an example of a Octal word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWU 1 #KEY_DISPL_HEX to change the mode to Word Hex#KEY:KEY_DISPL_BIN:SCREEN_BWU4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_DEC:SCREEN_DWU 5 #KEY_DISPL_DEC to change the mode to Word DecimalY#KEY:KEY_LONG:SCREEN_OLU2 #KEY_LONG to change the mode to Longword Octal#KEY:KEY_BYTE:SCREEN_OBU. #KEY_BYTE to change the mode to Byte Octal#SC:SCREEN_OBU#PA:MO:O#MO:SI:N#PA:WO:1#PA:OF:0#HX:#DA: t o, This is an example of a Octal byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBU1 #KEY_DISPL_HEX to change the mode to Byte Hexl#KEY:KEY_DISPL_BIN:SCREEN_BBU_4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_DEC:SCREEN_DBUE5 #KEY_DISPL_DEC to change the mode to Byte Decimalr#KEY:KEY_LONG:SCREEN_OLU2 #KEY_LONG to change the mode to Longword Octal#KEY:KEY_WORD:SCREEN_OWU. #KEY_WORD to change the mode to Word Octal#SC:SCREEN_BLU#PA:MO:B#MO:SI:N#PA:WO:4#PA:OF:0#HX:#DA: c g1 This is an example of a Binary longword displayB6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLUs5 #KEY_DISPL_HEX to change the mode to Longword Hexd#KEY:KEY_DISPL_OCT:SCREEN_OLUR7 #KEY_DISPL_OCT to change the mode to Longword Octale#KEY:KEY_DISPL_DEC:SCREEN_DLUW9 #KEY_DISPL_DEC to change the mode to Longword DecimalK#KEY:KEY_WORD:SCREEN_BWU/ #KEY_WORD to change the mode to Word Binary #KEY:KEY_BYTE:SCREEN_BBU/ #KEY_BYTE to change the mode to Byte Binaryg#SC:SCREEN_BWU#PA:MO:B#MO:SI:N#PA:WO:2#PA:OF:0#HX:#DA: o t. This is an example of a Binary word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWU1 #KEY_DISPL_HEX to change the mode to Word Hexl#KEY:KEY_DISPL_OCT:SCREEN_OWU_3 #KEY_DISPL_OCT to change the mode to Word Octale#KEY:KEY_DISPL_DEC:SCREEN_DWUB5 #KEY_DISPL_DEC to change the mode to Word Decimal0#KEY:KEY_LONG:SCREEN_BLU3 #KEY_LONG to change the mode to Longword Binary #KEY:KEY_BYTE:SCREEN_BBU/ #KEY_BYTE to change the mode to Byte Binaryg#SC:SCREEN_BBU#PA:MO:B#MO:SI:N#PA:WO:1#PA:OF:0#HX:#DA: o t- This is an example of a Binary byte displayS6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBUn1 #KEY_DISPL_HEX to change the mode to Byte Hexw#KEY:KEY_DISPL_OCT:SCREEN_OBUh3 #KEY_DISPL_OCT to change the mode to Byte OctalS#KEY:KEY_DISPL_DEC:SCREEN_DBUS5 #KEY_DISPL_DEC to change the mode to Byte DecimalS#KEY:KEY_LONG:SCREEN_BLU3 #KEY_LONG to change the mode to Longword BinaryK#KEY:KEY_WORD:SCREEN_BWU/ #KEY_WORD to change the mode to Word Binaryw#CH:DIsplay decimal unsigned(#SC:SCREEN_DLU:Decimal longword unsigned#PA:MO:D#MO:SI:N#PA:WO:4#PA:OF:0#HX:#DA: T o9 This is an example of a Decimal signed longword displayS6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLUi5 #KEY_DISPL_HEX to change the mode to Longword Hex:#KEY:KEY_DISPL_BIN:SCREEN_BLU 8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLU7 #KEY_DISPL_OCT to change the mode to Longword Octalh#KEY:KEY_WORD:SCREEN_DWU0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_BYTE:SCREEN_DBU0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES to change the mode to signed , decimalN$#SC:SCREEN_DWU:decimal word unsigned#PA:MO:D#MO:SI:N#PA:WO:2#PA:OF:0#HX:#DA:  5 This is an example of a Decimal signed word displayK6 You can ;The order of the various value=name parts is not important.+so [1=onlyone,32767=Nolimit] is the same as [32767=Nolimit,1=onlyone] #SC:DISPENH20A further enhancement is a more complicated one.MThe fileid is pointer to a record in the [000000]indexf.sys file of the disk.GDIX knows the layout of the indexf file, and we can tell DIX, that thisJfileid is a link to the [000000]indexf.sys, by changing the FILEID line to1 FILEID FILEID/FILE="""[000000]INDEXF.SYS"""-' use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWU1 #KEY_DISPL_HEX to change the mode to Word HexO#KEY:KEY_DISPL_BIN:SCREEN_BWU 4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWUy3 #KEY_DISPL_OCT to change the mode to Word OctalX#KEY:KEY_LONG:SCREEN_DLU4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_BYTE:SCREEN_DBU0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES to change the mode to signed , decimalL%#SC:SCREEN_DBU:Decimal bytes unsignedm#PA:MO:D#MO:SI:N#PA:WO:1#PA:OF:0#HX:#DA:  5 This is an example of a Decimal signed byte displayK6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBUD1 #KEY_DISPL_HEX to change the mode to Byte Hex:#KEY:KEY_DISPL_BIN:SCREEN_BBU14 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_OCT:SCREEN_OBUo3 #KEY_DISPL_OCT to change the mode to Byte Octa.5#CH:Header line explanation:#SC:HEADER:Header line 1#KP:7D#HX:#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COMS10|V(1).VERSION|5M12|V(1).FILEID>|(7414,49,0) 18|V(2).VERSION|4 20|V(2).FILEID>|(7409,22,0) 26|V(3).VERSION|3 28|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2 36|V(4).FILEID>|(7469,19,0) #DV:4,3,14 #DV:4,16,14[This tells us the following Line 1: HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqE ^  ^2E The file we look at has the name |E USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 |rK and is a sequential variable record file. # #SC:DISP3:Header line 2c#HX:#KP:7c#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COMo10|V(1).VERSION|512|V(1).FILEID>|(7414,49,0)18|V(2).VERSION|4t20|V(2).FILEID>|(7409,22,0)f26|V(3).VERSION|3 28|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2o36|V(4).FILEID>|(7469,19,0)n #DV:4,3,14 #DV:4,16,14fLine 2:eARecsiz:42 Offs:0 Data:Norm Recnr:1 RFA:(1,0)H@ ^ ^ ^ ^ ^HThis record The cursor The data is The current Rfa of the current IHas a is now at displayed record is record Block/bucket,=HRecordlength offset 0.0 in normal Record 1 offset %of 42 bytes The part after (not compr # the dot is the essed)t bit offseti=The offsets in the header are displayed in decimal (and also h<the offset of the data line). You can change this offset to )hex and back via the #KEY_HEXDEC_OFFS keya#KEY:ENTER:DISP4#KEY:HEXDEC_OFFS:HEADERHEX# #SC:HEADERHEX:header line 3 #PA:NH:Y#HX:#CU:4,17#KP:7L 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COM. A|V(1).VERSION|5. C|V(1).FILEID>|(7414,49,0).12|V(2).VERSION|4.14|V(2).FILEID>|(7409,22,0).1A|V(3).VERSION|3.1C|V(3).FILEID>|(7128,8,0)22|V(4).VERSION|2.24|V(4).FILEID>|(7469,19,0), #DV:4,3,14 #DV:4,16,14#A Hit #KEY_HEXDEC_OFFS key again to return to the original displayY Or #KEY_ENTER to continue#KEY:KEY_HEXDEC_OFFS:DISP3 #SC:DISP4K#PA:NH:N#HX:#KP:7L#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COM 10|V(1).VERSION|5712|V(1).FILEID>|(7414,49,0)e18|V(2).VERSION|4720|V(2).FILEID>|(7409,22,0)s26|V(3).VERSIO.Using the #KEY_LEFT ,#KEY_RIGHT or #KEY_NEXT ,) #KEY_PREV you can move around. Type the w2 #KEY_HELP key for help. You get a pop-up display ! describing the keys you can use.n#KEY:HELP:DISPHELP#KEY:ENTER:DISPMOV#b#SC:DISPHELP:Help page display#CU:2,5 N +-------------------Help on dump screen--------------------------------+N |Moves |N |UP : 1 line up DOWN : 1 line down N|3728|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2736|V(4).FILEID>|(7469,19,0), #DV:4,3,14 #DV:4,16,14 Line 3:::Des file :DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;115(.DIR)4The line contains the name of the description file. 5This format points to a module (.DIR) in a .TLB file.n7If the description file came from a file, that filenameiwould have been displayed here#SC:DISP5:Data lines#HX:#CU:4,17#KP:7O 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COMs10|V(1).VERSION|5712|V(1).FILEID>|(7414,49,0) 18|V(2).VERSION|4720|V(2).FILEID>|(7409,22,0)b26|V(3).VERSION|3728|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2736|V(4).FILEID>|(7469,19,0), #DV:4,3,14 #DV:4,16,14V Line 4-14: 0|VERSLIM |NONE ^ ^ ^The The The valueByte FieldnameOffset=Using the #KEY_DOWN ,#KEY_UP or #KEY_NEXT ,#KEY_PREV you can =move around. Type the KEY_HELP key. You get a pop-up display y describing the keys you can use.#KEY:HELP:DI SPHELP#KEY:ENTER:DISPMOV# #SC:DISPHELP:Help page display#CU:2,5-N +----------------------------------------------------------------------+N |Help on dump screen |N |Moves |N |UP : 1 line up DOWN : 1 line down |N |LEFT : 1 pos to left RIGHT : 1 pos to right |N |CTRLH,PF1-LEFT,F12: to fiENote the offset changed to 0.4, (byte 0, bit 4).The cursor is at the >position of the second nibble in the first byte in the record.Try #KEY_LEFT againh#KEY:LEFT:DISPMOV2#KEY:RIGHT:DISPMOV#KEY:ENTER:DISPTAB#t!#SC:DISPMOV2: Moved to offset 1.0i #PA:OF:1.0#HX:#DA:INote the offset changed to 1.0, (byte 1, bit 0). The cursor is now at the data byte with offset 1h/Try #KEY_RIGHT to return to the previous offsetE#KEY:RIGHT:DISPMOV1n#t#CH:Toggle binary/asciim#SC:DISPTAB:rst col PF1-RIGHT,CTRLE: to last col |N |Prev_Screen,PF1-UP: 1 page up Next_Screen,PF1-DOWN: 1 page d|N |PF1-Prev_Screen: Top of data PF1-Next_Screen: Bottom of dat|N |PF3 : Find string in record PF1-PF3 : Ask string and f|N |KP8 : Next or prev screen KP4,PF1-KP4 : Set forward |N |KP5,PF1-KP5 : Set backward |N |Display options |N |PF1-G : Enter fieldedit mode F8 : Display descript|N |PF4-C : Change display layout PF4-D : Decimal display |N |PF1-H : Hex display PF1-S : Show all formats|N |PF1-Y : View/mod VFC data PF1-O,F20 : No-display offse|N |PF1-C : Compress on/off PF4-H : Hex/decimal offs|@The PF1-B notation means : Type the PF1 key, and then the B key. #DH:1,6,78 #DH:1,6,17 #DH:1,78,17nKYou can move around in this screen by using the #LEFT, #RIGHT, #PREV, #NEXT KHit #KEY_ENTER to return to the previous screen. ON all screens you can get :help by using the #KEY_HELP key to see the allowable keys.#i#CH:Move explanation!#SC:DISPMOV:Start screen for move:#KP:70#HX:#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COMK10|V(1).VERSION|5712|V(1).FILEID>|(7414,49,0)h18|V(2).VERSION|4720|V(2).FILEID>|(7409,22,0):26|V(3).VERSION| olimit] ;The order of the various value=name parts is not important. +so [1=onlyone,32767=Nolimit] is the same as- [32767=Nolimit,1=onlyone] 5 #SC:DISPENH2:Another enhancement0A further enhancement is a more complicated one.MThe fileid is pointer to a record in the [000000]indexf.sys file of the disk.sGDIX knows the layout of the indexf file, and we can tell DIX, that thistJfileid is a link to the [000000]indexf.sys, by changing the FILEID line to1 FILEID FILEID/FILE="""[000000]I NDEXF.SYS"""-F' /RECORD- :J /COMP="F$GETD($FILE,""BLNR"")+INT(F$EXTR(1,-1,F$ELEM(0,"","",$FIELD)))")We see 3 qualifiers after the name FILEIDD=1. /FILE="""[000000]INDEXF.SYS""" !the """ quotes are neededa 2. /RECORDJ3. /COMP="F$GETD($FILE,""BLNR"")+INT(F$EXTR(1,-1,F$ELEM(0,"","",$FIELD)))"I1. The link is to this file, and use the current filename as the default.N@ So the diskname will be taken from the directoryfilename, butG the directory,name and exte nsion from the /FILE . This points to the G INDEXF.SYS in the [000000] directory. (the ;1 for the version is notI< necessary, since directory files always have version ;1).;2. We must use the value of this field as a record number. 7 We could also have used the value as an index in an 8 indexed file, but INDEXF.SYS is a direct-access file.#SC:DISPENH21:continued J3. /COMP="F$GETD($FILE,""BLNR"")+INT(F$EXTR(1,-1,F$ELEM(0,"","",$FIELD)))"B3. This is the most complex part. The string is split in two parts a. F$GETD($FILE,""BLNR""); In DIX we have a function F$GETDVI. It takes 2 arguments I I. The device name. We give the value $FILE. This is a special symbol4I meaning the current file (the TEST.DIR file). Only the device parti$ will be used (i.e. the disk).E II.What do you want. The value BLNR means the recordnumber in the_H INDEXF.SYS file that is the fileheader of the file with fileid 0.. b. INT(F$EXTR(1,-1,F$ELEM(0,"","",$FIELD)))L Onl y the first number of the fileid is used to compute the record number J in the index file. So if the fileid is "(26091,9,0)" the f$element willJ return the string "(26091", and then the f$extract will skip the (, andI so return the string 26091. We need this value to be an integer so the 5 INT function then returns the integer value 26091.mF So adding a+b together we get the recordnumber in INDEXF.SYS of the file with FILEID (26091,9,0).If we now again startup DIX,&$DIX TEST.DIR/DESCRIPTION=DIRECORY.DES#SC:DISPENH30:demo for link #VI:RBW3#CU:8,20HFile :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]TEST.DIR;1 Var/SeqBRecsiz:32 Offs:18 Data:Norm Recnr:1 RFa:(1,0)<Des file :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;5#VI: 0|VERSIONLIMIT |NOLIMIT 2|FLAGS |0 3|FILENAME |COMPARE.DIX16|COUPLE(1).VERSION|6!18|COUPLE(1).FILEID>|(26091,10,0) 24|COUPLE(2).VERSION|5 26|COUPLE(2).FILEID>|(13784,7,0) #DV:4,3,10;The order of the various value=name parts is not important.d+so [1=onlyone,32767=Nolimit] is the same asB [32767=Nolimit,1=onlyone] B #SC:DISPENH20A further enhancement is a more complicated one.MThe fileid is pointer to a record in the [000000]indexf.sys file of the disk.NGDIX knows the layout of the indexf file, and we can tell DIX, that this Jfileid is a link to the [000000]indexf.sys, by changing the FILEID line to1 FILEID FILEID/FILE="""[000000]INDEXF.SYS"""-0'  #DV:4,21,100HNotice the > marks after the FILEID's. This means that DIX has seen linkinformation for this field. KNow if you move to the line with the fileid and then type #KEY_FOLLOW_LINK -we get the following display with a question. #KEY:KEY_FOLLOW_LINK:DISPENH4-/#SC:DISPENH4:resulting screen after link-follow-#VI:RBWD#KP:14#CO:9,66HFile :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:32 Offs:0 Data:Norm Recnr:1 RFa:(1,0)D<Des file :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;9#VI:8In the message display, DIX tells us what the action is.DIn the questions-answers display, DIX asks us if we want to open theE[000000]INDEXF.SYS file. If we say N, we return to the normal displaya>If we say Y, DIX will now open the INDEXF.SYS, and readin and display record 26795And the result is shown below:I#QU:File [000000]INDEXF.SYS not (yet) opened for read, open it [y]/n: | (=#ME:Following link to file "[000000]INDEXF.SYS", record 26975I#KEY:Y:DISPENH5("#SC:DISPENH5:display of index file#VI:RBW9#cU:4,26HFile :SYS$SYSDEVICE:[000000]INDEXF.SYS;1 Fix/SeqERecsiz:512 Offs:0.0 Data:Norm Recnr:26975 RFa:(26975,0)l;Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;138(INDEXF)n#VI: 0.0|ID_OFFSET |40 1.0|MAP_OFFSET |100s 2.0|ACL_OFFSET |255L 3.0|SES_OFFSET |255O 4.0|SEG_NUM |0I 6.0|STRUCT_LEV_MIN  |1P 7.0|STRUCT_LEV_MAJ |5s% 8.0|FILE_ID |(26091,9,0) ! 14.0|EXT_FID >|(0,0,0)c 20.0|REC_ATTR.RECTYP |2 21.0|REC_ATTR.RECATTR |2  22.0|REC_ATTR.RECSIZ |64 32.0|REC_ATTR.EOFBYTE |134 #DV:4,6,16 #DV:4,26,16#KP:7fEThe header has changed, so now we are looking at the indexf.sys file.tFWe can now look at this record just as if we had opened the INDEXF.SYSFdirectly. This will only work if you have privileges, since INDEXF.SYS'has no read access forlH#KEY:KEY_LONG:SCREEN_DLU4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_WORD:SCREEN_DWU0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES to change the mode to signed , decimalr#CH:DIsplay decimal signed&#SC:SCREEN_DLS:Decimal longword signed#PA:MO:D#MO:SI:Y#PA:WO:4#PA:OF:0#HX:#DA: B ; This is an example of a Decimal unsigned longword displayU6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLSi5 #KEY_DISPL_HEX to change the mode to Longword Hex:#KEY:KEY_DISPL_BIN:SCREEN_BLSo8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLSl7 #KEY_DISPL_OCT to change the mode to Longword Octalt#KEY:KEY_WORD:SCREEN_DWS0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_BYTE:SCREEN_DBS0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimalL"#SC:SCREEN_DWS:Decimal word signed#PA:MO:D#MO:SI:Y#PA:WO:2#PA:OF:0#HX:#DA: a h7 This is an example of a Decimal unsigned word displayK6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWSP1 #KEY_DISPL_HEX to change the mode to Word Hex#KEY:KEY_DISPL_BIN:SCREEN_BWSe4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWSy3 #KEY_DISPL_OCT to change the mode to Word OctalX#KEY:KEY_LONG:SCREEN_DLS4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_BYTE:SCREEN_DBS0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimalN"#SC:SCREEN_DBS:Decimal byte signed#PA:MO:D#MO:SI:Y#PA:WO:1#PA:OF:0#HX:#DA: g 7 This is an example of a Decimal unsigned byte displayK6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBS:1 #KEY_DISPL_HEX to change the mode to Byte Hex#KEY:KEY_DISPL_BIN:SCREEN_BBSu4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_OCT:SCREEN_OBSi3 #KEY_DISPL_OCT to change the mode to Byte OctalE#KEY:KEY_LONG:SCREEN_DLS4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_WORD:SCREEN_DWS0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimal0#CH:Change to interpreted mode#SC:TOINTERP:Raw display#PA:MO:H#MO:SI:Y#PA:WO:4#PA:OF:0#H.X:#DA: 76If you type the #KEY_SWAP_DIS key, DIX will change to .interpreted mode (if a description is present)#KEY:KEY_SWAP_DIS:TOINTERP1s!#SC:TOINTERP1:Interpreted displayS7#PA:DE:DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;115(.DIR)n#HX:#KP:7t#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COMK10|V(1).VERSION|5s12|V(1).FILEID>|(7414,49,0)18|V(2).VERSION|4O20|V(2).FILEID>|(7409,22,0) 26|V(3).VERSION|3C28|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2 36|V(43728|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2736|V(4).FILEID>|(7469,19,0), #DV:4,3,14 #DV:4,16,14l0A #KEY_DOWN will set the cursor on the next line4A #KEY_UP will set the cursor on the previous line#KEY:ENTER:DISPCMP#KEY:DOWN:DISPMOV1#d'#SC:DISPMOV1:Moved to line 2 (offset 2)C#PA:OF:2#HX:#CU:5,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COMD10|V(1).VERSION|5712|V(1).FILEID>|(7414,49,0)L18|V(2).VERSION|4720|V(2).FILEID>|(7409,22,0)t26|V(3).VERSION|3728|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2736|V(4).FILEID>|(7469,19,0), #DV:4,3,14 #DV:4,16,14 ;Note the offset changed to 2 (byte 2).The cursor is at the n)start of the second line (the FLAGS line)iTry #KEY_DOWN againO#KEY:DOWN:DISPMOV2#KEY:UP:DISPMOVP#KEY:ENTER:DISPCMP#e#SC:DISPMOV2: Moved to offset 3C#PA:OF:3#HX:#CU:6,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COM410|V(1).VERSION|5712|V(1).FILEID>|(7414,49,0) 18|V(2).VERSION|4720|V(2).FILEID>|(7409,22,0).26|V(3).VERSION|3728|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2736|V(4).FILEID>|(7469,19,0), #DV:4,3,14 #DV:4,16,14 @Note the offset changed to 3, (byte 3). The cursor is now at thestart of the thirs liner,Try #KEY_UP to return to the previous offset#KEY:UP:DISPMOV1#s#CH:Toggle compressed #SC:DISPCMP:Start screen#PA:OF:0#HX:#KP:7O#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COM.10|V(1).VERSION|5h12|V(1).FILEID>|(7414,49,0).18|V(2).VERSION|4 20|V(2).FILEID>|(7409,22,0).26|V(3).VERSION|328|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2R36|V(4).FILEID>|(7469,19,0) #DV:4,3,14 #DV:4,16,14 JTry the #KEY_COMPRES key, and notice that the second line has disappeared.8the display. Hit the #KEY_COMPRES again and you are backint the original display (NORM)e/During this switch the offset remains the same.0#KEY:KEY_COMPRES:DISPCMP1E#KEY:ENTER:DISPHEX#KEY:PREV:DISPMOV #p"#SC:DISPCMP1:Displaying compressed#PA:CO:Y#HX:#CU:5,17 0|VERSLIM |NONE 3|NAME |A.COM.10|V(1).VERSION|5c12|V(1).FILEID>|(7414,49,0).18|V(2).VERSION|4e20|V(2).FILEID>|(7409,22,0).26|V(3).VERSION|328|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2 36|V(4).FILEID>|(7469,19,0) #DV:4,3,14 #DV:4,16,1420Not that the header line 2 now displayes Comprs.9The field FLAG at offset 2 has disappeared. Compress modew1means that all "null" data will nog be displayed.i8"null" means spaces for ascii value and binary nulls for binary data. M:If you now type the #KEY_COMPRES key, you will be back in -the Norm display. Type #KEY_ENTER to continue#KEY:KEY_COMPRES:DISPCMP#CH:Toggle interpreted*#SC:DISPHEX:Displaying data uninterpreted.#PA:CO:N#HX:#KP:7O#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COM.10|V(1).VERSION|5 12|V(1).FILEID>|(7414,49,0).18|V(2).VERSION|4m20|V(2).FILEID>|(7409,22,0).26|V(3).VERSION|328|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2N36|V(4).ke sense. The querye*DIX> search ""/field="V(2).VERSION"/exist AWill return true is there is a field with the name "V(2).VERSION"X<and false if not. In this case the searchstring is not used (although it must be present).!#CH:What record must be displayede-#SC:SEARCHDISPL:What record must be displayed_EIf you have a search over multiple records, DIX will standard display:Athe first record only. You can define the record(s) that must be K&displayed with the /DISPLAY qualifier.SO theDIX> search sear1 sear2 sear3YBSearches for records that contain sear1 AND the next record sear2 AAND the next record sear3. If one found the record sear1 will be 0 displayed.But.-DIX> search sear1 sear2/display sear3/displaysAWill do th same search, but display the record with sear2 AND the,record with sear3.And so the original searchDIX> search sear1 sear2 sear3 is equal to %DIX> search sear1/display sear2 sear3 #SC:LAST:Last screen This is the last screen0 Hit #KEY_PREV to go back to the previous screen of #KEY_EXIT to exit this demo #KEY:PREV:SEARCHDISPL ww 29 45 0 2 0 0 ....-... 328 0 0 .. 40 7 This is an example of a Decimal unsigned byte display 6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBSH1 #KEY_DISPL_HEX to change the mode to Byte HexB#KEY:KEY_DISPL_BIN:SCREEN_BBSB4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEYFILEID>|(7469,19,0) #DV:4,3,14 #DV:4,16,14t>The data in the right part is translated to ascii. If you want3to see the data in raw display type #KEY_DISPL_HEX #KEY:DISPL_HEX:DISPHEXHEXI#KEY:ENTER:DISPADDIT#SC:DISPHEXHEX#HX:#KP:7F#CU:4,17 0|VERSLIM |7FFF 2|FLAGS |00! 3|NAME |05 41 2E 43 4F 4D110|V(1).VERSION|000512|V(1).FILEID>|000000311CF618|V(2).VERSION|000420|V(2).FILEID>|000000161CF126|V(3).VERSION|000328|V(3).FILEID>|000000081BD834|V(4).VERSION|000236|V(4).FILEID>|000000131D2D #DV:4,3,14 #DV:4,16,14i:The text line (NAME) is displayed in byte order from left 8to right, other items from right to left (little endian Cdisplay). Type #KEY_DISPL_HEX again to return to the normal displayK#KEY:DISPL_HEX:DISPHEX#KEY:ENTER:DISPADDIT#CH:Display additional info#SC:DISPADDIT:Start screen#HX:#KP:7O#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COM.10|V(1).VERSION|5R12|V(1).FILEID>|(7414,49,0).18|V(2).VERSION|4o20|V(2).FILEID>|(7409,22,0).26|V(3).VERSION|328|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2r36|V(4).FILEID>|(7469,19,0) #DV:4,3,14 #DV:4,16,14a.You can ask for the display of additional data- #KEY_DISPALL : Display data in all formats e5 #KEY_CONTDIS : Display the description continuouslyn5 #KEY_FILEINFO : Display info about the current files* #KEY_SWAP_NUM : toggle display of offset* #KEY_CHANGE_DISP : Change display layout#KEY:KEY_DISPALL:DISPADDITALLO#KEY:KEY_CONTDIS:DISPADDITCONT#KEY:KEY_FILEINFO:DISPADDITFILEN#KEY:KEY_SWAP_NUM:DISPADDITNUM$#KEY:KEY_CHANGE_DISP:DISPADDITLAYOUT#KEY:KEY_ENTER:LASTa3#SC:DISPADDITALL:Additional with all format display-#HX:#PO:1,15>+-----------All format display at offset 34------------------+#PO:2,15@|Raw data 02 00 2D 1D 13 00 00 00 00 00 00 00 00 00 00 00 | #PO:3,15@|INTEGER*1 2 | N 0|VERSLIM |INTEGER*2 2  | N 2|FLAGS |INTEGER*4 489488386 | N 3|NAME |UINTEGER*1 2 | N10|V(1).VERSIO|UINTEGER*2 2 | N12|V(1).FILEID|UINTEGER*4 489488386 | N18|V(2).VERSIO|REAL_F*4 Overflow | N20|V(2).FILEID|REAL_G*8 Overflow | N26|V(3).VERSIO|REAL_H*16 **OUT OF BUFFER** | N28|V(3).FILEID|REAL_D*8 Overflow | N34|V(4).VERSIO|REAL_S*4 0.22896363E-20 | N36|V(4).FILEID|REAL_T*8 Overflow | N |REAL_X*8 **OUT OF BUFFER** | N |LOGICAL*1 False | N |UIC [16455,2]  | N |CHARACTER*4- | N |DATE*4 21-JUL-2789 11:46:00.00 | O |DATE*8 17-NOV-1858 02:16:49.38 | :O |PROTECTION S:RED, O:RWED, G:RWED, W:RWED | 3N |RINTEGER 138541 | O |FILEID (2,7469,19)  | IL |BITS BIT1 |N +------------------------------------------------------------+ #DH:1,15,76 #DV:1,15,25 #DH:25,15,76 #DV:1,76,25i.You can ask for the display of additional data( #KEY_ENTER : Return to previous screen5 #KEY_CONTDIS : Display the description continuouslyn5 #KEY_FILEINFO : Display info about the current files* #KEY_SWAP_NUM : toggle display of offset* #KEY_CHANGE_DISP : Change display layout#KEY:KEY_ENTER:DISPADDIT#KEY:KEY_CONTDIS:DISPADDITCONT#KEY:KEY_FILEINFO:DISPADDITFILEN#KEY:KEY_SWAP_NUM:DISPADDITNUM$#KEY:KEY_CHANGE_DISP:DISPADDITLAYOUT#l4#SC:DISPADDITCONT:Additional with continuous display#HX:#KP:7O#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COM.10|V(1).VERSION|5 12|V(1).FILEID>|(7414,49,0).18|V(2).VERSION|4 20|V(2).FILEID>|(7409,22,0) ;26|V(3).VERSION|3 ;28|V(3).FILEID>|(7128,8,0) :34|V(4).VERSION|2 :36|V(4).FILEID>|(7469,19,0) #DV:4,3,14 #DV:4,16,14 : OThis is the display with the continuous description display. You can remove it a6by typing the #KEY_CONTDIS again. The data showed are DatatypeIs the field variableHas the field a dependancyOptional FIELD values3 #DH:18,59,80 #DV:18,5!9,23 #DV:23,59,80 #DV:18,70,23 #DH:23,59,80 #PO:18,64y DescriptionS #PO:19,60Type #PO:20,60dVariable #PO:21,60u Dependancy #PO:22,60*Values #PO:19,71s INTEGER*27 #PO:20,71False7 #PO:21,71OFalseY #PO:22,71L 32767=NONE#KEY:KEY_DISPALL:DISPADDITALL#KEY:KEY_CONTDIS:DISPADDIT#KEY:KEY_FILEINFO:DISPADDITFILEN#KEY:KEY_SWAP_NUM:DISPADDITNUM$#KEY:KEY_CHANGE_DISP:DISPADDITLAYOUT.#SC:DISPADDITFILE:Additional with file display#HX:#KP:7U#PO:3,1U#CU:4,179--File:USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1----------+ 8File |G Organization : Sequential | G Lock mode : Normal | eG Record format : Variable | 2G Creation date : 7-JUL-2003 08:57:52.97 | 2G Expiration date : 23-SEP-2006 10:18:04.41 | kG Backup date : | 2G Revision date : 11-MAR-2005 15:32:39.89 | 1G File id : (45483,1,0) | UG File owner : [BEHGROUP,STUBBF] = [11,1] | OG File protection : S:RWE, O:RWE, G:RE, W:E | G Globalbuffercount: 0 | GRecord | G Record attribute : NONE | 5G Max record size : 512 | -8-------------------------------------------------------+ #DH:3,1,56 #DH:19,1,56o #DV:3,56,19l1The file window can be scrolled in the normal wayw2The window will be removed with the #KEY_ENTER key#KEY:KEY_DISPALL:DISPADDITALLO#KEY:KEY_CONTDIS:DISPADDITCONT#KEY:KEY_ENTER:DISPADDIT#KEY:KEY_SWAP_NUM:DISPADDITNUM$#KEY:KEY_CHANGE_DISP:DISPADDITLAYOUT# 2#SC:DISPADDITNUM:Additional with no offset display#HX:#KP:7 #CU:4,14VERSLIM |NONE FLAGS |RNAME |A.COMV(1).VERSION|5V(1).FILEID>|(7414,49,0)V(2).VERSION|4V(2).FILEID>|(7409,22,0)V(3).VERSION|3V(3).FILEID>|(7128,8,0)>V(4).VERSION|2V(4).FILEID>|(7469,19,0) #DV:4,13,14u.This is the display without the offset column.- #KEY_DISPALL : Display data in all formats e5 #KEY_CONTDIS : Display the description continuouslyn6 #KEY_FILEINFO : Display info aborut the current file* #KEY_SWAP_NUM : toggle display of offset* #KEY_CHANGE_DISP : Change display layout#KEY:KEY_DISPALL:DISPADDITALLO#KEY:KEY_CONTDIS:DISPADDITCONT#KEY:KEY_FILEINFO:DISPADDITFILET#KEY:KEY_SWAP_NUM:DISPADDITD$#KEY:KEY_CHANGE_DISP:DISPADDITLAYOUT!#SC:DISPADDITLAYOUT:Layout changeA-#PA:FI:USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1M7#PA:DE:DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;115(.DIR)P #PA:RF:4,18: #PA:RS:644 #PA:OF:412#HX:#CU:6,303396.0|UAF$Q_LASTLOGIN_I |4-APR-2003 15:0 unprivved users.0ETyping #KEY_BACK_LINK (backfollow) returns us to the original displayD#KEY:KEY_BACK_LINK:DISPENH6L&#SC:DISPENH6:Back to directory display9#PA:DE:SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;2e#HX: 0|VERSIONLIMIT |NOLIMIT 2|FLAGS |0 3|FILENAME |COMPARE.DIX16|COUPLE(1).VERSION|6!18|COUPLE(1).FILEID>|(26091,10,0):24|COUPLE(2).VERSION|5 26|COUPLE(2).FILEID>|(13784,7,0) #DV:4,3,10 #DV:4,21,10h'And we are back in the original displayK##SC:TRBFILE:Decription in .TLB fileDKNow there is only one more item to handle. On the command line we specifiedJ/DESCR="descriptionfile". We can store this desciption file in a .TLB fileKso DIX can find the description even if we do not add the /DESCR qualifier.YGThere is a SYSTEMWIDE DIX_DES.TLB file in the same directory as the DIXKNexecutable. We can insert a module in this file that contains the description.JDIX will look in the DIX_DES.TLB file whenever a file is opened and see if-there is a description that matches the file. 8DIX will match the filename with the name of the module.DThe module name may contain a full filespec with wildcards. DIX willMmatch the device,directory,name,type and version. Parts not in the MODULENAMEoNalways match. So if we give the module the name ".DIR", this module will matchall directory files.To include the file use the 5$LIBRARY/INSERT DIX_DES.TLB DIRECTORY.DES/NAME=".DIR"KJIf you do not have write access to the DIX_DES.TLB file you can also use a8private .TLB file, see the HELP of DIX for more details.9After inserting the DIRECTORY.DES file in the .TLB file, o:and you start DIX without the /DESCRIPTION qualifier, DIX 2will find the .DIR entry and display the following $DIX TEXT.DIRB#SC:LAST:final pageS6#PA:DE:DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;138(.DIR)#HX:#VI: 0|VERSIONLIMIT |NOLIMIT 2|FLAGS |0 3|FILENAME |COMPARE.DIX16|COUPLE(1).VERSION|6!18|COUPLE(1).FILEID>|(26091,10,0) 24|COUPLE(2).VERSION|5 26|COUPLE(2).FILEID>|(13784,7,0) #DV:4,3,10 #DV:4,21,10e#Note that headerline 3 changed fromn<Des file :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;2to9Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;138(.DIR)pAThe last display means the ".DIR" module of the DIX_DES.TLB file.nThis is the last screenywwKEY:KEY_DISPL_HEX:SCREEN_HLUc5 #KEY_DISPL_HEX to change the mode to Longword HexM#KEY:KEY_DISPL_BIN:SCREEN_BLU8 #KEY_DISPL_BIN to change the mode to Longwnt !to them (DIX,DIX_DES or DIX_DEMO)LDix has 6 major qualifiersD$DIX/SCREEN The default display/modify data in full screen mode5$DIX/FILE Dump data like the VMS Dump utility.EL$DIX/INTERACTIVE Interactive mode, allows you to give commands interactively $DIX/HELP Help abrout DIX#$DIX/DEMO Demonstration modeC>$DIX/INFO Display info about a file (keys, areas etc.)%See the following pages for each modea#e# #CH:Screen modew%#SC:SCREENMODE:Screen mode start pagew>Screen mode is the default, so $DIX ... will enter screen modeJIn screen mode DIX will use SMG (screen management routines) to allow full(screen display/modification of the data.The full syntax isE$DIX[/SCREEN] filemask[/qualifiers][,filemask..] [searchparameters..]WNThere is one very important qualifier : /MODIFY. If you do not specify /MODIFYCDIX will open the file(s) readonly, and no modification is allowed.t Parameters : filemask : R@ The file to display/modify. This parameter may be a list of , filenames with the normal VMS wildcards.E If the selection finds more than one file, DIX will prompt you toe? select one file, unless the qualifier /MULTI_FILE is given.lF If /MULTI_FILE is given DIX will open all files and allows you to  switch between them.Searchparameters:f: These are optional parameters (upto 7) that allow you . to search the file for a specific record. - See the search demo for more information.d*#SC:SCREENMODE QUAL: Screen mode qualifiers5In screen mode the following Qualifilers are allowed.YGeneral:? /STARTUP=startupfile A startup file with startup commandsY, Default = DIX_INI: /SYSTEM_LIBRARY The name of the .tlb file with 4 system-wide descriptions.* Default DIX_DES9 /USER_LIBRARY The name of the .tlb file withp5 user defined descriptions.d/ Default DIS_DES_USERYFile qualifiersnA /TAG The name that can be used to referenceK$ the file.A /MULTI_FILE Allow more than one file to be opened. 8 /MODIFY Open file in read/write mode.6 /BLOCKED Open the file in block mode. (be very careful )< /RAW Display data in RAW mode, even if3 a description is presentS0#SC:SC REENMODEQUAL2: More Screen mode qualifiersDescription qualifiers= /DESCRIPTION You can specify a description name , after each file. = /ALL If multiple descriptions match andY8 /ALL is given, load them all.Record Selection Indexed files$ /KEY=nn keynumberG /LT=string Search for a key-value < string W; /LE=string Search for a key-value <= strin g ; /EQ=string Search for a key-value = stringK; /GE=string Search for a key-value >= stringS; /GT=string Search for a key-value > stringe All files6 /RECORD=nn Search for record number nn3 /RFA Search for previous marke0#SC:SCREENMODEQUAL3: More Screen mode qualifiersDisplay parameters8 /COMPRESS Do not display "empty" fields4 /NUMBER=(HEX,DECIMAL) The radix for the offsets Raw modeL . /HEX Display data in hex7 /DECIMAL Display data in decimal mode 5 /OCTAL Display data in octal modeY7 /BINARY Display data in binary mode 4 /BYTE Display data in byte size4 /WORD Display data in word size8 /LONGWORD Display data in longword size2 /UNSIGNED Display decimal data as- unsigned integers: /FORMAT=(passall,dot,dump,hex)9 The way binary data in stringsp) are displayed. #CH:File modeO!#SC:FILEMODE:File mode start page KFilemode will print output to a file (or the screen). In this mode there is:Eno interction possible, and DIX will open all files in readonly mode..The full syntax is B$DIX/FILE filemask[/qualifiers][,filemask...] [searchparameters..] Parameters:V filemask : @ The file to display/modify. This parameter may be a list of , filenames with the normal VMS wildcards.E If the selection finds more than one file, DIX will prompt you too? select one file, unless the qualifier /MULTI_FILE is given.:F If /MULTI_FILE is given DIX will open all files and allows you to  switch between them.Searchparameters:e: These are optional parameters (upto 7) that allow you . to search the file for a specific record. - See the search demo for more information.e%#SC:FILEMODEQUAL:File mode qualifiers 5In screen mode the following Qualifilers are allowed.tGeneral:? /STARTUP=startupfile A startup file with startup commandsE, Default = DIX_INI: /SYSTEM_LIBRARY The name of the .tlb file with 4 system-wide descriptions.* Default DIX_DES9 /USER_LIBRARY The name of the .tlb file with 5 user defined descriptions.L/ Default DIS_DES_USER File qualifiers_A /TAG The name that can be used to reference.$ the file.A /MULTI_FILE Allow more than one file to be opened.h8 /MODIFY Open file in read/write mode.6 /BLOCKED Open the file in block mode. (be very careful )< /RAW Display data in RAW mode, even if3 a description is presente,#SC:FILEMODEQUAL2: More file mode qualifiersDescription qualifiers= /DESCRIPTION You can specify a description name:, after each file. = /ALL If multiple descriptions match and 8 /ALL is given, load them all.Record Selection Indexed files$ /KEY=nn keynumberG /LT=string Search for a key-value < string C; /LE=string Search for a key-value <= stringL; /EQ=string S earch for a key-value = string ; /GE=string Search for a key-value >= string,; /GT=string Search for a key-value > string All files6 /RECORD=nn Search for record number nn3 /RFA Search for previous marka,#SC:FILEMODEQUAL3: More file mode qualifiersDisplay parameters8 /COMPRESS Do not display "empty" fields4 /NUMBER=(HEX,DECIMAL) The radix for the offsets Raw modeS. /HEX Display data in hex7 /DECIMAL Display data in decimal mode 5 /OCTAL Display data in octal modea7 /BINARY Display data in binary modeB4 /BYTE Display data in byte size4 /WORD Display data in word size8 /LONGWORD Display data in longword size2 /UNSIGNED Display decimal data as- unsigned integersr /FORMAT=(passall,dot,dump,hex)9  The way binary data in stringsD) are displayed.2 #CH:Interactive mode)#SC:INTERMODE:Interactive mode start page =In interactive mode DIX will prompt you in command-line mode.1HIn this mode you can also use script files (@) and you can use this mode in batch. The full syntax isF$DIX/INTERACTIVE filemask[/qualifiers][,filemask..] [onelinecommand] -& [searchparameters..]NThere is one very important qualifier : /MODIFY. If you do not s pecify /MODIFYCDIX will open the file(s) readonly, and no modification is allowed.A Parameters : filemask : R@ The file to display/modify. This parameter may be a list of , filenames with the normal VMS wildcards.E If the selection finds more than one file, DIX will prompt you toX? select one file, unless the qualifier /MULTI_FILE is given.RF If /MULTI_FILE is given DIX will open all files and allows you to  switch between them.Onelinecommand: 6 You can specify a onelinecommand. DIX will execute$ this command and return to DCL. , Example: $DIX/INTER myfile "exam *XYZ*" 6 will open 'myfile' and display alle fields with a  name that matches *XYZ*.Searchparameters: : These are optional parameters (upto 6) that allow you . to search the file for a specific record. - See the search demo for more information. .#SC:INTERMODEQUAL: Interactive mode qualifiers5In screen mode the following Qualifilers are allowed.eGeneral,? /STARTUP =startupfile A startup file with startup commandsw, Default = DIX_INI: /SYSTEM_LIBRARY The name of the .tlb file with 4 system-wide descriptions.* Default DIX_DES9 /USER_LIBRARY The name of the .tlb file withi5 user defined descriptions.V/ Default DIS_DES_USERiFile qualifiers A /TAG The name that can be used to refere nce $ the file.A /MULTI_FILE Allow more than one file to be opened.I8 /MODIFY Open file in read/write mode.6 /BLOCKED Open the file in block mode. (be very careful )< /RAW Display data in RAW mode, even if3 a description is present04#SC:INTERMODEQUAL2: More Interactive mode qualifiersDescription qualifiers= /DESCRIPTION You can  specify a description name, after each file. = /ALL If multiple descriptions match and 8 /ALL is given, load them all.Record Selection Indexed files$ /KEY=nn keynumberG /LT=string Search for a key-value < string X; /LE=string Search for a key-value <= string ; /EQ=string Search for a key-value = stringV; /GE=string Search for a key-value >= stringI; /GT=string Search for a key-value > stringO All files6 /RECORD=nn Search for record number nn3 /RFA Search for previous marki4#SC:INTERMODEQUAL3: More interactive mode qualifiersDisplay parameters8 /COMPRESS Do not display "empty" fields4 /NUMBER=(HEX,DECIMAL) The radix for the offsets Raw mode . /HEX Display data in hex7 /DECIMAL Display data in decimal  mode95 /OCTAL Display data in octal mode.7 /BINARY Display data in binary modeK4 /BYTE Display data in byte size4 /WORD Display data in word size8 /LONGWORD Display data in longword size2 /UNSIGNED Display decimal data as- unsigned integersD /FORMAT=(passall,dot,dump,hex)9 The way binary data in strings )  are displayed.. #CH:Help mode !#SC:HELPMODE:Help mode start pageRFIn help mode DIX will display the HELP. If the freeware product FSHELPBis installed, DIX will use, otherwise it will use LBR$OUTPUT_HELP.The full syntax is$DIX/HELP [helpword...]p Parameters:fI If no parameters are given, the help will start on the mainn help page.sH If the optional helpwords are given, yopu can jump to the correct help page (just like VMS-help)h Qualifiers:t( No qualifiers are valid for help mode. #CH:Demo modee!#SC:DEMOMODE:Demo mode start page HIn demo mode, DIX will demonstrate its functions. You are shown a numberLof demonstration pages, and in this way you can get a feeling how DIX works.Syntax"$DIX/demo [demomask] [startscreen] Parameters:3 demomask: > You can select the DEMO file direct by specifying its name.H If the mask is empty , or matches to more than one demonstration, DIX# will let you select one of them. startscreen:E Normally DIX will start on the main screen (MAIN). If you want you4G can start on any page. DUring the demonstration the name of the page5/ is displayed in the right top of the screen.: #CH:Info modeR'#SC:INFOMODE:File information mode page HIn info mode, DIX will display information about files. This informationDis about keys,areas, allocation and so on. DIX will open the file(s)in readonly mode.4the syntax is: $DIX/INFO filemask [/qualifiers] filemask : a@ The file to display/modi fy. This parameter may be a list of , filenames with the normal VMS wildcards.E If the selection finds more than one file, DIX will prompt you toA? select one file, unless the qualifier /MULTI_FILE is given.oH If /MULTI_FILE is given DIX will display abrount all matching files. Qualifiers:> /OUTPUT=filename : Redirect output, default is SYS$OUTPUT.< /MULTI_FILE : Allows info about more than one file.6 /WIDE : Print output in 132 cols format8 /WIDTH=n  : Print output in n columns output * (n>80 and n<4095)wwP@And now this desciption works for EVEN and ODD filename lengths.NBut there is one more problem. In the [.TEST] there is only one version of the1COMPARE.DIX file. What happens if there are more.LB$COPY [.TEST]COMPARE.DIX [.TEST]COMPARE.DIX !create a new version&$DIX TEST.DIR/DESCRIPTION=DIRECORY.DES#SC:DISPNAME25#VI:RBWt#CU:4,17HFile :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]TEST.DIR;1  X:#DA:ENote the offset changed to 0.4, (byte 0, bit 4).The cursor is at the S>position of the second nibble in the first byte in the record.Try #KEY_LEFT againt#KEY:LEFT:DISPMOV2#KEY:RIGHT:DISPMOV#KEY:ENTER:DISPTAB#o!#SC:DISPMOV2: Moved to offset 1.0F #PA:OF:1.0#HX:#DA:INote the offset changed to 1.0, (byte 1, bit 0). The cursor is now at theNdata byte with offset 1:/Try #KEY_RIGHT to return to the previous offsetp#KEY:RIGHT:DISPMOV1i#a#CH:Toggle binary/asciio#S C:DISPTAB:Start screen #PA:OF:0.0#HX:#DA:TTry the #KEY_NEXT_WINDOW key, and notice that the cursor is now in the ASCII part ofPthe display. Hit the #KEY_NEXT_WINDOW again and you are back in the HEX display./During this switch the offset remains the same. #KEY:NEXT_WINDOW:DISPTAB1e#KEY:ENTER:SCREEN_HLSC#KEY:PREV:DISP4Y#R%#SC:DISPTAB1:In ascii part of displayK#PA:AS:Y#HX:#DA:DIf you now use the #KEY_RIGHT key, you will see the offset increase.BHit the #KEY_NEXT_WINDOW  again to go back to the previous screen, or the #KEY_ENTER to continue#KEY:RIGHT:DISPTAB2w#KEY:NEXT_WINDOW:DISPTAB#KEY:ENTER:SCREEN_HLSB(#SC:DISPTAB2:In ascii part as offset 1.0#PA:OF:1#HX:#DA:0Hit the #KEY_LEFT key to go back to the offset 0#KEY:LEFT:DISPTAB1#KEY:ENTER:SCREEN_HLSD#CH:Data formats hex mode #SC:SCREEN_HLS:Hex longwords#PA:AS:N#PA:MO:H#MO:SI:Y#PA:WO:4#PA:OF:0#HX:#DA: g- This is an example of a Hex logword displayN6 You can use  the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BLS:8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLS 7 #KEY_DISPL_OCT to change the mode to Longword OctalK#KEY:KEY_DISPL_DEC:SCREEN_DLS 9 #KEY_DISPL_DEC to change the mode to Longword DecimalY#KEY:KEY_WORD:SCREEN_HWS, #KEY_WORD to change the mode to Word Hex#KEY:KEY_BYTE:SCREEN_HBS, #KEY_BYTE to change the mode to Byte Hex#SC:SCREEN_HWS:Hex words#PA:MO:H#MO:SI:Y #PA:WO:2#PA:OF:0#HX:#DA: * This is an example of a Hex word display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BWSl4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWSp3 #KEY_DISPL_OCT to change the mode to Word Octalo#KEY:KEY_DISPL_DEC:SCREEN_DWSl5 #KEY_DISPL_DEC to change the mode to Word DecimalX#KEY:KEY_LONG:SCREEN_HLS0 #KEY_LONG to change the mode to Longword Hex#KEY:KEY_BYTE:SCREEN_HBS,  #KEY_BYTE to change the mode to Byte Hex#SC:SCREEN_HBS"HEX bytes#PA:MO:H#MO:SI:Y#PA:WO:1#PA:OF:0#HX:#DA: W* This is an example of a Hex byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BBSl4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_OCT:SCREEN_OBS|3 #KEY_DISPL_OCT to change the mode to Byte Octalo#KEY:KEY_DISPL_DEC:SCREEN_DBS 5 #KEY_DISPL_DEC to change the mode to Byte Decimal #KEY:KEY_LONG:SCREEN_HLS0 #KEY_LONG to change the mode to Longword Hex#KEY:KEY_WORD:SCREEN_HWS, #KEY_WORD to change the mode to Word Hex#CH:Data formats octal mode #SC:SCREEN_OLS:Octal longwords#PA:MO:O#MO:SI:Y#PA:WO:4#PA:OF:0#HX:#DA: o0 This is an example of a Octal longword display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLS:5 #KEY_DISPL_HEX to change the mode to Longword Hexh#KEY:KEY_DISPL_BIN:SCREEN_BLSe8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_DEC:SCREEN_DLSS9 #KEY_DISPL_DEC to change the mode to Longword Decimale#KEY:KEY_WORD:SCREEN_OWS. #KEY_WORD to change the mode to Word Octal#KEY:KEY_BYTE:SCREEN_OBS. #KEY_BYTE to change the mode to Byte Octal#SC:SCREEN_OWS:Octal words#PA:MO:O#MO:SI:Y#PA:WO:2#PA:OF:0#HX:#DA: o, This is an example of a Octal word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWSN1 #KEY_DISPL_HEX to change the mode to Word Hex4#KEY:KEY_DISPL_BIN:SCREEN_BWSs4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_DEC:SCREEN_DWSh5 #KEY_DISPL_DEC to change the mode to Word Decimal #KEY:KEY_LONG:SCREEN_OLS2 #KEY_LONG to change the mode to Longword Octal#KEY:KEY_BYTE:SCREEN_OBS. #KEY_BYTE to change the mode to Byte Octal#SC:SCREEN_OBS:Octal bytes#PA:MO:O#MO:SI:Y#PA:WO:1#PA:OF:0#HX:#DA: K, This is an example of a Octal byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBSy1 #KEY_DISPL_HEX to change the mode to Byte Hex#KEY:KEY_DISPL_BIN:SCREEN_BBSH4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_DEC:SCREEN_DBSl5 #KEY_DISPL_DEC to change the mode to Byte DecimalS#KEY:KEY_LONG:SCREEN_OLS2 #KEY_LONG to change the mode to Longword Octal#KEY:KEY_WORD:SCREEN_OWS. #KEY_WORD to change the mode to Word Octal#CH:Data formats binary mode #SC:SCREEN_BLS:BInary longwordsd#PA:MO:B#MO:SI:Y#PA:WO:4#PA:OF:0#HX:#DA:1 This is an example of a Binary longword displayK6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLS 5 #KEY_DISPL_HEX to change the mode to Longword HexD#KEY:KEY_DISPL_OCT:SCREEN_OLS 7 #KEY_DISPL_OCT to change the mode to Longword Octals#KEY:KEY_DISPL_DEC:SCREEN_DLSK9 #KEY_DISPL_DEC to change the mode to Longword Decimalm#KEY:KEY_WORD:SCREEN_BWS/ #KEY_WORD to change the mode to Word Binaryn#KEY:KEY_BYTE:SCREEN_BBS/ #KEY_BYTE to change the mode to Byte BinaryD#SC:SCREEN_BWS:binary words #PA:MO:B#MO:SI:Y#PA:WO:2#PA:OF:0#HX:#DA: a- This is an example of a Binary word display:6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWSH1 #KEY_DISPL_HEX to change the mode to Word Hexh#KEY:KEY_DISPL_OCT:SCREEN_OWSd3 #KEY_DISPL_OCT to change the mode to Word Octalt#KEY:KEY_DISPL_DEC:SCREEN_DWSN5 #KEY_DISPL_DEC to change the mode to Word DecimalL#KEY:KEY_LONG:SCREEN_BLS3 #KEY_LONG to change the mode to Longword Binarye#KEY:KEY_BYTE:SCREEN_BBS/ #KEY_BYTE to change the mode to Byte BinaryC#SC:SCREEN_BBS:binary bytesr#PA:MO:B#MO:SI:Y#PA:WO:1#PA:OF:0#HX:#DA: c- This is an example of a Binary byte displayN6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBS:1 #KEY_DISPL_HEX to change the mode to Byte Hexo#KEY:KEY_DISPL_OCT:SCREEN_OBSa3 #KEY_DISPL_OCT to change the mode to Byte OctalY#KEY:KEY_DISPL_DEC:SCREEN_DBS 5 #KEY_DISPL_DEC to change the mode to Byte DecimalK#KEY:KEY_LONG:SCREEN_BLS3 #KEY_LONG to change the mode to Longword Binary#KEY:KEY_WORD:SCREEN_BWS/ #KEY_WORD to change the mode to Word Binaryr#CH:#SC:SCREEN_HLU#PA:MO:H#MO:SI:N#PA:WO:4#PA:OF:0#HX:#DA: g* This is an example of a Hex long display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BLU08 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLUw7 #KEY_DISPL_OCT to change the mode to Longword OctalE#KEY:KEY_DISPL_DEC:SCREEN_DLUh9 #KEY_DISPL_DEC to change the mode to Longword Decimal:#KEY:KEY_WORD:SCREEN_HWU, #KEY_WORD to change the mode to Word Hex#KEY:KEY_BYTE:SCREEN_HBU, #KEY_BYTE to change the mode to Byte Hex#SC:SCREEN_HWU#PA:MO:H#MO:SI:N#PA:WO:2#PA:OF:0#HX:#DA: d* This is an example of a Hex word display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BWUH4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWUh3 #KEY_DISPL_OCT to change the mode to Word OctalS#KEY:KEY_DISPL_DEC:SCREEN_DWUS5 #KEY_DISPL_DEC to change the mode to Word DecimalS#KEY:KEY_LONG:SCREEN_HLU0 #KEY_LONG to change the mode to Longword Hex#KEY:KEY_BYTE:SCREEN_HBU, #KEY_BYTE to change the mode to Byte Hex#SC:SCREEN_HBU#PA:MO:H#MO:SI:N#PA:WO:1#PA:OF:0#HX:#DA: g h* This is an example of a Hex byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_BIN:SCREEN_BBU:4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_OCT:SCREEN_OBUo3 #KEY_DISPL_OCT to change the mode to Byte Octal#KEY:KEY_DISPL_DEC:SCREEN_DBU5 #KEY_DISPL_DEC to change the mode to Byte DecimalY#KEY:KEY_LONG:SCREEN_HLU0 #KEY_LONG to change the mode to Longword Hex#KEY:KEY_WORD:SCREEN_HWU, #KEY_WORD to change the mode to Word Hex#SC:SCREEN_OLU#PA:MO:O#MO:SI:N#PA:WO:4#PA:OF:0#HX:#DA: g 0 This is an example of a Octal longword display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLU15 #KEY_DISPL_HEX to change the mode to Longword Hex #KEY:KEY_DISPL_BIN:SCREEN_BLU 8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_DEC:SCREEN_DLUD9 #KEY_DISPL_DEC to change the mode to Longword DecimalN#KEY:KEY_WORD:SCREEN_OWU. #KEY_WORD to change the mode to Word Octal#KEY:KEY_BYTE:SCREEN_OBU. #KEY_BYTE to change the mode to Byte Octal#SC:SCREEN_OWU#PA:MO:O#MO:SI:N#PA:WO:2#PA:OF:0#HX:#DA:  g, This is an example of a Octal word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWUF1 #KEY_DISPL_HEX to change the mode to Word Hexa#KEY:KEY_DISPL_BIN:SCREEN_BWUa4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_DEC:SCREEN_DWU 5 #KEY_DISPL_DEC to change the mode to Word DecimalY#KEY:KEY_LONG:SCREEN_OLU2 #KEY_LONG to change the mode to Longword Octal#KEY:KEY_BYTE:SCREEN_OBU. #KEY_BYTE to change the mode to Byte Octal#SC:SCREEN_OBU#PA:MO:O#MO:SI:N#PA:WO:1#PA:OF:0#HX:#DA: c g, This is an example of a Octal byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBUN1 #KEY_DISPL_HEX to change the mode to Byte Hexa#KEY:KEY_DISPL_BIN:SCREEN_BBUl4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_DEC:SCREEN_DBUR5 #KEY_DISPL_DEC to change the mode to Byte Decimal #KEY:KEY_LONG:SCREEN_OLU2 #KEY_LONG to change the mode to Longword Octal#KEY:KEY_WORD:SCREEN_OWU. #KEY_WORD to change the mode to Word Octal#SC:SCREEN_BLU#PA:MO:B#MO:SI:N#PA:WO:4#PA:OF:0#HX:#DA: o a1 This is an example of a Binary longword displayE6 You can use the following keys to change the display#KEY#:KEY_DISPL_HEX:SCREEN_HLUN5 #KEY_DISPL_HEX to change the mode to Longword Hexa#KEY:KEY_DISPL_OCT:SCREEN_OLU7 #KEY_DISPL_OCT to change the mode to Longword Octal#KEY:KEY_DISPL_DEC:SCREEN_DLUY9 #KEY_DISPL_DEC to change the mode to Longword DecimalK#KEY:KEY_WORD:SCREEN_BWU/ #KEY_WORD to change the mode to Word Binarya#KEY:KEY_BYTE:SCREEN_BBU/ #KEY_BYTE to change the mode to Byte Binaryo#SC:SCREEN_BWU#PA:MO:B#MO:SI:N#PA:WO:2#PA:OF:0#HX:#DA:  e. This is an 7:49.89 4404.0|UAF$Q_LASTLOGIN_N |17-NOV-1858 00:00:00.00P412.0|UAF$Q_PRIV |CMKRNL,CMEXEC,SYSNAM,GRPNAM,ALLSPOOL,IMPERSONATE,DIL |AGNOSE,LOG_IO,NOACNT,SETPRV,TMPMBX,WORLD,NETMBX*420.0|UAF$Q_DEFPRIV |TMPMBX,NETMBX...p #DV:4,6,8 #DV:4,29,8KSuppose we were in a different file with fieldcontents that are longer than Lthe screen width. See above in sysuaf the field UAF$Q_PRIV. Default DIX will<display the data in multiple lines, so all text is o n screenOIf you now type the #KEY_CHANGE_DISP key, DIX will format the data so that onlygMone line is displayed. Using the #LEFT and #RIGHT you can scroll horizontallyYin the display.A%#KEY:KEY_CHANGE_DISP:DISPADDITLAYOUT1 ;#SC:DISPADDITLAYOUT1:Layout change after layout has changed_#HX:#CU:6,303396.0|UAF$Q_LASTLOGIN_I |4-APR-2003 15:07:49.89 4404.0|UAF$Q_LASTLOGIN_N |17-NOV-1858 00:00:00.00P412.0|UAF$Q_PRIV |CMKRNL,CMEXEC,SYSNAM,GRPNAM,ALLSPOOL,IMPERSONATE,DI*420.!0|UAF$Q_DEFPRIV |TMPMBX,NETMBX...o #DV:4,6,7 #DV:4,29,7INote that now the display has changed. The line UAF$Q_PRIV is now only ont?one line, but you can move the display using the #RIGHT, try itHKYou can also use the #KEY_CHANGE_DISP key to return to the previous layout.D$#KEY:KEY_CHANGE_DISP:DISPADDITLAYOUT#KEY:RIGHT:DISPADDITLAYOUT2 #KEY:ENTER:DISPADDITLAYOUT2u:#SC:DISPADDITLAYOUT2:Layout change after horizontal scroll#HX:#CU:6,30)396.0|UAF$Q_LASTLOGIN_I | 15:07:49".89 *404.0|UAF$Q_LASTLOGIN_N |8 00:00:00.00P412.0|UAF$Q_PRIV |XEC,SYSNAM,GRPNAM,ALLSPOOL,IMPERSONATE,DIAGNOSE,LOG 420.0|UAF$Q_DEFPRIV |MBX...o #DV:4,6,7 #DV:4,29,74Note that the whole screen has scrolled to the left.5Try it again with the #KEY_RIGHT or the #KEY_LEFT key1#KEY:LEFT:DISPADDITLAYOUT1#KEY:RIGHT:DISPADDITLAYOUT3 @#SC:DISPADDITLAYOUT3:Layout change after horizontal scroll again#HX:#CU:6,30396.0|UAF$Q_LASTLOGIN_I |89 404.0|UAF$Q_LASTLOGIN_N |.00P412.0|UAF$Q_PRIV |,GRPNAM,ALLSPOOL,IMPERSONATE,DIAGNOSE,LOG_IO,NOACNT420.0|UAF$Q_DEFPRIV ...o #DV:4,6,7b #DV:4,29,7%You can move back using the #LEFT key#KEY:LEFT:DISPADDITLAYOUT2#KEY:ENTER:DISPADDITLAYOUT2l#SC:LAST This is the last display.< Type #KEY_ENTER or #KEY_EXIT to stop or #PREV to go back to the previous screen.Dwwsiz:644 Offs:0.0 Data:Norm Recnr:Unknown RFA:(4,1)4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#V$example of a Binary word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWUD1 #KEY_DISPL_HEX to change the mode to Word HexP#KEY:KEY_DISPL_OCT:SCREEN_OWU3 #KEY_DISPL_OCT to change the mode to Word Octal #KEY:KEY_DISPL_DEC:SCREEN_DWUo5 #KEY_DISPL_DEC to change the mode to Word DecimalX#KEY:KEY_LONG:SCREEN_BLU3 #KEY_LONG to change the mode to Longword BinaryD#KEY:KEY_BYTE:SCREEN_BBU/ #KEY_BYTE to change the mode to Byte Binarya%#SC:SCREEN_BBU#PA:MO:B#MO:SI:N#PA:WO:1#PA:OF:0#HX:#DA: m - This is an example of a Binary byte display 6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBUc1 #KEY_DISPL_HEX to change the mode to Byte HexR#KEY:KEY_DISPL_OCT:SCREEN_OBUn3 #KEY_DISPL_OCT to change the mode to Byte Octalm#KEY:KEY_DISPL_DEC:SCREEN_DBU:5 #KEY_DISPL_DEC to change the mode to Byte Decimaln#KEY:KEY_LONG:SCREEN_BLU3 #KEY_LONG to change the mode to Lo&ngword Binaryt#KEY:KEY_WORD:SCREEN_BWU/ #KEY_WORD to change the mode to Word Binaryt#CH:DIsplay decimal unsigned(#SC:SCREEN_DLU:Decimal longword unsigned#PA:MO:D#MO:SI:N#PA:WO:4#PA:OF:0#HX:#DA: Y S9 This is an example of a Decimal signed longword displayo6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLUl5 #KEY_DISPL_HEX to change the mode to Longword Hex #KEY:KEY_DISPL_BIN:SCREEN_BLUC8 #KEY_DISPL_BIN to change the mode to Lon'gword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLUU7 #KEY_DISPL_OCT to change the mode to Longword OctalP#KEY:KEY_WORD:SCREEN_DWU0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_BYTE:SCREEN_DBU0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES to change the mode to signed , decimalS$#SC:SCREEN_DWU:decimal word unsigned#PA:MO:D#MO:SI:N#PA:WO:2#PA:OF:0#HX:#DA: T R5 This is an example of a Decimal signed word display 6 You can (use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWUY1 #KEY_DISPL_HEX to change the mode to Word Hexo#KEY:KEY_DISPL_BIN:SCREEN_BWUM4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWU 3 #KEY_DISPL_OCT to change the mode to Word Octald#KEY:KEY_LONG:SCREEN_DLU4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_BYTE:SCREEN_DBU0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES t)o change the mode to signed , decimale%#SC:SCREEN_DBU:Decimal bytes unsignedS#PA:MO:D#MO:SI:N#PA:WO:1#PA:OF:0#HX:#DA: m 5 This is an example of a Decimal signed byte display 6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBUR1 #KEY_DISPL_HEX to change the mode to Byte Hex:#KEY:KEY_DISPL_BIN:SCREEN_BBUa4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_OCT:SCREEN_OBUt3 #KEY_DISPL_OCT to change the mode to Byte Octa*ll#KEY:KEY_LONG:SCREEN_DLU4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_WORD:SCREEN_DWU0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES to change the mode to signed , decimalX#CH:DIsplay decimal signed&#SC:SCREEN_DLS:Decimal longword signed#PA:MO:D#MO:SI:Y#PA:WO:4#PA:OF:0#HX:#DA: K K; This is an example of a Decimal unsigned longword displayd6 You can use the following keys to change the display#KEY:KEY_DIS +PL_HEX:SCREEN_HLSc5 #KEY_DISPL_HEX to change the mode to Longword Hex #KEY:KEY_DISPL_BIN:SCREEN_BLSK8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLSE7 #KEY_DISPL_OCT to change the mode to Longword Octal#KEY:KEY_WORD:SCREEN_DWS0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_BYTE:SCREEN_DBS0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimalD"#SC:SCREEN,_DWS:Decimal word signed#PA:MO:D#MO:SI:Y#PA:WO:2#PA:OF:0#HX:#DA: L S7 This is an example of a Decimal unsigned word display 6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWSY1 #KEY_DISPL_HEX to change the mode to Word Hexo#KEY:KEY_DISPL_BIN:SCREEN_BWSM4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWSn3 #KEY_DISPL_OCT to change the mode to Word Octal:#KEY:KEY_LONG:SCREEN_DLS4 #KEY_LONG to cha-nge the mode to Longword Decimal#KEY:KEY_BYTE:SCREEN_DBS0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimalF"#SC:SCREEN_DBS:Decimal byte signed#PA:MO:D#MO:SI:Y#PA:WO:1#PA:OF:0#HX:#DA: A 7 This is an example of a Decimal unsigned byte display16 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBS1 #KEY_DISPL_HEX to change the mode to Byte Hex6#KEY:KEY_DIS/PL_BIN:SCREEN_BBSy4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_OCT:SCREEN_OBSe3 #KEY_DISPL_OCT to change the mode to Byte Octaln#KEY:KEY_LONG:SCREEN_DLS4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_WORD:SCREEN_DWS0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimalc#CH:Change to interpreted mode#SC:TOINTERP:Raw display#PA:MO:H#MO:SI:Y#PA:WO:4#PA:OF:0#H1).FILEID>|(7469,19,0)P.Type #KEY_SWAP_DIS again to return to RAW mode,For more info about the interpreted mode see6the demo about "Example key usage in description mode"#KEY:KEY_SWAP_DIS:TOINTERP#CH:Last display#SC:LAST:Last screen This is the last screen0 Hit #KEY_PREV to go back to the previous screen of #KEY_EXIT to exit this demo#KEY:PREV:TOINTERPww0X:#DA: u6If you type the #KEY_SWAP_DIS key, DIX will change to .interpreted mode (if a description is present)#KEY:KEY_SWAP_DIS:TOINTERP1r!#SC:TOINTERP1:Interpreted display 7#PA:DE:DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;115(.DIR)n#HX:#KP:7e#CU:4,17 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COMi10|V(1).VERSION|512|V(1).FILEID>|(7414,49,0) 18|V(2).VERSION|4m20|V(2).FILEID>|(7409,22,0)f26|V(3).VERSION|3028|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|2T36|V(4).FILEID>|(7469,19,0)D.Type #KEY_SWAP_DIS again to return to RAW mode,For more info about the interpreted mode see6the demo about "Example key usage in description mode"#KEY:KEY_SWAP_DIS:TOINTERP#CH:Last display#SC:LAST:Last screen This is the last screen0 Hit #KEY_PREV to go back to the previous screen of #KEY_EXIT to exit this demoX#KEY:PREV:TOINTERPww8|COUPLE(1).FILEID>|(26091,10,0)24|COUPLE(2).VERSION|5 26|COUPLE(2).FILEID>|(13784,7,0) #DV:4,3,10 #DV:4,21,10H2Notice the > marks after the FILEID's. This means that DIX has seen linkinformation for this field.INow if you move to the line with the fileid and then type PF1-Z (follow) -we get the following display with a question.#KEY:KEY_FOLLOW_LINK:DISPENH4 #SC:DISPENH4#VI:RBW#KP:14#CO:9,66HFile :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:32 Offs:0 Data:Norm Recnr:1 RFa:(1,0)<Des file :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES3;9#VI:8In the message display, DIX tells us what the action is.DIn the questions-answers display, DIX asks us if we want to open theE[000000]INDEXF.SYS file. If we say N, we return to the normal display>If we say Y, DIX will now open the INDEXF.SYS, and readin and display record 26795And the result is shown belowI#QU:File [000000]INDEXF.SYS not (yet) opened for read, open it [y]/n: | =#ME:Following link to file "[000000]INDEXF.SYS", record 26975#KEY:Y:DISPENH5 4#SC:DISPENH5#VI:RBW#cU:4,26HFile :SYS$SYSDEVICE:[000000]INDEXF.SYS;1 Fix/SeqERecsiz:512 Offs:0.0 Data:Norm Recnr:26975 RFa:(26975,0);Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;138(INDEXF)#VI: 0.0|ID_OFFSET |40 1.0|MAP_OFFSET |100 2.0|ACL_OFFSET |255 3.0|SES_OFFSET |255 4.0|SEG_NUM |0 6.0|STRUCT_LEV_MIN |1 7.0|STRUCT_LEV_MAJ |5% 8.0|FILE_ID |(26091,9,0)! 154.0|EXT_FID >|(0,0,0) 20.0|REC_ATTR.RECTYP |2 21.0|REC_ATTR.RECATTR |2 22.0|REC_ATTR.RECSIZ |64 32.0|REC_ATTR.EOFBYTE |134 #DV:4,6,16 #DV:4,26,16#KP:7EThe header has changed, so now we are looking at the indexf.sys file.FWe can now look at this record just as if we had opened the INDEXF.SYSFdirectly. This will only work if you have privileges, since INDEXF.SYS'has no read access for unprivved users.<Typing PF4-Z (backfollow) returns us to the original displ6ay#KEY:KEY_BACK_LINK:DISPENH6 #SC:DISPENH6#VI:RBW#CU:4,22HFile :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:32 Offs:0 Data:Norm Recnr:1 RFa:(1,0)<Des file :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;5#VI: 0|VERSIONLIMIT |NOLIMIT 2|FLAGS |0 3|FILENAME |COMPARE.DIX16|COUPLE(1).VERSION|6!18|COUPLE(1).FILEID>|(26091,10,0)24|COUPLE(2).VERSION|5 26|COUPLE(2).FILEID>|(13784,7,0) #DV:4,3,10 #DV:3,21,170'And we are back in the original display #SC:TRBFILEKNow there is only one more item to handle. On the command line we specifiedJ/DESCR="descriptionfile". We can store this desciption file in a .TLB fileKso DIX can find the description even if we do not add the /DESCR qualifier.GThere is a SYSTEMWIDE DIX_DES.TLB file in the same directory as the DIXNexecutable. We can insert a module in this file that contains the description.JDIX will look in the DIX_DES.TLB file whenever a file is8 opened and see if-there is a description that matches the file.8DIX will match the filename with the name of the module.DThe module name may contain a full filespec with wildcards. DIX willMmatch the device,directory,name,type and version. Parts not in the MODULENAMENalways match. So if we give the module the name ".DIR", this module will matchall directory files.To include the file use the5$LIBRARY/INSERT DIX_DES.TLB DIRECTORY.DES/NAME=".DIR"JIf you do not have write access to the D9IX_DES.TLB file you can also use a8private .TLB file, see the HELP of DIX for more details.9After inserting the DIRECTORY.DES file in the .TLB file, :and you start DIX without the /DESCRIPTION qualifier, DIX 2will find the .DIR entry and display the following $DIX TEXT.DIR#SC:LAST#VI:RBW#CU:4,22HFile :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:32 Offs:0 Data:Norm Recnr:1 RFa:(1,0)9Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;13:8(.DIR)#VI: 0|VERSIONLIMIT |NOLIMIT 2|FLAGS |0 3|FILENAME |COMPARE.DIX16|COUPLE(1).VERSION|6!18|COUPLE(1).FILEID>|(26091,10,0)24|COUPLE(2).VERSION|5 26|COUPLE(2).FILEID>|(13784,7,0) #DV:4,3,10 #DV:3,21,10#Note that headerline 3 changed from<Des file :SYS$SYSDEVICE:[STUBBE.PROGRAMS.DIX]DIRECTORY.DES;5to9Des file :DSA0:[STUBBE.PROGRAMS.DIX]DIX_DES.TLB;138(.DIR)AThe last display means the ".DIR" module of the DIX_DES.TLB file.This is the last scr;eenww<........... 0000018D 000 000 000 023 035 055 -..... 0000024 , This is an example of a Octal byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBU1 #KEY_DISPL_HEX to change the mode to Byte Hex#KEY:KEY_DISPL_BIN:SCREEN_BBU4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEY:KEY_DISPL_DEC:SCREEN_DBU5 #KEY_DISPL_DEC to change the mode to Byte Decimal#KEY:KEY_LONG:SCREEN_OLU2 #KEY_LONG to c=hange the mode to Longword Octal#KEY:KEY_WORD:SCREEN_OWU. #KEY_WORD to change the mode to Word Octal#SC:SCREEN_BLU#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:BINARYRecnr:1 RFA:(1,0)#CU:4,32% 3 2 1 0 0123#VI:-00000101000000000111111111111111 .... 0000000-01001111010000110010111001000001 A.CO 0000004-00000000000001010000000001001101 M... 0000008-000000000011000100011100111101>10 .1. 000000C-00000000000001000000000000000000 .... 0000010-00000000000101100001110011110001 ... 0000014-00000000000000110000000000000000 .... 0000018-00000000000010000001101111011000 ... 000001C-00000000000000100000000000000000 .... 0000020-00000000000100110001110100101101 -... 0000024-00000000000000000000000000000000 .. 0000028 1 This is an example of a Binary longword display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLU5 ? #KEY_DISPL_HEX to change the mode to Longword Hex#KEY:KEY_DISPL_OCT:SCREEN_OLU7 #KEY_DISPL_OCT to change the mode to Longword Octal#KEY:KEY_DISPL_DEC:SCREEN_DLU9 #KEY_DISPL_DEC to change the mode to Longword Decimal#KEY:KEY_WORD:SCREEN_BWU/ #KEY_WORD to change the mode to Word Binary#KEY:KEY_BYTE:SCREEN_BBU/ #KEY_BYTE to change the mode to Byte Binary#SC:SCREEN_BWU#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs@:0 Data:BINARYRecnr:1 RFA:(1,0)#CU:4,33& 3 2 1 0 0123#VI:.0000010100000000 0111111111111111 .... 0000000.0100111101000011 0010111001000001 A.CO 0000004.0000000000000101 0000000001001101 M... 0000008.0000000000110001 0001110011110110 .1. 000000C.0000000000000100 0000000000000000 .... 0000010.0000000000010110 0001110011110001 ... 0000014.0000000000000011 0000000000000000 .... 0000018.0000000000001000 0001101111011000 ... 000001C.0000000000000010A 0000000000000000 .... 0000020.0000000000010011 0001110100101101 -... 0000024. 0000000000000000 .. 0000028 . This is an example of a Binary word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWU1 #KEY_DISPL_HEX to change the mode to Word Hex#KEY:KEY_DISPL_OCT:SCREEN_OWU3 #KEY_DISPL_OCT to change the mode to Word Octal#KEY:KEY_DISPL_DEC:SCREEN_DWU5 #KEY_DISPL_DEC to change the mode to Word Decimal#KEY:KEYB_LONG:SCREEN_BLU3 #KEY_LONG to change the mode to Longword Binary#KEY:KEY_BYTE:SCREEN_BBU/ #KEY_BYTE to change the mode to Byte Binary#SC:SCREEN_BBU#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:BINARYRecnr:1 RFA:(1,0)#CU:4,53< 5 4 3 2 1 0 012345#VI:D00101110 01000001 00000101 00000000 01111111 11111111 ....A. 0000000D00000000 00000101 00000000 01001101 010011C11 01000011 COM... 0000006D00000000 00000000 00000000 00110001 00011100 11110110 .1... 000000CD00000000 00010110 00011100 11110001 00000000 00000100 ..... 0000012D00011011 11011000 00000000 00000011 00000000 00000000 ..... 0000018D00000000 00000010 00000000 00000000 00000000 00001000 ...... 000001ED00000000 00000000 00000000 00010011 00011101 00101101 -..... 0000024 - This is an example of a Binary byte display6 You can use the following keys to change the display#KEY:KEY_DISPLD_HEX:SCREEN_HBU1 #KEY_DISPL_HEX to change the mode to Byte Hex#KEY:KEY_DISPL_OCT:SCREEN_OBU3 #KEY_DISPL_OCT to change the mode to Byte Octal#KEY:KEY_DISPL_DEC:SCREEN_DBU5 #KEY_DISPL_DEC to change the mode to Byte Decimal#KEY:KEY_LONG:SCREEN_BLU3 #KEY_LONG to change the mode to Longword Binary#KEY:KEY_WORD:SCREEN_BWU/ #KEY_WORD to change the mode to Word Binary#CH:DIsplay decimal unsigned(#SC:SCREEN_DLU:Decimal longword unsigned#VI:BRW HFile :USER50:[STUBBF.PROEGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:SIGNEDRecnr:1 RFA:(1,0)#CU:4,47@ C 8 4 0 0123456789ABCDEF#VI:H 3218678 327757 1329802817 83918847 ....A.COM....1. 0000000H 531416 196608 1449201 262144 .............. 0000010H 0 1252653 131072 ....-..... 0000020 9 This is an example of a Decimal signed longword display6 You can use thFe following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HLU5 #KEY_DISPL_HEX to change the mode to Longword Hex#KEY:KEY_DISPL_BIN:SCREEN_BLU8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLU7 #KEY_DISPL_OCT to change the mode to Longword Octal#KEY:KEY_WORD:SCREEN_DWU0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_BYTE:SCREEN_DBU0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRESG to change the mode to signed , decimal$#SC:SCREEN_DWU:decimal word unsigned#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:SIGNEDRecnr:1 RFA:(1,0)#CU:4,55H E C A 8 6 4 2 0 0123456789ABCDEF#VI:O 49 7414 5 77 20291 11841 1280 32767 ....A.COM....1. 0O 8 7128 3 0 22 7409 4 0 .............. 16O H 0 19 7469 2 0 ....-..... 32 5 This is an example of a Decimal signed word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWU1 #KEY_DISPL_HEX to change the mode to Word Hex#KEY:KEY_DISPL_BIN:SCREEN_BWU4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWU3 #KEY_DISPL_OCT to change the mode to Word Octal#KEY:KEY_LONG:SCREEN_DLU4 #KEY_LONG to change the mode to LongIword Decimal#KEY:KEY_BYTE:SCREEN_DBU0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES to change the mode to signed , decimal%#SC:SCREEN_DBU:Decimal bytes unsigned#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:SIGNEDRecnr:1 RFA:(1,0)#CU:4,390 7 6 5 4 3 2 1 0 01234567#VI:8 79 67 46 65 5 0 127 -1 ....A.CO 08 0 49 28J -10 0 5 0 77 M....1. 88 0 22 28 -15 0 4 0 0 ....... 168 0 8 27 -40 0 3 0 0 ....... 248 0 19 29 45 0 2 0 0 ....-... 32 5 This is an example of a Decimal signed byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBU1 #KEY_DISPL_HEX to change the mode to Byte Hex#KEY:KEY_DISPL_BIN:SCREEN_BBU4 #KEY_DISPL_BIN to change the mode to Byte BinaKry#KEY:KEY_DISPL_OCT:SCREEN_OBU3 #KEY_DISPL_OCT to change the mode to Byte Octal#KEY:KEY_LONG:SCREEN_DLU4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_WORD:SCREEN_DWU0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_COMPRES:SCREEN_DS7 #KEY_COMPRES to change the mode to signed , decimal#CH:DIsplay decimal signed&#SC:SCREEN_DLS:Decimal longword signed#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 L Data:UNSIGNRecnr:1 RFA:(1,0)#CU:4,47A C 8 4 0 0123456789ABCDEF#VI:H 3218678 327757 1329802817 83918847 ....A.COM....1. 0H 531416 196608 1449201 262144 .............. 16H 0 1252653 131072 ....-..... 32 ; This is an example of a Decimal unsigned longword display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_MHLS5 #KEY_DISPL_HEX to change the mode to Longword Hex#KEY:KEY_DISPL_BIN:SCREEN_BLS8 #KEY_DISPL_BIN to change the mode to Longword Binary#KEY:KEY_DISPL_OCT:SCREEN_OLS7 #KEY_DISPL_OCT to change the mode to Longword Octal#KEY:KEY_WORD:SCREEN_DWS0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_BYTE:SCREEN_DBS0 #KEY_BYTE to change the mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimal"#SC:SCREEN_DWS:Decimal wNord signed#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:UNSIGNRecnr:1 RFA:(1,0)#CU:4,55H E C A 8 6 4 2 0 0123456789ABCDEF#VI:O 49 7414 5 77 20291 11841 1280 32767 ....A.COM....1. 0O 8 7128 3 0 22 7409 4 0 .............. 16O 0 19 7469 2 0 ....-..... 32 7O This is an example of a Decimal unsigned word display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HWS1 #KEY_DISPL_HEX to change the mode to Word Hex#KEY:KEY_DISPL_BIN:SCREEN_BWS4 #KEY_DISPL_BIN to change the mode to Word Binary#KEY:KEY_DISPL_OCT:SCREEN_OWS3 #KEY_DISPL_OCT to change the mode to Word Octal#KEY:KEY_LONG:SCREEN_DLS4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_BYTE:SCREEN_DBS0 #KEY_BYTE to change thPe mode to Byte Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimal"#SC:SCREEN_DBS:Decimal byte signed#VI:BRW HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:UNSIGNRecnr:1 RFA:(1,0)#CU:4,391 7 6 5 4 3 2 1 0 01234567#VI:8 79 67 46 65 5 0 127 255 ....A.CO 08 0 49 28 246 0 5 0 77 M....1. 88 0 22 28 241 Q 0 4 0 0 ....... 168 0 8 27 216 0 3 0 0 ....... 248 0 19 29 45 0 2 0 0 ....-... 328 0 0 .. 40 7 This is an example of a Decimal unsigned byte display6 You can use the following keys to change the display#KEY:KEY_DISPL_HEX:SCREEN_HBS1 #KEY_DISPL_HEX to change the mode to Byte Hex#KEY:KEY_DISPL_BIN:SCREEN_BBS4 #KEY_DISPL_BIN to change the mode to Byte Binary#KEYR:KEY_DISPL_OCT:SCREEN_OBS3 #KEY_DISPL_OCT to change the mode to Byte Octal#KEY:KEY_LONG:SCREEN_DLS4 #KEY_LONG to change the mode to Longword Decimal#KEY:KEY_WORD:SCREEN_DWS0 #KEY_WORD to change the mode to Word Decimal#KEY:KEY_COMPRES:SCREEN_DU9 #KEY_COMPRES to change the mode to unsigned , decimal#CH:Change to interpreted mode#SC:TOINTERP:Raw display#VI:BRW#CU:4,35HFile :USER50:[STUBBF.PROGRAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0.0 S Data:Hex Recnr:1 RFA:(1,0)4 F E D C B A 9 8 7 6 5 4 3 2 1 0 0123456789ABCDEF#VI:<00311CF6 0005004D 4F432E41 05007FFF ....A.COM....1. 0<00081BD8 00030000 00161CF1 00040000 .............. 16< 0000 00131D2D 00020000 ....-..... 326If you type the #KEY_SWAP_DIS key, DIX will change to .interpreted mode (if a description is present)#KEY:KEY_SWAP_DIS:TOINTERP1!#SC:TOINTERP1:Interpreted display#KP:7#VI:BRWHFile :USER50:[STUBBF.PROGRTAMS.DIX]TEST.DIR;1 Var/SeqARecsiz:42 Offs:0 Data:Norm Recnr:1 RFA:(1,0):Des file :DSA50:[STUBBF.PROGRAMS.DIX]DIX_DES.TLB;115(.DIR)#CU:4,17#VI: 0|VERSLIM |NONE 2|FLAGS | 3|NAME |A.COM10|V(1).VERSION|512|V(1).FILEID>|(7414,49,0)18|V(2).VERSION|420|V(2).FILEID>|(7409,22,0)26|V(3).VERSION|328|V(3).FILEID>|(7128,8,0)34|V(4).VERSION|236|V(4).FILEID>|(7469,19,0).Type #KEY_SWAP_DIS again to return to RAW mode,For more info about the interpreted mode see6the demo about "Example key usage in description mode"#KEY:KEY_SWAP_DIS:TOINTERP#CH:Last display#SC:LAST:Last screen This is the last screen0 Hit #KEY_PREV to go back to the previous screen of #KEY_EXIT to exit this demo#KEY:PREV:TOINTERPww