procedure uscore(s) static labels, trans, max initial { labels := "1" trans := "_\b1" max := *labels trans := uscore(string(&cset -- '\b_')) labels := string(&cset -- '\b_') max := *labels } if *s <= max then return map(left(trans,3 * *s),left(labels,*s),s) else return uscore(left(s,*s - max)) || map(trans,labels,right(s,max)) end