10 REM > BLib.Phone 1.13 15-Mar-2014
   20 :
   30 REM Display and store UK telephone numbers
   40 REM ======================================
   50 :
   60 REM FNPhone_ToStr - convert five-byte telephone number into fixed-length string
   70 REM ---------------------------------------------------------------------------
   80 DEFFNPhone_ToStr(A):LOCAL@%,A$,A%,B%:@%=&1000A0A:A%=A:DIMB%-1:IFPAGE>&FFFFF:DIMB%LOCAL7
   90 IFA%=A:A$=RIGHT$("000000000"+STR$A,10):="0"+STR$(2-VALLEFT$(A$,1))+MID$(A$,2)
  100 |B%=A:="0"+STR$~(B%?4)+RIGHT$("0000000"+STR$~!B%,8)
  110 :
  120 REM FNPhone_FromStr - convert string into five-byte telephone number
  130 REM ----------------------------------------------------------------
  140 DEFFNPhone_FromStr(A$):LOCALA%,B%:A%=1:DIMB%-1:IFPAGE>&FFFFF:DIMB%LOCAL7
  150 REPEAT:IFMID$(A$,A%,1)<"0"ORMID$(A$,A%,1)>"9":A$=LEFT$(A$,A%-1)+MID$(A$,A%+1):A%=A%-1
  160 A%=A%+1:UNTILA%>LENA$:A$=RIGHT$("000000000"+A$,10)
  170 IFA$<"3":=VAL(STR$(2-VALLEFT$(A$,1))+MID$(A$,2))
  180 !B%=EVAL("&"+MID$(A$,3)):B%?4=EVAL("&"+LEFT$(A$,2)):=|B%
  190 :
  200 REM FNPhone_ToStrF - convert five-byte telephone number into formatted fixed string
  210 REM -------------------------------------------------------------------------------
  220 DEFFNPhone_ToStrF(A):LOCALA$,B%,C%:A$=FNPhone_ToStr(A)
  230 B%=MID$(A$,3,1)="1"ORMID$(A$,4,1)="1"ORMID$(A$,2)>"2":C%=MID$(A$,2,1)="2"
  240 =LEFT$(A$,5+(B%ANDNOTC%)+2*C%)+" "+MID$(A$,6+(B%ANDNOTC%)+2*C%,3-C%)+LEFT$("-",B%ORC%)+MID$(A$,9+(B%ANDNOTC%)+C%)