10
20
30 :
40 sort%=FALSE
50 verbose%=TRUE
60 max%=19:year%=1939:month%=9:day%=29:minfsize%=20*1024
70 :
80 A%=0:X%=1:os%=((USR&FFF4)AND&FF00)DIV256
90 s$=".":fmax%=255:IFos%AND32:d$="\" ELSE IFos%AND8:d$="/" ELSE s$="/":d$=".":fmax%=10
100 DIM head$(max%),info$(max%),len%(max%)
110 FOR A%=0 TO max%:READ head$(A%):NEXT
120 DATA "HOUSEHOLD NUMBER","SURNAME","NAME","AGE","RELATIONSHIP","SEX","MARITAL STATUS","STREET ADDRESS"
130 DATA "OCCUPATION","BIRTH YEAR","BIRTH PLACE","BIRTH COUNTY","BIRTH COUNTRY","INDIVIDUAL NUMBER"
140 DATA "CIVIL PARISH","SUB-REGISTRATION DISTRICT","ENUMERATION DISTRICT","PIECE","PAGE","FOLIO"
150 :
160 ON ERROR REPORT:PROCClose_All:PRINT" at line ";ERL:END:IF ERR=17:QUIT ELSE END
170 out$=LEFT$("Whitby1939"+s$+"csv",fmax%):out%=OPENOUT(out$)
180 IF out%=0:PRINT"Couldn't open output file, is it already open?":END
190 :
200 PROCcsv_wr(out%,head$())
210 IF verbose%:CLS:PRINT':FOR A%=0 TO max%:PRINTFNd0(A%,2);": ";head$(A%);":":NEXT
220 head$(4)="RELATION"
230 :
240 IF verbose%:OFF
250 last$="":lastH$="":lastI$="":ed$="@"
260 FOR a%=3265 TO 3266
270 FOR b%=ASC"A" TO ASC"M"
280 FOR c%=01 TO 25
290 dir$=STR$a%+CHR$b%+"-"+FNd0(c%,2)
300 FOR d%=1 TO 44
310 item$=STR$a%+CHR$b%+FNd0(c%,2)+FNd0(d%,2)
320 leaf$=STR$a%+CHR$b%+"-"+FNd0(c%,2)+"-"+FNd0(d%,2)
330 file$="Downloads"+d$+dir$+d$+leaf$+s$+"htm"
340 IF verbose%:VDU 30:PRINT SPC4;file$;
350 in%=OPENIN(file$):IF in%:PROCscan:IF in%:PROCprocess:IF in%:CLOSE#in%:in%=0
360 NEXT d%
370 NEXT c%
380 NEXT b%
390 NEXT a%
400 :
410 file$="empty"+s$+"csv"
420
430
440 in%=OPENIN(file$)
450 IF in% THEN
460 A$=FNrd(in%) :
470 REPEAT
480 PROCcsv_rd(in%,info$())
490 IF info$(0)<>"" THEN
500 street$=info$(0)
510 house$=FNd0(VALinfo$(1),4)
520 idnum$=FNuc(info$(2))
530 page%=VALinfo$(3)
540 line%=VALinfo$(4)
550 ed$=info$(5)
560 IF page%:idnum$=LEFT$(idnum$,5)+FNd0(page%+1,2)+FNd0(line%,2)
570 info$()=""
580 info$(0) =house$+"/00" :
590 info$(1) ="vacant" :
600 info$(7) =street$ :
610 info$(13)=idnum$ :
620 info$(14)="Whitby" :
630 info$(15)="Whitby" :
640 info$(16)=ed$ :
650 info$(17)="RG101/"+LEFT$(idnum$,5) :
660 info$(18)=FNd0(page%+2,3)+"/"+FNd0(line%,2):
670 PROCprocess
680 ENDIF
690 UNTIL EOF#in%:CLOSE#in%:in%=0
700 ENDIF
710 CLOSE#out%:out%=0:ON
720 IF sort%:IF verbose%:PRINTCHR$30;SPC40;CHR$30;SPC4;"Sorting...";
730
740 IF sort%:OSCLI "Run ..\Tools\CSVSort "+out$+" 17:0:18"
750 QUIT
760 :
770 DEFPROCscan
780
790 :
800
810 line$=""
820 info$()=""
830
840
850
860
870 info$(14)="Whitby" :
880
890
900 :
910 REPEAT
920 field$="":a$=FNs(FNrd(in%)):IFRIGHT$(a$,1)=",":a$=LEFT$(a$,LENa$-1)
930 A%=INSTR(a$,":"):IFA%:field$=LEFT$(a$,A%-1):a$=FNs(MID$(a$,A%+1))
940 field$=FNnoquote(field$):a$=FNnoquote(a$)
950 A%=INSTR(a$,"&"):IFA%:a$=LEFT$(a$,A%-1)+"&"+MID$(a$,A%+5)
960 IF a$="null":a$=""
970 IF a$="-":a$=""
980 :
990 IF field$="Schedule" :info$(0)=a$ :
1000 IF INSTR(a$,"data-id=""Schedule"">"):IFinfo$(0)="":A%=INSTR(a$,">"):info$(0)=FNnohtml(MID$(a$,A%+1))
1010 IF field$="LastNameS" :info$(1)=a$ :
1020 IF field$="FirstNameS" :info$(2)=a$ :
1030 IF field$="Relationship" :info$(4)=a$ :
1040 IF field$="Sex" :info$(5)=a$ :
1050 IF field$="MaritalStatus" :info$(6)=a$ :
1060 IF INSTR(a$,"fa-map-marker") :info$(7)=FNnohtml(a$) :
1070 IF field$="Occupation" :info$(8)=a$ :
1080 IF field$="DOB" :info$(9)=a$ :
1090 IF field$="ScheduleSubNumber" :info$(13)=a$ :
1100 IF field$="EnumDistrict" :info$(16)=a$ :
1110 IF INSTR(a$,"transcriptPlace") :IFinfo$(15)="":A$=FNnohtml(FNs(FNrd(in%))):info$(15)=LEFT$(A$,INSTR(A$+" "," ")-1)
1120 IF INSTR(field$,"refedcode") :a$=FNnohtml(a$):info$(17)=LEFT$(a$,INSTR(a$+" "," ")-1):
1130 :
1140 UNTIL EOF#in% OR info$(17)<>""
1150 IF info$(0)="":info$(0)=lastH$
1160 IF info$(13)="":IF info$(0)=lastH$:info$(13)=STR$(VALlastI$+1):
1170 IF info$(0)+info$(13)=lastH$+lastI$:CLOSE#in%:in%=0:ENDPROC
1180 lastH$=info$(0):lastI$=info$(13)
1190 info$(0)=FNd0(VALlastH$,4)+"/"+FNd0(VALlastI$,2) :
1200 :
1210 info$(13)=item$ :
1220
1230
1240
1250 :
1260
1270 A%=INSTR(info$(17),"/",1+INSTR(info$(17),"/")):line$=MID$(info$(17),A%+1):info$(17)=LEFT$(info$(17),A%-1)
1280 IFLENline$=5:line$=LEFT$(line$,4)+"0"+RIGHT$(line$,1)
1290 info$(18)=line$
1300 info$(19)="":
1310 :
1320
1330 IF info$(0)="0001/01":ed$=CHR$(ASCed$+1)
1340 IF info$(16)="":info$(16)="JGT"+ed$
1350
1360
1370
1380
1390
1400
1410
1420
1430
1440
1450
1460
1470
1480
1490
1500 ENDPROC
1510 :
1520 DEFPROCprocess
1530
1540 A$=FNuc(info$(9)):A%=year%-VALRIGHT$(A$,4):IF INSTR("OCT NOV DEC ",MID$(A$,4,4)):A%=A%-1
1550 IF VALA$=30:IFMID$(A$,4,4)="SEP ":A%=A%-1
1560 IF VALRIGHT$(A$,4):info$(3)=STR$A%
1570 IF info$(3)="0":IF MID$(A$,4,3)="SEP":info$(3)=STR$(30-VALA$)+" days"
1580 IF info$(3)="0":IF MID$(A$,4,3)="AUG":info$(3)="1 mth"
1590 IF info$(3)="0":info$(3)=STR$(INSTR("JUL JUN MAY APR MAY FEB JAN DEC NOV OCT ",MID$(A$,4,4))DIV4+2)+" mths"
1600 :
1610
1620 A$=info$(1):REPEAT:A%=INSTR(A$,"("):IF A%:A$=MID$(A$,A%+1)
1630 UNTIL A%=0:info$(1)=LEFT$(A$,INSTR(A$+")",")")-1)
1640 :
1650
1660 A$=info$(7)
1670 IFINSTR(A$,"'"):REPEAT:A$=FNswap(A$,"'",""):UNTILINSTR(A$,"'")=0
1680 IFINSTR(A$,""""):REPEAT:A$=FNswap(A$,"""",""):UNTILINSTR(A$,"""")=0
1690 IFinfo$(13)>="3265A0314":IFinfo$(13)<="3265A0436":A%=INSTR(A$," "):A$=LEFT$(A$,A%)+"Blackburn's Yard"
1700 IFinfo$(13)>="3265A0437":IFinfo$(13)<="3265A0519":A%=INSTR(A$," "):A$=LEFT$(A$,A%)+"Benson's Yard"
1710 IFinfo$(13)>="3265D1127":IFinfo$(13)<="3265D1144":A%=INSTR(A$," "):A$=LEFT$(A$,A%)+"Church Street"
1720 :
1730
1740 RESTORE +0
1750 READ B$:REPEAT
1760 A$=FNswap(A$,"s "+B$,"'s "+B$)
1770 READ B$
1780 UNTILB$="*"
1790 DATA B,C,G,L,P,S,T,Y,*
1800 :
1810
1820 A%=INSTR(A$,"&"):IF A%:IFMID$(A$,A%+1)=>"a":A$=LEFT$(A$,A%)+" "+LEFT$(A$,A%-2)+MID$(A$,A%+1)
1830 A%=INSTR(A$,","):IF A%:IF MID$(A$,A%+1,1)<>" ":A$=LEFT$(A$,A%)+" "+MID$(A$,A%+1)
1840 A$=FNswap(A$,"Abbotts","Abbot's")
1850 A$=FNswap(A$,"Homer","Horner")
1860 A$=FNswap(A$,"Arm's","Arms")
1870 A$=FNswap(A$,"Step's","Steps")
1880 A$=FNswap(A$,"Steps ","Steps, ")
1890 A$=FNswap(A$,"Infant's","Infant")
1900 A$=FNswap(A$,"Galle ","Gallery, ")
1910 A$=FNswap(A$,"Garden's","Gardens")
1920 A$=FNswap(A$,"Cresent","Crescent")
1930 A$=FNswap(A$,"2 seymour","Seymour, 2")
1940 A$=FNswap(A$,"Building's","Buildings")
1950 A$=FNswap(A$,"Building","Buildings")
1960 A$=FNswap(A$,"Buildings The","Buildings, The")
1970 A$=FNswap(A$,"Marsdens Road","1 Marsden's Place")
1980 A$=FNswap(A$,"Ghant","Ghaut") :
1990 A%=INSTR(A$,"New Way"):IF A%:A$=LEFT$(A$,A%+6):IF VALA$=12 OR VALA$<6:A$=A$+" Ghaut"
2000 A$=FNswap(A$,"Bailby","Boulby")
2010 A$=FNswap(A$,"Ainoley","Ainsley")
2020 A$=FNswap(A$,"Selfleda","Aelfleda")
2030 A$=FNswap(A$,"Furner","Turner")
2040 A$=FNswap(A$,"Michtle","Middle")
2050 A$=FNswap(A$,"Rofery","The Ropery")
2060 A$=FNswap(A$,"mafle House","Maple House")
2070 A$=FNswap(A$,"Bldg's","Buildings")
2080 A$=FNswap(A$," P M C",", Primitive Methodist C")
2090 A$=FNswap(A$,"Blacksmith","Blacksmith's")
2100 A$=FNswap(A$,"Ship Inn Church","Ship Inn, 31 Church")
2110 A$=FNswap(A$,"Long Steps, High Walk","High Walk, Long Steps")
2120 A$=FNswap(A$,"Long Steps, Middle Walk","Middle Walk, Long Steps")
2130 A$=FNswap(A$," East Cliff",", East Cliff")
2140 A$=FNswap(A$,"Brewster's Lane","Brewster Lane")
2150 A$=FNswap(A$,"Abbeylunds Farm","Abbey Lands Farm, East Cliff")
2160 A$=FNswap(A$,"11 Bank House Bridge Street","Bank House, 11 Bridge Street")
2170 A$=FNswap(A$,"East Abbey Terrace East Abbey Terrace","East Abbey Terrace")
2180 A$=FNswap(A$,"Smale's Gallery Mast Yard","Smales' Gallery, Mast Yard")
2190 A$=FNswap(A$,"The Crag Argument's Yard","Argument's Yard, The Cragg")
2200 A$=FNswap(A$,"7-8 Falcon Private Hotel Esplanade","Falcon Private Hotel, 7-8 Esplanade")
2210 A$=FNswap(A$,"The Cra's Pier Road","The Cragg")
2220 A$=FNswap(A$,"The Cra's ","")
2230 A$=FNswap(A$,"The Cras ","")
2240 A$=FNswap(A$,"Cleveda","Clevedon")
2250 A$=FNswap(A$,"The Crag Carter","Carter")
2260 A$=FNswap(A$,"Streon Shalp","Streonshalh")
2270 A$=FNswap(A$,"Streonshalk","Streonshalh")
2280 A$=FNswap(A$,"Pass Haggersgate","Pass")
2290 A$=FNswap(A$," Kyber",", Khyber")
2300 A$=FNswap(A$,"Amusement's","Amusements,")
2310 A$=FNswap(A$,"View Helredale","View, Helredale")
2320 A$=FNswap(A$,"Cottage's","Cottages")
2330 A$=FNswap(A$,"Peters ","Peter's ")
2340 A$=FNswap(A$,"Abbots ","Abbot's ")
2350 A$=FNswap(A$,"Ghaut ","Ghaut, ")
2360 A$=FNswap(A$,"Roath","Routh")
2370 A$=FNswap(A$,"Ronth","Routh")
2380 A$=FNswap(A$,"Tower Flats","Tower Flats,")
2390 A$=FNswap(A$,"Mill Close","Well Close")
2400 A$=FNswap(A$,"Stables ","Stables, ")
2410 A$=FNswap(A$,"Cottage ","Cottage, ")
2420 A$=FNswap(A$,"Hse","House")
2430 A$=FNswap(A$,"House ","House, ")
2440 A$=FNswap(A$,"House, Hotel","House Hotel")
2450 A$=FNswap(A$,"House, Chief","House Chief")
2460 A$=FNswap(A$,"Hotel ","Hotel, ")
2470 A$=FNswap(A$,"Hotel, Yard","Hotel Yard")
2480 A$=FNswap(A$,"Hotel, Flats","Hotel Flats")
2490 A$=FNswap(A$,"Lodge ","Lodge, ")
2500 A$=FNswap(A$,"Lodge, Farm ","Lodge Farm, ")
2510 A$=FNswap(A$,"Isolation Hospital ","Isolation Hospital, ")
2520 A$=FNswap(A$,"Hoverdead ","Homestead, ")
2530 A$=FNswap(A$,"Bungalow ","Bungalow, ")
2540 A$=FNswap(A$,"Retreat ","Retreat, ")
2550 A$=FNswap(A$," Larpool",", Larpool")
2560 A$=FNswap(A$,"Whitehall Glen Holme","Glen Holme")
2570 A$=FNswap(A$," Whitehall",", Whitehall")
2580 A$=FNswap(A$,"Glenholme","Glen Holme")
2590 A$=FNswap(A$,"Lenskill","Linskill")
2600 A$=FNswap(A$,"Flowersafe","Flowergate")
2610 A$=FNswap(A$,"Flowergate Brunswick Street","Flowergate")
2620 A$=FNswap(A$,"Terrace St Hildas Terrace","Terrace")
2630 A$=FNswap(A$,"Terrace St Hildas Terr","Terrace")
2640 A$=FNswap(A$,"Terrace Flowergate","Terrace")
2650 A$=FNswap(A$," Rd"," Road")
2660 A$=FNswap(A$," Yd"," Yard")
2670 A$=FNswap(A$," Yard "," Yard, ")
2680 A$=FNswap(A$,"Saint ","St. ")
2690 A$=FNswap(A$,"Inn St. ","Inn, St. ")
2700 A$=FNswap(A$,"Staithe","Staith")
2710 A$=FNswap(A$,"Anna Street","Ann's Staith")
2720 A$=FNswap(A$,"St Ann ","St. Ann's ")
2730 A$=FNswap(A$,"St Anns ","St. Ann's ")
2740 A$=FNswap(A$,"St Ann's ","St. Ann's ")
2750 A$=FNswap(A$,"St Peter","St. Peter")
2760 A$=FNswap(A$,"St Hilda","St. Hilda")
2770 A$=FNswap(A$,"St Catharines","St. Catharine's,")
2780 A$=FNswap(A$,"Muneastere","Muncaster's")
2790 A$=FNswap(A$,"Boulton's","Bolton's")
2800 A$=FNswap(A$,"Mc Lacken","McLacklin")
2810 A$=FNswap(A$,"Square ","Square, ")
2820 A$=FNswap(A$,"Mount Cliff","Mount, Cliff")
2830 A$=FNswap(A$,"The Paddock The Paddock","The Paddock")
2840 A$=FNswap(A$,"Belle Vue Terrace Belle Vue Terrace","Belle Vue Terrace")
2850 A$=FNswap(A$,"Westcliff","West Cliff")
2860 :
2870 A$=FNswapchk(A$,"Crag","Cragg")
2880 A$=FNswapchk(A$,"Ave","Avenue")
2890 A$=FNswapchk(A$,"Terr","Terrace")
2900 A$=FNswapchk(A$,"Arms Yard","Whitby Arms Yard")
2910 A$=FNswap(A$,"Blacksmith's Whitby","Blacksmith's")
2920 :
2930 A%=INSTR(A$,"West Cliff"):IF A%:IFMID$(A$,A%-1,1)>"@":A$=FNswap(A$," West Cliff",", West Cliff")
2940 A%=INSTR(A$,"Aelfleda"):IF A%:IFINSTR(A$,",")=0:A%=INSTR(A$+" "," ",15):A$=LEFT$(A$,A%)+", Primitive Methodist Chapel Yard"
2950 A$=FNswap(A$,"''","'")
2960 A$=FNswap(A$,",,",",")
2970 A$=FNswap(A$,"ggg","gg")
2980
2990 IF LEFT$(A$,11)="New Gardens":A$=FNswap(A$,",",""):A%=INSTR(A$," ",5):IFA%:A$=MID$(A$,A%+1)+", "+LEFT$(A$,A%-1)
3000 A%=INSTR(A$,"Floor "):IF A%:B%=INSTR(A$," "):A$=MID$(A$,B%+1,A%-B%+4)+", "+LEFT$(A$,B%)+MID$(A$,A%+6)
3010 IF A$="Kirbys Hotel":A$="Kirby's Hotel, East Terrace"
3020 IF A$="Royal Hotel":A$="Royal Hotel, East Terrace"
3030 :
3040
3050 RESTORE +0
3060 READ street$
3070 REPEAT
3080 READ yard$
3090 REPEAT
3100 A$=FNadd(A$,yard$,street$)
3110 READ yard$
3120 UNTIL yard$="*"
3130 READ street$
3140 UNTIL street$="*"
3150 DATA "Tate Hill","Sandside",*
3160 DATA "Grape Lane","Tin",*
3170 DATA "Brewster Lane","Brewster's Cottages",*
3180 DATA "Church Lane","East Abbey Terrace",*
3190 DATA "Low Well Yard","Denmark Place",*
3200 DATA "High Well Yard","Ainsley's Court",*
3210 DATA "The Ropery","Boulby Bank Top",*
3220 DATA "East Cliff","Coastguard",*
3230 DATA "Laverick Steps","Pear Tree House",*
3240 DATA "Salt Pan Well Yard","White Cottages",*
3250 DATA "Hawsker Lane","Stoupe",*
3260 DATA "Spital Bridge","Olive",*
3270 DATA "Brunswick Street","Morrison's",*
3280 DATA "Khyber Pass","Streonshalh",*
3290 DATA "McLachlin's Yard, Cliff Street","Bolton's Buildings",*
3300
3310
3320
3330
3340 :
3350 DATA "Church Street"
3360 DATA "Blackburn's","Wilson's","Woodwark's","Kiln","Borough","New Way","Benson's"
3370 DATA "Horse","Forester's","Clark's","Green's","Tate's","Stanley Place"
3380 DATA "Blacksmith's Arms","Well Yard","Turner's","Morley's","Bank's","Hamilton's"
3390 DATA "Smales'","Bolton's Yard","Primitive","Frank's","Brown's","Elbow","Taylerson's"
3400 DATA "Brewster","Craven's","School Yard","Hospital Y","Marsden's","Stanley Yard"
3410 DATA "Flintoft's","Cockpit","Ellerby","Nettleship","Corner's","Boauson's"
3420 DATA "Sayer's","Steps","Prospect Place","Hall's Yard","Ivy Yard","Brewery Yard"
3430 DATA "Studley","Horner's","Gaskin's","Blacksmith Arms","Hospital Yard","Mast Yard"
3440 DATA *
3450 DATA "Flowergate"
3460 DATA "Hall's Place","Rose & Crown","Haydock's","Waterloo","Staffordshire"
3470
3480
3490 DATA *
3500 DATA "Baxtergate"
3510 DATA "Elm","Ripley's","Breckon's","Leng's","Vipond's","Ward's","Tyreman's"
3520 DATA "Loggerhead","Linskill","Beck"
3530 DATA *
3540 DATA "Haggersgate"
3550 DATA "Paradise","Whitby Arms","Bakehouse","Elephant"
3560
3570 DATA *
3580 DATA "The Cragg"
3590 DATA "Mission Hall","Clevedon","Barry's","Carter's","Cliff Steps"
3600 DATA *
3610 DATA "Cliff Street"
3620 DATA "Andrew's","The Mount","Bolton's Buildings"
3630 DATA *
3640
3650
3660
3670
3680
3690
3700
3710
3720
3730
3740
3750
3760
3770
3780
3790 DATA "Green Lane"
3800 DATA "New Gardens","Folly Gardens"
3810 DATA *
3820 DATA "Spital Bridge"
3830 DATA "Whitehall","Raft"
3840 DATA *,*
3850 :
3860
3870 READ check$
3880 REPEAT
3890 READ yard$,street$
3900 IF INSTR(A$,check$)=0:A$=FNadd(A$,yard$,street$)
3910 READ check$
3920 UNTIL check$="*"
3930
3940 DATA The Ropery,Boulby Bank,Church Street
3950 DATA Sandgate,Johnson's,Baxtergate
3960 DATA Cragg,Argument's,Church Street
3970 DATA Church Street,Argument's,The Cragg
3980 DATA Cliff Street,Miller's,Haggersgate
3990 DATA Haggersgate,Miller's,Cliff Street
4000 DATA Cliff Street,Muncaster's,Haggersgate
4010 DATA Haggersgate,Muncaster's,Cliff Street
4020
4030
4040
4050
4060
4070
4080
4090
4100
4110
4120
4130 DATA *
4140
4150 :
4160 info$(7)=A$
4170 :
4180
4190 IF verbose% THEN
4200 FOR A%=0 TO max%
4210 A$=LEFT$(info$(A%),56):PRINTTAB(36,A%+2);A$;:IF len%(A%)>LENA$:PRINTSPC(len%(A%)-LENA$);
4220 len%(A%)=LENA$
4230 NEXT A%
4240 ENDIF
4250 PROCcsv_wr(out%,info$())
4260 ENDPROC
4270 :
4280 DEFFNadd(addr$,yard$,street$)
4290 IF INSTR(addr$,yard$+" "):IF INSTR(addr$,street$)=0:=addr$+", "+street$
4300 IF RIGHT$(addr$,LENyard$)=yard$:IF INSTR(addr$,street$)=0:=addr$+", "+street$
4310 =addr$
4320 :
4330 DEFFNswap(in$,match$,swap$)
4340 A%=INSTR(in$,match$):IF A%:in$=LEFT$(in$,A%-1)+swap$+MID$(in$,A%+LENmatch$)
4350 =in$
4360 :
4370 DEFFNswapchk(in$,match$,swap$)
4380 A%=INSTR(in$,match$):IF A%:IF INSTR(in$,swap$)=0:in$=LEFT$(in$,A%-1)+swap$+MID$(in$,A%+LENmatch$)
4390 =in$
4400 :
4410 DEFFNnoquote(A$):IFASCA$<>34:=A$
4420 =MID$(A$,2,INSTR(A$,"""",2)-2)
4430 :
4440 DEFFNnohtml(A$):REPEAT:A%=INSTR(A$,"<"):IF A%:A$=LEFT$(A$,A%-1)+MID$(A$,INSTR(A$,">")+1)
4450 UNTILA%=0:REPEAT:A%=INSTR(A$,"&",A%+1)
4460 IFMID$(A$,A%,6)=""":A$=LEFT$(A$,A%-1)+"'"+MID$(A$,A%+6)
4470 IFMID$(A$,A%,5)="'" :A$=LEFT$(A$,A%-1)+"'"+MID$(A$,A%+5)
4480 IFMID$(A$,A%,5)="""" :A$=LEFT$(A$,A%-1)+"'"+MID$(A$,A%+5)
4490 UNTILA%=0:=A$
4500 :
4510 DEFPROCClose_All
4520 out%=out%:IFout%:A%=out%:out%=0:CLOSE#A%
4530 in%=in%:IFin%:A%=in%:in%=0:CLOSE#A%
4540 ENDPROC
4550 :
4560 DEFPROCcsv_rd(i%,array$())
4570 LOCAL n%:n%=0:array$()="":A$=GET$#i%:IFA$="":A$=GET$#i%
4580 A$=A$+","
4590 REPEAT
4600 IF LEFT$(A$,2)="=""":A$=MID$(A$,2)
4610 IF LEFT$(A$,1)="""" THEN
4620 A%=INSTR(A$,""",",2)+1:array$(n%)=MID$(A$,2,A%-3)
4630 ELSE
4640 A%=INSTR(A$,","):array$(n%)=LEFT$(A$,A%-1)
4650 ENDIF
4660 A$=MID$(A$,A%+1):n%=n%+1
4670 UNTILA$=""
4680 ENDPROC
4690 :
4700 DEFPROCcsv_wr(o%,array$())
4710 LOCAL n%,q%:n%=DIM(array$(),1)
4720 FOR A%=0 TO n%:A$=array$(A%)
4730 q%=INSTR(A$,",")
4740 IF q%=0:q%=(ASCA$=48)AND(INSTR(A$,"/")=0) :
4750 IF q%=0:IFVALLEFT$(A$,1):q%=INSTR(A$,"E") :
4760 IF q%=0:q%=LENSTR$VALA$>8 :
4770 IF q%=0:IFVALA$:q%=INSTR(A$,"/")AND(ASCA$<>48):
4780 IF q%=0:q%=LEFT$(A$,1)="-" :
4790 IF q%=0:q%=MID$(A$,3,1)=" "ANDMID$(A$,7,1)=" ":
4800 IF q%:A$=""""+A$+"""":IFINSTR(A$,",")=0:A$="="+A$
4810 BPUT#o%,A$;:IF A%<>n%:BPUT#o%,",";
4820 NEXT A%:BPUT#o%,""
4830 ENDPROC
4840 :
4850 DEFFNrd(i%):A$=GET$#i%:IFA$="":A$=GET$#i%
4860 =A$
4870 :
4880 DEFFNd0(A%,N%)=RIGHT$("00000000"+STR$A%,N%)
4890 DEFFNuc(A$):IFA$="":=""
4900 FOR A%=1 TO LEN A$:IFMID$(A$,A%,1)>"_":A$=LEFT$(A$,A%-1)+CHR$(ASCMID$(A$,A%,1)AND&DF)+MID$(A$,A%+1)
4910 NEXT:=A$
4920 DEFFNs(A$):IFLEFT$(A$,1)=" ":REPEATA$=MID$(A$,2):UNTILLEFT$(A$,1)<>" "
4930 IFRIGHT$(A$,1)=" ":REPEATA$=LEFT$(A$,LENA$-1):UNTILRIGHT$(A$,1)<>" "
4940 =A$