home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1986-11-30 | 23.3 KB | 821 lines
100 REM DISPLAY Program. 110 REM Displays Genealogical Information 120 REM By: Melvin O. Duke. Last Updated 20 February 1986. 200 REM Screen Definitions 210 WIDTH "scrn:", 80 220 SCREEN S1,S2,S3,S4 600 REM Titles 610 TITLE$ = "Display Program" 620 TITLE$ = TITLE$ + " ON DISPLAY" 700 REM Terminate if not called from the Menu 710 IF DD.MENU$ <> "" THEN 770 720 COLOR 7,0 : KEY ON : CLS : LOCATE 15,1 730 PRINT "Cannot run the" 740 PRINT TITLE$ 750 PRINT "Program, unless selected from the MENU" 760 END 770 REM OK 900 REM Dimension Statements 910 DIM PA.ID(2*MAX.PER), CH.ID(2*MAX.PER), PERS.NO(2*MAX.MAR), M.NO(2*MAX.MAR) 920 DIM PERS(15), CH(55) 1000 REM Produce the first screen 1010 KEY ON : CLS : KEY OFF 1020 REM Draw the outer double box 1030 R1 = 1 : C1 = 1 : R2 = 24 : C2 = 79 : GOSUB 1300 1040 REM Find the title location 1050 TITLE.POS = 40 - INT(LEN(TITLE$)/2) 1060 REM Draw the title box 1070 R1=3:C1=TITLE.POS-2:R2=6:C2=TITLE.POS+LEN(TITLE$)+1:GOSUB 1500 1080 REM Print the title 1090 LOCATE 4,TITLE.POS : PRINT TITLE$ 1100 LOCATE 5,40-INT(LEN(VERSION$)/2) : PRINT VERSION$; 1230 REM Draw the Copyright box 1240 R1 = 19 : C1 = 21 : R2 = 22 : C2 = 59 : GOSUB 1300 1250 REM Print the Copyright 1260 LOCATE 20,40-INT(LEN(COPY1$)/2) : PRINT COPY1$; 1270 LOCATE 21,40-INT(LEN(COPY2$)/2) : PRINT COPY2$; 1280 GOTO 1700 1300 REM subroutine to print a double box 1310 COLOR P 1320 FOR I = R1 + 1 TO R2 - 1 1330 LOCATE I, C1 : PRINT CHR$(186); 1340 LOCATE I, C2 : PRINT CHR$(186); 1350 NEXT I 1360 FOR J = C1 + 1 TO C2 - 1 1370 LOCATE R1, J : PRINT CHR$(205); 1380 LOCATE R2, J : PRINT CHR$(205); 1390 NEXT J 1400 LOCATE R1, C1 : PRINT CHR$(201); 1410 LOCATE R1, C2 : PRINT CHR$(187); 1420 LOCATE R2, C1 : PRINT CHR$(200); 1430 LOCATE R2, C2 : PRINT CHR$(188); 1440 COLOR W 1450 RETURN 1500 REM subroutine to print a single box 1510 COLOR B 1520 FOR I = R1 + 1 TO R2 - 1 1530 LOCATE I, C1 : PRINT CHR$(179); 1540 LOCATE I, C2 : PRINT CHR$(179); 1550 NEXT I 1560 FOR J = C1 + 1 TO C2 - 1 1570 LOCATE R1, J : PRINT CHR$(196); 1580 LOCATE R2, J : PRINT CHR$(196); 1590 NEXT J 1600 LOCATE R1, C1 : PRINT CHR$(218); 1610 LOCATE R1, C2 : PRINT CHR$(191); 1620 LOCATE R2, C1 : PRINT CHR$(192); 1630 LOCATE R2, C2 : PRINT CHR$(217); 1640 COLOR W 1650 RETURN 1700 REM ask user to press a key to continue 1710 LOCATE 25,1 1720 PRINT "Have Data Diskette(s) in Place, then Press any key to continue."; 1730 K$ = INKEY$ : IF K$ = "" THEN 1730 1740 KEY ON : CLS 1750 GOTO 3570 2000 REM DISPLAY Program Starts Here. 2010 REM Draw the form on the display 2020 R1= 1 : C1= 1 : R2=21 : C2=79: GOSUB 1300 'Double box 2030 R1= 3 : C1= 1 : R2= 3 : C2=79: GOSUB 3210 'Horizontal Double 2040 LOCATE 2,3 : PRINT "Pedigree Chart for:" 2050 LOCATE 4,68 : COLOR N : PRINT "Birthdate:" : COLOR W 2060 LOCATE 12, 3 : I = 1 : GOSUB 2470 2070 LOCATE 8,11 : COLOR B : PRINT CHR$(218)+CHR$(196); 2080 LOCATE 9,11 : PRINT CHR$(179); 2090 LOCATE 10,11 : PRINT CHR$(179); 2100 LOCATE 11,11 : PRINT CHR$(179); 2110 LOCATE 8,13 : I = 2 : GOSUB 2510 2120 LOCATE 16,11 : COLOR B : PRINT CHR$(192)+CHR$(196); 2130 LOCATE 13,11 : PRINT CHR$(179); 2140 LOCATE 14,11 : PRINT CHR$(179); 2150 LOCATE 15,11 : PRINT CHR$(179); 2160 LOCATE 16,13 : I = 3 : GOSUB 2510 2170 LOCATE 6,21 : COLOR B : PRINT CHR$(218)+CHR$(196); 2180 LOCATE 7,21 : PRINT CHR$(179); 2190 LOCATE 6,23 : I = 4 : GOSUB 2540 2200 LOCATE 10,21 : COLOR B : PRINT CHR$(192)+CHR$(196); 2210 LOCATE 9,21 : PRINT CHR$(179); 2220 LOCATE 10,23 : I = 5 : GOSUB 2540 2230 LOCATE 14,21 : COLOR B : PRINT CHR$(218)+CHR$(196); 2240 LOCATE 15,21 : PRINT CHR$(179); 2250 LOCATE 14,23 : I = 6 : GOSUB 2540 2260 LOCATE 18,21 : COLOR B : PRINT CHR$(192)+CHR$(196); 2270 LOCATE 17,21 : PRINT CHR$(179); 2280 LOCATE 18,23 : I = 7 : GOSUB 2540 2290 LOCATE 5,31 : COLOR B : PRINT CHR$(218)+CHR$(196); 2300 LOCATE 5,33 : I = 8 : GOSUB 2570 2310 LOCATE 7,31 : COLOR B : PRINT CHR$(192)+CHR$(196); 2320 LOCATE 7,33 : I = 9 : GOSUB 2570 2330 LOCATE 9,31 : COLOR B : PRINT CHR$(218)+CHR$(196); 2340 LOCATE 9,33 : I = 10 : GOSUB 2570 2350 LOCATE 11,31 : COLOR B : PRINT CHR$(192)+CHR$(196); 2360 LOCATE 11,33 : I = 11 : GOSUB 2570 2370 LOCATE 13,31 : COLOR B : PRINT CHR$(218)+CHR$(196); 2380 LOCATE 13,33 : I = 12 : GOSUB 2570 2390 LOCATE 15,31 : COLOR B : PRINT CHR$(192)+CHR$(196); 2400 LOCATE 15,33 : I = 13 : GOSUB 2570 2410 LOCATE 17,31 : COLOR B : PRINT CHR$(218)+CHR$(196); 2420 LOCATE 17,33 : I = 14 : GOSUB 2570 2430 LOCATE 19,31 : COLOR B : PRINT CHR$(192)+CHR$(196); 2440 LOCATE 19,33 : I = 15 : GOSUB 2570 2450 COLOR W,K 2460 RETURN 2470 REM Routine to print the lines 2480 COLOR K,W : PRINT RIGHT$(STR$(I),2); 2490 COLOR B,K : PRINT STRING$(62,95); 2500 RETURN 2510 COLOR K,W : PRINT RIGHT$(STR$(I),2); 2520 COLOR B,K : PRINT STRING$(52,95); 2530 RETURN 2540 COLOR K,W : PRINT RIGHT$(STR$(I),2); 2550 COLOR B,K : PRINT STRING$(42,95); 2560 RETURN 2570 COLOR K,W : PRINT RIGHT$(STR$(I),2); 2580 COLOR B,K : PRINT STRING$(32,95); : COLOR W,K 2590 RETURN 2600 REM Draw the Personal Information Chart 2610 KEY OFF 2620 R1 = 1 : C1 = 1 : R2 = 21 : C2 = 79 : GOSUB 1300 'Double box 2630 R1 = 3 : C1 = 1 : R2 = 3 : C2 = 79 : GOSUB 3210 'Horizontal double 2640 LOCATE 2,3 : PRINT "Personal Information for:" 2650 R1 = 3 : C1 = 40 : R2 = 21 : C2 = 40 : GOSUB 3390 'Vertical Double 2660 LOCATE 4,3 : COLOR N : PRINT "Person:"; 2670 LOCATE 5,3 : COLOR O : PRINT "Record-no.:"; 2680 LOCATE 6,3 : PRINT "Surname:"; 2690 LOCATE 7,3 : PRINT "Given-names:"; 2700 LOCATE 8,3 : PRINT "Sex:"; 2710 R1 = 9 : C1 = 1 : R2 =11 : C2 = 40 : GOSUB 3210 'Horizontal Double 2720 LOCATE 10,3 : COLOR N : PRINT "Person's Father:"; 2730 LOCATE 11,3 : COLOR O : PRINT "Record-no.:"; 2740 LOCATE 12,3 : PRINT "Surname:"; 2750 LOCATE 13,3 : PRINT "Given-names:"; 2760 LOCATE 14,3 : PRINT "Birth-date:"; 2770 R1 = 15 : C1 = 1 : R2 = 15 : C2 = 40 : GOSUB 3300 'Horizontal Single 2780 LOCATE 16,3 : COLOR N : PRINT "Person's Mother:"; 2790 LOCATE 17,3 : COLOR O : PRINT "Record-no.:"; 2800 LOCATE 18,3 : PRINT "Surname:"; 2810 LOCATE 19,3 : PRINT "Given-names:"; 2820 LOCATE 20,3 : PRINT "Birth-date:"; 2830 LOCATE 4,42 : COLOR N : PRINT "Person's Vital Statistics:"; 2840 LOCATE 6,42 : COLOR O : PRINT "Birth-date:"; 2850 LOCATE 7,42 : PRINT "Birth-city:"; 2860 LOCATE 8,42 : PRINT "Birth-county:"; 2870 LOCATE 9,42 : PRINT "Birth-state:"; 2880 LOCATE 11,42 : PRINT "Death-date:"; 2890 LOCATE 12,42 : PRINT "Death-city:"; 2900 LOCATE 13,42 : PRINT "Death-county:"; 2910 LOCATE 14,42 : PRINT "Death-state:"; 2920 LOCATE 16,42 : PRINT "Burial-date:"; 2930 LOCATE 17,42 : PRINT "Burial-city:"; 2940 LOCATE 18,42 : PRINT "Burial-county:"; 2950 LOCATE 19,42 : PRINT "Burial-state:"; : COLOR W,K 2960 RETURN 2970 REM draw a Family Group Sheet 2980 KEY OFF 2990 R1 = 1 : C1 = 1 : R2 = 21 : C2 = 79 : GOSUB 1300 'Double box 3000 R1 = 3 : C1 = 1 : R2 = 3 : C2 = 79 : GOSUB 3210 'Double Horizontal 3010 LOCATE 2,3 : PRINT "Family Group Record"; 3020 LOCATE 2,64 : PRINT "Marriage:"; 3030 LOCATE 4,3 : COLOR O : PRINT "Father:"; 3040 LOCATE 4,56 : PRINT "Birthdate:"; 3050 LOCATE 5,3 : PRINT "Mother:"; 3060 LOCATE 5,56 : PRINT "Birthdate:"; 3070 R1 = 6 : C1 = 1 : R2 = 6 : C2 = 79 : GOSUB 3300 'Single Horizontal 3080 LOCATE 7,3 : COLOR O : PRINT "Marriage Date:"; 3090 LOCATE 7,35 : PRINT "Location:"; 3100 R1 = 8 : C1 = 1 : R2 = 8 : C2 = 79 : GOSUB 3210 'Double Horizontal 3110 R1 = 8 : C1 = 4 : R2 = 21 : C2 = 4 : GOSUB 3480 'Single Vertical 3120 R1 = 8 : C1 = 6 : R2 = 21 : C2 = 6 : GOSUB 3480 'Single Vertical 3130 R1 = 8 : C1 = 40 : R2 = 21 : C2 = 40 : GOSUB 3480 'Single Vertical 3140 LOCATE 9,2 : COLOR N : PRINT "NO"; 3150 LOCATE 9,5 : PRINT "S"; 3160 LOCATE 9,7 : PRINT "Children:"; 3170 LOCATE 9,41 : PRINT "Birthdate:"; 3180 R1 = 8 : C1 = 52 : R2 = 21 : C2 = 52 : GOSUB 3480 'Single Vertical 3190 LOCATE 9,53 : COLOR N : PRINT "Birth Location:"; : COLOR W 3200 RETURN 3210 REM Subroutine to draw a double horizontal line. Attach to double. 3220 COLOR P 3230 FOR J = C1 + 1 TO C2 - 1 3240 LOCATE R1,J : PRINT CHR$(205); 3250 NEXT J 3260 LOCATE R1,C1 : PRINT CHR$(204); 3270 LOCATE R1,C2 : PRINT CHR$(185); 3280 COLOR W 3290 RETURN 3300 REM Subroutine to draw a single horizontal line. Attach to double. 3310 COLOR P 3320 FOR J = C1 + 1 TO C2 - 1 3330 LOCATE R1,J : PRINT CHR$(196); 3340 NEXT J 3350 LOCATE R1,C1 : PRINT CHR$(199); 3360 LOCATE R1,C2 : PRINT CHR$(182); 3370 COLOR W 3380 RETURN 3390 REM Subroutine to draw a double vertical line. Attach to double. 3400 COLOR P 3410 FOR I = R1 + 1 TO R2 - 1 3420 LOCATE I,C1 : PRINT CHR$(186); 3430 NEXT I 3440 LOCATE R1,C1 : PRINT CHR$(203); 3450 LOCATE R2,C1 : PRINT CHR$(202); 3460 COLOR W 3470 RETURN 3480 REM Subroutine to draw a single vertical line. Attach to double. 3490 COLOR P 3500 FOR I = R1 + 1 TO R2 - 1 3510 LOCATE I,C1 : PRINT CHR$(179); 3520 NEXT I 3530 LOCATE R1,C1 : PRINT CHR$(209); 3540 LOCATE R2,C1 : PRINT CHR$(207); 3550 COLOR W 3560 RETURN 3570 REM Program begins here 3580 REM By: Melvin O. Duke. 3590 REM Read the Parent/Child Index 3600 OPEN DD.PCIDX$+"pcindex" FOR INPUT AS #1 3610 KEY OFF 3620 LOCATE 4,1 : PRINT "Open the Parent/Child Index"; 3630 INPUT #1, PC.COUNT 3640 FOR I = 1 TO PC.COUNT 3650 LOCATE 5,1 : PRINT "Reading Index Record #:";I; 3660 INPUT #1, PA.ID(I), CH.ID(I) 3670 NEXT I 3680 CLOSE #1 3690 REM Read the Marriage Index 3700 LOCATE 7,1 : PRINT "Open the Marriage Index"; 3710 OPEN DD.MARIDX$+"mindex" FOR INPUT AS #2 3720 INPUT #2, M.COUNT 3730 FOR I = 1 TO M.COUNT 3740 LOCATE 8,1 : PRINT "Reading Marriage Index Record #:";I: 3750 INPUT #2,PERS.NO(I), M.NO(I) 3760 NEXT I 3770 CLOSE #2 3780 REM Open the Persons File 3790 LOCATE 10,1 : PRINT "Open the Persons File" 3800 OPEN DD.PERS$+"persfile" AS #1 LEN = 256 3810 FIELD 1, 5 AS F1$, 20 AS F2$, 30 AS F3$, 2 AS F4$, 5 AS F5$, 5 AS F6$, 5 AS F7$, 11 AS F8$, 18 AS F9$, 16 AS F10$, 16 AS F11$, 11 AS F12$, 18 AS F13$, 16 AS F14$, 16 AS F15$, 11 AS F16$, 18 AS F17$, 16 AS F18$, 16 AS F19$ 3820 REM open the Marriages File 3830 LOCATE 12,1 : PRINT "Open the Marriage File" 3840 OPEN DD.MARR$+"marrfile" AS #2 LEN = 128 3850 FIELD 2, 5 AS M1$, 5 AS M2$, 5 AS M3$, 5 AS M4$, 11 AS M5$, 18 AS M6$, 16 AS M7$, 16 AS M8$, 45 AS M9$ 3860 REM Open the Ordinance File 3870 IF DD.ORD$ = "no" THEN 3910 3880 LOCATE 14,1 : PRINT "Open the Ordinances File"; 3890 OPEN DD.ORD$+"ordfile" AS #3 LEN = 256 3900 FIELD 3,5ASO1$,11ASO2$,11ASO3$,11ASO4$,5ASO5$,5ASO6$,11ASO7$,11ASO8$,11ASO9$,11ASO10$,11ASO11$,5ASO12$,11ASO13$,11ASO14$,11ASO15$,11ASO16$,11ASO17$,11ASO18$,11ASO19$,11ASO20$,11ASO21$,11ASO22$,11ASO23$,26ASO24$ 3910 REM Obtain a Person Record from the User 3920 LOCATE 20,1 : PRINT SPACE$(79);: LOCATE 20,1 3930 INPUT "Enter the Record-number of a Person (0 to quit)";REPLY$ 3940 IF REPLY$ = "0" THEN 9180 3950 PERS(1) = VAL(REPLY$) 3960 IF PERS(1) < 1 OR PERS(1) > MAX.PER THEN KEY ON : CLS : KEY OFF : LOCATE 19,1 : PRINT "Number is out of range"; : GOTO 3910 3970 REM Obtain the information about a person 3980 GET #1, PERS(1) 3990 KEY ON : CLS 4000 GOSUB 4560 'Extract Personal Information 4010 GOSUB 2600 4020 LOCATE 2,30 : COLOR W : PRINT LEFT$(T3$ + " " + T2$,35); 4030 LOCATE 2,66 : PRINT "Person:";T1 4040 LOCATE 5,16 : COLOR G : PRINT T1 4050 LOCATE 6,16 : PRINT T2$; 4060 LOCATE 7,16 : PRINT LEFT$(T3$,24); 4070 LOCATE 8,16 : PRINT T4$; 4080 LOCATE 6,57 : PRINT T8$; 4090 LOCATE 7,57 : PRINT T9$; 4100 LOCATE 8,57 : PRINT T10$; 4110 LOCATE 9,57 : PRINT T11$; 4120 LOCATE 11,57 : PRINT T12$; 4130 LOCATE 12,57 : PRINT T13$; 4140 LOCATE 13,57 : PRINT T14$; 4150 LOCATE 14,57 : PRINT T15$; 4160 LOCATE 16,57 : PRINT T16$; 4170 LOCATE 17,57 : PRINT T17$; 4180 LOCATE 18,57 : PRINT T18$; 4190 LOCATE 19,57 : PRINT T19$; 4200 PERS(2) = T6 4210 PERS(3) = T7 4220 COLOR W 4230 REM Check if Father is known 4240 IF PERS(2) = 0 THEN GOSUB 4910 : GOTO 4270 4250 GET #1, PERS(2) 4260 GOSUB 4560 'Extract 4270 LOCATE 11,16 : COLOR G : PRINT T1; 4280 LOCATE 12,16 : PRINT T2$; 4290 LOCATE 13,16 : PRINT LEFT$(T3$,24); 4300 LOCATE 14,16 : PRINT T8$; 4310 COLOR W 4320 REM Check if Mother is known 4330 IF PERS(3) = 0 THEN GOSUB 4910 : GOTO 4360 4340 GET #1, PERS(3) 4350 GOSUB 4560 'Extract 4360 LOCATE 17,16 : COLOR G : PRINT T1; 4370 LOCATE 18,16 : PRINT T2$; 4380 LOCATE 19,16 : PRINT LEFT$(T3$,24); 4390 LOCATE 20,16 : PRINT T8$; 4400 COLOR W,K : LOCATE 23,1 : PRINT SPACE$(79); 4410 LOCATE 24,1 : PRINT SPACE$(79); 4420 LOCATE 24,1 : PRINT "(Possible Requests: ps, pc, fg, "; 4430 IF DD.ORD$ = "no" THEN 4450 4440 PRINT "o, "; 4450 PRINT "p1...pn, m1...mn, q)"; 4460 LOCATE 23,1 : INPUT "Type a Request. Then press the 'enter' key."; REPLY$ 4470 IF REPLY$ = "ps" OR REPLY$ = "PS" THEN GOSUB 7800 : GOTO 4400 4480 IF REPLY$ = "pc" OR REPLY$ = "PC" THEN 5120 'Pedigree Chart 4490 IF REPLY$ = "fg" OR REPLY$ = "FG" THEN 6620 'Family Group 4500 IF DD.ORD$ = "no" THEN 4520 4510 IF REPLY$ = "o" OR REPLY$ = "O" THEN 7940 'Ordinances 4520 IF LEFT$(REPLY$,1) = "p" OR LEFT$(REPLY$,1) = "P" THEN PERS(1) = VAL(RIGHT$(REPLY$,LEN(REPLY$)-1)) : KEY ON : CLS : KEY OFF : GOTO 3960 4530 IF LEFT$(REPLY$,1) = "m" OR LEFT$(REPLY$,1) = "M" THEN 9050 4540 IF LEFT$(REPLY$,1) = "q" OR LEFT$(REPLY$,1) = "Q" THEN 9180 4550 LOCATE 22,1 : PRINT "Error in Previous Reply ";REPLY$; : GOTO 4400 4560 REM Routine to Extract Personal Information 4570 T1 = CVS(F1$) 4580 T2$ = F2$ 4590 FOR J = 1 TO LEN(F2$) -1 4600 IF RIGHT$(T2$,1)=" " THEN T2$ = LEFT$(T2$,LEN(T2$)-1) ELSE J = LEN(F2$)-1 4610 NEXT J 4620 T3$ = F3$ 4630 FOR J = 1 TO LEN(F3$) -1 4640 IF RIGHT$(T3$,1)=" " THEN T3$ = LEFT$(T3$,LEN(T3$)-1) ELSE J = LEN(F3$)-1 4650 NEXT J 4660 T4$ = F4$ 4670 IF LEFT$(T4$,1) = "M" THEN T4$ = "Male" 4680 IF LEFT$(T4$,1) = "F" THEN T4$ = "Female" 4690 T5 = CVS(F5$) 4700 T6 = CVS(F6$) 4710 T7 = CVS(F7$) 4720 T8$ = F8$ 4730 T9$ = F9$ 4740 FOR J = 1 TO LEN(F9$) -1 4750 IF RIGHT$(T9$,1)=" " THEN T9$ = LEFT$(T9$,LEN(T9$)-1) ELSE J = LEN(F9$)-1 4760 NEXT J 4770 T10$ = F10$ 4780 T11$ = F11$ 4790 FOR J = 1 TO LEN(F11$) -1 4800 IF RIGHT$(T11$,1)=" " THEN T11$ = LEFT$(T11$,LEN(T11$)-1) ELSE J = LEN(F11$)-1 4810 NEXT J 4820 T12$ = F12$ 4830 T13$ = F13$ 4840 T14$ = F14$ 4850 T15$ = F15$ 4860 T16$ = F16$ 4870 T17$ = F17$ 4880 T18$ = F18$ 4890 T19$ = F19$ 4900 RETURN 4910 REM Blank out a Record 4920 T1 = 0 4930 T2$ = "" 4940 T3$ = "" 4950 T4$ = "" 4960 T5 = 0 4970 T6 = 0 4980 T7 = 0 4990 T8$ = "" 5000 T9$ = "" 5010 T10$ = "" 5020 T11$ = "" 5030 T12$ = "" 5040 T13$ = "" 5050 T14$ = "" 5060 T15$ = "" 5070 T16$ = "" 5080 T17$ = "" 5090 T18$ = "" 5100 T19$ = "" 5110 RETURN 5120 REM Routine to Produce a Pedigree Chart 5130 KEY ON : CLS : KEY OFF 5140 GOSUB 2000 'Draw the Chart 5150 GET #1, PERS(1) 5160 GOSUB 4560 'Extract the Person 5170 LOCATE 2,23 : COLOR W : PRINT LEFT$(T3$ + " " + T2$,42); 5180 LOCATE 2,66 : PRINT "Person:"; PERS(1); 5190 THIS.PERS = PERS(1) : GOSUB 9260 5200 LOCATE 12,6 : COLOR G : PRINT LEFT$(VALUE$,61); 5210 LOCATE 12,68 : PRINT T8$; 5220 PERS(2) = T6 5230 PERS(3) = T7 5240 REM Get 11 5250 IF PERS(2) = 0 THEN GOSUB 4910 : GOTO 5310 5260 GET #1, PERS(2) 5270 GOSUB 4560 'Extract 5280 THIS.PERS = PERS(2) : GOSUB 9260 5290 LOCATE 8,16 : PRINT LEFT$(VALUE$,51); 5300 LOCATE 8,68 : PRINT T8$; 5310 PERS(4) = T6 5320 PERS(5) = T7 5330 REM Get 10 5340 IF PERS(3) = 0 THEN GOSUB 4910 : GOTO 5400 5350 GET #1, PERS(3) 5360 GOSUB 4560 'Extract 5370 THIS.PERS = PERS(3): GOSUB 9260 5380 LOCATE 16,16 : PRINT LEFT$(VALUE$,51); 5390 LOCATE 16,68 : PRINT T8$; 5400 PERS(6) = T6 5410 PERS(7) = T7 5420 REM Get 111 5430 IF PERS(4) = 0 THEN GOSUB 4910 : GOTO 5490 5440 GET #1, PERS(4) 5450 GOSUB 4560 'Extract 5460 THIS.PERS = PERS(4): GOSUB 9260 5470 LOCATE 6,26 : PRINT LEFT$(VALUE$,41); 5480 LOCATE 6,68 : PRINT T8$; 5490 PERS(8) = T6 5500 PERS(9) = T7 5510 REM Get 110 5520 IF PERS(5) = 0 THEN GOSUB 4910 : GOTO 5580 5530 GET #1, PERS(5) 5540 GOSUB 4560 'Extract 5550 THIS.PERS = PERS(5): GOSUB 9260 5560 LOCATE 10,26 : PRINT LEFT$(VALUE$,41); 5570 LOCATE 10,68 : PRINT T8$; 5580 PERS(10) = T6 5590 PERS(11) = T7 5600 REM Get 101 5610 IF PERS(6) = 0 THEN GOSUB 4910 : GOTO 5670 5620 GET #1, PERS(6) 5630 GOSUB 4560 'Extract 5640 THIS.PERS = PERS(6): GOSUB 9260 5650 LOCATE 14,26 : PRINT LEFT$(VALUE$,41); 5660 LOCATE 14,68 : PRINT T8$; 5670 PERS(12) = T6 5680 PERS(13) = T7 5690 REM Get 100 5700 IF PERS(7) = 0 THEN GOSUB 4910 : GOTO 5760 5710 GET #1, PERS(7) 5720 GOSUB 4560 'Extract 5730 THIS.PERS = PERS(7): GOSUB 9260 5740 LOCATE 18,26 : PRINT LEFT$(VALUE$,41); 5750 LOCATE 18,68 : PRINT T8$; 5760 PERS(14) = T6 5770 PERS(15) = T7 5780 REM Get 1111 5790 IF PERS(8) = 0 THEN GOSUB 4910 : GOTO 5850 5800 GET #1, PERS(8) 5810 GOSUB 4560 'Extract 5820 THIS.PERS = PERS(8): GOSUB 9260 5830 LOCATE 5,36 : PRINT LEFT$(VALUE$,31); 5840 LOCATE 5,68 : PRINT T8$; 5850 REM 5860 REM Get 1110 5870 IF PERS(9) = 0 THEN GOSUB 4910 : GOTO 5930 5880 GET #1, PERS(9) 5890 GOSUB 4560 'Extract 5900 THIS.PERS = PERS(9): GOSUB 9260 5910 LOCATE 7,36 : PRINT LEFT$(VALUE$,31); 5920 LOCATE 7,68 : PRINT T8$; 5930 REM 5940 REM Get 1101 5950 IF PERS(10) = 0 THEN GOSUB 4910 : GOTO 6010 5960 GET #1, PERS(10) 5970 GOSUB 4560 'Extract 5980 THIS.PERS = PERS(10): GOSUB 9260 5990 LOCATE 9,36 : PRINT LEFT$(VALUE$,31); 6000 LOCATE 9,68 : PRINT T8$; 6010 REM 6020 REM Get 1100 6030 IF PERS(11) = 0 THEN GOSUB 4910 : GOTO 6090 6040 GET #1, PERS(11) 6050 GOSUB 4560 'Extract 6060 THIS.PERS = PERS(11): GOSUB 9260 6070 LOCATE 11,36 : PRINT LEFT$(VALUE$,31); 6080 LOCATE 11,68 : PRINT T8$; 6090 REM 6100 REM Get 1011 6110 IF PERS(12) = 0 THEN GOSUB 4910 : GOTO 6170 6120 GET #1, PERS(12) 6130 GOSUB 4560 'Extract 6140 THIS.PERS = PERS(12): GOSUB 9260 6150 LOCATE 13,36 : PRINT LEFT$(VALUE$,31); 6160 LOCATE 13,68 : PRINT T8$; 6170 REM 6180 REM Get 1010 6190 IF PERS(13) = 0 THEN GOSUB 4910 : GOTO 6250 6200 GET #1, PERS(13) 6210 GOSUB 4560 'Extract 6220 THIS.PERS = PERS(13): GOSUB 9260 6230 LOCATE 15,36 : PRINT LEFT$(VALUE$,31); 6240 LOCATE 15,68 : PRINT T8$; 6250 REM 6260 REM Get 1001 6270 IF PERS(14) = 0 THEN GOSUB 4910 : GOTO 6330 6280 GET #1, PERS(14) 6290 GOSUB 4560 'Extract 6300 THIS.PERS = PERS(14): GOSUB 9260 6310 LOCATE 17,36 : PRINT LEFT$(VALUE$,31); 6320 LOCATE 17,68 : PRINT T8$; 6330 REM 6340 REM Get 1000 6350 IF PERS(15) = 0 THEN GOSUB 4910 : GOTO 6410 6360 GET #1, PERS(15) 6370 GOSUB 4560 'Extract 6380 THIS.PERS = PERS(15): GOSUB 9260 6390 LOCATE 19,36 : PRINT LEFT$(VALUE$,31); 6400 LOCATE 19,68 : PRINT T8$; 6410 COLOR W 6420 LOCATE 23,1 : PRINT SPACE$(79); 6430 LOCATE 24,1 : PRINT SPACE$(79); 6440 LOCATE 24,1 : PRINT "(Possible Requests: ps, pc, fg, l1...ln, p1...pn, m1...mn, q)"; 6450 LOCATE 23,1 : INPUT "Type a Request. Then press the 'enter' key."; REPLY$ 6460 IF REPLY$ = "ps" OR REPLY$ = "PS" THEN GOSUB 7800 : GOTO 6420 6470 IF REPLY$ = "pc" OR REPLY$ = "PC" THEN 5120 6480 IF REPLY$ = "fg" OR REPLY$ = "FG" THEN 6620 6490 IF LEFT$(REPLY$,1) = "l" OR LEFT$(REPLY$,1) = "L" THEN 6500 ELSE 6580 6500 WHO = (VAL(RIGHT$(REPLY$,LEN(REPLY$)-1))) 6510 IF WHO < 1 OR WHO > 15 THEN 6520 ELSE 6570 6520 KEY ON : CLS : KEY OFF 6530 LOCATE 20,1 : PRINT "Line-number is out of range" 6540 LOCATE 22,1 : PRINT "Press any key to continue" 6550 A$ = INKEY$ : IF A$ = "" THEN 6550 6560 GOTO 3960 6570 PERS(1) = PERS(WHO) : GOTO 3960 6580 IF LEFT$(REPLY$,1) = "p" OR LEFT$(REPLY$,1) = "P" THEN PERS(1) = VAL(RIGHT$(REPLY$,LEN(REPLY$)-1)) : GOTO 3960 6590 IF LEFT$(REPLY$,1) = "m" OR LEFT$(REPLY$,1) = "M" THEN 9050 6600 IF LEFT$(REPLY$,1) = "q" OR LEFT$(REPLY$,1) = "Q" THEN 9180 6610 LOCATE 22,1 : PRINT "Error in Previous Reply ";REPLY$; : GOTO 6420 6620 REM Routine to Produce a Family Group Record 6630 KEY ON : CLS 6640 GOSUB 2970 'Draw the form 6650 REM search the marriage index for the Person's Marriage 6660 FOUND = 0 6670 FOR L = 1 TO M.COUNT 6680 IF PERS(1) > PERS.NO(L) THEN 6740 6690 IF PERS(1) < PERS.NO(L) THEN L = M.COUNT : GOTO 6740 6700 REM found a Marriage 6710 FOUND = 1 6720 GET #2, M.NO(L) 6730 L = M.COUNT 6740 NEXT L 6750 IF FOUND = 1 THEN 6810 6760 REM No marriage found 6770 LOCATE 22,1 : COLOR W,K : PRINT "No Marriage Found"; 6780 LOCATE 23,1 : PRINT "Press any key to continue"; 6790 A$ = INKEY$ : IF A$ = "" THEN 6790 6800 KEY ON : CLS : KEY OFF : GOTO 3970 6810 REM extract Information from the Marriage Record 6820 TT1 = CVS(M1$) 6830 IF TT1 < 1 THEN 6760 6840 TT2 = CVS(M2$) 6850 TT3 = CVS(M3$) 6860 TT4 = CVS(M4$) 6870 TT5$ = M5$ 6880 TT6$ = M6$ 6890 REM Right-trim 6900 FOR J = 1 TO LEN(M6$) -1 6910 IF RIGHT$(TT6$,1)=" " THEN TT6$ = LEFT$(TT6$,LEN(TT6$)-1) ELSE J = LEN(M6$)-1 6920 NEXT J 6930 TT7$ = M7$ 6940 TT8$ = M8$ 6950 REM Right-trim 6960 FOR J = 1 TO LEN(M8$) -1 6970 IF RIGHT$(TT8$,1)=" " THEN TT8$ = LEFT$(TT8$,LEN(TT8$)-1) ELSE J = LEN(M8$)-1 6980 NEXT J 6990 TT9$ = M9$ 7000 REM print the Marriage Information 7010 LOCATE 2,73 : COLOR W : PRINT TT1 7020 LOCATE 7,18 : COLOR G : PRINT TT5$ 7030 IF TT6$ = " " AND TT8$ = " " THEN 7050 7040 LOCATE 7,45 : PRINT LEFT$(TT6$+", "+TT8$,34) 7050 REM get the Husband's Record 7060 GET #1, TT2 7070 GOSUB 4560 'Extract 7080 THIS.PERS = TT2 : GOSUB 9260 7090 LOCATE 4,11 : COLOR G : PRINT LEFT$(VALUE$,44); 7100 LOCATE 4,67 : PRINT T8$; 7110 REM get the Wife's Record 7120 GET #1, TT3 7130 GOSUB 4560 'Extract 7140 THIS.PERS = TT3 : GOSUB 9260 7150 LOCATE 5,11 : COLOR G : PRINT LEFT$(VALUE$,44); 7160 LOCATE 5,67 : PRINT T8$; 7170 REM now find the children 7180 CHILD.COUNT = 0 7190 FOR IC = 1 TO 55 7200 CH(IC) = 0 7210 NEXT IC 7220 REM search the parent/child index 7230 FOR LL = 1 TO PC.COUNT 7240 IF TT2 > PA.ID(LL) THEN 7620 7250 IF TT2 < PA.ID(LL) THEN LL = PC.COUNT : GOTO 7620 7260 REM found a child 7270 GET #1, CH.ID(LL) 7280 GOSUB 4560 'Extract 7290 REM verify that Mother is the same 7300 IF TT3 <> T7 THEN 7620 7310 REM Found a valid child 7320 CHILD.COUNT = CHILD.COUNT + 1 7330 SHOW.COUNT = CHILD.COUNT 7340 IF CHILD.COUNT = 1 THEN 7510 7350 IF CHILD.COUNT > 11 THEN SHOW.COUNT = CHILD.COUNT - 11 7360 IF CHILD.COUNT > 22 THEN SHOW.COUNT = CHILD.COUNT - 22 7370 IF CHILD.COUNT > 33 THEN SHOW.COUNT = CHILD.COUNT - 33 7380 IF CHILD.COUNT > 44 THEN SHOW.COUNT = CHILD.COUNT - 44 7390 IF (CHILD.COUNT-1) MOD 11 = 0 THEN 7400 ELSE 7510 7400 LOCATE 23,1 : PRINT SPACE$(79); 7410 LOCATE 23,1 : PRINT "Press p to Print Screen, or any other key to continue" 7420 A$ = INKEY$ : IF A$ = "" THEN 7420 7430 IF A$ = "P" OR A$ = "p" THEN GOSUB 7800 : GOTO 7420 7440 REM blank the previous children 7450 FOR ROW = 9 TO 20 7460 LOCATE ROW,2 : PRINT SPACE$(77); 7470 NEXT ROW 7480 REM restore the rest of the display 7490 GOSUB 3110 7500 LOCATE 23,1 : PRINT SPACE$(79) 7510 CH(CHILD.COUNT) = CH.ID(LL) 7520 LOCATE 9+SHOW.COUNT,2 : COLOR K,W 7530 PRINT RIGHT$(STR$(CHILD.COUNT),2); : COLOR G,K 7540 LOCATE 9+SHOW.COUNT,5 : PRINT LEFT$(F4$,1); 'Sex 7550 NM$ = T2$+", "+T3$ 7560 IF T2$ = " " OR T3$ = " " THEN NM$ = T2$+T3$ 7570 LOCATE 9+SHOW.COUNT,7 : PRINT LEFT$(NM$,33); 7580 LOCATE 9+SHOW.COUNT,41 : PRINT T8$; 7590 IF T9$ = " " AND T11$ = " " THEN 7610 7600 LOCATE 9+SHOW.COUNT,53 : PRINT LEFT$(T9$+", "+T11$,26); 7610 COLOR W,K 7620 NEXT LL 7630 LOCATE 23,1 : PRINT SPACE$(79); 7640 LOCATE 24,1 : PRINT SPACE$(79); 7650 LOCATE 24,1 : PRINT "(Possible Requests: ps, f, m, p1...pn, c1...cn, m1...mn, q)"; 7660 LOCATE 23,1 : INPUT "Type a Request. Then press the 'enter' key."; REPLY$ 7670 IF REPLY$ = "ps" OR REPLY$ = "PS" THEN GOSUB 7800 : GOTO 7630 7680 IF REPLY$ = "pc" OR REPLY$ = "PC" THEN LOCATE 22,1 : PRINT "Error in Previous Reply ";REPLY$; : GOTO 7630 7690 IF REPLY$ = "f" OR REPLY$ = "F" THEN PERS(1) = TT2 : GOTO 3970 7700 IF REPLY$ = "m" OR REPLY$ = "M" THEN PERS(1) = TT3 : GOTO 3970 7710 IF LEFT$(REPLY$,1) = "p" OR LEFT$(REPLY$,1) = "P" THEN PERS(1) = VAL(RIGHT$(REPLY$,LEN(REPLY$)-1)) : GOTO 3960 7720 IF LEFT$(REPLY$,1) = "c" OR LEFT$(REPLY$,1) = "C" THEN 7730 ELSE 7770 7730 CHLD = VAL(RIGHT$(REPLY$,LEN(REPLY$)-1)) 7740 IF CHLD < 1 OR CHLD > CHILD.COUNT THEN 7790 7750 PERS(1) = CH(CHLD) 7760 GOTO 3970 'for personal 7770 IF LEFT$(REPLY$,1) = "m" OR LEFT$(REPLY$,1) = "M" THEN 9050 'marriage 7780 IF LEFT$(REPLY$,1) = "q" OR LEFT$(REPLY$,1) = "Q" THEN 9180 7790 LOCATE 22,1 : PRINT "Error in Previous Reply ";REPLY$; : GOTO 7630 7800 REM Routine to Print the Screen 7810 REM Accessed by users 'ps' reply 7820 FOR ROW = 1 TO 20 7830 THIS$ = SPACE$(79) 7840 FOR COL = 1 TO 79 7850 X = SCREEN(ROW,COL) 7860 IF X > 125 THEN X = 32 7870 IF X < 32 THEN X = 32 7880 MID$(THIS$,COL,1) = CHR$(X) 7890 NEXT COL 7900 LPRINT THIS$ 7910 NEXT ROW 7920 LPRINT FORM.FEED$; 7930 RETURN 7940 REM Routine to Display the Ordinances 7950 KEY ON : CLS 7960 GET #1, PERS(1) : GOSUB 4560 7970 GET #3, PERS(1) 7980 SEX$ = LEFT$(T4$,1) 7990 REM Extract the Ordinance Information 8000 U1 = CVS(O1$) 8010 REM Blank Ordinances of no Ordinance Record Present 8020 IF U1 = 0 THEN GOSUB 9360 : GOTO 8260 8030 U2$ = O2$ 8040 U3$ = O3$ 8050 U4$ = O4$ 8060 U5 = CVS(O5$) 8070 U6 = CVS(O6$) 8080 U7$ = O7$ 8090 U8$ = O8$ 8100 U9$ = O9$ 8110 U10$ = O10$ 8120 U11$ = O11$ 8130 U12 = CVS(O12$) 8140 U13$ = O13$ 8150 U14$ = O14$ 8160 U15$ = O15$ 8170 U16$ = O16$ 8180 U17$ = O17$ 8190 U18$ = O18$ 8200 U19$ = O19$ 8210 U20$ = O20$ 8220 U21$ = O21$ 8230 U22$ = O22$ 8240 U23$ = O23$ 8250 U24$ = O24$ 8260 KEY OFF 8270 R1 = 1 : C1 = 1 : R2 = 21 : C2 = 79 : GOSUB 1300 'Double Box 8280 R1 = 3 : C1 = 1 : R2 = 3 : C2 = 79 : GOSUB 3210 'Horizontal Double 8290 R1 = 19 : C1 = 1 : R2 = 19 : C2 = 79 : GOSUB 3210 'Horizontal Double 8300 LOCATE 2,3 : PRINT "Ordinances of:"; 8310 LOCATE 4,7 : COLOR N : PRINT "Personal Record"; : COLOR O 8320 LOCATE 5,3 : PRINT "Christening:"; 8330 LOCATE 6,3 : PRINT "Blessing:"; 8340 LOCATE 7,3 : PRINT "Sealed to Parents:"; 8350 LOCATE 8,5 : PRINT "Father's Rec.no:"; 8360 LOCATE 9,6 : PRINT "Name:"; 8370 LOCATE 10,5 : PRINT "Mother's Rec.no:"; 8380 LOCATE 11,6 : PRINT "Name:"; 8390 LOCATE 12,3 : PRINT "Baptism:"; 8400 LOCATE 13,3 : PRINT "Confirmation:"; 8410 LOCATE 14,3 : PRINT "Patriarchal Blessing:"; 8420 LOCATE 15,3 : PRINT "Endowment:"; 8430 REM Test for male. Skip if male. 8440 IF SEX$ = "M" THEN 8480 8450 LOCATE 16,3 : PRINT "Sealed to Husband:"; 8460 LOCATE 17,5 : PRINT "Husband's Rec.no:"; 8470 LOCATE 18,6 : PRINT "Name:"; 8480 REM Test for Male. Skip if not 8490 IF SEX$ <> "M" THEN 8630 8500 R1 = 3 : R2 = 19 : C1 = 51 : C2 = 51 : GOSUB 3390 "Vertical Double 8510 LOCATE 4,57 : COLOR N : PRINT "Priesthood Record"; : COLOR O 8520 LOCATE 5,53 : PRINT "Aaronic:"; 8530 LOCATE 6,55 : PRINT "Deacon:"; 8540 LOCATE 7,55 : PRINT "Teacher:"; 8550 LOCATE 8,55 : PRINT "Priest:"; 8560 LOCATE 10,53 : PRINT "Melchizedek:"; 8570 LOCATE 11,55 : PRINT "Elder:"; 8580 LOCATE 12,55 : PRINT "Seventy:"; 8590 LOCATE 13,55 : PRINT "High Priest:"; 8600 LOCATE 15,53 : PRINT "Bishop:"; 8610 LOCATE 16,53 : PRINT "Patriarch:"; 8620 LOCATE 17,53 : PRINT "Apostle:"; 8630 LOCATE 20,3 : PRINT "Occupation:"; 8640 REM Print the Information Currently Present 8650 LOCATE 2,18 : COLOR W : PRINT LEFT$(T3$ + " " + T2$,47); 8660 LOCATE 2,66 : PRINT "Rec.no:";T1; 8670 LOCATE 5,28 : COLOR G : PRINT U2$; 8680 LOCATE 6,28 : PRINT U3$; 8690 LOCATE 7,28 : PRINT U4$; 8700 IF SEX$ = "M" THEN NO.SP = 38 ELSE NO.SP = 51 8710 LOCATE 8,27 : PRINT U5; 8720 IF U5 = 0 THEN 8750 8730 GET #1, U5 : GOSUB 4560 'Extract Father Information 8740 LOCATE 9,12 : PRINT LEFT$(T3$ + " " + T2$,NO.SP); 8750 LOCATE 10,27 : PRINT U6; 8760 IF U6 = 0 THEN 8790 8770 GET #1, U6 : GOSUB 4560 'Extract Mother Information 8780 LOCATE 11,12 : PRINT LEFT$(T3$ + " " + T2$,NO.SP); 8790 LOCATE 12,28 : PRINT U7$; 8800 LOCATE 13,28 : PRINT U8$; 8810 LOCATE 14,28 : PRINT U9$; 8820 LOCATE 15,28 : PRINT U10$; 8830 REM Test for male. Skip if male. 8840 IF SEX$ = "M" THEN 8900 8850 LOCATE 16,28 : PRINT U11$; 8860 LOCATE 17,27 : PRINT U12; 8870 IF U12 = 0 THEN 8900 8880 GET #1, U12 : GOSUB 4560 'Extract Spouse Information 8890 LOCATE 18,12 : PRINT T3$ + " " + T2$; 8900 REM Test for Male. Bypass if not. 8910 IF SEX$ <> "M" THEN 9030 8920 LOCATE 5,67 : PRINT U13$; 8930 LOCATE 6,67 : PRINT U14$; 8940 LOCATE 7,67 : PRINT U15$; 8950 LOCATE 8,67 : PRINT U16$; 8960 LOCATE 10,67 : PRINT U17$; 8970 LOCATE 11,67 : PRINT U18$; 8980 LOCATE 12,67 : PRINT U19$; 8990 LOCATE 13,67 : PRINT U20$; 9000 LOCATE 15,67 : PRINT U21$; 9010 LOCATE 16,67 : PRINT U22$; 9020 LOCATE 17,67 : PRINT U23$; 9030 LOCATE 20,15 : PRINT U24$; 9040 GOTO 4400 'For User Action 9050 REM Marriage was requested by Number 9060 MARRIAGE = VAL(RIGHT$(REPLY$,LEN(REPLY$)-1)) 9070 KEY ON : CLS : KEY OFF 9080 IF MARRIAGE > 0 AND MARRIAGE <= MAX.MAR THEN 9150 9090 LOCATE 22,1 : PRINT SPACE$(79); 9100 LOCATE 22,1 : PRINT "Invalid Marriage Number"; 9110 LOCATE 23,1 : PRINT SPACE$(79); 9120 LOCATE 23,1 : PRINT "Press any key to continue." 9130 A$ = INKEY$ : IF A$ = "" THEN 9130 9140 GOTO 3970 9150 GOSUB 2970 'Print the form 9160 GET #2, MARRIAGE 9170 GOTO 6810 9180 REM Wrapup 9190 CLOSE #1 9200 CLOSE #2 9210 IF DD.ORD$ = "no" THEN 9230 9220 CLOSE #3 9230 KEY ON : CLS : KEY OFF : LOCATE 21,1 : COLOR W,K 9240 PRINT "End of Program" 9250 RUN DD.MENU$+"menu" 9260 REM Routine to Convert a number to a string. This.pers is input 9270 REM value$ is output, with record number and persons name. 9280 VALUE$ = STR$(THIS.PERS) 9290 WIDE = LEN(VALUE$) 9300 VALUE$ = RIGHT$(VALUE$,WIDE-1) 9310 NM$ = T2$+", "+T3$ 9320 IF T2$ = " " OR T3$ = " " THEN NM$ = T2$+T3$ 9330 IF T2$ = " " AND T3$ = " " THEN NM$ = "" 9340 VALUE$ = "("+VALUE$+") "+NM$ 9350 RETURN 9360 REM Blank Ordinances if No Ord Record 9370 U2$ = "" : U3$ = "" : U4$ = "" 9380 U5 = 0 : U6 = 0 : U12 = 0 9390 U7$ = "" : U8$ = "" : U9$ = "" : U10$ = "" 9400 U11$ = "" : U13$ = "" : U14$ = "" : U15$ = "" 9410 U16$ = "" : U17$ = "" : U18$ = "" : U19$ = "" 9420 U20$ = "" : U21$ = "" : U22$ = "" : U23$ = "" 9430 U24$ = "" 9440 RETURN