%%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_mi2' '1_
acre' '1_yd2' '1_
ft2' '1_in2'  $
'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
