10 REM > BLib.CmdLine 1.11 27Jul2009
   20 REM v1.10 Parses "quoted" options
   30 REM v1.11 -opt "quoted" doesn't return trailing quote
   40 :
   50 REM Command Line Parsing
   60 REM ~~~~~~~~~~~~~~~~~~~~
   70 :
   80 REM FNcl() - parse command line for switches, options and parameters
   90 REM ----------------------------------------------------------------
  100 REM FNcl("",0) - return next parameter
  110 REM FNcl(switch$,0) - return TRUE/FALSE if switch$ present
  120 REM FNcl(option$,1) - return option string if present or ""
  130 :
  140 DEFFNcl(l$,n%):IFl$="":A$=FNs(A$):IFASCA$=34:A%=INSTR(A$+" "" ",""" ",2):l$=MID$(A$,2,A%-2):A$=FNs(MID$(A$,A%+1)):=l$
  150 IFl$="":A%=INSTR(A$+" "," "):l$=LEFT$(A$,A%-1):A$=FNs(MID$(A$,A%+1)):=l$
  160 IFn%=0:IFl$<>"":A%=INSTR(A$,l$):IFA%:A$=FNs(LEFT$(A$,A%-1)+MID$(A$,INSTR(A$," ",A%)+1))+" ":=TRUE
  170 IFn%=0:IFl$<>"":=FALSE
  180 A%=INSTR(LEFT$(" ",ASCl$=32)+A$,l$):IFA%=0:=""
  190 A$=LEFT$(A$,A%-1)+FNs(MID$(A$,INSTR(A$," ",A%)+1))
  200 IFASCl$=32:l$=MID$(A$,A%):A$=LEFT$(A$,A%-1):=MID$(l$,1-(ASCl$=34),LENl$+2*(ASCl$=34))
  210 IFASCMID$(A$,A%,1)<>34:l$=MID$(A$,A%,INSTR(A$+" "," ",A%)-A%):A$=LEFT$(A$,A%-1)+MID$(A$,A%+LENl$+1):=l$
  220 l$=MID$(A$,A%+1,INSTR(A$+" ",""" ",A%+1)-A%-1):A$=LEFT$(A$,A%-1)+MID$(A$,A%+LENl$+3):=l$
  230 DEFFNs(A$):IFLEFT$(A$,1)=" ":REPEATA$=MID$(A$,2):UNTILLEFT$(A$,1)<>" "
  240 IFRIGHT$(A$,1)=" ":REPEATA$=LEFT$(A$,LENA$-1):UNTILRIGHT$(A$,1)<>" "
  250 =A$
  260 DEFFNuc(A$):LOCAL B$:IFA$="":=""
  270 REPEATB$=B$+CHR$(ASCA$AND((A$<"@")OR&DF)):A$=MID$(A$,2):UNTILA$="":=B$
  280 :
  290 DEFFNinstrR(A$,B$):A%=LENA$+1:REPEATA%=A%-1:UNTILMID$(A$,A%,LENB$)=B$ORA%=0:=A%
  300 :