home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / comdore / 64utils / filemang.prg (.txt) < prev    next >
Commodore BASIC  |  1988-12-02  |  8KB  |  322 lines

  1. 1 DIMD$(15,4),ID$(1000),RE(1000),F$(15),L(15),PO(15),SL(1000)
  2. 2 SP$="                                        "
  3. 3 ER$="                    [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]"
  4. 10 POKE53281,0:POKE53280,0:PRINT"[147]";
  5. 20 PRINT"DO YOU HAVE A DATA DISK ALREADY SET UP"
  6. 30 PRINT"(Y/N)?"
  7. 40 GETX$:IFX$=""THEN40
  8. 45 IF(X$<>"N")AND(X$<>"Y")THEN40
  9. 50 IFX$="Y"THEN1000
  10. 60 PRINT"[147]PLEASE INSERT A BLANK DISKETTE AND"
  11. 70 PRINT"PRESS RETURN...":PRINT:PRINT"REMEMBER, THIS WILL ERASE ANY"
  12. 80 PRINT"INFORMATION ON THE DISKETTE"
  13. 90 GETX$:IFX$<>CHR$(13)THEN90
  14. 100 OPEN15,8,15,"N0:DATA,DD":CLOSE 15
  15. 110 OPEN2,8,2,"0:INDEX,S,W":PRINT#2,0:PRINT#2,"LAST NAME":CLOSE 2
  16. 120 GOSUB9000
  17. 130 PRINT"ENTER DESCRIPTORS, FIELD LENGTHS,"
  18. 140 PRINT"PRINTER SPACES, AND PRINTER LINES."
  19. 150 PRINT"PRESS CTRL-X WHEN FINISHED"
  20. 155 CC=1
  21. 160 PRINT""
  22. 161 IFCC<10THENPRINTTAB(6);CC;
  23. 163 IFCC>9THENPRINTTAB(5);CC;"[157][157][157][157][221]";
  24. 165 PRINTTAB(9):LL=14:GOSUB10000
  25. 168 IFX$=""THEN200
  26. 169 D$(CC,1)=S$
  27. 170 PRINT:PRINT"[145]"TAB(25):LL=2:GOSUB10000
  28. 178 IFX$=""THEN200
  29. 179 D$(CC,2)=S$
  30. 180 PRINT:PRINT"[145]"TAB(28):LL=2:GOSUB10000
  31. 188 IFX$=""THEN200
  32. 189 D$(CC,3)=S$
  33. 190 PRINT:PRINT"[145]"TAB(31):LL=2:GOSUB10000
  34. 193 IFX$=""THEN200
  35. 194 D$(CC,4)=S$
  36. 195 CC=CC+1:IFCC<16THEN PRINT:GOTO161
  37. 200 CC=CC-1
  38. 210 PRINT"                                      "
  39. 211 PRINT"                                      "
  40. 212 PRINT"                              ":PRINT"";
  41. 213 INPUT"ENTER THE INDEX DESCRIPTOR ";IN
  42. 215 IF IN<1 OR IN>CCTHEN210
  43. 216 RL=0:FORI=1TOCC:RL=RL+VAL(D$(I,2)):NEXT
  44. 217 IFRL<251THEN220
  45. 218 PRINT"[147]ERROR...FIELD LENGTHS EXCEED 250...":PRINT"PLEASE REDO!":FORI=1TO1500:NEXT
  46. 219 GOTO120
  47. 220 FORI=1TOCC:IFVAL(D$(CC,2))>20THEN224
  48. 221 NEXT:GOTO225
  49. 224 PRINT"[147]ERROR...FIELD > 20":PRINT"PLEASE REDO!":FORI=1TO1500:NEXT:GOTO120
  50. 225 PRINT"[147]     WRITING INFO TO DISK"
  51. 226 RR=INT(153600/RL)
  52. 227 PRINT:PRINT"YOU MAY ENTER UP TO";RR;"RECORDS"
  53. 228 NR=0
  54. 230 OPEN2,8,2,"@0:INDEX,S,W"
  55. 240 PRINT#2,CC
  56. 250 FORI=1TOCC:FORJ=1TO4:PRINT#2,D$(I,J):NEXT:NEXT
  57. 260 PRINT#2,IN
  58. 264 RR=INT(153600/RL)
  59. 265 PRINT#2,RL
  60. 266 PRINT#2,NR
  61. 270 CLOSE 2
  62. 275 OPEN2,8,2,"REC,L,"+CHR$(RL):CLOSE 2
  63. 276 NR=0
  64. 278 GOSUB5600
  65. 280 GOTO 2000
  66. 999 END
  67. 1000 PRINT"[147]PLEASE INSERT YOUR DATA DISKETTE AND"
  68. 1001 PRINT"PRESS RETURN..."
  69. 1002 GETX$:IFX$<>CHR$(13)THEN1002
  70. 1005 GOSUB5100:GOSUB5200
  71. 1099 GOTO 2000
  72. 2000 PRINT"[147]"TAB(9)"FILE MANAGER MAIN MENU[146]"
  73. 2010 PRINT""TAB(9)"1) ADD A RECORD"
  74. 2030 PRINT""TAB(9)"2) CHANGE OR DELETE A RECORD"
  75. 2040 PRINT""TAB(9)"3) CHANGE THE PRINTING FORMAT"
  76. 2050 PRINT""TAB(9)"4) PRINT A RECORD"
  77. 2060 PRINT""TAB(9)"5) PRINT ALL RECORDS"
  78. 2065 PRINT""TAB(9)"6) CHANGE THE INDEXOR"
  79. 2070 PRINT""TAB(9)"7) EXIT"
  80. 2080 PRINT""
  81. 2090 GETX$:IFX$=""THEN2080
  82. 2091 IFX$<"1"ORX$>"7"THEN2090
  83. 2092 ONASC(X$)-48GOTO2100,2300,2400,2500,2600,2700,20000
  84. 2100 REM ADD A RECORD
  85. 2102 IFNR=RRTHENPRINT"[147]TOO MANY RECORDS...":FORI=1TO1500:NEXT:GOTO2000
  86. 2110 FORI=1TOCC:F$(I)=LEFT$(SP$,L(I)):NEXT
  87. 2120 GOSUB 9100
  88. 2130 PRINT"PRESS CTRL-X WHEN DONE"
  89. 2140 C9=1:PRINTTAB(19);"";
  90. 2150 LL=L(C9):GOSUB10000
  91. 2155 F$(C9)=S$
  92. 2160 IFX$=""THEN2190
  93. 2170 C9=C9+1:IFC9>CCTHENC9=1
  94. 2180 PRINT"":PRINTTAB(19);:FORI=1TOC9:PRINT"";:NEXT:PRINTER$;
  95. 2185 GOTO2150
  96. 2190 PRINT"[147]     ADDING THE RECORD..."
  97. 2192 FORI=1TOCC:F$(I)=F$(I)+RIGHT$(SP$,(L(I))-LEN(F$(I))):NEXT
  98. 2195 GOSUB5400:GOTO2000
  99. 2200 IFFL=NRTHENNR=NR-1:GOTO2240
  100. 2210 R=NR:GOSUB5000
  101. 2220 GOSUB5700
  102. 2230 NR=NR-1
  103. 2240 GOSUB5500
  104. 2250 GOTO 2000
  105. 2300 PRINT"[147]PLEASE ENTER THE ";D$(IN,1);:INPUT" ";SS$
  106. 2301 SS$=SS$+LEFT$(SP$,L(IN)-LEN(SS$)):GOSUB5300
  107. 2302 IFFL=0THEN2000
  108. 2303 R=FL
  109. 2305 GOSUB5000
  110. 2310 GOSUB9100
  111. 2315 PRINT"";SP$;SP$;SP$;"";
  112. 2320 PRINT"ENTER THE FIELD NUMBER TO BE CHANGED ";
  113. 2330 PRINT"OR ENTER 'DELETE' TO DELETE THE ENTRY"
  114. 2331 FF$="*"
  115. 2340 INPUTFF$:IFFF$="DELETE"THEN2200
  116. 2350 FF=VAL(FF$):IFFF<0ORFF>CCTHEN2315
  117. 2355 IFFF=0THEN2000
  118. 2360 PRINT"":PRINTTAB(19);:FORI=1TOFF:PRINT"";:NEXT:PRINTER$;
  119. 2365 LL=L(FF):GOSUB10000
  120. 2366 F$(FF)=S$
  121. 2370 F$(FF)=F$(FF)+RIGHT$(SP$,(L(FF))-LEN(F$(FF)))
  122. 2375 PRINT"";SP$;SP$;SP$;"";
  123. 2380 PRINT"MORE CHANGES? (Y/N)
  124. 2381 [161]X$:[139]X$[178]""[167]2381
  125. 2382 [139]X$[178]"Y"[167]2315
  126. 2383 [139]X$[178]"N"[167]2390
  127. 2385 [137]2381
  128. 2390 [153]"LOADSAVING CHANGES...":[141]5700
  129. 2399 [137]2000
  130. 2400 [153]"LOADTHE PRINTING SPACING IS CURRENTLY...":[153]
  131. 2405 [153]"DESCRIPTOR           SPACES      LINES":[153]
  132. 2410 [129]I[178]1[164]CC:[153]I;" ";D$(I,1):[130]
  133. 2420 [153]"":[129]I[178]1[164]CC:[153][163]23);D$(I,3);"         ";D$(I,4):[130]
  134. 2430 [153]:[153]:AN$[178]"*":[133]"CHANGE WHICH NUMBER (<CR> TO END)";AN$
  135. 2440 AN[178][197](AN$):[139]AN[179]1[176]AN[177]CC[167][141]5500:[137]2000
  136. 2450 [133]"ENTER NEW VALUES (SPACES,LINES)";S1,L1:[139]S1[177]99[176]S1[179]0[167][153]"ONON":[137]2450
  137. 2455 [139]L1[177]99[176]L1[179]0[167][153]"ONON":[137]2450
  138. 2460 D$(AN,3)[178][201]([196](S1),2)
  139. 2465 D$(AN,4)[178][201]([196](L1),2)
  140. 2466 [139]S1[179]10[167]D$(AN,3)[178]"0"[170][201]([196](S1),1)
  141. 2467 [139]L1[179]10[167]D$(AN,4)[178]"0"[170][201]([196](L1),1)
  142. 2470 [137]2400
  143. 2499 [144]
  144. 2500 [153]"LOADPLEASE ENTER THE ";D$(IN,1);:[133]" ";SS$
  145. 2501 SS$[178]SS$[170][200](SP$,L(IN)[171][195](SS$)):[141]5300
  146. 2502 [139]FL[178]0[167]2000
  147. 2503 R[178]FL
  148. 2505 [141]5000
  149. 2506 [153]"LOAD  PADDED SPACES ? (Y/N)
  150. 2507 GETX$:IFX$=""THEN2507
  151. 2508 IFX$="Y"THEN2515
  152. 2509 FORI=1TOCC
  153. 2510 IFRIGHT$(F$(I),1)<>" "THEN2514
  154. 2511 F$(I)=LEFT$(F$(I),LEN(F$(I))-1):GOTO2510
  155. 2514 NEXT
  156. 2515 PRINT"[147]    ADJUST PRINTER AND PRESS RETURN"
  157. 2520 GETX$:IFX$<>CHR$(13)THEN2520
  158. 2525 PRINT"[147]     PRINTING..."
  159. 2530 OPEN1,4
  160. 2540 FORI=1TOCC
  161. 2550 IFVAL(D$(I,4))=0THEN2560
  162. 2555 FORJ=1TOVAL(D$(I,4)):PRINT#1,:NEXT
  163. 2560 IFVAL(D$(I,3))=0THEN2570
  164. 2565 FORJ=1TOVAL(D$(I,3)):PRINT#1," ";:NEXT
  165. 2570 PRINT#1,F$(I);:NEXT
  166. 2575 PRINT#1,
  167. 2580 CLOSE 1
  168. 2590 GOTO2000
  169. 2600 PRINT"[147]PADDED SPACES ? (Y/N)
  170. 2601 [161]B$:[139]B$[178]""[167]2601
  171. 2602 [133]"HOW MANY LINES TO SEPERATE ENTRIES";L5
  172. 2603 [129]I4[178]1[164]NR:SL(I4)[178]I4:[130]
  173. 2604 [141]5800
  174. 2606 [153]"LOAD   ADJUST PRINTER AND PRESS RETURN"
  175. 2607 [161]Z$:[139]Z$[179][177][199](13)[167]2607
  176. 2608 [129]KK[178]1[164]NR:R[178]SL(KK):[141]5000
  177. 2609 [139]B$[178]"Y"[167]2650
  178. 2610 [129]JJ[178]1[164]CC
  179. 2611 [139][201](F$(JJ),1)[179][177]" "[167]2614
  180. 2612 F$(JJ)[178][200](F$(JJ),[195](F$(JJ))[171]1):[137]2611
  181. 2614 [130]
  182. 2650 [159]1,4
  183. 2660 [129]I[178]1[164]CC
  184. 2665 [139][197](D$(I,4))[178]0[167]2675
  185. 2670 [129]J[178]1[164][197](D$(I,4)):[152]1,:[130]
  186. 2675 [139][197](D$(I,3))[178]0[167]2685
  187. 2680 [129]J[178]1[164][197](D$(I,3)):[152]1," ";:[130]
  188. 2685 [152]1,F$(I);:[130]
  189. 2686 [129]I[178]1[164]L5:[152]1,:[130]
  190. 2687 [160] 1
  191. 2688 [130]
  192. 2699 [137]2000
  193. 2700 [153]"LOAD":[129]I[178]1[164]CC:[153]I;"        ";D$(I,1):[130]
  194. 2710 [153]:[153]"CURRENTLY THE INDEXOR IS ";D$(IN,1)
  195. 2720 [133]"ENTER A NEW INDEXOR ";II
  196. 2730 [139]II[179]0[176]II[177]CC[167]2700
  197. 2740 IN[178]II
  198. 2750 [153]"LOADCHANGING INDEXOR TO ";D$(IN,1)
  199. 2760 [141]5500:[141]5200:[137]2000
  200. 2890 [137]2000
  201. 4999 [128]
  202. 5000 [143] RETRIEVE A RECORD
  203. 5005 [141]5900
  204. 5010 R1[178]R:R2[178]0:[139]R1[177]256[167]R2[178][181](R1[173]256):R1[178]R1[171]256[172]R2
  205. 5020 [159]1,8,15:[159]2,8,2,"REC"
  206. 5025 [152]1,"P"[199](2)[199](R1)[199](R2)[199](1):[141]6000:S9$[178]Z9$
  207. 5040 [129]I[178]1[164]CC:F$(I)[178][202](S9$,PO(I),L(I)):[130]
  208. 5070 [160] 1:[160] 2
  209. 5099 [142]
  210. 5100 [143] ROUTINE TO READ SEQ FILE
  211. 5105 [159]2,8,2,"0:INDEX,S,R"
  212. 5110 [132]2,CC:[129]I[178]1[164]CC:[129]J[178]1[164]4:[132]2,D$(I,J):[130]:[130]:[132]2,IN
  213. 5120 [132]2,RL
  214. 5125 RR[178][181](153600[173]RL)
  215. 5130 [132]2,NR:[160] 2
  216. 5140 [141]5600
  217. 5199 [142]
  218. 5200 [143]ROUTINE TO READ IN INDEXORS AND REC NUMBERS
  219. 5201 [139]NR[178]0[167] [142]
  220. 5210 [159]2,8,2,"REC"
  221. 5220 [159]1,8,15
  222. 5240 [129] I[178]1[164]NR
  223. 5245 R1[178]I:R2[178]0:[139]R1[177]256[167]R2[178][181](R1[173]256):R1[178]R1[171]256[172]R2
  224. 5250 [152]1,"P"[199](2)[199](R1)[199](R2)[199](1)
  225. 5260 SL(I)[178]I:RE(I)[178]I:[141]6000:ID$(I)[178]Z9$
  226. 5265 ID$(I)[178][202](ID$(I),PO(IN),L(IN))
  227. 5267 [130]
  228. 5270 [160] 1:[160] 2
  229. 5299 [142]
  230. 5300 [143] ROUTINE TO SEARCH FOR INDEXOR SS$
  231. 5310 FL[178]0
  232. 5320 [129]I[178]1[164]NR
  233. 5330 [139]ID$(I)[178]SS$[167]FL[178]I:[142]
  234. 5340 [130]
  235. 5345 [153]"LOAD    RECORD NOT FOUND!":[129]I[178]1[164]1500:[130]
  236. 5399 [142]
  237. 5400 [143] ADD A RECORD
  238. 5410 R1[178]NR[170]1:NR[178]R1:R2[178]0:[139]R1[177]256[167]R2[178][181](R1[173]256):R1[178]R1[171]256[172]R2
  239. 5420 [159]1,8,15:[159]2,8,2,"REC"
  240. 5425 [152]1,"P"[199](2)[199](R1)[199](R2)[199](1)
  241. 5426 S9$[178]""
  242. 5430 [129]I[178]1[164]CC
  243. 5450 S9$[178]S9$[170]F$(I)
  244. 5460 [130]
  245. 5465 [152]2,S9$;
  246. 5470 [160] 1:[160] 2
  247. 5480 ID$(NR)[178]F$(IN):RE(NR)[178]NR
  248. 5485 [141]5500
  249. 5499 [142]
  250. 5500 [143] ROUTINE TO WRITE SEQ FILE
  251. 5505 [159]2,8,2,"@0:INDEX,S,W"
  252. 5510 [152]2,CC:[129]I[178]1[164]CC:[129]J[178]1[164]4:[152]2,D$(I,J):[130]:[130]:[152]2,IN
  253. 5520 [152]2,RL
  254. 5530 [152]2,NR:[160] 2
  255. 5599 [142]
  256. 5600 [129]I[178]1[164]CC:L(I)[178][197](D$(I,2)):PO(I)[178]0:[130]
  257. 5610 PO(1)[178]1:[129]I[178]2[164]CC:PO(I)[178]PO(I[171]1)[170]L(I[171]1):[130]
  258. 5699 [142]
  259. 5700 [143] SAVE A RECORD CHANGE
  260. 5710 R1[178]FL:R2[178]0:[139]R1[177]256[167]R2[178][181](R1[173]256):R1[178]R1[171]256[172]R2
  261. 5720 [159]1,8,15:[159]2,8,2,"REC"
  262. 5725 [152]1,"P"[199](2)[199](R1)[199](R2)[199](1)
  263. 5726 S9$[178]""
  264. 5730 [129]I[178]1[164]CC
  265. 5750 S9$[178]S9$[170]F$(I)
  266. 5760 [130]
  267. 5765 [152]2,S9$;
  268. 5770 [160] 1:[160] 2
  269. 5780 ID$(FL)[178]F$(IN)
  270. 5799 [142]
  271. 5800 [143] ROUTINE TO SORT BY INDEXOR
  272. 5810 [153]"LOADDO YOU WISH TO SORT (Y/N)"
  273. 5820 [153]:[153]"WARNING!!! TO SORT A LARGE NUMBER"
  274. 5830 [153]"OF RECORDS WILL TAKE A FEW MINUTES"
  275. 5840 [161]Q$:[139]Q$[178]""[167]5840
  276. 5850 [139]Q$[178]"N"[167][142]
  277. 5860 [129] I5[178]1[164]NR:[129]J5[178]1[164]NR[171]1
  278. 5870 [139]ID$(SL(J5))[177]ID$(SL(J5[170]1))[167]T5[178]SL(J5):SL(J5)[178]SL(J5[170]1):SL(J5[170]1)[178]T5
  279. 5880 [130]:[130]
  280. 5899 [142]
  281. 5900 [143] RESET
  282. 5905 [159]15,8,15:[152]15,"I":[160] 15
  283. 5910 [160] 1:[160] 2:[160] 15:[160] 3
  284. 5999 [142]
  285. 6000 Z9$[178]"":[129]X5[178]1[164]RL:[161]#2,Z8$:Z9$[178]Z9$[170]Z8$:[130]:[142]
  286. 9000 [153]"LOAD"
  287. 9003 [153][163]5)"ORTANTAN=TANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN=TANTAN=TANTAN=TANTAN^"
  288. 9005 [153][163]5)"(null) #(null)  DESCRIPTOR   (null)FL(null)SP(null)LN(null)"
  289. 9010 [153][163]5)"-TANTAN(null)TANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN(null)TANTAN(null)TANTAN(null)TANTAN<"
  290. 9015 [129]I[178]1[164]15
  291. 9020 [153][163]5)"(null)  (null)               (null)  (null)  (null)  (null)"
  292. 9025 [130]
  293. 9030 [153][163]5)"/TANTAN>TANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN>TANTAN>TANTAN>TANTANEXP";
  294. 9099 [142]
  295. 9100 [153]"LOAD"
  296. 9103 [153]"ORTANTAN=TANTANTANTANTANTANTANTANTANTANTANTANTANTAN=TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^";
  297. 9105 [153]"(null) #(null)  DESCRIPTOR  (null)        DATA        (null)";
  298. 9110 [153]"-TANTAN(null)TANTANTANTANTANTANTANTANTANTANTANTANTANTAN(null)TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN<";
  299. 9115 [129]I[178]1[164]15
  300. 9116 N9$[178][201]([196](I),2):D9$[178]D$(I,1)
  301. 9117 [139][195](D9$)[179]14[167]D9$[178]D9$[170][201](SP$,14[171][195](D9$))
  302. 9118 [139]I[177]CC[167]N9$[178]"  "
  303. 9120 [153]"(null)"N9$"(null)"D9$"(null)                    (null)";
  304. 9125 [130]
  305. 9130 [153]"/TANTAN>TANTANTANTANTANTANTANTANTANTANTANTANTANTAN>TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXP";
  306. 9139 [129]C8[178]1[164]CC
  307. 9140 [153]"":[153][163]19);:[129]I[178]1[164]C8:[153]"";:[130]:[153]F$(C8);
  308. 9141 [130]
  309. 9199 [142]
  310. 10000 CU$[178]" WAITCMD"
  311. 10001 S$[178]"":[153]CU$;
  312. 10005 [161]X$:[139]X$[178]""[167]10005
  313. 10010 [139]X$[178][199](13)[175]S$[179][177]"" [167] [153]" ";:[142]
  314. 10011 [139]X$[178]""[167] [153]" ";:[142]
  315. 10014 L9[178][195](S$)
  316. 10015 [139]X$[178][199](20)[175]L9[179][177]0[167][153]" CMDCMD";CU$;:S$[178][200](S$,([195](S$)[171]1)):[137] 10005
  317. 10016 [139]X$[178][199](20)[167]10005
  318. 10019 [139](X$[179]" ")[176](X$[177]"_")[167] 10005
  319. 10020 S$[178]S$[170]X$:[153]X$;:[139] [195](S$)[178]LL[167][142]
  320. 10025 [153]CU$;:[137] 10005
  321. 20000 [128]
  322.