1 ! FILE NAME: DTREE.BAS ! AUTHOR: R.W.MCDOUGALL ! CREATION DATE: ! REVISION DATE: 01/18/88 rwm special case for 000000.dir added ! REVISION DATE: 12/30/87 ! LOCATION: HSTC ! MAIN FRAME: VAX 11/780 ! SYSTEM: VAX/VMS V4.1 ! LANGUAGE: VAX-11 BASIC V2.3 ! DESCRIPTION: ! --------------------------------------------------------------------- EXTERNAL INTEGER FUNCTION LIB$FIND_FILE EXTERNAL INTEGER FUNCTION CLI$PRESENT, CLI$GET_VALUE COMMON A$ = 80% ON ERROR GOTO ERROR_HANDLER YES% = -1% NO% = 0% ! Y% = 99018 fail ! Y% = 65537 pass X%=0% ! Is output going to a file? IF CLI$GET_VALUE('OUTPUT',BUFFER$) AND 1% THEN ELSE BUFFER$ = "sys$output:" END IF OPEN buffer$ FOR OUTPUT AS FILE #1%, RECORDSIZE 264% ! ! FIND_ROOT: ! ! PRINT #1%, "DTREE V2.1 R.W.M. 01/18/88" !Establish default directory Y% = LIB$FIND_FILE("*.*",FIL$,X%) !dua0:[000000]000000.dir ! ^root^ dir_spec$,FIL$ = LEFT$(FIL$,(INSTR(0,FIL$,"]")-1%)) LETER$ = RIGHT$(FIL$,LEN(FIL$)) WHILE (LETER$<>"." AND LETER$ <>"[") ROOT$ = LETER$ + ROOT$ FIL$ = LEFT$(FIL$,LEN(FIL$)-1%) LETER$ = RIGHT$(FIL$,LEN(FIL$)) NEXT ! ! LOAD_DTREE: ! ! TRAVCNT% = 1% FRM$ = " -----------" CDR$ = MID(FIL$,POZ%,LLN%) MID(FRM$,3,LEN(ROOT$)+1%) = ROOT$+" " OLINE$ = FRM$ CALL TRAVERSE(dir_spec$,TRAVCNT%,oline$) PRINT #1%, "[EOT]" GOTO BOT_CODE ! ! ERROR_HANDLER: ! ! PRINT #1%, "Error #";ERR;" on line ";erl;" at point ";erp$ PRINT #1%, ERT$(ERR) RESUME BOT_CODE ! ! BOT_CODE: ! ! CLOSE #1%, #99% END 2 ! FILE NAME: TRAVERSE.BAS ! AUTHOR: ! CREATION DATE: ! REVISION DATE: ! LOCATION: HSTC ! MAIN FRAME: VAX 11/780 ! SYSTEM: VAX/VMS V4.4 ! LANGUAGE: VAx-11 BASIC V2.4 ! DESCRIPTION: ! --------------------------------------------------------------------- SUB TRAVERSE(DIR_SPEC$,TRAVCNT%,oline$) on error goto error_handler EXTERNAL INTEGER FUNCTION LIB$FIND_FILE EXTERNAL INTEGER FUNCTION DIRTEST DEF FNKILL_TRAIL$(A$) A$ = LEFT$(A$,LEN(A$)-1) WHILE RIGHT$(A$,LEN(A$))="-" FNKILL_TRAIL$ = A$ END DEF fil$ = "[000000]000000.DIR" while mid(fil$,instr(0%,fil$,"["),18)="[000000]000000.DIR" cnt = cnt + 1 Y% = LIB$FIND_FILE(dir_spec$+"]*.DIR;1",FIL$,X%) next WHILE (Y% = 65537) DIR% = DIRTEST(LEN(FIL$) BY VALUE, FIL$ BY REF) IF DIR% THEN POZ% = INSTR(0%,FIL$,"]")+1% LLN% = INSTR(0%,FIL$,".DIR;1")-POZ% FRM$ = FORMAT$(TRAVCNT%,"<0>#")+" ----------" CDR$ = MID(FIL$,POZ%,LLN%) mid(FRM$,4,LLN%+1%) = CDR$+" " OLINE$ = OLINE$ + FRM$ CALL TRAVERSE(dir_spec$+"."+CDR$,TRAVCNT%+1%,oline$) END IF MID(OLINE$,I,1) = "|" & IF MID(OLINE$,I,1) = " " & FOR I =14 TO LEN(edit$(oline$,128%)) step 13 PRINT #1%, FNKILL_TRAIL$(OLINE$) IF OLINE$<>"" oline$ = space$(TRAVCNT%*13%) Y% = LIB$FIND_FILE(dir_spec$+"]*.DIR;1",FIL$,X%) NEXT EXIT SUB ERROR_HANDLER: print ert$(err) print erp$ if erp$ <> "" resume bot_code BOT_CODE: END SUB