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