& ! Find the DCN in the WORD%'th position in the & ! retrieval blockette. & ! Word zero is the pointer to the next retrieval & ! blockette. When I get to word zero I print out & ! the different forms in which the pointer to the & ! next retrieval blockette can be interpretted. & ! & ! The DCN would be used in the case of accessing & ! the UFD non-file structured. & ! The FNLINK% version is used to access the UFD in & ! form of an array (as I have done in this program). & 1130 IF WORD% <> 0% & THEN & PRINT \ & PRINT "Word";WORD%;"points to DCN";DCN% \ & PRINT & ! If the word is not the zero word of the retrieval & ! blockette then it is reffering to a DCN on the disk. & ! Print where the DCN is pointing to. & 1140 IF DCN% <> 0% AND WORD% <> 0% AND PRINT.IT% = YES% & THEN & GET #3%, BLOCK DCN% \ & PRINT DISK.CLUSTER$ & ! If the DCN% is not pointing to DCN zero and DCN% & ! is not the pointer to the next retrieval blockette & ! and I have been asked to print out the file, then & ! I do a GET on chanel #3% and print out the cluster. & 1160 NEXT WORD% & ! Do it again. & 1180 RB% = FNLINK%(U%(RB%,0%)) \ & IF RB% = 0% & THEN & GOTO 1200 & ELSE & GOTO 1100 & 1200 CLOSE #9% \ & CLOSE #3% & ! Close the UFD. & ! Close the disk. & 17999 GOTO 32767 & 18000 ! & ! This SUBROUTINE sets up the values to some & ! constant variabales. & ! & 18010 BELL$ = CHR$(7%) + CHR$(7%) + CHR$(7%) & 18020 YES% = -1% \ & TRUE% = -1% \ & NO% = 0% \ & FALSE% = 0% & 18200 RETURN & ! Return from the MAIN SUBROUTINE. & 19000 ! & ! ERROR ROUTINE & ! & 19010 ! * * * * * * * & ! Expected Errors WITHOUT error line numbers & ! * * * * * * * & 19020 ! ^C error \ & IF ERR = 28 & THEN & Z$ = SYS(CHR$(6%)+CHR$(-7%)) \ & CLOSE #9% \ & CLOSE #3% \ & RESUME 100 & 19030 ! ^Z error \ & IF ERR = 11 & THEN & CLOSE #9% \ & CLOSE #3% \ & RESUME 32767% & 19980 ! * * * * * * * & ! Unexpected errors & ! * * * * * * * & 19985 Z$ = SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)) & 19990 ERROR$ = RIGHT(Z$,3%) & 19995 PRINT BELL$ \ & PRINT " Oh no !! Not another "; ERROR$ \ & PRINT " at line";ERL;"in program DCN !!" & 19999 GOTO 32767 & 22000 ! & ! This function finds the NB of files. & ! & 22010 DEF* FNNB%(FILE.FN$) & 22030 FILE.FN$ = CVT$$(FILE.FN$,2%+32%) \ & FILE.UFD$ = "" \ & FOUND.FILE% = 0% & ! Convert the user input to upper case with no spaces. & ! Initialize the UFD file name string. & ! Initialize the file found flag. & 22050 CLU% = U%(31%,0%) \ & NB% = FNLINK%( U%(0%,0%) ) & ! Find the clustersize of the UFD. & ! Find the pointer to the first name blockette. & 22070 UNTIL FOUND.FILE% = TRUE% \ & IF NB% = 0% & THEN & PRINT "?Can't find file ";FILE.FN$ \ & GOTO 32767 & ! Loop until we find the file in the UFD. & ! If we reach the end of the UFD & ! then & ! we could not find the file. & 22090 FILE.UFD$ = RAD$(U%(NB%,1%)) + RAD$(U%(NB%,2%)) + & "." + RAD$(U%(NB%,3%)) \ & FILE.UFD$ = CVT$$(FILE.UFD$,2%) \ & IF FILE.UFD$ = FILE.FN$ & THEN & FOUND.FILE% = TRUE% & ELSE & NB% = FNLINK%( U%(NB%,0%) ) \ & NEXT & ! Build the file name string. & ! Get rid of all the spaces in the file name string. & ! If the file names match & ! then & ! Set the file found flag. DCN BAS[.050020]DCN .BAS[.050020]    X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@ggh<i|o<m<4p<p<k|Zn<l fr rwx<x<x<x޺<w@]@@fjnr]Ze@@|> | |v<H|  |  |xz|  |zt f r   < &^ @&@'*/V,"?Lh:hmBmz|z{x`y~|fN|@@|@͂|@ ݃ƃ<ns<|Ŏ |️|ep|u|-@率|<ᄇ2ֻr||ZRM | ntB|xyvZw|J=|R>|J? nnaa|bddf& ! else & ! Find the next name blockette. & ! Look at next name blockette. & 22100 FNNB% = NB% \ & FNEND & 22250 DEF* FNLINK%(L%) = ((( L% AND 3584%) / 512% ) * CLU% & + ( SWAP%( L% AND -4096% ) / 16% )) * 32% & + (( L% AND 496%) / 16%) & 32767 END &