procedure main() str := "one^|uno||three^^^^|four^^^|^cuatro|" every write("\"",!tokenize(str,"|","^"),"\"") end procedure tokenize(str,sep,esc) ret := [] token := "" cse := cset(sep||esc) str ? repeat{ token ||:= tab(i := (upto(cse) | 0)) if i = 0 then return put(ret,token) move(1) if str[i] == sep then{ put(ret,token) token := "" }else token ||:= move(1) } end