:
:
ON ERROR PRINT:REPORT:WAIT 100:QUIT
DIM X% 255:SYS "GetCurrentDirectory",255,X%:csd$=$$X%
outpath$=FNfn_path(csd$)
outfile$=FNfn_leaf(csd$)
outyear$=FNfn_leaf(LEFT$(outpath$,LENoutpath$-1))
outpre$ =outpath$+outfile$+outyear$+"-"
DIM look$(9)
:
PROCdo("postal")
PROCdo("nonpostal")
WAIT 100
QUIT
:
DEFPROCdo(sfx$)
van$=""
look%=0
full%=FALSE
out%=OPENOUT(outpre$+sfx$+".csv")
in%=OPENIN("header.txt")
IF in% THEN
head$=GET$#in%:IF NOT EOF#in%:A$=GET$#in%:look%=OPENIN(A$):IF NOT EOF#in%:full%=(GET$#in%="FULL")
CLOSE#in%:in%=0
ENDIF
IF look%:BPUT#out%,"VANID,";
BPUT#out%,"PD,NUM,";
IF look%:BPUT#out%,"VOTED?,";
BPUT#out%,"voted-"+sfx$+" - "+head$
FOR char1%=ASC"A" TO ASC"Z"+9:char1$=CHR$char1%:IF char1$>"Z":char1$=STR$(char1%-ASC"Z")
FOR char2%=ASC"A" TO ASC"Z":char2$=CHR$char2%:IF char2$>"Z":char2$=STR$(char2%-ASC"Z")
pd$=char1$+char2$
in%=OPENIN(pd$+"-"+sfx$+".csv")
IF in%=0:in%=OPENIN(pd$+"-"+sfx$+".txt")
IF in%=0:IF sfx$="nonpostal":in%=OPENIN(pd$+".csv")
IF in%=0:IF sfx$="nonpostal":in%=OPENIN(pd$+".txt")
IF in% THEN
PRINTpd$;
REPEAT
num$=GET$#in%
IF MID$(num$,3,1)=" ":num$=""
IF num$<>"" THEN
A%=INSTR(num$,":"):IF A%:num$=MID$(num$,A%+1)
IF look%:van$=FNlookup(pd$,num$):BPUT#out%,van$+",";
BPUT#out%,pd$+","+num$;
IF look%:BPUT#out%,",Y";
IF full%:IF van$<>"":BPUT#out%,","+look$(3)+","+look$(4)+","+look$(5);
BPUT#out%,""
ENDIF
UNTILEOF#in%:CLOSE#in%
PRINT
ENDIF
NEXT char2%
NEXT char1%
CLOSE#out%
ENDPROC
:
DEFFNlookup(pd$,num$)
:
PROCfindPD:
oldptr%=PTR#look%
REPEAT
PROCcsv_rd(look%,look$())
IF pd$<>look$(1):PTR#look%=0:PROCfindPD:
match%=(pd$=look$(1) AND num$=look$(2))
UNTIL match% OR PTR#look%=oldptr%
IF match%:=look$(0)
=""
:
DEFPROCfindPD
rescan%=FALSE
ptr%=PTR#look%:PROCcsv_rd(look%,look$())
IF pd$<>look$(1) THEN
REPEAT
IF EOF#look%:PTR#look%=0:rescan%=TRUE
ptr%=PTR#look%:PROCcsv_rd(look%,look$())
UNTIL pd$=look$(1) OR (EOF#look% AND rescan%)
ENDIF
PTR#look%=ptr%
ENDPROC
:
DEFPROCcsv_rd(i%,array$())
LOCAL n%:n%=0:array$()="":A$=GET$#i%:IFA$="":A$=GET$#i%
A$=A$+","
REPEAT
IF LEFT$(A$,2)="=""":A$=MID$(A$,2)
IF LEFT$(A$,1)="""" THEN
A%=INSTR(A$,""",",2)+1:array$(n%)=MID$(A$,2,A%-3)
ELSE
A%=INSTR(A$,","):array$(n%)=LEFT$(A$,A%-1)
ENDIF
A$=MID$(A$,A%+1):n%=n%+1
UNTILA$=""
ENDPROC
:
DEFFNfn_leaf(A$)
LOCAL A%:REPEAT:A%=INSTR(A$,"\"):IFA%:A$=MID$(A$,A%+1)
UNTILA%=0:=A$
DEFFNfn_path(A$):IFINSTR(A$,"\")=0:=A$
LOCAL A%:REPEATB%=A%:A%=INSTR(A$,"\",A%+1):UNTILA%=0:=LEFT$(A$,B%)