home *** CD-ROM | disk | FTP | other *** search
/ Phoenix CD 2.0 / Phoenix_CD.cdr / 11a / dirchart.zip / DIRCHART.BAS < prev    next >
BASIC Source File  |  1988-09-22  |  4KB  |  115 lines

  1. 10 REM
  2. 20 REM DIRECTORY CHART PROGRAM
  3. 30 REM written by John P. Lytle
  4. 40 REM date written 07/28/88
  5. 50 REM
  6. 60 CLS: KEY OFF
  7. 70 CLEAR: COLOR 6, 1: FILE$ = "C:\TREE.LST"
  8. 80 ROW = 0: COL = 1
  9. 90 GOSUB 170
  10. 100 GOSUB 360
  11. 110 GOSUB 470
  12. 120 GOSUB 660
  13. 130 GOSUB 770
  14. 140 GOSUB 860
  15. 150 COLOR 7,0,0: END
  16. 160 REM
  17. 170 REM COUNT DIRECTORY PATHS
  18. 180 REM
  19. 190 CLS
  20. 200 OPEN "I", #1, FILE$, 80
  21. 210 LOCATE 12,5: PRINT "setting up...please wait"
  22. 220 WHILE NOT EOF(1)
  23. 230 INPUT #1, PATH$
  24. 240 PATH$ = PATH$ + " ": SW = 0
  25. 250 IF MID$(PATH$,1,5) = "Path:"  THEN COL = 1: SW = 1: REC = REC + 1
  26. 260 IF MID$(PATH$,2,5) = "Path:"  THEN COL = 1: SW = 1: REC = REC + 1
  27. 270 IF SW = 0 THEN 330
  28. 280 FOR X = 1 TO LEN(PATH$)
  29. 290 IF MID$(PATH$,X,1) = "\" THEN PATH$ = RIGHT$(PATH$, LEN(PATH$) - X): COL = COL + 1: GOTO 280
  30. 300 IF MID$(PATH$,X,1) = " " OR X = LEN(PATH$) THEN COL = COL + 1
  31. 310 IF COL > MCOL THEN MCOL = COL
  32. 320 NEXT X: PATH$ = " "
  33. 330 WEND
  34. 340 CLOSE #1: RETURN
  35. 350 REM
  36. 360 REM FILL ARRAYS WITH BLANKS
  37. 370 REM
  38. 380 REC = REC + 1: MCOL = MCOL + 1
  39. 390 DIM LEVL$(REC,MCOL), CHART$(REC,MCOL * 3)
  40. 400 FOR R = 1 TO REC: FOR C = 1 TO MCOL
  41. 410 LEVL$(R,C) = " "
  42. 420 NEXT C: NEXT R
  43. 430 FOR R = 1 TO REC: FOR C = 1 TO MCOL * 3
  44. 440 CHART$(R,C) = " "
  45. 450 NEXT C: NEXT R: RETURN
  46. 460 REM
  47. 470 REM GET DIRECTORY PATHS
  48. 480 REM
  49. 490 CLS: OPEN "I", #1, FILE$, 80
  50. 500 REC = 0: LOCATE 12,5: PRINT "reading directory paths..."
  51. 510 WHILE NOT EOF(1)
  52. 520 SW = 0
  53. 530 INPUT #1, PATH$
  54. 540 IF LEFT$(PATH$,9) = "DIRECTORY" THEN TITLE$ = PATH$
  55. 550 PATH$ = PATH$ + " "
  56. 560 IF MID$(PATH$,1,5) = "Path:"  THEN ROW = ROW + 1: PATH$ = RIGHT$(PATH$, LEN(PATH$) - 7): COL = 1: SW = 1: REC = REC + 1
  57. 570 IF MID$(PATH$,2,5) = "Path:"  THEN ROW = ROW + 1: PATH$ = RIGHT$(PATH$, LEN(PATH$) - 8): COL = 1: SW = 1: REC = REC + 1
  58. 580 IF SW = 0 THEN 630
  59. 590 FOR X = 1 TO LEN(PATH$)
  60. 600 IF MID$(PATH$,X,1) = "\" THEN LEVL$(ROW, COL) = LEFT$(PATH$, X - 1): PATH$ = RIGHT$(PATH$, LEN(PATH$) - X): LEVL$(ROW, COL) = LEVL$(ROW, COL) + STRING$(8 - LEN(LEVL$(ROW, COL)),32): COL = COL + 1: GOTO 590
  61. 610 IF MID$(PATH$,X,1) = " " OR X = LEN(PATH$) THEN LEVL$(ROW, COL) = LEFT$(PATH$,LEN(PATH$) - 1): LEVL$(ROW, COL) = LEVL$(ROW, COL) + STRING$(8 - LEN(LEVL$(ROW, COL)),32)
  62. 620 NEXT X: PATH$ = " "
  63. 630 WEND
  64. 640 CLOSE #1: RETURN
  65. 650 REM
  66. 660 REM CREATE DIRECTORY CHART
  67. 670 REM
  68. 680 CHART$(0,0) = "ROOT ": CHART$(0,1) = CHR$(191)
  69. 690 CLS: LOCATE 12,5: PRINT "creating directory chart..."
  70. 700 FOR C = 1 TO MCOL: FOR R = 1 TO REC
  71. 710 IF LEVL$(R,C) = " " THEN 750
  72. 720 IF LEVL$(R,C) = LEVL$(R - 1,C) THEN CHART$(R,C * 2) = CHR$(179): CHART$(R,C * 2 + 1) = "        ": CHART$(R - 1,C * 2 + 2) = CHR$(191): GOTO 750 ELSE CHART$(R - 1,C * 2 + 2) = " "
  73. 730 IF LEVL$(R + 1,C) = " " THEN CHART$(R,C * 2) = CHR$(192): CHART$(R,C * 2 + 1) = LEVL$(R,C): GOTO 750
  74. 740 CHART$(R,C * 2) = CHR$(195): CHART$(R,C * 2 + 1) = LEVL$(R,C)
  75. 750 NEXT R: CHART$(R,C) = " ": NEXT C: RETURN
  76. 760 REM
  77. 770 REM RESET LAST CHARACTER ON CHAIN
  78. 780 REM
  79. 790 FOR C = MCOL TO 1 STEP -1: SW = 0: FOR R = REC TO 1 STEP -1
  80. 800 IF CHART$(R,C) = CHR$(179) AND CHART$(R + 1,C) = " " THEN CHART$(R,C) = " "
  81. 810 IF CHART$(R,C) = CHR$(179) AND CHART$(R + 1,C) = CHR$(191) THEN CHART$(R,C) = " "
  82. 820 IF CHART$(R,C) = CHR$(195) AND CHART$(R + 1,C) = " " THEN CHART$(R,C) = CHR$(192)
  83. 830 NEXT R: NEXT C
  84. 840 RETURN
  85. 850 REM
  86. 860 REM DISPLAY/PRINT CHART
  87. 870 REM
  88. 880 PRINT: INPUT "do you want to print the chart (Y/N) "; ANSWER$: ANSWER$ = LEFT$(ANSWER$,1)
  89. 890 IF ANSWER$ = "N" OR ANSWER$ = "n" THEN 1060
  90. 900 IF ANSWER$ = "Y" OR ANSWER$ = "y" THEN 940
  91. 910 PRINT: PRINT "that is an incorrect reply, please try again!": BEEP: GOTO 860
  92. 920 RETURN
  93. 930 REM
  94. 940 REM PRINT DIRECTORY CHART
  95. 950 REM
  96. 960 WIDTH "lpt1:",132: LPRINT CHR$(15)
  97. 970 TITLE$ = STRING$(61 - LEN(TITLE$) / 2,32) + TITLE$
  98. 980 LPRINT TITLE$: LPRINT
  99. 990 LPRINT CHART$(0,0); CHART$(0,1)
  100. 1000 FOR R = 1 TO REC: FOR C = 1 TO MCOL * 3
  101. 1010 IF C = 1 THEN LPRINT "   ";
  102. 1020 LPRINT CHART$(R,C); " ";
  103. 1030 NEXT C: LPRINT: NEXT R
  104. 1040 RETURN
  105. 1050 REM
  106. 1060 REM DISPLAY DIRECTORY CHART
  107. 1070 REM
  108. 1080 TITLE$ = STRING$(40 - LEN(TITLE$) / 2,32) + TITLE$
  109. 1090 CLS: PRINT TITLE$: PRINT: PRINT CHART$(0,0); CHART$(0,1)
  110. 1100 FOR R = 1 TO REC: FOR C = 1 TO MCOL * 3
  111. 1110 IF C = 1 THEN PRINT "   ";
  112. 1120 PRINT CHART$(R,C); " ";
  113. 1130 NEXT C: PRINT: NEXT R
  114. 1140 RETURN
  115.