Repository navigation
Expand file tree
/
Copy pathFILEIT.BAS
More file actions
327 lines (327 loc) · 10.9 KB
/
Copy pathFILEIT.BAS
File metadata and controls
327 lines (327 loc) · 10.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
2 GOTO654
4 REM# FILE IT #
5 REM# DATA MANAGEMENT PROGRAM #
6 REM# BY KEITH BAKER #
7 REM# #
8 REM# #
16 CLEAR 5500:DIM A$(50),B$(50),C$(50),D$(50),E$(50)
18 CLS3
20 S$=" "+STRING$(30,"*"):R$=STRING$(80,"*"):U$=" *"+STRING$(28," ")+"*"
22 FORX=1TO50
24 PRINT@160,S$:PRINT@192," FILE IT"
26 PRINT@224," DATA MANAGEMENT PROGRAM"
28 PRINT@256," BY KEITH BAKER"
30 PRINT@288,S$
32 NEXTX
34 CLS:PRINT@224," LOAD AN EXISTING FILE?":PRINT@256,"PRESS <Y> FOR YES OR <N> FOR NO."
36 L$=INKEY$:IF L$="" THEN 36
38 IF L$="y" OR L$="Y" THEN 542
40 IF L$="n" OR L$="N" THEN 44
42 GOTO 36
44 CLS:PRINT" FIELD NAMING FUNCTION":PRINT:PRINT
46 LINEINPUT"FIELD 1 NAME:";BA$
48 LINEINPUT"FIELD 2 NAME:";BB$
50 LINEINPUT"FIELD 3 NAME:";BC$
52 LINEINPUT"FIELD 4 NAME:";BD$
54 LINEINPUT"FIELD 5 NAME:";BE$
56 CLS3:PRINT@96,S$:PRINT U$
58 PRINT" * 1> FILE MAINTENANCE *"
60 PRINT" * 2> SEARCH FILE *"
62 PRINT" * 3> SORT FILE *"
64 PRINT" * 4> SAVE FILE *"
66 PRINT" * 5> PRINT FILE *"
68 PRINT" * 6> VIEW FILE *"
70 PRINTU$:PRINTS$:PRINT" "REC" FILE/S NOW IN MEMORY":SOUND220,1
72 L$=INKEY$:IFL$=""THEN72
74 L=VAL(L$)
76 IF L<1 OR L>6 THEN 72 ELSE 78
78 ON L GOTO 80,254,424,516,588,620
80 REM FILE MAINTENANCE
82 CLS3:PRINT@160,S$:PRINTU$
84 PRINT" * 1> ADD FILE *"
86 PRINT" * 2> DELETE FILE *"
88 PRINT" * 3> EDIT FILE *"
90 PRINT" * R> RETURN MAIN MENU *"
92 PRINT U$:PRINT S$
94 SOUND 220,1
96 L$=INKEY$:IF L$="" THEN 96
98 IF L$="r" OR L$="R" THEN 56
100 L=VAL(L$)
102 IF L=1 OR L=2 OR L=3 THEN 104 ELSE 96
104 CLS:ON L GOTO 106,160,200
106 REM ADD A LISTING
108 REC=REC+1
110 CLS1:PRINTS$
112 PRINT" * ADD A FILE *"
114 PRINTS$
116 PRINT" FILE NUMBER:"REC:PRINT
118 PRINT"ENTER "BA$" :";:LINEINPUT A$(REC)
120 PRINT"ENTER "BB$" :";:LINEINPUT B$(REC)
122 PRINT"ENTER "BC$" :";:LINEINPUT C$(REC)
124 PRINT"ENTER "BD$" :";:LINEINPUT D$(REC)
126 PRINT"ENTER "BE$" :";:LINEINPUT E$(REC)
128 CLS
130 PRINT" FILE NUMBER:"REC:PRINT
132 PRINT BA$" :"A$(REC)
134 PRINT BB$" :"B$(REC)
136 PRINT BC$" :"C$(REC)
138 PRINT BD$" :"D$(REC)
140 PRINT BE$" :"E$(REC)
142 PRINT:PRINT"IS THIS CORRECT(y/n)"
144 AN$=INKEY$:IF AN$="" THEN 144
146 IF AN$="y" OR AN$="Y" THEN 150
148 IF AN$="n" OR AN$="N" THEN RN=REC:CLS:GOTO 220
150 CLS3:PRINT@192," INPUT <A> ANOTHER OR <R> RETURN TO MENU"
152 L$=INKEY$:IF L$="" THEN 152
154 IF L$="a" OR L$="A" THEN REC=REC+1:GOTO110
156 IF L$="r" OR L$="R" THEN 56
158 GOTO 152
160 REM DELETE A FILE
162 CLS(7):PRINT@0,"ENTER <R> TO RETURN TO MAIN MENU":PRINT@192,S$
164 PRINT" * DELETE A FILE *"
166 PRINT S$
168 PRINT:INPUT" FILE NUMBER TO BE DELETED:";RN$
170 IF RN$="R" OR RN$="r" THEN 56 ELSE 172
172 RN=VAL(RN$):IF RN>REC OR RN<1 THEN 162
174 CLS:PRINT@32," DELETE FUNCTION":GOSUB 574
176 PRINT" CORRECT LISTING (y/n)"
178 L$=INKEY$:IF L$="" THEN 178
180 IF L$="y" OR L$="Y" THEN 188
182 IF L$="n" OR L$="N" THEN 160
184 IF L$="r" OR L$="R" THEN 56
186 GOTO 178
188 A$(RN)=A$(RN-RN):B$(RN)=B$(RN-RN):C$(RN)=C$(RN-RN):D$(RN)=D$(RN-RN):E$(RN)=E$(RN-RN)
190 CLS:FOR X=1TO100:PRINT@232,"RECORD DELETED":NEXT X:FOR X=RN TO REC
192 A$(X)=A$(X+1):B$(X)=B$(X+1):C$(X)=C$(X+1):D$(X)=D$(X+1):E$(X)=E$(X+1)
194 NEXT X
196 REC=REC-1:IF REC<1 THEN REC=0
198 GOTO 56
200 REM EDIT A FILE
202 CLS7:PRINT@0,"ENTER <R> TO RETURN TO MAIN MENU":PRINT@192,S$
204 PRINT" * EDIT A FILE *"
206 PRINT S$
208 PRINT:INPUT" FILE NUMBER TO BE EDITED:":RN$
210 IF RN$="R" OR RN$="r" THEN 56 ELSE 212
212 RN=VAL(RN$):IF RN<1 OR RN>REC THEN 214 ELSE 218
214 CLS:FOR X=1 TO 100:PRINT@256," RECORD NUMBER OUT OF RANGE":NEXT X
216 GOTO 56
218 CLS:PRINT@32," EDIT FUNCTION"
220 GOSUB 574
222 PRINT" EDIT WHICH FIELD ?"
224 L$=INKEY$:IF L$="" THEN 224
226 IF L$="r" or L$="R" THEN 56
228 L=VAL(L$): IF L<1 OR L>5 THEN 224 ELSE 230
230 CLS:ON L GOTO 232,234,236,238,240
232 PRINT BA$" :"A$(RN):PRINT:LINEINPUT"CHANGE TO: ";A$(RN):GOTO242
234 PRINT BB$" :"B$(RN):PRINT:LINEINPUT"CHANGE TO: ";B$(RN):GOTO242
236 PRINT BC$" :"C$(RN):PRINT:LINEINPUT"CHANGE TO: ";C$(RN):GOTO242
238 PRINT BD$" :"D$(RN):PRINT:LINEINPUT"CHANGE TO: ";D$(RN):GOTO242
240 PRINT BE$" :"E$(RN):PRINT:LINEINPUT"CHANGE TO: ";E$(RN):GOTO242
242 CLS:GOSUB 574
244 PRINT"IS THIS CORRECT (y/n)?"
246 L$=INKEY$:IF L$="" THEN 246
248 IF L$="y" OR L$="r" OR L$="Y" OR L$="R" THEN 56
250 IF L$="n" OR L$="N" THEN CLS:GOTO 222
252 GOTO 246
254 REM SEARCH ROUTINE
256 CLS0:PRINT@128,S$:PRINT U$
258 PRINT" 1> SEARCH BY "BA$
260 PRINT" 2> SEARCH BY "BB$
262 PRINT" 3> SEARCH BY "BC$
264 PRINT" 4> SEARCH BY "BD$
266 PRINT" 5> RETURN TO MENU"
268 PRINT U$:PRINT S$: SOUND 220,1
270 L$=INKEY$:IF L$="" THEN 270
272 IF L$="r" OR L$="R" THEN 56
274 L=VAL(L$)
276 IF L<1 OR L>4 THEN 270 ELSE 278
278 CLS:ON L GOTO 280,316,352,388
280 REM SEARCH
282 CLS:PRINT S$
284 PRINT" SEARCH FOR "BA$
286 PRINT S$
288 PRINT"ENTER "BA$" FOR SEARCH":LINEINPUT SR$
290 M=0:N=0:FOR RN=N TO REC:IF SR$=A$(RN) THEN 292 ELSE 294
292 M=M+1
294 NEXT RN
296 CLS1:FOR RN=N TO REC:PRINT@32," SEARCH FUNCTION"
298 IF SR$=A$(RN) THEN GOSUB 574 ELSE 312
300 PRINT"THERE IS/ARE "M" FILE/S MEETING YOUR SPECIFICATIONS. IS THIS THE ONE YOU WANT <y/n>?"
302 L$=INKEY$:IF L$="" THEN 302
304 IF L$="n" OR L$="N" THEN 312
306 IF L$="r" OR L$="R" THEN 56
308 IF L$="y" OR L$="Y" THEN GOSUB 652
310 GOTO 302
312 NEXT RN
314 CLS:PRINT@201,"FILE NOT FOUND":FOR X=1 TO 300:NEXT X:GOTO56
316 REM SEARCH
318 CLS:PRINT S$
320 PRINT " SEARCH FOR "BB$
322 PRINT S$
324 PRINT"ENTER "BB$" FOR SEARCH":LINEINPUT SR$
326 M=0:N=0:FOR RN=N TO REC:IF SR$=B$(RN) THEN 328 ELSE 330
328 M=M+1
330 NEXT RN
332 CLS1:FOR RN=N TO REC:PRINT@32," SEARCH FUNCTION"
334 IF SR$=B$(RN) THEN GOSUB 574 ELSE 348
336 PRINT"THERE IS/ARE "M" FILE/S MEETING YOUR SPECIFICATIONS. IS THIS THE ONE YOU WANT <y/n>?"
338 L$=INKEY$:IF L$="" THEN 338
340 IF L$="n" OR L$="N" THEN 348
342 IF L$="y" OR L$="Y" GOSUB 652
344 IF L$="r" OR L$="R" THEN 56
346 GOTO 338
348 NEXT RN
350 CLS:PRINT@201,"FILE NOT FOUND":FOR X=1 TO 500:NEXT X:GOTO 56
352 REM SEARCH
354 CLS:PRINT S$
356 PRINT" SEARCH FOR "BC$
358 PRINT S$
360 PRINT"EENTER "BC$" FOR SEARCH":LINEIPUT SR$
362 M=0:N=0:FOR RN=N TO REC:IF SR$=C$(RN) THEN 364 ELSE 366
364 M=M+1
366 NEXT RN:CLS1:FOR RN=N TO REC
368 PRINT@32," SEARCH FUNCTION"
370 IF SR$=C$(RN) THEN GOSUB 574 ELSE 384
372 PRINT"THERE IS/ARE "M" FILE/S MEETING YOUR SPECIFICATIONS. IS THIS THE ONE YOU WANT <y/n>?"
374 L$=INKEY$:IF L$="" THEN 374
376 IF L$="n" OR L$="N" THEN 384
378 IF L$="r" OR L$="R" THEN 56
380 IF L$="y" OR L$="Y" GOSUB 652
382 GOTO 374
384 NEXT RN
386 CLS:PRINT@201,"FILE NOT FOUND":FOR X=1 TO 500:NEXT X:GOTO 36
388 REM SEARCH
390 CLS:PRINT S$
392 PRINT" SEARCH FOR "BD$
394 PRINT S$
396 PRINT"ENTER "BD$" FOR SEARCH":LINEINPUT SR$
398 M=0:N=0:FOR RN=N TO REC:IF SR$=D$(RN) THEN 400 ELSE 402
400 M=M+1
402 NEXT RN
404 CLS:FOR RN=N TO REC:PRINT@32," SEARCH FUNCTION"
406 IF SR$=D$(RN) THEN GOSUB 574 ELSE 420
408 PRINT"THERE IS/ARE "M" FILE/S MEETING YOUR SPECIFICATIONS. IS THIS THEONE YOU WANT <y/n>?"
410 L$=INKEY$:IF L$="" THEN 410
412 IF L$="n" OR L$="N" THEN 420
414 IF L$="r" OR L$="R" THEN 56
416 IF L$="Y" OR L$="y" GOSUB 652
418 GOTO 410
420 NEXT RN
422 CLS:PRINT@201,"FILE NOT FOUND":FOR X=1 TO 500:NEXT X:GOTO 56
424 CLS (4):PRINT@160,S$:PRINT U$
426 PRINT" 1> SORT BY "BA$
428 PRINT" 2> SORT BY "BB$
430 PRINT" 3> SORT BY "BC$
432 PRINT" R> RETURN TO MAIN MENU"
434 PRINT U$: PRINT S$
436 SOUND 220,1
438 L$=INKEY$: IF L$="" THEN 438
440 IF L$="r" OR L$="R" THEN 56
442 L=VAL(L$)
444 IF L>0 AND L<4 THEN 446 ELSE 438
446 CLS: ON L GOTO 448,472,494
448 REM SORT
450 CLS4: PRINT@192," SORTING": PRINT@352," DO NOT DISTURB"
452 A2=REC
454 IF A2<=2 THEN 470
456 A3=0:FOR A1=1 TO A2-1
458 IF A$(A1) <= A$(A1+1) THEN 464
460 A3=A1+1
462 GOSUB 610
464 NEXT A1
466 A2=A3:GOTO 454
468 GOTO 454
470 GOTO 56
472 REM SORT
474 CLS4: PRINT@192," SORTING": PRINT@352," DO NOT DISTURB"
476 A2=REC
478 IF A2<=2 THEN 492
480 A3=0:FOR A1=1 T0 A2-1
482 IF B$(A1)<=B$(A1+1) THEN 488
484 A3=A1+1
486 GOSUB610
488 NEXTA1
490 A2=A3:GOTO478
492 GOTO56
494 REM SORT
496 CLS4: PRINT@192," SORTING": PRINT@352," DO NOT DISTURB"
498 A2=REC
500 IF A2<=2 THEN 514
502 A3=0:FOR A1=1 TO A2-1
504 IF C$(A1)<=C$(A1+1) THEN 510
506 A3=A1+1
508 GOSUB 610
510 NEXT A1
512 A2=A3:GOTO 500
514 GOTO 56
516 CLS3:PRINT@192," INSERT DATA TAPE INTO RECORDER"
518 PRINT" REWIND THE RECORDER"
520 PRINT" PRESS PLAY AND RECORD"
522 INPUT"NAME OF THIS FILE";DA$:PRINT:PRINT
524 L=LEN(DA$)/2:C=207-L
526 CLS:PRINT@140,"SAVING"
528 PRINT@C,DA$: PRINT@266, "DATA FILE"
530 OPEN"O",#-1,DA$
532 PRINT#-1,BA$,BB$,BC$,BD$,BE$
534 FORX=1TO150:IF A$(X)="" THEN 540
536 PRINT #-1,A$(X),B$(X),C$(X),D$(X),E$(X)
538 NEXT X
540 CLOSE #-1: GOTO56
542 CLS3: PRINT@192, " INSERT DATA TAPE INTO RECORDER"
544 PRINT" REWIND THE RECORDER"
546 PRINT" PRESS PLAY"
548 INPUT"ENTER FILE NAME:";DA$
550 IF DA$="r" OR DA$="R" THEN 56 ELSE 552
552 L=LEN(DA$)/2:C=207-L
554 CLS:PRINT@139,"LOADING"
556 PRINT@C,DA$
558 PRINT@266,"DATA FILE"
560 OPEN"I",#-1,DA$
562 INPUT #-1,BA$,BB$,BC$,BD$,BE$
564 FOR X=1 TO 150
566 IF EOF(-1) THEN 572
568 INPUT #-1,A$(X),B$(X),C$(X),D$(X),E$(X)
570 NEXT X
572 CLOSE #-1:REC=X-1:GOTO 56
574 PRINT" 1: "A$(RN)
576 PRINT" 2: "B$(RN)
578 PRINT" 3: "C$(RN)
580 PRINT" 4: "D$(RN)
582 PRINT" 5: "E$(RN)
584 PRINT" THIS IS RECORD # ";RN:PRINT"PRESS <R> TO RETURN TO MAIN MENU"
586 RETURN
588 REM PRINT ROUTINE
590 PS=PEEK(65314):IF PS=4 OR PS=6 THEN 594 ELSE 592
592 CLS:PRINT@160,"PRINTER NOT ON-LINE...........":PRINT:PRINT:PRINT:LINEINPUT"PRESS ENTER WHEN ON-LINE.";X$:GOTO590
594 CLS: L=LEN(DA$)/2:C=40-L
596 PRINT#-2,TAB(C)DA$:PRINT#-2,TAB(3)R$
598 PRINT#-2,TAB(4)BA$TAB(20)BB$TAB(36)BC$TAB(52)BD$TAB(68)BE$
600 PRINT#-2,TAB(3)STRING$(80,"- ")
602 FORX=1TOREC
604 PRINT#-2,TAB(1)A$(X)TAB(16)B$(X)TAB(32)C$(X)TAB(48)D$(X)TAB(64)E$(X)
606 NEXTX
608 CLS: GOTO56
610 REM SORT ROUTINE
612 T$(1)=A$(A1):T$(2)=B$(A1):T$(3)=C$(A1):T$(4)=D$(A1):T$(5)=E$(A1)
614 A$(A1)=A$(A3):B$(A1)=B$(A3):C$(A1)=C$(A3):D$(A1)=D$(A3):E$(A1)=E$(A3)
616 A$(A3)=T$(1):B$(A3)=T$(2):C$(A3)=T$(3):D$(A3)=T$(4):E$(A3)=T$(5)
618 RETURN
620 REM VIEW ROUTINE
622 CLS:FOR X=1 TO REC:PRINT:PRINT
624 CLS:PRINT@32," THIS IS FILE#"X
626 PRINT BA$" :A$(X)"
628 PRINT BB$" :B$(X)"
630 PRINT BC$" :C$(X)"
632 PRINT BD$" :D$(X)"
634 PRINT BE$" :E$(X)"
636 PRINT:PRINT:PRINT S$:PRINT" PRESS (N) FOR NEXT FILE":PRINT" PRESS(R) FOR RETURN TO MENU":PRINT" PRESS(L) FOR PRECEDING FILE":PRINT S$
638 L$=INKEY$:IF L$="" THEN 638
640 IF L$="n" OR L$="N" THEN 646
642 IF L$="r" OR L$="R" THEN 56
644 IF L$="l" OR L$="L" THEN X=X-1:SOUND 220,1:IF x=0 THEN 648 ELSE 624
646 CLS:SOUND220,1:NEXT X
648 CLS:FOR X=1 TO 150: PRINT@256," FILES COMPLETED":NEXT X
650 GOTO 56
652 PRINT"GLAD I COULD HELP! PRESS <R> TO RETURN TO THE MAIN MENU":RETURN
654 PCLEAR1:GOTO 16