%%HP: T(3)A(R)F(.);
DIR
\->USUM
\<< USEARCH UCONV
\>>
UNIT.L $ $ '1_mi'
'1_chain' '1_rd' '1
_yd' '1_ft' '1_in'
$ '1_mi2' '1_
acre' '1_yd2' '1_
ft2' '1_in2' $
'1_bbl' '1_bu' '1_
pk' '1_galUK' '1_qt
' '1_pt' '1_cu' '1_
tbsp' '1_tsp' $ '
1_yr' '1_d' '1_h' '
1_min' '1_s' $ '1
_tonUK' '1_lb' '1_
oz'
UA
\<< DUP SIZE 1 -
2 SWAP SUB + "+" +
\>>
UCONV
\<< DUP SIZE \-> u
ul sz
\<< "" 1 sz 1 -
FOR n u ul
n GET CONVERT
IF DUP
UVAL IP 0 \=/
THEN OBJ\->
OVER FP OVER \->UNIT
'u' STO SWAP IP
SWAP \->UNIT \->STR UA
ELSE DROP
END
NEXT u ul
sz GET CONVERT DUP
UVAL
IF 0 \=/
THEN \->STR
UA
ELSE DROP
END DUP
SIZE 1 - 1 SWAP SUB
"'" + "'" SWAP +
OBJ\->
\>>
\>>
USEARCH
\<< 0 \-> n
\<<
DO 'n' INCR
IF UNIT.L
SIZE >
THEN
"Unit not found"
DOERR
END
UNIT.L n GET OVER
OBJ\-> SWAP DROP POS
UNTIL 0 >
END UNIT.L
n GET
\>>
\>>
END