10 REM > PhoneFind
   20 REM Find ward code from telephone number
   30 :
   40 REM Updated for 4-byte entries
   50 :
   60 size%=4
   70 INPUT"Phone number: "ph$
   80 :
   90 IF LEFT$(ph$,2)<>"01":ph$="0114"+ph$
  100 phone%=FNPhoneFromStr(ph$)
  110 base%=01142000000
  120 ptr%=(phone%-base%)*size%
  130 in%=OPENIN("PHONE.IDX")
  140 WardCode$="":PDCode$="":id%=0
  150 IF ptr%+3<EXT#in%:PTR#in%=ptr%
  160 WardCode$=CHR$ BGET#in%
  170 PDCode$  =CHR$BGET#in%
  180 id%      =BGET#in%+256*BGET#in%
  190 CLOSE#in%:in%=0
  200 IF WardCode$="" OR WardCode$<" ":PRINT"Unknown" ELSE PRINT FNPhoneToStrF(phone%);" is the phone number for elector ";WardCode$;PDCode$;":";id%;" and maybe others."
  210 END
  220 :
  230 REM > BLib.Phone 1.00 20-Apr-2000
  240 :
  250 REM Display and store UK telephone numbers
  260 REM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  270 :
  280 DEF FNPhoneToStr(A%):LOCAL@%,A$:@%=&1000A0A:A$=RIGHT$("000000000"+STR$ A%,10)
  290 ="0"+STR$(2-VAL LEFT$(A$,1))+MID$(A$,2)
  300 DEF FNPhoneFromStr(A$):A$=RIGHT$("000000000"+A$,10)
  310 =VAL(STR$(2-VAL LEFT$(A$,1))+MID$(A$,2))
  320 DEF FNPhoneToStrF(A%):LOCAL A$,B%,C%:A$=FNPhoneToStr(A%)
  330 B%=MID$(A$,3,1)="1" OR MID$(A$,4,1)="1":C%=MID$(A$,2,1)="2"
  340 =LEFT$(A$,5+(B%ANDNOTC%)+2*C%)+" "+MID$(A$,6+(B%ANDNOTC%)+2*C%,3-C%)+" "+MID$(A$,9+(B%ANDNOTC%)+C%)