5 RESET
9 PRINT TAB(21);
10 PRINT "DIRECTORY"
19 PRINT TAB(7);
20 PRINT "CHOOSE ONE OF THE FOLLOWING BY NUMBER:"
29 PRINT TAB(10);
30 PRINT "1. EXAMINE a record on file"
39 PRINT TAB(10);
40 PRINT "2. ADD     a record to the file"
49 PRINT TAB(10);
50 PRINT "3. DELETE  a record from the file"
59 PRINT TAB(10);
60 PRINT "4. PRINT OUT the entire file"
69 PRINT TAB(21);
70 INPUT "Input #: ",CHOICE
72 IF CHOICE<1 THEN 70
73 IF CHOICE>4 THEN 70
75 ON CHOICE GOTO 80, 120, 130, 170
80 MATCH=0
81 GOSUB 600
83 IF MATCH = 0 THEN 9
84 LAST.NAME$ = L$
85 FIRST.NAME$ = F$
86 STREET$ = S$
87 CITY$ = C$
88 STATE$ = ST$
89 ZIP$ = Z$
90 TELEPHONE$ = T$
92 GOSUB 300
93 IF MID$(RESPONSE$,1,1)="N" THEN 9
94 GOSUB 200
95 GOSUB 300
96 IF MID$(RESPONSE$,1,1)="Y" THEN 94
97 IF L$+F$ <>LAST.NAME$+FIRST.NAME$ THEN 112
99 OPEN "R",1,"DIRECTRY.BAS",104
100 FIELD #1,20 AS L$,20 AS F$,25 AS S$,20 AS C$,2 AS ST$,5 AS Z$,12 AS T$
101 LSET L$ = LAST.NAME$
102 LSET F$ = FIRST.NAME$
103 LSET S$ = STREET$
104 LSET C$ = CITY$
105 LSET ST$ = STATE$
106 LSET Z$ = ZIP$
107 LSET T$ = TELEPHONE$
108 PUT #1, RECORD.NUMBER
109 CLOSE #1
110 GOTO 9
112 PRINT "LAST AND FIRST NAMES MAY NOT BE CHANGED."
114 PRINT "YOUR MUST DELETE THE OLD RECORD AND THEN"
116 PRINT "ADD THE NEW ONE."
118 INPUT "PRESS RETURN TO CONTINUE",Y$
119 GOTO 9
120 GOSUB 200
122 GOSUB 300
124 IF MID$(RESPONSE$,1,1)="Y" THEN 120
126 GOSUB 400
128 GOTO 9
130 GOSUB 500
132 GOTO 9
170 OPEN "R", 1,"DIRECTRY.BAS",104
172 FIELD #1, 104 AS ENTIRE.RECORD$
174 LPRINT "DIRECTORY": LPRINT
176 GET #1
177 IF EOF(1)=-1 THEN 192
178 LPRINT MID$(ENTIRE.RECORD$,21,20)
179 LPRINT MID$(ENTIRE.RECORD$,1,20)
180 LPRINT MID$(ENTIRE.RECORD$,41,25)
182 LPRINT MID$(ENTIRE.RECORD$,66,20)
184 LPRINT MID$(ENTIRE.RECORD$,86,2)
186 LPRINT MID$(ENTIRE.RECORD$,88,5)
188 LPRINT MID$(ENTIRE.RECORD$,93,12)
189 LPRINT: LPRINT: LPRINT
190 GOTO 176
192 CLOSE #1
194 GOTO 9
200 REM ********** INPUT ROUTINE **********
202 PRINT CHR$(26)
204 GOSUB 244
206 PRINT TAB(21); "DIRECTORY"
208 PRINT TAB(12); "PLEASE SUPPLY THE FOLLOWING:"
210 GOSUB 244
212 PRINT TAB(8);
214 INPUT "Last Name:              ",LAST.NAME$
216 PRINT TAB(8);
218 INPUT "First Name:             ",FIRST.NAME$
219 GOSUB 700
220 PRINT TAB(8);
222 INPUT "Street Address:         ",STREET$
224 PRINT TAB(8);
226 INPUT "City:                   ",CITY$
228 PRINT TAB(8);
230 INPUT "State (ex: NY):         ",STATE$
232 PRINT TAB(8);
234 INPUT "Zip Code:               ",ZIP$
236 PRINT TAB(8);
238 INPUT "Telephone (###-####):   ",TELEPHONE$
240 GOSUB 244
242 RETURN
244 FOR I = 1 TO 5
246     PRINT
248 NEXT I
250 RETURN
300 REM ************* OUTPUT ROUTINE **********
302 PRINT CHR$(26)
304 GOSUB 336
306 PRINT TAB(21);"DIRECTORY"
308 GOSUB 336
310 PRINT TAB(8); "Last Name:             "; LAST.NAME$
312 PRINT TAB(8); "First Name:            "; FIRST.NAME$
314 PRINT TAB(8); "Street Address:        "; STREET$
316 PRINT TAB(8); "City:                  "; CITY$
318 PRINT TAB(8); "State:                 "; STATE$
320 PRINT TAB(8); "Zip Code:              "; ZIP$
322 PRINT TAB(8); "Tel (###-####):        "; TELEPHONE$
324 GOSUB 336
325 REM PRINT "DO YOU WISH TO MAKE ANY CHANGES"; RESPONSE$
326 INPUT "DO YOU WISH TO MAKE ANY CHANGES"; RESPONSE$
328 IF MID$(RESPONSE$,1,1) = "Y" THEN 334
330 IF MID$(RESPONSE$,1,1) <> "N" THEN 326
332 RETURN
334 GOTO 332
336 FOR I = 1 TO 5
338     PRINT
340 NEXT I
342 RETURN
400 REM ************* ADD ROUTINE *************
402 PRINT CHR$(26)
404 MARKER = 0
406 FULL.NAME$ = LAST.NAME$ + FIRST.NAME$
408 OPEN "R", 1, "DIRECTRY.BAS", 104
410 OPEN "R", 2, "UPDATE.BAS", 104
412 FIELD #1,20 AS L$,20 AS F$,25 AS S$,20 AS C$,2 AS ST$,5 AS Z$,12 AS T$
414 FIELD #2,20 AS A$,20 AS B$,25 AS D$,20 AS E$,2 AS G$,5 AS H$,12 AS I$
416 GET #1
418 IF EOF(1) = -1 THEN 452
420 IF MARKER = 1 THEN 434
422 GOSUB 462
424 IF F.N$ <> FULL.NAME$ THEN 434
426 PRINT TAB(11);"THAT RECORD IS ALREADY ON FILE."
428 INPUT "PRESS RETURN TO CONTINUE.",Y$
429 CLOSE #1: CLOSE #2
430 KILL "UPDATE.BAS"
432 GOTO 460
434 LSET A$ = L$
436 LSET B$ = F$
438 LSET D$ = S$
440 LSET E$ = C$
442 LSET G$ = ST$
444 LSET H$ = Z$
446 LSET I$ = T$
448 PUT #2
450 GOTO 416
452 IF MARKER = 1 THEN 455
454 GOSUB 466
455 CLOSE #1: CLOSE #2
456 KILL "DIRECTRY.BAS"
458 NAME "UPDATE.BAS" AS "DIRECTRY.BAS"
460 CLOSE #1: CLOSE #2: RETURN
462 IF F.N$ <=FULL.NAME$ THEN 482
466 LSET A$ = LAST.NAME$
468 LSET B$ = FIRST.NAME$
470 LSET D$ = STREET$
472 LSET E$ = CITY$
474 LSET I$ = TELEPHONE$
476 LSET H$ = ZIP$
478 LSET I$ = TELEPHONE$
480 PUT #2: MARKER = 1
482 RETURN
500 REM *********** DELETE ROUTINE *********
502 MARKER = 0
504 PRINT CHR$(26)
506 PRINT TAB(7);
508 PRINT "FOR THE RECORD THAT YOU WISH TO DELETE:"
510 PRINT TAB(15);
516 INPUT "FIRST NAME: ",FIRST.NAME$
517 GOSUB 700
518 FULL.NAME$ = LAST.NAME$ + FIRST.NAME$
520 OPEN "R", 1, "DIRECTRY.BAS", 104
522 OPEN "R", 2, "UPDATE.BAS", 104
524 FIELD #1, 40 AS F.N$, 64 AS REST$
526 FIELD #2, 40 AS F.N2$, 64 AS REST2$
528 GET #1
530 IF EOF(1)=-1 THEN 546
532 IF MARKER = 0 THEN IF F.N$ = FULL.NAME$ THEN 542
534 LSET F.N2$ = F.N$
536 LSET REST2$ = REST$
538 PUT #2
540 GOTO 528
542 MARKER = 1
544 GOTO 528
546 IF MARKER = 1 THEN 555
548 PRINT: PRINT: PRINT TAB(17);
550 PRINT "RECORD NOT ON FILE."
552 PRINT: PRINT TAB(14);
554 INPUT "PRESS RETURN TO CONTINUE",Y$
555 CLOSE #1: CLOSE #2
556 KILL "DIRECTRY.BAS"
558 NAME "UPDATE.BAS" AS "DIRECTRY.BAS"
560 CLOSE #1: CLOSE #2: RETURN
600 REM ********** SEARCH ROUTINE **********
602 PRINT CHR$(26)
604 OPEN "R", 1, "DIRECTRY.BAS", 104
606 FIELD #1,20 AS L$,20 AS F$,25 AS S$,20 AS C$,2 AS ST$,5 AS Z$,12 AS T$
608 GOSUB 652
610 PRINT TAB(12);
612 PRINT "PLEASE SUPPLY THE FOLLOWING:"
614 GOSUB 652
616 PRINT TAB(15);
618 INPUT "LAST NAME:     ";LAST.NAME$
620 PRINT TAB(15);
622 INPUT "FIRST NAME:    ";FIRST.NAME$
623 GOSUB 700
624 RECORD.NUMBER = 1
626 GET #1, RECORD.NUMBER
628 IF L$ <> LAST.NAME$ THEN 634
630 IF F$ <> FIRST.NAME$ THEN 634
631 MATCH = 1
632 CLOSE #1: RETURN
634 IF EOF(1) <> -1 THEN 648
636 GOSUB 652
638 PRINT TAB(17);
640 PRINT "RECORD NOT ON FILE."
642 PRINT: PRINT TAB(14);
644 PRINT "PRESS RETURN TO CONTINUE.",Y$
646 GOTO 632
648 RECORD.NUMBER = RECORD.NUMBER + 1
650 GOTO 626
652 FOR P = 1 TO 6
654     PRINT
656 NEXT P
658 RETURN
700 SPACER$="                      "
710 LAST.NAME$ = LAST.NAME$+SPACER$
720 LAST.NAME$ = MID$(LAST.NAME$,1,20)
730 FIRST.NAME$ = FIRST.NAME$+SPACER$
740 FIRST.NAME$ = MID$(FIRST.NAME$,1,20)
750 RETURN
