Daft of me to use a decreasing loop. It will consume most of the computing time to loop to $hfind(,N) - especially for a high N value. Too late now... but pro forma, it should better be:
Code:
alias delhashtokens {
  var %t = TABLENAME, %ex = $+(/,(?<=^|\s)\Q,$replacexcs($$1,*,\E\S*\Q,?,\E\S\Q,\E,\E\\E\Q),\E(?=\s|$),/)
  while ($hfind(%t,%ex,1,r).data != $null) {
    var %i = $v1, %d = $hget(%t,$v1)
    while ($wildtokcs(%d,$1,1,32)) { var %d = $deltok(%d,$findtokcs(%d,$v1,1,32),32) }
    $iif((%d == $null),hdel,hadd) %t %i %d
  }
}