10
20
30 :
40 verbose%=TRUE
50 max%=19:src$="":year%=1913
60 :
70 A%=0:X%=1:os%=((USR&FFF4)AND&FF00)DIV256
80 s$=".":fmax%=255:IFos%AND32:d$="\" ELSE IFos%AND8:d$="/" ELSE s$="/":d$=".":fmax%=10
90 A$="":in%=OPENIN("!Make"):IF in%=0:in%=OPENIN("!Make"+s$):IF in%=0:in%=OPENIN("!Make"+s$+"bat")
100 IF in%:REPEAT:A$=GET$#in%:UNTIL EOF#in% OR INSTR(A$,"rem") OR INSTR(A$,"REM"):CLOSE#in%:in%=0
110 A%=INSTR(A$,"src=") :IF A%:src$ =FNs(MID$(A$,A%+4))
120 A%=INSTR(A$,"year="):IF A%:year%=VALMID$(A$,A%+5)
130 A%=INSTR(A$,"max=") :IF A%:max% =VALMID$(A$,A%+4)
140 DIM source$(max%),info$(max%)
150 FOR A%=0 TO max%:READ source$(A%):NEXT
160 DATA "HOUSEHOLD NUMBER","SURNAME","NAME","AGE","RELATIONSHIP","SEX","MARITAL STATUS","STREET ADDRESS"
170 DATA "OCCUPATION","BIRTH YEAR","BIRTH PLACE","BIRTH COUNTY","BIRTH COUNTRY","INDIVIDUAL NUMBER"
180 DATA "CIVIL PARISH","SUB-REGISTRATION DISTRICT","ENUMERATION DISTRICT","PIECE","PAGE","FOLIO"
190 DATA "POSTCODE","WALK ORDER"
200 :
210 ON ERROR PRINT:REPORT:PROCClose_All:PRINT" at line ";ERL:IF ERR=17:QUIT ELSE ON:END
220 age$="":laststreet$=""
230 in%=OPENIN(src$):IF in%=0:PRINT"Couldn't open '"src$"'":END
240 lookup$="Addrs"+s$+"csv"
250 lookup%=OPENIN(lookup$):IF lookup%:PROCcsv_rd(lookup%,info$())
260 out%=OPENOUT(LEFT$("Whitby"+STR$year%+s$+"csv",fmax%))
270 IF out%=0:PRINT"Couldn't open output file, is it already open?":PROCClose_All:END
280 :
290 PROCcsv_wr(out%,source$())
300 IF verbose%:CLS:PRINT':FOR A%=0 TO max%:PRINTFNd0(A%,2);": ";source$(A%);":":NEXT:OFF
310 :
320 PROCcsv_rd(in%,source$()):
330 REPEAT
340 PROCcsv_rd(in%,source$())
350 FOR A%=0 TO max%:source$(A%)=FNs(source$(A%)):NEXT A%
360 IF source$(4)<>"" OR source$(5)<>"":PROCprocess:PROCcsv_wr(out%,info$())
370 UNTILEOF#in%
380 CLOSE#out%:out%=0
390 CLOSE#in%:in%=0
400 QUIT
410 :
420 DEFPROCprocess
430 :
440
450 parish$=""
460 address$=""
470 IF source$(3)<>"":address$=source$(3)+", "
480 IF source$(4)<>"":address$=address$+source$(4)
490 IF source$(4)<>"":IF VALsource$(4)=0:address$=address$+", "
500 IF source$(4)<>"":IF VALsource$(4)>0:address$=address$+" "
510 address$=address$+source$(5)
520
530
540 :
550
560 A$=source$(1)
570 A$=FNswap(A$,"Jn.","John")
580 A$=FNswap(A$,"Hy.","Henry")
590 A$=FNswap(A$,"Rt.","Robert")
600 A$=FNswap(A$,"Wm.","William")
610 A$=FNswap(A$,"Jas.","James")
620 A$=FNswap(A$,"Geo.","George")
630 A$=FNswap(A$,"Albt.","Albert")
640 A$=FNswap(A$,"Alfd.","Alfred")
650 A$=FNswap(A$,"Thos.","Thomas")
660 A$=FNswap(A$,"Edwd.","Edward")
670 A$=FNswap(A$,"Arth.","Arthur")
680 A$=FNswap(A$,"Jsph.","Joseph")
690 A$=FNswap(A$,"Wltr.","Walter")
700 A$=FNswap(A$,"Walt.","Walter")
710 A$=FNswap(A$,"Danl.","Daniel")
720 A$=FNswap(A$,"Glbt.","Gilbert")
730 A$=FNswap(A$,"Chas.","Charles")
740 A$=FNswap(A$,"Eliz.","Elizabeth")
750 A$=FNswap(A$,"Edmnd.","Edmund")
760 A$=FNswap(A$,"Herbt.","Herbert")
770 A$=FNswap(A$,"Margt.","Margaret")
780 A$=FNswap(A$,"Fredk.","Frederick")
790 A$=FNswap(A$,"Elizb.","Elizabeth")
800 A$=FNswap(A$,"Regnld.","Reginald")
810 A$=FNswap(A$,"Christphr.","Christopher")
820 source$(1)=A$
830 :
840
850
860
870 sex$=""
880 A$=source$(1)
890 IF MID$(A$,2,1)=".":A$=MID$(A$,4)
900 IF MID$(A$,2,1)=".":A$=MID$(A$,4)
910 IF LEFT$(A$,4)="Sir ":A$=MID$(A$,5)
920 IF LEFT$(A$,4)="Rev.":A$=MID$(A$,6)
930 IF LEFT$(A$,4)="Maj.":A$=MID$(A$,6)
940 IF LEFT$(A$,5)="Capt.":A$=MID$(A$,7)
950 IF LEFT$(A$,5)="Major":A$=MID$(A$,7)
960 IF LEFT$(A$,7)="Colonel":A$=MID$(A$,9)
970 IF LEFT$(A$,10)="Chancellor":A$=MID$(A$,12)
980 IF LEFT$(A$,21)="Quartermaster-Sergent":A$=MID$(A$,23)
990 IF LEFT$(A$,1)="(":A$=MID$(A$,2,LENA$-2)
1000 A%=INSTR(A$,"."):IF A%:A$=LEFT$(A$,A%-1)+MID$(A$,A%+1)
1010 RESTORE +0
1020 READ s$
1030 REPEAT
1040 READ n$
1050 REPEAT
1060 A%=INSTR(A$,"-"):IF A%=0:A%=INSTR(A$+" "," ")
1070 IF A$=n$ OR LEFT$(A$,A%-1)=n$ OR MID$(A$,A%+1)=n$:sex$=s$
1080 READ n$
1090 UNTILn$="*" OR sex$<>""
1100 READ s$
1110 UNTILs$="*" OR sex$<>""
1120 IF sex$="F":sex$="Female"
1130 IF sex$="M":sex$="Male"
1140 :
1150 DATA M
1160 DATA John,David,Michael,Paul,Peter,Andrew,James,Richard,Robert,Stephen,Christopher,William,Ian,Mark,Alan
1170 DATA Anthony,Thomas,Brian,George,Simon,Colin,Steven,Daniel,Kenneth,Neil,Philip,Joseph,Jonathan,Kevin
1180 DATA Matthew,Raymond,Martin,Stuart,Barry,Ronald,Derek,Charles,Keith,Edward,Lee,Graham,Eric,Gary,Geoffrey
1190 DATA Trevor,Leslie,Jason,Roger,Adam,Darren,Timothy,Terence,Malcolm,Dennis,Benjamin,Arthur,Donald,Samuel
1200 DATA Nicholas,Craig,Carl,Adrian,Harold,Wayne,Nigel,Gordon,Luke,Jamie,Ryan,Frederick,Shaun,Norman,Francis
1210 DATA Duncan,Ernest,Scott,Stanley,Marc,Patrick,Rodney,Sean,Harry,Henry,Frank,Nathan,Alexander,Jack,Douglas
1220 DATA Stewart,Bernard,Jeffrey,Howard,Edwin,Allan,Garry,Albert,Gareth,Russell,Lawrence,Liam,Dean,Martyn
1230 DATA Graeme,Ralph,Jeremy,Vincent,Karl,Joshua,Clifford,Justin,Shane,Tom,Sam,Victor,Cyril,Bryan,Oliver,Hugh
1240 DATA Ben,Aaron,Fred,Jordan,Terry,Barrie,Ricky,Christian,Phillip,Gerald,Carly,Alfred,Denis,Leonard,Desmond
1250 DATA Cedric,Reginald,Clive,Sidney,Laurence,Grant,Arron,Lewis,Gregory,Glen,Callum,Danny,Owen,Wilfred,Alex
1260 DATA Louis,Marcus,Miles,Vivien,Gavin,Kieran,Jon,Damien,Ivan,Dale,Declan,Melvyn,Dominic,Warren,Walter
1270 DATA Jeffery,Julian,Mervyn,Noel,Ashley,Damian,Ross,Antony,Alec,Micheal,Iain,Herbert,Ivor,Vernon,Joel
1280 DATA Bruce,Maurice,Godfrey,Kenny,Angus,Gilbert,Neale,Neville,Alastair,Archibald,Mathew,Edgar,Mitchell
1290 DATA Gerard,Jo,Tony,Calum,Arnold,Errol,Alistair,Glenn,Derrick,Lloyd,Damon,Allen,Kelvin,Steve,Aidan,Dalton
1300 DATA Darran,Lionel,Nick,Fredrick,Alain,Glynn,Horace,Mike,Clarence,Abbi,Pete,Lancelot,Harvey,Stephan,Sammy
1310 DATA Freddie,Mohamed,Allister,Daren,Percy,Jacob,Jimmy,Cornelius,Xavier,Justine,Derick,Greg,Darron,Nicolas
1320 DATA Alfie,Marvin,Christofer,Terrence,Carlos,Bill,Dave,Andre,Winston,Emma,Edmund,Erwin,Austin,Derren,Amos
1330 DATA Clint,Billy,Kieron,Loos,Marmaduke,Wilfrid,Ezra,Wooldridge,Noah,Basil
1340 DATA Abdul,Brent,Byron,Calvin,Cecil,Connor,Duane,Geoff,Gerrald,Issac,Joe,Kirk,Lester,Rob,Robin,Roy,Rueben
1350 DATA Saul,Simeon,Toby,Tristan,Tyrone,Barrington,Chad,Ethan,Frankland,Frazer,Garfield,Gerry,Giles,Huw
1360 DATA Kristoffer,Morris,Rex,Rory,Stefan,Tobias,Ritson,Barnaby,Don,Josh,Les,Louie,Max,Richie,Vincente
1370 DATA Agmondisham,Angelo,Bertie,Bertram,Claude,Cuthbert,Elijah,Enoch,Humphrey,Isaac,Hephziban,Aquila,Bob
1380 DATA Seth,Moses,Denys,Willie,Jardine,Lennard,Azuban,Arthur,Roland,Hubert,William,Rowland,Edwards,Elliot
1390 DATA Jim,Hector,Bernard,Bertrand,Oscar,Geoffry,Horatio,Hughe,Cristopher,Charlie,Randolph,Hugo,Elisha
1400 DATA *
1410 :
1420 DATA F
1430 DATA Margaret,Susan,Patricia,Mary,Christine,Elizabeth,Jean,Barbara,Linda,Karen,Julie,Sarah,Ann,Jane,Helen,Kathleen
1440 DATA Maureen,Joan,Jennifer,Nicola,Carol,Joyce,Dorothy,Anne,Judith,Alison,Janet,Joanne,Sheila,Wendy,Rebecca,Emma
1450 DATA Catherine,Gillian,Jacqueline,Amanda,Valerie,Pauline,Pamela,Lisa,Deborah,Victoria,Elaine,Doreen,Michelle
1460 DATA Laura,Sandra,Heather,Rachel,Sharon,Ruth,Brenda,Louise,Eileen,Audrey,Lesley,Sylvia,Angela,Samantha,Claire
1470 DATA Irene,June,Sally,Marjorie,Tracy,Amy,Maria,Shirley,Diane,Donna,Carole,Paula,Hannah,Fiona,Rosemary,Rita
1480 DATA Natalie,Hazel,Dawn,Kathryn,Beryl,Kerry,Olive,Betty,Denise,Lorraine,Caroline,Gemma,Joanna,Marion,Lynne
1490 DATA Melanie,Jill,Hilda,Lynda,Leanne,Stephanie,Florence,Sophie,Charlotte,Jessica,Yvonne,Doris,Julia,Josephine
1500 DATA Jayne,Edith,Lucy,Marie,Cheryl,Katie,Avis,Clare,Mavis,Kelly,Jeanette,Carolyn,Andrea,Winifred,Tracey,Lynn
1510 DATA Emily,Elsie,Katherine,Sara,Christina,Anna,Frances,Beverley,Zoe,Diana,Janice,Jenny,Teresa,Freda,Nora,Kate
1520 DATA Lorna,Alice,Annie,Jade,Kirsty,Stacey,Tina,Veronica,Norma,Debra,Gwendoline,Danielle,Agnes,Kim,Hayley,Ida
1530 DATA Bridget,Phyllis,Joy,Stella,Grace,Rachael,Vera,Iris,Jodie,Tanya,Eleanor,Ellen,Penelope,Marilyn,Alexandra
1540 DATA Violet,Juliet,Jillian,Jemma,Lindsey,Daphne,Nicole,Katrina,Lily,Gail,Myra,Megan,Ada,Rose,Enid,Lindsay
1550 DATA Dianne,Gladys,Janine,Mandy,Faye,Evelyn,Esther,Theresa,Thelma,Cynthia,Edna,Aileen,Vanessa,Avril,Annette
1560 DATA Gwyneth,Marian,Naomi,Nancy,Muriel,Mildred,Allison,Marlene,Olivia,Olga,Kay,Philippa,Lilian,Rosalind
1570 DATA Georgina,Toni,Lillian,Lauren,Eva,Keeley,Lyndsay,Chloe,Ruby,Rhiannon,Monica,Miriam,Abigail,Michele,Nadine
1580 DATA Bethany,Sonia,Melissa,Marina,Mollie,Rosie,Jenna,Karina,Anita,Zara,Debbie,Rosemarie,Cathryn,Carla,Jenni
1590 DATA Rikki,Lydia,Eunice,Moira,Constance,Marianne,Glynis,Cassie,Suzanne,Tiffany,Anthea,Kerrie,Vikki,Greta
1600 DATA Helena,Priscilla,Kayleigh,Mabel,Roberta,Jennie,Rosalyn,Charlene,Francesca,Gina,Jodi,Nichola,Honor,Rosina
1610 DATA Vivienne,Judy,Rebekah,Isobel,Geraldine,Beatrice,Sadie,Cordelia,Gloria,Erica,Bessie,Hope,Jasmine,Chantelle
1620 DATA Flora,Marcia,Rosaleen,Marguerite,Martha,Williamina,Eveline,Kristina,Katharine,Maxine,Elisabeth,Heidi
1630 DATA Juliette,Nina,Glenys,Jocelyn,Harriet,Deirdre,Maisie,Sybil,Nellie,Selina,Amber,Michaela,Carrie,Jeannette
1640 DATA Philomena,Laureen,Isabel,Tim,Monika,Belinda,Terri,Florance,Kimberley,Adele,Loraine,Sonja,Ingrid,May,Jackie
1650 DATA Janette,Gwendolyn,Christy,Una,Eliza,Kaylea,Vicky,Ivy,Alyson,Robyn,Tara,Kara,Rhoda,Kirstie,Celia,Molly
1660 DATA Madeline,Jaclyn,Holly,Rosalie,Noreen,Colleen,Beth,Jessie,Matilda,Lyn,Coral,Beverly,Jeannie,Myrna,Chelsie
1670 DATA Serena,Zelda,Jannette,Madeleine,Dionne,Margarette,Roslyn,Marelyn,Cassandra,Lea,Juanita,Haydn,Susannah
1680 DATA Allyson,Stephania,Kristie,Antonella,Colette,M,Berenice,Donnella,Ursula,G,Hollie,Rosamond,Jolene,Antonia
1690 DATA Yasmin,Brigette,Morag,Roseanne,Paulette,Rosaline,Kathlyn,Crystal,Cara,Kylee,Ethelinda,Adela,Cathrine
1700 DATA Sabina,Rhona,Poppy,Teri,Gertrude,Queenie,Corrine,Angelique,Peppa,Roxann,Annabel,Rosamund,Clair,Melody
1710 DATA Vicki,Helga,Ellie,Magdalena,Dinah,Kaylee,Gabrielle,Alissa,Natasha,Meg,Eve,Amelia,Bryony,Vanda,Katy,Clara
1720 DATA Siobhan,Jaqualine,Kimberly,Andrena,Nikki,Bette,Roxanne,Suzie,Ethel,Rozanne,Cherry,Sheenagh,Margot,Angie
1730 DATA Liselotte,Susanna,Bronwen,Aimee,Tessa,Sydney,Chrystal,Rosalee,Vickie,Roseanna,Delia,Johanna,Coreen,Lucille
1740 DATA Brigid,Katarina,Becky,Julianne,Tracie,Claudia,Maggie,Aleshia,Ella,Suzy,Gwennoth,Suzanna,Ava,Lana,Andreena
1750 DATA Rebecka,Kathrine,Pollyanna,Cathleen,Nicholla,Bertha,Pamala,Sheelagh,Winafrid,Wilhelmina,Stephenie,Winefride
1760 DATA Adrienne,Bettie,Camilla,Roslyne,Alisha,Louisa,Virginia,Sylvie,Peggy,Anastasia,Deb,Gwenneth,Winnie,Bessy
1770 DATA Ashlea,Caitlin,Chelcea,Cherie,Clarissa,Collette,Deirdre,Dianna,Effie,Erika,Fenella,Georgia,Gill,Glenda
1780 DATA Inmaculada,Monica,Jacinth,Jamielee,Jeana,Madge,Margo,Millicent,Nadia,Niki,Regina,Robina,Ruebina,Serendipity
1790 DATA Stefenie,Suelene,Suzette,Svetlana,Trudy,Pearl,Ana,Berverlie,Birgitta,Catriona,Claudine,Deanna,Deidre,Dolores
1800 DATA Dora,Elfrieda,Estelle,Gaynor,Isla,Katryna,Linsay,Linzi,Linzie,Lola,Lora,Lynzee,Marylyn,Tammy,Tamsin,Trudi
1810 DATA Auriel,Auriol,Beverlie,Dilys,Lizzie,Lois,Marrissa,Paige,Tyra,Xylia,Lilla
1820 DATA Adelaide,Alma,Amily,Angelina,Betsy,Cecily,Christiana,Cissie,Clarice,Clarinda,Connie,Dorice,Dorothea,Elfreda
1830 DATA Faith,Fannie,Fanny,Florrie,Ina,Isabell,Isabella,Lillie,Lilly,Mathilda,Maud,Minnie,Mona,Norah,Pattie,Phoebe
1840 DATA Sophia,Tace,Thora,Winifred,Nena,Hephzibah,Zipporah,Blanche,Christania,Emmeline,Hettie,Bella,Alexandria
1850 DATA Susanne,Agatha,Illian,Hetty,Jannie,Iveagh,Annis,Isabelle,Eveagh,Kitty,Maude,Cecilia,Susie,Jeanne,Nancie
1860 DATA Henrietta,Lottie,Rosanna,Rosetta,Polly,Lena,Daisy,Lavinia,Esme,Miss,Misses,Mrs,Hescoitha,Theodosia,Lady
1870 DATA *
1880 DATA *
1890 :
1900
1910 info$()=""
1920 info$(0) ="" :
1930 info$(1) =source$(0) :
1940 info$(2) =source$(1) :
1950 info$(3) ="" :
1960 info$(4) ="" :
1970 info$(5) =sex$ :
1980 info$(6) ="" :
1990 info$(7) =address$ :
2000 info$(8) =source$(2) :
2010 info$(9) ="" :
2020 info$(10)="" :
2030 info$(11)="" :
2040 info$(12)="" :
2050 info$(13)="" :
2060 info$(14)=parish$ :
2070 info$(15)="Whitby" :
2080 info$(16)="" :
2090 info$(17)="" :
2100 info$(18)="" :
2110 info$(19)="" :
2120 :
2130 IF verbose%:FOR A%=0 TO max%:PRINTTAB(36,A%+2);LEFT$(info$(A%),56);SPC(56-LENLEFT$(info$(A%),56));:NEXT
2140 ENDPROC
2150 :
2160 :
2170 DEFFNadd(addr$,yard$,street$)
2180 IF INSTR(addr$,yard$+" "):IF INSTR(addr$,street$)=0:=addr$+", "+street$
2190 IF RIGHT$(addr$,LENyard$)=yard$:IF INSTR(addr$,street$)=0:=addr$+", "+street$
2200 =addr$
2210 :
2220 DEFFNswap(in$,match$,swap$)
2230 A%=INSTR(in$,match$):IF A%:in$=LEFT$(in$,A%-1)+swap$+MID$(in$,A%+LENmatch$)
2240 =in$
2250 :
2260 DEFPROCClose_All
2270 lookup%=lookup%:IFlookup%:A%=lookup%:lookup%=0:CLOSE#A%
2280 out%=out%:IFout%:A%=out%:out%=0:CLOSE#A%
2290 in%=in%:IFin%:A%=in%:in%=0:CLOSE#A%
2300 ENDPROC
2310 :
2320 DEFFNd0(A%,N%)=RIGHT$("00000000"+STR$A%,N%)
2330 DEFFNuc(A$):LOCAL B$:IFA$="":=""
2340 REPEATB$=B$+CHR$(ASCA$AND((A$<"@")OR&DF)):A$=MID$(A$,2):UNTILA$="":=B$
2350 DEFFNlc(A$):LOCAL B$:IFA$="":=""
2360 REPEATB$=B$+CHR$(ASCA$OR((A$<"_")AND&20)):A$=MID$(A$,2):UNTILA$="":=B$
2370 DEFFNs(A$):IFLEFT$(A$,1)=" ":REPEATA$=MID$(A$,2):UNTILLEFT$(A$,1)<>" "
2380 IFRIGHT$(A$,1)=" ":REPEATA$=LEFT$(A$,LENA$-1):UNTILRIGHT$(A$,1)<>" "
2390 =A$
2400 :
2410 DEFPROCcsv_rd(i%,array$())
2420 LOCAL n%:n%=0:array$()="":A$=GET$#i%:IFA$="":A$=GET$#i%
2430 A$=A$+","
2440 REPEAT
2450 IF LEFT$(A$,2)="=""":A$=MID$(A$,2)
2460 IF LEFT$(A$,1)="""" THEN
2470 A%=INSTR(A$,""",",2)+1:array$(n%)=MID$(A$,2,A%-3)
2480 ELSE
2490 A%=INSTR(A$,","):array$(n%)=LEFT$(A$,A%-1)
2500 ENDIF
2510 A$=MID$(A$,A%+1):n%=n%+1
2520 UNTILA$=""
2530 ENDPROC
2540 :
2550 DEFPROCcsv_wr(o%,array$())
2560 LOCAL n%,q%:n%=DIM(array$(),1)
2570 FOR A%=0 TO n%:A$=array$(A%)
2580 q%=INSTR(A$,",")
2590 IF q%=0:q%=(ASCA$=48)AND(INSTR(A$,"/")=0) :
2600 IF q%=0:IFVALLEFT$(A$,1):q%=INSTR(A$,"E") :
2610 IF q%=0:q%=LENSTR$VALA$>8 :
2620 IF q%=0:IFVALA$:q%=INSTR(A$,"/")AND(ASCA$<>48):
2630 IF q%=0:q%=LEFT$(A$,1)="-" :
2640 IF q%=0:q%=MID$(A$,3,1)=" "ANDMID$(A$,7,1)=" ":
2650 IF q%:A$=""""+A$+"""":IFINSTR(A$,",")=0:A$="="+A$
2660 BPUT#o%,A$;:IF A%<>n%:BPUT#o%,",";
2670 NEXT A%:BPUT#o%,""
2680 ENDPROC